From 5c952421110adf0b04694ce3acefe6410c467155 Mon Sep 17 00:00:00 2001 From: cytopia Date: Fri, 28 Dec 2018 22:38:09 +0100 Subject: [PATCH 01/24] Add vendor: phpPgAdmin --- .devilbox/www/htdocs/credits.php | 19 +- .../htdocs/vendor/phppgadmin-5.6.0/CREDITS | 108 + .../htdocs/vendor/phppgadmin-5.6.0/DEVELOPERS | 155 + .../www/htdocs/vendor/phppgadmin-5.6.0/FAQ | 217 + .../htdocs/vendor/phppgadmin-5.6.0/HISTORY | 818 ++ .../htdocs/vendor/phppgadmin-5.6.0/INSTALL | 73 + .../htdocs/vendor/phppgadmin-5.6.0/LICENSE | 12 + .../www/htdocs/vendor/phppgadmin-5.6.0/TODO | 242 + .../vendor/phppgadmin-5.6.0/TRANSLATORS | 55 + .../htdocs/vendor/phppgadmin-5.6.0/admin.php | 753 ++ .../vendor/phppgadmin-5.6.0/aggregates.php | 462 + .../phppgadmin-5.6.0/ajax-ac-insert.php | 92 + .../htdocs/vendor/phppgadmin-5.6.0/all_db.php | 532 ++ .../vendor/phppgadmin-5.6.0/browser.php | 84 + .../htdocs/vendor/phppgadmin-5.6.0/casts.php | 103 + .../classes/ArrayRecordSet.php | 32 + .../vendor/phppgadmin-5.6.0/classes/Gui.php | 48 + .../vendor/phppgadmin-5.6.0/classes/Misc.php | 2655 ++++++ .../phppgadmin-5.6.0/classes/Plugin.php | 68 + .../classes/PluginManager.php | 137 + .../phppgadmin-5.6.0/classes/class.select.php | 217 + .../classes/database/ADODB_base.php | 359 + .../classes/database/Connection.php | 121 + .../classes/database/Postgres.php | 8013 +++++++++++++++++ .../classes/database/Postgres10.php | 30 + .../classes/database/Postgres11.php | 30 + .../classes/database/Postgres74.php | 635 ++ .../classes/database/Postgres80.php | 354 + .../classes/database/Postgres81.php | 296 + .../classes/database/Postgres82.php | 359 + .../classes/database/Postgres83.php | 363 + .../classes/database/Postgres84.php | 231 + .../classes/database/Postgres90.php | 33 + .../classes/database/Postgres91.php | 98 + .../classes/database/Postgres92.php | 30 + .../classes/database/Postgres93.php | 30 + .../classes/database/Postgres94.php | 30 + .../classes/database/Postgres95.php | 55 + .../classes/database/Postgres96.php | 57 + .../vendor/phppgadmin-5.6.0/colproperties.php | 346 + .../vendor/phppgadmin-5.6.0/composer.json | 13 + .../vendor/phppgadmin-5.6.0/conf/.gitignore | 1 + .../phppgadmin-5.6.0/conf/config.inc.php-dist | 172 + .../vendor/phppgadmin-5.6.0/constraints.php | 640 ++ .../vendor/phppgadmin-5.6.0/conversions.php | 88 + .../vendor/phppgadmin-5.6.0/database.php | 698 ++ .../vendor/phppgadmin-5.6.0/dataexport.php | 345 + .../vendor/phppgadmin-5.6.0/dataimport.php | 298 + .../vendor/phppgadmin-5.6.0/dbexport.php | 139 + .../vendor/phppgadmin-5.6.0/display.php | 879 ++ .../vendor/phppgadmin-5.6.0/domains.php | 587 ++ .../vendor/phppgadmin-5.6.0/fulltext.php | 1120 +++ .../vendor/phppgadmin-5.6.0/functions.js | 204 + .../vendor/phppgadmin-5.6.0/functions.php | 1038 +++ .../htdocs/vendor/phppgadmin-5.6.0/groups.php | 330 + .../htdocs/vendor/phppgadmin-5.6.0/help.php | 88 + .../phppgadmin-5.6.0/help/PostgresDoc10.php | 13 + .../phppgadmin-5.6.0/help/PostgresDoc11.php | 13 + .../phppgadmin-5.6.0/help/PostgresDoc12.php | 13 + .../phppgadmin-5.6.0/help/PostgresDoc74.php | 160 + .../phppgadmin-5.6.0/help/PostgresDoc80.php | 28 + .../phppgadmin-5.6.0/help/PostgresDoc81.php | 18 + .../phppgadmin-5.6.0/help/PostgresDoc82.php | 13 + .../phppgadmin-5.6.0/help/PostgresDoc83.php | 27 + .../phppgadmin-5.6.0/help/PostgresDoc84.php | 13 + .../phppgadmin-5.6.0/help/PostgresDoc90.php | 13 + .../phppgadmin-5.6.0/help/PostgresDoc91.php | 13 + .../phppgadmin-5.6.0/help/PostgresDoc92.php | 13 + .../phppgadmin-5.6.0/help/PostgresDoc93.php | 13 + .../phppgadmin-5.6.0/help/PostgresDoc94.php | 13 + .../phppgadmin-5.6.0/help/PostgresDoc95.php | 13 + .../phppgadmin-5.6.0/help/PostgresDoc96.php | 13 + .../vendor/phppgadmin-5.6.0/history.php | 226 + .../images/themes/bootstrap/Favicon.ico | Bin 0 -> 1406 bytes .../images/themes/bootstrap/Introduction.png | Bin 0 -> 516 bytes .../images/themes/bootstrap/title.png | Bin 0 -> 5388 bytes .../images/themes/cappuccino/Lminus.png | Bin 0 -> 191 bytes .../images/themes/cappuccino/Lplus.png | Bin 0 -> 202 bytes .../images/themes/cappuccino/Tminus.png | Bin 0 -> 192 bytes .../images/themes/cappuccino/Tplus.png | Bin 0 -> 204 bytes .../images/themes/cappuccino/inputbckg.png | Bin 0 -> 129 bytes .../images/themes/cappuccino/openListe.png | Bin 0 -> 252 bytes .../images/themes/cappuccino/title.png | Bin 0 -> 3815 bytes .../images/themes/default/AddArguments.png | Bin 0 -> 141 bytes .../images/themes/default/Admin.png | Bin 0 -> 535 bytes .../images/themes/default/Aggregate.png | Bin 0 -> 247 bytes .../images/themes/default/Aggregates.png | Bin 0 -> 254 bytes .../images/themes/default/AllUsers.png | Bin 0 -> 384 bytes .../default/AvailableReplicationSet.png | Bin 0 -> 404 bytes .../themes/default/AvailableSubscription.png | Bin 0 -> 374 bytes .../images/themes/default/Backup.png | Bin 0 -> 611 bytes .../images/themes/default/Cast.png | Bin 0 -> 298 bytes .../images/themes/default/Casts.png | Bin 0 -> 284 bytes .../images/themes/default/CheckConstraint.png | Bin 0 -> 295 bytes .../images/themes/default/Cluster.png | Bin 0 -> 456 bytes .../images/themes/default/Column.png | Bin 0 -> 296 bytes .../images/themes/default/Columns.png | Bin 0 -> 282 bytes .../images/themes/default/Constraints.png | Bin 0 -> 187 bytes .../images/themes/default/Conversion.png | Bin 0 -> 234 bytes .../images/themes/default/Conversions.png | Bin 0 -> 237 bytes .../images/themes/default/Copy.png | Bin 0 -> 347 bytes .../themes/default/CorruptedDatabase.png | Bin 0 -> 701 bytes .../images/themes/default/Cut.png | Bin 0 -> 415 bytes .../images/themes/default/Database.png | Bin 0 -> 527 bytes .../images/themes/default/Databases.png | Bin 0 -> 613 bytes .../images/themes/default/Definition.png | Bin 0 -> 310 bytes .../images/themes/default/Delete.png | Bin 0 -> 590 bytes .../images/themes/default/DisabledJob.png | Bin 0 -> 467 bytes .../themes/default/DisconnectedDatabase.png | Bin 0 -> 663 bytes .../themes/default/DisconnectedServer.png | Bin 0 -> 506 bytes .../images/themes/default/Domain.png | Bin 0 -> 320 bytes .../images/themes/default/Domains.png | Bin 0 -> 389 bytes .../images/themes/default/EnableArgument.png | Bin 0 -> 690 bytes .../images/themes/default/Erase.png | Bin 0 -> 451 bytes .../images/themes/default/Execute.png | Bin 0 -> 276 bytes .../images/themes/default/ExecuteSave.png | Bin 0 -> 472 bytes .../images/themes/default/Explain.png | Bin 0 -> 341 bytes .../images/themes/default/Export.png | Bin 0 -> 401 bytes .../images/themes/default/Favicon.ico | Bin 0 -> 1406 bytes .../images/themes/default/Filter.png | Bin 0 -> 381 bytes .../images/themes/default/ForeignKey.png | Bin 0 -> 250 bytes .../images/themes/default/Fts.png | Bin 0 -> 675 bytes .../images/themes/default/FtsCfg.png | Bin 0 -> 612 bytes .../images/themes/default/FtsDict.png | Bin 0 -> 597 bytes .../images/themes/default/FtsParser.png | Bin 0 -> 601 bytes .../images/themes/default/Function.png | Bin 0 -> 202 bytes .../images/themes/default/Functions.png | Bin 0 -> 226 bytes .../images/themes/default/GurusHint.png | Bin 0 -> 609 bytes .../images/themes/default/Help.png | Bin 0 -> 480 bytes .../images/themes/default/Histories.png | Bin 0 -> 398 bytes .../images/themes/default/History.png | Bin 0 -> 529 bytes .../images/themes/default/I.png | Bin 0 -> 89 bytes .../images/themes/default/Import.png | Bin 0 -> 482 bytes .../images/themes/default/Index.png | Bin 0 -> 344 bytes .../images/themes/default/Indexes.png | Bin 0 -> 349 bytes .../images/themes/default/Introduction.png | Bin 0 -> 516 bytes .../images/themes/default/Job.png | Bin 0 -> 551 bytes .../images/themes/default/Jobs.png | Bin 0 -> 396 bytes .../images/themes/default/Key.png | Bin 0 -> 323 bytes .../images/themes/default/L.png | Bin 0 -> 90 bytes .../images/themes/default/Language.png | Bin 0 -> 352 bytes .../images/themes/default/Languages.png | Bin 0 -> 380 bytes .../images/themes/default/Listen.png | Bin 0 -> 244 bytes .../images/themes/default/Listens.png | Bin 0 -> 275 bytes .../images/themes/default/Lminus.png | Bin 0 -> 114 bytes .../images/themes/default/Loading.gif | Bin 0 -> 2090 bytes .../images/themes/default/LowerArgument.png | Bin 0 -> 172 bytes .../images/themes/default/Lplus.png | Bin 0 -> 127 bytes .../images/themes/default/Node.png | Bin 0 -> 484 bytes .../images/themes/default/Nodes.png | Bin 0 -> 381 bytes .../images/themes/default/ObjectNotFound.png | Bin 0 -> 508 bytes .../themes/default/OfferedReplicationSet.png | Bin 0 -> 492 bytes .../themes/default/OfferedSubscription.png | Bin 0 -> 495 bytes .../images/themes/default/Open.png | Bin 0 -> 518 bytes .../images/themes/default/Operator.png | Bin 0 -> 192 bytes .../images/themes/default/OperatorClass.png | Bin 0 -> 479 bytes .../images/themes/default/OperatorClasses.png | Bin 0 -> 373 bytes .../images/themes/default/Operators.png | Bin 0 -> 201 bytes .../images/themes/default/Paste.png | Bin 0 -> 500 bytes .../images/themes/default/Path.png | Bin 0 -> 413 bytes .../images/themes/default/Paths.png | Bin 0 -> 424 bytes .../images/themes/default/PrimaryKey.png | Bin 0 -> 313 bytes .../images/themes/default/Privileges.png | Bin 0 -> 431 bytes .../images/themes/default/Processes.png | Bin 0 -> 499 bytes .../images/themes/default/Property.png | Bin 0 -> 357 bytes .../images/themes/default/RaiseArgument.png | Bin 0 -> 176 bytes .../images/themes/default/Record.png | Bin 0 -> 287 bytes .../images/themes/default/Records.png | Bin 0 -> 294 bytes .../images/themes/default/Redo.png | Bin 0 -> 489 bytes .../images/themes/default/Refresh.png | Bin 0 -> 652 bytes .../images/themes/default/RemoveArgument.png | Bin 0 -> 736 bytes .../images/themes/default/Replication.png | Bin 0 -> 543 bytes .../images/themes/default/ReplicationSets.png | Bin 0 -> 320 bytes .../images/themes/default/Restore.png | Bin 0 -> 709 bytes .../images/themes/default/Roles.png | Bin 0 -> 465 bytes .../images/themes/default/Rule.png | Bin 0 -> 217 bytes .../images/themes/default/Rules.png | Bin 0 -> 223 bytes .../images/themes/default/Save.png | Bin 0 -> 432 bytes .../images/themes/default/Schedule.png | Bin 0 -> 543 bytes .../images/themes/default/Schedules.png | Bin 0 -> 511 bytes .../images/themes/default/Schema.png | Bin 0 -> 227 bytes .../images/themes/default/Schemas.png | Bin 0 -> 237 bytes .../images/themes/default/Search.png | Bin 0 -> 488 bytes .../images/themes/default/Sequence.png | Bin 0 -> 280 bytes .../images/themes/default/Sequences.png | Bin 0 -> 241 bytes .../images/themes/default/Server.png | Bin 0 -> 404 bytes .../images/themes/default/Servers.png | Bin 0 -> 360 bytes .../images/themes/default/SqlEditor.png | Bin 0 -> 588 bytes .../images/themes/default/Statistics.png | Bin 0 -> 629 bytes .../images/themes/default/Step.png | Bin 0 -> 306 bytes .../images/themes/default/Steps.png | Bin 0 -> 374 bytes .../images/themes/default/Stop.png | Bin 0 -> 282 bytes .../images/themes/default/Subscriptions.png | Bin 0 -> 277 bytes .../images/themes/default/T.png | Bin 0 -> 92 bytes .../images/themes/default/Table.png | Bin 0 -> 394 bytes .../images/themes/default/Tables.png | Bin 0 -> 415 bytes .../images/themes/default/Tablespace.png | Bin 0 -> 253 bytes .../images/themes/default/Tablespaces.png | Bin 0 -> 192 bytes .../images/themes/default/Tminus.png | Bin 0 -> 115 bytes .../images/themes/default/Tplus.png | Bin 0 -> 127 bytes .../images/themes/default/Trigger.png | Bin 0 -> 190 bytes .../images/themes/default/TriggerFunction.png | Bin 0 -> 215 bytes .../themes/default/TriggerFunctions.png | Bin 0 -> 242 bytes .../images/themes/default/Triggers.png | Bin 0 -> 229 bytes .../images/themes/default/Type.png | Bin 0 -> 160 bytes .../images/themes/default/Types.png | Bin 0 -> 205 bytes .../images/themes/default/Undo.png | Bin 0 -> 470 bytes .../themes/default/UniqueConstraint.png | Bin 0 -> 291 bytes .../images/themes/default/User.png | Bin 0 -> 435 bytes .../images/themes/default/UserGroup.png | Bin 0 -> 639 bytes .../images/themes/default/UserGroups.png | Bin 0 -> 593 bytes .../images/themes/default/Users.png | Bin 0 -> 364 bytes .../images/themes/default/Variables.png | Bin 0 -> 380 bytes .../images/themes/default/View.png | Bin 0 -> 279 bytes .../images/themes/default/Views.png | Bin 0 -> 286 bytes .../images/themes/default/blank.png | Bin 0 -> 77 bytes .../images/themes/default/title.png | Bin 0 -> 3523 bytes .../htdocs/vendor/phppgadmin-5.6.0/index.php | 42 + .../htdocs/vendor/phppgadmin-5.6.0/indexes.js | 70 + .../vendor/phppgadmin-5.6.0/indexes.php | 422 + .../htdocs/vendor/phppgadmin-5.6.0/info.php | 339 + .../htdocs/vendor/phppgadmin-5.6.0/intro.php | 70 + .../phppgadmin-5.6.0/js/ac_insert_row.js | 229 + .../vendor/phppgadmin-5.6.0/js/database.js | 64 + .../vendor/phppgadmin-5.6.0/js/display.js | 90 + .../vendor/phppgadmin-5.6.0/lang/README | 14 + .../phppgadmin-5.6.0/lang/afrikaans.php | 621 ++ .../vendor/phppgadmin-5.6.0/lang/arabic.php | 581 ++ .../vendor/phppgadmin-5.6.0/lang/catalan.php | 897 ++ .../phppgadmin-5.6.0/lang/chinese-sim.php | 359 + .../phppgadmin-5.6.0/lang/chinese-tr.php | 583 ++ .../lang/chinese-utf8-zh_CN.php | 902 ++ .../lang/chinese-utf8-zh_TW.php | 863 ++ .../vendor/phppgadmin-5.6.0/lang/czech.php | 897 ++ .../vendor/phppgadmin-5.6.0/lang/danish.php | 617 ++ .../vendor/phppgadmin-5.6.0/lang/dutch.php | 467 + .../vendor/phppgadmin-5.6.0/lang/english.php | 905 ++ .../vendor/phppgadmin-5.6.0/lang/french.php | 899 ++ .../vendor/phppgadmin-5.6.0/lang/galician.php | 909 ++ .../vendor/phppgadmin-5.6.0/lang/german.php | 852 ++ .../vendor/phppgadmin-5.6.0/lang/greek.php | 744 ++ .../vendor/phppgadmin-5.6.0/lang/hebrew.php | 615 ++ .../phppgadmin-5.6.0/lang/hungarian.php | 901 ++ .../vendor/phppgadmin-5.6.0/lang/italian.php | 720 ++ .../vendor/phppgadmin-5.6.0/lang/japanese.php | 855 ++ .../vendor/phppgadmin-5.6.0/lang/langcheck | 71 + .../phppgadmin-5.6.0/lang/lithuanian.php | 898 ++ .../vendor/phppgadmin-5.6.0/lang/mongol.php | 527 ++ .../vendor/phppgadmin-5.6.0/lang/polish.php | 745 ++ .../phppgadmin-5.6.0/lang/portuguese-br.php | 898 ++ .../phppgadmin-5.6.0/lang/portuguese-pt.php | 608 ++ .../vendor/phppgadmin-5.6.0/lang/romanian.php | 758 ++ .../phppgadmin-5.6.0/lang/russian-utf8.php | 894 ++ .../vendor/phppgadmin-5.6.0/lang/russian.php | 586 ++ .../vendor/phppgadmin-5.6.0/lang/slovak.php | 648 ++ .../vendor/phppgadmin-5.6.0/lang/spanish.php | 905 ++ .../vendor/phppgadmin-5.6.0/lang/swedish.php | 565 ++ .../htdocs/vendor/phppgadmin-5.6.0/lang/synch | 71 + .../phppgadmin-5.6.0/lang/translations.php | 86 + .../vendor/phppgadmin-5.6.0/lang/turkish.php | 641 ++ .../phppgadmin-5.6.0/lang/ukrainian.php | 584 ++ .../vendor/phppgadmin-5.6.0/languages.php | 79 + .../libraries/adodb/adodb-csvlib.inc.php | 318 + .../libraries/adodb/adodb-datadict.inc.php | 1032 +++ .../libraries/adodb/adodb-error.inc.php | 258 + .../libraries/adodb/adodb-iterator.inc.php | 30 + .../libraries/adodb/adodb-lib.inc.php | 1197 +++ .../libraries/adodb/adodb-time.inc.php | 1432 +++ .../libraries/adodb/adodb.inc.php | 4416 +++++++++ .../adodb/drivers/adodb-postgres.inc.php | 14 + .../adodb/drivers/adodb-postgres64.inc.php | 1074 +++ .../adodb/drivers/adodb-postgres7.inc.php | 313 + .../adodb/drivers/adodb-postgres8.inc.php | 12 + .../libraries/adodb/lang/adodb-ar.inc.php | 33 + .../libraries/adodb/lang/adodb-bg.inc.php | 37 + .../libraries/adodb/lang/adodb-bgutf8.inc.php | 37 + .../libraries/adodb/lang/adodb-ca.inc.php | 34 + .../libraries/adodb/lang/adodb-cn.inc.php | 35 + .../libraries/adodb/lang/adodb-cz.inc.php | 40 + .../libraries/adodb/lang/adodb-da.inc.php | 33 + .../libraries/adodb/lang/adodb-de.inc.php | 33 + .../libraries/adodb/lang/adodb-en.inc.php | 33 + .../libraries/adodb/lang/adodb-es.inc.php | 33 + .../adodb/lang/adodb-esperanto.inc.php | 35 + .../libraries/adodb/lang/adodb-fa.inc.php | 35 + .../libraries/adodb/lang/adodb-fr.inc.php | 33 + .../libraries/adodb/lang/adodb-hu.inc.php | 34 + .../libraries/adodb/lang/adodb-it.inc.php | 34 + .../libraries/adodb/lang/adodb-nl.inc.php | 33 + .../libraries/adodb/lang/adodb-pl.inc.php | 35 + .../libraries/adodb/lang/adodb-pt-br.inc.php | 35 + .../libraries/adodb/lang/adodb-ro.inc.php | 35 + .../libraries/adodb/lang/adodb-ru1251.inc.php | 35 + .../libraries/adodb/lang/adodb-sv.inc.php | 33 + .../libraries/adodb/lang/adodb-uk1251.inc.php | 35 + .../libraries/adodb/lang/adodb_th.inc.php | 33 + .../libraries/adodb/license.txt | 182 + .../libraries/adodb/readme.txt | 62 + .../libraries/adodb/toexport.inc.php | 134 + .../libraries/adodb/tohtml.inc.php | 201 + .../libraries/decorator.inc.php | 215 + .../libraries/errorhandler.inc.php | 78 + .../phppgadmin-5.6.0/libraries/highlight.php | 1114 +++ .../phppgadmin-5.6.0/libraries/js/jquery.js | 2 + .../phppgadmin-5.6.0/libraries/lib.inc.php | 271 + .../htdocs/vendor/phppgadmin-5.6.0/links.js | 16 + .../htdocs/vendor/phppgadmin-5.6.0/login.php | 70 + .../htdocs/vendor/phppgadmin-5.6.0/logout.php | 18 + .../phppgadmin-5.6.0/multiactionform.js | 9 + .../vendor/phppgadmin-5.6.0/opclasses.php | 91 + .../vendor/phppgadmin-5.6.0/operators.php | 246 + .../htdocs/vendor/phppgadmin-5.6.0/plugin.php | 5 + .../plugins/GuiControl/conf/config.inc.php | 484 + .../plugins/GuiControl/plugin.php | 145 + .../phppgadmin-5.6.0/plugins/Report/INSTALL | 13 + .../phppgadmin-5.6.0/plugins/Report/README | 24 + .../plugins/Report/classes/Reports.php | 128 + .../plugins/Report/conf/config.inc.php | 12 + .../plugins/Report/images/Report.png | Bin 0 -> 405 bytes .../plugins/Report/images/Reports.png | Bin 0 -> 339 bytes .../plugins/Report/lang/afrikaans.php | 23 + .../plugins/Report/lang/arabic.php | 23 + .../plugins/Report/lang/catalan.php | 23 + .../plugins/Report/lang/chinese-sim.php | 22 + .../plugins/Report/lang/chinese-tr.php | 23 + .../Report/lang/chinese-utf8-zh_CN.php | 23 + .../Report/lang/chinese-utf8-zh_TW.php | 23 + .../plugins/Report/lang/czech.php | 23 + .../plugins/Report/lang/danish.php | 25 + .../plugins/Report/lang/dutch.php | 21 + .../plugins/Report/lang/english.php | 24 + .../plugins/Report/lang/french.php | 24 + .../plugins/Report/lang/galician.php | 23 + .../plugins/Report/lang/german.php | 23 + .../plugins/Report/lang/greek.php | 24 + .../plugins/Report/lang/hebrew.php | 23 + .../plugins/Report/lang/hungarian.php | 23 + .../plugins/Report/lang/italian.php | 23 + .../plugins/Report/lang/japanese.php | 23 + .../plugins/Report/lang/lithuanian.php | 23 + .../plugins/Report/lang/mongol.php | 22 + .../plugins/Report/lang/polish.php | 23 + .../plugins/Report/lang/portuguese-br.php | 23 + .../plugins/Report/lang/portuguese-pt.php | 23 + .../plugins/Report/lang/romanian.php | 23 + .../plugins/Report/lang/russian.php | 23 + .../plugins/Report/lang/slovak.php | 23 + .../plugins/Report/lang/spanish.php | 23 + .../plugins/Report/lang/swedish.php | 25 + .../plugins/Report/lang/turkish.php | 23 + .../plugins/Report/lang/ukrainian.php | 23 + .../plugins/Report/plugin.php | 807 ++ .../plugins/Report/sql/reports-pgsql.sql | 27 + .../vendor/phppgadmin-5.6.0/privileges.php | 354 + .../vendor/phppgadmin-5.6.0/redirect.php | 29 + .../htdocs/vendor/phppgadmin-5.6.0/robots.txt | 8 + .../htdocs/vendor/phppgadmin-5.6.0/roles.php | 743 ++ .../htdocs/vendor/phppgadmin-5.6.0/rules.php | 232 + .../vendor/phppgadmin-5.6.0/schemas.php | 480 + .../vendor/phppgadmin-5.6.0/sequences.php | 728 ++ .../vendor/phppgadmin-5.6.0/servers.php | 175 + .../htdocs/vendor/phppgadmin-5.6.0/sql.php | 263 + .../vendor/phppgadmin-5.6.0/sqledit.php | 156 + .../htdocs/vendor/phppgadmin-5.6.0/tables.js | 18 + .../htdocs/vendor/phppgadmin-5.6.0/tables.php | 1052 +++ .../vendor/phppgadmin-5.6.0/tablespaces.php | 326 + .../vendor/phppgadmin-5.6.0/tblproperties.php | 782 ++ .../themes/bootstrap/global.css | 321 + .../themes/bootstrap/title.png | Bin 0 -> 5388 bytes .../themes/cappuccino/global.css | 197 + .../themes/default/global.css | 266 + .../vendor/phppgadmin-5.6.0/themes/global.css | 111 + .../phppgadmin-5.6.0/themes/gotar/global.css | 262 + .../vendor/phppgadmin-5.6.0/themes/themes.php | 16 + .../vendor/phppgadmin-5.6.0/triggers.php | 448 + .../htdocs/vendor/phppgadmin-5.6.0/types.php | 714 ++ .../htdocs/vendor/phppgadmin-5.6.0/users.php | 415 + .../phppgadmin-5.6.0/viewproperties.php | 564 ++ .../htdocs/vendor/phppgadmin-5.6.0/views.php | 787 ++ .../phppgadmin-5.6.0/xloadtree/xloadtree2.js | 507 ++ .../phppgadmin-5.6.0/xloadtree/xtree2.js | 1621 ++++ .devilbox/www/include/lib/Html.php | 8 + .tests/intra-tests/vendor-phppgadmin.sh | 215 + 383 files changed, 78448 insertions(+), 7 deletions(-) create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/CREDITS create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/DEVELOPERS create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/FAQ create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/HISTORY create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/INSTALL create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/LICENSE create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/TODO create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/TRANSLATORS create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/admin.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/aggregates.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/ajax-ac-insert.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/all_db.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/browser.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/casts.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/ArrayRecordSet.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/Gui.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/Misc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/Plugin.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/PluginManager.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/class.select.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/ADODB_base.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Connection.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres10.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres11.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres74.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres80.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres81.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres82.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres83.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres84.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres90.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres91.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres92.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres93.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres94.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres95.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres96.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/colproperties.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/composer.json create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/conf/.gitignore create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/conf/config.inc.php-dist create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/constraints.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/conversions.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/database.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/dataexport.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/dataimport.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/dbexport.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/display.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/domains.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/fulltext.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/functions.js create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/functions.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/groups.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc10.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc11.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc12.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc74.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc80.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc81.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc82.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc83.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc84.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc90.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc91.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc92.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc93.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc94.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc95.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc96.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/history.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/bootstrap/Favicon.ico create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/bootstrap/Introduction.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/bootstrap/title.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/cappuccino/Lminus.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/cappuccino/Lplus.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/cappuccino/Tminus.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/cappuccino/Tplus.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/cappuccino/inputbckg.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/cappuccino/openListe.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/cappuccino/title.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/AddArguments.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Admin.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Aggregate.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Aggregates.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/AllUsers.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/AvailableReplicationSet.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/AvailableSubscription.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Backup.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Cast.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Casts.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/CheckConstraint.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Cluster.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Column.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Columns.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Constraints.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Conversion.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Conversions.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Copy.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/CorruptedDatabase.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Cut.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Database.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Databases.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Definition.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Delete.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/DisabledJob.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/DisconnectedDatabase.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/DisconnectedServer.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Domain.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Domains.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/EnableArgument.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Erase.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Execute.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/ExecuteSave.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Explain.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Export.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Favicon.ico create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Filter.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/ForeignKey.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Fts.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/FtsCfg.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/FtsDict.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/FtsParser.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Function.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Functions.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/GurusHint.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Help.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Histories.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/History.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/I.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Import.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Index.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Indexes.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Introduction.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Job.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Jobs.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Key.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/L.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Language.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Languages.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Listen.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Listens.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Lminus.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Loading.gif create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/LowerArgument.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Lplus.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Node.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Nodes.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/ObjectNotFound.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/OfferedReplicationSet.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/OfferedSubscription.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Open.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Operator.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/OperatorClass.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/OperatorClasses.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Operators.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Paste.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Path.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Paths.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/PrimaryKey.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Privileges.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Processes.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Property.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/RaiseArgument.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Record.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Records.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Redo.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Refresh.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/RemoveArgument.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Replication.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/ReplicationSets.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Restore.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Roles.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Rule.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Rules.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Save.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Schedule.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Schedules.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Schema.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Schemas.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Search.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Sequence.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Sequences.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Server.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Servers.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/SqlEditor.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Statistics.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Step.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Steps.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Stop.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Subscriptions.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/T.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Table.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Tables.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Tablespace.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Tablespaces.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Tminus.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Tplus.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Trigger.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/TriggerFunction.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/TriggerFunctions.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Triggers.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Type.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Types.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Undo.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/UniqueConstraint.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/User.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/UserGroup.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/UserGroups.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Users.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Variables.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/View.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Views.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/blank.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/title.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/index.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/indexes.js create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/indexes.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/info.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/intro.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/js/ac_insert_row.js create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/js/database.js create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/js/display.js create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/README create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/afrikaans.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/arabic.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/catalan.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/chinese-sim.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/chinese-tr.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/chinese-utf8-zh_CN.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/chinese-utf8-zh_TW.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/czech.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/danish.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/dutch.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/english.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/french.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/galician.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/german.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/greek.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/hebrew.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/hungarian.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/italian.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/japanese.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/langcheck create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/lithuanian.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/mongol.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/polish.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/portuguese-br.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/portuguese-pt.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/romanian.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/russian-utf8.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/russian.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/slovak.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/spanish.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/swedish.php create mode 100755 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/synch create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/translations.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/turkish.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/ukrainian.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/languages.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/adodb-csvlib.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/adodb-datadict.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/adodb-error.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/adodb-iterator.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/adodb-lib.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/adodb-time.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/adodb.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/drivers/adodb-postgres.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/drivers/adodb-postgres64.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/drivers/adodb-postgres7.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/drivers/adodb-postgres8.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-ar.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-bg.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-bgutf8.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-ca.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-cn.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-cz.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-da.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-de.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-en.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-es.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-esperanto.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-fa.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-fr.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-hu.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-it.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-nl.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-pl.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-pt-br.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-ro.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-ru1251.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-sv.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-uk1251.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb_th.inc.php create mode 100755 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/license.txt create mode 100755 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/readme.txt create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/toexport.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/tohtml.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/decorator.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/errorhandler.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/highlight.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/js/jquery.js create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/lib.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/links.js create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/login.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/logout.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/multiactionform.js create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/opclasses.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/operators.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugin.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/GuiControl/conf/config.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/GuiControl/plugin.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/INSTALL create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/README create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/classes/Reports.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/conf/config.inc.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/images/Report.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/images/Reports.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/afrikaans.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/arabic.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/catalan.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/chinese-sim.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/chinese-tr.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/chinese-utf8-zh_CN.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/chinese-utf8-zh_TW.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/czech.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/danish.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/dutch.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/english.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/french.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/galician.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/german.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/greek.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/hebrew.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/hungarian.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/italian.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/japanese.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/lithuanian.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/mongol.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/polish.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/portuguese-br.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/portuguese-pt.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/romanian.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/russian.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/slovak.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/spanish.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/swedish.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/turkish.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/ukrainian.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/plugin.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/sql/reports-pgsql.sql create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/privileges.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/redirect.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/robots.txt create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/roles.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/rules.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/schemas.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/sequences.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/servers.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/sql.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/sqledit.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/tables.js create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/tables.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/tablespaces.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/tblproperties.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/themes/bootstrap/global.css create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/themes/bootstrap/title.png create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/themes/cappuccino/global.css create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/themes/default/global.css create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/themes/global.css create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/themes/gotar/global.css create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/themes/themes.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/triggers.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/types.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/users.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/viewproperties.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/views.php create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/xloadtree/xloadtree2.js create mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/xloadtree/xtree2.js create mode 100755 .tests/intra-tests/vendor-phppgadmin.sh diff --git a/.devilbox/www/htdocs/credits.php b/.devilbox/www/htdocs/credits.php index 0325b2ec..7e762129 100644 --- a/.devilbox/www/htdocs/credits.php +++ b/.devilbox/www/htdocs/credits.php @@ -60,37 +60,42 @@ Adminer Apache License 2.0 or GPL 2 - vrana/adminer + vrana/adminer Bootstrap MIT - twbs/bootstrap + twbs/bootstrap Font Awesome (css) MIT - FortAwesome/Font-Awesome + FortAwesome/Font-Awesome Font Awesome (fonts) SIL OFL 1.1 - FortAwesome/Font-Awesome + FortAwesome/Font-Awesome Opcache GUI MIT - amnuts/opcache-gui + amnuts/opcache-gui phpMyAdmin GPL 2.0 - phpmyadmin/phpmyadmin + phpmyadmin/phpmyadmin + + + phpPgAdmin + GPL 2.0 + phppgadmin/phppgadmin PHPRedMin BSD 3-Clause License - sasanrose/phpredmin + sasanrose/phpredmin diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/CREDITS b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/CREDITS new file mode 100644 index 00000000..b823ebc2 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/CREDITS @@ -0,0 +1,108 @@ +CREDITS +------- + +Project Administration & Major Projects + +- Robert Treat (xzilla) + +Translators + +- Kuo Chaoyi (Chinese Utf8) +- Angelo Rigo (Brazilan Portuguese) +- Chan Min Wai (Chinese) +- He Wei Ping (Chinese) +- Chih-Hsin Lee (Trad. Chinese) +- Hugo Jonker (Dutch) +- Pascal Peyre (French) +- Guillaume Lelarge (French) +- ioguix (French) +- H. Etzel, Markus Bertheau (German) +- Kalef (Italian) +- Tadashi Jokagi (Japanese) +- Rafal Slubowski (Polish) +- Alexander Khodorisky (Russian) +- Martin Marquιs (Spanish) +- Andrej Misovic (Slovak) +- Devrim Gunduz (Turkish) +- Libor Vanek (Czech) +- Marek Cernockύ (Czech) +- Stefan Malmqvist (Swedish) +- Nicola Soranzo (Italian) +- Petri Jooste (Afrikaans) +- Sulyok Pιter (Hungarian) +- Zaki Almuallim (Arabic) +- Erdenemandal Bat-Erdene (Mongolian) +- Alex Rootoff (Ukrainian) +- Jonatan (Hebrew) +- Alin Vaida (Romanian) +- Arne Eckmann (Danish) +- Francisco Cabrita (Portuguese) +- Bernat Pegueroles (Catalan) +- Fernando Wendt (Brazilan Portuguese) +- Adamantios Diamantidis (Greek) +- Marek Ώernockύ (Czech) +- Alexey Baturin (Russian UTF8) +- Adriαn Chaves Fernαndez (Galician) + +Look & Feel + +- Davey (CSS) +- ioguix (Cappuccino theme) +- Tomasz Pala (Gotar theme) +- Felipe Figueroa (Bootstrap theme) + +Contributors + +- Dan Wilson +- Christopher Kings-Lynne +- Jehan-Guillaume (ioguix) De Rorthais +- Felix Meinhold +- Jean-Michel Poure +- Rafal Slubowski +- Brett Toolin +- Mark Gibson (Pop-up SQL window) +- Nicola Soranzo +- Oliver Meyer & Sven Kiera (Table icons link to browse table) +- Bryan Encina (SQL window improvements, bug fixes, admin) +- Dan Boren (Object comments) +- Adrian Nida (Fix time outs) +- Russell Smith +- Guillaume Lelarge +- Ian Barwick +- Javier Carlos +- Eric Kinolik +- John Jawed +- Karl O. Pinc +- Tomasz Pala +- Ivan Zolotukhin +- Kristoffer `spq` Janke +- Leonardo Augusto Sapiras (Improve phpPgAdmin ergonomy during the GSoC 2010, with ioguix as mentor) +- Julien Rouhaud, aka. rjuju (nested groups) +- Felipe Figueroa aka. amenadiel + + +Third Party Libraries + +- Highlight.php (Jacob D. Cohen of rafb.net) +- XLoadTree2 (Erik Arvidsson & Emil A Eklund of webfx.eae.net) +- jQuery (http://jquery.com/) + +Corporate Sponsors + +Project resources: +- github.com - Official project home +- Kattare Internet (http://www.kattare.com/) - Hosting the demo server +- Sourceforge.net - Hosting, Source Package Provider, Legacy project services (Bug/Feature Tracker, mailing lists, code repository) + +Ongoing contributors: + +- OmniTI ( https://omniti.com ) - sponsors developpment as Robert Treat employer + +Feature contributors: + +- SpikeSource (www.spikesource.com) - Slony support +- Google Summer of Code (http://code.google.com/soc/2006/pgsql/appinfo.html?csaid=DB096D908B948D89) - phpPgAdmin Improvements +- Google Summer of Code (http://code.google.com/soc/2007/postgres/appinfo.html?csaid=E89B3D5E2DC4170A) - Full Text Search in PostgreSQL GUI Tools +- Google Summer of Code (http://code.google.com/p/google-summer-of-code-2010-postgres/downloads/detail?name=Leonardo_Augusto_Sapiras.tar.gz) - Improve phpPgAdmin ergonomy +- Dalibo ( http://dalibo.com ) - sponsored development as Jehan-Guillaume (ioguix) de Rorthais employer + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/DEVELOPERS b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/DEVELOPERS new file mode 100644 index 00000000..b88c170f --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/DEVELOPERS @@ -0,0 +1,155 @@ +DEVELOPER INFO +-------------- + +phpPgAdmin is Free/Open Source software and contributions are welcome from +everyone. Please be sure to join the developers' mailing list: + + https://lists.sourceforge.net/lists/listinfo/phppgadmin-devel + +SOURCE REPOSITORY +----------------- + +phpPgAdmin uses git for source control management. The phpPgAdmin git repository +is hosted at github: + + https://github.com/phppgadmin/phppgadmin + +To clone the phpPgAdmin source to your development system, execute the following +command: + + git clone git://github.com/phppgadmin/phppgadmin.git + +After making changes, generate a patch using "git format-patch" and submit it +to the phpPgAdmin devel mailing list. + +Alternatively you can clone the phppgadmin repository on github and make a pull +request. For details on how to make pull requests, see: + + https://help.github.com/articles/using-pull-requests + +Please note that submitting code is considered a transfer of copyright to the +phpPgAdmin project. phpPgAdmin is made available under the GPL v2 license. + +Push access to the main phpPgAdmin git repository can be granted to developers +with a track record of useful contributions to phpPgAdmin at the discretion +of the phpPgAdmin development team. + +TIPS FOR DEVELOPERS +------------------- + +When you submit code to phpPgAdmin, we do expect it to adhere to the existing +coding standards in the source. So, instead of using your personal favourite +code layout style, please format it to look like surrounding code. +In general, we want the code to be portable, standard compliant (e.g. to W3C +(X)HTML and CSS) and independent of specific configurations of PHP, the web +server, PostgreSQL or the user browser. We also try to support as many versions +as possible of these applications. + +Test your code properly! For example, if you are developing a feature to create +domains, try naming your domain all of the following: + + * " + * ' + * \ + * words with spaces + *


+ +Don't forget to make sure your changes still pass the existing Selenium test +suite. Additionally, you should add or update the test suite as needed to +cover your new features. + +If you are adding a new class function, be sure to use the "clean", +"fieldClean", "arrayClean" and "fieldArrayClean" functions to properly escape +odd characters in user input. Examine existing functions that do similar +things to yours to get yours right. + +When writing data to the display, you should always urlencode() variables in +HREFs and htmlspecialchars() variables in forms. Rather than use action="" +attributes in HTML form elements use action="thisformname.php". This +ensures that browsers remove query strings when expanding the given +relative URL into a full URL. + +When working on database classes, always schema qualify your SQL where it is +possible with the current schema ($data->_schema) for pg73+ classes. Then don't +forget to write your method for older classes which don't support schemas. + +When working with git, always make sure to do a 'git pull' both before you +start; so you have the latest code to work with; and also again before you +create your patch; to minimize the chance of having conflicts. If you plan to +submit your code via github pull requests, we strongly recommend doing your +work in a feature specific branch. If you want to submit multiple patches, +they should all live in their own branch. Remember, smaller changes are easier +to review, approve, and merge. + + +COMMON VARIABLES +---------------- + +$data - A data connection to the current or default database. +$misc - Contains miscellaneous functions. eg. printing headers & footers, etc. +$lang - Global array containing translated strings. The strings in this array + have already been converted to HTML, so you should not + htmlspecialchars() them. +$conf - Global array of configuration options. + +WORKING WITH RECORDSETS +----------------------- + +phpPgAdmin uses the ADODB database library for all its database access. We have +also written our own wrapper around the ADODB library to make it more object +oriented (ADODB_base.pclass). + +This is the general form for looping over a recordset: + +$rs = $class->getResults(); +if (is_object($rs) && $rs->recordCount() > 0) { + while (!$rs->EOF) { + echo $rs->fields['field']; + $rs->moveNext(); + } +} +else echo "No results."; + +UPDATING LANGUAGE FILES FOR THE MONO-LINGUAL +-------------------------------------------- + +If you need to add or modify language strings for a new feature, the preferred +method is: + +* cd into lang/ subdirectory +* modify english.php file only! + +If you've done it correctly, when you create your patch, it should only have +diffs of the lang/english.php file. For more information on how the language +system works, please see the TRANSLATORS file. + + +UNDERSTANDING THE WORK/BRANCH/TAG/RELEASE PROCESS +------------------------------------------------- + +All new work for phpPgAdmin is done against the git master branch. When we feel +we are ready to do a new release, we create a branch (ex. REL_4-1). This +becomes the stable branch for all future 4.1.x releases, and any bugfixes needed +for 4.1 would go in that branch. + +When we release a new revision, we tag that at release time (REL_4-1-1), so a +checkout of any tag should give you the same files that downloading the release +would have given you. As a general rule, we do not introduce new features into +existing stable branches, only bugfixes and language updates. This means if you +want to work on new features, you should be working against the git master. +Eventually we will call for another release, and that will be branched (REL_4-2) +and the cycle will start over. + +On occasion we have created out-of-band branches, typically labeled as DEV_foo. +These were used for temporary, concurrent development of large features, and +should not be used by other developers. When development of those features is +completed, the branches get merged in as appropriate, so no further development +should occur on those branches. + +GETTING HELP +------------ + +We prefer most discussion of development to take place on the phpPgAdmin +devel mailing list, so that discussions can be archived and be searchable. +However, if you are into IRC, a couple of us hang out on #phppgadmin on +freenode, and occasionally discuss things there. diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/FAQ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/FAQ new file mode 100644 index 00000000..8f1ae6cc --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/FAQ @@ -0,0 +1,217 @@ +phpPgAdmin Frequently Asked Questions +------------------------------------- + +Installation errors +------------------- + +Q: I've installed phpPgAdmin but when I try to use it I get an error message + telling me that I have not compiled proper database support into my + PHP installation. + +A: This means that you have not properly compiled Postgres support into + your PHP. The correct configure flag to use is '--with-pgsql'. Read the + PHP manual and website for more help with this. + + Postgres support can be also compiled into PHP as a dynamic extension, + so if you have precompiled version (Linux RPM, or Windows binary), there + are still chances, that only thing you should do is to enable loading it + automagically. + + It can be done by editing your php.ini file (under Windows, usually in + C:\WINDOWS or C:\WINNT, under Linux /etc/php.ini) and uncommenting this + line: + + ;extension=php_pgsql.dll ;under Windows + ;extension=pgsql.so ;under Linux + + so it would look like that: + + extension=php_pgsql.dll ;under Windows + extension=pgsql.so ;under Linux + + In Linux distributions based on Red Hat or Fedora, PHP extensions are + automatically configured in /etc/php.d/pgsql.ini, simply install the + php-pgsql package. + + See http://www.php.net/manual/en/pgsql.setup.php for more information + on setting up Postgres support in PHP. + +Q: I get a warning like this when using phpPgAdmin on Windows: + + "Warning: session_start() [function.session-start]: + open(/tmp\sess_5a401ef1e67fb7a176a95236116fe348, O_RDWR) failed" + +A: You need to edit your PHP.INI file (usually in c:\windows) and change this + line: + + session.save_path = "/tmp" + + to: + + session.save_path = "c:\windows\temp" + + And make sure that the folder c:\windows\temp actually exists. + + +Login errors +------------ + +Q: I always get "Login failed" even though I'm _sure_ I'm using the right + username and password. + +A: There are a number of reasons why you might not be able to connect, typically + having nothing to do with phpPgAdmin itself. First check the Postgres log + on your server, it should contain a FATAL error message detailing the exact + reason why the login is failing. You will probably need to either adjust the + username or password, add LOGIN permissions to the role, or adjust your + pg_hba.conf file in your Postgres data dir; so follow the directions laid + out in the FATAL message. + + If you do not have any FATAL error messages, and you have verified that you + are looking at the properly configured logfile, then this means you are not + connecting to your database. If you are connecting via TCP/IP sockets (for + example if you have installed phpPgAdmin on a different computer than your + database) make sure that Postgres is accepting connection over TCP/IP. On + older versions of Postgres, you need to change this line in your + postgresql.conf file: + + #tcpip_socket = false + + to: + + tcpip_socket = true + + on newer versions of Postgres, this setting has been replaced by the + listen_addresses setting, so you will need to change that setting instead + (likely changing it to "*"). Be sure to restart Postgres after changing + either of these settings! + + If that still doesn't get you connected, then there is likely something + interfering between PHP and Postgres. Check to make sure that you don't have + a firewall preventing connectivity, or that you don't have some other + security setup (ie. SELinux policy) that prevents PHP from connecting. + +Q: For some users I get a "Login disallowed for security" message. + +A: Logins via phpPgAdmin with no password or certain usernames (pgsql, + postgres, root, administrator) are denied by default. Before changing this + behaviour (setting $conf['extra_login_security'] to false in the + config.inc.php file) please read the Postgres documentation about client + authentication and understand how to change Postgres's pg_hba.conf to + enable passworded local connections. + +Q: I can use any password to log in! + +A: Postgres, by default, runs in trust mode. That means that it doesn't + ask for passwords for local connections. We highly recommend that you + edit your pg_hba.conf file, and change the login type to 'md5'. Note + that if you change the 'local' login type to 'md5', then you might need + to enter a password to start Postgres. Get around this by using a + .pgpass file - explained in the Postgres documentation. + + +Other errors +------------ + +Q: When I enter non-ASCII data into the database via a form, it's inserted + as hexadecimal or Ӓ format! + +A: You have not created your database in the correct encoding. This problem + will occur when you try to enter an umlaut into an SQL_ASCII database, or + SJIS Japanese into an EUC-JP database, etc. + +Q: When I drop and re-create a table with the same name, it fails. + +A: You need to drop the sequence attached to the SERIAL column of the table + as well. Postgres 7.3 and above do this automatically. If you have + upgraded to Postgres 7.3 from an earlier version, you need to run the + contrib/adddepend script to record all dependencies. + +Q: When browsing a table, the 'edit' and 'delete' links do not appear. + +A: In order, phpPgAdmin will prefer the following as unique row identifiers: + + 1. Primary keys + 2. Unique keys (cannot be parital or expressional indexes) + 3. OID column (will require a sequential scan to update, unless you + index the OID column) + + Furthermore, any NULL values in the unique index will mean that that row + will be uneditable. Also, since OIDs can become duplicated in a table, + phpPgAdmin will alter the row, and then check to ensure that exactly one + row has been modified - otherwise rollback will occur. + + +Questions on dumps +------------------ + +Q: What happened to the database dump feature? + +A: You need to configure phpPgAdmin (in the config.inc.php file) to point + to the location of the pg_dump and pg_dumpall utilities on your web server. + Once you have done that, the database export feature will appear. + +Q: I would like to use the pg_dump integration for database and table + dumps on Windows. How do I get pg_dump.exe on Windows? + +A: To get the pg_dump utilities on Windows, you need to install Postgres 8.0 + or higher (we recommend the latest release) for Windows, available for + download from the + Postgres web site. + Once you have installed that, set the pg_dump and pg_dumpall locations + in the config.inc.php file to + 'C:\\Program Files\\Postgres\\8.0\\bin\\pg_dump.exe' and + 'C:\\Program Files\\Postgres\\8.0\\bin\\pg_dumpall.exe', or wherever you + installed them. + +Q: Why can't I reload the SQL script I dumped in the SQL window? + +A: The following limitations currently exist in SQL script execution: + + * Only uploaded SQL scripts can contain COPY commands and for + this to work, you must have PHP 4.2 or higher. + + * 'psql' commands such as '\connect' will not work at all. + + * Multiline SQL statements will not work, eg: + + CREATE TABLE example ( + a INTEGER + ); + + * You cannot change the current database or current user during + the execution of the script. + + We do intend to work on some of these limitations in the future, but + some of them are Postgres restrictions and we recommend using the + 'psql' utility to restore your full SQL dumps. + + +Other questions +--------------- + +Q: When inserting a row, what does the 'Value' or 'Expression' box mean? + +A: Choosing 'Expression' means that you can use functions, operators, other + field names, etc. in your value - you need to properly quote any literal + values yourself. 'Value' on the other hand, means that no matter what you + enter as the value, it will be inserted as-is into the database. + +Q: Why is there never any information on the 'Info' page of a table? + +A: The Info page will show you what other tables have foreign keys to the + current table and some data from the Postgres statistics collector. + In older versions of Postgres, the stats collector is not enabled by default. + To enable it, look in your postgresql.conf file for the stats_* options. + Just make them all 'true' and restart Postgres. + +Q: Why can't I download data from queries executed in the SQL window? + +A: You need to check the 'Paginate results' option to allow downloads. + +Q: I would like to help out with the development of phpPgAdmin. How should I + proceed? + +A: We really would like your help! Please read the DEVELOPERS and TRANSLATORS + files. + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/HISTORY b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/HISTORY new file mode 100644 index 00000000..e1e490b4 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/HISTORY @@ -0,0 +1,818 @@ +phpPgAdmin History +------------------ + +Version 5.6 +----------- + +Released: 12th November, 2018 + +Features +* Add support for PostgreSQL 9.3, 9.4, 9.5, 9.6, 10, 11 +* Development support for PostgreSQL 12 +* Add support for brows/select navigation tabs (firzen) +* Add new theme, "bootstrap" (amenadiel) +* Improved support for json/jsonb + +Bugs +* Fix bug in Turkish translation which caused failed ajax responses +* Account for Blocked field in admin processes Selenium test +* Properly handle column comments +* Fix background css issue +* Additional language updates + +Incompatabilities +* Dropped testing of pre-9.3 versions of Postgres, which are now EOL + + +Version 5.1 +----------- + +Released: 14th April 2013 + +Features +* Full support for PostgreSQL 9.1 and 9.2 +* New plugin architecture, including addition of several new hooks (asleonardo, ioguix) +* Support nested groups of servers (Julien Rouhaud & ioguix) +* Expanded test coverage in Selenium test suite +* Highlight referencing fields on hovering Foriegn Key values when browsing tables (asleonardo) +* Simplified translation system implementation (ioguix) +* Don't show cancel/kill options in process page to non-superusers +* Add download ability from the History window (ioguix) +* User queries now paginate by default + +Bugs +* Fix several bugs with bytea support, including possible data corruption bugs when updating rows that have bytea fields +* Numeruous fixes for running under PHP Strict Standards +* Fix an issue with autocompletion of text based Foreign Keys +* Fix a bug when browsing tables with no unique key + +Translations +* Lithuanian (artvras) + +Incompatabilities +* We have stopped testing against Postgres versions < 8.4, which are EOL +* phpPgAdmin core is now UTF-8 only + + +Version 5.0 +----------- + +Released: 29th November 2010 + +Features +* Support for PostgreSQL 8.4 and 9.0 +* Support for database level collation for 8.4+ +* Support for schema level export +* Add ability to alter schema ownership +* Clean up domain support and improve interface +* Add support for commenting on functions +* Allow user to rename role/users and set new passwords at the same time +* Greatly enhanced Full-Text-Search capabilities (ioguix, Loomis_K) +* Overhauled Selenium Test suite to support multiple database versions +* Optimized application graphics (Limo Driver) +* Support for Column Level Privileges +* Allow users to specify a template database at database creation time +* Support killing processes +* Add ability to create indexes concurrently +* Much better support of autovacuum configuration +* Add an admin page for table level +* Refactored autocompletion: + * fix support for cross-schema objects + * support multi-field FK + * support for pagination of values in the auto-complete list +* Allow user to logicaly group their server under custom named node in the browser tree +* New themes (Cappuccino and Gotar) and a theme switcher on the introduction page +* Auto refresh Locks page +* Auto refresh Processes page +* Link in the bottom of the page to go to top of page +* Browsing on Foreign Keys (When browsing a table, clicking on a FK value, jump to the PK row) + + +Bugs +* Fix problems with query tracking on overly long queries +* Ensure pg_dump paths are valid +* Fix multiple bugs about quoting and escaping database objects names with special chars +* Fix multiple bugs in the browser tree +* Fix multiple bugs on the SQL and script file import form +* Three security fix about code injection +* Don't allow inserting on a table without fields +* Some fix about commenting databases +* removed deprecated functions from PHP 5.3 +* Lot of code cleanup +* Many other small minor bugs found on our way +* Fix the operator property page + +Translations +* Czech (Marek Cernocky) +* Greek (Adamantios Diamantidis) +* Brazillian Portuguese (Fernando Wendt) +* Galician (Adriαn Chaves Fernαndez) + +Incompatabilities +* No longer support PHP < 5.0 +* No longer support Postgres < 7.4 + + +Version 4.2 +----------- + +Features +* Add Analyze to Table Level Actions (ioguix) +* Add support for multiple actions on main pages (ioguix, Robert Treat) +* Added favicon for Mozilla and a backwards compatible version for IE. +* Allow browsers to save different usernames and passwords for different servers. +* Pagination selection available for reports +* You can configure reports db, schema and table names +* Add support for creating a table using an exsting one (ioguix) +* Auto-expand a node in the tree browser if there are no other nodes (Tomasz Pala) +* Add column about fields constraints type + links in table properties page (ioguix) +* Support for built-in Full Text Search (Ivan Zolotukhin) +* Add alter name, owner & comment on views (ioguix) +* Add column about called procedure + links to their definition in the triggers + properties page (ioguix) +* Add Support for Enum type creation (ioguix,xzilla) +* Add alter name, owner, comment and properties for sequences (ioguix) +* Add function costing options (xzilla) +* Add alter owner & schema on function (xzilla) +* Add a popup window for the session requests history (karl, ioguix) +* Add alter table, view, sequence schema (ioguix) + +Bugs +* Fix inability to assign a field type/domain of a different schema +* Can't edit a report and set its comment to empty +* Fix PHP5 Strict mode complaints +* Fix IN/NOT IN to accept text input lists 'a','b' +* Fix bytea doesn't display as NULL when NULL +* Schema qualifing every object to avoid non wanted behaviour about users' rights + and schema_path +* Remove shared credentials when logging out of single server, to prevent automatic re-login +* Improved SSL connection handling, fix problems with connections from older php builds +* Fix bug with long role name truncation +* Fix bug with DELETE FROM when dropping a row (spq) +* Fix problems when deleteing PUBLIC schema +* Fix several bugs in aggregate support +* Improve autocompletion support +* Tighten up use of global scope variables + +Translations +* utf traditional chinese (Kuo Chaoyi) +* utf simplified chinese (Kuo Chaoyi) +* Italian (Nicola Soranzo) +* Catalan (Bernat Pegueroles) +* French (ioguix) +* German (Albe Laurenz, spq) +* Japanese (Tadashi Jokagi) +* Hungarian (Sulyok Peti) + +Version 4.1.3 +------------- + +Bugs +* Eliminate use of $_SERVER['PHP_SELF']. This fixes a regression in 4.1.2 for + non-mainstream locales (including SQL_ASCII) +* Validate client supplied server against entries in config.inc.php +* Fix undefined variable when altering a field in a table on PostgreSQL < 8.0 + +Version 4.1.2 +------------- + +Bugs +* Fix inability to assign a field type/domain of a different schema +* Fix PHP5 Strict mode complaints +* Fix IN/NOT IN to accept text input lists 'a','b'. +* Fix bytea doesn't display as NULL when NULL +* Fix bug in view creation wizard +* Fix XSS vulnerability: + http://www.securityfocus.com/bid/24115/ + Escape HTML special characters before using $_SERVER['PHP_SELF'] + +Version 4.1.1 +------------- + +Bugs +* Fix problem where failed update would report as duplicate update error and + fail to return edit screen +* Fix error when using $conf[owned_only] on 8.1 & 8.2 +* Fix error displaying schema names for parents of inherited tables +* Clean up non-standard escape warnings for PostgreSQL 8.2 +* Fix improper text quoting for droping roles and aggregates +* Fix bug when dumping mixed case table names in PostgreSQL 8.2 + +Version 4.1 +----------- + +Features +* New icons by Niko , from the graphics repository on pgFoundry. +* Added icons to bread crumb trail and tabs. +* Send encrypted passwords over the wire wherever possible. +* Alter sequence, nextval and setval (Guillaume) +* Auto-select 'WITHOUT OIDS' if 'default_with_oids' setting is false (Guillaume) +* Autovacuum configuration support (Robert Treat) +* Basic ROLE support (Chris Kings-Lynne, Javier Carlos) +* Add support for SSL connections (Eric Kinolik) +* Display content of pg_locks view (Javier Carlos) +* Add labels for checkboxes/radio buttons for improved usability (Guillaume) +* Display Prepared Transactions (Javier Carlos) +* Re-enable table browsing from tree icons (ioguix) +* Add Support For IN/OUT Parameters (John Jawed) +* Add column level information into the tree browser (ioguix) +* Promote column level interaction into its own page (ioguix) +* Add automatic lookup of foreign key values in insert/update fields (John Jawed) +* Add ability to create/drop/alter custom aggregates (Javier Carlos) +* Add enable/disable trigger (John Jawed) +* Add global comments for databases and tablespaces + +Translations +* Catalan from Bernat +* Romanian from Alin Vaida + +Version 4.0 +----------- + +Features +* Slony replication support (Thanks to sponsorship from SpikeSource) +* Allow current database to be at the top +* Allow base URL of PostgreSQL documentation to be configured +* Allow variable size textarea when editing values (Juergen Weigert) +* Allow SQL script upload to parse arbitrary SQL, including multiline + SQL statements. Improve output to show every command as its executed + and SELECT results. +* Add rudimentary support for PostgreSQL 8.1 and 8.2 +* primary key and unique key at table creation (Andreas Huber) +* Add row|statement level options to create trigger for >= 7.4 (Robert Treat) +* Allow altering name (for >= 7.4) and owner (for >= 8.0) of a database (Bryan Encina) +* Allow login to several servers simultaneously +* Rearrange frame layout to suit multi-server support +* New browser tree with dynamically loading branches + (Using XLoadTree2 from http://webfx.eae.net/) +* Allow language change from the intro page at any time +* Avoid getting and setting encoding queries if possible +* Avoid version query in PHP 5 / PostgreSQL 7.4+ +* Avoid query for superuser status in PHP 5 / PostgreSQL 7.4+ +* Put PostgreSQL 7.4+ in read only mode for pagination of results + to avoid executing selects that have write side effects. +* Allow re-using username and password for all servers - saves re-entering + username and password for every server in a pool. +* Make default language 'auto' indicating auto detect. If a language is + deliberately specifed, then that will always be used and no detection will + occur. +* ADOdb library updated to version 4.65 + +Bugs +* Tree Icons are displayed middle instead of top +* Ensure login frame is always at top level (Russell Smith) +* Fix non-ASCII characters inserted in Unicode databases as HTML entities with + non-UTF8 web servers (Markus Bertheau) +* Fix export to work with release candidates and beta releases as well as finals + (Russell Smith) +* Fix port selection for local connections +* Fix timeouts on long running operations (Adrian Nida) +* Allow Multiline character and character varying editing and inserting +* Add automatic browser language selection for all languages +* Stop duplicate insert on re-POST of data +* Fix bug with exporting schema for servers < 7.3 +* Fix opclasses on 7.2 and below +* Fix listing of opaque functions in 7.2 +* Actually fix PHP 4.4.0's new strict references + +Translations +* Japanese from Tadashi Jokagi +* Danish from Arne Eckmann +* Arabic from Zaki +* Romanian from Alin +* Afrikaans from Petri +* Polish from Rafal (utf-8 encoding) +* Slovak from Andrej +* German from Markus +* Spanish From Martin +* Hungarian from Sulyok +* Turkish from Devrim + +Version 3.5.6 +------------- + +Bugs +* Actually fix PHP 4.4.0's new strict references + +Version 3.5.5 +------------- + +Bugs +* Fix for PHP 4.4.0's new strict references +* Small improvement to Opera browser detection in the tree +* Fix listing of opaque functions in 7.2 +* Fix listing of opclasses and functions pre 7.3 + +Version 3.5.4 +------------- + +Bugs +* Fix security hole in include() of language file: + http://secunia.com/advisories/15941/ + Check now requires that the language filename be in the list + of known allowed filenames. +* Fix that functions returning cstring were not being listed +* Make parsing of PostgreSQL 1-dimensional arrays correct. Makes + named function parameter use more reliable. +* Fix downloading of the results of multiline queries. + +Version 3.5.3 +------------- + +Bugs +* Fix using schema enabled dump on non-schema enabled backend +* Don't try setting no timeout when in safe mode +* Reload browser after executing arbitrary SQL +* Fix browser in RTL languages +* Fix inability to drop database using the drop link +* Fix last internal oid value for PostgreSQL 8.0 +* Fix (again) dumping on v8 for windows, exclude dumping some objects. + +Translations +* Portuguese from Francisco + +Version 3.5.2 +------------- + +Bugs +* Fix export to work with release candidates and beta releases as well as finals + (Russell Smith) +* Fix port selection for local connections (Russell Smith) +* Fix timeouts on long running operations (Adrian Nida) +* Allow Multiline character and character varying editing and inserting +* Do browser language detection for all languages + +Translations +* Japanese from Tadashi +* Danish from Arne + +Version 3.5.1 +------------- + +Bugs +* Support 8.0beta5 schema tablespace changes +* Help link fixes +* Estimated row count in 7.0 and 7.1 fixes +* Priviliges nav fix +* Function privileges fix +* Search path fix +* pg_dump on win32 8.0 native fix + +Translations +* Romanian from Alin +* Italian updates from Nicola + +Version 3.5 +----------- + +Features +* Context-sensitive online help system +* Use language preferencies from browser (Markus Bertheau, Nicola Soranzo) +* Tablespace support for 8.0 +* Support cancelling backend processes in 8.0 +* Allow setting privileges on databases +* Allow setting schema search path in SQL window +* Allow filtering find results by object type +* Show function arguments in find results +* Support 8.0's named function arguments +* "Sticky" navigation. phpPgAdmin will now remember while tab you are + looking at (eg. 'Indexes') when you change which table you are viewing. +* New fast navigation bar. A breadcrumb style navigation bar for fast + jumping between areas. +* Much improved grant/revoke feature +* Allow creating and viewing composite types +* pg_dumpall integration. Now you can download the entire cluster via + phpPgAdmin. +* Show line numbers when viewing functions +* Syntax highlighting for PL/SQL, PL/PgSQL, PL/PHP, PL/Ruby, PL/Java, + PL/J, PL/Python and PL/Perl functions, thanks to Jacob D. Cohen's + BSD-licensed highlighting code on rafb.net +* Add page navigation links at the bottom as well as the top of the page + when browsing results. +* Support for 8.0's alter column type +* Support for 8.0's add columns with defaults and not null + +Translations +* Romanian from Alin +* Arabic from Zaki +* Japanese from Tadashi +* Spanish from Robert & Martin +* Mongolian from Erdenemandal +* Ukrainian from Alex Rootoff +* Hebrew from jonatan +* Hungarian from Sulyok +* French from Pascal +* Afrikaans from Petri +* Turkish from Devrim +* Slovak from Andrej +* German from Markus +* Italian from Nicola +* Polish from Rafal + +Bugs +* Fix that non-Auto mode import didn't work (Adrian Nida) +* Fix inability to drop constraints when using a non-english translation +* Work around MSIE's failure to handle downloads in SSL mode +* Allow insert, update, delete, references and trigger to be granted + and revoked on views. + +Version 3.4.1 +------------- + +Bugs +* Fix export of mixed case tables pre 7.4 +* Fix table export problems pre 7.3 +* Fix join clause created by view wizard for pre 7.3 +* Fix reindex of mixed case indexes +* Show domains in type lists in appropriate places +* Fix for multiline CDATA parsing in XML import +* Fix missing _schema notice in reports + +Version 3.4 +----------- + +Features +* Add CACHE and CYCLE parameters in sequence creation +* View, add, edit and delete comments on tables, views, schemas, + aggregates, conversions, operators, functions, types, + opclasses, sequences and columns (Dan Boren & ChrisKL) +* Add config file option for turning off the display of comments +* Allow creating array columns in tables +* Allow adding array columns to tables +* Allow creating domains with type length and arrays +* Show domain base type and comment in domains list +* Allow import of CSV, Tabbed and XML data. "Auto" mode chooses + import mode based on the file extension. +* Allow upload and execution of _basic_ SQL scripts +* More admin features available: vacuum, analyze, cluster all and reindex + (with all options) (Bryan Encina) +* Fix SQL popup window to reload when the database is changed so + that the correct page encoding is used. +* Create view wizard (Bryan Encina) +* Allow specification of MATCH, DEFERRABLE and INITIALLY DEFERRED on + foreign keys. +* Automatically uncheck the NULL checkbox when data is typed in the value + field while editing data. +* Show query runtime when executing arbitrary SQL +* Allow renaming functions when backend supports it +* Views are now more like tables. They are listed in the browser, + you can view the virtual columns of the view and its column defaults. + Columns in view can also be renamed and have defaults set. +* Allow viewing, dropping and creation of rules on views. +* Support for 8.0-dev ALTER COLUMN TYPE, adding of SERIAL and BIGSERIAL + columns, adding NOT NULL columns and adding columns with defaults. + +Bugs +* Fix pg_dump output for PostgreSQL 7.0.x and 7.1.x +* In 7.4 pg_dump, specify schema when dumping tables +* Fix bug in displaying array types in 7.0.x +* Fix bug where views appeared as tables in 7.0.x search results +* Fix bug where find object SQL on < 7.2 was broken +* Fix Find for domain constraints +* Fix popup SQL window so that two different phpPgAdmin instances should + not want to use the same pop-up. +* Fix create table if you don't supply as many fields as you originally + specified. +* Fix schema support for views + +Translations +* Trad. Chinese from Chih-Hsin Lee +* Italian from Nicola +* Spanish from Martin +* Slovak from Andrej +* German from Markus +* Turkish from Devrim +* Hungarian from Sulyok +* French from Pascal +* Polish from Rafal +* Russian from Alex + +Version 3.3.1 +------------- + +Bugs +* Fix table stats for <= 7.2 + +Translations +* Spanish from Martin + +Version 3.3 +----------- + +Features +* Database dump feature, which uses pg_dump +* Large speed improvements by reducing number of database + connections and using external style sheet. +* SQL pop-up window now defaults to the current database +* Display aggregates and operator classes +* Integration with the PostgreSQL statistics collector. See + table and index performance and usage information. +* Display user session defaults for PostgreSQL >= 7.3 +* Rename user feature for PostgreSQL >= 7.4 +* Create functions returning arrays and table types +* Allow editing Select results by oid +* Allow pagination of queries entered in the SQL box +* Allow EXPLAIN ANALYZE of SQL queries (in both SQL boxes) +* Default cursor conveniently in SQL box and Find + +Bugs +* Object browser fixed for databases with no schemas +* Properly detect that reports database is missing +* Fix for alter column on PostgreSQL 7.1 +* phpPgAdmin now works without '.' in the include_path +* Can now remove expire dates on user accounts +* Properties of mixed case named views work in 7.4 + +Translations +* Spanish from Martin Marques +* Japanese from Tadashi Jokagi +* Swedish from Stefan Malmqvist +* Slovak from Andrej Misovik +* Hungarian from Sulyok Peter +* Trad. Chinese from Chih-Hsin Lee +* Italian from Nicola Soranzo +* Afrikaans from Petri Jooste +* Turkish from Devrim Gunduz +* German from Markus Bertheau +* Czech from Libor Vanek +* Russian from Alex Khodorivsky + +Version 3.2.1 +------------- + +Bugs +* Trailing newline problem in chinese-sim translation fixed + +Translations +* French from Pascal +* Russian from Step + +Version 3.2 +----------- + +Features +* PostgreSQL 8.0 CVS support +* Option to dump table structure, data or structure and data +* Set datestyle and extra_float_digits when dumping data +* Results of table browse, table select, view browsing and report browsing + can now ALL be sorted by column +* Result rows of table selects can now be edited and deleted +* Extra login security to prevent logging into servers as postgres and + no password - a VERY common newbie error. +* Cluster indexes and indexed constraints (with analyze) +* Display clustered status of indexes and indexed constraints +* Table info - shows tables that reference the table, parent tables, + and child tables. +* Choice of operator when performing a Select +* 'Select All' feature of table selects now available on view + selects. +* Removed any trace of MySQL support +* Show casts +* Show conversions +* Show languages +* Make table icon link to browse table +* New show_advanced option that allows the hiding or display of + "advanced" objects such as conversions, types, operators, casts and + languages. +* Find Object feature can now find conversions, languages, domains, + constraints, indexes, rules and triggers. +* Better language Makefile for translators +* The SQL box now remembers your query when you click 'Back'. + +Bugs +* Added legal DOCTYPE +* Allow creating foreign keys to tables not in current schema +* Always add brackets around CHECK () constraints +* Never display an index in both Indexes and Constraints +* BIGSERIAL missing from PostgreSQL 7.2 +* Types lengths (eg. varchar(255)) weren't being displayed properly + in PostgreSQL 7.0.x +* Resetting sequence on 7.1+ now restarts at 1, not 2 +* Remove deprecated column default 'now' from SQL script +* Properly escape pg_ in internal queries + +Translations +* Afrikaans from Petri Jooste +* Hungarian from Sulyok Pιter +* German update from Markus Bertheau +* Trad. Chinese from Chih-Hsin Lee +* Hungarian from Peti +* Spanish update from Martin Marques +* Slovak update from Andrej Misovic +* Turkish update from Devrim +* Swedish update from Stefan +* Italian update from Nicola + +Version 3.1 +----------- + +Bug Fixes: +* Table browsing for 7.4 fixed +* Synch script for translators disabled due to bugginess. If you want + to use it, just comment out the warning lines from the script itself. +* Change HTML download to XHTML and make it a 100% conforming document, with DTD +* Alter XML format to allow future features + +Translations: +* Trad. Chinese +* Dutch +* Spanish +* Swedish +* Turkish +* French +* Japanese + +Version 3.1-rc-1 +---------------- + +Bug Fixes +* Table browsing for != 7.3 +* SQL window improvements +* Translation improvements + +Version 3.1-beta-1 +------------------ + +Features: +* Add first & last links to nav. Double number of pages shown. +* Allow granting privileges WITH GRANT OPTION for 7.4 +* Allow revoking GRANT OPTION with CASCADE option for 7.4 +* Display new PostgreSQL 7.4 grant options and grantor in privileges +* Find object feature +* Support for domains in 7.3 and domain constraints and alter domain in 7.4 +* Add/drop users to/from groups +* Alter (rename) triggers +* Pop-up SQL window from Mark Gibson +* Superusers can always see all databases +* Default database encoding for languages +* Convert our images to PNG format +* Allow creating tables WITHOUT OIDS +* Show boolean values as TRUE or FALSE when viewing data +* Allow renaming table and changing table owner +* Refresh feature on table browse +* Support better formatted view dumps in 7.4 +* When browsing data, numeric types are aligned right +* Ability to create unique and partial indexes +* View and edit table comments +* Changed XML format significantly. Now doesn't use field names as + tag names, outputs column type information, and is in correct XML format! +* Save result sets as views and reports in most cases +* Download the results of selects and reports +* Tick all box on Select feature +* Export in HTML format +* Allow listing of operators +* Add a robots.txt file to prevent search engine indexation +* Can now safely edit row based on OID. Guards are in place against duplicate OIDs. +* Works properly if you have cookies disabled + +Bug Fixes: +* Lots of NULL value in table dump fixes (XML format changed slightly) +* Boolean default values and general boolean field handling fixes +* Support zero column tables +* Correctly display the contents of bytea fields +* Consider information_schema to be a system object +* Remember fields if index creation fails +* Fix saving and loading function volatility +* Don't list domains under types +* Lots of reports fixes (titles, page reloads, etc.) +* Selecting for NULL values in Select feature + +Translations: +* Italian translation update from Nicola Soranzo +* German update from Markus Bertheau +* Spanish update from Martin Marques +* Trad. Chinese update from Chih-Hsin Lee +* Russian update from Step +* Slovak update from Andrej +* Polish update from Rafal +* Swedish translation from Stefan Malqvist +* Turkish update from Devrim Gunduz +* German update from Markus Bertheau +* Traditional Chinese update from Chih-Hsin Lee +* Spanish update from Martin + +Version 3.0.1 +------------- + +Bug Fixes +* Lots of NULL value in table dump fixes (XML format changed slightly) +* Support zero column tables +* Correctly display the contents of bytea fields +* Error in ADODB_base.php +* Fix saving and loading function volatility +* Don't list domains under types + +Version 3.0 +----------- + +* German update from Markus Bertheau +* Russian update from Alexander Khodorivsky + +Version 3.0-rc-2 +---------------- + +* Slovak update from Andrej Misovic +* Japanese update from Tadashi Jokagi +* Added 'defaultdb' per-connection variable + for installations where connection to template1 + is disabled. +* Removed uses of call time pass by reference, + since it is a deprecated feature of PHP. + +Version 3.0-rc-1 +---------------- + +* Fix drop database reload browser bug +* Look & Feel upgrade from Davey +* Value & expression on edit row +* Chinese update from Chih-Hsin Lee +* Fixed support for functions and sequences + containing bizarre characters + +Version 3.0-beta-1 +------------------- + +* Cascade drop on columns and constraints +* Czech translation +* Preserve spaces when displaying data +* Greatly improved PostgreSQL 7.2, 7.1 and 7.0 support +* Italian translation +* Show database version in top bar +* Many features useful for PostgreSQL hosting: + - Hide reports + - Filter for owned reports + - Hide admin for non-super users + - Easy for a user to change their own password + - Enforceable minimum password length +* Switched to PEAR's HTML_TreeMenu to avoid license issue +* Function editor can handle setof functions, and all + function properties for volatility, etc. +* Manage permissions on functions +* Massive table browsing improvements: + - Sort ascending and descending by clicking + on field name + - Trim long strings. Use 'expand' and 'collapse' to + see full strings or trimmed strings. +* Revoke on objects. Grant or revoke to multiple groups + and users at once. +* Brazilian Portuguese translation from Angelo Rigo + +Version 3.0.0-dev-4 +------------------- + +* Sort on a column when browsing a table +* Slovak translation +* Turkish translation +* German translation +* Reload browser after create/drop of database, schemas and tables +* Select on views +* Add foreign key constraint, with actions +* Cascade drop on all objects + +Version 3.0.0-dev-3 +------------------- + +* French translation +* Russian translations +* Japanese translations +* Trigger definitions +* ADODB upgrade +* Allow editing of non-null unique + +Version 3.0.0-dev-2 +------------------- + +* Language files now use an array of strings +* Almost complete Chinese translation +* Create sequence +* Create trigger +* Create index +* Add check constraint +* Lots of small fixes +* Add column + +Version 3.0.0-dev-1 +------------------- + +* Renamed to phpPgAdmin from WebDB +* Heaps of other stuff + +Version 0.6 - 24-Dec-2002 +------------------------- + +* Support short_tags off +* Fix browsing tables, pagination, etc. +* Fix all error handling +* Fix problems with apostrophes in database, usernames or passwords + +Version 0.5 - 20-Dec-2002 +------------------------- + +* Initial public release +* Still many problems making it unsuitable for production. + +Version 0.1 - Early 2002 +------------------------ + +* Initial development version + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/INSTALL b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/INSTALL new file mode 100644 index 00000000..0375b3ae --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/INSTALL @@ -0,0 +1,73 @@ +phpPgAdmin Installation Guide +----------------------------- + +1. Unpack your download + + If you've downloaded a tar.gz package, execute from a terminal: + + gunzip phpPgAdmin-*.tar.gz + tar -xvf phpPgAdmin-*.tar + + Else, if you've downloaded a tar.bz2 package, execute from a terminal: + + bunzip2 phpPgAdmin-*.tar.bz2 + tar -xvf phpPgAdmin-*.tar + + Else, if you've downloaded a zip package, execute from a terminal: + + unzip phpPgAdmin-*.zip + +2. Configure phpPgAdmin + + edit phpPgAdmin/conf/config.inc.php + + If you mess up the configuration file, you can recover it from the + config.inc.php-dist file. + +3. If you run your PHP installation in safe mode, in order that the database + dump feature can work correctly, you need to set the 'safe_mode_allowed_env_vars' + php.ini variable to include the PGPASSWORD and PGUSER environmental variables + and the safe_mode_exec_dir to include /usr/bin (or wherever the pg_dump + binaries are found). + + eg. safe_mode_allowed_env_vars = PHP_,PG + safe_mode_exec_dir = /usr/bin + + Given that you usually don't want to allow everything in /usr/bin to + be executed, you might want to copy the pg_dump and pg_dumpall utilities + to a directory by themselves. + + Also, you will need to ensure that your 'pg_dump' and 'pg_dumpall' utilities + are executable by the PHP process, if you want dump support in phpPgAdmin. + + Lastly, if you run phpPgAdmin in safe mode, very long running imports, + exports and transactions may time out and be aborted. + +4. Ensure the statistics collector is enabled in PostgreSQL. phpPgAdmin will + display table, index performance, and usage statistics if you have enabled + the PostgreSQL statistics collector. While this is normally enabled by + default, to ensure it is running, make sure the following lines in your + postgresql.conf are uncommented: + + track_activities + track_counts + +5. Browse to the phpPgAdmin installation using a web browser. You might + need cookies enabled for phpPgAdmin to work. + +6. IMPORTANT - SECURITY + + PostgreSQL by default does not require you to use a password to log in. + We STRONGLY recommend that you enable md5 passwords for local connections + in your pg_hba.conf, and set a password for the default superuser account. + + Due to the large number of phpPgAdmin installations that have not set + passwords on local connections, there is now a configuration file + option called 'extra_login_security', which is TRUE by default. While + this option is enabled, you will be unable to log in to phpPgAdmin as + the 'root', 'administrator', 'pgsql' or 'postgres' users and empty passwords + will not work. + + Once you are certain you have properly secured your database server, you + can then disable 'extra_login_security' so that you can log in as your + database administrator using the administrator password. diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/LICENSE b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/LICENSE new file mode 100644 index 00000000..d2efe073 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/LICENSE @@ -0,0 +1,12 @@ +Copyright (c) 2002, 2003, 2004, 2005 The phpPgAdmin Project + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License +for more details. + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/TODO b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/TODO new file mode 100644 index 00000000..dae0774c --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/TODO @@ -0,0 +1,242 @@ +PHPPGADMIN TODO LIST FOR DEVELOPERS +----------------------------------- + +phpPgAdmin is an open source project which means that if you see something on +this list that you would like to implement, just send us a patch. You can find +our project page here: + + https://github.com/phppgadmin/phppgadmin + +An item is marked 'claimed' when a username in brackets is put after the TODO +item. If you want to work a claimed item, please contact the developers list. + +An item is marked with a '-' if it has been completed. + +Cluster +------- +* Allow reading of postgresql.conf and pg_hba.conf per pg_read_file() in 8.1 +* Support pg_reload_conf(), pg_rotate_logfile() 8.1 commands +* Add support for default db to connect to on login page (we had several users complaining about that lately) + + +Export +------ + +* Switch to SPARQL format: + http://www.w3.org/TR/2005/WD-rdf-sparql-XMLres-20050801/ + + Actually...SQL/XML is maybe better. + +Import +------ + +* Allow import of data via compressed (bzip/gzip/zip) files + +Users +----- + +* user variables (eg. ALTER USER SET .. TO ...) + + +Groups +------ + + +Roles +----- + + +Permissions +----------- + +* Grant ... on all tables, views, ... to user, group, public + + +Databases +--------- + +* Add alter database variables +* Add database stats +* REASSIGN OWNED & DROP OWNED support for 8.2+ + - http://www.postgresql.org/docs/8.2/interactive/sql-reassign-owned.html + - http://www.postgresql.org/docs/8.2/interactive/sql-drop-owned.html + + +Schemas +------- + + +Large Objects +------------- + +* Add support for large objects + (review patch from Dmitry Koterov https://github.com/DmitryKoterov/phppgadmin/commit/3072e666bd2b291feb91823b41f1fdb8ec7f492d ) + +Tables +------ + +* Rewrite WITHOUT OIDs with more natural WITH OIDS +* Allow FKs during create table (Jawed) +* When adding a column or creating a table, prevent size on non-size types (eg. integer(2)). You can find these by looking at format_type in the postgresql source code. +* Add WITH storage_parameter option to create table [8.2] +* Add last vacuum and analyze information from statistics tables [8.2] +* Restrict operators (from $selectOps array) to appropriate types (ie. no LIKE for int4 fields) +* Alter column should handle types with implicit cast types distinctly from those requiring a USING clause +* Where ENUM types are an option, restrict choice to enum values [8.3] + +Columns +------- + +* Add column constraints during creation and altering of columns + + +Views +----- + +* Support temporary views per 8.1? +* Support updateable views, see http://gerrybthunkings.blogspot.com/2010/01/how-should-postgresql-pgadmin-iii-deal.html +* Support Materialized Views + +Sequences +--------- + + +Functions +--------- + +* Remove options for OUT/INOUT params in older servers +* Clean up javascript html spec warnings +* GUC settings [8.3] +* Default param values + +Indexes +------- + +* Support 8.1 Reindex System commands +* Expressional indexes +* Create Index Asc/Desc, Nulls First/Last [8.3] + + +Types +----- + +* Suppres psuedo-type options in type list for creating composite types. (done ?) + + +Operators +--------- + +* Create +* Create/Alter/Drop Operator Family + + +Operator Classes +---------------- + +* Create + + +Triggers +-------- + +* Allow functions from other schemas. +* Support replica trigger modes (8.3) + + +Aggregates +---------- + +* Allow for multi-column aggregates [8.2] +* Rewrite the aggregate edition page ! It is using input tetxt everywhere presently, even for owner and schΓ©ma ! + + +Languages +--------- + +* Drop +* Create +* Alter owner [8.3] +* Alter name [8.3] + + +Domains +------- + +* Alter DOMAIN SET SCHEMA support + +Conversions +----------- + +* Properties +* Drop +* Create + + +Casts +----- + +* Properties +* Drop +* Create + + +Full Text Search (8.3) +---------------------- + +* Create/Alter/Drop parser +* Alter Owner + + +Miscellaneous +------------- + +* Audit for PHP 5.3.x compatability +* Support 8.1 standard compliant strings (E'') +* Support per-database connection limits per 8.1 +* Put a 'What's blocking this query' on Processes view +* Show prepared statements on database view [8.2] +* Show cursors on database view [8.2] +* Show NOTICES on queries in SQL window/file +* Printable view of things +* Show comments for all objects (Dan Boren) +* Allow setting/dropping comments for all objects (Dan Boren) +* Show owner for all objects +* Allow changing owner for objects that have this feature [7.4+ generally] +* Add CASCADE option to Truncate [8.2] +* Add ONLY option to Truncate [8.4] +* Add information about synch tool to TRANSLATORS +* Translated FAQ +* Pull FAQ/HISTORY/CREDITS/etc... from CVS for website. +* Add support for csvlogs [8.3] +* Add executed file scripts in history + +Exotic +------ + +* Pivot reports (ADODB has a feature for this) +* Parameterized reports (use prepared queries) +* Full web accessability conformance + +Principles +---------- + +* register_globals off support +* maximum error_reporting support - enforces code quality, reduces bugs and + improves security +* PHP 5.0 features used +* No HTML font, colour, layout tags. Use CSS for everything +* One day we should make it all XHTML +* everything properly escaped - prevent sql injection and cross-site scripting + probs +* everything properly schema qualified +* Support Postgres 8.4 and upwards +* psql -E is a cool way of seeing how to do schema queries +* Checking out older versions of describe.c in src/bin/psql in the postgres + distro is a good way of seeing how to query older versions of postgres for + schema information +* Put functions in the highest class possible. For instance, simple selects + should be in Postgres, whereas something that works for < 8.2 should be in the + 8.1 class. This will minimise bugs and duplicated code. +* Adhere to current coding standards +* Avoid using global variables if possible + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/TRANSLATORS b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/TRANSLATORS new file mode 100644 index 00000000..d763c301 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/TRANSLATORS @@ -0,0 +1,55 @@ +Translator Info +--------------- + +If you like phpPgAdmin, then why not translate it into your native language? + +There are quite a large number of strings to be translated. Partial +translations are better than no translations at all, and a rough guide is that +the strings are in the order from most important to least important in the +language file. You can ask the developers list if you don't know what a +certain string means. + +We tried keeping translation easy in phpPgAdmin by using ONLY the UTF-8 charset. +Make sure to always work on UTF-8 files when creating a new translation or +editing an existing one. + +To Create a new translation: + +1. Go to the lang/ subdirectory + +2. Copy english.php to yourlanguage.php + +3. Update the comment at the top of the file. Put yourself as the language + maintainer. Edit the 'applang' variable and put your language's name in it, + in your language. + Edit the 'applocale' and put your language code according to the standart: + http://www.ietf.org/rfc/rfc1766.txt + + Basicaly, you just need to put your language code [1] and optionnaly country + code [2] separated by a '-'. As instance for french canadian, it is: fr-CA + [1]: http://www.w3.org/WAI/ER/IG/ert/iso639.htm + [2]: http://www.iso.org/iso/country_codes/iso_3166_code_lists/country_names_and_code_elements.htm + +4. Go through as much of the rest of the file as you wish, replacing the + English strings with strings in your native language. + +At this point, you can send the yourlanguage.php file to us and we will take +care of testing and recoding the translation. Please only do that if you +find the rest of these steps too difficult. + +5. To add your language to phpPgAdmin, edit the lang/translations.php file + and add your language to the $appLangFiles array. + Also, add your language to the $availableLanguages array for + browser auto detection. + +6. Send your contribution to us. We need the lang/translations.php entry as + well as the lang/yourlanguage.php file. Email to the developers list: + phppgadmin-devel@lists.sourceforge.net + +7. There exists a tool named 'langcheck' in the lang/ directory. To run it, + just type 'php langcheck '. It will give you a report about + which strings are missing from your language file and which need to be + deleted. + +Thank you for your contribution! You have just made phpPgAdmin accessible +to thousands more users! diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/admin.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/admin.php new file mode 100644 index 00000000..a8740a28 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/admin.php @@ -0,0 +1,753 @@ +printTrail('schema'); + $misc->printTitle($lang['strclusterindex'], 'pg.index.cluster'); + + echo "
\n"; + foreach($_REQUEST['ma'] as $v) { + $a = unserialize(htmlspecialchars_decode($v, ENT_QUOTES)); + echo "

", sprintf($lang['strconfclustertable'], $misc->printVal($a['table'])), "

\n"; + echo "\n"; + } + } // END if multi cluster + else { + $misc->printTrail($type); + $misc->printTitle($lang['strclusterindex'], 'pg.index.cluster'); + + echo "\n"; + + if ($type == 'table') { + echo "

", sprintf($lang['strconfclustertable'], $misc->printVal($_REQUEST['object'])), "

\n"; + echo "\n"; + } + else { + echo "

", sprintf($lang['strconfclusterdatabase'], $misc->printVal($_REQUEST['object'])), "

\n"; + echo "\n"; + } + } + echo "\n"; + + echo $misc->form; + + echo "\n"; //TODO + echo "\n"; + echo "
\n"; + } // END single cluster + else { + //If multi table cluster + if ($type == 'table') { // cluster one or more table + if (is_array($_REQUEST['table'])) { + $msg=''; + foreach($_REQUEST['table'] as $o) { + $status = $data->clusterIndex($o); + if ($status == 0) + $msg.= sprintf('%s: %s
', htmlentities($o, ENT_QUOTES, 'UTF-8'), $lang['strclusteredgood']); + else { + doDefault($type, sprintf('%s%s: %s
', $msg, htmlentities($o, ENT_QUOTES, 'UTF-8'), $lang['strclusteredbad'])); + return; + } + } + // Everything went fine, back to the Default page.... + doDefault($msg); + } + else { + $status = $data->clusterIndex($_REQUEST['object']); + if ($status == 0) { + doAdmin($type, $lang['strclusteredgood']); + } + else + doAdmin($type, $lang['strclusteredbad']); + } + } + else { // Cluster all tables in database + $status = $data->clusterIndex(); + if ($status == 0) { + doAdmin($type, $lang['strclusteredgood']); + } + else + doAdmin($type, $lang['strclusteredbad']); + } + } + } + + /** + * Show confirmation of reindex and perform reindex + */ + function doReindex($type, $confirm=false) { + global $script, $data, $misc, $lang, $_reload_browser; + + if (($type == 'table') && empty($_REQUEST['table']) && empty($_REQUEST['ma'])) { + doDefault($lang['strspecifytabletoreindex']); + return; + } + + if ($confirm) { + if (isset($_REQUEST['ma'])) { + $misc->printTrail('schema'); + $misc->printTitle($lang['strreindex'], 'pg.reindex'); + + echo "
\n"; + foreach($_REQUEST['ma'] as $v) { + $a = unserialize(htmlspecialchars_decode($v, ENT_QUOTES)); + echo "

", sprintf($lang['strconfreindextable'], $misc->printVal($a['table'])), "

\n"; + echo "\n"; + } + } // END if multi reindex + else { + $misc->printTrail($type); + $misc->printTitle($lang['strreindex'], 'pg.reindex'); + + echo "\n"; + + if ($type == 'table') { + echo "

", sprintf($lang['strconfreindextable'], $misc->printVal($_REQUEST['object'])), "

\n"; + echo "\n"; + } + else { + echo "

", sprintf($lang['strconfreindexdatabase'], $misc->printVal($_REQUEST['object'])), "

\n"; + echo "\n"; + } + } + echo "\n"; + + if ($data->hasForceReindex()) + echo "

\n"; + + echo $misc->form; + + echo "\n"; //TODO + echo "\n"; + echo "
\n"; + } // END single reindex + else { + //If multi table reindex + if (($type == 'table') && is_array($_REQUEST['table'])) { + $msg=''; + foreach($_REQUEST['table'] as $o) { + $status = $data->reindex(strtoupper($type), $o, isset($_REQUEST['reindex_force'])); + if ($status == 0) + $msg.= sprintf('%s: %s
', htmlentities($o, ENT_QUOTES, 'UTF-8'), $lang['strreindexgood']); + else { + doDefault($type, sprintf('%s%s: %s
', $msg, htmlentities($o, ENT_QUOTES, 'UTF-8'), $lang['strreindexbad'])); + return; + } + } + // Everything went fine, back to the Default page.... + $_reload_browser = true; + doDefault($msg); + } + else { + $status = $data->reindex(strtoupper($type), $_REQUEST['object'], isset($_REQUEST['reindex_force'])); + if ($status == 0) { + $_reload_browser = true; + doAdmin($type, $lang['strreindexgood']); + } + else + doAdmin($type, $lang['strreindexbad']); + } + } + } + + /** + * Show confirmation of analyze and perform analyze + */ + function doAnalyze($type, $confirm=false) { + global $script, $data, $misc, $lang, $_reload_browser; + + if (($type == 'table') && empty($_REQUEST['table']) && empty($_REQUEST['ma'])) { + doDefault($lang['strspecifytabletoanalyze']); + return; + } + + if ($confirm) { + if (isset($_REQUEST['ma'])) { + $misc->printTrail('schema'); + $misc->printTitle($lang['stranalyze'], 'pg.analyze'); + + echo "
\n"; + foreach($_REQUEST['ma'] as $v) { + $a = unserialize(htmlspecialchars_decode($v, ENT_QUOTES)); + echo "

", sprintf($lang['strconfanalyzetable'], $misc->printVal($a['table'])), "

\n"; + echo "\n"; + } + } // END if multi analyze + else { + $misc->printTrail($type); + $misc->printTitle($lang['stranalyze'], 'pg.analyze'); + + echo "\n"; + + if ($type == 'table') { + echo "

", sprintf($lang['strconfanalyzetable'], $misc->printVal($_REQUEST['object'])), "

\n"; + echo "\n"; + } + else { + echo "

", sprintf($lang['strconfanalyzedatabase'], $misc->printVal($_REQUEST['object'])), "

\n"; + echo "\n"; + } + } + echo "\n"; + echo $misc->form; + + echo "\n"; //TODO + echo "\n"; + echo "
\n"; + } // END single analyze + else { + //If multi table analyze + if (($type == 'table') && is_array($_REQUEST['table'])) { + $msg=''; + foreach($_REQUEST['table'] as $o) { + $status = $data->analyzeDB($o); + if ($status == 0) + $msg.= sprintf('%s: %s
', htmlentities($o, ENT_QUOTES, 'UTF-8'), $lang['stranalyzegood']); + else { + doDefault($type, sprintf('%s%s: %s
', $msg, htmlentities($o, ENT_QUOTES, 'UTF-8'), $lang['stranalyzebad'])); + return; + } + } + // Everything went fine, back to the Default page.... + $_reload_browser = true; + doDefault($msg); + } + else { + //we must pass table here. When empty, analyze the whole db + $status = $data->analyzeDB($_REQUEST['table']); + if ($status == 0) { + $_reload_browser = true; + doAdmin($type, $lang['stranalyzegood']); + } + else + doAdmin($type, $lang['stranalyzebad']); + } + } + } + + /** + * Show confirmation of vacuum and perform actual vacuum + */ + function doVacuum($type, $confirm = false) { + global $script, $data, $misc, $lang, $_reload_browser; + + if (($type == 'table') && empty($_REQUEST['table']) && empty($_REQUEST['ma'])) { + doDefault($lang['strspecifytabletovacuum']); + return; + } + + if ($confirm) { + if (isset($_REQUEST['ma'])) { + $misc->printTrail('schema'); + $misc->printTitle($lang['strvacuum'], 'pg.vacuum'); + + echo "
\n"; + foreach($_REQUEST['ma'] as $v) { + $a = unserialize(htmlspecialchars_decode($v, ENT_QUOTES)); + echo "

", sprintf($lang['strconfvacuumtable'], $misc->printVal($a['table'])), "

\n"; + echo "\n"; + } + } // END if multi vacuum + else { + $misc->printTrail($type); + $misc->printTitle($lang['strvacuum'], 'pg.vacuum'); + + echo "\n"; + + if ($type == 'table') { + echo "

", sprintf($lang['strconfvacuumtable'], $misc->printVal($_REQUEST['object'])), "

\n"; + echo "\n"; + } + else { + echo "

", sprintf($lang['strconfvacuumdatabase'], $misc->printVal($_REQUEST['object'])), "

\n"; + echo "\n"; + } + } + echo "\n"; + echo $misc->form; + echo "

\n"; + echo "

\n"; + echo "

\n"; + echo "\n"; + echo "\n"; + echo "
\n"; + } // END single vacuum + else { + //If multi drop + if (is_array($_REQUEST['table'])) { + $msg=''; + foreach($_REQUEST['table'] as $t) { + $status = $data->vacuumDB($t, isset($_REQUEST['vacuum_analyze']), isset($_REQUEST['vacuum_full']), isset($_REQUEST['vacuum_freeze'])); + if ($status == 0) + $msg.= sprintf('%s: %s
', htmlentities($t, ENT_QUOTES, 'UTF-8'), $lang['strvacuumgood']); + else { + doDefault($type, sprintf('%s%s: %s
', $msg, htmlentities($t, ENT_QUOTES, 'UTF-8'), $lang['strvacuumbad'])); + return; + } + } + // Everything went fine, back to the Default page.... + $_reload_browser = true; + doDefault($msg); + } + else { + //we must pass table here. When empty, vacuum the whole db + $status = $data->vacuumDB($_REQUEST['table'], isset($_REQUEST['vacuum_analyze']), isset($_REQUEST['vacuum_full']), isset($_REQUEST['vacuum_freeze'])); + if ($status == 0) { + $_reload_browser = true; + doAdmin($type, $lang['strvacuumgood']); + } + else + doAdmin($type, $lang['strvacuumbad']); + } + } + } + + /** + * Add or Edit autovacuum params and save them + */ + function doEditAutovacuum($type, $confirm, $msg='') { + global $script, $data, $misc, $lang; + + if (empty($_REQUEST['table'])) { + doAdmin($type, '', $lang['strspecifyeditvacuumtable']); + return; + } + + $script = ($type == 'database')? 'database.php' : 'tables.php'; + + if ($confirm) { + $misc->printTrail($type); + $misc->printTitle(sprintf($lang['streditvacuumtable'], $misc->printVal($_REQUEST['table']))); + $misc->printMsg(sprintf($msg, $misc->printVal($_REQUEST['table']))); + + if (empty($_REQUEST['table'])) { + doAdmin($type, '', $lang['strspecifyeditvacuumtable']); + return; + } + + $old_val = $data->getTableAutovacuum($_REQUEST['table']); + $defaults = $data->getAutovacuum(); + $old_val = $old_val->fields; + + if (isset($old_val['autovacuum_enabled']) and ($old_val['autovacuum_enabled'] == 'off')) { + $enabled = ''; + $disabled = 'checked="checked"'; + } + else { + $enabled = 'checked="checked"'; + $disabled = ''; + } + + if (!isset($old_val['autovacuum_vacuum_threshold'])) $old_val['autovacuum_vacuum_threshold'] = ''; + if (!isset($old_val['autovacuum_vacuum_scale_factor'])) $old_val['autovacuum_vacuum_scale_factor'] = ''; + if (!isset($old_val['autovacuum_analyze_threshold'])) $old_val['autovacuum_analyze_threshold'] = ''; + if (!isset($old_val['autovacuum_analyze_scale_factor'])) $old_val['autovacuum_analyze_scale_factor'] = ''; + if (!isset($old_val['autovacuum_vacuum_cost_delay'])) $old_val['autovacuum_vacuum_cost_delay'] = ''; + if (!isset($old_val['autovacuum_vacuum_cost_limit'])) $old_val['autovacuum_vacuum_cost_limit'] = ''; + + echo "
\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + + echo "
\n
\n\n"; + echo "\t\n"; + echo "\n"; + echo "\t\n"; + echo "\n"; + echo "\n"; + echo "\t\n"; + echo "\n"; + echo "\n"; + echo "\t\n"; + echo "\n"; + echo "\n"; + echo "\t\n"; + echo "\n"; + echo "\n"; + echo "\t\n"; + echo "\n"; + echo "\n"; + echo "\t\n"; + echo "\n"; + echo "\n"; + echo "\t\n"; + echo "\n"; + echo "\n"; + echo "
 {$lang['strnewvalues']}{$lang['strdefaultvalues']}
{$lang['strenable']}\n"; + echo "\n"; + echo "{$defaults['autovacuum']}
{$lang['strvacuumbasethreshold']}{$defaults['autovacuum_vacuum_threshold']}
{$lang['strvacuumscalefactor']}{$defaults['autovacuum_vacuum_scale_factor']}
{$lang['stranalybasethreshold']}{$defaults['autovacuum_analyze_threshold']}
{$lang['stranalyzescalefactor']}{$defaults['autovacuum_analyze_scale_factor']}
{$lang['strvacuumcostdelay']}{$defaults['autovacuum_vacuum_cost_delay']}
{$lang['strvacuumcostlimit']}{$defaults['autovacuum_vacuum_cost_limit']}
\n"; + echo "
"; + echo "
"; + echo "\n"; + echo "

\n"; + + echo "
\n"; + } + else { + $status = $data->saveAutovacuum($_REQUEST['table'], $_POST['autovacuum_enabled'], $_POST['autovacuum_vacuum_threshold'], + $_POST['autovacuum_vacuum_scale_factor'], $_POST['autovacuum_analyze_threshold'], $_POST['autovacuum_analyze_scale_factor'], + $_POST['autovacuum_vacuum_cost_delay'], $_POST['autovacuum_vacuum_cost_limit']); + + if ($status == 0) + doAdmin($type, '', sprintf($lang['strsetvacuumtablesaved'], $_REQUEST['table'])); + else + doEditAutovacuum($type, true, $lang['strsetvacuumtablefail']); + } + } + + /** + * confirm drop autovacuum params for a table and drop it + */ + function doDropAutovacuum($type, $confirm) { + global $script, $data, $misc, $lang; + + if (empty($_REQUEST['table'])) { + doAdmin($type, '', $lang['strspecifydelvacuumtable']); + return; + } + + if ($confirm) { + $misc->printTrail($type); + $misc->printTabs($type,'admin'); + + $script = ($type == 'database')? 'database.php' : 'tables.php'; + + printf("

{$lang['strdelvacuumtable']}

\n", + $misc->printVal("\"{$_GET['schema']}\".\"{$_GET['table']}\"")); + + echo "
\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "\n"; + echo "
\n"; + + echo "
\n"; + echo "\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "
\n"; + } + else { + + $status = $data->dropAutovacuum($_POST['table']); + + if ($status == 0) { + doAdmin($type, '', sprintf($lang['strvacuumtablereset'], $misc->printVal($_POST['table']))); + } + else + doAdmin($type, '', sprintf($lang['strdelvacuumtablefail'], $misc->printVal($_POST['table']))); + } + } + + /** + * database/table administration and tuning tasks + * + * $Id: admin.php + */ + + function doAdmin($type, $msg = '') { + global $script, $data, $misc, $lang; + + $misc->printTrail($type); + $misc->printTabs($type,'admin'); + $misc->printMsg($msg); + + if ($type == 'database') + printf("

{$lang['stradminondatabase']}

\n", $misc->printVal($_REQUEST['object'])); + else + printf("

{$lang['stradminontable']}

\n", $misc->printVal($_REQUEST['object'])); + + echo "\n"; + echo "\n"; + echo "\n"; + echo ""; + echo ""; + if ($data->hasRecluster()){ + echo ""; + } + echo ""; + echo ""; + + // Vacuum + echo "\n"; + echo "\n"; + + // Analyze + echo "\n"; + + // Cluster + if ($data->hasRecluster()){ + $disabled = ''; + echo "\n"; + } + + // Reindex + echo "\n"; + echo "\n"; + echo "
"; + $misc->printHelp($lang['strvacuum'],'pg.admin.vacuum').""; + $misc->printHelp($lang['stranalyze'],'pg.admin.analyze'); + echo ""; + $misc->printHelp($lang['strclusterindex'],'pg.index.cluster'); + echo ""; + $misc->printHelp($lang['strreindex'],'pg.index.reindex'); + echo "
\n"; + echo "
\n"; + + echo "

\n"; + echo $misc->form; + if ($type == 'table') { + echo "\n"; + echo "\n"; + } + echo "

\n"; + echo "
\n"; + echo "
\n"; + echo "
\n"; + echo "

\n"; + echo $misc->form; + if ($type == 'table') { + echo "\n"; + echo "\n"; + } + echo "

\n"; + echo "
\n"; + echo "
\n"; + echo "
\n"; + echo $misc->form; + if ($type == 'table') { + echo "\n"; + echo "\n"; + if (!$data->alreadyClustered($_REQUEST['object'])) { + $disabled = 'disabled="disabled" '; + echo "{$lang['strnoclusteravailable']}
"; + } + } + echo "

\n"; + echo "

\n"; + echo "
\n"; + echo "
\n"; + echo "
\n"; + echo "

\n"; + echo $misc->form; + if ($type == 'table') { + echo "\n"; + echo "\n"; + } + echo "

\n"; + echo "
\n"; + echo "
\n"; + + // Autovacuum + if($data->hasAutovacuum()) { + // get defaults values for autovacuum + $defaults = $data->getAutovacuum(); + // Fetch the autovacuum properties from the database or table if != '' + if ($type == 'table') $autovac = $data->getTableAutovacuum($_REQUEST['table']); + else $autovac = $data->getTableAutovacuum(); + + echo "

{$lang['strvacuumpertable']}

"; + echo '

' . (($defaults['autovacuum'] == 'on') ? $lang['strturnedon'] : $lang['strturnedoff'] ) . '

'; + echo "

{$lang['strnotdefaultinred']}

"; + + function enlight($f, $p) { + if ( isset($f[$p[0]]) and ($f[$p[0]] != $p[1])) + return "". htmlspecialchars($f[$p[0]]) .""; + return htmlspecialchars($p[1]); + } + + $columns = array( + 'namespace' => array( + 'title' => $lang['strschema'], + 'field' => field('nspname'), + 'url' => "redirect.php?subject=schema&{$misc->href}&", + 'vars' => array('schema' => 'nspname'), + ), + 'relname' => array( + 'title' => $lang['strtable'], + 'field' => field('relname'), + 'url' => "redirect.php?subject=table&{$misc->href}&", + 'vars' => array('table' => 'relname', 'schema' => 'nspname'), + ), + 'autovacuum_enabled' => array( + 'title' => $lang['strenabled'], + 'field' => callback('enlight', array('autovacuum_enabled', $defaults['autovacuum'])), + 'type' => 'verbatim' + ), + 'autovacuum_vacuum_threshold' => array( + 'title' => $lang['strvacuumbasethreshold'], + 'field' => callback('enlight', array('autovacuum_vacuum_threshold', $defaults['autovacuum_vacuum_threshold'])), + 'type' => 'verbatim' + ), + 'autovacuum_vacuum_scale_factor' => array( + 'title' => $lang['strvacuumscalefactor'], + 'field' => callback('enlight', array('autovacuum_vacuum_scale_factor', $defaults['autovacuum_vacuum_scale_factor'])), + 'type' => 'verbatim' + ), + 'autovacuum_analyze_threshold' => array( + 'title' => $lang['stranalybasethreshold'], + 'field' => callback('enlight', array('autovacuum_analyze_threshold', $defaults['autovacuum_analyze_threshold'])), + 'type' => 'verbatim' + ), + 'autovacuum_analyze_scale_factor' => array( + 'title' => $lang['stranalyzescalefactor'], + 'field' => callback('enlight', array('autovacuum_analyze_scale_factor', $defaults['autovacuum_analyze_scale_factor'])), + 'type' => 'verbatim' + ), + 'autovacuum_vacuum_cost_delay' => array( + 'title' => $lang['strvacuumcostdelay'], + 'field' => concat(callback('enlight', array('autovacuum_vacuum_cost_delay', $defaults['autovacuum_vacuum_cost_delay'])), 'ms'), + 'type' => 'verbatim' + ), + 'autovacuum_vacuum_cost_limit' => array( + 'title' => $lang['strvacuumcostlimit'], + 'field' => callback('enlight', array('autovacuum_vacuum_cost_limit', $defaults['autovacuum_vacuum_cost_limit'])), + 'type' => 'verbatim' + ), + ); + + // Maybe we need to check permissions here? + $columns['actions'] = array('title' => $lang['stractions']); + + $actions = array( + 'edit' => array( + 'content' => $lang['stredit'], + 'attr'=> array ( + 'href' => array ( + 'url' => $script, + 'urlvars' => array ( + 'subject' => $type, + 'action' => 'confeditautovac', + 'schema' => field('nspname'), + 'table' => field('relname') + ) + ) + ) + ), + 'delete' => array( + 'content' => $lang['strdelete'], + 'attr'=> array ( + 'href' => array ( + 'url' => $script, + 'urlvars' => array ( + 'subject' => $type, + 'action' => 'confdelautovac', + 'schema' => field('nspname'), + 'table' => field('relname') + ) + ) + ) + ) + ); + + if ($type == 'table') { + unset($actions['edit']['vars']['schema'], + $actions['delete']['vars']['schema'], + $columns['namespace'], + $columns['relname'] + ); + } + + $misc->printTable($autovac, $columns, $actions, 'admin-admin', $lang['strnovacuumconf']); + + if (($type == 'table') and ($autovac->recordCount() == 0)) { + echo "
"; + echo "href}&table=", htmlspecialchars($_REQUEST['table']) + ,"\">{$lang['straddvacuumtable']}"; + } + } + } + + function adminActions($action, $type) { + global $script; + + if ($type == 'database') { + $_REQUEST['object'] = $_REQUEST['database']; + $script = 'database.php'; + } + else { + // $_REQUEST['table'] is no set if we are in the schema page + $_REQUEST['object'] = (isset($_REQUEST['table']) ? $_REQUEST['table']:''); + $script = 'tables.php'; + } + + switch ($action) { + case 'confirm_cluster': + doCluster($type, true); + break; + case 'confirm_reindex': + doReindex($type, true); + break; + case 'confirm_analyze': + doAnalyze($type, true); + break; + case 'confirm_vacuum': + doVacuum($type, true); + break; + case 'cluster': + if (isset($_POST['cluster'])) doCluster($type); + // if multi-action from table canceled: back to the schema default page + else if (($type == 'table') && is_array($_REQUEST['object']) ) doDefault(); + else doAdmin($type); + break; + case 'reindex': + if (isset($_POST['reindex'])) doReindex($type); + // if multi-action from table canceled: back to the schema default page + else if (($type == 'table') && is_array($_REQUEST['object']) ) doDefault(); + else doAdmin($type); + break; + case 'analyze': + if (isset($_POST['analyze'])) doAnalyze($type); + // if multi-action from table canceled: back to the schema default page + else if (($type == 'table') && is_array($_REQUEST['object']) ) doDefault(); + else doAdmin($type); + break; + case 'vacuum': + if (isset($_POST['vacuum'])) doVacuum($type); + // if multi-action from table canceled: back to the schema default page + else if (($type == 'table') && is_array($_REQUEST['object']) ) doDefault(); + else doAdmin($type); + break; + case 'admin': + doAdmin($type); + break; + case 'confeditautovac': + doEditAutovacuum($type, true); + break; + case 'confdelautovac': + doDropAutovacuum($type, true); + break; + case 'confaddautovac': + doAddAutovacuum(true); + break; + case 'editautovac': + if (isset($_POST['save'])) doEditAutovacuum($type, false); + else doAdmin($type); + break; + case 'delautovac': + doDropAutovacuum($type, false); + break; + default: + return false; + } + return true; + } + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/aggregates.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/aggregates.php new file mode 100644 index 00000000..5356e02c --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/aggregates.php @@ -0,0 +1,462 @@ +createAggregate($_REQUEST['name'], $_REQUEST['basetype'], $_REQUEST['sfunc'], $_REQUEST['stype'], + $_REQUEST['ffunc'], $_REQUEST['initcond'], $_REQUEST['sortop'], $_REQUEST['aggrcomment']); + + if ($status == 0) { + $_reload_browser = true; + doDefault($lang['straggrcreated']); + } + else { + doCreate($lang['straggrcreatedbad']); + } + } + + /** + * Displays a screen for create a new aggregate function + */ + function doCreate($msg = '') { + global $data, $misc; + global $lang; + + if (!isset($_REQUEST['name'])) $_REQUEST['name'] = ''; + if (!isset($_REQUEST['basetype'])) $_REQUEST['basetype'] = ''; + if (!isset($_REQUEST['sfunc'])) $_REQUEST['sfunc'] = ''; + if (!isset($_REQUEST['stype'])) $_REQUEST['stype'] = ''; + if (!isset($_REQUEST['ffunc'])) $_REQUEST['ffunc'] = ''; + if (!isset($_REQUEST['initcond'])) $_REQUEST['initcond'] = ''; + if (!isset($_REQUEST['sortop'])) $_REQUEST['sortop'] = ''; + if (!isset($_REQUEST['aggrcomment'])) $_REQUEST['aggrcomment'] = ''; + + $misc->printTrail('schema'); + $misc->printTitle($lang['strcreateaggregate'], 'pg.aggregate.create'); + $misc->printMsg($msg); + + echo "
\n"; + echo "\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + + echo "
{$lang['strname']}_maxNameLen}\" value=\"", + htmlspecialchars($_REQUEST['name']), "\" />
{$lang['straggrbasetype']}_maxNameLen}\" value=\"", + htmlspecialchars($_REQUEST['basetype']), "\" />
{$lang['straggrsfunc']}_maxNameLen}\" value=\"", + htmlspecialchars($_REQUEST['sfunc']), "\" />
{$lang['straggrstype']}_maxNameLen}\" value=\"", + htmlspecialchars($_REQUEST['stype']), "\" />
{$lang['straggrffunc']}_maxNameLen}\" value=\"", + htmlspecialchars($_REQUEST['ffunc']), "\" />
{$lang['straggrinitcond']}_maxNameLen}\" value=\"", + htmlspecialchars($_REQUEST['initcond']), "\" />
{$lang['straggrsortop']}_maxNameLen}\" value=\"", + htmlspecialchars($_REQUEST['sortop']), "\" />
{$lang['strcomment']}
\n"; + echo "

\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + + /** + * Function to save after altering an aggregate + */ + function doSaveAlter() { + global $data, $lang; + + // Check inputs + if (trim($_REQUEST['aggrname']) == '') { + doAlter($lang['straggrneedsname']); + return; + } + + $status = $data->alterAggregate($_REQUEST['aggrname'], $_REQUEST['aggrtype'], $_REQUEST['aggrowner'], + $_REQUEST['aggrschema'], $_REQUEST['aggrcomment'], $_REQUEST['newaggrname'], $_REQUEST['newaggrowner'], + $_REQUEST['newaggrschema'], $_REQUEST['newaggrcomment']); + if ($status == 0) + doDefault($lang['straggraltered']); + else { + doAlter($lang['straggralteredbad']); + return; + } + } + + + /** + * Function to allow editing an aggregate function + */ + function doAlter($msg = '') { + global $data, $misc; + global $lang; + + $misc->printTrail('aggregate'); + $misc->printTitle($lang['stralter'], 'pg.aggregate.alter'); + $misc->printMsg($msg); + + echo "
\n"; + $aggrdata = $data->getAggregate($_REQUEST['aggrname'], $_REQUEST['aggrtype']); + if($aggrdata->recordCount() > 0 ) { + // Output table header + echo "\n"; + echo "\t\n\t\t"; + echo ""; + echo "\n\t\n"; + + // Display aggregate's name, owner and schema + echo "\t\n\t\t"; + echo ""; + echo "\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "
{$lang['strname']}{$lang['strowner']}{$lang['strschema']}
fields['usename']), "\" />
{$lang['strcomment']}
\n"; + echo "

\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "fields['usename']), "\" />\n"; + echo "\n"; + echo "fields['aggrcomment']), "\" />\n"; + echo "\n"; + echo "

\n"; + } else { + echo "

{$lang['strnodata']}

\n"; + echo "

\n"; + } + echo "
\n"; + } + + /** + * Show confirmation of drop and perform actual drop of the aggregate function selected + */ + function doDrop($confirm) { + global $data, $misc; + global $lang, $_reload_browser; + + if ($confirm) { + $misc->printTrail('aggregate'); + $misc->printTitle($lang['strdrop'], 'pg.aggregate.drop'); + + echo "

", sprintf($lang['strconfdropaggregate'], htmlspecialchars($_REQUEST['aggrname'])), "

\n"; + + echo "
\n"; + echo "

\n"; + echo "

\n"; + echo "\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + else { + $status = $data->dropAggregate($_POST['aggrname'], $_POST['aggrtype'], isset($_POST['cascade'])); + if ($status == 0) { + $_reload_browser = true; + doDefault($lang['straggregatedropped']); + } + else + doDefault($lang['straggregatedroppedbad']); + } + } + + /** + * Show the properties of an aggregate + */ + function doProperties($msg = '') { + global $data, $misc; + global $lang; + + $misc->printTrail('aggregate'); + $misc->printTitle($lang['strproperties'],'pg.aggregate'); + $misc->printMsg($msg); + + $aggrdata = $data->getAggregate($_REQUEST['aggrname'], $_REQUEST['aggrtype']); + + if($aggrdata->recordCount() > 0 ) { + // Display aggregate's info + echo "\n"; + echo "\n\t\n"; + echo "\t\n\n"; + echo "\n\t\n"; + echo "\t\n\n"; + echo "\n\t\n"; + echo "\t\n\n"; + echo "\n\t\n"; + echo "\t\n\n"; + echo "\n\t\n"; + echo "\t\n\n"; + echo "\n\t\n"; + echo "\t\n\n"; + if($data->hasAggregateSortOp()) { + echo "\n\t\n"; + echo "\t\n\n"; + } + echo "\n\t\n"; + echo "\t\n\n"; + echo "\n\t\n"; + echo "\t\n\n"; + echo "
{$lang['strname']}", htmlspecialchars($_REQUEST['aggrname']), "
{$lang['straggrbasetype']}", htmlspecialchars($_REQUEST['aggrtype']), "
{$lang['straggrsfunc']}", htmlspecialchars($aggrdata->fields['aggtransfn']), "
{$lang['straggrstype']}", htmlspecialchars($aggrdata->fields['aggstype']), "
{$lang['straggrffunc']}", htmlspecialchars($aggrdata->fields['aggfinalfn']), "
{$lang['straggrinitcond']}", htmlspecialchars($aggrdata->fields['agginitval']), "
{$lang['straggrsortop']}", htmlspecialchars($aggrdata->fields['aggsortop']), "
{$lang['strowner']}", htmlspecialchars($aggrdata->fields['usename']), "
{$lang['strcomment']}", $misc->printVal($aggrdata->fields['aggrcomment']), "
\n"; + } + else echo "

{$lang['strnodata']}

\n"; + + $navlinks = array ( + 'showall' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'aggregates.php', + 'urlvars' => array ( + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'] + ) + ) + ), + 'content' => $lang['straggrshowall'] + ) + ); + + if ($data->hasAlterAggregate()) { + $navlinks['alter'] = array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'aggregates.php', + 'urlvars' => array ( + 'action' => 'alter', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'aggrname' => $_REQUEST['aggrname'], + 'aggrtype' => $_REQUEST['aggrtype'] + ) + ) + ), + 'content' => $lang['stralter'] + ); + } + + $navlinks['drop'] = array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'aggregates.php', + 'urlvars' => array ( + 'action' => 'confirm_drop', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'aggrname' => $_REQUEST['aggrname'], + 'aggrtype' => $_REQUEST['aggrtype'] + ) + ) + ), + 'content' => $lang['strdrop'] + ); + + $misc->printNavLinks($navlinks, 'aggregates-properties', get_defined_vars()); + } + + + /** + * Show default list of aggregate functions in the database + */ + function doDefault($msg = '') { + global $data, $conf, $misc; + global $lang; + + $misc->printTrail('schema'); + $misc->printTabs('schema', 'aggregates'); + $misc->printMsg($msg); + + $aggregates = $data->getAggregates(); + + $columns = array( + 'aggrname' => array( + 'title' => $lang['strname'], + 'field' => field('proname'), + 'url' => "redirect.php?subject=aggregate&action=properties&{$misc->href}&", + 'vars' => array('aggrname' => 'proname', 'aggrtype' => 'proargtypes'), + ), + 'aggrtype' => array( + 'title' => $lang['strtype'], + 'field' => field('proargtypes'), + ), + 'aggrtransfn' => array( + 'title' => $lang['straggrsfunc'], + 'field' => field('aggtransfn'), + ), + 'owner' => array( + 'title' => $lang['strowner'], + 'field' => field('usename'), + ), + 'actions' => array( + 'title' => $lang['stractions'], + ), + 'comment' => array( + 'title' => $lang['strcomment'], + 'field' => field('aggrcomment'), + ), + ); + + $actions = array( + 'alter' => array( + 'content' => $lang['stralter'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'aggregates.php', + 'urlvars' => array ( + 'action' => 'alter', + 'aggrname' => field('proname'), + 'aggrtype' => field('proargtypes') + ) + ) + ) + ), + 'drop' => array( + 'content' => $lang['strdrop'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'aggregates.php', + 'urlvars' => array ( + 'action' => 'confirm_drop', + 'aggrname' => field('proname'), + 'aggrtype' => field('proargtypes') + ) + ) + ) + ) + ); + + if (!$data->hasAlterAggregate()) unset($actions['alter']); + $misc->printTable($aggregates, $columns, $actions, 'aggregates-aggregates', $lang['strnoaggregates']); + + $navlinks = array ( + 'create' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'aggregates.php', + 'urlvars' => array ( + 'action' => 'create', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + ) + ) + ), + 'content' => $lang['strcreateaggregate'] + ) + ); + $misc->printNavLinks($navlinks, 'aggregates-aggregates', get_defined_vars()); + } + + /** + * Generate XML for the browser tree. + */ + function doTree() { + global $misc, $data; + + $aggregates = $data->getAggregates(); + + $proto = concat(field('proname'), ' (', field('proargtypes'), ')'); + $reqvars = $misc->getRequestVars('aggregate'); + + $attrs = array( + 'text' => $proto, + 'icon' => 'Aggregate', + 'toolTip' => field('aggcomment'), + 'action' => url('redirect.php', + $reqvars, + array( + 'action' => 'properties', + 'aggrname' => field('proname'), + 'aggrtype' => field('proargtypes') + ) + ) + ); + + $misc->printTree($aggregates, $attrs, 'aggregates'); + exit; + } + + if ($action == 'tree') doTree(); + + $misc->printHeader($lang['straggregates']); + $misc->printBody(); + + switch ($action) { + case 'create': + doCreate(); + break; + case 'save_create': + if (isset($_POST['cancel'])) doDefault(); + else doSaveCreate(); + break; + case 'alter': + doAlter(); + break; + case 'save_alter': + if (isset($_POST['alter'])) doSaveAlter(); + else doProperties(); + break; + case 'drop': + if (isset($_POST['drop'])) doDrop(false); + else doDefault(); + break; + case 'confirm_drop': + doDrop(true); + break; + default: + doDefault(); + break; + case 'properties': + doProperties(); + break; + } + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/ajax-ac-insert.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/ajax-ac-insert.php new file mode 100644 index 00000000..20afbc75 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/ajax-ac-insert.php @@ -0,0 +1,92 @@ + $v) { + $fkeynames[$k] = html_entity_decode($v, ENT_QUOTES); + } + + $keyspos = array_combine($fkeynames, $_POST['keys']); + + $f_schema = html_entity_decode($_POST['f_schema'], ENT_QUOTES); + $data->fieldClean($f_schema); + $f_table = html_entity_decode($_POST['f_table'], ENT_QUOTES); + $data->fieldClean($f_table); + $f_attname = $fkeynames[$_POST['fattpos'][0]]; + $data->fieldClean($f_attname); + + $q = "SELECT * + FROM \"{$f_schema}\".\"{$f_table}\" + WHERE \"{$f_attname}\"::text LIKE '{$_POST['fvalue']}%' + ORDER BY \"{$f_attname}\" LIMIT 12 {$offset};"; + + $res = $data->selectSet($q); + + if (!$res->EOF) { + echo ""; + echo ''; + foreach (array_keys($res->fields) as $h) { + echo ''; + + } + echo "\n"; + $i=0; + while ((!$res->EOF) && ($i < 11)) { + $j=0; + echo ""; + foreach ($res->fields as $n => $v) { + $finfo = $res->fetchField($j++); + if (in_array($n, $fkeynames)) + echo ""; + else + echo ""; + } + echo "\n"; + $i++; + $res->moveNext(); + } + echo "
'; + + if (in_array($h, $fkeynames)) + echo '[referenced key]'; + + echo htmlentities($h, ENT_QUOTES, 'UTF-8'), '
", + $misc->printVal($v, $finfo->type, array('clip' => 'collapsed')), + "", + $misc->printVal($v, $finfo->type, array('clip' => 'collapsed')), + "
\n"; + + $page_tests=''; + + $js = ""; + } + else { + printf("

{$lang['strnofkref']}

", "\"{$_POST['f_schema']}\".\"{$_POST['f_table']}\".\"{$fkeynames[$_POST['fattpos']]}\""); + + if ($_POST['offset']) + echo "Prev <<"; + } +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/all_db.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/all_db.php new file mode 100644 index 00000000..181263ec --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/all_db.php @@ -0,0 +1,532 @@ +printTrail('database'); + $misc->printTitle($lang['stralter'], 'pg.database.alter'); + + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + + if ($data->hasAlterDatabaseOwner() && $data->isSuperUser()) { + // Fetch all users + + $rs = $data->getDatabaseOwner($_REQUEST['alterdatabase']); + $owner = isset($rs->fields['usename']) ? $rs->fields['usename'] : ''; + $users = $data->getUsers(); + + echo "\n"; + echo "\n"; + } + if ($data->hasSharedComments()){ + $rs = $data->getDatabaseComment($_REQUEST['alterdatabase']); + $comment = isset($rs->fields['description']) ? $rs->fields['description'] : ''; + echo "\n"; + echo "\n"; + } + echo "
{$lang['strname']}"; + echo "_maxNameLen}\" value=\"", + htmlspecialchars($_REQUEST['alterdatabase']), "\" />
{$lang['strowner']}
{$lang['strcomment']}"; + echo "
\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "\n"; + echo "
\n"; + } + else { + if (!isset($_POST['owner'])) $_POST['owner'] = ''; + if (!isset($_POST['dbcomment'])) $_POST['dbcomment'] = ''; + if ($data->alterDatabase($_POST['oldname'], $_POST['newname'], $_POST['owner'], $_POST['dbcomment']) == 0) { + $_reload_browser = true; + doDefault($lang['strdatabasealtered']); + } + else + doDefault($lang['strdatabasealteredbad']); + } + } + + /** + * Show confirmation of drop and perform actual drop + */ + function doDrop($confirm) { + global $data, $misc; + global $lang, $_reload_drop_database; + + if (empty($_REQUEST['dropdatabase']) && empty($_REQUEST['ma'])) { + doDefault($lang['strspecifydatabasetodrop']); + exit(); + } + + if ($confirm) { + + $misc->printTrail('database'); + $misc->printTitle($lang['strdrop'], 'pg.database.drop'); + + echo "
\n"; + //If multi drop + if (isset($_REQUEST['ma'])) { + + foreach($_REQUEST['ma'] as $v) { + $a = unserialize(htmlspecialchars_decode($v, ENT_QUOTES)); + echo "

", sprintf($lang['strconfdropdatabase'], $misc->printVal($a['database'])), "

\n"; + printf('', htmlspecialchars($a['database'])); + } + + } else { + echo "

", sprintf($lang['strconfdropdatabase'], $misc->printVal($_REQUEST['dropdatabase'])), "

\n"; + echo "\n"; + }// END if multi drop + + echo "\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "
\n"; + } // END confirm + else { + //If multi drop + if (is_array($_REQUEST['dropdatabase'])) { + $msg = ''; + foreach($_REQUEST['dropdatabase'] as $d) { + $status = $data->dropDatabase($d); + if ($status == 0) + $msg.= sprintf('%s: %s
', htmlentities($d, ENT_QUOTES, 'UTF-8'), $lang['strdatabasedropped']); + else { + doDefault(sprintf('%s%s: %s
', $msg, htmlentities($d, ENT_QUOTES, 'UTF-8'), $lang['strdatabasedroppedbad'])); + return; + } + }// Everything went fine, back to Default page... + $_reload_drop_database = true; + doDefault($msg); + } else { + $status = $data->dropDatabase($_POST['dropdatabase']); + if ($status == 0) { + $_reload_drop_database = true; + doDefault($lang['strdatabasedropped']); + } + else + doDefault($lang['strdatabasedroppedbad']); + } + }//END DROP + }// END FUNCTION + + + /** + * Displays a screen where they can enter a new database + */ + function doCreate($msg = '') { + global $data, $misc; + global $lang; + + $misc->printTrail('server'); + $misc->printTitle($lang['strcreatedatabase'], 'pg.database.create'); + $misc->printMsg($msg); + + if (!isset($_POST['formName'])) $_POST['formName'] = ''; + // Default encoding is that in language file + if (!isset($_POST['formEncoding'])) { + $_POST['formEncoding'] = ''; + } + if (!isset($_POST['formTemplate'])) $_POST['formTemplate'] = 'template1'; + if (!isset($_POST['formSpc'])) $_POST['formSpc'] = ''; + if (!isset($_POST['formComment'])) $_POST['formComment'] = ''; + + // Fetch a list of databases in the cluster + $templatedbs = $data->getDatabases(false); + + // Fetch all tablespaces from the database + if ($data->hasTablespaces()) $tablespaces = $data->getTablespaces(); + + echo "
\n"; + echo "\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + + // ENCODING + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + + if ($data->hasDatabaseCollation()) { + if (!isset($_POST['formCollate'])) $_POST['formCollate'] = ''; + if (!isset($_POST['formCType'])) $_POST['formCType'] = ''; + + // LC_COLLATE + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + + // LC_CTYPE + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + } + + // Tablespace (if there are any) + if ($data->hasTablespaces() && $tablespaces->recordCount() > 0) { + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + } + + // Comments (if available) + if ($data->hasSharedComments()) { + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + } + + echo "
{$lang['strname']}_maxNameLen}\" value=\"", + htmlspecialchars($_POST['formName']), "\" />
{$lang['strtemplatedb']}\n"; + echo "\t\t\t\n"; + echo "\t\t
{$lang['strencoding']}\n"; + echo "\t\t\t\n"; + echo "\t\t
{$lang['strcollation']}\n"; + echo "\t\t\t\n"; + echo "\t\t
{$lang['strctype']}\n"; + echo "\t\t\t\n"; + echo "\t\t
{$lang['strtablespace']}\n\t\t\t\n\t\t
{$lang['strcomment']}
\n"; + echo "

\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + + /** + * Actually creates the new view in the database + */ + function doSaveCreate() { + global $data, $lang, $_reload_browser; + + // Default tablespace to null if it isn't set + if (!isset($_POST['formSpc'])) $_POST['formSpc'] = null; + + // Default comment to blank if it isn't set + if (!isset($_POST['formComment'])) $_POST['formComment'] = null; + + // Default collate to blank if it isn't set + if (!isset($_POST['formCollate'])) $_POST['formCollate'] = null; + + // Default ctype to blank if it isn't set + if (!isset($_POST['formCType'])) $_POST['formCType'] = null; + + // Check that they've given a name and a definition + if ($_POST['formName'] == '') doCreate($lang['strdatabaseneedsname']); + else { + $status = $data->createDatabase($_POST['formName'], $_POST['formEncoding'], $_POST['formSpc'], + $_POST['formComment'], $_POST['formTemplate'], $_POST['formCollate'], $_POST['formCType']); + if ($status == 0) { + $_reload_browser = true; + doDefault($lang['strdatabasecreated']); + } + else + doCreate($lang['strdatabasecreatedbad']); + } + } + + /** + * Displays options for cluster download + */ + function doExport($msg = '') { + global $data, $misc; + global $lang; + + $misc->printTrail('server'); + $misc->printTabs('server','export'); + $misc->printMsg($msg); + + echo "
\n"; + echo "\n"; + echo "\n"; + // Data only + echo "\n"; + echo "\n\n"; + echo "\n\n"; + // Structure only + echo "\n"; + echo "\n\n"; + // Structure and data + echo "\n"; + echo "\n\n"; + echo "\n\n"; + echo "\n\n"; + echo "
{$lang['strformat']}{$lang['stroptions']}
"; + echo "{$lang['strformat']}\n"; + echo "\n
"; + echo "{$lang['strformat']}\n"; + echo "\n
\n"; + + echo "

{$lang['stroptions']}

\n"; + echo "

\n"; + echo "

\n"; + + echo "

\n"; + echo "\n"; + echo $misc->form; + echo "

\n"; + echo "
\n"; + } + + /** + * Show default list of databases in the server + */ + function doDefault($msg = '') { + global $data, $conf, $misc; + global $lang; + + $misc->printTrail('server'); + $misc->printTabs('server','databases'); + $misc->printMsg($msg); + + $databases = $data->getDatabases(); + + $columns = array( + 'database' => array( + 'title' => $lang['strdatabase'], + 'field' => field('datname'), + 'url' => "redirect.php?subject=database&{$misc->href}&", + 'vars' => array('database' => 'datname'), + ), + 'owner' => array( + 'title' => $lang['strowner'], + 'field' => field('datowner'), + ), + 'encoding' => array( + 'title' => $lang['strencoding'], + 'field' => field('datencoding'), + ), + 'lc_collate' => array( + 'title' => $lang['strcollation'], + 'field' => field('datcollate'), + ), + 'lc_ctype' => array( + 'title' => $lang['strctype'], + 'field' => field('datctype'), + ), + 'tablespace' => array( + 'title' => $lang['strtablespace'], + 'field' => field('tablespace'), + ), + 'dbsize' => array( + 'title' => $lang['strsize'], + 'field' => field('dbsize'), + 'type' => 'prettysize', + ), + 'actions' => array( + 'title' => $lang['stractions'], + ), + 'comment' => array( + 'title' => $lang['strcomment'], + 'field' => field('datcomment'), + ), + ); + + $actions = array( + 'multiactions' => array( + 'keycols' => array('database' => 'datname'), + 'url' => 'all_db.php', + 'default' => null, + ), + 'drop' => array( + 'content' => $lang['strdrop'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'all_db.php', + 'urlvars' => array ( + 'subject' => 'database', + 'action' => 'confirm_drop', + 'dropdatabase' => field('datname') + ) + ) + ), + 'multiaction' => 'confirm_drop', + ), + 'privileges' => array( + 'content' => $lang['strprivileges'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'privileges.php', + 'urlvars' => array ( + 'subject' => 'database', + 'database' => field('datname') + ) + ) + ) + ) + ); + if ($data->hasAlterDatabase() ) { + $actions['alter'] = array( + 'content' => $lang['stralter'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'all_db.php', + 'urlvars' => array ( + 'subject' => 'database', + 'action' => 'confirm_alter', + 'alterdatabase' => field('datname') + ) + ) + ) + ); + } + + if (!$data->hasTablespaces()) unset($columns['tablespace']); + if (!$data->hasServerAdminFuncs()) unset($columns['dbsize']); + if (!$data->hasDatabaseCollation()) unset($columns['lc_collate'], $columns['lc_ctype']); + if (!isset($data->privlist['database'])) unset($actions['privileges']); + + $misc->printTable($databases, $columns, $actions, 'all_db-databases', $lang['strnodatabases']); + + $navlinks = array ( + 'create' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'all_db.php', + 'urlvars' => array ( + 'action' => 'create', + 'server' => $_REQUEST['server'] + ) + ) + ), + 'content' => $lang['strcreatedatabase'] + ) + ); + $misc->printNavLinks($navlinks, 'all_db-databases', get_defined_vars()); + } + + function doTree() { + global $misc, $data, $lang; + + $databases = $data->getDatabases(); + + $reqvars = $misc->getRequestVars('database'); + + $attrs = array( + 'text' => field('datname'), + 'icon' => 'Database', + 'toolTip'=> field('datcomment'), + 'action' => url('redirect.php', + $reqvars, + array('database' => field('datname')) + ), + 'branch' => url('database.php', + $reqvars, + array( + 'action' => 'tree', + 'database' => field('datname') + ) + ), + ); + + $misc->printTree($databases, $attrs, 'databases'); + exit; + } + + if ($action == 'tree') doTree(); + + $misc->printHeader($lang['strdatabases']); + $misc->printBody(); + + switch ($action) { + case 'export': + doExport(); + break; + case 'save_create': + if (isset($_POST['cancel'])) doDefault(); + else doSaveCreate(); + break; + case 'create': + doCreate(); + break; + case 'drop': + if (isset($_REQUEST['drop'])) doDrop(false); + else doDefault(); + break; + case 'confirm_drop': + doDrop(true); + break; + case 'alter': + if (isset($_POST['oldname']) && isset($_POST['newname']) && !isset($_POST['cancel']) ) doAlter(false); + else doDefault(); + break; + case 'confirm_alter': + doAlter(true); + break; + default: + doDefault(); + break; + } + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/browser.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/browser.php new file mode 100644 index 00000000..3b7a5480 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/browser.php @@ -0,0 +1,84 @@ +printHeader('', ' + + + '); + + $misc->printBody('browser'); + echo "
\n"; +?> + + +
<?php echo $lang['strrefresh']; ?>
+ + +\n"; + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/casts.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/casts.php new file mode 100644 index 00000000..2be86b4f --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/casts.php @@ -0,0 +1,103 @@ +printTrail('database'); + $misc->printTabs('database','casts'); + $misc->printMsg($msg); + + $casts = $data->getCasts(); + + $columns = array( + 'source_type' => array( + 'title' => $lang['strsourcetype'], + 'field' => field('castsource'), + ), + 'target_type' => array( + 'title' => $lang['strtargettype'], + 'field' => field('casttarget'), + ), + 'function' => array( + 'title' => $lang['strfunction'], + 'field' => field('castfunc'), + 'params'=> array('null' => $lang['strbinarycompat']), + ), + 'implicit' => array( + 'title' => $lang['strimplicit'], + 'field' => field('castcontext'), + 'type' => 'callback', + 'params'=> array('function' => 'renderCastContext', 'align' => 'center'), + ), + 'comment' => array( + 'title' => $lang['strcomment'], + 'field' => field('castcomment'), + ), + ); + + $actions = array(); + + $misc->printTable($casts, $columns, $actions, 'casts-casts', $lang['strnocasts']); + } + + /** + * Generate XML for the browser tree. + */ + function doTree() { + global $misc, $data; + + $casts = $data->getCasts(); + + $proto = concat(field('castsource'), ' AS ', field('casttarget')); + + $attrs = array( + 'text' => $proto, + 'icon' => 'Cast' + ); + + $misc->printTree($casts, $attrs, 'casts'); + exit; + } + + if ($action == 'tree') doTree(); + + $misc->printHeader($lang['strcasts']); + $misc->printBody(); + + switch ($action) { + case 'tree': + doTree(); + break; + default: + doDefault(); + break; + } + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/ArrayRecordSet.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/ArrayRecordSet.php new file mode 100644 index 00000000..b2a37547 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/ArrayRecordSet.php @@ -0,0 +1,32 @@ +_array = $data; + $this->_count = count($this->_array); + $this->fields = reset($this->_array); + if ($this->fields === false) $this->EOF = true; + } + + function recordCount() { + return $this->_count; + } + + function moveNext() { + $this->fields = next($this->_array); + if ($this->fields === false) $this->EOF = true; + } +} + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/Gui.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/Gui.php new file mode 100644 index 00000000..6d0fe215 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/Gui.php @@ -0,0 +1,48 @@ + Value + * @param $szName string to specify the name of the form element + * @param (optional) $bBlankEntry bool to specify whether or not we want a blank selection + * @param (optional) $szDefault string to specify the default VALUE selected + * @param (optional) $bMultiple bool to specify whether or not we want a multi select combo box + * @param (optional) $iSize int to specify the size IF a multi select combo + * @return string with the generated HTML select box + */ + function printCombo(&$arrOptions, $szName, $bBlankEntry = true, $szDefault = '', $bMultiple = false, $iSize = 10) { + $htmlOut = ''; + if ($bMultiple) // If multiple select combo + $htmlOut .= "\n"; + if ($bBlankEntry) + $htmlOut .= "\n"; + + foreach ($arrOptions as $curKey => $curVal) { + $curVal = htmlspecialchars($curVal); + $curKey = htmlspecialchars($curKey); + if ($curVal == $szDefault) { + $htmlOut .= "\n"; + } + else { + $htmlOut .= "\n"; + } + } + $htmlOut .= "\n"; + + return $htmlOut; + } + } +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/Misc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/Misc.php new file mode 100644 index 00000000..6714bb48 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/Misc.php @@ -0,0 +1,2655 @@ +getServerInfo(); + return !empty($info[$all ? 'pg_dumpall_path' : 'pg_dump_path']); + } + + /** + * Sets the href tracking variable + */ + function setHREF() { + $this->href = $this->getHREF(); + } + + /** + * Get a href query string, excluding objects below the given object type (inclusive) + */ + function getHREF($exclude_from = null) { + $href = ''; + if (isset($_REQUEST['server']) && $exclude_from != 'server') { + $href .= 'server=' . urlencode($_REQUEST['server']); + if (isset($_REQUEST['database']) && $exclude_from != 'database') { + $href .= '&database=' . urlencode($_REQUEST['database']); + if (isset($_REQUEST['schema']) && $exclude_from != 'schema') { + $href .= '&schema=' . urlencode($_REQUEST['schema']); + } + } + } + return htmlentities($href); + } + + function getSubjectParams($subject) { + global $plugin_manager; + + $vars = array(); + + switch($subject) { + case 'root': + $vars = array ( + 'params' => array( + 'subject' => 'root' + ) + ); + break; + case 'server': + $vars = array ('params' => array( + 'server' => $_REQUEST['server'], + 'subject' => 'server' + )); + break; + case 'role': + $vars = array('params' => array( + 'server' => $_REQUEST['server'], + 'subject' => 'role', + 'action' => 'properties', + 'rolename' => $_REQUEST['rolename'] + )); + break; + case 'database': + $vars = array('params' => array( + 'server' => $_REQUEST['server'], + 'subject' => 'database', + 'database' => $_REQUEST['database'], + )); + break; + case 'schema': + $vars = array('params' => array( + 'server' => $_REQUEST['server'], + 'subject' => 'schema', + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'] + )); + break; + case 'table': + $vars = array('params' => array( + 'server' => $_REQUEST['server'], + 'subject' => 'table', + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'table' => $_REQUEST['table'] + )); + break; + case 'selectrows': + $vars = array( + 'url' => 'tables.php', + 'params' => array( + 'server' => $_REQUEST['server'], + 'subject' => 'table', + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'table' => $_REQUEST['table'], + 'action' => 'confselectrows' + )); + break; + case 'view': + $vars = array('params' => array( + 'server' => $_REQUEST['server'], + 'subject' => 'view', + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'view' => $_REQUEST['view'] + )); + break; + case 'fulltext': + case 'ftscfg': + $vars = array('params' => array( + 'server' => $_REQUEST['server'], + 'subject' => 'fulltext', + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'action' => 'viewconfig', + 'ftscfg' => $_REQUEST['ftscfg'] + )); + break; + case 'function': + $vars = array('params' => array( + 'server' => $_REQUEST['server'], + 'subject' => 'function', + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'function' => $_REQUEST['function'], + 'function_oid' => $_REQUEST['function_oid'] + )); + break; + case 'aggregate': + $vars = array('params' => array( + 'server' => $_REQUEST['server'], + 'subject' => 'aggregate', + 'action' => 'properties', + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'aggrname' => $_REQUEST['aggrname'], + 'aggrtype' => $_REQUEST['aggrtype'] + )); + break; + case 'column': + if (isset($_REQUEST['table'])) + $vars = array('params' => array( + 'server' => $_REQUEST['server'], + 'subject' => 'column', + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'table' => $_REQUEST['table'], + 'column' => $_REQUEST['column'] + )); + else + $vars = array('params' => array( + 'server' => $_REQUEST['server'], + 'subject' => 'column', + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'view' => $_REQUEST['view'], + 'column' => $_REQUEST['column'] + )); + break; + case 'plugin': + $vars = array( + 'url' => 'plugin.php', + 'params' => array( + 'server' => $_REQUEST['server'], + 'subject' => 'plugin', + 'plugin' => $_REQUEST['plugin'], + )); + + if (!is_null($plugin_manager->getPlugin($_REQUEST['plugin']))) + $vars['params'] = array_merge($vars['params'], $plugin_manager->getPlugin($_REQUEST['plugin'])->get_subject_params()); + break; + default: + return false; + } + + if (!isset($vars['url'])) + $vars['url'] = 'redirect.php'; + + return $vars; + } + + function getHREFSubject($subject) { + $vars = $this->getSubjectParams($subject); + return "{$vars['url']}?". http_build_query($vars['params'], '', '&'); + } + + /** + * Sets the form tracking variable + */ + function setForm() { + $this->form = ''; + if (isset($_REQUEST['server'])) { + $this->form .= "\n"; + if (isset($_REQUEST['database'])) { + $this->form .= "\n"; + if (isset($_REQUEST['schema'])) { + $this->form .= "\n"; + } + } + } + } + + /** + * Render a value into HTML using formatting rules specified + * by a type name and parameters. + * + * @param $str The string to change + * + * @param $type Field type (optional), this may be an internal PostgreSQL type, or: + * yesno - same as bool, but renders as 'Yes' or 'No'. + * pre - render in a
 block.
+		 *			nbsp     - replace all spaces with  's
+		 *			verbatim - render exactly as supplied, no escaping what-so-ever.
+		 *			callback - render using a callback function supplied in the 'function' param.
+		 *
+		 * @param $params Type parameters (optional), known parameters:
+		 *			null     - string to display if $str is null, or set to TRUE to use a default 'NULL' string,
+		 *			           otherwise nothing is rendered.
+		 *			clip     - if true, clip the value to a fixed length, and append an ellipsis...
+		 *			cliplen  - the maximum length when clip is enabled (defaults to $conf['max_chars'])
+		 *			ellipsis - the string to append to a clipped value (defaults to $lang['strellipsis'])
+		 *			tag      - an HTML element name to surround the value.
+		 *			class    - a class attribute to apply to any surrounding HTML element.
+		 *			align    - an align attribute ('left','right','center' etc.)
+		 *			true     - (type='bool') the representation of true.
+		 *			false    - (type='bool') the representation of false.
+		 *			function - (type='callback') a function name, accepts args ($str, $params) and returns a rendering.
+		 *			lineno   - prefix each line with a line number.
+		 *			map      - an associative array.
+		 *
+		 * @return The HTML rendered value
+		 */
+		function printVal($str, $type = null, $params = array()) {
+			global $lang, $conf, $data;
+
+			// Shortcircuit for a NULL value
+			if (is_null($str))
+				return isset($params['null'])
+						? ($params['null'] === true ? 'NULL' : $params['null'])
+						: '';
+
+			if (isset($params['map']) && isset($params['map'][$str])) $str = $params['map'][$str];
+
+			// Clip the value if the 'clip' parameter is true.
+			if (isset($params['clip']) && $params['clip'] === true) {
+				$maxlen = isset($params['cliplen']) && is_integer($params['cliplen']) ? $params['cliplen'] : $conf['max_chars'];
+				$ellipsis = isset($params['ellipsis']) ? $params['ellipsis'] : $lang['strellipsis'];
+				if (strlen($str) > $maxlen) {
+					$str = substr($str, 0, $maxlen-1) . $ellipsis;
+				}
+			}
+
+			$out = '';
+
+			switch ($type) {
+				case 'int2':
+				case 'int4':
+				case 'int8':
+				case 'float4':
+				case 'float8':
+				case 'money':
+				case 'numeric':
+				case 'oid':
+				case 'xid':
+				case 'cid':
+				case 'tid':
+					$align = 'right';
+					$out = nl2br(htmlspecialchars($str));
+					break;
+				case 'yesno':
+					if (!isset($params['true'])) $params['true'] = $lang['stryes'];
+					if (!isset($params['false'])) $params['false'] = $lang['strno'];
+					// No break - fall through to boolean case.
+				case 'bool':
+				case 'boolean':
+					if (is_bool($str)) $str = $str ? 't' : 'f';
+					switch ($str) {
+						case 't':
+							$out = (isset($params['true']) ? $params['true'] : $lang['strtrue']);
+							$align = 'center';
+							break;
+						case 'f':
+							$out = (isset($params['false']) ? $params['false'] : $lang['strfalse']);
+							$align = 'center';
+							break;
+						default:
+							$out = htmlspecialchars($str);
+					}
+					break;
+				case 'bytea':
+					$tag = 'div';
+					$class = 'pre';
+					$out = $data->escapeBytea($str);
+					break;
+				case 'errormsg':
+					$tag = 'pre';
+					$class = 'error';
+					$out = htmlspecialchars($str);
+					break;
+				case 'pre':
+					$tag = 'pre';
+					$out = htmlspecialchars($str);
+					break;
+				case 'prenoescape':
+					$tag = 'pre';
+					$out = $str;
+					break;
+				case 'nbsp':
+					$out = nl2br(str_replace(' ', ' ', htmlspecialchars($str)));
+					break;
+				case 'verbatim':
+					$out = $str;
+					break;
+				case 'callback':
+					$out = $params['function']($str, $params);
+					break;
+				case 'prettysize':
+					if ($str == -1) 
+						$out = $lang['strnoaccess'];
+					else
+					{
+						$limit = 10 * 1024;
+						$mult = 1;
+						if ($str < $limit * $mult)
+							$out = $str.' '.$lang['strbytes'];
+						else
+						{
+							$mult *= 1024;
+							if ($str < $limit * $mult)
+								$out = floor(($str + $mult / 2) / $mult).' '.$lang['strkb'];
+							else
+							{
+								$mult *= 1024;
+								if ($str < $limit * $mult)
+									$out = floor(($str + $mult / 2) / $mult).' '.$lang['strmb'];
+								else
+								{
+									$mult *= 1024;
+									if ($str < $limit * $mult)
+										$out = floor(($str + $mult / 2) / $mult).' '.$lang['strgb'];
+									else
+									{
+										$mult *= 1024;
+										if ($str < $limit * $mult)
+											$out = floor(($str + $mult / 2) / $mult).' '.$lang['strtb'];
+									}
+								}
+							}
+						}
+					}
+					break;
+				default:
+					// If the string contains at least one instance of >1 space in a row, a tab
+					// character, a space at the start of a line, or a space at the start of
+					// the whole string then render within a pre-formatted element (
).
+					if (preg_match('/(^ |  |\t|\n )/m', $str)) {
+						$tag = 'pre';
+						$class = 'data';
+						$out = htmlspecialchars($str);
+					} else {
+						$out = nl2br(htmlspecialchars($str));
+					}
+			}
+
+			if (isset($params['class'])) $class = $params['class'];
+			if (isset($params['align'])) $align = $params['align'];
+
+			if (!isset($tag) && (isset($class) || isset($align))) $tag = 'div';
+
+			if (isset($tag)) {
+				$alignattr = isset($align) ? " style=\"text-align: {$align}\"" : '';
+				$classattr = isset($class) ? " class=\"{$class}\"" : '';
+				$out = "<{$tag}{$alignattr}{$classattr}>{$out}";
+			}
+
+			// Add line numbers if 'lineno' param is true
+			if (isset($params['lineno']) && $params['lineno'] === true) {
+				$lines = explode("\n", $str);
+				$num = count($lines);
+				if ($num > 0) {
+					$temp = "\n
";
+					for ($i = 1; $i <= $num; $i++) {
+						$temp .= $i . "\n";
+					}
+					$temp .= "
{$out}
\n"; + $out = $temp; + } + unset($lines); + } + + return $out; + } + + /** + * A function to recursively strip slashes. Used to + * enforce magic_quotes_gpc being off. + * @param &var The variable to strip + */ + function stripVar(&$var) { + if (is_array($var)) { + foreach($var as $k => $v) { + $this->stripVar($var[$k]); + + /* magic_quotes_gpc escape keys as well ...*/ + if (is_string($k)) { + $ek = stripslashes($k); + if ($ek !== $k) { + $var[$ek] = $var[$k]; + unset($var[$k]); + } + } + } + } + else + $var = stripslashes($var); + } + + /** + * Print out the page heading and help link + * @param $title Title, already escaped + * @param $help (optional) The identifier for the help link + */ + function printTitle($title, $help = null) { + global $data, $lang; + + echo "

"; + $this->printHelp($title, $help); + echo "

\n"; + } + + /** + * Print out a message + * @param $msg The message to print + */ + function printMsg($msg) { + if ($msg != '') echo "

{$msg}

\n"; + } + + /** + * Creates a database accessor + */ + function getDatabaseAccessor($database, $server_id = null) { + global $lang, $conf, $misc, $_connection; + + $server_info = $this->getServerInfo($server_id); + + // Perform extra security checks if this config option is set + if ($conf['extra_login_security']) { + // Disallowed logins if extra_login_security is enabled. + // These must be lowercase. + $bad_usernames = array('pgsql', 'postgres', 'root', 'administrator'); + + $username = strtolower($server_info['username']); + + if ($server_info['password'] == '' || in_array($username, $bad_usernames)) { + unset($_SESSION['webdbLogin'][$_REQUEST['server']]); + $msg = $lang['strlogindisallowed']; + include('./login.php'); + exit; + } + } + + // Create the connection object and make the connection + $_connection = new Connection( + $server_info['host'], + $server_info['port'], + $server_info['sslmode'], + $server_info['username'], + $server_info['password'], + $database + ); + + // Get the name of the database driver we need to use. + // The description of the server is returned in $platform. + $_type = $_connection->getDriver($platform); + if ($_type === null) { + printf($lang['strpostgresqlversionnotsupported'], $postgresqlMinVer); + exit; + } + $this->setServerInfo('platform', $platform, $server_id); + $this->setServerInfo('pgVersion', $_connection->conn->pgVersion, $server_id); + + // Create a database wrapper class for easy manipulation of the + // connection. + include_once('./classes/database/' . $_type . '.php'); + $data = new $_type($_connection->conn); + $data->platform = $_connection->platform; + + /* we work on UTF-8 only encoding */ + $data->execute("SET client_encoding TO 'UTF-8'"); + + if ($data->hasByteaHexDefault()) { + $data->execute("SET bytea_output TO escape"); + } + + return $data; + } + + + /** + * Prints the page header. If global variable $_no_output is + * set then no header is drawn. + * @param $title The title of the page + * @param $script script tag + */ + function printHeader($title = '', $script = null, $frameset = false) { + global $appName, $lang, $_no_output, $conf, $plugin_manager; + + if (!isset($_no_output)) { + header("Content-Type: text/html; charset=utf-8"); + // Send XHTML headers, or regular XHTML strict headers + echo "\n"; + if ($frameset == true) { + echo "\n"; + } else if (isset($conf['use_xhtml_strict']) && $conf['use_xhtml_strict']) { + echo "\n"; + } else { + echo "\n"; + } + echo "\n"; + + echo "\n"; + echo "\n"; + // Theme + echo "\n"; + echo "\n"; + echo "\n"; + echo ""; + echo "\n"; + echo "", htmlspecialchars($appName); + if ($title != '') echo htmlspecialchars(" - {$title}"); + echo "\n"; + + if ($script) echo "{$script}\n"; + + $plugins_head = array(); + $_params = array('heads' => &$plugins_head); + + $plugin_manager->do_hook('head', $_params); + + foreach($plugins_head as $tag) { + echo $tag; + } + + echo "\n"; + } + } + + /** + * Prints the page footer + * @param $doBody True to output body tag, false otherwise + */ + function printFooter($doBody = true) { + global $_reload_browser, $_reload_drop_database; + global $lang, $_no_bottom_link; + + if ($doBody) { + if (isset($_reload_browser)) $this->printReload(false); + elseif (isset($_reload_drop_database)) $this->printReload(true); + if (!isset($_no_bottom_link)) + echo "".$lang['strgotoppage'].""; + + echo "\n"; + } + echo "\n"; + } + + /** + * Prints the page body. + * @param $doBody True to output body tag, false otherwise + * @param $bodyClass - name of body class + */ + function printBody($bodyClass = '', $doBody = true ) { + global $_no_output; + + if (!isset($_no_output)) { + if ($doBody) { + $bodyClass = htmlspecialchars($bodyClass); + echo "\n"; + } + } + } + + /** + * Outputs JavaScript code that will reload the browser + * @param $database True if dropping a database, false otherwise + */ + function printReload($database) { + echo "\n"; + } + + /** + * Display a link + * @param $link An associative array of link parameters to print + * link = array( + * 'attr' => array( // list of A tag attribute + * 'attrname' => attribute value + * ... + * ), + * 'content' => The link text + * 'fields' => (optionnal) the data from which content and attr's values are obtained + * ); + * the special attribute 'href' might be a string or an array. If href is an array it + * will be generated by getActionUrl. See getActionUrl comment for array format. + */ + function printLink($link) { + + if (! isset($link['fields'])) + $link['fields'] = $_REQUEST; + + $tag = " $value) { + if ($attr == 'href' and is_array($value)) { + $tag.= 'href="'. htmlentities($this->getActionUrl($value, $link['fields'])).'" '; + } + else { + $tag.= htmlentities($attr).'="'. value($value, $link['fields'], 'html') .'" '; + } + } + $tag.= ">". value($link['content'], $link['fields'], 'html') ."\n"; + echo $tag; + } + + /** + * Display a list of links + * @param $links An associative array of links to print. See printLink function for + * the links array format. + * @param $class An optional class or list of classes seprated by a space + * WARNING: This field is NOT escaped! No user should be able to inject something here, use with care. + */ + function printLinksList($links, $class='') { + echo "
    \n"; + foreach ($links as $link) { + echo "\t
  • "; + $this->printLink($link); + echo "
  • \n"; + } + echo "
\n"; + } + + /** + * Display navigation tabs + * @param $tabs The name of current section (Ex: intro, server, ...), or an array with tabs (Ex: sqledit.php doFind function) + * @param $activetab The name of the tab to be highlighted. + */ + function printTabs($tabs, $activetab) { + global $misc, $conf, $data, $lang; + + if (is_string($tabs)) { + $_SESSION['webdbLastTab'][$tabs] = $activetab; + $tabs = $this->getNavTabs($tabs); + } + + echo "\n"; + #echo "
\n"; + + if (count($tabs) > 0) + $width = (int)(100 / count($tabs)).'%'; + else + $width = 1; + + foreach ($tabs as $tab_id => $tab) { + $active = ($tab_id == $activetab) ? ' active' : ''; + + if (!isset($tab['hide']) || $tab['hide'] !== true) { + + $tablink = ''; + + if (isset($tab['icon']) && $icon = $this->icon($tab['icon'])) + $tablink .= "\"{$tab['title']}\""; + + $tablink .= "{$tab['title']}"; + + echo "
\n"; + #echo "\n"; + } + } + + echo "
"; + #echo ""; + + if (isset($tab['help'])) + $this->printHelp($tablink, $tab['help']); + else + echo $tablink; + + echo "
\n"; + #echo "
\n"; + } + + /** + * Retrieve the tab info for a specific tab bar. + * @param $section The name of the tab bar. + */ + function getNavTabs($section) { + global $data, $lang, $conf, $plugin_manager; + + $hide_advanced = ($conf['show_advanced'] === false); + $tabs = array(); + + switch ($section) { + case 'root': + $tabs = array ( + 'intro' => array ( + 'title' => $lang['strintroduction'], + 'url' => "intro.php", + 'icon' => 'Introduction', + ), + 'servers' => array ( + 'title' => $lang['strservers'], + 'url' => "servers.php", + 'icon' => 'Servers', + ), + ); + break; + + case 'server': + $hide_users = !$data->isSuperUser(); + $tabs = array ( + 'databases' => array ( + 'title' => $lang['strdatabases'], + 'url' => 'all_db.php', + 'urlvars' => array('subject' => 'server'), + 'help' => 'pg.database', + 'icon' => 'Databases', + ) + ); + if ($data->hasRoles()) { + $tabs = array_merge($tabs, array( + 'roles' => array ( + 'title' => $lang['strroles'], + 'url' => 'roles.php', + 'urlvars' => array('subject' => 'server'), + 'hide' => $hide_users, + 'help' => 'pg.role', + 'icon' => 'Roles', + ) + )); + } + else { + $tabs = array_merge($tabs, array( + 'users' => array ( + 'title' => $lang['strusers'], + 'url' => 'users.php', + 'urlvars' => array('subject' => 'server'), + 'hide' => $hide_users, + 'help' => 'pg.user', + 'icon' => 'Users', + ), + 'groups' => array ( + 'title' => $lang['strgroups'], + 'url' => 'groups.php', + 'urlvars' => array('subject' => 'server'), + 'hide' => $hide_users, + 'help' => 'pg.group', + 'icon' => 'UserGroups', + ) + )); + } + + $tabs = array_merge($tabs, array( + 'account' => array ( + 'title' => $lang['straccount'], + 'url' => $data->hasRoles() ? 'roles.php' : 'users.php', + 'urlvars' => array('subject' => 'server', 'action' => 'account'), + 'hide' => !$hide_users, + 'help' => 'pg.role', + 'icon' => 'User', + ), + 'tablespaces' => array ( + 'title' => $lang['strtablespaces'], + 'url' => 'tablespaces.php', + 'urlvars' => array('subject' => 'server'), + 'hide' => (!$data->hasTablespaces()), + 'help' => 'pg.tablespace', + 'icon' => 'Tablespaces', + ), + 'export' => array ( + 'title' => $lang['strexport'], + 'url' => 'all_db.php', + 'urlvars' => array('subject' => 'server', 'action' => 'export'), + 'hide' => (!$this->isDumpEnabled()), + 'icon' => 'Export', + ), + )); + break; + case 'database': + $tabs = array ( + 'schemas' => array ( + 'title' => $lang['strschemas'], + 'url' => 'schemas.php', + 'urlvars' => array('subject' => 'database'), + 'help' => 'pg.schema', + 'icon' => 'Schemas', + ), + 'sql' => array ( + 'title' => $lang['strsql'], + 'url' => 'database.php', + 'urlvars' => array('subject' => 'database', 'action' => 'sql', 'new' => 1), + 'help' => 'pg.sql', + 'tree' => false, + 'icon' => 'SqlEditor' + ), + 'find' => array ( + 'title' => $lang['strfind'], + 'url' => 'database.php', + 'urlvars' => array('subject' => 'database', 'action' => 'find'), + 'tree' => false, + 'icon' => 'Search' + ), + 'variables' => array ( + 'title' => $lang['strvariables'], + 'url' => 'database.php', + 'urlvars' => array('subject' => 'database', 'action' => 'variables'), + 'help' => 'pg.variable', + 'tree' => false, + 'icon' => 'Variables', + ), + 'processes' => array ( + 'title' => $lang['strprocesses'], + 'url' => 'database.php', + 'urlvars' => array('subject' => 'database', 'action' => 'processes'), + 'help' => 'pg.process', + 'tree' => false, + 'icon' => 'Processes', + ), + 'locks' => array ( + 'title' => $lang['strlocks'], + 'url' => 'database.php', + 'urlvars' => array('subject' => 'database', 'action' => 'locks'), + 'help' => 'pg.locks', + 'tree' => false, + 'icon' => 'Key', + ), + 'admin' => array ( + 'title' => $lang['stradmin'], + 'url' => 'database.php', + 'urlvars' => array('subject' => 'database', 'action' => 'admin'), + 'tree' => false, + 'icon' => 'Admin', + ), + 'privileges' => array ( + 'title' => $lang['strprivileges'], + 'url' => 'privileges.php', + 'urlvars' => array('subject' => 'database'), + 'hide' => (!isset($data->privlist['database'])), + 'help' => 'pg.privilege', + 'tree' => false, + 'icon' => 'Privileges', + ), + 'languages' => array ( + 'title' => $lang['strlanguages'], + 'url' => 'languages.php', + 'urlvars' => array('subject' => 'database'), + 'hide' => $hide_advanced, + 'help' => 'pg.language', + 'icon' => 'Languages', + ), + 'casts' => array ( + 'title' => $lang['strcasts'], + 'url' => 'casts.php', + 'urlvars' => array('subject' => 'database'), + 'hide' => ($hide_advanced), + 'help' => 'pg.cast', + 'icon' => 'Casts', + ), + 'export' => array ( + 'title' => $lang['strexport'], + 'url' => 'database.php', + 'urlvars' => array('subject' => 'database', 'action' => 'export'), + 'hide' => (!$this->isDumpEnabled()), + 'tree' => false, + 'icon' => 'Export', + ), + ); + break; + + case 'schema': + $tabs = array ( + 'tables' => array ( + 'title' => $lang['strtables'], + 'url' => 'tables.php', + 'urlvars' => array('subject' => 'schema'), + 'help' => 'pg.table', + 'icon' => 'Tables', + ), + 'views' => array ( + 'title' => $lang['strviews'], + 'url' => 'views.php', + 'urlvars' => array('subject' => 'schema'), + 'help' => 'pg.view', + 'icon' => 'Views', + ), + 'sequences' => array ( + 'title' => $lang['strsequences'], + 'url' => 'sequences.php', + 'urlvars' => array('subject' => 'schema'), + 'help' => 'pg.sequence', + 'icon' => 'Sequences', + ), + 'functions' => array ( + 'title' => $lang['strfunctions'], + 'url' => 'functions.php', + 'urlvars' => array('subject' => 'schema'), + 'help' => 'pg.function', + 'icon' => 'Functions', + ), + 'fulltext' => array ( + 'title' => $lang['strfulltext'], + 'url' => 'fulltext.php', + 'urlvars' => array('subject' => 'schema'), + 'help' => 'pg.fts', + 'tree' => true, + 'icon' => 'Fts', + ), + 'domains' => array ( + 'title' => $lang['strdomains'], + 'url' => 'domains.php', + 'urlvars' => array('subject' => 'schema'), + 'help' => 'pg.domain', + 'icon' => 'Domains', + ), + 'aggregates' => array ( + 'title' => $lang['straggregates'], + 'url' => 'aggregates.php', + 'urlvars' => array('subject' => 'schema'), + 'hide' => $hide_advanced, + 'help' => 'pg.aggregate', + 'icon' => 'Aggregates', + ), + 'types' => array ( + 'title' => $lang['strtypes'], + 'url' => 'types.php', + 'urlvars' => array('subject' => 'schema'), + 'hide' => $hide_advanced, + 'help' => 'pg.type', + 'icon' => 'Types', + ), + 'operators' => array ( + 'title' => $lang['stroperators'], + 'url' => 'operators.php', + 'urlvars' => array('subject' => 'schema'), + 'hide' => $hide_advanced, + 'help' => 'pg.operator', + 'icon' => 'Operators', + ), + 'opclasses' => array ( + 'title' => $lang['stropclasses'], + 'url' => 'opclasses.php', + 'urlvars' => array('subject' => 'schema'), + 'hide' => $hide_advanced, + 'help' => 'pg.opclass', + 'icon' => 'OperatorClasses', + ), + 'conversions' => array ( + 'title' => $lang['strconversions'], + 'url' => 'conversions.php', + 'urlvars' => array('subject' => 'schema'), + 'hide' => $hide_advanced, + 'help' => 'pg.conversion', + 'icon' => 'Conversions', + ), + 'privileges' => array ( + 'title' => $lang['strprivileges'], + 'url' => 'privileges.php', + 'urlvars' => array('subject' => 'schema'), + 'help' => 'pg.privilege', + 'tree' => false, + 'icon' => 'Privileges', + ), + 'export' => array ( + 'title' => $lang['strexport'], + 'url' => 'schemas.php', + 'urlvars' => array('subject' => 'schema', 'action' => 'export'), + 'hide' => (!$this->isDumpEnabled()), + 'tree' => false, + 'icon' => 'Export', + ), + ); + if (!$data->hasFTS()) unset($tabs['fulltext']); + break; + + case 'table': + $tabs = array ( + 'columns' => array ( + 'title' => $lang['strcolumns'], + 'url' => 'tblproperties.php', + 'urlvars' => array('subject' => 'table', 'table' => field('table')), + 'icon' => 'Columns', + 'branch'=> true, + ), + 'browse' => array( + 'title' => $lang['strbrowse'], + 'icon'=>'Columns', + 'url' => 'display.php', + 'urlvars' => array ('subject' => 'table','table' => field('table')), + 'return' => 'table', + 'branch'=> true, + ), + 'select' => array( + 'title' => $lang['strselect'], + 'icon' => 'Search', + 'url' => 'tables.php', + 'urlvars' => array('subject' => 'table', 'table' => field('table'),'action' => 'confselectrows',), + 'help' => 'pg.sql.select', + ), + 'insert'=>array( + 'title' => $lang['strinsert'], + 'url' => 'tables.php', + 'urlvars' => array ( + 'action' => 'confinsertrow', + 'table' => field('table') + ), + 'help' => 'pg.sql.insert', + 'icon'=>'Operator' + ), + 'indexes' => array ( + 'title' => $lang['strindexes'], + 'url' => 'indexes.php', + 'urlvars' => array('subject' => 'table', 'table' => field('table')), + 'help' => 'pg.index', + 'icon' => 'Indexes', + 'branch'=> true, + ), + 'constraints' => array ( + 'title' => $lang['strconstraints'], + 'url' => 'constraints.php', + 'urlvars' => array('subject' => 'table', 'table' => field('table')), + 'help' => 'pg.constraint', + 'icon' => 'Constraints', + 'branch'=> true, + ), + 'triggers' => array ( + 'title' => $lang['strtriggers'], + 'url' => 'triggers.php', + 'urlvars' => array('subject' => 'table', 'table' => field('table')), + 'help' => 'pg.trigger', + 'icon' => 'Triggers', + 'branch'=> true, + ), + 'rules' => array ( + 'title' => $lang['strrules'], + 'url' => 'rules.php', + 'urlvars' => array('subject' => 'table', 'table' => field('table')), + 'help' => 'pg.rule', + 'icon' => 'Rules', + 'branch'=> true, + ), + 'admin' => array ( + 'title' => $lang['stradmin'], + 'url' => 'tables.php', + 'urlvars' => array('subject' => 'table', 'table' => field('table'), 'action' => 'admin'), + 'icon' => 'Admin', + ), + 'info' => array ( + 'title' => $lang['strinfo'], + 'url' => 'info.php', + 'urlvars' => array('subject' => 'table', 'table' => field('table')), + 'icon' => 'Statistics', + ), + 'privileges' => array ( + 'title' => $lang['strprivileges'], + 'url' => 'privileges.php', + 'urlvars' => array('subject' => 'table', 'table' => field('table')), + 'help' => 'pg.privilege', + 'icon' => 'Privileges', + ), + 'import' => array ( + 'title' => $lang['strimport'], + 'url' => 'tblproperties.php', + 'urlvars' => array('subject' => 'table', 'table' => field('table'), 'action' => 'import'), + 'icon' => 'Import', + 'hide' => false, + ), + 'export' => array ( + 'title' => $lang['strexport'], + 'url' => 'tblproperties.php', + 'urlvars' => array('subject' => 'table', 'table' => field('table'), 'action' => 'export'), + 'icon' => 'Export', + 'hide' => false, + ), + ); + break; + + case 'view': + $tabs = array ( + 'columns' => array ( + 'title' => $lang['strcolumns'], + 'url' => 'viewproperties.php', + 'urlvars' => array('subject' => 'view', 'view' => field('view')), + 'icon' => 'Columns', + 'branch'=> true, + ), + 'browse' => array( + 'title' => $lang['strbrowse'], + 'icon'=>'Columns', + 'url' => 'display.php', + 'urlvars' => array ( + 'action' => 'confselectrows', + 'return' => 'schema', + 'subject' => 'view', + 'view' => field('view') + ), + 'branch'=> true, + ), + 'select' => array( + 'title' => $lang['strselect'], + 'icon' => 'Search', + 'url' => 'views.php', + 'urlvars' => array('action' => 'confselectrows', 'view' => field('view'),), + 'help' => 'pg.sql.select', + ), + 'definition' => array ( + 'title' => $lang['strdefinition'], + 'url' => 'viewproperties.php', + 'urlvars' => array('subject' => 'view', 'view' => field('view'), 'action' => 'definition'), + 'icon' => 'Definition' + ), + 'rules' => array ( + 'title' => $lang['strrules'], + 'url' => 'rules.php', + 'urlvars' => array('subject' => 'view', 'view' => field('view')), + 'help' => 'pg.rule', + 'icon' => 'Rules', + 'branch'=> true, + ), + 'privileges' => array ( + 'title' => $lang['strprivileges'], + 'url' => 'privileges.php', + 'urlvars' => array('subject' => 'view', 'view' => field('view')), + 'help' => 'pg.privilege', + 'icon' => 'Privileges', + ), + 'export' => array ( + 'title' => $lang['strexport'], + 'url' => 'viewproperties.php', + 'urlvars' => array('subject' => 'view', 'view' => field('view'), 'action' => 'export'), + 'icon' => 'Export', + 'hide' => false, + ), + ); + break; + + case 'function': + $tabs = array ( + 'definition' => array ( + 'title' => $lang['strdefinition'], + 'url' => 'functions.php', + 'urlvars' => array( + 'subject' => 'function', + 'function' => field('function'), + 'function_oid' => field('function_oid'), + 'action' => 'properties', + ), + 'icon' => 'Definition', + ), + 'privileges' => array ( + 'title' => $lang['strprivileges'], + 'url' => 'privileges.php', + 'urlvars' => array( + 'subject' => 'function', + 'function' => field('function'), + 'function_oid' => field('function_oid'), + ), + 'icon' => 'Privileges', + ), + ); + break; + + case 'aggregate': + $tabs = array ( + 'definition' => array ( + 'title' => $lang['strdefinition'], + 'url' => 'aggregates.php', + 'urlvars' => array( + 'subject' => 'aggregate', + 'aggrname' => field('aggrname'), + 'aggrtype' => field('aggrtype'), + 'action' => 'properties', + ), + 'icon' => 'Definition', + ), + ); + break; + + case 'role': + $tabs = array ( + 'definition' => array ( + 'title' => $lang['strdefinition'], + 'url' => 'roles.php', + 'urlvars' => array( + 'subject' => 'role', + 'rolename' => field('rolename'), + 'action' => 'properties', + ), + 'icon' => 'Definition', + ), + ); + break; + + case 'popup': + $tabs = array ( + 'sql' => array ( + 'title' => $lang['strsql'], + 'url' => 'sqledit.php', + 'urlvars' => array('subject' => 'schema', 'action' => 'sql'), + 'help' => 'pg.sql', + 'icon' => 'SqlEditor', + ), + 'find' => array ( + 'title' => $lang['strfind'], + 'url' => 'sqledit.php', + 'urlvars' => array('subject' => 'schema', 'action' => 'find'), + 'icon' => 'Search', + ), + ); + break; + + case 'column': + $tabs = array( + 'properties' => array ( + 'title' => $lang['strcolprop'], + 'url' => 'colproperties.php', + 'urlvars' => array( + 'subject' => 'column', + 'table' => field('table'), + 'column' => field('column') + ), + 'icon' => 'Column' + ), + 'privileges' => array ( + 'title' => $lang['strprivileges'], + 'url' => 'privileges.php', + 'urlvars' => array( + 'subject' => 'column', + 'table' => field('table'), + 'column' => field('column') + ), + 'help' => 'pg.privilege', + 'icon' => 'Privileges', + ) + ); + break; + + case 'fulltext': + $tabs = array ( + 'ftsconfigs' => array ( + 'title' => $lang['strftstabconfigs'], + 'url' => 'fulltext.php', + 'urlvars' => array('subject' => 'schema'), + 'hide' => !$data->hasFTS(), + 'help' => 'pg.ftscfg', + 'tree' => true, + 'icon' => 'FtsCfg', + ), + 'ftsdicts' => array ( + 'title' => $lang['strftstabdicts'], + 'url' => 'fulltext.php', + 'urlvars' => array('subject' => 'schema', 'action' => 'viewdicts'), + 'hide' => !$data->hasFTS(), + 'help' => 'pg.ftsdict', + 'tree' => true, + 'icon' => 'FtsDict', + ), + 'ftsparsers' => array ( + 'title' => $lang['strftstabparsers'], + 'url' => 'fulltext.php', + 'urlvars' => array('subject' => 'schema', 'action' => 'viewparsers'), + 'hide' => !$data->hasFTS(), + 'help' => 'pg.ftsparser', + 'tree' => true, + 'icon' => 'FtsParser', + ), + ); + break; + } + + // Tabs hook's place + $plugin_functions_parameters = array( + 'tabs' => &$tabs, + 'section' => $section + ); + $plugin_manager->do_hook('tabs', $plugin_functions_parameters); + + return $tabs; + } + + /** + * Get the URL for the last active tab of a particular tab bar. + */ + function getLastTabURL($section) { + global $data; + + $tabs = $this->getNavTabs($section); + + if (isset($_SESSION['webdbLastTab'][$section]) && isset($tabs[$_SESSION['webdbLastTab'][$section]])) + $tab = $tabs[$_SESSION['webdbLastTab'][$section]]; + else + $tab = reset($tabs); + + return isset($tab['url']) ? $tab : null; + } + + function printTopbar() { + global $lang, $conf, $plugin_manager, $appName, $appVersion, $appLangFiles; + + $server_info = $this->getServerInfo(); + $reqvars = $this->getRequestVars('table'); + + echo "
"; + + /* top right informations when connected */ + + $toplinks = array ( + 'sql' => array ( + 'attr' => array ( + 'href' => array ( + 'url' => 'sqledit.php', + 'urlvars' => array_merge($reqvars, array ( + 'action' => 'sql' + )) + ), + 'target' => "sqledit", + 'id' => 'toplink_sql', + ), + 'content' => $lang['strsql'] + ), + 'history' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'history.php', + 'urlvars' => array_merge($reqvars, array ( + 'action' => 'pophistory' + )) + ), + 'id' => 'toplink_history', + ), + 'content' => $lang['strhistory'] + ), + 'find' => array ( + 'attr' => array ( + 'href' => array ( + 'url' => 'sqledit.php', + 'urlvars' => array_merge($reqvars, array ( + 'action' => 'find' + )) + ), + 'target' => "sqledit", + 'id' => 'toplink_find', + ), + 'content' => $lang['strfind'] + ), + 'logout' => array( + 'attr' => array ( + 'href' => array ( + 'url' => 'servers.php', + 'urlvars' => array ( + 'action' => 'logout', + 'logoutServer' => "{$server_info['host']}:{$server_info['port']}:{$server_info['sslmode']}" + ) + ), + 'id' => 'toplink_logout', + ), + 'content' => $lang['strlogout'] + ) + ); + + // Toplink hook's place + $plugin_functions_parameters = array( + 'toplinks' => &$toplinks + ); + + $plugin_manager->do_hook('toplinks', $plugin_functions_parameters); + + echo ""; + + $sql_window_id = htmlentities('sqledit:'.$_REQUEST['server']); + $history_window_id = htmlentities('history:'.$_REQUEST['server']); + + echo ""; + } + else { + echo "{$appName}{$appVersion}"; + } +/* + echo ""; +*/ + echo "
"; + + if ($server_info && isset($server_info['platform']) && isset($server_info['username'])) { + /* top left informations when connected */ + echo sprintf($lang['strtopbar'], + ''.htmlspecialchars($server_info['platform']).'', + ''.htmlspecialchars((empty($server_info['host'])) ? 'localhost':$server_info['host']).'', + ''.htmlspecialchars($server_info['port']).'', + ''.htmlspecialchars($server_info['username']).''); + + echo ""; + $this->printLinksList($toplinks, 'toplink'); + echo " "; + + echo "
\n"; + echo "\n"; + foreach ($_GET as $key => $val) { + if ($key == 'language') continue; + echo "\n"; + } + echo "
\n"; + + echo "
\n"; + } + + /** + * Display a bread crumb trail. + */ + function printTrail($trail = array()) { + global $lang; + + $this->printTopbar(); + + if (is_string($trail)) { + $trail = $this->getTrail($trail); + } + + echo "
"; + + foreach ($trail as $crumb) { + echo ""; + } + + echo "
"; + $crumblink = "icon($crumb['icon'])) + $crumblink .= "\"{$iconalt}\""; + + $crumblink .= "" . htmlspecialchars($crumb['text']) . ""; + + if (isset($crumb['help'])) + $this->printHelp($crumblink, $crumb['help']); + else + echo $crumblink; + + echo "{$lang['strseparator']}"; + echo "
\n"; + } + + /** + * Create a bread crumb trail of the object hierarchy. + * @param $object The type of object at the end of the trail. + */ + function getTrail($subject = null) { + global $lang, $conf, $data, $appName, $plugin_manager; + + $trail = array(); + $vars = ''; + $done = false; + + $trail['root'] = array( + 'text' => $appName, + 'url' => 'redirect.php?subject=root', + 'icon' => 'Introduction' + ); + + if ($subject == 'root') $done = true; + + if (!$done) { + $server_info = $this->getServerInfo(); + $trail['server'] = array( + 'title' => $lang['strserver'], + 'text' => $server_info['desc'], + 'url' => $this->getHREFSubject('server'), + 'help' => 'pg.server', + 'icon' => 'Server' + ); + } + if ($subject == 'server') $done = true; + + if (isset($_REQUEST['database']) && !$done) { + $trail['database'] = array( + 'title' => $lang['strdatabase'], + 'text' => $_REQUEST['database'], + 'url' => $this->getHREFSubject('database'), + 'help' => 'pg.database', + 'icon' => 'Database' + ); + } elseif (isset($_REQUEST['rolename']) && !$done) { + $trail['role'] = array( + 'title' => $lang['strrole'], + 'text' => $_REQUEST['rolename'], + 'url' => $this->getHREFSubject('role'), + 'help' => 'pg.role', + 'icon' => 'Roles' + ); + } + if ($subject == 'database' || $subject == 'role') $done = true; + + if (isset($_REQUEST['schema']) && !$done) { + $trail['schema'] = array( + 'title' => $lang['strschema'], + 'text' => $_REQUEST['schema'], + 'url' => $this->getHREFSubject('schema'), + 'help' => 'pg.schema', + 'icon' => 'Schema' + ); + } + if ($subject == 'schema') $done = true; + + if (isset($_REQUEST['table']) && !$done) { + $trail['table'] = array( + 'title' => $lang['strtable'], + 'text' => $_REQUEST['table'], + 'url' => $this->getHREFSubject('table'), + 'help' => 'pg.table', + 'icon' => 'Table' + ); + } elseif (isset($_REQUEST['view']) && !$done) { + $trail['view'] = array( + 'title' => $lang['strview'], + 'text' => $_REQUEST['view'], + 'url' => $this->getHREFSubject('view'), + 'help' => 'pg.view', + 'icon' => 'View' + ); + } elseif (isset($_REQUEST['ftscfg']) && !$done) { + $trail['ftscfg'] = array( + 'title' => $lang['strftsconfig'], + 'text' => $_REQUEST['ftscfg'], + 'url' => $this->getHREFSubject('ftscfg'), + 'help' => 'pg.ftscfg.example', + 'icon' => 'Fts' + ); + } + if ($subject == 'table' || $subject == 'view' || $subject == 'ftscfg') $done = true; + + if (!$done && !is_null($subject)) { + switch ($subject) { + case 'function': + $trail[$subject] = array( + 'title' => $lang['str'.$subject], + 'text' => $_REQUEST[$subject], + 'url' => $this->getHREFSubject('function'), + 'help' => 'pg.function', + 'icon' => 'Function' + ); + break; + case 'aggregate': + $trail[$subject] = array( + 'title' => $lang['straggregate'], + 'text' => $_REQUEST['aggrname'], + 'url' => $this->getHREFSubject('aggregate'), + 'help' => 'pg.aggregate', + 'icon' => 'Aggregate' + ); + break; + case 'column': + $trail['column'] = array ( + 'title' => $lang['strcolumn'], + 'text' => $_REQUEST['column'], + 'icon' => 'Column', + 'url' => $this->getHREFSubject('column') + ); + break; + default: + if (isset($_REQUEST[$subject])) { + switch ($subject) { + case 'domain': $icon = 'Domain'; break; + case 'sequence': $icon = 'Sequence'; break; + case 'type': $icon = 'Type'; break; + case 'operator': $icon = 'Operator'; break; + default: $icon = null; break; + } + $trail[$subject] = array( + 'title' => $lang['str'.$subject], + 'text' => $_REQUEST[$subject], + 'help' => 'pg.'.$subject, + 'icon' => $icon, + ); + } + } + } + + // Trail hook's place + $plugin_functions_parameters = array( + 'trail' => &$trail, + 'section' => $subject + ); + + $plugin_manager->do_hook('trail', $plugin_functions_parameters); + + return $trail; + } + + /** + * Display the navlinks + * + * @param $navlinks - An array with the the attributes and values that will be shown. See printLinksList for array format. + * @param $place - Place where the $navlinks are displayed. Like 'display-browse', where 'display' is the file (display.php) + * @param $env - Associative array of defined variables in the scope of the caller. + * Allows to give some environnement details to plugins. + * and 'browse' is the place inside that code (doBrowse). + */ + function printNavLinks($navlinks, $place, $env = array()) { + global $plugin_manager; + + // Navlinks hook's place + $plugin_functions_parameters = array( + 'navlinks' => &$navlinks, + 'place' => $place, + 'env' => $env + ); + $plugin_manager->do_hook('navlinks', $plugin_functions_parameters); + + if (count($navlinks) > 0) { + $this->printLinksList($navlinks, 'navlink'); + } + } + + + /** + * Do multi-page navigation. Displays the prev, next and page options. + * @param $page - the page currently viewed + * @param $pages - the maximum number of pages + * @param $gets - the parameters to include in the link to the wanted page + * @param $max_width - the number of pages to make available at any one time (default = 20) + */ + function printPages($page, $pages, $gets, $max_width = 20) { + global $lang; + + $window = 10; + + if ($page < 0 || $page > $pages) return; + if ($pages < 0) return; + if ($max_width <= 0) return; + + unset ($gets['page']); + $url = http_build_query($gets); + + if ($pages > 1) { + echo "

\n"; + if ($page != 1) { + echo "{$lang['strfirst']}\n"; + $temp = $page - 1; + echo "{$lang['strprev']}\n"; + } + + if ($page <= $window) { + $min_page = 1; + $max_page = min(2 * $window, $pages); + } + elseif ($page > $window && $pages >= $page + $window) { + $min_page = ($page - $window) + 1; + $max_page = $page + $window; + } + else { + $min_page = ($page - (2 * $window - ($pages - $page))) + 1; + $max_page = $pages; + } + + // Make sure min_page is always at least 1 + // and max_page is never greater than $pages + $min_page = max($min_page, 1); + $max_page = min($max_page, $pages); + + for ($i = $min_page; $i <= $max_page; $i++) { + #if ($i != $page) echo "$i\n"; + if ($i != $page) echo "$i\n"; + else echo "$i\n"; + } + if ($page != $pages) { + $temp = $page + 1; + echo "{$lang['strnext']}\n"; + echo "{$lang['strlast']}\n"; + } + echo "

\n"; + } + } + + /** + * Displays link to the context help. + * @param $str - the string that the context help is related to (already escaped) + * @param $help - help section identifier + */ + function printHelp($str, $help) { + global $lang, $data; + + echo $str; + if ($help) { + echo "{$lang['strhelpicon']}"; + } + } + + /** + * Outputs JavaScript to set default focus + * @param $object eg. forms[0].username + */ + function setFocus($object) { + echo "\n"; + } + + /** + * Outputs JavaScript to set the name of the browser window. + * @param $name the window name + * @param $addServer if true (default) then the server id is + * attached to the name. + */ + function setWindowName($name, $addServer = true) { + echo "\n"; + } + + /** + * Converts a PHP.INI size variable to bytes. Taken from publically available + * function by Chris DeRose, here: http://www.php.net/manual/en/configuration.directives.php#ini.file-uploads + * @param $strIniSize The PHP.INI variable + * @return size in bytes, false on failure + */ + function inisizeToBytes($strIniSize) { + // This function will take the string value of an ini 'size' parameter, + // and return a double (64-bit float) representing the number of bytes + // that the parameter represents. Or false if $strIniSize is unparseable. + $a_IniParts = array(); + + if (!is_string($strIniSize)) + return false; + + if (!preg_match ('/^(\d+)([bkm]*)$/i', $strIniSize,$a_IniParts)) + return false; + + $nSize = (double) $a_IniParts[1]; + $strUnit = strtolower($a_IniParts[2]); + + switch($strUnit) { + case 'm': + return ($nSize * (double) 1048576); + case 'k': + return ($nSize * (double) 1024); + case 'b': + default: + return $nSize; + } + } + + /** + * Returns URL given an action associative array. + * NOTE: this function does not html-escape, only url-escape + * @param $action An associative array of the follow properties: + * 'url' => The first part of the URL (before the ?) + * 'urlvars' => Associative array of (URL variable => field name) + * these are appended to the URL + * @param $fields Field data from which 'urlfield' and 'vars' are obtained. + */ + function getActionUrl(&$action, &$fields) { + $url = value($action['url'], $fields); + + if ($url === false) return ''; + + if (!empty($action['urlvars'])) { + $urlvars = value($action['urlvars'], $fields); + } else { + $urlvars = array(); + } + + /* set server, database and schema parameter if not presents */ + if (isset($urlvars['subject'])) + $subject = value($urlvars['subject'], $fields); + else + $subject = ''; + + if (isset($_REQUEST['server']) and !isset($urlvars['server']) and $subject != 'root') { + $urlvars['server'] = $_REQUEST['server']; + if (isset($_REQUEST['database']) and !isset($urlvars['database']) and $subject != 'server') { + $urlvars['database'] = $_REQUEST['database']; + if (isset($_REQUEST['schema']) and !isset($urlvars['schema']) and $subject != 'database') { + $urlvars['schema'] = $_REQUEST['schema']; + } + } + } + + $sep = '?'; + foreach ($urlvars as $var => $varfield) { + $url .= $sep . value_url($var, $fields) . '=' . value_url($varfield, $fields); + $sep = '&'; + } + + return $url; + } + + function getRequestVars($subject = '') { + $v = array(); + if (!empty($subject)) + $v['subject'] = $subject; + if (isset($_REQUEST['server']) && $subject != 'root') { + $v['server'] = $_REQUEST['server']; + if (isset($_REQUEST['database']) && $subject != 'server') { + $v['database'] = $_REQUEST['database']; + if (isset($_REQUEST['schema']) && $subject != 'database') { + $v['schema'] = $_REQUEST['schema']; + } + } + } + return $v; + } + + function printUrlVars(&$vars, &$fields) { + foreach ($vars as $var => $varfield) { + echo "{$var}=", urlencode($fields[$varfield]), "&"; + } + } + + /** + * Display a table of data. + * @param $tabledata A set of data to be formatted, as returned by $data->getDatabases() etc. + * @param $columns An associative array of columns to be displayed: + * $columns = array( + * column_id => array( + * 'title' => Column heading, + * 'class' => The class to apply on the column cells, + * 'field' => Field name for $tabledata->fields[...], + * 'help' => Help page for this column, + * ), ... + * ); + * @param $actions Actions that can be performed on each object: + * $actions = array( + * * multi action support + * * parameters are serialized for each entries and given in $_REQUEST['ma'] + * 'multiactions' => array( + * 'keycols' => Associative array of (URL variable => field name), // fields included in the form + * 'url' => URL submission, + * 'default' => Default selected action in the form. + * if null, an empty action is added & selected + * ), + * * actions * + * action_id => array( + * 'title' => Action heading, + * 'url' => Static part of URL. Often we rely + * relative urls, usually the page itself (not '' !), or just a query string, + * 'vars' => Associative array of (URL variable => field name), + * 'multiaction' => Name of the action to execute. + * Add this action to the multi action form + * ), ... + * ); + * @param $place Place where the $actions are displayed. Like 'display-browse', where 'display' is the file (display.php) + * and 'browse' is the place inside that code (doBrowse). + * @param $nodata (optional) Message to display if data set is empty. + * @param $pre_fn (optional) Name of a function to call for each row, + * it will be passed two params: $rowdata and $actions, + * it may be used to derive new fields or modify actions. + * It can return an array of actions specific to the row, + * or if nothing is returned then the standard actions are used. + * (see tblproperties.php and constraints.php for examples) + * The function must not must not store urls because + * they are relative and won't work out of context. + */ + function printTable(&$tabledata, &$columns, &$actions, $place, $nodata = null, $pre_fn = null) { + global $data, $conf, $misc, $lang, $plugin_manager; + + // Action buttons hook's place + $plugin_functions_parameters = array( + 'actionbuttons' => &$actions, + 'place' => $place + ); + $plugin_manager->do_hook('actionbuttons', $plugin_functions_parameters); + + if ($has_ma = isset($actions['multiactions'])) + $ma = $actions['multiactions']; + unset($actions['multiactions']); + + if ($tabledata->recordCount() > 0) { + + // Remove the 'comment' column if they have been disabled + if (!$conf['show_comments']) { + unset($columns['comment']); + } + + if (isset($columns['comment'])) { + // Uncomment this for clipped comments. + // TODO: This should be a user option. + //$columns['comment']['params']['clip'] = true; + } + + if ($has_ma) { + echo "\n"; + echo "
\n"; + if (isset($ma['vars'])) + foreach ($ma['vars'] as $k => $v) + echo ""; + } + + echo "\n"; + echo "\n"; + + // Handle cases where no class has been passed + if (isset($column['class'])) { + $class = $column['class'] !== '' ? " class=\"{$column['class']}\"":''; + } else { + $class = ''; + } + + // Display column headings + if ($has_ma) echo ""; + foreach ($columns as $column_id => $column) { + switch ($column_id) { + case 'actions': + if (sizeof($actions) > 0) echo "\n"; + break; + default: + echo "\n"; + break; + } + } + echo "\n"; + + // Display table rows + $i = 0; + while (!$tabledata->EOF) { + $id = ($i % 2) + 1; + + unset($alt_actions); + if (!is_null($pre_fn)) $alt_actions = $pre_fn($tabledata, $actions); + if (!isset($alt_actions)) $alt_actions =& $actions; + + echo "\n"; + if ($has_ma) { + foreach ($ma['keycols'] as $k => $v) + $a[$k] = $tabledata->fields[$v]; + echo "\n"; + } + + foreach ($columns as $column_id => $column) { + + // Apply default values for missing parameters + if (isset($column['url']) && !isset($column['vars'])) $column['vars'] = array(); + + switch ($column_id) { + case 'actions': + foreach ($alt_actions as $action) { + if (isset($action['disable']) && $action['disable'] === true) { + echo "\n"; + } else { + echo "\n"; + } + } + break; + case 'comment': + echo ""; + break; + default: + echo ""; + $val = value($column['field'], $tabledata->fields); + if (!is_null($val)) { + if (isset($column['url'])) { + echo "printUrlVars($column['vars'], $tabledata->fields); + echo "\">"; + } + $type = isset($column['type']) ? $column['type'] : null; + $params = isset($column['params']) ? $column['params'] : array(); + echo $misc->printVal($val, $type, $params); + if (isset($column['url'])) echo ""; + } + + echo "\n"; + break; + } + } + echo "\n"; + + $tabledata->moveNext(); + $i++; + } + echo "
{$column['title']}"; + if (isset($column['help'])) + $this->printHelp($column['title'], $column['help']); + else + echo $column['title']; + echo "
"; + echo ""; + echo ""; + $action['fields'] = $tabledata->fields; + $this->printLink($action); + echo ""; + $val = value($column['field'], $tabledata->fields); + if (!is_null($val)) { + echo htmlentities($val); + } + echo "
\n"; + + // Multi action table footer w/ options & [un]check'em all + if ($has_ma) { + // if default is not set or doesn't exist, set it to null + if (!isset($ma['default']) || !isset($actions[$ma['default']])) + $ma['default'] = null; + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "
{$lang['stractionsonmultiplelines']}
"; + echo "{$lang['strselectall']} / "; + echo "{$lang['strunselectall']} ---> \n"; + echo "\t\n"; + echo "\n"; + echo $misc->form; + echo "
\n"; + echo '
'; + }; + + return true; + } else { + if (!is_null($nodata)) { + echo "

{$nodata}

\n"; + } + return false; + } + } + + /** Produce XML data for the browser tree + * @param $treedata A set of records to populate the tree. + * @param $attrs Attributes for tree items + * 'text' - the text for the tree node + * 'icon' - an icon for node + * 'openIcon' - an alternative icon when the node is expanded + * 'toolTip' - tool tip text for the node + * 'action' - URL to visit when single clicking the node + * 'iconAction' - URL to visit when single clicking the icon node + * 'branch' - URL for child nodes (tree XML) + * 'expand' - the action to return XML for the subtree + * 'nodata' - message to display when node has no children + * @param $section The section where the branch is linked in the tree + */ + function printTree(&$_treedata, &$attrs, $section) { + global $plugin_manager; + + $treedata = array(); + + if ($_treedata->recordCount() > 0) { + while (!$_treedata->EOF) { + $treedata[] = $_treedata->fields; + $_treedata->moveNext(); + } + } + + $tree_params = array( + 'treedata' => &$treedata, + 'attrs' => &$attrs, + 'section' => $section + ); + + $plugin_manager->do_hook('tree', $tree_params); + + $this->printTreeXML($treedata, $attrs); + } + + /** Produce XML data for the browser tree + * @param $treedata A set of records to populate the tree. + * @param $attrs Attributes for tree items + * 'text' - the text for the tree node + * 'icon' - an icon for node + * 'openIcon' - an alternative icon when the node is expanded + * 'toolTip' - tool tip text for the node + * 'action' - URL to visit when single clicking the node + * 'iconAction' - URL to visit when single clicking the icon node + * 'branch' - URL for child nodes (tree XML) + * 'expand' - the action to return XML for the subtree + * 'nodata' - message to display when node has no children + */ + function printTreeXML(&$treedata, &$attrs) { + global $conf, $lang; + + header("Content-Type: text/xml; charset=UTF-8"); + header("Cache-Control: no-cache"); + + echo "\n"; + + echo "\n"; + + if (count($treedata) > 0) { + foreach($treedata as $rec) { + + echo "icon(value($attrs['icon'], $rec)); + echo value_xml_attr('icon', $icon, $rec); + echo value_xml_attr('iconaction', $attrs['iconAction'], $rec); + + if (!empty($attrs['openicon'])) { + $icon = $this->icon(value($attrs['openIcon'], $rec)); + } + echo value_xml_attr('openicon', $icon, $rec); + + echo value_xml_attr('tooltip', $attrs['toolTip'], $rec); + + echo " />\n"; + } + } else { + $msg = isset($attrs['nodata']) ? $attrs['nodata'] : $lang['strnoobjects']; + echo "icon('ObjectNotFound'), "\" />\n"; + } + + echo "\n"; + } + + function adjustTabsForTree(&$tabs) { + include_once('./classes/ArrayRecordSet.php'); + + foreach ($tabs as $i => $tab) { + if ((isset($tab['hide']) && $tab['hide'] === true) || (isset($tab['tree']) && $tab['tree'] === false)) { + unset($tabs[$i]); + } + } + return new ArrayRecordSet($tabs); + } + + function icon($icon) { + if (is_string($icon)) { + global $conf; + $path = "images/themes/{$conf['theme']}/{$icon}"; + if (file_exists($path.'.png')) return $path.'.png'; + if (file_exists($path.'.gif')) return $path.'.gif'; + $path = "images/themes/default/{$icon}"; + if (file_exists($path.'.png')) return $path.'.png'; + if (file_exists($path.'.gif')) return $path.'.gif'; + } + else { + // Icon from plugins + $path = "plugins/{$icon[0]}/images/{$icon[1]}"; + if (file_exists($path.'.png')) return $path.'.png'; + if (file_exists($path.'.gif')) return $path.'.gif'; + } + return ''; + } + + /** + * Function to escape command line parameters + * @param $str The string to escape + * @return The escaped string + */ + function escapeShellArg($str) { + global $data, $lang; + + if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { + // Due to annoying PHP bugs, shell arguments cannot be escaped + // (command simply fails), so we cannot allow complex objects + // to be dumped. + if (preg_match('/^[_.[:alnum:]]+$/', $str)) + return $str; + else { + echo $lang['strcannotdumponwindows']; + exit; + } + } + else + return escapeshellarg($str); + } + + /** + * Function to escape command line programs + * @param $str The string to escape + * @return The escaped string + */ + function escapeShellCmd($str) { + global $data; + + if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { + $data->fieldClean($str); + return '"' . $str . '"'; + } + else + return escapeshellcmd($str); + } + + /** + * Get list of servers' groups if existing in the conf + * @return a recordset of servers' groups + */ + function getServersGroups($recordset = false, $group_id = false) { + global $conf, $lang; + $grps = array(); + + if (isset($conf['srv_groups'])) { + foreach ($conf['srv_groups'] as $i => $group) { + if ( + (($group_id === false) and (! isset($group['parents']))) /* root */ + or ( + ($group_id !== false) + and isset($group['parents']) + and in_array($group_id,explode(',', + preg_replace('/\s/', '', $group['parents']) + )) + ) /* nested group */ + ) + $grps[$i] = array( + 'id' => $i, + 'desc' => $group['desc'], + 'icon' => 'Servers', + 'action' => url('servers.php', + array( + 'group' => field('id') + ) + ), + 'branch' => url('servers.php', + array( + 'action' => 'tree', + 'group' => $i + ) + ) + ); + } + + if ($group_id === false) + $grps['all'] = array( + 'id' => 'all', + 'desc' => $lang['strallservers'], + 'icon' => 'Servers', + 'action' => url('servers.php', + array( + 'group' => field('id') + ) + ), + 'branch' => url('servers.php', + array( + 'action' => 'tree', + 'group' => 'all' + ) + ) + ); + } + + if ($recordset) { + include_once('./classes/ArrayRecordSet.php'); + return new ArrayRecordSet($grps); + } + + return $grps; + } + + + /** + * Get list of servers + * @param $recordset return as RecordSet suitable for printTable if true, + * otherwise just return an array. + * @param $group a group name to filter the returned servers using $conf[srv_groups] + */ + function getServers($recordset = false, $group = false) { + global $conf; + + $logins = isset($_SESSION['webdbLogin']) && is_array($_SESSION['webdbLogin']) ? $_SESSION['webdbLogin'] : array(); + $srvs = array(); + + if (($group !== false) and ($group !== 'all')) + if (isset($conf['srv_groups'][$group]['servers'])) + $group = array_fill_keys(explode(',', preg_replace('/\s/', '', + $conf['srv_groups'][$group]['servers'])), 1); + else + $group = ''; + + foreach($conf['servers'] as $idx => $info) { + $server_id = $info['host'].':'.$info['port'].':'.$info['sslmode']; + if (($group === false) + or (isset($group[$idx])) + or ($group === 'all') + ) { + $server_id = $info['host'].':'.$info['port'].':'.$info['sslmode']; + + if (isset($logins[$server_id])) $srvs[$server_id] = $logins[$server_id]; + else $srvs[$server_id] = $info; + + $srvs[$server_id]['id'] = $server_id; + $srvs[$server_id]['action'] = url('redirect.php', + array( + 'subject' => 'server', + 'server' => field('id') + ) + ); + if (isset($srvs[$server_id]['username'])) { + $srvs[$server_id]['icon'] = 'Server'; + $srvs[$server_id]['branch'] = url('all_db.php', + array( + 'action' => 'tree', + 'subject' => 'server', + 'server' => field('id') + ) + ); + } + else { + $srvs[$server_id]['icon'] = 'DisconnectedServer'; + $srvs[$server_id]['branch'] = false; + } + } + } + + function _cmp_desc($a, $b) { + return strcmp($a['desc'], $b['desc']); + } + uasort($srvs, '_cmp_desc'); + + if ($recordset) { + include_once('./classes/ArrayRecordSet.php'); + return new ArrayRecordSet($srvs); + } + return $srvs; + } + + /** + * Validate and retrieve information on a server. + * If the parameter isn't supplied then the currently + * connected server is returned. + * @param $server_id A server identifier (host:port) + * @return An associative array of server properties + */ + function getServerInfo($server_id = null) { + global $conf, $_reload_browser, $lang; + + if ($server_id === null && isset($_REQUEST['server'])) + $server_id = $_REQUEST['server']; + + // Check for the server in the logged-in list + if (isset($_SESSION['webdbLogin'][$server_id])) + return $_SESSION['webdbLogin'][$server_id]; + + // Otherwise, look for it in the conf file + foreach($conf['servers'] as $idx => $info) { + if ($server_id == $info['host'].':'.$info['port'].':'.$info['sslmode']) { + // Automatically use shared credentials if available + if (!isset($info['username']) && isset($_SESSION['sharedUsername'])) { + $info['username'] = $_SESSION['sharedUsername']; + $info['password'] = $_SESSION['sharedPassword']; + $_reload_browser = true; + $this->setServerInfo(null, $info, $server_id); + } + + return $info; + } + } + + if ($server_id === null){ + return null; + } else { + // Unable to find a matching server, are we being hacked? + echo $lang['strinvalidserverparam']; + exit; + } + } + + /** + * Set server information. + * @param $key parameter name to set, or null to replace all + * params with the assoc-array in $value. + * @param $value the new value, or null to unset the parameter + * @param $server_id the server identifier, or null for current + * server. + */ + function setServerInfo($key, $value, $server_id = null) + { + if ($server_id === null && isset($_REQUEST['server'])) + $server_id = $_REQUEST['server']; + + if ($key === null) { + if ($value === null) + unset($_SESSION['webdbLogin'][$server_id]); + else + $_SESSION['webdbLogin'][$server_id] = $value; + } else { + if ($value === null) + unset($_SESSION['webdbLogin'][$server_id][$key]); + else + $_SESSION['webdbLogin'][$server_id][$key] = $value; + } + } + + /** + * Set the current schema + * @param $schema The schema name + * @return 0 on success + * @return $data->seSchema() on error + */ + function setCurrentSchema($schema) { + global $data; + + $status = $data->setSchema($schema); + if($status != 0) + return $status; + + $_REQUEST['schema'] = $schema; + $this->setHREF(); + return 0; + } + + /** + * Save the given SQL script in the history + * of the database and server. + * @param $script the SQL script to save. + */ + function saveScriptHistory($script) { + list($usec, $sec) = explode(' ', microtime()); + $time = ((float)$usec + (float)$sec); + $_SESSION['history'][$_REQUEST['server']][$_REQUEST['database']]["$time"] = array( + 'query' => $script, + 'paginate' => (!isset($_REQUEST['paginate'])? 'f':'t'), + 'queryid' => $time, + ); + } + + /* + * Output dropdown list to select server and + * databases form the popups windows. + * @param $onchange Javascript action to take when selections change. + */ + function printConnection($onchange) { + global $data, $lang, $misc; + + echo "
\n"; + echo ""; + echo ": \n\n"; + + // Get the list of all databases + $databases = $data->getDatabases(); + + if ($databases->recordCount() > 0) { + + echo "\n"; + } + else { + $server_info = $misc->getServerInfo(); + echo "\n"; + } + + echo "
\n"; + } + + /** + * returns an array representing FKs definition for a table, sorted by fields + * or by constraint. + * @param $table The table to retrieve FK contraints from + * @returns the array of FK definition: + * array( + * 'byconstr' => array( + * constrain id => array( + * confrelid => foreign relation oid + * f_schema => foreign schema name + * f_table => foreign table name + * pattnums => array of parent's fields nums + * pattnames => array of parent's fields names + * fattnames => array of foreign attributes names + * ) + * ), + * 'byfield' => array( + * attribute num => array (constraint id, ...) + * ), + * 'code' => HTML/js code to include in the page for auto-completion + * ) + **/ + function getAutocompleteFKProperties($table) { + global $data; + + $fksprops = array( + 'byconstr' => array(), + 'byfield' => array(), + 'code' => '' + ); + + $constrs = $data->getConstraintsWithFields($table); + + if (!$constrs->EOF) { + $conrelid = $constrs->fields['conrelid']; + while(!$constrs->EOF) { + if ($constrs->fields['contype'] == 'f') { + if (!isset($fksprops['byconstr'][$constrs->fields['conid']])) { + $fksprops['byconstr'][$constrs->fields['conid']] = array ( + 'confrelid' => $constrs->fields['confrelid'], + 'f_table' => $constrs->fields['f_table'], + 'f_schema' => $constrs->fields['f_schema'], + 'pattnums' => array(), + 'pattnames' => array(), + 'fattnames' => array() + ); + } + + $fksprops['byconstr'][$constrs->fields['conid']]['pattnums'][] = $constrs->fields['p_attnum']; + $fksprops['byconstr'][$constrs->fields['conid']]['pattnames'][] = $constrs->fields['p_field']; + $fksprops['byconstr'][$constrs->fields['conid']]['fattnames'][] = $constrs->fields['f_field']; + + if (!isset($fksprops['byfield'][$constrs->fields['p_attnum']])) + $fksprops['byfield'][$constrs->fields['p_attnum']] = array(); + $fksprops['byfield'][$constrs->fields['p_attnum']][] = $constrs->fields['conid']; + } + $constrs->moveNext(); + } + + $fksprops['code'] = "\n"; + + $fksprops['code'] .= '
'; + $fksprops['code'] .= '
'; + $fksprops['code'] .= ''; + } + + else /* we have no foreign keys on this table */ + return false; + + return $fksprops; + } + } +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/Plugin.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/Plugin.php new file mode 100644 index 00000000..e3bea046 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/Plugin.php @@ -0,0 +1,68 @@ +get_name(); + + if (file_exists("{$plugin_directory}/lang")) { + if (file_exists("{$plugin_directory}/lang/english.php")) { + require_once("{$plugin_directory}/lang/english.php"); + } + + if (file_exists("{$plugin_directory}/lang/{$language}.php")) { + include_once("{$plugin_directory}/lang/{$language}.php"); + } + + $this->lang = $plugin_lang; + } + + if (file_exists("{$plugin_directory}/conf/config.inc.php")) { + include_once("{$plugin_directory}/conf/config.inc.php"); + $this->conf = $plugin_conf; + } + } + + abstract function get_hooks(); + + abstract function get_actions(); + + /** + * In some page (display, sql, ...), a "return" link will show up if + * $_GET['return'] = 'plugin' is given. The "get_subject_params" method + * of the plugin designated by $_GET['plugin'] is then called to add needed + * parameters in the href URL. + * This method can returns parameters based on context from $_REQUEST. See + * plugin Report as example. + * + * @returns an associative of parameter_name => value + */ + function get_subject_params() { + $vars = array(); + return $vars; + } + + /** + * Get the plugin name, that will be used as identification + * @return $name + */ + function get_name() { + return $this->name; + } + + /** + * Returns the structure suitable for the method $misc->icon() to print + * the given icon. + * @param $img - The icon name + * @return the information suitable for the method $misc->icon() + */ + function icon($img) { + return array($this->name, $img); + } +} +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/PluginManager.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/PluginManager.php new file mode 100644 index 00000000..981266e0 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/PluginManager.php @@ -0,0 +1,137 @@ +add_plugin($plugin); + } + catch (Exception $e) { + continue; + } + } else { + printf($lang['strpluginnotfound']."\t\n", $activated_plugin); + exit; + } + } + } + + /** + * Add a plugin in the list of plugins to manage + * @param $plugin - Instance from plugin + */ + function add_plugin($plugin) { + global $lang; + + //The $plugin_name is the identification of the plugin. + //Example: PluginExample is the identification for PluginExample + //It will be used to get a specific plugin from the plugins_list. + $plugin_name = $plugin->get_name(); + $this->plugins_list[$plugin_name] = $plugin; + + //Register the plugin's functions + $hooks = $plugin->get_hooks(); + foreach ($hooks as $hook => $functions) { + if (!in_array($hook, $this->available_hooks)) { + printf($lang['strhooknotfound']."\t\n", $hook); + exit; + } + $this->hooks[$hook][$plugin_name] = $functions; + } + + //Register the plugin's actions + $actions = $plugin->get_actions(); + $this->actions[$plugin_name] = $actions; + } + + function getPlugin($plugin) { + if (isset($this->plugins_list[$plugin])) + return $this->plugins_list[$plugin]; + + return null; + } + + /** + * Execute the plugins hook functions when needed. + * @param $hook - The place where the function will be called + * @param $function_args - An array reference with arguments to give to called function + */ + function do_hook($hook, &$function_args) { + if (isset($this->hooks[$hook])) { + foreach ($this->hooks[$hook] as $plugin_name => $functions) { + $plugin = $this->plugins_list[$plugin_name]; + foreach ($functions as $function) { + if (method_exists($plugin, $function)) { + call_user_func(array($plugin, $function), $function_args); + } + } + } + } + } + + /** + * Execute a plugin's action + * @param $plugin_name - The plugin name. + * @param $action - action that will be executed. + */ + function do_action($plugin_name, $action) { + global $lang; + + if (!isset($this->plugins_list[$plugin_name])) { + // Show an error and stop the application + printf($lang['strpluginnotfound']."\t\n", $plugin_name); + exit; + } + $plugin = $this->plugins_list[$plugin_name]; + + // Check if the plugin's method exists and if this method is an declared action. + if (method_exists($plugin, $action) and in_array($action, $this->actions[$plugin_name])) { + call_user_func(array($plugin, $action)); + } + else { + // Show an error and stop the application + printf($lang['stractionnotfound']."\t\n", $action, $plugin_name); + exit; + } + } +} +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/class.select.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/class.select.php new file mode 100644 index 00000000..057c8d6e --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/class.select.php @@ -0,0 +1,217 @@ +_element = $this->is_element(); + + } + + function set_style($style) { + $this->set_attribute('style', $style); + } + + function set_class($class) { + $this->set_attribute('class', $class); + } + + + function is_element() { + return + str_replace('xhtml_', '', strtolower(get_class($this))); + } + + /** + * Private function generates xhtml + * @access private + */ + function _html() { + $this->_htmlcode = "<"; + foreach ($this->_attributeCollection as $attribute => $value) { + if (!empty($value)) $this->_htmlcode .= " {$attribute}=\"{$value}\""; + } + $this->_htmlcode .= "/>"; + + return $this->_htmlcode; + } + + /** + * Returns xhtml code + * + */ + function fetch() { + return $this->_html(); + } + /** + * Echoes xhtml + * + */ + function show() { + echo $this->fetch(); + } + + function set_attribute($attr, $value) { + $this->_attributes[$attr] = $value; + } + + +} + +/** +* XHtmlElement +* +* Used to generate Xhtml-Code for xhtml elements +* that can contain child elements +* +* +*/ +class XHtmlElement extends XHtmlSimpleElement { + var $_text = null; + var $_htmlcode = ""; + var $_siblings = array(); + + function XHtmlElement($text = null) { + XHtmlSimpleElement::XHtmlSimpleElement(); + + if ($text) $this->set_text($text); + } + + /* + * Adds an xhtml child to element + * + * @param XHtmlElement The element to become a child of element + */ + function add(&$object) { + array_push($this->_siblings, $object); + } + + + /* + * The CDATA section of Element + * + * @param string Text + */ + function set_text($text) { + if ($text) $this->_text = htmlspecialchars($text); + } + + function fetch() { + return $this->_html(); + } + + + function _html() { + + $this->_htmlcode = "<{$this->_element}"; + foreach ($this->_attributes as $attribute =>$value) { + if (!empty($value)) $this->_htmlcode .= " {$attribute} =\"{$value}\""; + } + $this->_htmlcode .= ">"; + + + if ($this->_text) { + $this->_htmlcode .= $this->_text; + } + + foreach ($this->_siblings as $obj) { + $this->_htmlcode .= $obj->fetch(); + } + + $this->_htmlcode .= "_element}>"; + + return $this->_htmlcode; + } + + /* + * Returns siblings of Element + * + */ + function get_siblings() { + return $this->_siblings; + } + + function has_siblings() { + return (count($this->_siblings) != 0); + } +} + +class XHTML_Button extends XHtmlElement { + function XHTML_Button ($name, $text = null) { + parent::XHtmlElement(); + + $this->set_attribute("name", $name); + + if ($text) $this->set_text($text); + } +} + + +class XHTML_Option extends XHtmlElement { + function XHTML_Option($text, $value = null) { + XHtmlElement::XHtmlElement(null); + $this->set_text($text); + } +} + + +class XHTML_Select extends XHTMLElement { + var $_data; + + function XHTML_Select ($name, $multiple = false, $size = null) { + XHtmlElement::XHtmlElement(); + + $this->set_attribute("name", $name); + if ($multiple) $this->set_attribute("multiple","multiple"); + if ($size) $this->set_attribute("size",$size); + + + } + + function set_data(&$data, $delim = ",") { + switch (gettype($data)) { + case "string": + $this->_data = explode($delim, $data); + break; + case "array": + $this->_data = $data; + break; + + default: + break; + } + } + + function fetch() { + if (isset($this->_data) && $this->_data) { + foreach ($this->_data as $value) { $this->add(new XHTML_Option($value)); } + } + return parent::fetch(); + } + +} + + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/ADODB_base.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/ADODB_base.php new file mode 100644 index 00000000..816d6930 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/ADODB_base.php @@ -0,0 +1,359 @@ +conn = $conn; + } + + /** + * Turns on or off query debugging + * @param $debug True to turn on debugging, false otherwise + */ + function setDebug($debug) { + $this->conn->debug = $debug; + } + + /** + * Cleans (escapes) a string + * @param $str The string to clean, by reference + * @return The cleaned string + */ + function clean(&$str) { + $str = addslashes($str); + return $str; + } + + /** + * Cleans (escapes) an object name (eg. table, field) + * @param $str The string to clean, by reference + * @return The cleaned string + */ + function fieldClean(&$str) { + $str = str_replace('"', '""', $str); + return $str; + } + + /** + * Cleans (escapes) an array + * @param $arr The array to clean, by reference + * @return The cleaned array + */ + function arrayClean(&$arr) { + reset($arr); + while(list($k, $v) = each($arr)) + $arr[$k] = addslashes($v); + return $arr; + } + + /** + * Executes a query on the underlying connection + * @param $sql The SQL query to execute + * @return A recordset + */ + function execute($sql) { + // Execute the statement + $rs = $this->conn->Execute($sql); + + // If failure, return error value + return $this->conn->ErrorNo(); + } + + /** + * Closes the connection the database class + * relies on. + */ + function close() { + $this->conn->close(); + } + + /** + * Retrieves a ResultSet from a query + * @param $sql The SQL statement to be executed + * @return A recordset + */ + function selectSet($sql) { + // Execute the statement + $rs = $this->conn->Execute($sql); + + if (!$rs) return $this->conn->ErrorNo(); + + return $rs; + } + + /** + * Retrieves a single value from a query + * + * @@ assumes that the query will return only one row - returns field value in the first row + * + * @param $sql The SQL statement to be executed + * @param $field The field name to be returned + * @return A single field value + * @return -1 No rows were found + */ + function selectField($sql, $field) { + // Execute the statement + $rs = $this->conn->Execute($sql); + + // If failure, or no rows returned, return error value + if (!$rs) return $this->conn->ErrorNo(); + elseif ($rs->RecordCount() == 0) return -1; + + return $rs->fields[$field]; + } + + /** + * Delete from the database + * @param $table The name of the table + * @param $conditions (array) A map of field names to conditions + * @param $schema (optional) The table's schema + * @return 0 success + * @return -1 on referential integrity violation + * @return -2 on no rows deleted + */ + function delete($table, $conditions, $schema = '') { + $this->fieldClean($table); + + reset($conditions); + + if (!empty($schema)) { + $this->fieldClean($schema); + $schema = "\"{$schema}\"."; + } + + // Build clause + $sql = ''; + while(list($key, $value) = each($conditions)) { + $this->clean($key); + $this->clean($value); + if ($sql) $sql .= " AND \"{$key}\"='{$value}'"; + else $sql = "DELETE FROM {$schema}\"{$table}\" WHERE \"{$key}\"='{$value}'"; + } + + // Check for failures + if (!$this->conn->Execute($sql)) { + // Check for referential integrity failure + if (stristr($this->conn->ErrorMsg(), 'referential')) + return -1; + } + + // Check for no rows modified + if ($this->conn->Affected_Rows() == 0) return -2; + + return $this->conn->ErrorNo(); + } + + /** + * Insert a set of values into the database + * @param $table The table to insert into + * @param $vars (array) A mapping of the field names to the values to be inserted + * @return 0 success + * @return -1 if a unique constraint is violated + * @return -2 if a referential constraint is violated + */ + function insert($table, $vars) { + $this->fieldClean($table); + + // Build clause + if (sizeof($vars) > 0) { + $fields = ''; + $values = ''; + foreach($vars as $key => $value) { + $this->clean($key); + $this->clean($value); + + if ($fields) $fields .= ", \"{$key}\""; + else $fields = "INSERT INTO \"{$table}\" (\"{$key}\""; + + if ($values) $values .= ", '{$value}'"; + else $values = ") VALUES ('{$value}'"; + } + $sql = $fields . $values . ')'; + } + + // Check for failures + if (!$this->conn->Execute($sql)) { + // Check for unique constraint failure + if (stristr($this->conn->ErrorMsg(), 'unique')) + return -1; + // Check for referential integrity failure + elseif (stristr($this->conn->ErrorMsg(), 'referential')) + return -2; + } + + return $this->conn->ErrorNo(); + } + + /** + * Update a row in the database + * @param $table The table that is to be updated + * @param $vars (array) A mapping of the field names to the values to be updated + * @param $where (array) A mapping of field names to values for the where clause + * @param $nulls (array, optional) An array of fields to be set null + * @return 0 success + * @return -1 if a unique constraint is violated + * @return -2 if a referential constraint is violated + * @return -3 on no rows deleted + */ + function update($table, $vars, $where, $nulls = array()) { + $this->fieldClean($table); + + $setClause = ''; + $whereClause = ''; + + // Populate the syntax arrays + reset($vars); + while(list($key, $value) = each($vars)) { + $this->fieldClean($key); + $this->clean($value); + if ($setClause) $setClause .= ", \"{$key}\"='{$value}'"; + else $setClause = "UPDATE \"{$table}\" SET \"{$key}\"='{$value}'"; + } + + reset($nulls); + while(list(, $value) = each($nulls)) { + $this->fieldClean($value); + if ($setClause) $setClause .= ", \"{$value}\"=NULL"; + else $setClause = "UPDATE \"{$table}\" SET \"{$value}\"=NULL"; + } + + reset($where); + while(list($key, $value) = each($where)) { + $this->fieldClean($key); + $this->clean($value); + if ($whereClause) $whereClause .= " AND \"{$key}\"='{$value}'"; + else $whereClause = " WHERE \"{$key}\"='{$value}'"; + } + + // Check for failures + if (!$this->conn->Execute($setClause . $whereClause)) { + // Check for unique constraint failure + if (stristr($this->conn->ErrorMsg(), 'unique')) + return -1; + // Check for referential integrity failure + elseif (stristr($this->conn->ErrorMsg(), 'referential')) + return -2; + } + + // Check for no rows modified + if ($this->conn->Affected_Rows() == 0) return -3; + + return $this->conn->ErrorNo(); + } + + /** + * Begin a transaction + * @return 0 success + */ + function beginTransaction() { + return !$this->conn->BeginTrans(); + } + + /** + * End a transaction + * @return 0 success + */ + function endTransaction() { + return !$this->conn->CommitTrans(); + } + + /** + * Roll back a transaction + * @return 0 success + */ + function rollbackTransaction() { + return !$this->conn->RollbackTrans(); + } + + /** + * Get the backend platform + * @return The backend platform + */ + function getPlatform() { + //return $this->conn->platform; + return "UNKNOWN"; + } + + // Type conversion routines + + /** + * Change the value of a parameter to database representation depending on whether it evaluates to true or false + * @param $parameter the parameter + */ + function dbBool(&$parameter) { + return $parameter; + } + + /** + * Change a parameter from database representation to a boolean, (others evaluate to false) + * @param $parameter the parameter + */ + function phpBool($parameter) { + return $parameter; + } + + /** + * Change a db array into a PHP array + * @param $arr String representing the DB array + * @return A PHP array + */ + function phpArray($dbarr) { + // Take off the first and last characters (the braces) + $arr = substr($dbarr, 1, strlen($dbarr) - 2); + + // Pick out array entries by carefully parsing. This is necessary in order + // to cope with double quotes and commas, etc. + $elements = array(); + $i = $j = 0; + $in_quotes = false; + while ($i < strlen($arr)) { + // If current char is a double quote and it's not escaped, then + // enter quoted bit + $char = substr($arr, $i, 1); + if ($char == '"' && ($i == 0 || substr($arr, $i - 1, 1) != '\\')) + $in_quotes = !$in_quotes; + elseif ($char == ',' && !$in_quotes) { + // Add text so far to the array + $elements[] = substr($arr, $j, $i - $j); + $j = $i + 1; + } + $i++; + } + // Add final text to the array + $elements[] = substr($arr, $j); + + // Do one further loop over the elements array to remote double quoting + // and escaping of double quotes and backslashes + for ($i = 0; $i < sizeof($elements); $i++) { + $v = $elements[$i]; + if (strpos($v, '"') === 0) { + $v = substr($v, 1, strlen($v) - 2); + $v = str_replace('\\"', '"', $v); + $v = str_replace('\\\\', '\\', $v); + $elements[$i] = $v; + } + } + + return $elements; + } +} + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Connection.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Connection.php new file mode 100644 index 00000000..eb22cd21 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Connection.php @@ -0,0 +1,121 @@ +conn = ADONewConnection('postgres7'); + $this->conn->setFetchMode($fetchMode); + + // Ignore host if null + if ($host === null || $host == '') + if ($port !== null && $port != '') + $pghost = ':'.$port; + else + $pghost = ''; + else + $pghost = "{$host}:{$port}"; + + // Add sslmode to $pghost as needed + if (($sslmode == 'disable') || ($sslmode == 'allow') || ($sslmode == 'prefer') || ($sslmode == 'require')) { + $pghost .= ':'.$sslmode; + } elseif ($sslmode == 'legacy') { + $pghost .= ' requiressl=1'; + } + + $this->conn->connect($pghost, $user, $password, $database); + } + + /** + * Gets the name of the correct database driver to use. As a side effect, + * sets the platform. + * @param (return-by-ref) $description A description of the database and version + * @return The class name of the driver eg. Postgres84 + * @return null if version is < 7.4 + * @return -3 Database-specific failure + */ + function getDriver(&$description) { + + $v = pg_version($this->conn->_connectionID); + if (isset($v['server'])) $version = $v['server']; + + // If we didn't manage to get the version without a query, query... + if (!isset($version)) { + $adodb = new ADODB_base($this->conn); + + $sql = "SELECT VERSION() AS version"; + $field = $adodb->selectField($sql, 'version'); + + // Check the platform, if it's mingw, set it + if (preg_match('/ mingw /i', $field)) + $this->platform = 'MINGW'; + + $params = explode(' ', $field); + if (!isset($params[1])) return -3; + + $version = $params[1]; // eg. 8.4.4 + } + + $description = "PostgreSQL {$version}"; + + // Detect version and choose appropriate database driver + switch (substr($version,0,2)) { + case '10': return 'Postgres10';break; + case '11': return 'Postgres11';break; + case '12': return 'Postgres';break; + } + + switch (substr($version,0,3)) { + case '9.6': return 'Postgres96'; break; + case '9.5': return 'Postgres95'; break; + case '9.4': return 'Postgres94'; break; + case '9.3': return 'Postgres93'; break; + case '9.2': return 'Postgres92'; break; + case '9.1': return 'Postgres91'; break; + case '9.0': return 'Postgres90'; break; + case '8.4': return 'Postgres84'; break; + case '8.3': return 'Postgres83'; break; + case '8.2': return 'Postgres82'; break; + case '8.1': return 'Postgres81'; break; + case '8.0': + case '7.5': return 'Postgres80'; break; + case '7.4': return 'Postgres74'; break; + } + + /* All <7.4 versions are not supported */ + // if major version is 7 or less and wasn't cought in the + // switch/case block, we have an unsupported version. + if ((int)substr($version, 0, 1) < 8) + return null; + + // If unknown version, then default to latest driver + return 'Postgres'; + + } + + /** + * Get the last error in the connection + * @return Error string + */ + function getLastError() { + return pg_last_error($this->conn->_connectionID); + } +} + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres.php new file mode 100644 index 00000000..ee19990f --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres.php @@ -0,0 +1,8013 @@ + 'BIG5', + 'EUC_CN' => 'GB2312', + 'EUC_JP' => 'EUC-JP', + 'EUC_KR' => 'EUC-KR', + 'EUC_TW' => 'EUC-TW', + 'GB18030' => 'GB18030', + 'GBK' => 'GB2312', + 'ISO_8859_5' => 'ISO-8859-5', + 'ISO_8859_6' => 'ISO-8859-6', + 'ISO_8859_7' => 'ISO-8859-7', + 'ISO_8859_8' => 'ISO-8859-8', + 'JOHAB' => 'CP1361', + 'KOI8' => 'KOI8-R', + 'LATIN1' => 'ISO-8859-1', + 'LATIN2' => 'ISO-8859-2', + 'LATIN3' => 'ISO-8859-3', + 'LATIN4' => 'ISO-8859-4', + 'LATIN5' => 'ISO-8859-9', + 'LATIN6' => 'ISO-8859-10', + 'LATIN7' => 'ISO-8859-13', + 'LATIN8' => 'ISO-8859-14', + 'LATIN9' => 'ISO-8859-15', + 'LATIN10' => 'ISO-8859-16', + 'SJIS' => 'SHIFT_JIS', + 'SQL_ASCII' => 'US-ASCII', + 'UHC' => 'WIN949', + 'UTF8' => 'UTF-8', + 'WIN866' => 'CP866', + 'WIN874' => 'CP874', + 'WIN1250' => 'CP1250', + 'WIN1251' => 'CP1251', + 'WIN1252' => 'CP1252', + 'WIN1256' => 'CP1256', + 'WIN1258' => 'CP1258' + ); + var $defaultprops = array('', '', ''); + // Extra "magic" types. BIGSERIAL was added in PostgreSQL 7.2. + var $extraTypes = array('SERIAL', 'BIGSERIAL'); + // Foreign key stuff. First element MUST be the default. + var $fkactions = array('NO ACTION', 'RESTRICT', 'CASCADE', 'SET NULL', 'SET DEFAULT'); + var $fkdeferrable = array('NOT DEFERRABLE', 'DEFERRABLE'); + var $fkinitial = array('INITIALLY IMMEDIATE', 'INITIALLY DEFERRED'); + var $fkmatches = array('MATCH SIMPLE', 'MATCH FULL'); + // Function properties + var $funcprops = array( array('', 'VOLATILE', 'IMMUTABLE', 'STABLE'), + array('', 'CALLED ON NULL INPUT', 'RETURNS NULL ON NULL INPUT'), + array('', 'SECURITY INVOKER', 'SECURITY DEFINER')); + // Default help URL + var $help_base; + // Help sub pages + var $help_page; + // Name of id column + var $id = 'oid'; + // Supported join operations for use with view wizard + var $joinOps = array('INNER JOIN' => 'INNER JOIN', 'LEFT JOIN' => 'LEFT JOIN', 'RIGHT JOIN' => 'RIGHT JOIN', 'FULL JOIN' => 'FULL JOIN'); + // Map of internal language name to syntax highlighting name + var $langmap = array( + 'sql' => 'SQL', + 'plpgsql' => 'SQL', + 'php' => 'PHP', + 'phpu' => 'PHP', + 'plphp' => 'PHP', + 'plphpu' => 'PHP', + 'perl' => 'Perl', + 'perlu' => 'Perl', + 'plperl' => 'Perl', + 'plperlu' => 'Perl', + 'java' => 'Java', + 'javau' => 'Java', + 'pljava' => 'Java', + 'pljavau' => 'Java', + 'plj' => 'Java', + 'plju' => 'Java', + 'python' => 'Python', + 'pythonu' => 'Python', + 'plpython' => 'Python', + 'plpythonu' => 'Python', + 'ruby' => 'Ruby', + 'rubyu' => 'Ruby', + 'plruby' => 'Ruby', + 'plrubyu' => 'Ruby' + ); + // Predefined size types + var $predefined_size_types = array('abstime','aclitem','bigserial','boolean','bytea','cid','cidr','circle','date','float4','float8','gtsvector','inet','int2','int4','int8','macaddr','money','oid','path','polygon','refcursor','regclass','regoper','regoperator','regproc','regprocedure','regtype','reltime','serial','smgr','text','tid','tinterval','tsquery','tsvector','varbit','void','xid'); + // List of all legal privileges that can be applied to different types + // of objects. + var $privlist = array( + 'table' => array('SELECT', 'INSERT', 'UPDATE', 'DELETE', 'REFERENCES', 'TRIGGER', 'ALL PRIVILEGES'), + 'view' => array('SELECT', 'INSERT', 'UPDATE', 'DELETE', 'REFERENCES', 'TRIGGER', 'ALL PRIVILEGES'), + 'sequence' => array('SELECT', 'UPDATE', 'ALL PRIVILEGES'), + 'database' => array('CREATE', 'TEMPORARY', 'CONNECT', 'ALL PRIVILEGES'), + 'function' => array('EXECUTE', 'ALL PRIVILEGES'), + 'language' => array('USAGE', 'ALL PRIVILEGES'), + 'schema' => array('CREATE', 'USAGE', 'ALL PRIVILEGES'), + 'tablespace' => array('CREATE', 'ALL PRIVILEGES'), + 'column' => array('SELECT', 'INSERT', 'UPDATE', 'REFERENCES','ALL PRIVILEGES') + ); + // List of characters in acl lists and the privileges they + // refer to. + var $privmap = array( + 'r' => 'SELECT', + 'w' => 'UPDATE', + 'a' => 'INSERT', + 'd' => 'DELETE', + 'D' => 'TRUNCATE', + 'R' => 'RULE', + 'x' => 'REFERENCES', + 't' => 'TRIGGER', + 'X' => 'EXECUTE', + 'U' => 'USAGE', + 'C' => 'CREATE', + 'T' => 'TEMPORARY', + 'c' => 'CONNECT' + ); + // Rule action types + var $rule_events = array('SELECT', 'INSERT', 'UPDATE', 'DELETE'); + // Select operators + var $selectOps = array('=' => 'i', '!=' => 'i', '<' => 'i', '>' => 'i', '<=' => 'i', '>=' => 'i', + '<<' => 'i', '>>' => 'i', '<<=' => 'i', '>>=' => 'i', + 'LIKE' => 'i', 'NOT LIKE' => 'i', 'ILIKE' => 'i', 'NOT ILIKE' => 'i', 'SIMILAR TO' => 'i', + 'NOT SIMILAR TO' => 'i', '~' => 'i', '!~' => 'i', '~*' => 'i', '!~*' => 'i', + 'IS NULL' => 'p', 'IS NOT NULL' => 'p', 'IN' => 'x', 'NOT IN' => 'x', + '@@' => 'i', '@@@' => 'i', '@>' => 'i', '<@' => 'i', + '@@ to_tsquery' => 't', '@@@ to_tsquery' => 't', '@> to_tsquery' => 't', '<@ to_tsquery' => 't', + '@@ plainto_tsquery' => 't', '@@@ plainto_tsquery' => 't', '@> plainto_tsquery' => 't', '<@ plainto_tsquery' => 't'); + // Array of allowed trigger events + var $triggerEvents= array('INSERT', 'UPDATE', 'DELETE', 'INSERT OR UPDATE', 'INSERT OR DELETE', + 'DELETE OR UPDATE', 'INSERT OR DELETE OR UPDATE'); + // When to execute the trigger + var $triggerExecTimes = array('BEFORE', 'AFTER'); + // How often to execute the trigger + var $triggerFrequency = array('ROW','STATEMENT'); + // Array of allowed type alignments + var $typAligns = array('char', 'int2', 'int4', 'double'); + // The default type alignment + var $typAlignDef = 'int4'; + // Default index type + var $typIndexDef = 'BTREE'; + // Array of allowed index types + var $typIndexes = array('BTREE', 'RTREE', 'GIST', 'GIN', 'HASH'); + // Array of allowed type storage attributes + var $typStorages = array('plain', 'external', 'extended', 'main'); + // The default type storage + var $typStorageDef = 'plain'; + + /** + * Constructor + * @param $conn The database connection + */ + function Postgres($conn) { + $this->ADODB_base($conn); + } + + // Formatting functions + + /** + * Cleans (escapes) a string + * @param $str The string to clean, by reference + * @return The cleaned string + */ + function clean(&$str) { + if ($str === null) return null; + $str = str_replace("\r\n","\n",$str); + $str = pg_escape_string($str); + return $str; + } + + /** + * Cleans (escapes) an object name (eg. table, field) + * @param $str The string to clean, by reference + * @return The cleaned string + */ + function fieldClean(&$str) { + if ($str === null) return null; + $str = str_replace('"', '""', $str); + return $str; + } + + /** + * Cleans (escapes) an array of field names + * @param $arr The array to clean, by reference + * @return The cleaned array + */ + function fieldArrayClean(&$arr) { + foreach ($arr as $k => $v) { + if ($v === null) continue; + $arr[$k] = str_replace('"', '""', $v); + } + return $arr; + } + + /** + * Cleans (escapes) an array + * @param $arr The array to clean, by reference + * @return The cleaned array + */ + function arrayClean(&$arr) { + foreach ($arr as $k => $v) { + if ($v === null) continue; + $arr[$k] = pg_escape_string($v); + } + return $arr; + } + + /** + * Escapes bytea data for display on the screen + * @param $data The bytea data + * @return Data formatted for on-screen display + */ + function escapeBytea($data) { + return htmlentities($data, ENT_QUOTES, 'UTF-8'); + } + + /** + * Outputs the HTML code for a particular field + * @param $name The name to give the field + * @param $value The value of the field. Note this could be 'numeric(7,2)' sort of thing... + * @param $type The database type of the field + * @param $extras An array of attributes name as key and attributes' values as value + */ + function printField($name, $value, $type, $extras = array()) { + global $lang; + + // Determine actions string + $extra_str = ''; + foreach ($extras as $k => $v) { + $extra_str .= " {$k}=\"" . htmlspecialchars($v) . "\""; + } + + switch (substr($type,0,9)) { + case 'bool': + case 'boolean': + if ($value !== null && $value == '') $value = null; + elseif ($value == 'true') $value = 't'; + elseif ($value == 'false') $value = 'f'; + + // If value is null, 't' or 'f'... + if ($value === null || $value == 't' || $value == 'f') { + echo "\n"; + } + else { + echo "\n"; + } + break; + case 'bytea': + case 'bytea[]': + if (!is_null($value)) { + $value = $this->escapeBytea($value); + } + case 'text': + case 'text[]': + case 'json': + case 'jsonb': + case 'xml': + case 'xml[]': + $n = substr_count($value, "\n"); + $n = $n < 5 ? 5 : $n; + $n = $n > 20 ? 20 : $n; + echo "\n"; + break; + case 'character': + case 'character[]': + $n = substr_count($value, "\n"); + $n = $n < 5 ? 5 : $n; + $n = $n > 20 ? 20 : $n; + echo "\n"; + break; + default: + echo "\n"; + break; + } + } + + /** + * Formats a value or expression for sql purposes + * @param $type The type of the field + * @param $format VALUE or EXPRESSION + * @param $value The actual value entered in the field. Can be NULL + * @return The suitably quoted and escaped value. + */ + function formatValue($type, $format, $value) { + switch ($type) { + case 'bool': + case 'boolean': + if ($value == 't') + return 'TRUE'; + elseif ($value == 'f') + return 'FALSE'; + elseif ($value == '') + return 'NULL'; + else + return $value; + break; + default: + // Checking variable fields is difficult as there might be a size + // attribute... + if (strpos($type, 'time') === 0) { + // Assume it's one of the time types... + if ($value == '') return "''"; + elseif (strcasecmp($value, 'CURRENT_TIMESTAMP') == 0 + || strcasecmp($value, 'CURRENT_TIME') == 0 + || strcasecmp($value, 'CURRENT_DATE') == 0 + || strcasecmp($value, 'LOCALTIME') == 0 + || strcasecmp($value, 'LOCALTIMESTAMP') == 0) { + return $value; + } + elseif ($format == 'EXPRESSION') + return $value; + else { + $this->clean($value); + return "'{$value}'"; + } + } + else { + if ($format == 'VALUE') { + $this->clean($value); + return "'{$value}'"; + } + return $value; + } + } + } + + /** + * Formats a type correctly for display. Postgres 7.0 had no 'format_type' + * built-in function, and hence we need to do it manually. + * @param $typname The name of the type + * @param $typmod The contents of the typmod field + */ + function formatType($typname, $typmod) { + // This is a specific constant in the 7.0 source + $varhdrsz = 4; + + // If the first character is an underscore, it's an array type + $is_array = false; + if (substr($typname, 0, 1) == '_') { + $is_array = true; + $typname = substr($typname, 1); + } + + // Show lengths on bpchar and varchar + if ($typname == 'bpchar') { + $len = $typmod - $varhdrsz; + $temp = 'character'; + if ($len > 1) + $temp .= "({$len})"; + } + elseif ($typname == 'varchar') { + $temp = 'character varying'; + if ($typmod != -1) + $temp .= "(" . ($typmod - $varhdrsz) . ")"; + } + elseif ($typname == 'numeric') { + $temp = 'numeric'; + if ($typmod != -1) { + $tmp_typmod = $typmod - $varhdrsz; + $precision = ($tmp_typmod >> 16) & 0xffff; + $scale = $tmp_typmod & 0xffff; + $temp .= "({$precision}, {$scale})"; + } + } + else $temp = $typname; + + // Add array qualifier if it's an array + if ($is_array) $temp .= '[]'; + + return $temp; + } + + // Help functions + + /** + * Fetch a URL (or array of URLs) for a given help page. + */ + function getHelp($help) { + $this->getHelpPages(); + + if (isset($this->help_page[$help])) { + if (is_array($this->help_page[$help])) { + $urls = array(); + foreach ($this->help_page[$help] as $link) { + $urls[] = $this->help_base . $link; + } + return $urls; + } else + return $this->help_base . $this->help_page[$help]; + } else + return null; + } + + function getHelpPages() { + include_once('./help/PostgresDoc95.php'); + return $this->help_page; + } + + // Database functions + + /** + * Return all information about a particular database + * @param $database The name of the database to retrieve + * @return The database info + */ + function getDatabase($database) { + $this->clean($database); + $sql = "SELECT * FROM pg_database WHERE datname='{$database}'"; + return $this->selectSet($sql); + } + + /** + * Return all database available on the server + * @param $currentdatabase database name that should be on top of the resultset + * + * @return A list of databases, sorted alphabetically + */ + function getDatabases($currentdatabase = NULL) { + global $conf, $misc; + + $server_info = $misc->getServerInfo(); + + if (isset($conf['owned_only']) && $conf['owned_only'] && !$this->isSuperUser()) { + $username = $server_info['username']; + $this->clean($username); + $clause = " AND pr.rolname='{$username}'"; + } + else $clause = ''; + + if ($currentdatabase != NULL) { + $this->clean($currentdatabase); + $orderby = "ORDER BY pdb.datname = '{$currentdatabase}' DESC, pdb.datname"; + } + else + $orderby = "ORDER BY pdb.datname"; + + if (!$conf['show_system']) + $where = ' AND NOT pdb.datistemplate'; + else + $where = ' AND pdb.datallowconn'; + + $sql = " + SELECT pdb.datname AS datname, pr.rolname AS datowner, pg_encoding_to_char(encoding) AS datencoding, + (SELECT description FROM pg_catalog.pg_shdescription pd WHERE pdb.oid=pd.objoid AND pd.classoid='pg_database'::regclass) AS datcomment, + (SELECT spcname FROM pg_catalog.pg_tablespace pt WHERE pt.oid=pdb.dattablespace) AS tablespace, + CASE WHEN pg_catalog.has_database_privilege(current_user, pdb.oid, 'CONNECT') + THEN pg_catalog.pg_database_size(pdb.oid) + ELSE -1 -- set this magic value, which we will convert to no access later + END as dbsize, pdb.datcollate, pdb.datctype + FROM pg_catalog.pg_database pdb + LEFT JOIN pg_catalog.pg_roles pr ON (pdb.datdba = pr.oid) + WHERE true + {$where} + {$clause} + {$orderby}"; + + return $this->selectSet($sql); + } + + /** + * Return the database comment of a db from the shared description table + * @param string $database the name of the database to get the comment for + * @return recordset of the db comment info + */ + function getDatabaseComment($database) { + $this->clean($database); + $sql = "SELECT description FROM pg_catalog.pg_database JOIN pg_catalog.pg_shdescription ON (oid=objoid AND classoid='pg_database'::regclass) WHERE pg_database.datname = '{$database}' "; + return $this->selectSet($sql); + } + + /** + * Return the database owner of a db + * @param string $database the name of the database to get the owner for + * @return recordset of the db owner info + */ + function getDatabaseOwner($database) { + $this->clean($database); + $sql = "SELECT usename FROM pg_user, pg_database WHERE pg_user.usesysid = pg_database.datdba AND pg_database.datname = '{$database}' "; + return $this->selectSet($sql); + } + + /** + * Returns the current database encoding + * @return The encoding. eg. SQL_ASCII, UTF-8, etc. + */ + function getDatabaseEncoding() { + return pg_parameter_status($this->conn->_connectionID, 'server_encoding'); + } + + /** + * Returns the current default_with_oids setting + * @return default_with_oids setting + */ + function getDefaultWithOid() { + + $sql = "SHOW default_with_oids"; + + return $this->selectField($sql, 'default_with_oids'); + } + + /** + * Creates a database + * @param $database The name of the database to create + * @param $encoding Encoding of the database + * @param $tablespace (optional) The tablespace name + * @return 0 success + * @return -1 tablespace error + * @return -2 comment error + */ + function createDatabase($database, $encoding, $tablespace = '', $comment = '', $template = 'template1', + $lc_collate = '', $lc_ctype = '') + { + $this->fieldClean($database); + $this->clean($encoding); + $this->fieldClean($tablespace); + $this->fieldClean($template); + $this->clean($lc_collate); + $this->clean($lc_ctype); + + $sql = "CREATE DATABASE \"{$database}\" WITH TEMPLATE=\"{$template}\""; + + if ($encoding != '') $sql .= " ENCODING='{$encoding}'"; + if ($lc_collate != '') $sql .= " LC_COLLATE='{$lc_collate}'"; + if ($lc_ctype != '') $sql .= " LC_CTYPE='{$lc_ctype}'"; + + if ($tablespace != '' && $this->hasTablespaces()) $sql .= " TABLESPACE \"{$tablespace}\""; + + $status = $this->execute($sql); + if ($status != 0) return -1; + + if ($comment != '' && $this->hasSharedComments()) { + $status = $this->setComment('DATABASE',$database,'',$comment); + if ($status != 0) return -2; + } + + return 0; + } + + /** + * Renames a database, note that this operation cannot be + * performed on a database that is currently being connected to + * @param string $oldName name of database to rename + * @param string $newName new name of database + * @return int 0 on success + */ + function alterDatabaseRename($oldName, $newName) { + $this->fieldClean($oldName); + $this->fieldClean($newName); + + if ($oldName != $newName) { + $sql = "ALTER DATABASE \"{$oldName}\" RENAME TO \"{$newName}\""; + return $this->execute($sql); + } + else //just return success, we're not going to do anything + return 0; + } + + /** + * Drops a database + * @param $database The name of the database to drop + * @return 0 success + */ + function dropDatabase($database) { + $this->fieldClean($database); + $sql = "DROP DATABASE \"{$database}\""; + return $this->execute($sql); + } + + /** + * Changes ownership of a database + * This can only be done by a superuser or the owner of the database + * @param string $dbName database to change ownership of + * @param string $newOwner user that will own the database + * @return int 0 on success + */ + function alterDatabaseOwner($dbName, $newOwner) { + $this->fieldClean($dbName); + $this->fieldClean($newOwner); + + $sql = "ALTER DATABASE \"{$dbName}\" OWNER TO \"{$newOwner}\""; + return $this->execute($sql); + } + + /** + * Alters a database + * the multiple return vals are for postgres 8+ which support more functionality in alter database + * @param $dbName The name of the database + * @param $newName new name for the database + * @param $newOwner The new owner for the database + * @return 0 success + * @return -1 transaction error + * @return -2 owner error + * @return -3 rename error + * @return -4 comment error + */ + function alterDatabase($dbName, $newName, $newOwner = '', $comment = '') { + + $status = $this->beginTransaction(); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + + if ($dbName != $newName) { + $status = $this->alterDatabaseRename($dbName, $newName); + if ($status != 0) { + $this->rollbackTransaction(); + return -3; + } + $dbName = $newName; + } + + if ($newOwner != '') { + $status = $this->alterDatabaseOwner($newName, $newOwner); + if ($status != 0) { + $this->rollbackTransaction(); + return -2; + } + } + + $this->fieldClean($dbName); + $status = $this->setComment('DATABASE', $dbName, '', $comment); + if ($status != 0) { + $this->rollbackTransaction(); + return -4; + } + return $this->endTransaction(); + } + + /** + * Returns prepared transactions information + * @param $database (optional) Find only prepared transactions executed in a specific database + * @return A recordset + */ + function getPreparedXacts($database = null) { + if ($database === null) + $sql = "SELECT * FROM pg_prepared_xacts"; + else { + $this->clean($database); + $sql = "SELECT transaction, gid, prepared, owner FROM pg_prepared_xacts + WHERE database='{$database}' ORDER BY owner"; + } + + return $this->selectSet($sql); + } + + /** + * Searches all system catalogs to find objects that match a certain name. + * @param $term The search term + * @param $filter The object type to restrict to ('' means no restriction) + * @return A recordset + */ + function findObject($term, $filter) { + global $conf; + + /*about escaping: + * SET standard_conforming_string is not available before 8.2 + * So we must use PostgreSQL specific notation :/ + * E'' notation is not available before 8.1 + * $$ is available since 8.0 + * Nothing specific from 7.4 + **/ + + // Escape search term for ILIKE match + $this->clean($term); + $this->clean($filter); + $term = str_replace('_', '\_', $term); + $term = str_replace('%', '\%', $term); + + // Exclude system relations if necessary + if (!$conf['show_system']) { + // XXX: The mention of information_schema here is in the wrong place, but + // it's the quickest fix to exclude the info schema from 7.4 + $where = " AND pn.nspname NOT LIKE \$_PATERN_\$pg\_%\$_PATERN_\$ AND pn.nspname != 'information_schema'"; + $lan_where = "AND pl.lanispl"; + } + else { + $where = ''; + $lan_where = ''; + } + + // Apply outer filter + $sql = ''; + if ($filter != '') { + $sql = "SELECT * FROM ("; + } + + $term = "\$_PATERN_\$%{$term}%\$_PATERN_\$"; + + $sql .= " + SELECT 'SCHEMA' AS type, oid, NULL AS schemaname, NULL AS relname, nspname AS name + FROM pg_catalog.pg_namespace pn WHERE nspname ILIKE {$term} {$where} + UNION ALL + SELECT CASE WHEN relkind='r' THEN 'TABLE' WHEN relkind='v' THEN 'VIEW' WHEN relkind='S' THEN 'SEQUENCE' END, pc.oid, + pn.nspname, NULL, pc.relname FROM pg_catalog.pg_class pc, pg_catalog.pg_namespace pn + WHERE pc.relnamespace=pn.oid AND relkind IN ('r', 'v', 'S') AND relname ILIKE {$term} {$where} + UNION ALL + SELECT CASE WHEN pc.relkind='r' THEN 'COLUMNTABLE' ELSE 'COLUMNVIEW' END, NULL, pn.nspname, pc.relname, pa.attname FROM pg_catalog.pg_class pc, pg_catalog.pg_namespace pn, + pg_catalog.pg_attribute pa WHERE pc.relnamespace=pn.oid AND pc.oid=pa.attrelid + AND pa.attname ILIKE {$term} AND pa.attnum > 0 AND NOT pa.attisdropped AND pc.relkind IN ('r', 'v') {$where} + UNION ALL + SELECT 'FUNCTION', pp.oid, pn.nspname, NULL, pp.proname || '(' || pg_catalog.oidvectortypes(pp.proargtypes) || ')' FROM pg_catalog.pg_proc pp, pg_catalog.pg_namespace pn + WHERE pp.pronamespace=pn.oid AND NOT pp.proisagg AND pp.proname ILIKE {$term} {$where} + UNION ALL + SELECT 'INDEX', NULL, pn.nspname, pc.relname, pc2.relname FROM pg_catalog.pg_class pc, pg_catalog.pg_namespace pn, + pg_catalog.pg_index pi, pg_catalog.pg_class pc2 WHERE pc.relnamespace=pn.oid AND pc.oid=pi.indrelid + AND pi.indexrelid=pc2.oid + AND NOT EXISTS ( + SELECT 1 FROM pg_catalog.pg_depend d JOIN pg_catalog.pg_constraint c + ON (d.refclassid = c.tableoid AND d.refobjid = c.oid) + WHERE d.classid = pc2.tableoid AND d.objid = pc2.oid AND d.deptype = 'i' AND c.contype IN ('u', 'p') + ) + AND pc2.relname ILIKE {$term} {$where} + UNION ALL + SELECT 'CONSTRAINTTABLE', NULL, pn.nspname, pc.relname, pc2.conname FROM pg_catalog.pg_class pc, pg_catalog.pg_namespace pn, + pg_catalog.pg_constraint pc2 WHERE pc.relnamespace=pn.oid AND pc.oid=pc2.conrelid AND pc2.conrelid != 0 + AND CASE WHEN pc2.contype IN ('f', 'c') THEN TRUE ELSE NOT EXISTS ( + SELECT 1 FROM pg_catalog.pg_depend d JOIN pg_catalog.pg_constraint c + ON (d.refclassid = c.tableoid AND d.refobjid = c.oid) + WHERE d.classid = pc2.tableoid AND d.objid = pc2.oid AND d.deptype = 'i' AND c.contype IN ('u', 'p') + ) END + AND pc2.conname ILIKE {$term} {$where} + UNION ALL + SELECT 'CONSTRAINTDOMAIN', pt.oid, pn.nspname, pt.typname, pc.conname FROM pg_catalog.pg_type pt, pg_catalog.pg_namespace pn, + pg_catalog.pg_constraint pc WHERE pt.typnamespace=pn.oid AND pt.oid=pc.contypid AND pc.contypid != 0 + AND pc.conname ILIKE {$term} {$where} + UNION ALL + SELECT 'TRIGGER', NULL, pn.nspname, pc.relname, pt.tgname FROM pg_catalog.pg_class pc, pg_catalog.pg_namespace pn, + pg_catalog.pg_trigger pt WHERE pc.relnamespace=pn.oid AND pc.oid=pt.tgrelid + AND ( pt.tgconstraint = 0 OR NOT EXISTS + (SELECT 1 FROM pg_catalog.pg_depend d JOIN pg_catalog.pg_constraint c + ON (d.refclassid = c.tableoid AND d.refobjid = c.oid) + WHERE d.classid = pt.tableoid AND d.objid = pt.oid AND d.deptype = 'i' AND c.contype = 'f')) + AND pt.tgname ILIKE {$term} {$where} + UNION ALL + SELECT 'RULETABLE', NULL, pn.nspname AS schemaname, c.relname AS tablename, r.rulename FROM pg_catalog.pg_rewrite r + JOIN pg_catalog.pg_class c ON c.oid = r.ev_class + LEFT JOIN pg_catalog.pg_namespace pn ON pn.oid = c.relnamespace + WHERE c.relkind='r' AND r.rulename != '_RETURN' AND r.rulename ILIKE {$term} {$where} + UNION ALL + SELECT 'RULEVIEW', NULL, pn.nspname AS schemaname, c.relname AS tablename, r.rulename FROM pg_catalog.pg_rewrite r + JOIN pg_catalog.pg_class c ON c.oid = r.ev_class + LEFT JOIN pg_catalog.pg_namespace pn ON pn.oid = c.relnamespace + WHERE c.relkind='v' AND r.rulename != '_RETURN' AND r.rulename ILIKE {$term} {$where} + "; + + // Add advanced objects if show_advanced is set + if ($conf['show_advanced']) { + $sql .= " + UNION ALL + SELECT CASE WHEN pt.typtype='d' THEN 'DOMAIN' ELSE 'TYPE' END, pt.oid, pn.nspname, NULL, + pt.typname FROM pg_catalog.pg_type pt, pg_catalog.pg_namespace pn + WHERE pt.typnamespace=pn.oid AND typname ILIKE {$term} + AND (pt.typrelid = 0 OR (SELECT c.relkind = 'c' FROM pg_catalog.pg_class c WHERE c.oid = pt.typrelid)) + {$where} + UNION ALL + SELECT 'OPERATOR', po.oid, pn.nspname, NULL, po.oprname FROM pg_catalog.pg_operator po, pg_catalog.pg_namespace pn + WHERE po.oprnamespace=pn.oid AND oprname ILIKE {$term} {$where} + UNION ALL + SELECT 'CONVERSION', pc.oid, pn.nspname, NULL, pc.conname FROM pg_catalog.pg_conversion pc, + pg_catalog.pg_namespace pn WHERE pc.connamespace=pn.oid AND conname ILIKE {$term} {$where} + UNION ALL + SELECT 'LANGUAGE', pl.oid, NULL, NULL, pl.lanname FROM pg_catalog.pg_language pl + WHERE lanname ILIKE {$term} {$lan_where} + UNION ALL + SELECT DISTINCT ON (p.proname) 'AGGREGATE', p.oid, pn.nspname, NULL, p.proname FROM pg_catalog.pg_proc p + LEFT JOIN pg_catalog.pg_namespace pn ON p.pronamespace=pn.oid + WHERE p.proisagg AND p.proname ILIKE {$term} {$where} + UNION ALL + SELECT DISTINCT ON (po.opcname) 'OPCLASS', po.oid, pn.nspname, NULL, po.opcname FROM pg_catalog.pg_opclass po, + pg_catalog.pg_namespace pn WHERE po.opcnamespace=pn.oid + AND po.opcname ILIKE {$term} {$where} + "; + } + // Otherwise just add domains + else { + $sql .= " + UNION ALL + SELECT 'DOMAIN', pt.oid, pn.nspname, NULL, + pt.typname FROM pg_catalog.pg_type pt, pg_catalog.pg_namespace pn + WHERE pt.typnamespace=pn.oid AND pt.typtype='d' AND typname ILIKE {$term} + AND (pt.typrelid = 0 OR (SELECT c.relkind = 'c' FROM pg_catalog.pg_class c WHERE c.oid = pt.typrelid)) + {$where} + "; + } + + if ($filter != '') { + // We use like to make RULE, CONSTRAINT and COLUMN searches work + $sql .= ") AS sub WHERE type LIKE '{$filter}%' "; + } + + $sql .= "ORDER BY type, schemaname, relname, name"; + + return $this->selectSet($sql); + } + + /** + * Returns all available variable information. + * @return A recordset + */ + function getVariables() { + $sql = "SHOW ALL"; + + return $this->selectSet($sql); + } + + // Schema functons + + /** + * Return all schemas in the current database. + * @return All schemas, sorted alphabetically + */ + function getSchemas() { + global $conf; + + if (!$conf['show_system']) { + $where = "WHERE nspname NOT LIKE 'pg@_%' ESCAPE '@' AND nspname != 'information_schema'"; + + } + else $where = "WHERE nspname !~ '^pg_t(emp_[0-9]+|oast)$'"; + $sql = " + SELECT pn.nspname, pu.rolname AS nspowner, + pg_catalog.obj_description(pn.oid, 'pg_namespace') AS nspcomment + FROM pg_catalog.pg_namespace pn + LEFT JOIN pg_catalog.pg_roles pu ON (pn.nspowner = pu.oid) + {$where} + ORDER BY nspname"; + + return $this->selectSet($sql); + } + + /** + * Return all information relating to a schema + * @param $schema The name of the schema + * @return Schema information + */ + function getSchemaByName($schema) { + $this->clean($schema); + $sql = " + SELECT nspname, nspowner, r.rolname AS ownername, nspacl, + pg_catalog.obj_description(pn.oid, 'pg_namespace') as nspcomment + FROM pg_catalog.pg_namespace pn + LEFT JOIN pg_roles as r ON pn.nspowner = r.oid + WHERE nspname='{$schema}'"; + return $this->selectSet($sql); + } + + /** + * Sets the current working schema. Will also set Class variable. + * @param $schema The the name of the schema to work in + * @return 0 success + */ + function setSchema($schema) { + // Get the current schema search path, including 'pg_catalog'. + $search_path = $this->getSearchPath(); + // Prepend $schema to search path + array_unshift($search_path, $schema); + $status = $this->setSearchPath($search_path); + if ($status == 0) { + $this->_schema = $schema; + return 0; + } + else return $status; + } + + /** + * Sets the current schema search path + * @param $paths An array of schemas in required search order + * @return 0 success + * @return -1 Array not passed + * @return -2 Array must contain at least one item + */ + function setSearchPath($paths) { + if (!is_array($paths)) return -1; + elseif (sizeof($paths) == 0) return -2; + elseif (sizeof($paths) == 1 && $paths[0] == '') { + // Need to handle empty paths in some cases + $paths[0] = 'pg_catalog'; + } + + // Loop over all the paths to check that none are empty + $temp = array(); + foreach ($paths as $schema) { + if ($schema != '') $temp[] = $schema; + } + $this->fieldArrayClean($temp); + + $sql = 'SET SEARCH_PATH TO "' . implode('","', $temp) . '"'; + + return $this->execute($sql); + } + + /** + * Creates a new schema. + * @param $schemaname The name of the schema to create + * @param $authorization (optional) The username to create the schema for. + * @param $comment (optional) If omitted, defaults to nothing + * @return 0 success + */ + function createSchema($schemaname, $authorization = '', $comment = '') { + $this->fieldClean($schemaname); + $this->fieldClean($authorization); + + $sql = "CREATE SCHEMA \"{$schemaname}\""; + if ($authorization != '') $sql .= " AUTHORIZATION \"{$authorization}\""; + + if ($comment != '') { + $status = $this->beginTransaction(); + if ($status != 0) return -1; + } + + // Create the new schema + $status = $this->execute($sql); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + + // Set the comment + if ($comment != '') { + $status = $this->setComment('SCHEMA', $schemaname, '', $comment); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + + return $this->endTransaction(); + } + + return 0; + } + + /** + * Updates a schema. + * @param $schemaname The name of the schema to drop + * @param $comment The new comment for this schema + * @param $owner The new owner for this schema + * @return 0 success + */ + function updateSchema($schemaname, $comment, $name, $owner) { + $this->fieldClean($schemaname); + $this->fieldClean($name); + $this->fieldClean($owner); + + $status = $this->beginTransaction(); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + + $status = $this->setComment('SCHEMA', $schemaname, '', $comment); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + + $schema_rs = $this->getSchemaByName($schemaname); + /* Only if the owner change */ + if ($schema_rs->fields['ownername'] != $owner) { + $sql = "ALTER SCHEMA \"{$schemaname}\" OWNER TO \"{$owner}\""; + $status = $this->execute($sql); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + } + + // Only if the name has changed + if ($name != $schemaname) { + $sql = "ALTER SCHEMA \"{$schemaname}\" RENAME TO \"{$name}\""; + $status = $this->execute($sql); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + } + + return $this->endTransaction(); + } + + /** + * Drops a schema. + * @param $schemaname The name of the schema to drop + * @param $cascade True to cascade drop, false to restrict + * @return 0 success + */ + function dropSchema($schemaname, $cascade) { + $this->fieldClean($schemaname); + + $sql = "DROP SCHEMA \"{$schemaname}\""; + if ($cascade) $sql .= " CASCADE"; + + return $this->execute($sql); + } + + /** + * Return the current schema search path + * @return Array of schema names + */ + function getSearchPath() { + $sql = 'SELECT current_schemas(false) AS search_path'; + + return $this->phpArray($this->selectField($sql, 'search_path')); + } + + // Table functions + + /** + * Checks to see whether or not a table has a unique id column + * @param $table The table name + * @return True if it has a unique id, false otherwise + * @return null error + **/ + function hasObjectID($table) { + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($table); + + $sql = "SELECT relhasoids FROM pg_catalog.pg_class WHERE relname='{$table}' + AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname='{$c_schema}')"; + + $rs = $this->selectSet($sql); + if ($rs->recordCount() != 1) return null; + else { + $rs->fields['relhasoids'] = $this->phpBool($rs->fields['relhasoids']); + return $rs->fields['relhasoids']; + } + } + + /** + * Returns table information + * @param $table The name of the table + * @return A recordset + */ + function getTable($table) { + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($table); + + $sql = " + SELECT + c.relname, n.nspname, u.usename AS relowner, + pg_catalog.obj_description(c.oid, 'pg_class') AS relcomment, + (SELECT spcname FROM pg_catalog.pg_tablespace pt WHERE pt.oid=c.reltablespace) AS tablespace + FROM pg_catalog.pg_class c + LEFT JOIN pg_catalog.pg_user u ON u.usesysid = c.relowner + LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace + WHERE c.relkind = 'r' + AND n.nspname = '{$c_schema}' + AND n.oid = c.relnamespace + AND c.relname = '{$table}'"; + + return $this->selectSet($sql); + } + + /** + * Return all tables in current database (and schema) + * @param $all True to fetch all tables, false for just in current schema + * @return All tables, sorted alphabetically + */ + function getTables($all = false) { + $c_schema = $this->_schema; + $this->clean($c_schema); + if ($all) { + // Exclude pg_catalog and information_schema tables + $sql = "SELECT schemaname AS nspname, tablename AS relname, tableowner AS relowner + FROM pg_catalog.pg_tables + WHERE schemaname NOT IN ('pg_catalog', 'information_schema', 'pg_toast') + ORDER BY schemaname, tablename"; + } else { + $sql = "SELECT c.relname, pg_catalog.pg_get_userbyid(c.relowner) AS relowner, + pg_catalog.obj_description(c.oid, 'pg_class') AS relcomment, + reltuples::bigint, + (SELECT spcname FROM pg_catalog.pg_tablespace pt WHERE pt.oid=c.reltablespace) AS tablespace + FROM pg_catalog.pg_class c + LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace + WHERE c.relkind = 'r' + AND nspname='{$c_schema}' + ORDER BY c.relname"; + } + + return $this->selectSet($sql); + } + + /** + * Retrieve the attribute definition of a table + * @param $table The name of the table + * @param $field (optional) The name of a field to return + * @return All attributes in order + */ + function getTableAttributes($table, $field = '') { + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($table); + $this->clean($field); + + if ($field == '') { + // This query is made much more complex by the addition of the 'attisserial' field. + // The subquery to get that field checks to see if there is an internally dependent + // sequence on the field. + $sql = " + SELECT + a.attname, a.attnum, + pg_catalog.format_type(a.atttypid, a.atttypmod) as type, + a.atttypmod, + a.attnotnull, a.atthasdef, pg_catalog.pg_get_expr(adef.adbin, adef.adrelid, true) as adsrc, + a.attstattarget, a.attstorage, t.typstorage, + ( + SELECT 1 FROM pg_catalog.pg_depend pd, pg_catalog.pg_class pc + WHERE pd.objid=pc.oid + AND pd.classid=pc.tableoid + AND pd.refclassid=pc.tableoid + AND pd.refobjid=a.attrelid + AND pd.refobjsubid=a.attnum + AND pd.deptype='i' + AND pc.relkind='S' + ) IS NOT NULL AS attisserial, + pg_catalog.col_description(a.attrelid, a.attnum) AS comment + FROM + pg_catalog.pg_attribute a LEFT JOIN pg_catalog.pg_attrdef adef + ON a.attrelid=adef.adrelid + AND a.attnum=adef.adnum + LEFT JOIN pg_catalog.pg_type t ON a.atttypid=t.oid + WHERE + a.attrelid = (SELECT oid FROM pg_catalog.pg_class WHERE relname='{$table}' + AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE + nspname = '{$c_schema}')) + AND a.attnum > 0 AND NOT a.attisdropped + ORDER BY a.attnum"; + } + else { + $sql = " + SELECT + a.attname, a.attnum, + pg_catalog.format_type(a.atttypid, a.atttypmod) as type, + pg_catalog.format_type(a.atttypid, NULL) as base_type, + a.atttypmod, + a.attnotnull, a.atthasdef, pg_catalog.pg_get_expr(adef.adbin, adef.adrelid, true) as adsrc, + a.attstattarget, a.attstorage, t.typstorage, + pg_catalog.col_description(a.attrelid, a.attnum) AS comment + FROM + pg_catalog.pg_attribute a LEFT JOIN pg_catalog.pg_attrdef adef + ON a.attrelid=adef.adrelid + AND a.attnum=adef.adnum + LEFT JOIN pg_catalog.pg_type t ON a.atttypid=t.oid + WHERE + a.attrelid = (SELECT oid FROM pg_catalog.pg_class WHERE relname='{$table}' + AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE + nspname = '{$c_schema}')) + AND a.attname = '{$field}'"; + } + + return $this->selectSet($sql); + } + + /** + * Finds the names and schemas of parent tables (in order) + * @param $table The table to find the parents for + * @return A recordset + */ + function getTableParents($table) { + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($table); + + $sql = " + SELECT + pn.nspname, relname + FROM + pg_catalog.pg_class pc, pg_catalog.pg_inherits pi, pg_catalog.pg_namespace pn + WHERE + pc.oid=pi.inhparent + AND pc.relnamespace=pn.oid + AND pi.inhrelid = (SELECT oid from pg_catalog.pg_class WHERE relname='{$table}' + AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = '{$c_schema}')) + ORDER BY + pi.inhseqno + "; + + return $this->selectSet($sql); + } + + /** + * Finds the names and schemas of child tables + * @param $table The table to find the children for + * @return A recordset + */ + function getTableChildren($table) { + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($table); + + $sql = " + SELECT + pn.nspname, relname + FROM + pg_catalog.pg_class pc, pg_catalog.pg_inherits pi, pg_catalog.pg_namespace pn + WHERE + pc.oid=pi.inhrelid + AND pc.relnamespace=pn.oid + AND pi.inhparent = (SELECT oid from pg_catalog.pg_class WHERE relname='{$table}' + AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = '{$c_schema}')) + "; + + return $this->selectSet($sql); + } + + /** + * Returns the SQL definition for the table. + * @pre MUST be run within a transaction + * @param $table The table to define + * @param $clean True to issue drop command, false otherwise + * @return A string containing the formatted SQL code + * @return null On error + */ + function getTableDefPrefix($table, $clean = false) { + // Fetch table + $t = $this->getTable($table); + if (!is_object($t) || $t->recordCount() != 1) { + $this->rollbackTransaction(); + return null; + } + $this->fieldClean($t->fields['relname']); + $this->fieldClean($t->fields['nspname']); + + // Fetch attributes + $atts = $this->getTableAttributes($table); + if (!is_object($atts)) { + $this->rollbackTransaction(); + return null; + } + + // Fetch constraints + $cons = $this->getConstraints($table); + if (!is_object($cons)) { + $this->rollbackTransaction(); + return null; + } + + // Output a reconnect command to create the table as the correct user + $sql = $this->getChangeUserSQL($t->fields['relowner']) . "\n\n"; + + // Set schema search path + $sql .= "SET search_path = \"{$t->fields['nspname']}\", pg_catalog;\n\n"; + + // Begin CREATE TABLE definition + $sql .= "-- Definition\n\n"; + // DROP TABLE must be fully qualified in case a table with the same name exists + // in pg_catalog. + if (!$clean) $sql .= "-- "; + $sql .= "DROP TABLE "; + $sql .= "\"{$t->fields['nspname']}\".\"{$t->fields['relname']}\";\n"; + $sql .= "CREATE TABLE \"{$t->fields['nspname']}\".\"{$t->fields['relname']}\" (\n"; + + // Output all table columns + $col_comments_sql = ''; // Accumulate comments on columns + $num = $atts->recordCount() + $cons->recordCount(); + $i = 1; + while (!$atts->EOF) { + $this->fieldClean($atts->fields['attname']); + $sql .= " \"{$atts->fields['attname']}\""; + // Dump SERIAL and BIGSERIAL columns correctly + if ($this->phpBool($atts->fields['attisserial']) && + ($atts->fields['type'] == 'integer' || $atts->fields['type'] == 'bigint')) { + if ($atts->fields['type'] == 'integer') + $sql .= " SERIAL"; + else + $sql .= " BIGSERIAL"; + } + else { + $sql .= " " . $this->formatType($atts->fields['type'], $atts->fields['atttypmod']); + + // Add NOT NULL if necessary + if ($this->phpBool($atts->fields['attnotnull'])) + $sql .= " NOT NULL"; + // Add default if necessary + if ($atts->fields['adsrc'] !== null) + $sql .= " DEFAULT {$atts->fields['adsrc']}"; + } + + // Output comma or not + if ($i < $num) $sql .= ",\n"; + else $sql .= "\n"; + + // Does this column have a comment? + if ($atts->fields['comment'] !== null) { + $this->clean($atts->fields['comment']); + $col_comments_sql .= "COMMENT ON COLUMN \"{$t->fields['relname']}\".\"{$atts->fields['attname']}\" IS '{$atts->fields['comment']}';\n"; + } + + $atts->moveNext(); + $i++; + } + // Output all table constraints + while (!$cons->EOF) { + $this->fieldClean($cons->fields['conname']); + $sql .= " CONSTRAINT \"{$cons->fields['conname']}\" "; + // Nasty hack to support pre-7.4 PostgreSQL + if ($cons->fields['consrc'] !== null) + $sql .= $cons->fields['consrc']; + else { + switch ($cons->fields['contype']) { + case 'p': + $keys = $this->getAttributeNames($table, explode(' ', $cons->fields['indkey'])); + $sql .= "PRIMARY KEY (" . join(',', $keys) . ")"; + break; + case 'u': + $keys = $this->getAttributeNames($table, explode(' ', $cons->fields['indkey'])); + $sql .= "UNIQUE (" . join(',', $keys) . ")"; + break; + default: + // Unrecognised constraint + $this->rollbackTransaction(); + return null; + } + } + + // Output comma or not + if ($i < $num) $sql .= ",\n"; + else $sql .= "\n"; + + $cons->moveNext(); + $i++; + } + + $sql .= ")"; + + // @@@@ DUMP CLUSTERING INFORMATION + + // Inherits + /* + * XXX: This is currently commented out as handling inheritance isn't this simple. + * You also need to make sure you don't dump inherited columns and defaults, as well + * as inherited NOT NULL and CHECK constraints. So for the time being, we just do + * not claim to support inheritance. + $parents = $this->getTableParents($table); + if ($parents->recordCount() > 0) { + $sql .= " INHERITS ("; + while (!$parents->EOF) { + $this->fieldClean($parents->fields['relname']); + // Qualify the parent table if it's in another schema + if ($parents->fields['schemaname'] != $this->_schema) { + $this->fieldClean($parents->fields['schemaname']); + $sql .= "\"{$parents->fields['schemaname']}\"."; + } + $sql .= "\"{$parents->fields['relname']}\""; + + $parents->moveNext(); + if (!$parents->EOF) $sql .= ', '; + } + $sql .= ")"; + } + */ + + // Handle WITHOUT OIDS + if ($this->hasObjectID($table)) + $sql .= " WITH OIDS"; + else + $sql .= " WITHOUT OIDS"; + + $sql .= ";\n"; + + // Column storage and statistics + $atts->moveFirst(); + $first = true; + while (!$atts->EOF) { + $this->fieldClean($atts->fields['attname']); + // Statistics first + if ($atts->fields['attstattarget'] >= 0) { + if ($first) { + $sql .= "\n"; + $first = false; + } + $sql .= "ALTER TABLE ONLY \"{$t->fields['nspname']}\".\"{$t->fields['relname']}\" ALTER COLUMN \"{$atts->fields['attname']}\" SET STATISTICS {$atts->fields['attstattarget']};\n"; + } + // Then storage + if ($atts->fields['attstorage'] != $atts->fields['typstorage']) { + switch ($atts->fields['attstorage']) { + case 'p': + $storage = 'PLAIN'; + break; + case 'e': + $storage = 'EXTERNAL'; + break; + case 'm': + $storage = 'MAIN'; + break; + case 'x': + $storage = 'EXTENDED'; + break; + default: + // Unknown storage type + $this->rollbackTransaction(); + return null; + } + $sql .= "ALTER TABLE ONLY \"{$t->fields['nspname']}\".\"{$t->fields['relname']}\" ALTER COLUMN \"{$atts->fields['attname']}\" SET STORAGE {$storage};\n"; + } + + $atts->moveNext(); + } + + // Comment + if ($t->fields['relcomment'] !== null) { + $this->clean($t->fields['relcomment']); + $sql .= "\n-- Comment\n\n"; + $sql .= "COMMENT ON TABLE \"{$t->fields['nspname']}\".\"{$t->fields['relname']}\" IS '{$t->fields['relcomment']}';\n"; + } + + // Add comments on columns, if any + if ($col_comments_sql != '') $sql .= $col_comments_sql; + + // Privileges + $privs = $this->getPrivileges($table, 'table'); + if (!is_array($privs)) { + $this->rollbackTransaction(); + return null; + } + + if (sizeof($privs) > 0) { + $sql .= "\n-- Privileges\n\n"; + /* + * Always start with REVOKE ALL FROM PUBLIC, so that we don't have to + * wire-in knowledge about the default public privileges for different + * kinds of objects. + */ + $sql .= "REVOKE ALL ON TABLE \"{$t->fields['nspname']}\".\"{$t->fields['relname']}\" FROM PUBLIC;\n"; + foreach ($privs as $v) { + // Get non-GRANT OPTION privs + $nongrant = array_diff($v[2], $v[4]); + + // Skip empty or owner ACEs + if (sizeof($v[2]) == 0 || ($v[0] == 'user' && $v[1] == $t->fields['relowner'])) continue; + + // Change user if necessary + if ($this->hasGrantOption() && $v[3] != $t->fields['relowner']) { + $grantor = $v[3]; + $this->clean($grantor); + $sql .= "SET SESSION AUTHORIZATION '{$grantor}';\n"; + } + + // Output privileges with no GRANT OPTION + $sql .= "GRANT " . join(', ', $nongrant) . " ON TABLE \"{$t->fields['relname']}\" TO "; + switch ($v[0]) { + case 'public': + $sql .= "PUBLIC;\n"; + break; + case 'user': + $this->fieldClean($v[1]); + $sql .= "\"{$v[1]}\";\n"; + break; + case 'group': + $this->fieldClean($v[1]); + $sql .= "GROUP \"{$v[1]}\";\n"; + break; + default: + // Unknown privilege type - fail + $this->rollbackTransaction(); + return null; + } + + // Reset user if necessary + if ($this->hasGrantOption() && $v[3] != $t->fields['relowner']) { + $sql .= "RESET SESSION AUTHORIZATION;\n"; + } + + // Output privileges with GRANT OPTION + + // Skip empty or owner ACEs + if (!$this->hasGrantOption() || sizeof($v[4]) == 0) continue; + + // Change user if necessary + if ($this->hasGrantOption() && $v[3] != $t->fields['relowner']) { + $grantor = $v[3]; + $this->clean($grantor); + $sql .= "SET SESSION AUTHORIZATION '{$grantor}';\n"; + } + + $sql .= "GRANT " . join(', ', $v[4]) . " ON \"{$t->fields['relname']}\" TO "; + switch ($v[0]) { + case 'public': + $sql .= "PUBLIC"; + break; + case 'user': + $this->fieldClean($v[1]); + $sql .= "\"{$v[1]}\""; + break; + case 'group': + $this->fieldClean($v[1]); + $sql .= "GROUP \"{$v[1]}\""; + break; + default: + // Unknown privilege type - fail + return null; + } + $sql .= " WITH GRANT OPTION;\n"; + + // Reset user if necessary + if ($this->hasGrantOption() && $v[3] != $t->fields['relowner']) { + $sql .= "RESET SESSION AUTHORIZATION;\n"; + } + + } + } + + // Add a newline to separate data that follows (if any) + $sql .= "\n"; + + return $sql; + } + + /** + * Returns extra table definition information that is most usefully + * dumped after the table contents for speed and efficiency reasons + * @param $table The table to define + * @return A string containing the formatted SQL code + * @return null On error + */ + function getTableDefSuffix($table) { + $sql = ''; + + // Indexes + $indexes = $this->getIndexes($table); + if (!is_object($indexes)) { + $this->rollbackTransaction(); + return null; + } + + if ($indexes->recordCount() > 0) { + $sql .= "\n-- Indexes\n\n"; + while (!$indexes->EOF) { + $sql .= $indexes->fields['inddef'] . ";\n"; + + $indexes->moveNext(); + } + } + + // Triggers + $triggers = $this->getTriggers($table); + if (!is_object($triggers)) { + $this->rollbackTransaction(); + return null; + } + + if ($triggers->recordCount() > 0) { + $sql .= "\n-- Triggers\n\n"; + while (!$triggers->EOF) { + + $sql .= $triggers->fields['tgdef']; + $sql .= ";\n"; + + $triggers->moveNext(); + } + } + + // Rules + $rules = $this->getRules($table); + if (!is_object($rules)) { + $this->rollbackTransaction(); + return null; + } + + if ($rules->recordCount() > 0) { + $sql .= "\n-- Rules\n\n"; + while (!$rules->EOF) { + $sql .= $rules->fields['definition'] . "\n"; + + $rules->moveNext(); + } + } + + return $sql; + } + + /** + * Creates a new table in the database + * @param $name The name of the table + * @param $fields The number of fields + * @param $field An array of field names + * @param $type An array of field types + * @param $array An array of '' or '[]' for each type if it's an array or not + * @param $length An array of field lengths + * @param $notnull An array of not null + * @param $default An array of default values + * @param $withoutoids True if WITHOUT OIDS, false otherwise + * @param $colcomment An array of comments + * @param $comment Table comment + * @param $tablespace The tablespace name ('' means none/default) + * @param $uniquekey An Array indicating the fields that are unique (those indexes that are set) + * @param $primarykey An Array indicating the field used for the primarykey (those indexes that are set) + * @return 0 success + * @return -1 no fields supplied + */ + function createTable($name, $fields, $field, $type, $array, $length, $notnull, + $default, $withoutoids, $colcomment, $tblcomment, $tablespace, + $uniquekey, $primarykey) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($name); + + $status = $this->beginTransaction(); + if ($status != 0) return -1; + + $found = false; + $first = true; + $comment_sql = ''; //Accumulate comments for the columns + $sql = "CREATE TABLE \"{$f_schema}\".\"{$name}\" ("; + for ($i = 0; $i < $fields; $i++) { + $this->fieldClean($field[$i]); + $this->clean($type[$i]); + $this->clean($length[$i]); + $this->clean($colcomment[$i]); + + // Skip blank columns - for user convenience + if ($field[$i] == '' || $type[$i] == '') continue; + // If not the first column, add a comma + if (!$first) $sql .= ", "; + else $first = false; + + switch ($type[$i]) { + // Have to account for weird placing of length for with/without + // time zone types + case 'timestamp with time zone': + case 'timestamp without time zone': + $qual = substr($type[$i], 9); + $sql .= "\"{$field[$i]}\" timestamp"; + if ($length[$i] != '') $sql .= "({$length[$i]})"; + $sql .= $qual; + break; + case 'time with time zone': + case 'time without time zone': + $qual = substr($type[$i], 4); + $sql .= "\"{$field[$i]}\" time"; + if ($length[$i] != '') $sql .= "({$length[$i]})"; + $sql .= $qual; + break; + default: + $sql .= "\"{$field[$i]}\" {$type[$i]}"; + if ($length[$i] != '') $sql .= "({$length[$i]})"; + } + // Add array qualifier if necessary + if ($array[$i] == '[]') $sql .= '[]'; + // Add other qualifiers + if (!isset($primarykey[$i])) { + if (isset($uniquekey[$i])) $sql .= " UNIQUE"; + if (isset($notnull[$i])) $sql .= " NOT NULL"; + } + if ($default[$i] != '') $sql .= " DEFAULT {$default[$i]}"; + + if ($colcomment[$i] != '') $comment_sql .= "COMMENT ON COLUMN \"{$name}\".\"{$field[$i]}\" IS '{$colcomment[$i]}';\n"; + + $found = true; + } + + if (!$found) return -1; + + // PRIMARY KEY + $primarykeycolumns = array(); + for ($i = 0; $i < $fields; $i++) { + if (isset($primarykey[$i])) { + $primarykeycolumns[] = "\"{$field[$i]}\""; + } + } + if (count($primarykeycolumns) > 0) { + $sql .= ", PRIMARY KEY (" . implode(", ", $primarykeycolumns) . ")"; + } + + $sql .= ")"; + + // WITHOUT OIDS + if ($withoutoids) + $sql .= ' WITHOUT OIDS'; + else + $sql .= ' WITH OIDS'; + + // Tablespace + if ($this->hasTablespaces() && $tablespace != '') { + $this->fieldClean($tablespace); + $sql .= " TABLESPACE \"{$tablespace}\""; + } + + $status = $this->execute($sql); + if ($status) { + $this->rollbackTransaction(); + return -1; + } + + if ($tblcomment != '') { + $status = $this->setComment('TABLE', '', $name, $tblcomment, true); + if ($status) { + $this->rollbackTransaction(); + return -1; + } + } + + if ($comment_sql != '') { + $status = $this->execute($comment_sql); + if ($status) { + $this->rollbackTransaction(); + return -1; + } + } + return $this->endTransaction(); + } + + /** + * Creates a new table in the database copying attribs and other properties from another table + * @param $name The name of the table + * @param $like an array giving the schema ans the name of the table from which attribs are copying from: + * array( + * 'table' => table name, + * 'schema' => the schema name, + * ) + * @param $defaults if true, copy the defaults values as well + * @param $constraints if true, copy the constraints as well (CHECK on table & attr) + * @param $tablespace The tablespace name ('' means none/default) + */ + function createTableLike($name, $like, $defaults = false, $constraints = false, $idx = false, $tablespace = '') { + + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($name); + $this->fieldClean($like['schema']); + $this->fieldClean($like['table']); + $like = "\"{$like['schema']}\".\"{$like['table']}\""; + + $status = $this->beginTransaction(); + if ($status != 0) return -1; + + $sql = "CREATE TABLE \"{$f_schema}\".\"{$name}\" (LIKE {$like}"; + + if ($defaults) $sql .= " INCLUDING DEFAULTS"; + if ($this->hasCreateTableLikeWithConstraints() && $constraints) $sql .= " INCLUDING CONSTRAINTS"; + if ($this->hasCreateTableLikeWithIndexes() && $idx) $sql .= " INCLUDING INDEXES"; + + $sql .= ")"; + + if ($this->hasTablespaces() && $tablespace != '') { + $this->fieldClean($tablespace); + $sql .= " TABLESPACE \"{$tablespace}\""; + } + + $status = $this->execute($sql); + if ($status) { + $this->rollbackTransaction(); + return -1; + } + + return $this->endTransaction(); + } + + /** + * Alter a table's name + * /!\ this function is called from _alterTable which take care of escaping fields + * @param $tblrs The table RecordSet returned by getTable() + * @param $name The new table's name + * @return 0 success + */ + function alterTableName($tblrs, $name = null) { + /* vars cleaned in _alterTable */ + // Rename (only if name has changed) + if (!empty($name) && ($name != $tblrs->fields['relname'])) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + + $sql = "ALTER TABLE \"{$f_schema}\".\"{$tblrs->fields['relname']}\" RENAME TO \"{$name}\""; + $status = $this->execute($sql); + if ($status == 0) + $tblrs->fields['relname'] = $name; + else + return $status; + } + return 0; + } + + /** + * Alter a table's owner + * /!\ this function is called from _alterTable which take care of escaping fields + * @param $tblrs The table RecordSet returned by getTable() + * @param $name The new table's owner + * @return 0 success + */ + function alterTableOwner($tblrs, $owner = null) { + /* vars cleaned in _alterTable */ + if (!empty($owner) && ($tblrs->fields['relowner'] != $owner)) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + // If owner has been changed, then do the alteration. We are + // careful to avoid this generally as changing owner is a + // superuser only function. + $sql = "ALTER TABLE \"{$f_schema}\".\"{$tblrs->fields['relname']}\" OWNER TO \"{$owner}\""; + + return $this->execute($sql); + } + return 0; + } + + /** + * Alter a table's tablespace + * /!\ this function is called from _alterTable which take care of escaping fields + * @param $tblrs The table RecordSet returned by getTable() + * @param $name The new table's tablespace + * @return 0 success + */ + function alterTableTablespace($tblrs, $tablespace = null) { + /* vars cleaned in _alterTable */ + if (!empty($tablespace) && ($tblrs->fields['tablespace'] != $tablespace)) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + + // If tablespace has been changed, then do the alteration. We + // don't want to do this unnecessarily. + $sql = "ALTER TABLE \"{$f_schema}\".\"{$tblrs->fields['relname']}\" SET TABLESPACE \"{$tablespace}\""; + + return $this->execute($sql); + } + return 0; + } + + /** + * Alter a table's schema + * /!\ this function is called from _alterTable which take care of escaping fields + * @param $tblrs The table RecordSet returned by getTable() + * @param $name The new table's schema + * @return 0 success + */ + function alterTableSchema($tblrs, $schema = null) { + /* vars cleaned in _alterTable */ + if (!empty($schema) && ($tblrs->fields['nspname'] != $schema)) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + // If tablespace has been changed, then do the alteration. We + // don't want to do this unnecessarily. + $sql = "ALTER TABLE \"{$f_schema}\".\"{$tblrs->fields['relname']}\" SET SCHEMA \"{$schema}\""; + + return $this->execute($sql); + } + return 0; + } + + /** + * Protected method which alter a table + * SHOULDN'T BE CALLED OUTSIDE OF A TRANSACTION + * @param $tblrs The table recordSet returned by getTable() + * @param $name The new name for the table + * @param $owner The new owner for the table + * @param $schema The new schema for the table + * @param $comment The comment on the table + * @param $tablespace The new tablespace for the table ('' means leave as is) + * @return 0 success + * @return -3 rename error + * @return -4 comment error + * @return -5 owner error + * @return -6 tablespace error + * @return -7 schema error + */ + protected + function _alterTable($tblrs, $name, $owner, $schema, $comment, $tablespace) { + + $this->fieldArrayClean($tblrs->fields); + + // Comment + $status = $this->setComment('TABLE', '', $tblrs->fields['relname'], $comment); + if ($status != 0) return -4; + + // Owner + $this->fieldClean($owner); + $status = $this->alterTableOwner($tblrs, $owner); + if ($status != 0) return -5; + + // Tablespace + $this->fieldClean($tablespace); + $status = $this->alterTableTablespace($tblrs, $tablespace); + if ($status != 0) return -6; + + // Rename + $this->fieldClean($name); + $status = $this->alterTableName($tblrs, $name); + if ($status != 0) return -3; + + // Schema + $this->fieldClean($schema); + $status = $this->alterTableSchema($tblrs, $schema); + if ($status != 0) return -7; + + return 0; + } + + /** + * Alter table properties + * @param $table The name of the table + * @param $name The new name for the table + * @param $owner The new owner for the table + * @param $schema The new schema for the table + * @param $comment The comment on the table + * @param $tablespace The new tablespace for the table ('' means leave as is) + * @return 0 success + * @return -1 transaction error + * @return -2 get existing table error + * @return $this->_alterTable error code + */ + function alterTable($table, $name, $owner, $schema, $comment, $tablespace) { + + $data = $this->getTable($table); + + if ($data->recordCount() != 1) + return -2; + + $status = $this->beginTransaction(); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + + $status = $this->_alterTable($data, $name, $owner, $schema, $comment, $tablespace); + + if ($status != 0) { + $this->rollbackTransaction(); + return $status; + } + + return $this->endTransaction(); + } + + /** + * Returns the SQL for changing the current user + * @param $user The user to change to + * @return The SQL + */ + function getChangeUserSQL($user) { + $this->clean($user); + return "SET SESSION AUTHORIZATION '{$user}';"; + } + + /** + * Given an array of attnums and a relation, returns an array mapping + * attribute number to attribute name. + * @param $table The table to get attributes for + * @param $atts An array of attribute numbers + * @return An array mapping attnum to attname + * @return -1 $atts must be an array + * @return -2 wrong number of attributes found + */ + function getAttributeNames($table, $atts) { + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($table); + $this->arrayClean($atts); + + if (!is_array($atts)) return -1; + + if (sizeof($atts) == 0) return array(); + + $sql = "SELECT attnum, attname FROM pg_catalog.pg_attribute WHERE + attrelid=(SELECT oid FROM pg_catalog.pg_class WHERE relname='{$table}' AND + relnamespace=(SELECT oid FROM pg_catalog.pg_namespace WHERE nspname='{$c_schema}')) + AND attnum IN ('" . join("','", $atts) . "')"; + + $rs = $this->selectSet($sql); + if ($rs->recordCount() != sizeof($atts)) { + return -2; + } + else { + $temp = array(); + while (!$rs->EOF) { + $temp[$rs->fields['attnum']] = $rs->fields['attname']; + $rs->moveNext(); + } + return $temp; + } + } + + /** + * Empties a table in the database + * @param $table The table to be emptied + * @return 0 success + */ + function emptyTable($table) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($table); + + $sql = "DELETE FROM \"{$f_schema}\".\"{$table}\""; + + return $this->execute($sql); + } + + /** + * Removes a table from the database + * @param $table The table to drop + * @param $cascade True to cascade drop, false to restrict + * @return 0 success + */ + function dropTable($table, $cascade) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($table); + + $sql = "DROP TABLE \"{$f_schema}\".\"{$table}\""; + if ($cascade) $sql .= " CASCADE"; + + return $this->execute($sql); + } + + /** + * Add a new column to a table + * @param $table The table to add to + * @param $column The name of the new column + * @param $type The type of the column + * @param $array True if array type, false otherwise + * @param $notnull True if NOT NULL, false otherwise + * @param $default The default for the column. '' for none. + * @param $length The optional size of the column (ie. 30 for varchar(30)) + * @return 0 success + */ + function addColumn($table, $column, $type, $array, $length, $notnull, $default, $comment) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($table); + $this->fieldClean($column); + $this->clean($type); + $this->clean($length); + + if ($length == '') + $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" ADD COLUMN \"{$column}\" {$type}"; + else { + switch ($type) { + // Have to account for weird placing of length for with/without + // time zone types + case 'timestamp with time zone': + case 'timestamp without time zone': + $qual = substr($type, 9); + $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" ADD COLUMN \"{$column}\" timestamp({$length}){$qual}"; + break; + case 'time with time zone': + case 'time without time zone': + $qual = substr($type, 4); + $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" ADD COLUMN \"{$column}\" time({$length}){$qual}"; + break; + default: + $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" ADD COLUMN \"{$column}\" {$type}({$length})"; + } + } + + // Add array qualifier, if requested + if ($array) $sql .= '[]'; + + // If we have advanced column adding, add the extra qualifiers + if ($this->hasCreateFieldWithConstraints()) { + // NOT NULL clause + if ($notnull) $sql .= ' NOT NULL'; + + // DEFAULT clause + if ($default != '') $sql .= ' DEFAULT ' . $default; + } + + $status = $this->beginTransaction(); + if ($status != 0) return -1; + + $status = $this->execute($sql); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + + $status = $this->setComment('COLUMN', $column, $table, $comment); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + + return $this->endTransaction(); + } + + /** + * Alters a column in a table + * @param $table The table in which the column resides + * @param $column The column to alter + * @param $name The new name for the column + * @param $notnull (boolean) True if not null, false otherwise + * @param $oldnotnull (boolean) True if column is already not null, false otherwise + * @param $default The new default for the column + * @param $olddefault The old default for the column + * @param $type The new type for the column + * @param $array True if array type, false otherwise + * @param $length The optional size of the column (ie. 30 for varchar(30)) + * @param $oldtype The old type for the column + * @param $comment Comment for the column + * @return 0 success + * @return -1 batch alteration failed + * @return -4 rename column error + * @return -5 comment error + * @return -6 transaction error + */ + function alterColumn($table, $column, $name, $notnull, $oldnotnull, $default, $olddefault, + $type, $length, $array, $oldtype, $comment) + { + // Begin transaction + $status = $this->beginTransaction(); + if ($status != 0) { + $this->rollbackTransaction(); + return -6; + } + + // Rename the column, if it has been changed + if ($column != $name) { + $status = $this->renameColumn($table, $column, $name); + if ($status != 0) { + $this->rollbackTransaction(); + return -4; + } + } + + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($name); + $this->fieldClean($table); + $this->fieldClean($column); + + $toAlter = array(); + // Create the command for changing nullability + if ($notnull != $oldnotnull) { + $toAlter[] = "ALTER COLUMN \"{$name}\" ". (($notnull) ? 'SET' : 'DROP') . " NOT NULL"; + } + + // Add default, if it has changed + if ($default != $olddefault) { + if ($default == '') { + $toAlter[] = "ALTER COLUMN \"{$name}\" DROP DEFAULT"; + } + else { + $toAlter[] = "ALTER COLUMN \"{$name}\" SET DEFAULT {$default}"; + } + } + + // Add type, if it has changed + if ($length == '') + $ftype = $type; + else { + switch ($type) { + // Have to account for weird placing of length for with/without + // time zone types + case 'timestamp with time zone': + case 'timestamp without time zone': + $qual = substr($type, 9); + $ftype = "timestamp({$length}){$qual}"; + break; + case 'time with time zone': + case 'time without time zone': + $qual = substr($type, 4); + $ftype = "time({$length}){$qual}"; + break; + default: + $ftype = "{$type}({$length})"; + } + } + + // Add array qualifier, if requested + if ($array) $ftype .= '[]'; + + if ($ftype != $oldtype) { + $toAlter[] = "ALTER COLUMN \"{$name}\" TYPE {$ftype}"; + } + + // Attempt to process the batch alteration, if anything has been changed + if (!empty($toAlter)) { + // Initialise an empty SQL string + $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" " + . implode(',', $toAlter); + + $status = $this->execute($sql); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + } + + // Update the comment on the column + $status = $this->setComment('COLUMN', $name, $table, $comment); + if ($status != 0) { + $this->rollbackTransaction(); + return -5; + } + + return $this->endTransaction(); + } + + /** + * Renames a column in a table + * @param $table The table containing the column to be renamed + * @param $column The column to be renamed + * @param $newName The new name for the column + * @return 0 success + */ + function renameColumn($table, $column, $newName) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($table); + $this->fieldClean($column); + $this->fieldClean($newName); + + $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" RENAME COLUMN \"{$column}\" TO \"{$newName}\""; + + return $this->execute($sql); + } + + /** + * Sets default value of a column + * @param $table The table from which to drop + * @param $column The column name to set + * @param $default The new default value + * @return 0 success + */ + function setColumnDefault($table, $column, $default) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($table); + $this->fieldClean($column); + + $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" ALTER COLUMN \"{$column}\" SET DEFAULT {$default}"; + + return $this->execute($sql); + } + + /** + * Sets whether or not a column can contain NULLs + * @param $table The table that contains the column + * @param $column The column to alter + * @param $state True to set null, false to set not null + * @return 0 success + */ + function setColumnNull($table, $column, $state) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($table); + $this->fieldClean($column); + + $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" ALTER COLUMN \"{$column}\" " . (($state) ? 'DROP' : 'SET') . " NOT NULL"; + + return $this->execute($sql); + } + + /** + * Drops a column from a table + * @param $table The table from which to drop a column + * @param $column The column to be dropped + * @param $cascade True to cascade drop, false to restrict + * @return 0 success + */ + function dropColumn($table, $column, $cascade) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($table); + $this->fieldClean($column); + + $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" DROP COLUMN \"{$column}\""; + if ($cascade) $sql .= " CASCADE"; + + return $this->execute($sql); + } + + /** + * Drops default value of a column + * @param $table The table from which to drop + * @param $column The column name to drop default + * @return 0 success + */ + function dropColumnDefault($table, $column) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($table); + $this->fieldClean($column); + + $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" ALTER COLUMN \"{$column}\" DROP DEFAULT"; + + return $this->execute($sql); + } + + /** + * Sets up the data object for a dump. eg. Starts the appropriate + * transaction, sets variables, etc. + * @return 0 success + */ + function beginDump() { + // Begin serializable transaction (to dump consistent data) + $status = $this->beginTransaction(); + if ($status != 0) return -1; + + // Set serializable + $sql = "SET TRANSACTION ISOLATION LEVEL SERIALIZABLE"; + $status = $this->execute($sql); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + + // Set datestyle to ISO + $sql = "SET DATESTYLE = ISO"; + $status = $this->execute($sql); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + + // Set extra_float_digits to 2 + $sql = "SET extra_float_digits TO 2"; + $status = $this->execute($sql); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + + return 0; + } + + /** + * Ends the data object for a dump. + * @return 0 success + */ + function endDump() { + return $this->endTransaction(); + } + + /** + * Returns a recordset of all columns in a relation. Used for data export. + * @@ Note: Really needs to use a cursor + * @param $relation The name of a relation + * @return A recordset on success + * @return -1 Failed to set datestyle + */ + function dumpRelation($relation, $oids) { + $this->fieldClean($relation); + + // Actually retrieve the rows + if ($oids) $oid_str = $this->id . ', '; + else $oid_str = ''; + + return $this->selectSet("SELECT {$oid_str}* FROM \"{$relation}\""); + } + + /** + * Returns all available autovacuum per table information. + * @param $table if given, return autovacuum info for the given table or return all informations for all table + * + * @return A recordset + */ + function getTableAutovacuum($table='') { + + $sql = ''; + + if ($table !== '') { + $this->clean($table); + $c_schema = $this->_schema; + $this->clean($c_schema); + + $sql = "SELECT c.oid, nspname, relname, pg_catalog.array_to_string(reloptions, E',') AS reloptions + FROM pg_class c + LEFT JOIN pg_namespace n ON n.oid = c.relnamespace + WHERE c.relkind = 'r'::\"char\" + AND n.nspname NOT IN ('pg_catalog','information_schema') + AND c.reloptions IS NOT NULL + AND c.relname = '{$table}' AND n.nspname = '{$c_schema}' + ORDER BY nspname, relname"; + } + else { + $sql = "SELECT c.oid, nspname, relname, pg_catalog.array_to_string(reloptions, E',') AS reloptions + FROM pg_class c + LEFT JOIN pg_namespace n ON n.oid = c.relnamespace + WHERE c.relkind = 'r'::\"char\" + AND n.nspname NOT IN ('pg_catalog','information_schema') + AND c.reloptions IS NOT NULL + ORDER BY nspname, relname"; + + } + + /* tmp var to parse the results */ + $_autovacs = $this->selectSet($sql); + + /* result aray to return as RS */ + $autovacs = array(); + while (!$_autovacs->EOF) { + $_ = array( + 'nspname' => $_autovacs->fields['nspname'], + 'relname' => $_autovacs->fields['relname'] + ); + + foreach (explode(',', $_autovacs->fields['reloptions']) as $var) { + list($o, $v) = explode('=', $var); + $_[$o] = $v; + } + + $autovacs[] = $_; + + $_autovacs->moveNext(); + } + + include_once('./classes/ArrayRecordSet.php'); + return new ArrayRecordSet($autovacs); + } + + // Row functions + + /** + * Get the fields for uniquely identifying a row in a table + * @param $table The table for which to retrieve the identifier + * @return An array mapping attribute number to attribute name, empty for no identifiers + * @return -1 error + */ + function getRowIdentifier($table) { + $oldtable = $table; + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($table); + + $status = $this->beginTransaction(); + if ($status != 0) return -1; + + // Get the first primary or unique index (sorting primary keys first) that + // is NOT a partial index. + $sql = " + SELECT indrelid, indkey + FROM pg_catalog.pg_index + WHERE indisunique AND indrelid=( + SELECT oid FROM pg_catalog.pg_class + WHERE relname='{$table}' AND relnamespace=( + SELECT oid FROM pg_catalog.pg_namespace + WHERE nspname='{$c_schema}' + ) + ) AND indpred IS NULL AND indexprs IS NULL + ORDER BY indisprimary DESC LIMIT 1"; + $rs = $this->selectSet($sql); + + // If none, check for an OID column. Even though OIDs can be duplicated, the edit and delete row + // functions check that they're only modiying a single row. Otherwise, return empty array. + if ($rs->recordCount() == 0) { + // Check for OID column + $temp = array(); + if ($this->hasObjectID($table)) { + $temp = array('oid'); + } + $this->endTransaction(); + return $temp; + } + // Otherwise find the names of the keys + else { + $attnames = $this->getAttributeNames($oldtable, explode(' ', $rs->fields['indkey'])); + if (!is_array($attnames)) { + $this->rollbackTransaction(); + return -1; + } + else { + $this->endTransaction(); + return $attnames; + } + } + } + + /** + * Adds a new row to a table + * @param $table The table in which to insert + * @param $fields Array of given field in values + * @param $values Array of new values for the row + * @param $nulls An array mapping column => something if it is to be null + * @param $format An array of the data type (VALUE or EXPRESSION) + * @param $types An array of field types + * @return 0 success + * @return -1 invalid parameters + */ + function insertRow($table, $fields, $values, $nulls, $format, $types) { + + if (!is_array($fields) || !is_array($values) || !is_array($nulls) + || !is_array($format) || !is_array($types) + || (count($fields) != count($values)) + ) { + return -1; + } + else { + // Build clause + if (count($values) > 0) { + // Escape all field names + $fields = array_map(array('Postgres','fieldClean'), $fields); + $f_schema = $this->_schema; + $this->fieldClean($table); + $this->fieldClean($f_schema); + + $sql = ''; + foreach($values as $i => $value) { + + // Handle NULL values + if (isset($nulls[$i])) + $sql .= ',NULL'; + else + $sql .= ',' . $this->formatValue($types[$i], $format[$i], $value); + } + + $sql = "INSERT INTO \"{$f_schema}\".\"{$table}\" (\"". implode('","', $fields) ."\") + VALUES (". substr($sql, 1) .")"; + + return $this->execute($sql); + } + } + + return -1; + } + + /** + * Updates a row in a table + * @param $table The table in which to update + * @param $vars An array mapping new values for the row + * @param $nulls An array mapping column => something if it is to be null + * @param $format An array of the data type (VALUE or EXPRESSION) + * @param $types An array of field types + * @param $keyarr An array mapping column => value to update + * @return 0 success + * @return -1 invalid parameters + */ + function editRow($table, $vars, $nulls, $format, $types, $keyarr) { + if (!is_array($vars) || !is_array($nulls) || !is_array($format) || !is_array($types)) + return -1; + else { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($table); + + // Build clause + if (sizeof($vars) > 0) { + + foreach($vars as $key => $value) { + $this->fieldClean($key); + + // Handle NULL values + if (isset($nulls[$key])) $tmp = 'NULL'; + else $tmp = $this->formatValue($types[$key], $format[$key], $value); + + if (isset($sql)) $sql .= ", \"{$key}\"={$tmp}"; + else $sql = "UPDATE \"{$f_schema}\".\"{$table}\" SET \"{$key}\"={$tmp}"; + } + $first = true; + foreach ($keyarr as $k => $v) { + $this->fieldClean($k); + $this->clean($v); + if ($first) { + $sql .= " WHERE \"{$k}\"='{$v}'"; + $first = false; + } + else $sql .= " AND \"{$k}\"='{$v}'"; + } + } + + // Begin transaction. We do this so that we can ensure only one row is + // edited + $status = $this->beginTransaction(); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + + $status = $this->execute($sql); + if ($status != 0) { // update failed + $this->rollbackTransaction(); + return -1; + } elseif ($this->conn->Affected_Rows() != 1) { // more than one row could be updated + $this->rollbackTransaction(); + return -2; + } + + // End transaction + return $this->endTransaction(); + } + } + + /** + * Delete a row from a table + * @param $table The table from which to delete + * @param $key An array mapping column => value to delete + * @return 0 success + */ + function deleteRow($table, $key, $schema=false) { + if (!is_array($key)) return -1; + else { + // Begin transaction. We do this so that we can ensure only one row is + // deleted + $status = $this->beginTransaction(); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + + if ($schema === false) $schema = $this->_schema; + + $status = $this->delete($table, $key, $schema); + if ($status != 0 || $this->conn->Affected_Rows() != 1) { + $this->rollbackTransaction(); + return -2; + } + + // End transaction + return $this->endTransaction(); + } + } + + // Sequence functions + + /** + * Returns properties of a single sequence + * @param $sequence Sequence name + * @return A recordset + */ + function getSequence($sequence) { + $c_schema = $this->_schema; + $this->clean($c_schema); + $c_sequence = $sequence; + $this->fieldClean($sequence); + $this->clean($c_sequence); + + $sql = " + SELECT + c.relname AS seqname, s.*, + m.seqstart AS start_value, m.seqincrement AS increment_by, m.seqmax AS max_value, m.seqmin AS min_value, + m.seqcache AS cache_value, m.seqcycle AS is_cycled, + pg_catalog.obj_description(m.seqrelid, 'pg_class') AS seqcomment, + u.usename AS seqowner, n.nspname + FROM + \"{$sequence}\" AS s, pg_catalog.pg_sequence m, + pg_catalog.pg_class c, pg_catalog.pg_user u, pg_catalog.pg_namespace n + WHERE + c.relowner=u.usesysid AND c.relnamespace=n.oid + AND c.oid = m.seqrelid AND c.relname = '{$c_sequence}' AND c.relkind = 'S' AND n.nspname='{$c_schema}' + AND n.oid = c.relnamespace"; + + return $this->selectSet( $sql ); + } + + /** + * Returns all sequences in the current database + * @return A recordset + */ + function getSequences($all = false) { + if ($all) { + // Exclude pg_catalog and information_schema tables + $sql = "SELECT n.nspname, c.relname AS seqname, u.usename AS seqowner + FROM pg_catalog.pg_class c, pg_catalog.pg_user u, pg_catalog.pg_namespace n + WHERE c.relowner=u.usesysid AND c.relnamespace=n.oid + AND c.relkind = 'S' + AND n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast') + ORDER BY nspname, seqname"; + } else { + $c_schema = $this->_schema; + $this->clean($c_schema); + $sql = "SELECT c.relname AS seqname, u.usename AS seqowner, pg_catalog.obj_description(c.oid, 'pg_class') AS seqcomment, + (SELECT spcname FROM pg_catalog.pg_tablespace pt WHERE pt.oid=c.reltablespace) AS tablespace + FROM pg_catalog.pg_class c, pg_catalog.pg_user u, pg_catalog.pg_namespace n + WHERE c.relowner=u.usesysid AND c.relnamespace=n.oid + AND c.relkind = 'S' AND n.nspname='{$c_schema}' ORDER BY seqname"; + } + + return $this->selectSet( $sql ); + } + + /** + * Execute nextval on a given sequence + * @param $sequence Sequence name + * @return 0 success + * @return -1 sequence not found + */ + function nextvalSequence($sequence) { + /* This double-cleaning is deliberate */ + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->clean($f_schema); + $this->fieldClean($sequence); + $this->clean($sequence); + + $sql = "SELECT pg_catalog.NEXTVAL('\"{$f_schema}\".\"{$sequence}\"')"; + + return $this->execute($sql); + } + + /** + * Execute setval on a given sequence + * @param $sequence Sequence name + * @param $nextvalue The next value + * @return 0 success + * @return -1 sequence not found + */ + function setvalSequence($sequence, $nextvalue) { + /* This double-cleaning is deliberate */ + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->clean($f_schema); + $this->fieldClean($sequence); + $this->clean($sequence); + $this->clean($nextvalue); + + $sql = "SELECT pg_catalog.SETVAL('\"{$f_schema}\".\"{$sequence}\"', '{$nextvalue}')"; + + return $this->execute($sql); + } + + /** + * Restart a given sequence to its start value + * @param $sequence Sequence name + * @return 0 success + * @return -1 sequence not found + */ + function restartSequence($sequence) { + + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($sequence); + + $sql = "ALTER SEQUENCE \"{$f_schema}\".\"{$sequence}\" RESTART;"; + + return $this->execute($sql); + } + + /** + * Resets a given sequence to min value of sequence + * @param $sequence Sequence name + * @return 0 success + * @return -1 sequence not found + */ + function resetSequence($sequence) { + // Get the minimum value of the sequence + $seq = $this->getSequence($sequence); + if ($seq->recordCount() != 1) return -1; + $minvalue = $seq->fields['min_value']; + + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + /* This double-cleaning is deliberate */ + $this->fieldClean($sequence); + $this->clean($sequence); + + $sql = "SELECT pg_catalog.SETVAL('\"{$f_schema}\".\"{$sequence}\"', {$minvalue})"; + + return $this->execute($sql); + } + + /** + * Creates a new sequence + * @param $sequence Sequence name + * @param $increment The increment + * @param $minvalue The min value + * @param $maxvalue The max value + * @param $startvalue The starting value + * @param $cachevalue The cache value + * @param $cycledvalue True if cycled, false otherwise + * @return 0 success + */ + function createSequence($sequence, $increment, $minvalue, $maxvalue, + $startvalue, $cachevalue, $cycledvalue) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($sequence); + $this->clean($increment); + $this->clean($minvalue); + $this->clean($maxvalue); + $this->clean($startvalue); + $this->clean($cachevalue); + + $sql = "CREATE SEQUENCE \"{$f_schema}\".\"{$sequence}\""; + if ($increment != '') $sql .= " INCREMENT {$increment}"; + if ($minvalue != '') $sql .= " MINVALUE {$minvalue}"; + if ($maxvalue != '') $sql .= " MAXVALUE {$maxvalue}"; + if ($startvalue != '') $sql .= " START {$startvalue}"; + if ($cachevalue != '') $sql .= " CACHE {$cachevalue}"; + if ($cycledvalue) $sql .= " CYCLE"; + + return $this->execute($sql); + } + + /** + * Rename a sequence + * @param $seqrs The sequence RecordSet returned by getSequence() + * @param $name The new name for the sequence + * @return 0 success + */ + function alterSequenceName($seqrs, $name) { + /* vars are cleaned in _alterSequence */ + if (!empty($name) && ($seqrs->fields['seqname'] != $name)) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $sql = "ALTER SEQUENCE \"{$f_schema}\".\"{$seqrs->fields['seqname']}\" RENAME TO \"{$name}\""; + $status = $this->execute($sql); + if ($status == 0) + $seqrs->fields['seqname'] = $name; + else + return $status; + } + return 0; + } + + /** + * Alter a sequence's owner + * @param $seqrs The sequence RecordSet returned by getSequence() + * @param $name The new owner for the sequence + * @return 0 success + */ + function alterSequenceOwner($seqrs, $owner) { + // If owner has been changed, then do the alteration. We are + // careful to avoid this generally as changing owner is a + // superuser only function. + /* vars are cleaned in _alterSequence */ + if (!empty($owner) && ($seqrs->fields['seqowner'] != $owner)) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $sql = "ALTER SEQUENCE \"{$f_schema}\".\"{$seqrs->fields['seqname']}\" OWNER TO \"{$owner}\""; + return $this->execute($sql); + } + return 0; + } + + /** + * Alter a sequence's schema + * @param $seqrs The sequence RecordSet returned by getSequence() + * @param $name The new schema for the sequence + * @return 0 success + */ + function alterSequenceSchema($seqrs, $schema) { + /* vars are cleaned in _alterSequence */ + if (!empty($schema) && ($seqrs->fields['nspname'] != $schema)) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $sql = "ALTER SEQUENCE \"{$f_schema}\".\"{$seqrs->fields['seqname']}\" SET SCHEMA {$schema}"; + return $this->execute($sql); + } + return 0; + } + + /** + * Alter a sequence's properties + * @param $seqrs The sequence RecordSet returned by getSequence() + * @param $increment The sequence incremental value + * @param $minvalue The sequence minimum value + * @param $maxvalue The sequence maximum value + * @param $restartvalue The sequence current value + * @param $cachevalue The sequence cache value + * @param $cycledvalue Sequence can cycle ? + * @param $startvalue The sequence start value when issueing a restart + * @return 0 success + */ + function alterSequenceProps($seqrs, $increment, $minvalue, $maxvalue, + $restartvalue, $cachevalue, $cycledvalue, $startvalue) { + + $sql = ''; + /* vars are cleaned in _alterSequence */ + if (!empty($increment) && ($increment != $seqrs->fields['increment_by'])) $sql .= " INCREMENT {$increment}"; + if (!empty($minvalue) && ($minvalue != $seqrs->fields['min_value'])) $sql .= " MINVALUE {$minvalue}"; + if (!empty($maxvalue) && ($maxvalue != $seqrs->fields['max_value'])) $sql .= " MAXVALUE {$maxvalue}"; + if (!empty($restartvalue) && ($restartvalue != $seqrs->fields['last_value'])) $sql .= " RESTART {$restartvalue}"; + if (!empty($cachevalue) && ($cachevalue != $seqrs->fields['cache_value'])) $sql .= " CACHE {$cachevalue}"; + if (!empty($startvalue) && ($startvalue != $seqrs->fields['start_value'])) $sql .= " START {$startvalue}"; + // toggle cycle yes/no + if (!is_null($cycledvalue)) $sql .= (!$cycledvalue ? ' NO ' : '') . " CYCLE"; + if ($sql != '') { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $sql = "ALTER SEQUENCE \"{$f_schema}\".\"{$seqrs->fields['seqname']}\" {$sql}"; + return $this->execute($sql); + } + return 0; + } + + /** + * Protected method which alter a sequence + * SHOULDN'T BE CALLED OUTSIDE OF A TRANSACTION + * @param $seqrs The sequence recordSet returned by getSequence() + * @param $name The new name for the sequence + * @param $comment The comment on the sequence + * @param $owner The new owner for the sequence + * @param $schema The new schema for the sequence + * @param $increment The increment + * @param $minvalue The min value + * @param $maxvalue The max value + * @param $restartvalue The starting value + * @param $cachevalue The cache value + * @param $cycledvalue True if cycled, false otherwise + * @param $startvalue The sequence start value when issueing a restart + * @return 0 success + * @return -3 rename error + * @return -4 comment error + * @return -5 owner error + * @return -6 get sequence props error + * @return -7 schema error + */ + protected + function _alterSequence($seqrs, $name, $comment, $owner, $schema, $increment, + $minvalue, $maxvalue, $restartvalue, $cachevalue, $cycledvalue, $startvalue) { + + $this->fieldArrayClean($seqrs->fields); + + // Comment + $status = $this->setComment('SEQUENCE', $seqrs->fields['seqname'], '', $comment); + if ($status != 0) + return -4; + + // Owner + $this->fieldClean($owner); + $status = $this->alterSequenceOwner($seqrs, $owner); + if ($status != 0) + return -5; + + // Props + $this->clean($increment); + $this->clean($minvalue); + $this->clean($maxvalue); + $this->clean($restartvalue); + $this->clean($cachevalue); + $this->clean($cycledvalue); + $this->clean($startvalue); + $status = $this->alterSequenceProps($seqrs, $increment, $minvalue, + $maxvalue, $restartvalue, $cachevalue, $cycledvalue, $startvalue); + if ($status != 0) + return -6; + + // Rename + $this->fieldClean($name); + $status = $this->alterSequenceName($seqrs, $name); + if ($status != 0) + return -3; + + // Schema + $this->clean($schema); + $status = $this->alterSequenceSchema($seqrs, $schema); + if ($status != 0) + return -7; + + return 0; + } + + /** + * Alters a sequence + * @param $sequence The name of the sequence + * @param $name The new name for the sequence + * @param $comment The comment on the sequence + * @param $owner The new owner for the sequence + * @param $schema The new schema for the sequence + * @param $increment The increment + * @param $minvalue The min value + * @param $maxvalue The max value + * @param $restartvalue The starting value + * @param $cachevalue The cache value + * @param $cycledvalue True if cycled, false otherwise + * @param $startvalue The sequence start value when issueing a restart + * @return 0 success + * @return -1 transaction error + * @return -2 get existing sequence error + * @return $this->_alterSequence error code + */ + function alterSequence($sequence, $name, $comment, $owner=null, $schema=null, $increment=null, + $minvalue=null, $maxvalue=null, $restartvalue=null, $cachevalue=null, $cycledvalue=null, $startvalue=null) { + + $this->fieldClean($sequence); + + $data = $this->getSequence($sequence); + + if ($data->recordCount() != 1) + return -2; + + $status = $this->beginTransaction(); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + + $status = $this->_alterSequence($data, $name, $comment, $owner, $schema, $increment, + $minvalue, $maxvalue, $restartvalue, $cachevalue, $cycledvalue, $startvalue); + + if ($status != 0) { + $this->rollbackTransaction(); + return $status; + } + + return $this->endTransaction(); + } + + /** + * Drops a given sequence + * @param $sequence Sequence name + * @param $cascade True to cascade drop, false to restrict + * @return 0 success + */ + function dropSequence($sequence, $cascade) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($sequence); + + $sql = "DROP SEQUENCE \"{$f_schema}\".\"{$sequence}\""; + if ($cascade) $sql .= " CASCADE"; + + return $this->execute($sql); + } + + // View functions + + /** + * Returns all details for a particular view + * @param $view The name of the view to retrieve + * @return View info + */ + function getView($view) { + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($view); + + $sql = " + SELECT c.relname, n.nspname, pg_catalog.pg_get_userbyid(c.relowner) AS relowner, + pg_catalog.pg_get_viewdef(c.oid, true) AS vwdefinition, + pg_catalog.obj_description(c.oid, 'pg_class') AS relcomment + FROM pg_catalog.pg_class c + LEFT JOIN pg_catalog.pg_namespace n ON (n.oid = c.relnamespace) + WHERE (c.relname = '{$view}') AND n.nspname='{$c_schema}'"; + + return $this->selectSet($sql); + } + + /** + * Returns a list of all views in the database + * @return All views + */ + function getViews() { + $c_schema = $this->_schema; + $this->clean($c_schema); + $sql = " + SELECT c.relname, pg_catalog.pg_get_userbyid(c.relowner) AS relowner, + pg_catalog.obj_description(c.oid, 'pg_class') AS relcomment + FROM pg_catalog.pg_class c + LEFT JOIN pg_catalog.pg_namespace n ON (n.oid = c.relnamespace) + WHERE (n.nspname='{$c_schema}') AND (c.relkind = 'v'::\"char\") + ORDER BY relname"; + + return $this->selectSet($sql); + } + + /** + * Updates a view. + * @param $viewname The name fo the view to update + * @param $definition The new definition for the view + * @return 0 success + * @return -1 transaction error + * @return -2 drop view error + * @return -3 create view error + */ + function setView($viewname, $definition,$comment) { + return $this->createView($viewname, $definition, true, $comment); + } + + /** + * Creates a new view. + * @param $viewname The name of the view to create + * @param $definition The definition for the new view + * @param $replace True to replace the view, false otherwise + * @return 0 success + */ + function createView($viewname, $definition, $replace, $comment) { + $status = $this->beginTransaction(); + if ($status != 0) return -1; + + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($viewname); + + // Note: $definition not cleaned + + $sql = "CREATE "; + if ($replace) $sql .= "OR REPLACE "; + $sql .= "VIEW \"{$f_schema}\".\"{$viewname}\" AS {$definition}"; + + $status = $this->execute($sql); + if ($status) { + $this->rollbackTransaction(); + return -1; + } + + if ($comment != '') { + $status = $this->setComment('VIEW', $viewname, '', $comment); + if ($status) { + $this->rollbackTransaction(); + return -1; + } + } + + return $this->endTransaction(); + } + + /** + * Rename a view + * @param $vwrs The view recordSet returned by getView() + * @param $name The new view's name + * @return 0 success + */ + function alterViewName($vwrs, $name) { + // Rename (only if name has changed) + /* $vwrs and $name are cleaned in _alterView */ + if (!empty($name) && ($name != $vwrs->fields['relname'])) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $sql = "ALTER VIEW \"{$f_schema}\".\"{$vwrs->fields['relname']}\" RENAME TO \"{$name}\""; + $status = $this->execute($sql); + if ($status == 0) + $vwrs->fields['relname'] = $name; + else + return $status; + } + return 0; + } + + /** + * Alter a view's owner + * @param $vwrs The view recordSet returned by getView() + * @param $name The new view's owner + * @return 0 success + */ + function alterViewOwner($vwrs, $owner = null) { + /* $vwrs and $owner are cleaned in _alterView */ + if ((!empty($owner)) && ($vwrs->fields['relowner'] != $owner)) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + // If owner has been changed, then do the alteration. We are + // careful to avoid this generally as changing owner is a + // superuser only function. + $sql = "ALTER TABLE \"{$f_schema}\".\"{$vwrs->fields['relname']}\" OWNER TO \"{$owner}\""; + return $this->execute($sql); + } + return 0; + } + + /** + * Alter a view's schema + * @param $vwrs The view recordSet returned by getView() + * @param $name The new view's schema + * @return 0 success + */ + function alterViewSchema($vwrs, $schema) { + /* $vwrs and $schema are cleaned in _alterView */ + if (!empty($schema) && ($vwrs->fields['nspname'] != $schema)) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + // If tablespace has been changed, then do the alteration. We + // don't want to do this unnecessarily. + $sql = "ALTER TABLE \"{$f_schema}\".\"{$vwrs->fields['relname']}\" SET SCHEMA \"{$schema}\""; + return $this->execute($sql); + } + return 0; + } + + /** + * Protected method which alter a view + * SHOULDN'T BE CALLED OUTSIDE OF A TRANSACTION + * @param $vwrs The view recordSet returned by getView() + * @param $name The new name for the view + * @param $owner The new owner for the view + * @param $comment The comment on the view + * @return 0 success + * @return -3 rename error + * @return -4 comment error + * @return -5 owner error + * @return -6 schema error + */ + protected + function _alterView($vwrs, $name, $owner, $schema, $comment) { + + $this->fieldArrayClean($vwrs->fields); + + // Comment + if ($this->setComment('VIEW', $vwrs->fields['relname'], '', $comment) != 0) + return -4; + + // Owner + $this->fieldClean($owner); + $status = $this->alterViewOwner($vwrs, $owner); + if ($status != 0) return -5; + + // Rename + $this->fieldClean($name); + $status = $this->alterViewName($vwrs, $name); + if ($status != 0) return -3; + + // Schema + $this->fieldClean($schema); + $status = $this->alterViewSchema($vwrs, $schema); + if ($status != 0) return -6; + + return 0; + } + + /** + * Alter view properties + * @param $view The name of the view + * @param $name The new name for the view + * @param $owner The new owner for the view + * @param $schema The new schema for the view + * @param $comment The comment on the view + * @return 0 success + * @return -1 transaction error + * @return -2 get existing view error + * @return $this->_alterView error code + */ + function alterView($view, $name, $owner, $schema, $comment) { + + $data = $this->getView($view); + if ($data->recordCount() != 1) + return -2; + + $status = $this->beginTransaction(); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + + $status = $this->_alterView($data, $name, $owner, $schema, $comment); + + if ($status != 0) { + $this->rollbackTransaction(); + return $status; + } + + return $this->endTransaction(); + } + + /** + * Drops a view. + * @param $viewname The name of the view to drop + * @param $cascade True to cascade drop, false to restrict + * @return 0 success + */ + function dropView($viewname, $cascade) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($viewname); + + $sql = "DROP VIEW \"{$f_schema}\".\"{$viewname}\""; + if ($cascade) $sql .= " CASCADE"; + + return $this->execute($sql); + } + + // Index functions + + /** + * Grabs a list of indexes for a table + * @param $table The name of a table whose indexes to retrieve + * @param $unique Only get unique/pk indexes + * @return A recordset + */ + function getIndexes($table = '', $unique = false) { + $this->clean($table); + + $sql = " + SELECT c2.relname AS indname, i.indisprimary, i.indisunique, i.indisclustered, + pg_catalog.pg_get_indexdef(i.indexrelid, 0, true) AS inddef + FROM pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_index i + WHERE c.relname = '{$table}' AND pg_catalog.pg_table_is_visible(c.oid) + AND c.oid = i.indrelid AND i.indexrelid = c2.oid + "; + if ($unique) $sql .= " AND i.indisunique "; + $sql .= " ORDER BY c2.relname"; + + return $this->selectSet($sql); + } + + /** + * test if a table has been clustered on an index + * @param $table The table to test + * + * @return true if the table has been already clustered + */ + function alreadyClustered($table) { + + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($table); + + $sql = "SELECT i.indisclustered + FROM pg_catalog.pg_class c, pg_catalog.pg_index i + WHERE c.relname = '{$table}' + AND c.oid = i.indrelid AND i.indisclustered + AND c.relnamespace = (SELECT oid FROM pg_catalog.pg_namespace + WHERE nspname='{$c_schema}') + "; + + $v = $this->selectSet($sql); + + if ($v->recordCount() == 0) + return false; + + return true; + } + + /** + * Creates an index + * @param $name The index name + * @param $table The table on which to add the index + * @param $columns An array of columns that form the index + * or a string expression for a functional index + * @param $type The index type + * @param $unique True if unique, false otherwise + * @param $where Index predicate ('' for none) + * @param $tablespace The tablespaces ('' means none/default) + * @return 0 success + */ + function createIndex($name, $table, $columns, $type, $unique, $where, $tablespace, $concurrently) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($name); + $this->fieldClean($table); + + $sql = "CREATE"; + if ($unique) $sql .= " UNIQUE"; + $sql .= " INDEX"; + if ($concurrently) $sql .= " CONCURRENTLY"; + $sql .= " \"{$name}\" ON \"{$f_schema}\".\"{$table}\" USING {$type} "; + + if (is_array($columns)) { + $this->arrayClean($columns); + $sql .= "(\"" . implode('","', $columns) . "\")"; + } else { + $sql .= "(" . $columns .")"; + } + + // Tablespace + if ($this->hasTablespaces() && $tablespace != '') { + $this->fieldClean($tablespace); + $sql .= " TABLESPACE \"{$tablespace}\""; + } + + // Predicate + if (trim($where) != '') { + $sql .= " WHERE ({$where})"; + } + + return $this->execute($sql); + } + + /** + * Removes an index from the database + * @param $index The index to drop + * @param $cascade True to cascade drop, false to restrict + * @return 0 success + */ + function dropIndex($index, $cascade) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($index); + + $sql = "DROP INDEX \"{$f_schema}\".\"{$index}\""; + if ($cascade) $sql .= " CASCADE"; + + return $this->execute($sql); + } + + /** + * Rebuild indexes + * @param $type 'DATABASE' or 'TABLE' or 'INDEX' + * @param $name The name of the specific database, table, or index to be reindexed + * @param $force If true, recreates indexes forcedly in PostgreSQL 7.0-7.1, forces rebuild of system indexes in 7.2-7.3, ignored in >=7.4 + */ + function reindex($type, $name, $force = false) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($name); + switch($type) { + case 'DATABASE': + $sql = "REINDEX {$type} \"{$name}\""; + if ($force) $sql .= ' FORCE'; + break; + case 'TABLE': + case 'INDEX': + $sql = "REINDEX {$type} \"{$f_schema}\".\"{$name}\""; + if ($force) $sql .= ' FORCE'; + break; + default: + return -1; + } + + return $this->execute($sql); + } + + /** + * Clusters an index + * @param $index The name of the index + * @param $table The table the index is on + * @return 0 success + */ + function clusterIndex($table='', $index='') { + + $sql = 'CLUSTER'; + + // We don't bother with a transaction here, as there's no point rolling + // back an expensive cluster if a cheap analyze fails for whatever reason + + if (!empty($table)) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($table); + $sql .= " \"{$f_schema}\".\"{$table}\""; + + if (!empty($index)) { + $this->fieldClean($index); + $sql .= " USING \"{$index}\""; + } + } + + return $this->execute($sql); + } + + // Constraint functions + + /** + * Returns a list of all constraints on a table + * @param $table The table to find rules for + * @return A recordset + */ + function getConstraints($table) { + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($table); + + // This SQL is greatly complicated by the need to retrieve + // index clustering information for primary and unique constraints + $sql = "SELECT + pc.conname, + pg_catalog.pg_get_constraintdef(pc.oid, true) AS consrc, + pc.contype, + CASE WHEN pc.contype='u' OR pc.contype='p' THEN ( + SELECT + indisclustered + FROM + pg_catalog.pg_depend pd, + pg_catalog.pg_class pl, + pg_catalog.pg_index pi + WHERE + pd.refclassid=pc.tableoid + AND pd.refobjid=pc.oid + AND pd.objid=pl.oid + AND pl.oid=pi.indexrelid + ) ELSE + NULL + END AS indisclustered + FROM + pg_catalog.pg_constraint pc + WHERE + pc.conrelid = (SELECT oid FROM pg_catalog.pg_class WHERE relname='{$table}' + AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace + WHERE nspname='{$c_schema}')) + ORDER BY + 1 + "; + + return $this->selectSet($sql); + } + + /** + * Returns a list of all constraints on a table, + * including constraint name, definition, related col and referenced namespace, + * table and col if needed + * @param $table the table where we are looking for fk + * @return a recordset + */ + function getConstraintsWithFields($table) { + + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($table); + + // get the max number of col used in a constraint for the table + $sql = "SELECT DISTINCT + max(SUBSTRING(array_dims(c.conkey) FROM \$patern\$^\\[.*:(.*)\\]$\$patern\$)) as nb + FROM pg_catalog.pg_constraint AS c + JOIN pg_catalog.pg_class AS r ON (c.conrelid=r.oid) + JOIN pg_catalog.pg_namespace AS ns ON (r.relnamespace=ns.oid) + WHERE + r.relname = '{$table}' AND ns.nspname='{$c_schema}'"; + + $rs = $this->selectSet($sql); + + if ($rs->EOF) $max_col = 0; + else $max_col = $rs->fields['nb']; + + $sql = ' + SELECT + c.oid AS conid, c.contype, c.conname, pg_catalog.pg_get_constraintdef(c.oid, true) AS consrc, + ns1.nspname as p_schema, r1.relname as p_table, ns2.nspname as f_schema, + r2.relname as f_table, f1.attname as p_field, f1.attnum AS p_attnum, f2.attname as f_field, + f2.attnum AS f_attnum, pg_catalog.obj_description(c.oid, \'pg_constraint\') AS constcomment, + c.conrelid, c.confrelid + FROM + pg_catalog.pg_constraint AS c + JOIN pg_catalog.pg_class AS r1 ON (c.conrelid=r1.oid) + JOIN pg_catalog.pg_attribute AS f1 ON (f1.attrelid=r1.oid AND (f1.attnum=c.conkey[1]'; + for ($i = 2; $i <= $rs->fields['nb']; $i++) { + $sql.= " OR f1.attnum=c.conkey[$i]"; + } + $sql.= ')) + JOIN pg_catalog.pg_namespace AS ns1 ON r1.relnamespace=ns1.oid + LEFT JOIN ( + pg_catalog.pg_class AS r2 JOIN pg_catalog.pg_namespace AS ns2 ON (r2.relnamespace=ns2.oid) + ) ON (c.confrelid=r2.oid) + LEFT JOIN pg_catalog.pg_attribute AS f2 ON + (f2.attrelid=r2.oid AND ((c.confkey[1]=f2.attnum AND c.conkey[1]=f1.attnum)'; + for ($i = 2; $i <= $rs->fields['nb']; $i++) + $sql.= " OR (c.confkey[$i]=f2.attnum AND c.conkey[$i]=f1.attnum)"; + + $sql .= sprintf(")) + WHERE + r1.relname = '%s' AND ns1.nspname='%s' + ORDER BY 1", $table, $c_schema); + + return $this->selectSet($sql); + } + + /** + * Adds a primary key constraint to a table + * @param $table The table to which to add the primery key + * @param $fields (array) An array of fields over which to add the primary key + * @param $name (optional) The name to give the key, otherwise default name is assigned + * @param $tablespace (optional) The tablespace for the schema, '' indicates default. + * @return 0 success + * @return -1 no fields given + */ + function addPrimaryKey($table, $fields, $name = '', $tablespace = '') { + if (!is_array($fields) || sizeof($fields) == 0) return -1; + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($table); + $this->fieldArrayClean($fields); + $this->fieldClean($name); + $this->fieldClean($tablespace); + + $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" ADD "; + if ($name != '') $sql .= "CONSTRAINT \"{$name}\" "; + $sql .= "PRIMARY KEY (\"" . join('","', $fields) . "\")"; + + if ($tablespace != '' && $this->hasTablespaces()) + $sql .= " USING INDEX TABLESPACE \"{$tablespace}\""; + + return $this->execute($sql); + } + + /** + * Adds a unique constraint to a table + * @param $table The table to which to add the unique key + * @param $fields (array) An array of fields over which to add the unique key + * @param $name (optional) The name to give the key, otherwise default name is assigned + * @param $tablespace (optional) The tablespace for the schema, '' indicates default. + * @return 0 success + * @return -1 no fields given + */ + function addUniqueKey($table, $fields, $name = '', $tablespace = '') { + if (!is_array($fields) || sizeof($fields) == 0) return -1; + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($table); + $this->fieldArrayClean($fields); + $this->fieldClean($name); + $this->fieldClean($tablespace); + + $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" ADD "; + if ($name != '') $sql .= "CONSTRAINT \"{$name}\" "; + $sql .= "UNIQUE (\"" . join('","', $fields) . "\")"; + + if ($tablespace != '' && $this->hasTablespaces()) + $sql .= " USING INDEX TABLESPACE \"{$tablespace}\""; + + return $this->execute($sql); + } + + /** + * Adds a check constraint to a table + * @param $table The table to which to add the check + * @param $definition The definition of the check + * @param $name (optional) The name to give the check, otherwise default name is assigned + * @return 0 success + */ + function addCheckConstraint($table, $definition, $name = '') { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($table); + $this->fieldClean($name); + // @@ How the heck do you clean a definition??? + + $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" ADD "; + if ($name != '') $sql .= "CONSTRAINT \"{$name}\" "; + $sql .= "CHECK ({$definition})"; + + return $this->execute($sql); + } + + /** + * Drops a check constraint from a table + * @param $table The table from which to drop the check + * @param $name The name of the check to be dropped + * @return 0 success + * @return -2 transaction error + * @return -3 lock error + * @return -4 check drop error + */ + function dropCheckConstraint($table, $name) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $c_schema = $this->_schema; + $this->clean($c_schema); + $c_table = $table; + $this->fieldClean($table); + $this->clean($c_table); + $this->clean($name); + + // Begin transaction + $status = $this->beginTransaction(); + if ($status != 0) return -2; + + // Properly lock the table + $sql = "LOCK TABLE \"{$f_schema}\".\"{$table}\" IN ACCESS EXCLUSIVE MODE"; + $status = $this->execute($sql); + if ($status != 0) { + $this->rollbackTransaction(); + return -3; + } + + // Delete the check constraint + $sql = "DELETE FROM pg_relcheck WHERE rcrelid=(SELECT oid FROM pg_catalog.pg_class WHERE relname='{$c_table}' + AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE + nspname = '{$c_schema}')) AND rcname='{$name}'"; + $status = $this->execute($sql); + if ($status != 0) { + $this->rollbackTransaction(); + return -4; + } + + // Update the pg_class catalog to reflect the new number of checks + $sql = "UPDATE pg_class SET relchecks=(SELECT COUNT(*) FROM pg_relcheck WHERE + rcrelid=(SELECT oid FROM pg_catalog.pg_class WHERE relname='{$c_table}' + AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE + nspname = '{$c_schema}'))) + WHERE relname='{$c_table}'"; + $status = $this->execute($sql); + if ($status != 0) { + $this->rollbackTransaction(); + return -4; + } + + // Otherwise, close the transaction + return $this->endTransaction(); + } + + /** + * Adds a foreign key constraint to a table + * @param $targschema The schema that houses the target table to which to add the foreign key + * @param $targtable The table to which to add the foreign key + * @param $target The table that contains the target columns + * @param $sfields (array) An array of source fields over which to add the foreign key + * @param $tfields (array) An array of target fields over which to add the foreign key + * @param $upd_action The action for updates (eg. RESTRICT) + * @param $del_action The action for deletes (eg. RESTRICT) + * @param $match The match type (eg. MATCH FULL) + * @param $deferrable The deferrability (eg. NOT DEFERRABLE) + * @param $intially The initial deferrability (eg. INITIALLY IMMEDIATE) + * @param $name (optional) The name to give the key, otherwise default name is assigned + * @return 0 success + * @return -1 no fields given + */ + function addForeignKey($table, $targschema, $targtable, $sfields, $tfields, $upd_action, $del_action, + $match, $deferrable, $initially, $name = '') { + if (!is_array($sfields) || sizeof($sfields) == 0 || + !is_array($tfields) || sizeof($tfields) == 0) return -1; + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($table); + $this->fieldClean($targschema); + $this->fieldClean($targtable); + $this->fieldArrayClean($sfields); + $this->fieldArrayClean($tfields); + $this->fieldClean($name); + + $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" ADD "; + if ($name != '') $sql .= "CONSTRAINT \"{$name}\" "; + $sql .= "FOREIGN KEY (\"" . join('","', $sfields) . "\") "; + // Target table needs to be fully qualified + $sql .= "REFERENCES \"{$targschema}\".\"{$targtable}\"(\"" . join('","', $tfields) . "\") "; + if ($match != $this->fkmatches[0]) $sql .= " {$match}"; + if ($upd_action != $this->fkactions[0]) $sql .= " ON UPDATE {$upd_action}"; + if ($del_action != $this->fkactions[0]) $sql .= " ON DELETE {$del_action}"; + if ($deferrable != $this->fkdeferrable[0]) $sql .= " {$deferrable}"; + if ($initially != $this->fkinitial[0]) $sql .= " {$initially}"; + + return $this->execute($sql); + } + + /** + * Removes a constraint from a relation + * @param $constraint The constraint to drop + * @param $relation The relation from which to drop + * @param $type The type of constraint (c, f, u or p) + * @param $cascade True to cascade drop, false to restrict + * @return 0 success + */ + function dropConstraint($constraint, $relation, $type, $cascade) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($constraint); + $this->fieldClean($relation); + + $sql = "ALTER TABLE \"{$f_schema}\".\"{$relation}\" DROP CONSTRAINT \"{$constraint}\""; + if ($cascade) $sql .= " CASCADE"; + + return $this->execute($sql); + } + + /** + * A function for getting all columns linked by foreign keys given a group of tables + * @param $tables multi dimensional assoc array that holds schema and table name + * @return A recordset of linked tables and columns + * @return -1 $tables isn't an array + */ + function getLinkingKeys($tables) { + if (!is_array($tables)) return -1; + + $this->clean($tables[0]['tablename']); + $this->clean($tables[0]['schemaname']); + $tables_list = "'{$tables[0]['tablename']}'"; + $schema_list = "'{$tables[0]['schemaname']}'"; + $schema_tables_list = "'{$tables[0]['schemaname']}.{$tables[0]['tablename']}'"; + + for ($i = 1; $i < sizeof($tables); $i++) { + $this->clean($tables[$i]['tablename']); + $this->clean($tables[$i]['schemaname']); + $tables_list .= ", '{$tables[$i]['tablename']}'"; + $schema_list .= ", '{$tables[$i]['schemaname']}'"; + $schema_tables_list .= ", '{$tables[$i]['schemaname']}.{$tables[$i]['tablename']}'"; + } + + $maxDimension = 1; + + $sql = " + SELECT DISTINCT + array_dims(pc.conkey) AS arr_dim, + pgc1.relname AS p_table + FROM + pg_catalog.pg_constraint AS pc, + pg_catalog.pg_class AS pgc1 + WHERE + pc.contype = 'f' + AND (pc.conrelid = pgc1.relfilenode OR pc.confrelid = pgc1.relfilenode) + AND pgc1.relname IN ($tables_list) + "; + + //parse our output to find the highest dimension of foreign keys since pc.conkey is stored in an array + $rs = $this->selectSet($sql); + while (!$rs->EOF) { + $arrData = explode(':', $rs->fields['arr_dim']); + $tmpDimension = intval(substr($arrData[1], 0, strlen($arrData[1] - 1))); + $maxDimension = $tmpDimension > $maxDimension ? $tmpDimension : $maxDimension; + $rs->MoveNext(); + } + + //we know the highest index for foreign keys that conkey goes up to, expand for us in an IN query + $cons_str = '( (pfield.attnum = conkey[1] AND cfield.attnum = confkey[1]) '; + for ($i = 2; $i <= $maxDimension; $i++) { + $cons_str .= "OR (pfield.attnum = conkey[{$i}] AND cfield.attnum = confkey[{$i}]) "; + } + $cons_str .= ') '; + + $sql = " + SELECT + pgc1.relname AS p_table, + pgc2.relname AS f_table, + pfield.attname AS p_field, + cfield.attname AS f_field, + pgns1.nspname AS p_schema, + pgns2.nspname AS f_schema + FROM + pg_catalog.pg_constraint AS pc, + pg_catalog.pg_class AS pgc1, + pg_catalog.pg_class AS pgc2, + pg_catalog.pg_attribute AS pfield, + pg_catalog.pg_attribute AS cfield, + (SELECT oid AS ns_id, nspname FROM pg_catalog.pg_namespace WHERE nspname IN ($schema_list) ) AS pgns1, + (SELECT oid AS ns_id, nspname FROM pg_catalog.pg_namespace WHERE nspname IN ($schema_list) ) AS pgns2 + WHERE + pc.contype = 'f' + AND pgc1.relnamespace = pgns1.ns_id + AND pgc2.relnamespace = pgns2.ns_id + AND pc.conrelid = pgc1.relfilenode + AND pc.confrelid = pgc2.relfilenode + AND pfield.attrelid = pc.conrelid + AND cfield.attrelid = pc.confrelid + AND $cons_str + AND pgns1.nspname || '.' || pgc1.relname IN ($schema_tables_list) + AND pgns2.nspname || '.' || pgc2.relname IN ($schema_tables_list) + "; + return $this->selectSet($sql); + } + + /** + * Finds the foreign keys that refer to the specified table + * @param $table The table to find referrers for + * @return A recordset + */ + function getReferrers($table) { + $this->clean($table); + + $status = $this->beginTransaction(); + if ($status != 0) return -1; + + $c_schema = $this->_schema; + $this->clean($c_schema); + + $sql = " + SELECT + pn.nspname, + pl.relname, + pc.conname, + pg_catalog.pg_get_constraintdef(pc.oid) AS consrc + FROM + pg_catalog.pg_constraint pc, + pg_catalog.pg_namespace pn, + pg_catalog.pg_class pl + WHERE + pc.connamespace = pn.oid + AND pc.conrelid = pl.oid + AND pc.contype = 'f' + AND confrelid = (SELECT oid FROM pg_catalog.pg_class WHERE relname='{$table}' + AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace + WHERE nspname='{$c_schema}')) + ORDER BY 1,2,3 + "; + + return $this->selectSet($sql); + } + + // Domain functions + + /** + * Gets all information for a single domain + * @param $domain The name of the domain to fetch + * @return A recordset + */ + function getDomain($domain) { + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($domain); + + $sql = " + SELECT + t.typname AS domname, + pg_catalog.format_type(t.typbasetype, t.typtypmod) AS domtype, + t.typnotnull AS domnotnull, + t.typdefault AS domdef, + pg_catalog.pg_get_userbyid(t.typowner) AS domowner, + pg_catalog.obj_description(t.oid, 'pg_type') AS domcomment + FROM + pg_catalog.pg_type t + WHERE + t.typtype = 'd' + AND t.typname = '{$domain}' + AND t.typnamespace = (SELECT oid FROM pg_catalog.pg_namespace + WHERE nspname = '{$c_schema}')"; + + return $this->selectSet($sql); + } + + /** + * Return all domains in current schema. Excludes domain constraints. + * @return All tables, sorted alphabetically + */ + function getDomains() { + $c_schema = $this->_schema; + $this->clean($c_schema); + + $sql = " + SELECT + t.typname AS domname, + pg_catalog.format_type(t.typbasetype, t.typtypmod) AS domtype, + t.typnotnull AS domnotnull, + t.typdefault AS domdef, + pg_catalog.pg_get_userbyid(t.typowner) AS domowner, + pg_catalog.obj_description(t.oid, 'pg_type') AS domcomment + FROM + pg_catalog.pg_type t + WHERE + t.typtype = 'd' + AND t.typnamespace = (SELECT oid FROM pg_catalog.pg_namespace + WHERE nspname='{$c_schema}') + ORDER BY t.typname"; + + return $this->selectSet($sql); + } + + /** + * Get domain constraints + * @param $domain The name of the domain whose constraints to fetch + * @return A recordset + */ + function getDomainConstraints($domain) { + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($domain); + + $sql = " + SELECT + conname, + contype, + pg_catalog.pg_get_constraintdef(oid, true) AS consrc + FROM + pg_catalog.pg_constraint + WHERE + contypid = ( + SELECT oid FROM pg_catalog.pg_type + WHERE typname='{$domain}' + AND typnamespace = ( + SELECT oid FROM pg_catalog.pg_namespace + WHERE nspname = '{$c_schema}') + ) + ORDER BY conname"; + + return $this->selectSet($sql); + } + + /** + * Creates a domain + * @param $domain The name of the domain to create + * @param $type The base type for the domain + * @param $length Optional type length + * @param $array True for array type, false otherwise + * @param $notnull True for NOT NULL, false otherwise + * @param $default Default value for domain + * @param $check A CHECK constraint if there is one + * @return 0 success + */ + function createDomain($domain, $type, $length, $array, $notnull, $default, $check) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($domain); + + $sql = "CREATE DOMAIN \"{$f_schema}\".\"{$domain}\" AS "; + + if ($length == '') + $sql .= $type; + else { + switch ($type) { + // Have to account for weird placing of length for with/without + // time zone types + case 'timestamp with time zone': + case 'timestamp without time zone': + $qual = substr($type, 9); + $sql .= "timestamp({$length}){$qual}"; + break; + case 'time with time zone': + case 'time without time zone': + $qual = substr($type, 4); + $sql .= "time({$length}){$qual}"; + break; + default: + $sql .= "{$type}({$length})"; + } + } + + // Add array qualifier, if requested + if ($array) $sql .= '[]'; + + if ($notnull) $sql .= ' NOT NULL'; + if ($default != '') $sql .= " DEFAULT {$default}"; + if ($this->hasDomainConstraints() && $check != '') $sql .= " CHECK ({$check})"; + + return $this->execute($sql); + } + + /** + * Alters a domain + * @param $domain The domain to alter + * @param $domdefault The domain default + * @param $domnotnull True for NOT NULL, false otherwise + * @param $domowner The domain owner + * @return 0 success + * @return -1 transaction error + * @return -2 default error + * @return -3 not null error + * @return -4 owner error + */ + function alterDomain($domain, $domdefault, $domnotnull, $domowner) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($domain); + $this->fieldClean($domowner); + + $status = $this->beginTransaction(); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + + // Default + if ($domdefault == '') + $sql = "ALTER DOMAIN \"{$f_schema}\".\"{$domain}\" DROP DEFAULT"; + else + $sql = "ALTER DOMAIN \"{$f_schema}\".\"{$domain}\" SET DEFAULT {$domdefault}"; + + $status = $this->execute($sql); + if ($status != 0) { + $this->rollbackTransaction(); + return -2; + } + + // NOT NULL + if ($domnotnull) + $sql = "ALTER DOMAIN \"{$f_schema}\".\"{$domain}\" SET NOT NULL"; + else + $sql = "ALTER DOMAIN \"{$f_schema}\".\"{$domain}\" DROP NOT NULL"; + + $status = $this->execute($sql); + if ($status != 0) { + $this->rollbackTransaction(); + return -3; + } + + // Owner + $sql = "ALTER DOMAIN \"{$f_schema}\".\"{$domain}\" OWNER TO \"{$domowner}\""; + + $status = $this->execute($sql); + if ($status != 0) { + $this->rollbackTransaction(); + return -4; + } + + return $this->endTransaction(); + } + + /** + * Drops a domain. + * @param $domain The name of the domain to drop + * @param $cascade True to cascade drop, false to restrict + * @return 0 success + */ + function dropDomain($domain, $cascade) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($domain); + + $sql = "DROP DOMAIN \"{$f_schema}\".\"{$domain}\""; + if ($cascade) $sql .= " CASCADE"; + + return $this->execute($sql); + } + + /** + * Adds a check constraint to a domain + * @param $domain The domain to which to add the check + * @param $definition The definition of the check + * @param $name (optional) The name to give the check, otherwise default name is assigned + * @return 0 success + */ + function addDomainCheckConstraint($domain, $definition, $name = '') { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($domain); + $this->fieldClean($name); + + $sql = "ALTER DOMAIN \"{$f_schema}\".\"{$domain}\" ADD "; + if ($name != '') $sql .= "CONSTRAINT \"{$name}\" "; + $sql .= "CHECK ({$definition})"; + + return $this->execute($sql); + } + + /** + * Drops a domain constraint + * @param $domain The domain from which to remove the constraint + * @param $constraint The constraint to remove + * @param $cascade True to cascade, false otherwise + * @return 0 success + */ + function dropDomainConstraint($domain, $constraint, $cascade) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($domain); + $this->fieldClean($constraint); + + $sql = "ALTER DOMAIN \"{$f_schema}\".\"{$domain}\" DROP CONSTRAINT \"{$constraint}\""; + if ($cascade) $sql .= " CASCADE"; + + return $this->execute($sql); + } + + // Function functions + + /** + * Returns all details for a particular function + * @param $func The name of the function to retrieve + * @return Function info + */ + function getFunction($function_oid) { + $this->clean($function_oid); + + $sql = " + SELECT + pc.oid AS prooid, proname, + pg_catalog.pg_get_userbyid(proowner) AS proowner, + nspname as proschema, lanname as prolanguage, procost, prorows, + pg_catalog.format_type(prorettype, NULL) as proresult, prosrc, + probin, proretset, proisstrict, provolatile, prosecdef, + pg_catalog.oidvectortypes(pc.proargtypes) AS proarguments, + proargnames AS proargnames, + pg_catalog.obj_description(pc.oid, 'pg_proc') AS procomment, + proconfig, + (select array_agg( (select typname from pg_type pt + where pt.oid = p.oid) ) from unnest(proallargtypes) p) + AS proallarguments, + proargmodes + FROM + pg_catalog.pg_proc pc, pg_catalog.pg_language pl, + pg_catalog.pg_namespace pn + WHERE + pc.oid = '{$function_oid}'::oid AND pc.prolang = pl.oid + AND pc.pronamespace = pn.oid + "; + + return $this->selectSet($sql); + } + + /** + * Returns a list of all functions in the database + * @param $all If true, will find all available functions, if false just those in search path + * @param $type If not null, will find all functions with return value = type + * + * @return All functions + */ + function getFunctions($all = false, $type = null) { + if ($all) { + $where = 'pg_catalog.pg_function_is_visible(p.oid)'; + $distinct = 'DISTINCT ON (p.proname)'; + + if ($type) { + $where .= " AND p.prorettype = (select oid from pg_catalog.pg_type p where p.typname = 'trigger') "; + } + } + else { + $c_schema = $this->_schema; + $this->clean($c_schema); + $where = "n.nspname = '{$c_schema}'"; + $distinct = ''; + } + + $sql = " + SELECT + {$distinct} + p.oid AS prooid, + p.proname, + p.proretset, + pg_catalog.format_type(p.prorettype, NULL) AS proresult, + pg_catalog.oidvectortypes(p.proargtypes) AS proarguments, + pl.lanname AS prolanguage, + pg_catalog.obj_description(p.oid, 'pg_proc') AS procomment, + p.proname || ' (' || pg_catalog.oidvectortypes(p.proargtypes) || ')' AS proproto, + CASE WHEN p.proretset THEN 'setof ' ELSE '' END || pg_catalog.format_type(p.prorettype, NULL) AS proreturns, + u.usename AS proowner + FROM pg_catalog.pg_proc p + INNER JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace + INNER JOIN pg_catalog.pg_language pl ON pl.oid = p.prolang + LEFT JOIN pg_catalog.pg_user u ON u.usesysid = p.proowner + WHERE NOT p.proisagg + AND {$where} + ORDER BY p.proname, proresult + "; + + return $this->selectSet($sql); + } + + /** + * Returns an array containing a function's properties + * @param $f The array of data for the function + * @return An array containing the properties + */ + function getFunctionProperties($f) { + $temp = array(); + + // Volatility + if ($f['provolatile'] == 'v') + $temp[] = 'VOLATILE'; + elseif ($f['provolatile'] == 'i') + $temp[] = 'IMMUTABLE'; + elseif ($f['provolatile'] == 's') + $temp[] = 'STABLE'; + else + return -1; + + // Null handling + $f['proisstrict'] = $this->phpBool($f['proisstrict']); + if ($f['proisstrict']) + $temp[] = 'RETURNS NULL ON NULL INPUT'; + else + $temp[] = 'CALLED ON NULL INPUT'; + + // Security + $f['prosecdef'] = $this->phpBool($f['prosecdef']); + if ($f['prosecdef']) + $temp[] = 'SECURITY DEFINER'; + else + $temp[] = 'SECURITY INVOKER'; + + return $temp; + } + + /** + * Updates (replaces) a function. + * @param $function_oid The OID of the function + * @param $funcname The name of the function to create + * @param $newname The new name for the function + * @param $args The array of argument types + * @param $returns The return type + * @param $definition The definition for the new function + * @param $language The language the function is written for + * @param $flags An array of optional flags + * @param $setof True if returns a set, false otherwise + * @param $comment The comment on the function + * @return 0 success + * @return -1 transaction error + * @return -3 create function error + * @return -4 comment error + * @return -5 rename function error + * @return -6 alter owner error + * @return -7 alter schema error + */ + function setFunction($function_oid, $funcname, $newname, $args, $returns, $definition, $language, $flags, $setof, $funcown, $newown, $funcschema, $newschema, $cost, $rows, $comment) { + // Begin a transaction + $status = $this->beginTransaction(); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + + // Replace the existing function + $status = $this->createFunction($funcname, $args, $returns, $definition, $language, $flags, $setof, $cost, $rows, $comment, true); + if ($status != 0) { + $this->rollbackTransaction(); + return $status; + } + + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + + // Rename the function, if necessary + $this->fieldClean($newname); + /* $funcname is escaped in createFunction */ + if ($funcname != $newname) { + $sql = "ALTER FUNCTION \"{$f_schema}\".\"{$funcname}\"({$args}) RENAME TO \"{$newname}\""; + $status = $this->execute($sql); + if ($status != 0) { + $this->rollbackTransaction(); + return -5; + } + + $funcname = $newname; + } + + // Alter the owner, if necessary + if ($this->hasFunctionAlterOwner()) { + $this->fieldClean($newown); + if ($funcown != $newown) { + $sql = "ALTER FUNCTION \"{$f_schema}\".\"{$funcname}\"({$args}) OWNER TO \"{$newown}\""; + $status = $this->execute($sql); + if ($status != 0) { + $this->rollbackTransaction(); + return -6; + } + } + + } + + // Alter the schema, if necessary + if ($this->hasFunctionAlterSchema()) { + $this->fieldClean($newschema); + /* $funcschema is escaped in createFunction */ + if ($funcschema != $newschema) { + $sql = "ALTER FUNCTION \"{$f_schema}\".\"{$funcname}\"({$args}) SET SCHEMA \"{$newschema}\""; + $status = $this->execute($sql); + if ($status != 0) { + $this->rollbackTransaction(); + return -7; + } + } + } + + return $this->endTransaction(); + } + + /** + * Creates a new function. + * @param $funcname The name of the function to create + * @param $args A comma separated string of types + * @param $returns The return type + * @param $definition The definition for the new function + * @param $language The language the function is written for + * @param $flags An array of optional flags + * @param $setof True if it returns a set, false otherwise + * @param $rows number of rows planner should estimate will be returned + * @param $cost cost the planner should use in the function execution step + * @param $comment Comment for the function + * @param $replace (optional) True if OR REPLACE, false for normal + * @return 0 success + * @return -3 create function failed + * @return -4 set comment failed + */ + function createFunction($funcname, $args, $returns, $definition, $language, $flags, $setof, $cost, $rows, $comment, $replace = false) { + + // Begin a transaction + $status = $this->beginTransaction(); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + + $this->fieldClean($funcname); + $this->clean($args); + $this->fieldClean($language); + $this->arrayClean($flags); + $this->clean($cost); + $this->clean($rows); + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + + $sql = "CREATE"; + if ($replace) $sql .= " OR REPLACE"; + $sql .= " FUNCTION \"{$f_schema}\".\"{$funcname}\" ("; + + if ($args != '') + $sql .= $args; + + // For some reason, the returns field cannot have quotes... + $sql .= ") RETURNS "; + if ($setof) $sql .= "SETOF "; + $sql .= "{$returns} AS "; + + if (is_array($definition)) { + $this->arrayClean($definition); + $sql .= "'" . $definition[0] . "'"; + if ($definition[1]) { + $sql .= ",'" . $definition[1] . "'"; + } + } else { + $this->clean($definition); + $sql .= "'" . $definition . "'"; + } + + $sql .= " LANGUAGE \"{$language}\""; + + // Add costs + if (!empty($cost)) + $sql .= " COST {$cost}"; + + if ($rows <> 0 ){ + $sql .= " ROWS {$rows}"; + } + + // Add flags + foreach ($flags as $v) { + // Skip default flags + if ($v == '') continue; + else $sql .= "\n{$v}"; + } + + $status = $this->execute($sql); + if ($status != 0) { + $this->rollbackTransaction(); + return -3; + } + + /* set the comment */ + $status = $this->setComment('FUNCTION', "\"{$funcname}\"({$args})", null, $comment); + if ($status != 0) { + $this->rollbackTransaction(); + return -4; + } + + return $this->endTransaction(); + } + + /** + * Drops a function. + * @param $function_oid The OID of the function to drop + * @param $cascade True to cascade drop, false to restrict + * @return 0 success + */ + function dropFunction($function_oid, $cascade) { + // Function comes in with $object as function OID + $fn = $this->getFunction($function_oid); + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($fn->fields['proname']); + + $sql = "DROP FUNCTION \"{$f_schema}\".\"{$fn->fields['proname']}\"({$fn->fields['proarguments']})"; + if ($cascade) $sql .= " CASCADE"; + + return $this->execute($sql); + } + + // Type functions + + /** + * Returns all details for a particular type + * @param $typname The name of the view to retrieve + * @return Type info + */ + function getType($typname) { + $this->clean($typname); + + $sql = "SELECT typtype, typbyval, typname, typinput AS typin, typoutput AS typout, typlen, typalign + FROM pg_type WHERE typname='{$typname}'"; + + return $this->selectSet($sql); + } + + /** + * Returns a list of all types in the database + * @param $all If true, will find all available types, if false just those in search path + * @param $tabletypes If true, will include table types + * @param $domains If true, will include domains + * @return A recordet + */ + function getTypes($all = false, $tabletypes = false, $domains = false) { + if ($all) + $where = '1 = 1'; + else { + $c_schema = $this->_schema; + $this->clean($c_schema); + $where = "n.nspname = '{$c_schema}'"; + } + // Never show system table types + $where2 = "AND c.relnamespace NOT IN (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname LIKE 'pg@_%' ESCAPE '@')"; + + // Create type filter + $tqry = "'c'"; + if ($tabletypes) + $tqry .= ", 'r', 'v'"; + + // Create domain filter + if (!$domains) + $where .= " AND t.typtype != 'd'"; + + $sql = "SELECT + t.typname AS basename, + pg_catalog.format_type(t.oid, NULL) AS typname, + pu.usename AS typowner, + t.typtype, + pg_catalog.obj_description(t.oid, 'pg_type') AS typcomment + FROM (pg_catalog.pg_type t + LEFT JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace) + LEFT JOIN pg_catalog.pg_user pu ON t.typowner = pu.usesysid + WHERE (t.typrelid = 0 OR (SELECT c.relkind IN ({$tqry}) FROM pg_catalog.pg_class c WHERE c.oid = t.typrelid {$where2})) + AND t.typname !~ '^_' + AND {$where} + ORDER BY typname + "; + + return $this->selectSet($sql); + } + + /** + * Creates a new type + * @param ... + * @return 0 success + */ + function createType($typname, $typin, $typout, $typlen, $typdef, + $typelem, $typdelim, $typbyval, $typalign, $typstorage) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($typname); + $this->fieldClean($typin); + $this->fieldClean($typout); + + $sql = " + CREATE TYPE \"{$f_schema}\".\"{$typname}\" ( + INPUT = \"{$typin}\", + OUTPUT = \"{$typout}\", + INTERNALLENGTH = {$typlen}"; + if ($typdef != '') $sql .= ", DEFAULT = {$typdef}"; + if ($typelem != '') $sql .= ", ELEMENT = {$typelem}"; + if ($typdelim != '') $sql .= ", DELIMITER = {$typdelim}"; + if ($typbyval) $sql .= ", PASSEDBYVALUE, "; + if ($typalign != '') $sql .= ", ALIGNMENT = {$typalign}"; + if ($typstorage != '') $sql .= ", STORAGE = {$typstorage}"; + + $sql .= ")"; + + return $this->execute($sql); + } + + /** + * Drops a type. + * @param $typname The name of the type to drop + * @param $cascade True to cascade drop, false to restrict + * @return 0 success + */ + function dropType($typname, $cascade) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($typname); + + $sql = "DROP TYPE \"{$f_schema}\".\"{$typname}\""; + if ($cascade) $sql .= " CASCADE"; + + return $this->execute($sql); + } + + /** + * Creates a new enum type in the database + * @param $name The name of the type + * @param $values An array of values + * @param $typcomment Type comment + * @return 0 success + * @return -1 transaction error + * @return -2 no values supplied + */ + function createEnumType($name, $values, $typcomment) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($name); + + if (empty($values)) return -2; + + $status = $this->beginTransaction(); + if ($status != 0) return -1; + + $values = array_unique($values); + + $nbval = count($values); + + for ($i = 0; $i < $nbval; $i++) + $this->clean($values[$i]); + + $sql = "CREATE TYPE \"{$f_schema}\".\"{$name}\" AS ENUM ('"; + $sql.= implode("','", $values); + $sql .= "')"; + + $status = $this->execute($sql); + if ($status) { + $this->rollbackTransaction(); + return -1; + } + + if ($typcomment != '') { + $status = $this->setComment('TYPE', $name, '', $typcomment, true); + if ($status) { + $this->rollbackTransaction(); + return -1; + } + } + + return $this->endTransaction(); + + } + + /** + * Get defined values for a given enum + * @return A recordset + */ + function getEnumValues($name) { + $this->clean($name); + + $sql = "SELECT enumlabel AS enumval + FROM pg_catalog.pg_type t JOIN pg_catalog.pg_enum e ON (t.oid=e.enumtypid) + WHERE t.typname = '{$name}' ORDER BY e.oid"; + return $this->selectSet($sql); + } + + /** + * Creates a new composite type in the database + * @param $name The name of the type + * @param $fields The number of fields + * @param $field An array of field names + * @param $type An array of field types + * @param $array An array of '' or '[]' for each type if it's an array or not + * @param $length An array of field lengths + * @param $colcomment An array of comments + * @param $typcomment Type comment + * @return 0 success + * @return -1 no fields supplied + */ + function createCompositeType($name, $fields, $field, $type, $array, $length, $colcomment, $typcomment) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($name); + + $status = $this->beginTransaction(); + if ($status != 0) return -1; + + $found = false; + $first = true; + $comment_sql = ''; // Accumulate comments for the columns + $sql = "CREATE TYPE \"{$f_schema}\".\"{$name}\" AS ("; + for ($i = 0; $i < $fields; $i++) { + $this->fieldClean($field[$i]); + $this->clean($type[$i]); + $this->clean($length[$i]); + $this->clean($colcomment[$i]); + + // Skip blank columns - for user convenience + if ($field[$i] == '' || $type[$i] == '') continue; + // If not the first column, add a comma + if (!$first) $sql .= ", "; + else $first = false; + + switch ($type[$i]) { + // Have to account for weird placing of length for with/without + // time zone types + case 'timestamp with time zone': + case 'timestamp without time zone': + $qual = substr($type[$i], 9); + $sql .= "\"{$field[$i]}\" timestamp"; + if ($length[$i] != '') $sql .= "({$length[$i]})"; + $sql .= $qual; + break; + case 'time with time zone': + case 'time without time zone': + $qual = substr($type[$i], 4); + $sql .= "\"{$field[$i]}\" time"; + if ($length[$i] != '') $sql .= "({$length[$i]})"; + $sql .= $qual; + break; + default: + $sql .= "\"{$field[$i]}\" {$type[$i]}"; + if ($length[$i] != '') $sql .= "({$length[$i]})"; + } + // Add array qualifier if necessary + if ($array[$i] == '[]') $sql .= '[]'; + + if ($colcomment[$i] != '') $comment_sql .= "COMMENT ON COLUMN \"{$f_schema}\".\"{$name}\".\"{$field[$i]}\" IS '{$colcomment[$i]}';\n"; + + $found = true; + } + + if (!$found) return -1; + + $sql .= ")"; + + $status = $this->execute($sql); + if ($status) { + $this->rollbackTransaction(); + return -1; + } + + if ($typcomment != '') { + $status = $this->setComment('TYPE', $name, '', $typcomment, true); + if ($status) { + $this->rollbackTransaction(); + return -1; + } + } + + if ($comment_sql != '') { + $status = $this->execute($comment_sql); + if ($status) { + $this->rollbackTransaction(); + return -1; + } + } + return $this->endTransaction(); + } + + /** + * Returns a list of all casts in the database + * @return All casts + */ + function getCasts() { + global $conf; + + if ($conf['show_system']) + $where = ''; + else + $where = ' + AND n1.nspname NOT LIKE $$pg\_%$$ + AND n2.nspname NOT LIKE $$pg\_%$$ + AND n3.nspname NOT LIKE $$pg\_%$$ + '; + + $sql = " + SELECT + c.castsource::pg_catalog.regtype AS castsource, + c.casttarget::pg_catalog.regtype AS casttarget, + CASE WHEN c.castfunc=0 THEN NULL + ELSE c.castfunc::pg_catalog.regprocedure END AS castfunc, + c.castcontext, + obj_description(c.oid, 'pg_cast') as castcomment + FROM + (pg_catalog.pg_cast c LEFT JOIN pg_catalog.pg_proc p ON c.castfunc=p.oid JOIN pg_catalog.pg_namespace n3 ON p.pronamespace=n3.oid), + pg_catalog.pg_type t1, + pg_catalog.pg_type t2, + pg_catalog.pg_namespace n1, + pg_catalog.pg_namespace n2 + WHERE + c.castsource=t1.oid + AND c.casttarget=t2.oid + AND t1.typnamespace=n1.oid + AND t2.typnamespace=n2.oid + {$where} + ORDER BY 1, 2 + "; + + return $this->selectSet($sql); + } + + /** + * Returns a list of all conversions in the database + * @return All conversions + */ + function getConversions() { + $c_schema = $this->_schema; + $this->clean($c_schema); + $sql = " + SELECT + c.conname, + pg_catalog.pg_encoding_to_char(c.conforencoding) AS conforencoding, + pg_catalog.pg_encoding_to_char(c.contoencoding) AS contoencoding, + c.condefault, + pg_catalog.obj_description(c.oid, 'pg_conversion') AS concomment + FROM pg_catalog.pg_conversion c, pg_catalog.pg_namespace n + WHERE n.oid = c.connamespace + AND n.nspname='{$c_schema}' + ORDER BY 1; + "; + + return $this->selectSet($sql); + } + + // Rule functions + + /** + * Returns a list of all rules on a table OR view + * @param $table The table to find rules for + * @return A recordset + */ + function getRules($table) { + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($table); + + $sql = " + SELECT * + FROM pg_catalog.pg_rules + WHERE + schemaname='{$c_schema}' AND tablename='{$table}' + ORDER BY rulename + "; + + return $this->selectSet($sql); + } + + /** + * Edits a rule on a table OR view + * @param $name The name of the new rule + * @param $event SELECT, INSERT, UPDATE or DELETE + * @param $table Table on which to create the rule + * @param $where When to execute the rule, '' indicates always + * @param $instead True if an INSTEAD rule, false otherwise + * @param $type NOTHING for a do nothing rule, SOMETHING to use given action + * @param $action The action to take + * @return 0 success + * @return -1 invalid event + */ + function setRule($name, $event, $table, $where, $instead, $type, $action) { + return $this->createRule($name, $event, $table, $where, $instead, $type, $action, true); + } + + /** + * Creates a rule + * @param $name The name of the new rule + * @param $event SELECT, INSERT, UPDATE or DELETE + * @param $table Table on which to create the rule + * @param $where When to execute the rule, '' indicates always + * @param $instead True if an INSTEAD rule, false otherwise + * @param $type NOTHING for a do nothing rule, SOMETHING to use given action + * @param $action The action to take + * @param $replace (optional) True to replace existing rule, false otherwise + * @return 0 success + * @return -1 invalid event + */ + function createRule($name, $event, $table, $where, $instead, $type, $action, $replace = false) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($name); + $this->fieldClean($table); + if (!in_array($event, $this->rule_events)) return -1; + + $sql = "CREATE"; + if ($replace) $sql .= " OR REPLACE"; + $sql .= " RULE \"{$name}\" AS ON {$event} TO \"{$f_schema}\".\"{$table}\""; + // Can't escape WHERE clause + if ($where != '') $sql .= " WHERE {$where}"; + $sql .= " DO"; + if ($instead) $sql .= " INSTEAD"; + if ($type == 'NOTHING') + $sql .= " NOTHING"; + else $sql .= " ({$action})"; + + return $this->execute($sql); + } + + /** + * Removes a rule from a table OR view + * @param $rule The rule to drop + * @param $relation The relation from which to drop + * @param $cascade True to cascade drop, false to restrict + * @return 0 success + */ + function dropRule($rule, $relation, $cascade) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($rule); + $this->fieldClean($relation); + + $sql = "DROP RULE \"{$rule}\" ON \"{$f_schema}\".\"{$relation}\""; + if ($cascade) $sql .= " CASCADE"; + + return $this->execute($sql); + } + + // Trigger functions + + /** + * Grabs a single trigger + * @param $table The name of a table whose triggers to retrieve + * @param $trigger The name of the trigger to retrieve + * @return A recordset + */ + function getTrigger($table, $trigger) { + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($table); + $this->clean($trigger); + + $sql = " + SELECT * FROM pg_catalog.pg_trigger t, pg_catalog.pg_class c + WHERE t.tgrelid=c.oid AND c.relname='{$table}' AND t.tgname='{$trigger}' + AND c.relnamespace=( + SELECT oid FROM pg_catalog.pg_namespace + WHERE nspname='{$c_schema}')"; + + return $this->selectSet($sql); + } + + /** + * Grabs a list of triggers on a table + * @param $table The name of a table whose triggers to retrieve + * @return A recordset + */ + function getTriggers($table = '') { + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($table); + + $sql = "SELECT + t.tgname, pg_catalog.pg_get_triggerdef(t.oid) AS tgdef, + CASE WHEN t.tgenabled = 'D' THEN FALSE ELSE TRUE END AS tgenabled, p.oid AS prooid, + p.proname || ' (' || pg_catalog.oidvectortypes(p.proargtypes) || ')' AS proproto, + ns.nspname AS pronamespace + FROM pg_catalog.pg_trigger t, pg_catalog.pg_proc p, pg_catalog.pg_namespace ns + WHERE t.tgrelid = (SELECT oid FROM pg_catalog.pg_class WHERE relname='{$table}' + AND relnamespace=(SELECT oid FROM pg_catalog.pg_namespace WHERE nspname='{$c_schema}')) + AND ( tgconstraint = 0 OR NOT EXISTS + (SELECT 1 FROM pg_catalog.pg_depend d JOIN pg_catalog.pg_constraint c + ON (d.refclassid = c.tableoid AND d.refobjid = c.oid) + WHERE d.classid = t.tableoid AND d.objid = t.oid AND d.deptype = 'i' AND c.contype = 'f')) + AND p.oid=t.tgfoid + AND p.pronamespace = ns.oid"; + + return $this->selectSet($sql); + } + + /** + * A helper function for getTriggers that translates + * an array of attribute numbers to an array of field names. + * Note: Only needed for pre-7.4 servers, this function is deprecated + * @param $trigger An array containing fields from the trigger table + * @return The trigger definition string + */ + function getTriggerDef($trigger) { + + $this->fieldArrayClean($trigger); + // Constants to figure out tgtype + if (!defined('TRIGGER_TYPE_ROW')) define ('TRIGGER_TYPE_ROW', (1 << 0)); + if (!defined('TRIGGER_TYPE_BEFORE')) define ('TRIGGER_TYPE_BEFORE', (1 << 1)); + if (!defined('TRIGGER_TYPE_INSERT')) define ('TRIGGER_TYPE_INSERT', (1 << 2)); + if (!defined('TRIGGER_TYPE_DELETE')) define ('TRIGGER_TYPE_DELETE', (1 << 3)); + if (!defined('TRIGGER_TYPE_UPDATE')) define ('TRIGGER_TYPE_UPDATE', (1 << 4)); + + $trigger['tgisconstraint'] = $this->phpBool($trigger['tgisconstraint']); + $trigger['tgdeferrable'] = $this->phpBool($trigger['tgdeferrable']); + $trigger['tginitdeferred'] = $this->phpBool($trigger['tginitdeferred']); + + // Constraint trigger or normal trigger + if ($trigger['tgisconstraint']) + $tgdef = 'CREATE CONSTRAINT TRIGGER '; + else + $tgdef = 'CREATE TRIGGER '; + + $tgdef .= "\"{$trigger['tgname']}\" "; + + // Trigger type + $findx = 0; + if (($trigger['tgtype'] & TRIGGER_TYPE_BEFORE) == TRIGGER_TYPE_BEFORE) + $tgdef .= 'BEFORE'; + else + $tgdef .= 'AFTER'; + + if (($trigger['tgtype'] & TRIGGER_TYPE_INSERT) == TRIGGER_TYPE_INSERT) { + $tgdef .= ' INSERT'; + $findx++; + } + if (($trigger['tgtype'] & TRIGGER_TYPE_DELETE) == TRIGGER_TYPE_DELETE) { + if ($findx > 0) + $tgdef .= ' OR DELETE'; + else { + $tgdef .= ' DELETE'; + $findx++; + } + } + if (($trigger['tgtype'] & TRIGGER_TYPE_UPDATE) == TRIGGER_TYPE_UPDATE) { + if ($findx > 0) + $tgdef .= ' OR UPDATE'; + else + $tgdef .= ' UPDATE'; + } + + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + // Table name + $tgdef .= " ON \"{$f_schema}\".\"{$trigger['relname']}\" "; + + // Deferrability + if ($trigger['tgisconstraint']) { + if ($trigger['tgconstrrelid'] != 0) { + // Assume constrelname is not null + $tgdef .= " FROM \"{$trigger['tgconstrrelname']}\" "; + } + if (!$trigger['tgdeferrable']) + $tgdef .= 'NOT '; + $tgdef .= 'DEFERRABLE INITIALLY '; + if ($trigger['tginitdeferred']) + $tgdef .= 'DEFERRED '; + else + $tgdef .= 'IMMEDIATE '; + } + + // Row or statement + if ($trigger['tgtype'] & TRIGGER_TYPE_ROW == TRIGGER_TYPE_ROW) + $tgdef .= 'FOR EACH ROW '; + else + $tgdef .= 'FOR EACH STATEMENT '; + + // Execute procedure + $tgdef .= "EXECUTE PROCEDURE \"{$trigger['tgfname']}\"("; + + // Parameters + // Escape null characters + $v = addCSlashes($trigger['tgargs'], "\0"); + // Split on escaped null characters + $params = explode('\\000', $v); + for ($findx = 0; $findx < $trigger['tgnargs']; $findx++) { + $param = "'" . str_replace('\'', '\\\'', $params[$findx]) . "'"; + $tgdef .= $param; + if ($findx < ($trigger['tgnargs'] - 1)) + $tgdef .= ', '; + } + + // Finish it off + $tgdef .= ')'; + + return $tgdef; + } + + /** + * Returns a list of all functions that can be used in triggers + */ + function getTriggerFunctions() { + return $this->getFunctions(true, 'trigger'); + } + + /** + * Creates a trigger + * @param $tgname The name of the trigger to create + * @param $table The name of the table + * @param $tgproc The function to execute + * @param $tgtime BEFORE or AFTER + * @param $tgevent Event + * @param $tgargs The function arguments + * @return 0 success + */ + function createTrigger($tgname, $table, $tgproc, $tgtime, $tgevent, $tgfrequency, $tgargs) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($tgname); + $this->fieldClean($table); + $this->fieldClean($tgproc); + + /* No Statement Level Triggers in PostgreSQL (by now) */ + $sql = "CREATE TRIGGER \"{$tgname}\" {$tgtime} + {$tgevent} ON \"{$f_schema}\".\"{$table}\" + FOR EACH {$tgfrequency} EXECUTE PROCEDURE \"{$tgproc}\"({$tgargs})"; + + return $this->execute($sql); + } + + /** + * Alters a trigger + * @param $table The name of the table containing the trigger + * @param $trigger The name of the trigger to alter + * @param $name The new name for the trigger + * @return 0 success + */ + function alterTrigger($table, $trigger, $name) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($table); + $this->fieldClean($trigger); + $this->fieldClean($name); + + $sql = "ALTER TRIGGER \"{$trigger}\" ON \"{$f_schema}\".\"{$table}\" RENAME TO \"{$name}\""; + + return $this->execute($sql); + } + + /** + * Drops a trigger + * @param $tgname The name of the trigger to drop + * @param $table The table from which to drop the trigger + * @param $cascade True to cascade drop, false to restrict + * @return 0 success + */ + function dropTrigger($tgname, $table, $cascade) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($tgname); + $this->fieldClean($table); + + $sql = "DROP TRIGGER \"{$tgname}\" ON \"{$f_schema}\".\"{$table}\""; + if ($cascade) $sql .= " CASCADE"; + + return $this->execute($sql); + } + + /** + * Enables a trigger + * @param $tgname The name of the trigger to enable + * @param $table The table in which to enable the trigger + * @return 0 success + */ + function enableTrigger($tgname, $table) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($tgname); + $this->fieldClean($table); + + $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" ENABLE TRIGGER \"{$tgname}\""; + + return $this->execute($sql); + } + + /** + * Disables a trigger + * @param $tgname The name of the trigger to disable + * @param $table The table in which to disable the trigger + * @return 0 success + */ + function disableTrigger($tgname, $table) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($tgname); + $this->fieldClean($table); + + $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" DISABLE TRIGGER \"{$tgname}\""; + + return $this->execute($sql); + } + + // Operator functions + + /** + * Returns a list of all operators in the database + * @return All operators + */ + function getOperators() { + $c_schema = $this->_schema; + $this->clean($c_schema); + // We stick with the subselects here, as you cannot ORDER BY a regtype + $sql = " + SELECT + po.oid, po.oprname, + (SELECT pg_catalog.format_type(oid, NULL) FROM pg_catalog.pg_type pt WHERE pt.oid=po.oprleft) AS oprleftname, + (SELECT pg_catalog.format_type(oid, NULL) FROM pg_catalog.pg_type pt WHERE pt.oid=po.oprright) AS oprrightname, + po.oprresult::pg_catalog.regtype AS resultname, + pg_catalog.obj_description(po.oid, 'pg_operator') AS oprcomment + FROM + pg_catalog.pg_operator po + WHERE + po.oprnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname='{$c_schema}') + ORDER BY + po.oprname, oprleftname, oprrightname + "; + + return $this->selectSet($sql); + } + + /** + * Returns all details for a particular operator + * @param $operator_oid The oid of the operator + * @return Function info + */ + function getOperator($operator_oid) { + $this->clean($operator_oid); + + $sql = " + SELECT + po.oid, po.oprname, + oprleft::pg_catalog.regtype AS oprleftname, + oprright::pg_catalog.regtype AS oprrightname, + oprresult::pg_catalog.regtype AS resultname, + po.oprcanhash, + oprcanmerge, + oprcom::pg_catalog.regoperator AS oprcom, + oprnegate::pg_catalog.regoperator AS oprnegate, + po.oprcode::pg_catalog.regproc AS oprcode, + po.oprrest::pg_catalog.regproc AS oprrest, + po.oprjoin::pg_catalog.regproc AS oprjoin + FROM + pg_catalog.pg_operator po + WHERE + po.oid='{$operator_oid}' + "; + + return $this->selectSet($sql); + } + + /** + * Drops an operator + * @param $operator_oid The OID of the operator to drop + * @param $cascade True to cascade drop, false to restrict + * @return 0 success + */ + function dropOperator($operator_oid, $cascade) { + // Function comes in with $object as operator OID + $opr = $this->getOperator($operator_oid); + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($opr->fields['oprname']); + + $sql = "DROP OPERATOR \"{$f_schema}\".{$opr->fields['oprname']} ("; + // Quoting or formatting here??? + if ($opr->fields['oprleftname'] !== null) $sql .= $opr->fields['oprleftname'] . ', '; + else $sql .= "NONE, "; + if ($opr->fields['oprrightname'] !== null) $sql .= $opr->fields['oprrightname'] . ')'; + else $sql .= "NONE)"; + + if ($cascade) $sql .= " CASCADE"; + + return $this->execute($sql); + } + + // Operator Class functions + + /** + * Gets all opclasses + * + * @return A recordset + */ + + function getOpClasses() { + $c_schema = $this->_schema; + $this->clean($c_schema); + $sql = " + SELECT + pa.amname, po.opcname, + po.opcintype::pg_catalog.regtype AS opcintype, + po.opcdefault, + pg_catalog.obj_description(po.oid, 'pg_opclass') AS opccomment + FROM + pg_catalog.pg_opclass po, pg_catalog.pg_am pa, pg_catalog.pg_namespace pn + WHERE + po.opcmethod=pa.oid + AND po.opcnamespace=pn.oid + AND pn.nspname='{$c_schema}' + ORDER BY 1,2 + "; + + return $this->selectSet($sql); + } + + // FTS functions + + /** + * Creates a new FTS configuration. + * @param string $cfgname The name of the FTS configuration to create + * @param string $parser The parser to be used in new FTS configuration + * @param string $locale Locale of the FTS configuration + * @param string $template The existing FTS configuration to be used as template for the new one + * @param string $withmap Should we copy whole map of existing FTS configuration to the new one + * @param string $makeDefault Should this configuration be the default for locale given + * @param string $comment If omitted, defaults to nothing + * + * @return 0 success + */ + function createFtsConfiguration($cfgname, $parser = '', $template = '', $comment = '') { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($cfgname); + + $sql = "CREATE TEXT SEARCH CONFIGURATION \"{$f_schema}\".\"{$cfgname}\" ("; + if ($parser != '') { + $this->fieldClean($parser['schema']); + $this->fieldClean($parser['parser']); + $parser = "\"{$parser['schema']}\".\"{$parser['parser']}\""; + $sql .= " PARSER = {$parser}"; + } + if ($template != '') { + $this->fieldClean($template['schema']); + $this->fieldClean($template['name']); + $sql .= " COPY = \"{$template['schema']}\".\"{$template['name']}\""; + } + $sql .= ")"; + + if ($comment != '') { + $status = $this->beginTransaction(); + if ($status != 0) return -1; + } + + // Create the FTS configuration + $status = $this->execute($sql); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + + // Set the comment + if ($comment != '') { + $status = $this->setComment('TEXT SEARCH CONFIGURATION', $cfgname, '', $comment); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + + return $this->endTransaction(); + } + + return 0; + } + + /** + * Returns available FTS configurations + * @param $all if false, returns schema qualified FTS confs + * + * @return A recordset + */ + function getFtsConfigurations($all = true) { + $c_schema = $this->_schema; + $this->clean($c_schema); + $sql = " + SELECT + n.nspname as schema, + c.cfgname as name, + pg_catalog.obj_description(c.oid, 'pg_ts_config') as comment + FROM + pg_catalog.pg_ts_config c + JOIN pg_catalog.pg_namespace n ON n.oid = c.cfgnamespace + WHERE + pg_catalog.pg_ts_config_is_visible(c.oid)"; + + if (!$all) + $sql.= " AND n.nspname='{$c_schema}'\n"; + + $sql.= "ORDER BY name"; + + return $this->selectSet($sql); + } + + /** + * Return all information related to a FTS configuration + * @param $ftscfg The name of the FTS configuration + * + * @return FTS configuration information + */ + function getFtsConfigurationByName($ftscfg) { + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($ftscfg); + $sql = " + SELECT + n.nspname as schema, + c.cfgname as name, + p.prsname as parser, + c.cfgparser as parser_id, + pg_catalog.obj_description(c.oid, 'pg_ts_config') as comment + FROM pg_catalog.pg_ts_config c + LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.cfgnamespace + LEFT JOIN pg_catalog.pg_ts_parser p ON p.oid = c.cfgparser + WHERE pg_catalog.pg_ts_config_is_visible(c.oid) + AND c.cfgname = '{$ftscfg}' + AND n.nspname='{$c_schema}'"; + + return $this->selectSet($sql); + } + + /** + * Returns the map of FTS configuration given + * (list of mappings (tokens) and their processing dictionaries) + * @param string $ftscfg Name of the FTS configuration + * + * @return RecordSet + */ + function getFtsConfigurationMap($ftscfg) { + + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->fieldClean($ftscfg); + + $oidSet = $this->selectSet("SELECT c.oid + FROM pg_catalog.pg_ts_config AS c + LEFT JOIN pg_catalog.pg_namespace n ON (n.oid = c.cfgnamespace) + WHERE c.cfgname = '{$ftscfg}' + AND n.nspname='{$c_schema}'"); + + $oid = $oidSet->fields['oid']; + + $sql = " + SELECT + (SELECT t.alias FROM pg_catalog.ts_token_type(c.cfgparser) AS t WHERE t.tokid = m.maptokentype) AS name, + (SELECT t.description FROM pg_catalog.ts_token_type(c.cfgparser) AS t WHERE t.tokid = m.maptokentype) AS description, + c.cfgname AS cfgname, n.nspname ||'.'|| d.dictname as dictionaries + FROM + pg_catalog.pg_ts_config AS c, pg_catalog.pg_ts_config_map AS m, pg_catalog.pg_ts_dict d, + pg_catalog.pg_namespace n + WHERE + c.oid = {$oid} + AND m.mapcfg = c.oid + AND m.mapdict = d.oid + AND d.dictnamespace = n.oid + ORDER BY name + "; + return $this->selectSet($sql); + } + + /** + * Returns FTS parsers available + * @param $all if false, return only Parsers from the current schema + * + * @return RecordSet + */ + function getFtsParsers($all = true) { + $c_schema = $this->_schema; + $this->clean($c_schema); + $sql = " + SELECT + n.nspname as schema, + p.prsname as name, + pg_catalog.obj_description(p.oid, 'pg_ts_parser') as comment + FROM pg_catalog.pg_ts_parser p + LEFT JOIN pg_catalog.pg_namespace n ON (n.oid = p.prsnamespace) + WHERE pg_catalog.pg_ts_parser_is_visible(p.oid)"; + + if (!$all) + $sql.= " AND n.nspname='{$c_schema}'\n"; + + $sql.= "ORDER BY name"; + + return $this->selectSet($sql); + } + + /** + * Returns FTS dictionaries available + * @param $all if false, return only Dics from the current schema + * + * @returns RecordSet + */ + function getFtsDictionaries($all = true) { + $c_schema = $this->_schema; + $this->clean($c_schema); + $sql = " + SELECT + n.nspname as schema, d.dictname as name, + pg_catalog.obj_description(d.oid, 'pg_ts_dict') as comment + FROM pg_catalog.pg_ts_dict d + LEFT JOIN pg_catalog.pg_namespace n ON n.oid = d.dictnamespace + WHERE pg_catalog.pg_ts_dict_is_visible(d.oid)"; + + if (!$all) + $sql.= " AND n.nspname='{$c_schema}'\n"; + + $sql.= "ORDER BY name;"; + + return $this->selectSet($sql); + } + + /** + * Returns all FTS dictionary templates available + */ + function getFtsDictionaryTemplates() { + + $sql = " + SELECT + n.nspname as schema, + t.tmplname as name, + ( SELECT COALESCE(np.nspname, '(null)')::pg_catalog.text || '.' || p.proname + FROM pg_catalog.pg_proc p + LEFT JOIN pg_catalog.pg_namespace np ON np.oid = p.pronamespace + WHERE t.tmplinit = p.oid ) AS init, + ( SELECT COALESCE(np.nspname, '(null)')::pg_catalog.text || '.' || p.proname + FROM pg_catalog.pg_proc p + LEFT JOIN pg_catalog.pg_namespace np ON np.oid = p.pronamespace + WHERE t.tmpllexize = p.oid ) AS lexize, + pg_catalog.obj_description(t.oid, 'pg_ts_template') as comment + FROM pg_catalog.pg_ts_template t + LEFT JOIN pg_catalog.pg_namespace n ON n.oid = t.tmplnamespace + WHERE pg_catalog.pg_ts_template_is_visible(t.oid) + ORDER BY name;"; + + return $this->selectSet($sql); + } + + /** + * Drops FTS coniguration + * @param $ftscfg The configuration's name + * @param $cascade Cascade to dependenced objects + * + * @return 0 on success + */ + function dropFtsConfiguration($ftscfg, $cascade) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($ftscfg); + + $sql = "DROP TEXT SEARCH CONFIGURATION \"{$f_schema}\".\"{$ftscfg}\""; + if ($cascade) $sql .= ' CASCADE'; + + return $this->execute($sql); + } + + /** + * Drops FTS dictionary + * @param $ftsdict The dico's name + * @param $cascade Cascade to dependenced objects + * + * @todo Support of dictionary templates dropping + * @return 0 on success + */ + function dropFtsDictionary($ftsdict, $cascade) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($ftsdict); + + $sql = "DROP TEXT SEARCH DICTIONARY"; + $sql .= " \"{$f_schema}\".\"{$ftsdict}\""; + if ($cascade) $sql .= ' CASCADE'; + + return $this->execute($sql); + } + + /** + * Alters FTS configuration + * @param $cfgname The conf's name + * @param $comment A comment on for the conf + * @param $name The new conf name + * + * @return 0 on success + */ + function updateFtsConfiguration($cfgname, $comment, $name) { + + $status = $this->beginTransaction(); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + + $this->fieldClean($cfgname); + + $status = $this->setComment('TEXT SEARCH CONFIGURATION', $cfgname, '', $comment); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + + // Only if the name has changed + if ($name != $cfgname) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($name); + + $sql = "ALTER TEXT SEARCH CONFIGURATION \"{$f_schema}\".\"{$cfgname}\" RENAME TO \"{$name}\""; + $status = $this->execute($sql); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + } + + return $this->endTransaction(); + } + + /** + * Creates a new FTS dictionary or FTS dictionary template. + * @param string $dictname The name of the FTS dictionary to create + * @param boolean $isTemplate Flag whether we create usual dictionary or dictionary template + * @param string $template The existing FTS dictionary to be used as template for the new one + * @param string $lexize The name of the function, which does transformation of input word + * @param string $init The name of the function, which initializes dictionary + * @param string $option Usually, it stores various options required for the dictionary + * @param string $comment If omitted, defaults to nothing + * + * @return 0 success + */ + function createFtsDictionary($dictname, $isTemplate = false, $template = '', $lexize = '', + $init = '', $option = '', $comment = '') { + + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($dictname); + $this->fieldClean($template); + $this->fieldClean($lexize); + $this->fieldClean($init); + $this->fieldClean($option); + + $sql = "CREATE TEXT SEARCH"; + if ($isTemplate) { + $sql .= " TEMPLATE \"{$f_schema}\".\"{$dictname}\" ("; + if ($lexize != '') $sql .= " LEXIZE = {$lexize}"; + if ($init != '') $sql .= ", INIT = {$init}"; + $sql .= ")"; + $whatToComment = 'TEXT SEARCH TEMPLATE'; + } else { + $sql .= " DICTIONARY \"{$f_schema}\".\"{$dictname}\" ("; + if ($template != '') { + $this->fieldClean($template['schema']); + $this->fieldClean($template['name']); + $template = "\"{$template['schema']}\".\"{$template['name']}\""; + + $sql .= " TEMPLATE = {$template}"; + } + if ($option != '') $sql .= ", {$option}"; + $sql .= ")"; + $whatToComment = 'TEXT SEARCH DICTIONARY'; + } + + /* if comment, begin a transaction to + * run both commands */ + if ($comment != '') { + $status = $this->beginTransaction(); + if ($status != 0) return -1; + } + + // Create the FTS dictionary + $status = $this->execute($sql); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + + // Set the comment + if ($comment != '') { + $status = $this->setComment($whatToComment, $dictname, '', $comment); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + } + + return $this->endTransaction(); + } + + /** + * Alters FTS dictionary or dictionary template + * @param $dictname The dico's name + * @param $comment The comment + * @param $name The new dico's name + * + * @return 0 on success + */ + function updateFtsDictionary($dictname, $comment, $name) { + + $status = $this->beginTransaction(); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + + $this->fieldClean($dictname); + $status = $this->setComment('TEXT SEARCH DICTIONARY', $dictname, '', $comment); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + + // Only if the name has changed + if ($name != $dictname) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($name); + + $sql = "ALTER TEXT SEARCH DICTIONARY \"{$f_schema}\".\"{$dictname}\" RENAME TO \"{$name}\""; + $status = $this->execute($sql); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + } + + return $this->endTransaction(); + } + + /** + * Return all information relating to a FTS dictionary + * @param $ftsdict The name of the FTS dictionary + * + * @return RecordSet of FTS dictionary information + */ + function getFtsDictionaryByName($ftsdict) { + + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($ftsdict); + + $sql = "SELECT + n.nspname as schema, + d.dictname as name, + ( SELECT COALESCE(nt.nspname, '(null)')::pg_catalog.text || '.' || t.tmplname FROM + pg_catalog.pg_ts_template t + LEFT JOIN pg_catalog.pg_namespace nt ON nt.oid = t.tmplnamespace + WHERE d.dicttemplate = t.oid ) AS template, + d.dictinitoption as init, + pg_catalog.obj_description(d.oid, 'pg_ts_dict') as comment + FROM pg_catalog.pg_ts_dict d + LEFT JOIN pg_catalog.pg_namespace n ON n.oid = d.dictnamespace + WHERE d.dictname = '{$ftsdict}' + AND pg_catalog.pg_ts_dict_is_visible(d.oid) + AND n.nspname='{$c_schema}' + ORDER BY name"; + + return $this->selectSet($sql); + } + + /** + * Creates/updates/deletes FTS mapping. + * @param string $cfgname The name of the FTS configuration to alter + * @param array $mapping Array of tokens' names + * @param string $action What to do with the mapping: add, alter or drop + * @param string $dictname Dictionary that will process tokens given or null in case of drop action + * + * @return 0 success + */ + function changeFtsMapping($ftscfg, $mapping, $action, $dictname = null) { + + if (count($mapping) > 0) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($ftscfg); + $this->fieldClean($dictname); + $this->arrayClean($mapping); + + switch ($action) { + case 'alter': + $whatToDo = "ALTER"; + break; + case 'drop': + $whatToDo = "DROP"; + break; + default: + $whatToDo = "ADD"; + break; + } + + $sql = "ALTER TEXT SEARCH CONFIGURATION \"{$f_schema}\".\"{$ftscfg}\" {$whatToDo} MAPPING FOR "; + $sql .= implode(",", $mapping); + if ($action != 'drop' && !empty($dictname)) { + $sql .= " WITH {$dictname}"; + } + + return $this->execute($sql); + } + else { + return -1; + } + } + + /** + * Return all information related to a given FTS configuration's mapping + * @param $ftscfg The name of the FTS configuration + * @param $mapping The name of the mapping + * + * @return FTS configuration information + */ + function getFtsMappingByName($ftscfg, $mapping) { + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($ftscfg); + $this->clean($mapping); + + $oidSet = $this->selectSet("SELECT c.oid, cfgparser + FROM pg_catalog.pg_ts_config AS c + LEFT JOIN pg_catalog.pg_namespace AS n ON n.oid = c.cfgnamespace + WHERE c.cfgname = '{$ftscfg}' + AND n.nspname='{$c_schema}'"); + + $oid = $oidSet->fields['oid']; + $cfgparser = $oidSet->fields['cfgparser']; + + $tokenIdSet = $this->selectSet("SELECT tokid + FROM pg_catalog.ts_token_type({$cfgparser}) + WHERE alias = '{$mapping}'"); + + $tokid = $tokenIdSet->fields['tokid']; + + $sql = "SELECT + (SELECT t.alias FROM pg_catalog.ts_token_type(c.cfgparser) AS t WHERE t.tokid = m.maptokentype) AS name, + d.dictname as dictionaries + FROM pg_catalog.pg_ts_config AS c, pg_catalog.pg_ts_config_map AS m, pg_catalog.pg_ts_dict d + WHERE c.oid = {$oid} AND m.mapcfg = c.oid AND m.maptokentype = {$tokid} AND m.mapdict = d.oid + LIMIT 1;"; + + return $this->selectSet($sql); + } + + /** + * Return list of FTS mappings possible for given parser + * (specified by given configuration since configuration can only have 1 parser) + * @param $ftscfg The config's name that use the parser + * + * @return 0 on success + */ + function getFtsMappings($ftscfg) { + + $cfg = $this->getFtsConfigurationByName($ftscfg); + + $sql = "SELECT alias AS name, description + FROM pg_catalog.ts_token_type({$cfg->fields['parser_id']}) + ORDER BY name"; + + return $this->selectSet($sql); + } + + // Language functions + + /** + * Gets all languages + * @param $all True to get all languages, regardless of show_system + * @return A recordset + */ + function getLanguages($all = false) { + global $conf; + + if ($conf['show_system'] || $all) + $where = ''; + else + $where = 'WHERE lanispl'; + + $sql = " + SELECT + lanname, lanpltrusted, + lanplcallfoid::pg_catalog.regproc AS lanplcallf + FROM + pg_catalog.pg_language + {$where} + ORDER BY lanname + "; + + return $this->selectSet($sql); + } + + // Aggregate functions + + /** + * Creates a new aggregate in the database + * @param $name The name of the aggregate + * @param $basetype The input data type of the aggregate + * @param $sfunc The name of the state transition function for the aggregate + * @param $stype The data type for the aggregate's state value + * @param $ffunc The name of the final function for the aggregate + * @param $initcond The initial setting for the state value + * @param $sortop The sort operator for the aggregate + * @param $comment Aggregate comment + * @return 0 success + * @return -1 error + */ + function createAggregate($name, $basetype, $sfunc, $stype, $ffunc, $initcond, $sortop, $comment) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($name); + $this->fieldClean($basetype); + $this->fieldClean($sfunc); + $this->fieldClean($stype); + $this->fieldClean($ffunc); + $this->fieldClean($initcond); + $this->fieldClean($sortop); + + $this->beginTransaction(); + + $sql = "CREATE AGGREGATE \"{$f_schema}\".\"{$name}\" (BASETYPE = \"{$basetype}\", SFUNC = \"{$sfunc}\", STYPE = \"{$stype}\""; + if(trim($ffunc) != '') $sql .= ", FINALFUNC = \"{$ffunc}\""; + if(trim($initcond) != '') $sql .= ", INITCOND = \"{$initcond}\""; + if(trim($sortop) != '') $sql .= ", SORTOP = \"{$sortop}\""; + $sql .= ")"; + + $status = $this->execute($sql); + if ($status) { + $this->rollbackTransaction(); + return -1; + } + + if (trim($comment) != '') { + $status = $this->setComment('AGGREGATE', $name, '', $comment, $basetype); + if ($status) { + $this->rollbackTransaction(); + return -1; + } + } + + return $this->endTransaction(); + } + + /** + * Renames an aggregate function + * @param $aggrname The actual name of the aggregate + * @param $aggrtype The actual input data type of the aggregate + * @param $newaggrname The new name of the aggregate + * @return 0 success + */ + function renameAggregate($aggrschema, $aggrname, $aggrtype, $newaggrname) { + /* this function is called from alterAggregate where params are cleaned */ + $sql = "ALTER AGGREGATE \"{$aggrschema}\"" . '.' . "\"{$aggrname}\" (\"{$aggrtype}\") RENAME TO \"{$newaggrname}\""; + return $this->execute($sql); + } + + /** + * Removes an aggregate function from the database + * @param $aggrname The name of the aggregate + * @param $aggrtype The input data type of the aggregate + * @param $cascade True to cascade drop, false to restrict + * @return 0 success + */ + function dropAggregate($aggrname, $aggrtype, $cascade) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($aggrname); + $this->fieldClean($aggrtype); + + $sql = "DROP AGGREGATE \"{$f_schema}\".\"{$aggrname}\" (\"{$aggrtype}\")"; + if ($cascade) $sql .= " CASCADE"; + + return $this->execute($sql); + } + + /** + * Gets all information for an aggregate + * @param $name The name of the aggregate + * @param $basetype The input data type of the aggregate + * @return A recordset + */ + function getAggregate($name, $basetype) { + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->fieldclean($name); + $this->fieldclean($basetype); + + $sql = " + SELECT p.proname, CASE p.proargtypes[0] + WHEN 'pg_catalog.\"any\"'::pg_catalog.regtype THEN NULL + ELSE pg_catalog.format_type(p.proargtypes[0], NULL) END AS proargtypes, + a.aggtransfn, format_type(a.aggtranstype, NULL) AS aggstype, a.aggfinalfn, + a.agginitval, a.aggsortop, u.usename, pg_catalog.obj_description(p.oid, 'pg_proc') AS aggrcomment + FROM pg_catalog.pg_proc p, pg_catalog.pg_namespace n, pg_catalog.pg_user u, pg_catalog.pg_aggregate a + WHERE n.oid = p.pronamespace AND p.proowner=u.usesysid AND p.oid=a.aggfnoid + AND p.proisagg AND n.nspname='{$c_schema}' + AND p.proname='" . $name . "' + AND CASE p.proargtypes[0] + WHEN 'pg_catalog.\"any\"'::pg_catalog.regtype THEN '' + ELSE pg_catalog.format_type(p.proargtypes[0], NULL) + END ='" . $basetype . "'"; + + return $this->selectSet($sql); + } + + /** + * Gets all aggregates + * @return A recordset + */ + function getAggregates() { + $c_schema = $this->_schema; + $this->clean($c_schema); + $sql = "SELECT p.proname, CASE p.proargtypes[0] WHEN 'pg_catalog.\"any\"'::pg_catalog.regtype THEN NULL ELSE + pg_catalog.format_type(p.proargtypes[0], NULL) END AS proargtypes, a.aggtransfn, u.usename, + pg_catalog.obj_description(p.oid, 'pg_proc') AS aggrcomment + FROM pg_catalog.pg_proc p, pg_catalog.pg_namespace n, pg_catalog.pg_user u, pg_catalog.pg_aggregate a + WHERE n.oid = p.pronamespace AND p.proowner=u.usesysid AND p.oid=a.aggfnoid + AND p.proisagg AND n.nspname='{$c_schema}' ORDER BY 1, 2"; + + return $this->selectSet($sql); + } + + /** + * Changes the owner of an aggregate function + * @param $aggrname The name of the aggregate + * @param $aggrtype The input data type of the aggregate + * @param $newaggrowner The new owner of the aggregate + * @return 0 success + */ + function changeAggregateOwner($aggrname, $aggrtype, $newaggrowner) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($aggrname); + $this->fieldClean($newaggrowner); + $sql = "ALTER AGGREGATE \"{$f_schema}\".\"{$aggrname}\" (\"{$aggrtype}\") OWNER TO \"{$newaggrowner}\""; + return $this->execute($sql); + } + + /** + * Changes the schema of an aggregate function + * @param $aggrname The name of the aggregate + * @param $aggrtype The input data type of the aggregate + * @param $newaggrschema The new schema for the aggregate + * @return 0 success + */ + function changeAggregateSchema($aggrname, $aggrtype, $newaggrschema) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($aggrname); + $this->fieldClean($newaggrschema); + $sql = "ALTER AGGREGATE \"{$f_schema}\".\"{$aggrname}\" (\"{$aggrtype}\") SET SCHEMA \"{$newaggrschema}\""; + return $this->execute($sql); + } + + /** + * Alters an aggregate + * @param $aggrname The actual name of the aggregate + * @param $aggrtype The actual input data type of the aggregate + * @param $aggrowner The actual owner of the aggregate + * @param $aggrschema The actual schema the aggregate belongs to + * @param $aggrcomment The actual comment for the aggregate + * @param $newaggrname The new name of the aggregate + * @param $newaggrowner The new owner of the aggregate + * @param $newaggrschema The new schema where the aggregate will belong to + * @param $newaggrcomment The new comment for the aggregate + * @return 0 success + * @return -1 change owner error + * @return -2 change comment error + * @return -3 change schema error + * @return -4 change name error + */ + function alterAggregate($aggrname, $aggrtype, $aggrowner, $aggrschema, $aggrcomment, $newaggrname, $newaggrowner, $newaggrschema, $newaggrcomment) { + // Clean fields + $this->fieldClean($aggrname); + $this->fieldClean($aggrtype); + $this->fieldClean($aggrowner); + $this->fieldClean($aggrschema); + $this->fieldClean($newaggrname); + $this->fieldClean($newaggrowner); + $this->fieldClean($newaggrschema); + + $this->beginTransaction(); + + // Change the owner, if it has changed + if($aggrowner != $newaggrowner) { + $status = $this->changeAggregateOwner($aggrname, $aggrtype, $newaggrowner); + if($status != 0) { + $this->rollbackTransaction(); + return -1; + } + } + + // Set the comment, if it has changed + if($aggrcomment != $newaggrcomment) { + $status = $this->setComment('AGGREGATE', $aggrname, '', $newaggrcomment, $aggrtype); + if ($status) { + $this->rollbackTransaction(); + return -2; + } + } + + // Change the schema, if it has changed + if($aggrschema != $newaggrschema) { + $status = $this->changeAggregateSchema($aggrname, $aggrtype, $newaggrschema); + if($status != 0) { + $this->rollbackTransaction(); + return -3; + } + } + + // Rename the aggregate, if it has changed + if($aggrname != $newaggrname) { + $status = $this->renameAggregate($newaggrschema, $aggrname, $aggrtype, $newaggrname); + if($status != 0) { + $this->rollbackTransaction(); + return -4; + } + } + + return $this->endTransaction(); + } + + // Role, User/Group functions + + /** + * Returns all roles in the database cluster + * @param $rolename (optional) The role name to exclude from the select + * @return All roles + */ + function getRoles($rolename = '') { + $sql = ' + SELECT rolname, rolsuper, rolcreatedb, rolcreaterole, rolinherit, + rolcanlogin, rolconnlimit, rolvaliduntil, rolconfig + FROM pg_catalog.pg_roles'; + if($rolename) $sql .= " WHERE rolname!='{$rolename}'"; + $sql .= ' ORDER BY rolname'; + + return $this->selectSet($sql); + } + + /** + * Returns information about a single role + * @param $rolename The name of the role to retrieve + * @return The role's data + */ + function getRole($rolename) { + $this->clean($rolename); + + $sql = " + SELECT rolname, rolsuper, rolcreatedb, rolcreaterole, rolinherit, + rolcanlogin, rolconnlimit, rolvaliduntil, rolconfig + FROM pg_catalog.pg_roles WHERE rolname='{$rolename}'"; + + return $this->selectSet($sql); + } + + /** + * Grants membership in a role + * @param $role The name of the target role + * @param $rolename The name of the role that will belong to the target role + * @param $admin (optional) Flag to grant the admin option + * @return 0 success + */ + function grantRole($role, $rolename, $admin=0) { + $this->fieldClean($role); + $this->fieldClean($rolename); + + $sql = "GRANT \"{$role}\" TO \"{$rolename}\""; + if($admin == 1) $sql .= ' WITH ADMIN OPTION'; + + return $this->execute($sql); + } + + /** + * Revokes membership in a role + * @param $role The name of the target role + * @param $rolename The name of the role that will not belong to the target role + * @param $admin (optional) Flag to revoke only the admin option + * @param $type (optional) Type of revoke: RESTRICT | CASCADE + * @return 0 success + */ + function revokeRole($role, $rolename, $admin = 0, $type = 'RESTRICT') { + $this->fieldClean($role); + $this->fieldClean($rolename); + + $sql = "REVOKE "; + if($admin == 1) $sql .= 'ADMIN OPTION FOR '; + $sql .= "\"{$role}\" FROM \"{$rolename}\" {$type}"; + + return $this->execute($sql); + } + + /** + * Returns all users in the database cluster + * @return All users + */ + function getUsers() { + $sql = "SELECT usename, usesuper, usecreatedb, valuntil AS useexpires, useconfig + FROM pg_user + ORDER BY usename"; + + return $this->selectSet($sql); + } + + /** + * Returns information about a single user + * @param $username The username of the user to retrieve + * @return The user's data + */ + function getUser($username) { + $this->clean($username); + + $sql = "SELECT usename, usesuper, usecreatedb, valuntil AS useexpires, useconfig + FROM pg_user + WHERE usename='{$username}'"; + + return $this->selectSet($sql); + } + + /** + * Creates a new role + * @param $rolename The name of the role to create + * @param $password A password for the role + * @param $superuser Boolean whether or not the role is a superuser + * @param $createdb Boolean whether or not the role can create databases + * @param $createrole Boolean whether or not the role can create other roles + * @param $inherits Boolean whether or not the role inherits the privileges from parent roles + * @param $login Boolean whether or not the role will be allowed to login + * @param $connlimit Number of concurrent connections the role can make + * @param $expiry String Format 'YYYY-MM-DD HH:MM:SS'. '' means never expire + * @param $memberof (array) Roles to which the new role will be immediately added as a new member + * @param $members (array) Roles which are automatically added as members of the new role + * @param $adminmembers (array) Roles which are automatically added as admin members of the new role + * @return 0 success + */ + function createRole($rolename, $password, $superuser, $createdb, $createrole, $inherits, $login, $connlimit, $expiry, $memberof, $members, $adminmembers) { + $enc = $this->_encryptPassword($rolename, $password); + $this->fieldClean($rolename); + $this->clean($enc); + $this->clean($connlimit); + $this->clean($expiry); + $this->fieldArrayClean($memberof); + $this->fieldArrayClean($members); + $this->fieldArrayClean($adminmembers); + + $sql = "CREATE ROLE \"{$rolename}\""; + if ($password != '') $sql .= " WITH ENCRYPTED PASSWORD '{$enc}'"; + $sql .= ($superuser) ? ' SUPERUSER' : ' NOSUPERUSER'; + $sql .= ($createdb) ? ' CREATEDB' : ' NOCREATEDB'; + $sql .= ($createrole) ? ' CREATEROLE' : ' NOCREATEROLE'; + $sql .= ($inherits) ? ' INHERIT' : ' NOINHERIT'; + $sql .= ($login) ? ' LOGIN' : ' NOLOGIN'; + if ($connlimit != '') $sql .= " CONNECTION LIMIT {$connlimit}"; else $sql .= ' CONNECTION LIMIT -1'; + if ($expiry != '') $sql .= " VALID UNTIL '{$expiry}'"; else $sql .= " VALID UNTIL 'infinity'"; + if (is_array($memberof) && sizeof($memberof) > 0) $sql .= ' IN ROLE "' . join('", "', $memberof) . '"'; + if (is_array($members) && sizeof($members) > 0) $sql .= ' ROLE "' . join('", "', $members) . '"'; + if (is_array($adminmembers) && sizeof($adminmembers) > 0) $sql .= ' ADMIN "' . join('", "', $adminmembers) . '"'; + + return $this->execute($sql); + } + + /** + * Adjusts a role's info + * @param $rolename The name of the role to adjust + * @param $password A password for the role + * @param $superuser Boolean whether or not the role is a superuser + * @param $createdb Boolean whether or not the role can create databases + * @param $createrole Boolean whether or not the role can create other roles + * @param $inherits Boolean whether or not the role inherits the privileges from parent roles + * @param $login Boolean whether or not the role will be allowed to login + * @param $connlimit Number of concurrent connections the role can make + * @param $expiry string Format 'YYYY-MM-DD HH:MM:SS'. '' means never expire + * @param $memberof (array) Roles to which the role will be immediately added as a new member + * @param $members (array) Roles which are automatically added as members of the role + * @param $adminmembers (array) Roles which are automatically added as admin members of the role + * @param $memberofold (array) Original roles whose the role belongs to + * @param $membersold (array) Original roles that are members of the role + * @param $adminmembersold (array) Original roles that are admin members of the role + * @return 0 success + */ + function setRole($rolename, $password, $superuser, $createdb, $createrole, $inherits, $login, $connlimit, $expiry, $memberof, $members, $adminmembers, $memberofold, $membersold, $adminmembersold) { + $enc = $this->_encryptPassword($rolename, $password); + $this->fieldClean($rolename); + $this->clean($enc); + $this->clean($connlimit); + $this->clean($expiry); + $this->fieldArrayClean($memberof); + $this->fieldArrayClean($members); + $this->fieldArrayClean($adminmembers); + + $sql = "ALTER ROLE \"{$rolename}\""; + if ($password != '') $sql .= " WITH ENCRYPTED PASSWORD '{$enc}'"; + $sql .= ($superuser) ? ' SUPERUSER' : ' NOSUPERUSER'; + $sql .= ($createdb) ? ' CREATEDB' : ' NOCREATEDB'; + $sql .= ($createrole) ? ' CREATEROLE' : ' NOCREATEROLE'; + $sql .= ($inherits) ? ' INHERIT' : ' NOINHERIT'; + $sql .= ($login) ? ' LOGIN' : ' NOLOGIN'; + if ($connlimit != '') $sql .= " CONNECTION LIMIT {$connlimit}"; else $sql .= ' CONNECTION LIMIT -1'; + if ($expiry != '') $sql .= " VALID UNTIL '{$expiry}'"; else $sql .= " VALID UNTIL 'infinity'"; + + $status = $this->execute($sql); + + if ($status != 0) return -1; + + //memberof + $old = explode(',', $memberofold); + foreach ($memberof as $m) { + if (!in_array($m, $old)) { + $status = $this->grantRole($m, $rolename); + if ($status != 0) return -1; + } + } + if($memberofold) + { + foreach ($old as $o) { + if (!in_array($o, $memberof)) { + $status = $this->revokeRole($o, $rolename, 0, 'CASCADE'); + if ($status != 0) return -1; + } + } + } + + //members + $old = explode(',', $membersold); + foreach ($members as $m) { + if (!in_array($m, $old)) { + $status = $this->grantRole($rolename, $m); + if ($status != 0) return -1; + } + } + if($membersold) + { + foreach ($old as $o) { + if (!in_array($o, $members)) { + $status = $this->revokeRole($rolename, $o, 0, 'CASCADE'); + if ($status != 0) return -1; + } + } + } + + //adminmembers + $old = explode(',', $adminmembersold); + foreach ($adminmembers as $m) { + if (!in_array($m, $old)) { + $status = $this->grantRole($rolename, $m, 1); + if ($status != 0) return -1; + } + } + if($adminmembersold) + { + foreach ($old as $o) { + if (!in_array($o, $adminmembers)) { + $status = $this->revokeRole($rolename, $o, 1, 'CASCADE'); + if ($status != 0) return -1; + } + } + } + + return $status; + } + + /** + * Renames a role + * @param $rolename The name of the role to rename + * @param $newrolename The new name of the role + * @return 0 success + */ + function renameRole($rolename, $newrolename){ + $this->fieldClean($rolename); + $this->fieldClean($newrolename); + + $sql = "ALTER ROLE \"{$rolename}\" RENAME TO \"{$newrolename}\""; + + return $this->execute($sql); + } + + /** + * Adjusts a role's info and renames it + * @param $rolename The name of the role to adjust + * @param $password A password for the role + * @param $superuser Boolean whether or not the role is a superuser + * @param $createdb Boolean whether or not the role can create databases + * @param $createrole Boolean whether or not the role can create other roles + * @param $inherits Boolean whether or not the role inherits the privileges from parent roles + * @param $login Boolean whether or not the role will be allowed to login + * @param $connlimit Number of concurrent connections the role can make + * @param $expiry string Format 'YYYY-MM-DD HH:MM:SS'. '' means never expire + * @param $memberof (array) Roles to which the role will be immediately added as a new member + * @param $members (array) Roles which are automatically added as members of the role + * @param $adminmembers (array) Roles which are automatically added as admin members of the role + * @param $memberofold (array) Original roles whose the role belongs to + * @param $membersold (array) Original roles that are members of the role + * @param $adminmembersold (array) Original roles that are admin members of the role + * @param $newrolename The new name of the role + * @return 0 success + * @return -1 transaction error + * @return -2 set role attributes error + * @return -3 rename error + */ + function setRenameRole($rolename, $password, $superuser, $createdb, $createrole, + $inherits, $login, $connlimit, $expiry, $memberof, $members, $adminmembers, + $memberofold, $membersold, $adminmembersold, $newrolename) { + + $status = $this->beginTransaction(); + if ($status != 0) return -1; + + if ($rolename != $newrolename){ + $status = $this->renameRole($rolename, $newrolename); + if ($status != 0) { + $this->rollbackTransaction(); + return -3; + } + $rolename = $newrolename; + } + + $status = $this->setRole($rolename, $password, $superuser, $createdb, $createrole, $inherits, $login, $connlimit, $expiry, $memberof, $members, $adminmembers, $memberofold, $membersold, $adminmembersold); + if ($status != 0) { + $this->rollbackTransaction(); + return -2; + } + + return $this->endTransaction(); + } + + /** + * Removes a role + * @param $rolename The name of the role to drop + * @return 0 success + */ + function dropRole($rolename) { + $this->fieldClean($rolename); + + $sql = "DROP ROLE \"{$rolename}\""; + + return $this->execute($sql); + } + + /** + * Creates a new user + * @param $username The username of the user to create + * @param $password A password for the user + * @param $createdb boolean Whether or not the user can create databases + * @param $createuser boolean Whether or not the user can create other users + * @param $expiry string Format 'YYYY-MM-DD HH:MM:SS'. '' means never expire + * @param $group (array) The groups to create the user in + * @return 0 success + */ + function createUser($username, $password, $createdb, $createuser, $expiry, $groups) { + $enc = $this->_encryptPassword($username, $password); + $this->fieldClean($username); + $this->clean($enc); + $this->clean($expiry); + $this->fieldArrayClean($groups); + + $sql = "CREATE USER \"{$username}\""; + if ($password != '') $sql .= " WITH ENCRYPTED PASSWORD '{$enc}'"; + $sql .= ($createdb) ? ' CREATEDB' : ' NOCREATEDB'; + $sql .= ($createuser) ? ' CREATEUSER' : ' NOCREATEUSER'; + if (is_array($groups) && sizeof($groups) > 0) $sql .= " IN GROUP \"" . join('", "', $groups) . "\""; + if ($expiry != '') $sql .= " VALID UNTIL '{$expiry}'"; + else $sql .= " VALID UNTIL 'infinity'"; + + return $this->execute($sql); + } + + /** + * Renames a user + * @param $username The username of the user to rename + * @param $newname The new name of the user + * @return 0 success + */ + function renameUser($username, $newname){ + $this->fieldClean($username); + $this->fieldClean($newname); + + $sql = "ALTER USER \"{$username}\" RENAME TO \"{$newname}\""; + + return $this->execute($sql); + } + + /** + * Adjusts a user's info + * @param $username The username of the user to modify + * @param $password A new password for the user + * @param $createdb boolean Whether or not the user can create databases + * @param $createuser boolean Whether or not the user can create other users + * @param $expiry string Format 'YYYY-MM-DD HH:MM:SS'. '' means never expire. + * @return 0 success + */ + function setUser($username, $password, $createdb, $createuser, $expiry) { + $enc = $this->_encryptPassword($username, $password); + $this->fieldClean($username); + $this->clean($enc); + $this->clean($expiry); + + $sql = "ALTER USER \"{$username}\""; + if ($password != '') $sql .= " WITH ENCRYPTED PASSWORD '{$enc}'"; + $sql .= ($createdb) ? ' CREATEDB' : ' NOCREATEDB'; + $sql .= ($createuser) ? ' CREATEUSER' : ' NOCREATEUSER'; + if ($expiry != '') $sql .= " VALID UNTIL '{$expiry}'"; + else $sql .= " VALID UNTIL 'infinity'"; + + return $this->execute($sql); + } + + /** + * Adjusts a user's info and renames the user + * @param $username The username of the user to modify + * @param $password A new password for the user + * @param $createdb boolean Whether or not the user can create databases + * @param $createuser boolean Whether or not the user can create other users + * @param $expiry string Format 'YYYY-MM-DD HH:MM:SS'. '' means never expire. + * @param $newname The new name of the user + * @return 0 success + * @return -1 transaction error + * @return -2 set user attributes error + * @return -3 rename error + */ + function setRenameUser($username, $password, $createdb, $createuser, $expiry, $newname) { + $status = $this->beginTransaction(); + if ($status != 0) return -1; + + if ($username != $newname){ + $status = $this->renameUser($username, $newname); + if ($status != 0) { + $this->rollbackTransaction(); + return -3; + } + $username = $newname; + } + + $status = $this->setUser($username, $password, $createdb, $createuser, $expiry); + if ($status != 0) { + $this->rollbackTransaction(); + return -2; + } + + return $this->endTransaction(); + } + + /** + * Removes a user + * @param $username The username of the user to drop + * @return 0 success + */ + function dropUser($username) { + $this->fieldClean($username); + + $sql = "DROP USER \"{$username}\""; + + return $this->execute($sql); + } + + /** + * Determines whether or not a user is a super user + * @param $username The username of the user + * @return True if is a super user, false otherwise + */ + function isSuperUser($username = '') { + $this->clean($username); + + if (empty($usename)) { + $val = pg_parameter_status($this->conn->_connectionID, 'is_superuser'); + if ($val !== false) return $val == 'on'; + } + + $sql = "SELECT usesuper FROM pg_user WHERE usename='{$username}'"; + + $usesuper = $this->selectField($sql, 'usesuper'); + if ($usesuper == -1) return false; + else return $usesuper == 't'; + } + + /** + * Changes a role's password + * @param $rolename The role name + * @param $password The new password + * @return 0 success + */ + function changePassword($rolename, $password) { + $enc = $this->_encryptPassword($rolename, $password); + $this->fieldClean($rolename); + $this->clean($enc); + + $sql = "ALTER ROLE \"{$rolename}\" WITH ENCRYPTED PASSWORD '{$enc}'"; + + return $this->execute($sql); + } + + /** + * Adds a group member + * @param $groname The name of the group + * @param $user The name of the user to add to the group + * @return 0 success + */ + function addGroupMember($groname, $user) { + $this->fieldClean($groname); + $this->fieldClean($user); + + $sql = "ALTER GROUP \"{$groname}\" ADD USER \"{$user}\""; + + return $this->execute($sql); + } + + /** + * Returns all role names which the role belongs to + * @param $rolename The role name + * @return All role names + */ + function getMemberOf($rolename) { + $this->clean($rolename); + + $sql = " + SELECT rolname FROM pg_catalog.pg_roles R, pg_auth_members M + WHERE R.oid=M.roleid + AND member IN ( + SELECT oid FROM pg_catalog.pg_roles + WHERE rolname='{$rolename}') + ORDER BY rolname"; + + return $this->selectSet($sql); + } + + /** + * Returns all role names that are members of a role + * @param $rolename The role name + * @param $admin (optional) Find only admin members + * @return All role names + */ + function getMembers($rolename, $admin = 'f') { + $this->clean($rolename); + + $sql = " + SELECT rolname FROM pg_catalog.pg_roles R, pg_auth_members M + WHERE R.oid=M.member AND admin_option='{$admin}' + AND roleid IN (SELECT oid FROM pg_catalog.pg_roles + WHERE rolname='{$rolename}') + ORDER BY rolname"; + + return $this->selectSet($sql); + } + + /** + * Removes a group member + * @param $groname The name of the group + * @param $user The name of the user to remove from the group + * @return 0 success + */ + function dropGroupMember($groname, $user) { + $this->fieldClean($groname); + $this->fieldClean($user); + + $sql = "ALTER GROUP \"{$groname}\" DROP USER \"{$user}\""; + + return $this->execute($sql); + } + + /** + * Return users in a specific group + * @param $groname The name of the group + * @return All users in the group + */ + function getGroup($groname) { + $this->clean($groname); + + $sql = " + SELECT s.usename FROM pg_catalog.pg_user s, pg_catalog.pg_group g + WHERE g.groname='{$groname}' AND s.usesysid = ANY (g.grolist) + ORDER BY s.usename"; + + return $this->selectSet($sql); + } + + /** + * Returns all groups in the database cluser + * @return All groups + */ + function getGroups() { + $sql = "SELECT groname FROM pg_group ORDER BY groname"; + + return $this->selectSet($sql); + } + + /** + * Creates a new group + * @param $groname The name of the group + * @param $users An array of users to add to the group + * @return 0 success + */ + function createGroup($groname, $users) { + $this->fieldClean($groname); + + $sql = "CREATE GROUP \"{$groname}\""; + + if (is_array($users) && sizeof($users) > 0) { + $this->fieldArrayClean($users); + $sql .= ' WITH USER "' . join('", "', $users) . '"'; + } + + return $this->execute($sql); + } + + /** + * Removes a group + * @param $groname The name of the group to drop + * @return 0 success + */ + function dropGroup($groname) { + $this->fieldClean($groname); + + $sql = "DROP GROUP \"{$groname}\""; + + return $this->execute($sql); + } + + /** + * Internal function used for parsing ACLs + * @param $acl The ACL to parse (of type aclitem[]) + * @return Privileges array + */ + function _parseACL($acl) { + // Take off the first and last characters (the braces) + $acl = substr($acl, 1, strlen($acl) - 2); + + // Pick out individual ACE's by carefully parsing. This is necessary in order + // to cope with usernames and stuff that contain commas + $aces = array(); + $i = $j = 0; + $in_quotes = false; + while ($i < strlen($acl)) { + // If current char is a double quote and it's not escaped, then + // enter quoted bit + $char = substr($acl, $i, 1); + if ($char == '"' && ($i == 0 || substr($acl, $i - 1, 1) != '\\')) + $in_quotes = !$in_quotes; + elseif ($char == ',' && !$in_quotes) { + // Add text so far to the array + $aces[] = substr($acl, $j, $i - $j); + $j = $i + 1; + } + $i++; + } + // Add final text to the array + $aces[] = substr($acl, $j); + + // Create the array to be returned + $temp = array(); + + // For each ACE, generate an entry in $temp + foreach ($aces as $v) { + + // If the ACE begins with a double quote, strip them off both ends + // and unescape backslashes and double quotes + $unquote = false; + if (strpos($v, '"') === 0) { + $v = substr($v, 1, strlen($v) - 2); + $v = str_replace('\\"', '"', $v); + $v = str_replace('\\\\', '\\', $v); + } + + // Figure out type of ACE (public, user or group) + if (strpos($v, '=') === 0) + $atype = 'public'; + else if ($this->hasRoles()) { + $atype = 'role'; + } + else if (strpos($v, 'group ') === 0) { + $atype = 'group'; + // Tear off 'group' prefix + $v = substr($v, 6); + } + else + $atype = 'user'; + + // Break on unquoted equals sign... + $i = 0; + $in_quotes = false; + $entity = null; + $chars = null; + while ($i < strlen($v)) { + // If current char is a double quote and it's not escaped, then + // enter quoted bit + $char = substr($v, $i, 1); + $next_char = substr($v, $i + 1, 1); + if ($char == '"' && ($i == 0 || $next_char != '"')) { + $in_quotes = !$in_quotes; + } + // Skip over escaped double quotes + elseif ($char == '"' && $next_char == '"') { + $i++; + } + elseif ($char == '=' && !$in_quotes) { + // Split on current equals sign + $entity = substr($v, 0, $i); + $chars = substr($v, $i + 1); + break; + } + $i++; + } + + // Check for quoting on entity name, and unescape if necessary + if (strpos($entity, '"') === 0) { + $entity = substr($entity, 1, strlen($entity) - 2); + $entity = str_replace('""', '"', $entity); + } + + // New row to be added to $temp + // (type, grantee, privileges, grantor, grant option? + $row = array($atype, $entity, array(), '', array()); + + // Loop over chars and add privs to $row + for ($i = 0; $i < strlen($chars); $i++) { + // Append to row's privs list the string representing + // the privilege + $char = substr($chars, $i, 1); + if ($char == '*') + $row[4][] = $this->privmap[substr($chars, $i - 1, 1)]; + elseif ($char == '/') { + $grantor = substr($chars, $i + 1); + // Check for quoting + if (strpos($grantor, '"') === 0) { + $grantor = substr($grantor, 1, strlen($grantor) - 2); + $grantor = str_replace('""', '"', $grantor); + } + $row[3] = $grantor; + break; + } + else { + if (!isset($this->privmap[$char])) + return -3; + else + $row[2][] = $this->privmap[$char]; + } + } + + // Append row to temp + $temp[] = $row; + } + + return $temp; + } + + /** + * Grabs an array of users and their privileges for an object, + * given its type. + * @param $object The name of the object whose privileges are to be retrieved + * @param $type The type of the object (eg. database, schema, relation, function or language) + * @param $table Optional, column's table if type = column + * @return Privileges array + * @return -1 invalid type + * @return -2 object not found + * @return -3 unknown privilege type + */ + function getPrivileges($object, $type, $table = null) { + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($object); + + switch ($type) { + case 'column': + $this->clean($table); + $sql = " + SELECT E'{' || pg_catalog.array_to_string(attacl, E',') || E'}' as acl + FROM pg_catalog.pg_attribute a + LEFT JOIN pg_catalog.pg_class c ON (a.attrelid = c.oid) + LEFT JOIN pg_catalog.pg_namespace n ON (c.relnamespace=n.oid) + WHERE n.nspname='{$c_schema}' + AND c.relname='{$table}' + AND a.attname='{$object}'"; + break; + case 'table': + case 'view': + case 'sequence': + $sql = " + SELECT relacl AS acl FROM pg_catalog.pg_class + WHERE relname='{$object}' + AND relnamespace=(SELECT oid FROM pg_catalog.pg_namespace + WHERE nspname='{$c_schema}')"; + break; + case 'database': + $sql = "SELECT datacl AS acl FROM pg_catalog.pg_database WHERE datname='{$object}'"; + break; + case 'function': + // Since we fetch functions by oid, they are already constrained to + // the current schema. + $sql = "SELECT proacl AS acl FROM pg_catalog.pg_proc WHERE oid='{$object}'"; + break; + case 'language': + $sql = "SELECT lanacl AS acl FROM pg_catalog.pg_language WHERE lanname='{$object}'"; + break; + case 'schema': + $sql = "SELECT nspacl AS acl FROM pg_catalog.pg_namespace WHERE nspname='{$object}'"; + break; + case 'tablespace': + $sql = "SELECT spcacl AS acl FROM pg_catalog.pg_tablespace WHERE spcname='{$object}'"; + break; + default: + return -1; + } + + // Fetch the ACL for object + $acl = $this->selectField($sql, 'acl'); + if ($acl == -1) return -2; + elseif ($acl == '' || $acl == null) return array(); + else return $this->_parseACL($acl); + } + + /** + * Grants a privilege to a user, group or public + * @param $mode 'GRANT' or 'REVOKE'; + * @param $type The type of object + * @param $object The name of the object + * @param $public True to grant to public, false otherwise + * @param $usernames The array of usernames to grant privs to. + * @param $groupnames The array of group names to grant privs to. + * @param $privileges The array of privileges to grant (eg. ('SELECT', 'ALL PRIVILEGES', etc.) ) + * @param $grantoption True if has grant option, false otherwise + * @param $cascade True for cascade revoke, false otherwise + * @param $table the column's table if type=column + * @return 0 success + * @return -1 invalid type + * @return -2 invalid entity + * @return -3 invalid privileges + * @return -4 not granting to anything + * @return -4 invalid mode + */ + function setPrivileges($mode, $type, $object, $public, $usernames, $groupnames, + $privileges, $grantoption, $cascade, $table + ) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldArrayClean($usernames); + $this->fieldArrayClean($groupnames); + + // Input checking + if (!is_array($privileges) || sizeof($privileges) == 0) return -3; + if (!is_array($usernames) || !is_array($groupnames) || + (!$public && sizeof($usernames) == 0 && sizeof($groupnames) == 0)) return -4; + if ($mode != 'GRANT' && $mode != 'REVOKE') return -5; + + $sql = $mode; + + // Grant option + if ($this->hasGrantOption() && $mode == 'REVOKE' && $grantoption) { + $sql .= ' GRANT OPTION FOR'; + } + + if (in_array('ALL PRIVILEGES', $privileges)) { + $sql .= ' ALL PRIVILEGES'; + } + else { + if ($type == 'column') { + $this->fieldClean($object); + $sql .= ' ' . join(" (\"{$object}\"), ", $privileges); + } + else { + $sql .= ' ' . join(', ', $privileges); + } + } + + switch ($type) { + case 'column': + $sql .= " (\"{$object}\")"; + $object = $table; + case 'table': + case 'view': + case 'sequence': + $this->fieldClean($object); + $sql .= " ON \"{$f_schema}\".\"{$object}\""; + break; + case 'database': + $this->fieldClean($object); + $sql .= " ON DATABASE \"{$object}\""; + break; + case 'function': + // Function comes in with $object as function OID + $fn = $this->getFunction($object); + $this->fieldClean($fn->fields['proname']); + $sql .= " ON FUNCTION \"{$f_schema}\".\"{$fn->fields['proname']}\"({$fn->fields['proarguments']})"; + break; + case 'language': + $this->fieldClean($object); + $sql .= " ON LANGUAGE \"{$object}\""; + break; + case 'schema': + $this->fieldClean($object); + $sql .= " ON SCHEMA \"{$object}\""; + break; + case 'tablespace': + $this->fieldClean($object); + $sql .= " ON TABLESPACE \"{$object}\""; + break; + default: + return -1; + } + + // Dump PUBLIC + $first = true; + $sql .= ($mode == 'GRANT') ? ' TO ' : ' FROM '; + if ($public) { + $sql .= 'PUBLIC'; + $first = false; + } + // Dump users + foreach ($usernames as $v) { + if ($first) { + $sql .= "\"{$v}\""; + $first = false; + } + else { + $sql .= ", \"{$v}\""; + } + } + // Dump groups + foreach ($groupnames as $v) { + if ($first) { + $sql .= "GROUP \"{$v}\""; + $first = false; + } + else { + $sql .= ", GROUP \"{$v}\""; + } + } + + // Grant option + if ($this->hasGrantOption() && $mode == 'GRANT' && $grantoption) { + $sql .= ' WITH GRANT OPTION'; + } + + // Cascade revoke + if ($this->hasGrantOption() && $mode == 'REVOKE' && $cascade) { + $sql .= ' CASCADE'; + } + + return $this->execute($sql); + } + + /** + * Helper function that computes encypted PostgreSQL passwords + * @param $username The username + * @param $password The password + */ + function _encryptPassword($username, $password) { + return 'md5' . md5($password . $username); + } + + // Tablespace functions + + /** + * Retrieves information for all tablespaces + * @param $all Include all tablespaces (necessary when moving objects back to the default space) + * @return A recordset + */ + function getTablespaces($all = false) { + global $conf; + + $sql = "SELECT spcname, pg_catalog.pg_get_userbyid(spcowner) AS spcowner, pg_catalog.pg_tablespace_location(oid) as spclocation, + (SELECT description FROM pg_catalog.pg_shdescription pd WHERE pg_tablespace.oid=pd.objoid AND pd.classoid='pg_tablespace'::regclass) AS spccomment + FROM pg_catalog.pg_tablespace"; + + if (!$conf['show_system'] && !$all) { + $sql .= ' WHERE spcname NOT LIKE $$pg\_%$$'; + } + + $sql .= " ORDER BY spcname"; + + return $this->selectSet($sql); + } + + /** + * Retrieves a tablespace's information + * @return A recordset + */ + function getTablespace($spcname) { + $this->clean($spcname); + + $sql = "SELECT spcname, pg_catalog.pg_get_userbyid(spcowner) AS spcowner, pg_catalog.pg_tablespace_location(oid) as spclocation, + (SELECT description FROM pg_catalog.pg_shdescription pd WHERE pg_tablespace.oid=pd.objoid AND pd.classoid='pg_tablespace'::regclass) AS spccomment + FROM pg_catalog.pg_tablespace WHERE spcname='{$spcname}'"; + + return $this->selectSet($sql); + } + + /** + * Creates a tablespace + * @param $spcname The name of the tablespace to create + * @param $spcowner The owner of the tablespace. '' for current + * @param $spcloc The directory in which to create the tablespace + * @return 0 success + */ + function createTablespace($spcname, $spcowner, $spcloc, $comment='') { + $this->fieldClean($spcname); + $this->clean($spcloc); + + $sql = "CREATE TABLESPACE \"{$spcname}\""; + + if ($spcowner != '') { + $this->fieldClean($spcowner); + $sql .= " OWNER \"{$spcowner}\""; + } + + $sql .= " LOCATION '{$spcloc}'"; + + $status = $this->execute($sql); + if ($status != 0) return -1; + + if ($comment != '' && $this->hasSharedComments()) { + $status = $this->setComment('TABLESPACE',$spcname,'',$comment); + if ($status != 0) return -2; + } + + return 0; + } + + /** + * Alters a tablespace + * @param $spcname The name of the tablespace + * @param $name The new name for the tablespace + * @param $owner The new owner for the tablespace + * @return 0 success + * @return -1 transaction error + * @return -2 owner error + * @return -3 rename error + * @return -4 comment error + */ + function alterTablespace($spcname, $name, $owner, $comment='') { + $this->fieldClean($spcname); + $this->fieldClean($name); + $this->fieldClean($owner); + + // Begin transaction + $status = $this->beginTransaction(); + if ($status != 0) return -1; + + // Owner + $sql = "ALTER TABLESPACE \"{$spcname}\" OWNER TO \"{$owner}\""; + $status = $this->execute($sql); + if ($status != 0) { + $this->rollbackTransaction(); + return -2; + } + + // Rename (only if name has changed) + if ($name != $spcname) { + $sql = "ALTER TABLESPACE \"{$spcname}\" RENAME TO \"{$name}\""; + $status = $this->execute($sql); + if ($status != 0) { + $this->rollbackTransaction(); + return -3; + } + + $spcname = $name; + } + + // Set comment if it has changed + if (trim($comment) != '' && $this->hasSharedComments()) { + $status = $this->setComment('TABLESPACE',$spcname,'',$comment); + if ($status != 0) return -4; + } + + return $this->endTransaction(); + } + + /** + * Drops a tablespace + * @param $spcname The name of the domain to drop + * @return 0 success + */ + function dropTablespace($spcname) { + $this->fieldClean($spcname); + + $sql = "DROP TABLESPACE \"{$spcname}\""; + + return $this->execute($sql); + } + + // Administration functions + + /** + * Analyze a database + * @param $table (optional) The table to analyze + */ + function analyzeDB($table = '') { + if ($table != '') { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($table); + + $sql = "ANALYZE \"{$f_schema}\".\"{$table}\""; + } + else + $sql = "ANALYZE"; + + return $this->execute($sql); + } + + /** + * Vacuums a database + * @param $table The table to vacuum + * @param $analyze If true, also does analyze + * @param $full If true, selects "full" vacuum + * @param $freeze If true, selects aggressive "freezing" of tuples + */ + function vacuumDB($table = '', $analyze = false, $full = false, $freeze = false) { + + $sql = "VACUUM"; + if ($full) $sql .= " FULL"; + if ($freeze) $sql .= " FREEZE"; + if ($analyze) $sql .= " ANALYZE"; + if ($table != '') { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($table); + $sql .= " \"{$f_schema}\".\"{$table}\""; + } + + return $this->execute($sql); + } + + /** + * Returns all autovacuum global configuration + * @return associative array array( param => value, ...) + */ + function getAutovacuum() { + + $_defaults = $this->selectSet("SELECT name, setting + FROM pg_catalog.pg_settings + WHERE + name = 'autovacuum' + OR name = 'autovacuum_vacuum_threshold' + OR name = 'autovacuum_vacuum_scale_factor' + OR name = 'autovacuum_analyze_threshold' + OR name = 'autovacuum_analyze_scale_factor' + OR name = 'autovacuum_vacuum_cost_delay' + OR name = 'autovacuum_vacuum_cost_limit' + OR name = 'vacuum_freeze_min_age' + OR name = 'autovacuum_freeze_max_age' + " + ); + + $ret = array(); + while (!$_defaults->EOF) { + $ret[$_defaults->fields['name']] = $_defaults->fields['setting']; + $_defaults->moveNext(); + } + + return $ret; + } + + /** + * Returns all available autovacuum per table information. + * @return A recordset + */ + function saveAutovacuum($table, $vacenabled, $vacthreshold, $vacscalefactor, $anathresold, + $anascalefactor, $vaccostdelay, $vaccostlimit) + { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($table); + + $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" SET ("; + + if (!empty($vacenabled)) { + $this->clean($vacenabled); + $params[] = "autovacuum_enabled='{$vacenabled}'"; + } + if (!empty($vacthreshold)) { + $this->clean($vacthreshold); + $params[] = "autovacuum_vacuum_threshold='{$vacthreshold}'"; + } + if (!empty($vacscalefactor)) { + $this->clean($vacscalefactor); + $params[] = "autovacuum_vacuum_scale_factor='{$vacscalefactor}'"; + } + if (!empty($anathresold)) { + $this->clean($anathresold); + $params[] = "autovacuum_analyze_threshold='{$anathresold}'"; + } + if (!empty($anascalefactor)) { + $this->clean($anascalefactor); + $params[] = "autovacuum_analyze_scale_factor='{$anascalefactor}'"; + } + if (!empty($vaccostdelay)) { + $this->clean($vaccostdelay); + $params[] = "autovacuum_vacuum_cost_delay='{$vaccostdelay}'"; + } + if (!empty($vaccostlimit)) { + $this->clean($vaccostlimit); + $params[] = "autovacuum_vacuum_cost_limit='{$vaccostlimit}'"; + } + + $sql = $sql . implode(',', $params) . ');'; + + return $this->execute($sql); + } + + function dropAutovacuum($table) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($table); + + return $this->execute(" + ALTER TABLE \"{$f_schema}\".\"{$table}\" RESET (autovacuum_enabled, autovacuum_vacuum_threshold, + autovacuum_vacuum_scale_factor, autovacuum_analyze_threshold, autovacuum_analyze_scale_factor, + autovacuum_vacuum_cost_delay, autovacuum_vacuum_cost_limit + );" + ); + } + + /** + * Returns all available process information. + * @param $database (optional) Find only connections to specified database + * @return A recordset + */ + function getProcesses($database = null) { + if ($database === null) + $sql = "SELECT datname, usename, pid, + case when wait_event is null then 'false' else wait_event_type || '::' || wait_event end as waiting, + query_start, application_name, client_addr, + case when state='idle in transaction' then ' in transaction' when state = 'idle' then '' else query end as query + FROM pg_catalog.pg_stat_activity + ORDER BY datname, usename, pid"; + else { + $this->clean($database); + $sql = "SELECT datname, usename, pid, + case when wait_event is null then 'false' else wait_event_type || '::' || wait_event end as waiting, + query_start, application_name, client_addr, + case when state='idle in transaction' then ' in transaction' when state = 'idle' then '' else query end as query + FROM pg_catalog.pg_stat_activity + WHERE datname='{$database}' + ORDER BY usename, pid"; + } + + return $this->selectSet($sql); + } + + /** + * Returns table locks information in the current database + * @return A recordset + */ + + function getLocks() { + global $conf; + + if (!$conf['show_system']) + $where = 'AND pn.nspname NOT LIKE $$pg\_%$$'; + else + $where = "AND nspname !~ '^pg_t(emp_[0-9]+|oast)$'"; + + $sql = " + SELECT + pn.nspname, pc.relname AS tablename, pl.pid, pl.mode, pl.granted, pl.virtualtransaction, + (select transactionid from pg_catalog.pg_locks l2 where l2.locktype='transactionid' + and l2.mode='ExclusiveLock' and l2.virtualtransaction=pl.virtualtransaction) as transaction + FROM + pg_catalog.pg_locks pl, + pg_catalog.pg_class pc, + pg_catalog.pg_namespace pn + WHERE + pl.relation = pc.oid AND pc.relnamespace=pn.oid + {$where} + ORDER BY pid,nspname,tablename"; + + return $this->selectSet($sql); + } + + /** + * Sends a cancel or kill command to a process + * @param $pid The ID of the backend process + * @param $signal 'CANCEL' + * @return 0 success + * @return -1 invalid signal type + */ + function sendSignal($pid, $signal) { + // Clean + $pid = (int)$pid; + + if ($signal == 'CANCEL') + $sql = "SELECT pg_catalog.pg_cancel_backend({$pid}) AS val"; + elseif ($signal == 'KILL') + $sql = "SELECT pg_catalog.pg_terminate_backend({$pid}) AS val"; + else + return -1; + + + // Execute the query + $val = $this->selectField($sql, 'val'); + + if ($val === 'f') return -1; + elseif ($val === 't') return 0; + else return -1; + } + + // Misc functions + + /** + * Sets the comment for an object in the database + * @pre All parameters must already be cleaned + * @param $obj_type One of 'TABLE' | 'COLUMN' | 'VIEW' | 'SCHEMA' | 'SEQUENCE' | 'TYPE' | 'FUNCTION' | 'AGGREGATE' + * @param $obj_name The name of the object for which to attach a comment. + * @param $table Name of table that $obj_name belongs to. Ignored unless $obj_type is 'TABLE' or 'COLUMN'. + * @param $comment The comment to add. + * @return 0 success + */ + function setComment($obj_type, $obj_name, $table, $comment, $basetype = NULL) { + $sql = "COMMENT ON {$obj_type} " ; + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->clean($comment); // Passing in an already cleaned comment will lead to double escaped data + // So, while counter-intuitive, it is important to not clean comments before + // calling setComment. We will clean it here instead. +/* + $this->fieldClean($table); + $this->fieldClean($obj_name); +*/ + + switch ($obj_type) { + case 'TABLE': + $sql .= "\"{$f_schema}\".\"{$table}\" IS "; + break; + case 'COLUMN': + $sql .= "\"{$f_schema}\".\"{$table}\".\"{$obj_name}\" IS "; + break; + case 'SEQUENCE': + case 'VIEW': + case 'TEXT SEARCH CONFIGURATION': + case 'TEXT SEARCH DICTIONARY': + case 'TEXT SEARCH TEMPLATE': + case 'TEXT SEARCH PARSER': + case 'TYPE': + $sql .= "\"{$f_schema}\"."; + case 'DATABASE': + case 'ROLE': + case 'SCHEMA': + case 'TABLESPACE': + $sql .= "\"{$obj_name}\" IS "; + break; + case 'FUNCTION': + $sql .= "\"{$f_schema}\".{$obj_name} IS "; + break; + case 'AGGREGATE': + $sql .= "\"{$f_schema}\".\"{$obj_name}\" (\"{$basetype}\") IS "; + break; + default: + // Unknown object type + return -1; + } + + if ($comment != '') + $sql .= "'{$comment}';"; + else + $sql .= 'NULL;'; + + return $this->execute($sql); + + } + + /** + * A private helper method for executeScript that advances the + * character by 1. In psql this is careful to take into account + * multibyte languages, but we don't at the moment, so this function + * is someone redundant, since it will always advance by 1 + * @param &$i The current character position in the line + * @param &$prevlen Length of previous character (ie. 1) + * @param &$thislen Length of current character (ie. 1) + */ + private + function advance_1(&$i, &$prevlen, &$thislen) { + $prevlen = $thislen; + $i += $thislen; + $thislen = 1; + } + + /** + * Private helper method to detect a valid $foo$ quote delimiter at + * the start of the parameter dquote + * @return True if valid, false otherwise + */ + private + function valid_dolquote($dquote) { + // XXX: support multibyte + return (preg_match('/^[$][$]/', $dquote) || preg_match('/^[$][_[:alpha:]][_[:alnum:]]*[$]/', $dquote)); + } + + /** + * Executes an SQL script as a series of SQL statements. Returns + * the result of the final step. This is a very complicated lexer + * based on the REL7_4_STABLE src/bin/psql/mainloop.c lexer in + * the PostgreSQL source code. + * XXX: It does not handle multibyte languages properly. + * @param $name Entry in $_FILES to use + * @param $callback (optional) Callback function to call with each query, + its result and line number. + * @return True for general success, false on any failure. + */ + function executeScript($name, $callback = null) { + global $data; + + // This whole function isn't very encapsulated, but hey... + $conn = $data->conn->_connectionID; + if (!is_uploaded_file($_FILES[$name]['tmp_name'])) return false; + + $fd = fopen($_FILES[$name]['tmp_name'], 'r'); + if (!$fd) return false; + + // Build up each SQL statement, they can be multiline + $query_buf = null; + $query_start = 0; + $in_quote = 0; + $in_xcomment = 0; + $bslash_count = 0; + $dol_quote = null; + $paren_level = 0; + $len = 0; + $i = 0; + $prevlen = 0; + $thislen = 0; + $lineno = 0; + + // Loop over each line in the file + while (!feof($fd)) { + $line = fgets($fd); + $lineno++; + + // Nothing left on line? Then ignore... + if (trim($line) == '') continue; + + $len = strlen($line); + $query_start = 0; + + /* + * Parse line, looking for command separators. + * + * The current character is at line[i], the prior character at line[i + * - prevlen], the next character at line[i + thislen]. + */ + $prevlen = 0; + $thislen = ($len > 0) ? 1 : 0; + + for ($i = 0; $i < $len; $this->advance_1($i, $prevlen, $thislen)) { + + /* was the previous character a backslash? */ + if ($i > 0 && substr($line, $i - $prevlen, 1) == '\\') + $bslash_count++; + else + $bslash_count = 0; + + /* + * It is important to place the in_* test routines before the + * in_* detection routines. i.e. we have to test if we are in + * a quote before testing for comments. + */ + + /* in quote? */ + if ($in_quote !== 0) + { + /* + * end of quote if matching non-backslashed character. + * backslashes don't count for double quotes, though. + */ + if (substr($line, $i, 1) == $in_quote && + ($bslash_count % 2 == 0 || $in_quote == '"')) + $in_quote = 0; + } + + /* in or end of $foo$ type quote? */ + else if ($dol_quote) { + if (strncmp(substr($line, $i), $dol_quote, strlen($dol_quote)) == 0) { + $this->advance_1($i, $prevlen, $thislen); + while(substr($line, $i, 1) != '$') + $this->advance_1($i, $prevlen, $thislen); + $dol_quote = null; + } + } + + /* start of extended comment? */ + else if (substr($line, $i, 2) == '/*') + { + $in_xcomment++; + if ($in_xcomment == 1) + $this->advance_1($i, $prevlen, $thislen); + } + + /* in or end of extended comment? */ + else if ($in_xcomment) + { + if (substr($line, $i, 2) == '*/' && !--$in_xcomment) + $this->advance_1($i, $prevlen, $thislen); + } + + /* start of quote? */ + else if (substr($line, $i, 1) == '\'' || substr($line, $i, 1) == '"') { + $in_quote = substr($line, $i, 1); + } + + /* + * start of $foo$ type quote? + */ + else if (!$dol_quote && $this->valid_dolquote(substr($line, $i))) { + $dol_end = strpos(substr($line, $i + 1), '$'); + $dol_quote = substr($line, $i, $dol_end + 1); + $this->advance_1($i, $prevlen, $thislen); + while (substr($line, $i, 1) != '$') { + $this->advance_1($i, $prevlen, $thislen); + } + + } + + /* single-line comment? truncate line */ + else if (substr($line, $i, 2) == '--') + { + $line = substr($line, 0, $i); /* remove comment */ + break; + } + + /* count nested parentheses */ + else if (substr($line, $i, 1) == '(') { + $paren_level++; + } + + else if (substr($line, $i, 1) == ')' && $paren_level > 0) { + $paren_level--; + } + + /* semicolon? then send query */ + else if (substr($line, $i, 1) == ';' && !$bslash_count && !$paren_level) + { + $subline = substr(substr($line, 0, $i), $query_start); + /* is there anything else on the line? */ + if (strspn($subline, " \t\n\r") != strlen($subline)) + { + /* + * insert a cosmetic newline, if this is not the first + * line in the buffer + */ + if (strlen($query_buf) > 0) + $query_buf .= "\n"; + /* append the line to the query buffer */ + $query_buf .= $subline; + $query_buf .= ';'; + + // Execute the query. PHP cannot execute + // empty queries, unlike libpq + $res = @pg_query($conn, $query_buf); + + // Call the callback function for display + if ($callback !== null) $callback($query_buf, $res, $lineno); + // Check for COPY request + if (pg_result_status($res) == 4) { // 4 == PGSQL_COPY_FROM + while (!feof($fd)) { + $copy = fgets($fd, 32768); + $lineno++; + pg_put_line($conn, $copy); + if ($copy == "\\.\n" || $copy == "\\.\r\n") { + pg_end_copy($conn); + break; + } + } + } + } + + $query_buf = null; + $query_start = $i + $thislen; + } + + /* + * keyword or identifier? + * We grab the whole string so that we don't + * mistakenly see $foo$ inside an identifier as the start + * of a dollar quote. + */ + // XXX: multibyte here + else if (preg_match('/^[_[:alpha:]]$/', substr($line, $i, 1))) { + $sub = substr($line, $i, $thislen); + while (preg_match('/^[\$_A-Za-z0-9]$/', $sub)) { + /* keep going while we still have identifier chars */ + $this->advance_1($i, $prevlen, $thislen); + $sub = substr($line, $i, $thislen); + } + // Since we're now over the next character to be examined, it is necessary + // to move back one space. + $i-=$prevlen; + } + } // end for + + /* Put the rest of the line in the query buffer. */ + $subline = substr($line, $query_start); + if ($in_quote || $dol_quote || strspn($subline, " \t\n\r") != strlen($subline)) + { + if (strlen($query_buf) > 0) + $query_buf .= "\n"; + $query_buf .= $subline; + } + + $line = null; + + } // end while + + /* + * Process query at the end of file without a semicolon, so long as + * it's non-empty. + */ + if (strlen($query_buf) > 0 && strspn($query_buf, " \t\n\r") != strlen($query_buf)) + { + // Execute the query + $res = @pg_query($conn, $query_buf); + + // Call the callback function for display + if ($callback !== null) $callback($query_buf, $res, $lineno); + // Check for COPY request + if (pg_result_status($res) == 4) { // 4 == PGSQL_COPY_FROM + while (!feof($fd)) { + $copy = fgets($fd, 32768); + $lineno++; + pg_put_line($conn, $copy); + if ($copy == "\\.\n" || $copy == "\\.\r\n") { + pg_end_copy($conn); + break; + } + } + } + } + + fclose($fd); + + return true; + } + + /** + * Generates the SQL for the 'select' function + * @param $table The table from which to select + * @param $show An array of columns to show. Empty array means all columns. + * @param $values An array mapping columns to values + * @param $ops An array of the operators to use + * @param $orderby (optional) An array of column numbers or names (one based) + * mapped to sort direction (asc or desc or '' or null) to order by + * @return The SQL query + */ + function getSelectSQL($table, $show, $values, $ops, $orderby = array()) { + $this->fieldArrayClean($show); + + // If an empty array is passed in, then show all columns + if (sizeof($show) == 0) { + if ($this->hasObjectID($table)) + $sql = "SELECT \"{$this->id}\", * FROM "; + else + $sql = "SELECT * FROM "; + } + else { + // Add oid column automatically to results for editing purposes + if (!in_array($this->id, $show) && $this->hasObjectID($table)) + $sql = "SELECT \"{$this->id}\", \""; + else + $sql = "SELECT \""; + + $sql .= join('","', $show) . "\" FROM "; + } + + $this->fieldClean($table); + + if (isset($_REQUEST['schema'])) { + $f_schema = $_REQUEST['schema']; + $this->fieldClean($f_schema); + $sql .= "\"{$f_schema}\"."; + } + $sql .= "\"{$table}\""; + + // If we have values specified, add them to the WHERE clause + $first = true; + if (is_array($values) && sizeof($values) > 0) { + foreach ($values as $k => $v) { + if ($v != '' || $this->selectOps[$ops[$k]] == 'p') { + $this->fieldClean($k); + if ($first) { + $sql .= " WHERE "; + $first = false; + } else { + $sql .= " AND "; + } + // Different query format depending on operator type + switch ($this->selectOps[$ops[$k]]) { + case 'i': + // Only clean the field for the inline case + // this is because (x), subqueries need to + // to allow 'a','b' as input. + $this->clean($v); + $sql .= "\"{$k}\" {$ops[$k]} '{$v}'"; + break; + case 'p': + $sql .= "\"{$k}\" {$ops[$k]}"; + break; + case 'x': + $sql .= "\"{$k}\" {$ops[$k]} ({$v})"; + break; + case 't': + $sql .= "\"{$k}\" {$ops[$k]}('{$v}')"; + break; + default: + // Shouldn't happen + } + } + } + } + + // ORDER BY + if (is_array($orderby) && sizeof($orderby) > 0) { + $sql .= " ORDER BY "; + $first = true; + foreach ($orderby as $k => $v) { + if ($first) $first = false; + else $sql .= ', '; + if (preg_match('/^[0-9]+$/', $k)) { + $sql .= $k; + } + else { + $this->fieldClean($k); + $sql .= '"' . $k . '"'; + } + if (strtoupper($v) == 'DESC') $sql .= " DESC"; + } + } + + return $sql; + } + + /** + * Returns a recordset of all columns in a query. Supports paging. + * @param $type Either 'QUERY' if it is an SQL query, or 'TABLE' if it is a table identifier, + * or 'SELECT" if it's a select query + * @param $table The base table of the query. NULL for no table. + * @param $query The query that is being executed. NULL for no query. + * @param $sortkey The column number to sort by, or '' or null for no sorting + * @param $sortdir The direction in which to sort the specified column ('asc' or 'desc') + * @param $page The page of the relation to retrieve + * @param $page_size The number of rows per page + * @param &$max_pages (return-by-ref) The max number of pages in the relation + * @return A recordset on success + * @return -1 transaction error + * @return -2 counting error + * @return -3 page or page_size invalid + * @return -4 unknown type + * @return -5 failed setting transaction read only + */ + function browseQuery($type, $table, $query, $sortkey, $sortdir, $page, $page_size, &$max_pages) { + // Check that we're not going to divide by zero + if (!is_numeric($page_size) || $page_size != (int)$page_size || $page_size <= 0) return -3; + + // If $type is TABLE, then generate the query + switch ($type) { + case 'TABLE': + if (preg_match('/^[0-9]+$/', $sortkey) && $sortkey > 0) $orderby = array($sortkey => $sortdir); + else $orderby = array(); + $query = $this->getSelectSQL($table, array(), array(), array(), $orderby); + break; + case 'QUERY': + case 'SELECT': + // Trim query + $query = trim($query); + // Trim off trailing semi-colon if there is one + if (substr($query, strlen($query) - 1, 1) == ';') + $query = substr($query, 0, strlen($query) - 1); + break; + default: + return -4; + } + + // Generate count query + $count = "SELECT COUNT(*) AS total FROM ($query) AS sub"; + + // Open a transaction + $status = $this->beginTransaction(); + if ($status != 0) return -1; + + // If backend supports read only queries, then specify read only mode + // to avoid side effects from repeating queries that do writes. + if ($this->hasReadOnlyQueries()) { + $status = $this->execute("SET TRANSACTION READ ONLY"); + if ($status != 0) { + $this->rollbackTransaction(); + return -5; + } + } + + + // Count the number of rows + $total = $this->browseQueryCount($query, $count); + if ($total < 0) { + $this->rollbackTransaction(); + return -2; + } + + // Calculate max pages + $max_pages = ceil($total / $page_size); + + // Check that page is less than or equal to max pages + if (!is_numeric($page) || $page != (int)$page || $page > $max_pages || $page < 1) { + $this->rollbackTransaction(); + return -3; + } + + // Set fetch mode to NUM so that duplicate field names are properly returned + // for non-table queries. Since the SELECT feature only allows selecting one + // table, duplicate fields shouldn't appear. + if ($type == 'QUERY') $this->conn->setFetchMode(ADODB_FETCH_NUM); + + // Figure out ORDER BY. Sort key is always the column number (based from one) + // of the column to order by. Only need to do this for non-TABLE queries + if ($type != 'TABLE' && preg_match('/^[0-9]+$/', $sortkey) && $sortkey > 0) { + $orderby = " ORDER BY {$sortkey}"; + // Add sort order + if ($sortdir == 'desc') + $orderby .= ' DESC'; + else + $orderby .= ' ASC'; + } + else $orderby = ''; + + // Actually retrieve the rows, with offset and limit + $rs = $this->selectSet("SELECT * FROM ({$query}) AS sub {$orderby} LIMIT {$page_size} OFFSET " . ($page - 1) * $page_size); + $status = $this->endTransaction(); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + + return $rs; + } + + /** + * Finds the number of rows that would be returned by a + * query. + * @param $query The SQL query + * @param $count The count query + * @return The count of rows + * @return -1 error + */ + function browseQueryCount($query, $count) { + return $this->selectField($count, 'total'); + } + + /** + * Returns a recordset of all columns in a table + * @param $table The name of a table + * @param $key The associative array holding the key to retrieve + * @return A recordset + */ + function browseRow($table, $key) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($table); + + $sql = "SELECT * FROM \"{$f_schema}\".\"{$table}\""; + if (is_array($key) && sizeof($key) > 0) { + $sql .= " WHERE true"; + foreach ($key as $k => $v) { + $this->fieldClean($k); + $this->clean($v); + $sql .= " AND \"{$k}\"='{$v}'"; + } + } + + return $this->selectSet($sql); + } + + // Type conversion routines + + /** + * Change the value of a parameter to 't' or 'f' depending on whether it evaluates to true or false + * @param $parameter the parameter + */ + function dbBool(&$parameter) { + if ($parameter) $parameter = 't'; + else $parameter = 'f'; + + return $parameter; + } + + /** + * Change a parameter from 't' or 'f' to a boolean, (others evaluate to false) + * @param $parameter the parameter + */ + function phpBool($parameter) { + $parameter = ($parameter == 't'); + return $parameter; + } + + // interfaces Statistics collector functions + + /** + * Fetches statistics for a database + * @param $database The database to fetch stats for + * @return A recordset + */ + function getStatsDatabase($database) { + $this->clean($database); + + $sql = "SELECT * FROM pg_stat_database WHERE datname='{$database}'"; + + return $this->selectSet($sql); + } + + /** + * Fetches tuple statistics for a table + * @param $table The table to fetch stats for + * @return A recordset + */ + function getStatsTableTuples($table) { + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($table); + + $sql = "SELECT * FROM pg_stat_all_tables + WHERE schemaname='{$c_schema}' AND relname='{$table}'"; + + return $this->selectSet($sql); + } + + /** + * Fetches I/0 statistics for a table + * @param $table The table to fetch stats for + * @return A recordset + */ + function getStatsTableIO($table) { + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($table); + + $sql = "SELECT * FROM pg_statio_all_tables + WHERE schemaname='{$c_schema}' AND relname='{$table}'"; + + return $this->selectSet($sql); + } + + /** + * Fetches tuple statistics for all indexes on a table + * @param $table The table to fetch index stats for + * @return A recordset + */ + function getStatsIndexTuples($table) { + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($table); + + $sql = "SELECT * FROM pg_stat_all_indexes + WHERE schemaname='{$c_schema}' AND relname='{$table}' ORDER BY indexrelname"; + + return $this->selectSet($sql); + } + + /** + * Fetches I/0 statistics for all indexes on a table + * @param $table The table to fetch index stats for + * @return A recordset + */ + function getStatsIndexIO($table) { + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($table); + + $sql = "SELECT * FROM pg_statio_all_indexes + WHERE schemaname='{$c_schema}' AND relname='{$table}' + ORDER BY indexrelname"; + + return $this->selectSet($sql); + } + + // Capabilities + + function hasAggregateSortOp() { return true; } + function hasAlterAggregate() { return true; } + function hasAlterColumnType() { return true; } + function hasAlterDatabaseOwner() { return true; } + function hasAlterDatabaseRename() { return true; } + function hasAlterSchema() { return true; } + function hasAlterSchemaOwner() { return true; } + function hasAlterSequenceSchema() { return true; } + function hasAlterSequenceStart() { return true; } + function hasAlterTableSchema() { return true; } + function hasAutovacuum() { return true; } + function hasCreateTableLike() { return true; } + function hasCreateTableLikeWithConstraints() { return true; } + function hasCreateTableLikeWithIndexes() { return true; } + function hasCreateFieldWithConstraints() { return true; } + function hasDisableTriggers() { return true; } + function hasAlterDomains() { return true; } + function hasDomainConstraints() { return true; } + function hasEnumTypes() { return true; } + function hasFTS() { return true; } + function hasFunctionAlterOwner() { return true; } + function hasFunctionAlterSchema() { return true; } + function hasFunctionCosting() { return true; } + function hasFunctionGUC() { return true; } + function hasGrantOption() { return true; } + function hasNamedParams() { return true; } + function hasPrepare() { return true; } + function hasPreparedXacts() { return true; } + function hasReadOnlyQueries() { return true; } + function hasRecluster() { return true; } + function hasRoles() { return true; } + function hasServerAdminFuncs() { return true; } + function hasSharedComments() { return true; } + function hasQueryCancel() { return true; } + function hasTablespaces() { return true; } + function hasUserRename() { return true; } + function hasUserSignals() { return true; } + function hasVirtualTransactionId() { return true; } + function hasAlterDatabase() { return $this->hasAlterDatabaseRename(); } + function hasDatabaseCollation() { return true; } + function hasMagicTypes() { return true; } + function hasQueryKill() { return true; } + function hasConcurrentIndexBuild() { return true; } + function hasForceReindex() { return false; } + function hasByteaHexDefault() { return true; } + +} +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres10.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres10.php new file mode 100644 index 00000000..5f851d80 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres10.php @@ -0,0 +1,30 @@ +Postgres($conn); + } + + // Help functions + + function getHelpPages() { + include_once('./help/PostgresDoc10.php'); + return $this->help_page; + } + +} +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres11.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres11.php new file mode 100644 index 00000000..2a3ae84b --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres11.php @@ -0,0 +1,30 @@ +Postgres($conn); + } + + // Help functions + + function getHelpPages() { + include_once('./help/PostgresDoc11.php'); + return $this->help_page; + } + +} +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres74.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres74.php new file mode 100644 index 00000000..4310eb64 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres74.php @@ -0,0 +1,635 @@ + array('SELECT', 'INSERT', 'UPDATE', 'DELETE', 'RULE', 'REFERENCES', 'TRIGGER', 'ALL PRIVILEGES'), + 'view' => array('SELECT', 'INSERT', 'UPDATE', 'DELETE', 'RULE', 'REFERENCES', 'TRIGGER', 'ALL PRIVILEGES'), + 'sequence' => array('SELECT', 'UPDATE', 'ALL PRIVILEGES'), + 'database' => array('CREATE', 'TEMPORARY', 'ALL PRIVILEGES'), + 'function' => array('EXECUTE', 'ALL PRIVILEGES'), + 'language' => array('USAGE', 'ALL PRIVILEGES'), + 'schema' => array('CREATE', 'USAGE', 'ALL PRIVILEGES') + ); + + + /** + * Constructor + * @param $conn The database connection + */ + function Postgres74($conn) { + $this->Postgres80($conn); + } + + // Help functions + + function getHelpPages() { + include_once('./help/PostgresDoc74.php'); + return $this->help_page; + } + + // Database functions + + /** + * Alters a database + * the multiple return vals are for postgres 8+ which support more functionality in alter database + * @param $dbName The name of the database + * @param $newName new name for the database + * @param $newOwner The new owner for the database + * @return 0 success + * @return -1 transaction error + * @return -2 owner error + * @return -3 rename error + */ + function alterDatabase($dbName, $newName, $newOwner = '', $comment = '') { + //ignore $newowner, not supported pre 8.0 + //ignore $comment, not supported pre 8.2 + $this->clean($dbName); + $this->clean($newName); + + $status = $this->alterDatabaseRename($dbName, $newName); + if ($status != 0) return -3; + else return 0; + } + + /** + * Return all database available on the server + * @return A list of databases, sorted alphabetically + */ + function getDatabases($currentdatabase = NULL) { + global $conf, $misc; + + $server_info = $misc->getServerInfo(); + + if (isset($conf['owned_only']) && $conf['owned_only'] && !$this->isSuperUser()) { + $username = $server_info['username']; + $this->clean($username); + $clause = " AND pu.usename='{$username}'"; + } + else $clause = ''; + + if ($currentdatabase != NULL) { + $this->clean($currentdatabase); + $orderby = "ORDER BY pdb.datname = '{$currentdatabase}' DESC, pdb.datname"; + } + else + $orderby = "ORDER BY pdb.datname"; + + if (!$conf['show_system']) + $where = ' AND NOT pdb.datistemplate'; + else + $where = ' AND pdb.datallowconn'; + + $sql = "SELECT pdb.datname AS datname, pu.usename AS datowner, pg_encoding_to_char(encoding) AS datencoding, + (SELECT description FROM pg_description pd WHERE pdb.oid=pd.objoid) AS datcomment + FROM pg_database pdb, pg_user pu + WHERE pdb.datdba = pu.usesysid + {$where} + {$clause} + {$orderby}"; + + return $this->selectSet($sql); + } + + /** + * Searches all system catalogs to find objects that match a certain name. + * @param $term The search term + * @param $filter The object type to restrict to ('' means no restriction) + * @return A recordset + */ + function findObject($term, $filter) { + global $conf; + + /*about escaping: + * SET standard_conforming_string is not available before 8.2 + * So we must use PostgreSQL specific notation :/ + * E'' notation is not available before 8.1 + * $$ is available since 8.0 + * Nothing specific from 7.4 + **/ + + // Escape search term for ILIKE match + $term = str_replace('_', '\\_', $term); + $term = str_replace('%', '\\%', $term); + $this->clean($term); + $this->clean($filter); + + // Exclude system relations if necessary + if (!$conf['show_system']) { + // XXX: The mention of information_schema here is in the wrong place, but + // it's the quickest fix to exclude the info schema from 7.4 + $where = " AND pn.nspname NOT LIKE 'pg\\\\_%' AND pn.nspname != 'information_schema'"; + $lan_where = "AND pl.lanispl"; + } + else { + $where = ''; + $lan_where = ''; + } + + // Apply outer filter + $sql = ''; + if ($filter != '') { + $sql = "SELECT * FROM ("; + } + + $sql .= " + SELECT 'SCHEMA' AS type, oid, NULL AS schemaname, NULL AS relname, nspname AS name + FROM pg_catalog.pg_namespace pn WHERE nspname ILIKE '%{$term}%' {$where} + UNION ALL + SELECT CASE WHEN relkind='r' THEN 'TABLE' WHEN relkind='v' THEN 'VIEW' WHEN relkind='S' THEN 'SEQUENCE' END, pc.oid, + pn.nspname, NULL, pc.relname FROM pg_catalog.pg_class pc, pg_catalog.pg_namespace pn + WHERE pc.relnamespace=pn.oid AND relkind IN ('r', 'v', 'S') AND relname ILIKE '%{$term}%' {$where} + UNION ALL + SELECT CASE WHEN pc.relkind='r' THEN 'COLUMNTABLE' ELSE 'COLUMNVIEW' END, NULL, pn.nspname, pc.relname, pa.attname FROM pg_catalog.pg_class pc, pg_catalog.pg_namespace pn, + pg_catalog.pg_attribute pa WHERE pc.relnamespace=pn.oid AND pc.oid=pa.attrelid + AND pa.attname ILIKE '%{$term}%' AND pa.attnum > 0 AND NOT pa.attisdropped AND pc.relkind IN ('r', 'v') {$where} + UNION ALL + SELECT 'FUNCTION', pp.oid, pn.nspname, NULL, pp.proname || '(' || pg_catalog.oidvectortypes(pp.proargtypes) || ')' FROM pg_catalog.pg_proc pp, pg_catalog.pg_namespace pn + WHERE pp.pronamespace=pn.oid AND NOT pp.proisagg AND pp.proname ILIKE '%{$term}%' {$where} + UNION ALL + SELECT 'INDEX', NULL, pn.nspname, pc.relname, pc2.relname FROM pg_catalog.pg_class pc, pg_catalog.pg_namespace pn, + pg_catalog.pg_index pi, pg_catalog.pg_class pc2 WHERE pc.relnamespace=pn.oid AND pc.oid=pi.indrelid + AND pi.indexrelid=pc2.oid + AND NOT EXISTS ( + SELECT 1 FROM pg_catalog.pg_depend d JOIN pg_catalog.pg_constraint c + ON (d.refclassid = c.tableoid AND d.refobjid = c.oid) + WHERE d.classid = pc2.tableoid AND d.objid = pc2.oid AND d.deptype = 'i' AND c.contype IN ('u', 'p') + ) + AND pc2.relname ILIKE '%{$term}%' {$where} + UNION ALL + SELECT 'CONSTRAINTTABLE', NULL, pn.nspname, pc.relname, pc2.conname FROM pg_catalog.pg_class pc, pg_catalog.pg_namespace pn, + pg_catalog.pg_constraint pc2 WHERE pc.relnamespace=pn.oid AND pc.oid=pc2.conrelid AND pc2.conrelid != 0 + AND CASE WHEN pc2.contype IN ('f', 'c') THEN TRUE ELSE NOT EXISTS ( + SELECT 1 FROM pg_catalog.pg_depend d JOIN pg_catalog.pg_constraint c + ON (d.refclassid = c.tableoid AND d.refobjid = c.oid) + WHERE d.classid = pc2.tableoid AND d.objid = pc2.oid AND d.deptype = 'i' AND c.contype IN ('u', 'p') + ) END + AND pc2.conname ILIKE '%{$term}%' {$where} + UNION ALL + SELECT 'CONSTRAINTDOMAIN', pt.oid, pn.nspname, pt.typname, pc.conname FROM pg_catalog.pg_type pt, pg_catalog.pg_namespace pn, + pg_catalog.pg_constraint pc WHERE pt.typnamespace=pn.oid AND pt.oid=pc.contypid AND pc.contypid != 0 + AND pc.conname ILIKE '%{$term}%' {$where} + UNION ALL + SELECT 'TRIGGER', NULL, pn.nspname, pc.relname, pt.tgname FROM pg_catalog.pg_class pc, pg_catalog.pg_namespace pn, + pg_catalog.pg_trigger pt WHERE pc.relnamespace=pn.oid AND pc.oid=pt.tgrelid + AND ( pt.tgisconstraint = 'f' OR NOT EXISTS + (SELECT 1 FROM pg_catalog.pg_depend d JOIN pg_catalog.pg_constraint c + ON (d.refclassid = c.tableoid AND d.refobjid = c.oid) + WHERE d.classid = pt.tableoid AND d.objid = pt.oid AND d.deptype = 'i' AND c.contype = 'f')) + AND pt.tgname ILIKE '%{$term}%' {$where} + UNION ALL + SELECT 'RULETABLE', NULL, pn.nspname AS schemaname, c.relname AS tablename, r.rulename FROM pg_catalog.pg_rewrite r + JOIN pg_catalog.pg_class c ON c.oid = r.ev_class + LEFT JOIN pg_catalog.pg_namespace pn ON pn.oid = c.relnamespace + WHERE c.relkind='r' AND r.rulename != '_RETURN' AND r.rulename ILIKE '%{$term}%' {$where} + UNION ALL + SELECT 'RULEVIEW', NULL, pn.nspname AS schemaname, c.relname AS tablename, r.rulename FROM pg_catalog.pg_rewrite r + JOIN pg_catalog.pg_class c ON c.oid = r.ev_class + LEFT JOIN pg_catalog.pg_namespace pn ON pn.oid = c.relnamespace + WHERE c.relkind='v' AND r.rulename != '_RETURN' AND r.rulename ILIKE '%{$term}%' {$where} + "; + + // Add advanced objects if show_advanced is set + if ($conf['show_advanced']) { + $sql .= " + UNION ALL + SELECT CASE WHEN pt.typtype='d' THEN 'DOMAIN' ELSE 'TYPE' END, pt.oid, pn.nspname, NULL, + pt.typname FROM pg_catalog.pg_type pt, pg_catalog.pg_namespace pn + WHERE pt.typnamespace=pn.oid AND typname ILIKE '%{$term}%' + AND (pt.typrelid = 0 OR (SELECT c.relkind = 'c' FROM pg_catalog.pg_class c WHERE c.oid = pt.typrelid)) + {$where} + UNION ALL + SELECT 'OPERATOR', po.oid, pn.nspname, NULL, po.oprname FROM pg_catalog.pg_operator po, pg_catalog.pg_namespace pn + WHERE po.oprnamespace=pn.oid AND oprname ILIKE '%{$term}%' {$where} + UNION ALL + SELECT 'CONVERSION', pc.oid, pn.nspname, NULL, pc.conname FROM pg_catalog.pg_conversion pc, + pg_catalog.pg_namespace pn WHERE pc.connamespace=pn.oid AND conname ILIKE '%{$term}%' {$where} + UNION ALL + SELECT 'LANGUAGE', pl.oid, NULL, NULL, pl.lanname FROM pg_catalog.pg_language pl + WHERE lanname ILIKE '%{$term}%' {$lan_where} + UNION ALL + SELECT DISTINCT ON (p.proname) 'AGGREGATE', p.oid, pn.nspname, NULL, p.proname FROM pg_catalog.pg_proc p + LEFT JOIN pg_catalog.pg_namespace pn ON p.pronamespace=pn.oid + WHERE p.proisagg AND p.proname ILIKE '%{$term}%' {$where} + UNION ALL + SELECT DISTINCT ON (po.opcname) 'OPCLASS', po.oid, pn.nspname, NULL, po.opcname FROM pg_catalog.pg_opclass po, + pg_catalog.pg_namespace pn WHERE po.opcnamespace=pn.oid + AND po.opcname ILIKE '%{$term}%' {$where} + "; + } + // Otherwise just add domains + else { + $sql .= " + UNION ALL + SELECT 'DOMAIN', pt.oid, pn.nspname, NULL, + pt.typname FROM pg_catalog.pg_type pt, pg_catalog.pg_namespace pn + WHERE pt.typnamespace=pn.oid AND pt.typtype='d' AND typname ILIKE '%{$term}%' + AND (pt.typrelid = 0 OR (SELECT c.relkind = 'c' FROM pg_catalog.pg_class c WHERE c.oid = pt.typrelid)) + {$where} + "; + } + + if ($filter != '') { + // We use like to make RULE, CONSTRAINT and COLUMN searches work + $sql .= ") AS sub WHERE type LIKE '{$filter}%' "; + } + + $sql .= "ORDER BY type, schemaname, relname, name"; + + return $this->selectSet($sql); + } + + /** + * Returns table locks information in the current database + * @return A recordset + */ + function getLocks() { + global $conf; + + if (!$conf['show_system']) + $where = "AND pn.nspname NOT LIKE 'pg\\\\_%'"; + else + $where = "AND nspname !~ '^pg_t(emp_[0-9]+|oast)$'"; + + $sql = "SELECT pn.nspname, pc.relname AS tablename, pl.transaction, pl.pid, pl.mode, pl.granted + FROM pg_catalog.pg_locks pl, pg_catalog.pg_class pc, pg_catalog.pg_namespace pn + WHERE pl.relation = pc.oid AND pc.relnamespace=pn.oid {$where} + ORDER BY nspname,tablename"; + + return $this->selectSet($sql); + } + + /** + * Returns the current database encoding + * @return The encoding. eg. SQL_ASCII, UTF-8, etc. + */ + function getDatabaseEncoding() { + $sql = "SELECT getdatabaseencoding() AS encoding"; + + return $this->selectField($sql, 'encoding'); + } + + // Table functions + + /** + * Protected method which alter a table + * SHOULDN'T BE CALLED OUTSIDE OF A TRANSACTION + * @param $tblrs The table recordSet returned by getTable() + * @param $name The new name for the table + * @param $owner The new owner for the table + * @param $schema The new schema for the table + * @param $comment The comment on the table + * @param $tablespace The new tablespace for the table ('' means leave as is) + * @return 0 success + * @return -3 rename error + * @return -4 comment error + * @return -5 owner error + */ + protected + function _alterTable($tblrs, $name, $owner, $schema, $comment, $tablespace) { + + /* $schema and tablespace not supported in pg74- */ + $this->fieldArrayClean($tblrs->fields); + + // Comment + $status = $this->setComment('TABLE', '', $tblrs->fields['relname'], $comment); + if ($status != 0) return -4; + + // Owner + $this->fieldClean($owner); + $status = $this->alterTableOwner($tblrs, $owner); + if ($status != 0) return -5; + + // Rename + $this->fieldClean($name); + $status = $this->alterTableName($tblrs, $name); + if ($status != 0) return -3; + + return 0; + } + + /** + * Alters a column in a table OR view + * @param $table The table in which the column resides + * @param $column The column to alter + * @param $name The new name for the column + * @param $notnull (boolean) True if not null, false otherwise + * @param $oldnotnull (boolean) True if column is already not null, false otherwise + * @param $default The new default for the column + * @param $olddefault The old default for the column + * @param $type The new type for the column + * @param $array True if array type, false otherwise + * @param $length The optional size of the column (ie. 30 for varchar(30)) + * @param $oldtype The old type for the column + * @param $comment Comment for the column + * @return 0 success + * @return -2 set not null error + * @return -3 set default error + * @return -4 rename column error + * @return -5 comment error + * @return -6 transaction error + */ + function alterColumn($table, $column, $name, $notnull, $oldnotnull, $default, $olddefault, + $type, $length, $array, $oldtype, $comment) + { + $status = $this->beginTransaction(); + if ($status != 0) return -1; + + // @@ NEED TO HANDLE "NESTED" TRANSACTION HERE + if ($notnull != $oldnotnull) { + $status = $this->setColumnNull($table, $column, !$notnull); + if ($status != 0) { + $this->rollbackTransaction(); + return -2; + } + } + + // Set default, if it has changed + if ($default != $olddefault) { + if ($default == '') + $status = $this->dropColumnDefault($table, $column); + else + $status = $this->setColumnDefault($table, $column, $default); + + if ($status != 0) { + $this->rollbackTransaction(); + return -3; + } + } + + // Rename the column, if it has been changed + if ($column != $name) { + $status = $this->renameColumn($table, $column, $name); + if ($status != 0) { + $this->rollbackTransaction(); + return -4; + } + } + + // The $name and $table parameters must be cleaned for the setComment function. + // It's ok to do that here since this is the last time these variables are used. + $this->fieldClean($name); + $this->fieldClean($table); + $status = $this->setComment('COLUMN', $name, $table, $comment); + if ($status != 0) { + $this->rollbackTransaction(); + return -5; + } + + return $this->endTransaction(); + } + + /** + * Returns table information + * @param $table The name of the table + * @return A recordset + */ + function getTable($table) { + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($table); + + $sql = " + SELECT + c.relname, n.nspname, u.usename AS relowner, + pg_catalog.obj_description(c.oid, 'pg_class') AS relcomment + FROM pg_catalog.pg_class c + LEFT JOIN pg_catalog.pg_user u ON u.usesysid = c.relowner + LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace + WHERE c.relkind = 'r' + AND n.nspname = '{$c_schema}' + AND c.relname = '{$table}'"; + + return $this->selectSet($sql); + } + + /** + * Return all tables in current database (and schema) + * @param $all True to fetch all tables, false for just in current schema + * @return All tables, sorted alphabetically + */ + function getTables($all = false) { + $c_schema = $this->_schema; + $this->clean($c_schema); + if ($all) { + // Exclude pg_catalog and information_schema tables + $sql = "SELECT schemaname AS nspname, tablename AS relname, tableowner AS relowner + FROM pg_catalog.pg_tables + WHERE schemaname NOT IN ('pg_catalog', 'information_schema', 'pg_toast') + ORDER BY schemaname, tablename"; + } else { + $sql = "SELECT c.relname, pg_catalog.pg_get_userbyid(c.relowner) AS relowner, + pg_catalog.obj_description(c.oid, 'pg_class') AS relcomment, + reltuples::bigint + FROM pg_catalog.pg_class c + LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace + WHERE c.relkind = 'r' + AND nspname='{$c_schema}' + ORDER BY c.relname"; + } + + return $this->selectSet($sql); + } + + /** + * Returns the current default_with_oids setting + * @return default_with_oids setting + */ + function getDefaultWithOid() { + // 8.0 is the first release to have this setting + // Prior releases don't have this setting... oids always activated + return 'on'; + } + + // Constraint functions + + /** + * Returns a list of all constraints on a table, + * including constraint name, definition, related col and referenced namespace, + * table and col if needed + * @param $table the table where we are looking for fk + * @return a recordset + */ + function getConstraintsWithFields($table) { + + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($table); + + // get the max number of col used in a constraint for the table + $sql = "SELECT DISTINCT + max(SUBSTRING(array_dims(c.conkey) FROM '^\\\\[.*:(.*)\\\\]$')) as nb + FROM pg_catalog.pg_constraint AS c + JOIN pg_catalog.pg_class AS r ON (c.conrelid=r.oid) + JOIN pg_catalog.pg_namespace AS ns ON (r.relnamespace=ns.oid) + WHERE + r.relname = '{$table}' AND ns.nspname='{$c_schema}'"; + + $rs = $this->selectSet($sql); + + if ($rs->EOF) $max_col = 0; + else $max_col = $rs->fields['nb']; + + $sql = ' + SELECT + c.oid AS conid, c.contype, c.conname, pg_catalog.pg_get_constraintdef(c.oid, true) AS consrc, + ns1.nspname as p_schema, r1.relname as p_table, ns2.nspname as f_schema, + r2.relname as f_table, f1.attname as p_field, f1.attnum AS p_attnum, f2.attname as f_field, + f2.attnum AS f_attnum, pg_catalog.obj_description(c.oid, \'pg_constraint\') AS constcomment, + c.conrelid, c.confrelid + FROM + pg_catalog.pg_constraint AS c + JOIN pg_catalog.pg_class AS r1 ON (c.conrelid=r1.oid) + JOIN pg_catalog.pg_attribute AS f1 ON (f1.attrelid=r1.oid AND (f1.attnum=c.conkey[1]'; + for ($i = 2; $i <= $rs->fields['nb']; $i++) { + $sql.= " OR f1.attnum=c.conkey[$i]"; + } + $sql.= ')) + JOIN pg_catalog.pg_namespace AS ns1 ON r1.relnamespace=ns1.oid + LEFT JOIN ( + pg_catalog.pg_class AS r2 JOIN pg_catalog.pg_namespace AS ns2 ON (r2.relnamespace=ns2.oid) + ) ON (c.confrelid=r2.oid) + LEFT JOIN pg_catalog.pg_attribute AS f2 ON + (f2.attrelid=r2.oid AND ((c.confkey[1]=f2.attnum AND c.conkey[1]=f1.attnum)'; + for ($i = 2; $i <= $rs->fields['nb']; $i++) + $sql.= " OR (c.confkey[$i]=f2.attnum AND c.conkey[$i]=f1.attnum)"; + + $sql .= sprintf(")) + WHERE + r1.relname = '%s' AND ns1.nspname='%s' + ORDER BY 1", $table, $c_schema); + + return $this->selectSet($sql); + } + + // Sequence functions + + /** + * Returns all sequences in the current database + * @return A recordset + */ + function getSequences($all = false) { + $c_schema = $this->_schema; + $this->clean($c_schema); + if ($all) { + // Exclude pg_catalog and information_schema tables + $sql = "SELECT n.nspname, c.relname AS seqname, u.usename AS seqowner + FROM pg_catalog.pg_class c, pg_catalog.pg_user u, pg_catalog.pg_namespace n + WHERE c.relowner=u.usesysid AND c.relnamespace=n.oid + AND c.relkind = 'S' + AND n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast') + ORDER BY nspname, seqname"; + } else { + $sql = "SELECT c.relname AS seqname, u.usename AS seqowner, pg_catalog.obj_description(c.oid, 'pg_class') AS seqcomment + FROM pg_catalog.pg_class c, pg_catalog.pg_user u, pg_catalog.pg_namespace n + WHERE c.relowner=u.usesysid AND c.relnamespace=n.oid + AND c.relkind = 'S' AND n.nspname='{$c_schema}' ORDER BY seqname"; + } + + return $this->selectSet( $sql ); + } + + // Function functions + + /** + * Returns all details for a particular function + * @param $func The name of the function to retrieve + * @return Function info + */ + function getFunction($function_oid) { + $this->clean($function_oid); + + $sql = " + SELECT + pc.oid AS prooid, + proname, + pg_catalog.pg_get_userbyid(proowner) AS proowner, + nspname as proschema, + lanname as prolanguage, + pg_catalog.format_type(prorettype, NULL) as proresult, + prosrc, + probin, + proretset, + proisstrict, + provolatile, + prosecdef, + pg_catalog.oidvectortypes(pc.proargtypes) AS proarguments, + pg_catalog.obj_description(pc.oid, 'pg_proc') AS procomment + FROM + pg_catalog.pg_proc pc, pg_catalog.pg_language pl, pg_catalog.pg_namespace n + WHERE + pc.oid = '$function_oid'::oid + AND pc.prolang = pl.oid + AND n.oid = pc.pronamespace + "; + + return $this->selectSet($sql); + } + + /** + * Returns a list of all casts in the database + * @return All casts + */ + function getCasts() { + global $conf; + + if ($conf['show_system']) + $where = ''; + else + $where = " + AND n1.nspname NOT LIKE 'pg\\\\_%' + AND n2.nspname NOT LIKE 'pg\\\\_%' + AND n3.nspname NOT LIKE 'pg\\\\_%' + "; + + $sql = " + SELECT + c.castsource::pg_catalog.regtype AS castsource, + c.casttarget::pg_catalog.regtype AS casttarget, + CASE WHEN c.castfunc=0 THEN NULL + ELSE c.castfunc::pg_catalog.regprocedure END AS castfunc, + c.castcontext, + obj_description(c.oid, 'pg_cast') as castcomment + FROM + (pg_catalog.pg_cast c LEFT JOIN pg_catalog.pg_proc p ON c.castfunc=p.oid JOIN pg_catalog.pg_namespace n3 ON p.pronamespace=n3.oid), + pg_catalog.pg_type t1, + pg_catalog.pg_type t2, + pg_catalog.pg_namespace n1, + pg_catalog.pg_namespace n2 + WHERE + c.castsource=t1.oid + AND c.casttarget=t2.oid + AND t1.typnamespace=n1.oid + AND t2.typnamespace=n2.oid + {$where} + ORDER BY 1, 2 + "; + + return $this->selectSet($sql); + } + + // Capabilities + + function hasAlterColumnType() { return false; } + function hasCreateFieldWithConstraints() { return false; } + function hasAlterDatabaseOwner() { return false; } + function hasAlterSchemaOwner() { return false; } + function hasFunctionAlterOwner() { return false; } + function hasNamedParams() { return false; } + function hasQueryCancel() { return false; } + function hasTablespaces() { return false; } + function hasMagicTypes() { return false; } +} +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres80.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres80.php new file mode 100644 index 00000000..1f29c1cf --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres80.php @@ -0,0 +1,354 @@ + 'CP866', + 'EUC_CN' => 'GB2312', + 'EUC_JP' => 'EUC-JP', + 'EUC_KR' => 'EUC-KR', + 'EUC_TW' => 'EUC-TW', + 'ISO_8859_5' => 'ISO-8859-5', + 'ISO_8859_6' => 'ISO-8859-6', + 'ISO_8859_7' => 'ISO-8859-7', + 'ISO_8859_8' => 'ISO-8859-8', + 'JOHAB' => 'CP1361', + 'KOI8' => 'KOI8-R', + 'LATIN1' => 'ISO-8859-1', + 'LATIN2' => 'ISO-8859-2', + 'LATIN3' => 'ISO-8859-3', + 'LATIN4' => 'ISO-8859-4', + // The following encoding map is a known error in PostgreSQL < 7.2 + // See the constructor for Postgres72. + 'LATIN5' => 'ISO-8859-5', + 'LATIN6' => 'ISO-8859-10', + 'LATIN7' => 'ISO-8859-13', + 'LATIN8' => 'ISO-8859-14', + 'LATIN9' => 'ISO-8859-15', + 'LATIN10' => 'ISO-8859-16', + 'SQL_ASCII' => 'US-ASCII', + 'TCVN' => 'CP1258', + 'UNICODE' => 'UTF-8', + 'WIN' => 'CP1251', + 'WIN874' => 'CP874', + 'WIN1256' => 'CP1256' + ); + + /** + * Constructor + * @param $conn The database connection + */ + function Postgres80($conn) { + $this->Postgres81($conn); + } + + // Help functions + + function getHelpPages() { + include_once('./help/PostgresDoc80.php'); + return $this->help_page; + } + + // Database functions + + /** + * Return all database available on the server + * @return A list of databases, sorted alphabetically + */ + function getDatabases($currentdatabase = NULL) { + global $conf, $misc; + + $server_info = $misc->getServerInfo(); + + if (isset($conf['owned_only']) && $conf['owned_only'] && !$this->isSuperUser()) { + $username = $server_info['username']; + $this->clean($username); + $clause = " AND pu.usename='{$username}'"; + } + else $clause = ''; + + if ($currentdatabase != NULL) { + $this->clean($currentdatabase); + $orderby = "ORDER BY pdb.datname = '{$currentdatabase}' DESC, pdb.datname"; + } + else + $orderby = "ORDER BY pdb.datname"; + + if (!$conf['show_system']) + $where = ' AND NOT pdb.datistemplate'; + else + $where = ' AND pdb.datallowconn'; + + $sql = "SELECT pdb.datname AS datname, pu.usename AS datowner, pg_encoding_to_char(encoding) AS datencoding, + (SELECT description FROM pg_description pd WHERE pdb.oid=pd.objoid) AS datcomment, + (SELECT spcname FROM pg_catalog.pg_tablespace pt WHERE pt.oid=pdb.dattablespace) AS tablespace + FROM pg_database pdb, pg_user pu + WHERE pdb.datdba = pu.usesysid + {$where} + {$clause} + {$orderby}"; + + return $this->selectSet($sql); + } + + // Schema functions + + /** + * Return all schemas in the current database. + * @return All schemas, sorted alphabetically + */ + function getSchemas() { + global $conf; + + if (!$conf['show_system']) { + $where = "WHERE nspname NOT LIKE 'pg@_%' ESCAPE '@' AND nspname != 'information_schema'"; + } + else $where = "WHERE nspname !~ '^pg_t(emp_[0-9]+|oast)$'"; + $sql = " + SELECT pn.nspname, pu.usename AS nspowner, + pg_catalog.obj_description(pn.oid, 'pg_namespace') AS nspcomment + FROM pg_catalog.pg_namespace pn + LEFT JOIN pg_catalog.pg_user pu ON (pn.nspowner = pu.usesysid) + {$where} + ORDER BY nspname"; + + return $this->selectSet($sql); + } + + /** + * Return all information relating to a schema + * @param $schema The name of the schema + * @return Schema information + */ + function getSchemaByName($schema) { + $this->clean($schema); + $sql = " + SELECT nspname, nspowner, u.usename AS ownername, nspacl, + pg_catalog.obj_description(pn.oid, 'pg_namespace') as nspcomment + FROM pg_catalog.pg_namespace pn + LEFT JOIN pg_shadow as u ON pn.nspowner = u.usesysid + WHERE nspname='{$schema}'"; + return $this->selectSet($sql); + } + + // Table functions + + /** + * Protected method which alter a table + * SHOULDN'T BE CALLED OUTSIDE OF A TRANSACTION + * @param $tblrs The table recordSet returned by getTable() + * @param $name The new name for the table + * @param $owner The new owner for the table + * @param $schema The new schema for the table + * @param $comment The comment on the table + * @param $tablespace The new tablespace for the table ('' means leave as is) + * @return 0 success + * @return -3 rename error + * @return -4 comment error + * @return -5 owner error + * @return -6 tablespace error + */ + protected + function _alterTable($tblrs, $name, $owner, $schema, $comment, $tablespace) { + + /* $schema not supported in pg80- */ + + // Comment + $status = $this->setComment('TABLE', '', $tblrs->fields['relname'], $comment); + if ($status != 0) return -4; + + // Owner + $this->fieldClean($owner); + $status = $this->alterTableOwner($tblrs, $owner); + if ($status != 0) return -5; + + // Tablespace + $this->fieldClean($tablespace); + $status = $this->alterTableTablespace($tblrs, $tablespace); + if ($status != 0) return -6; + + // Rename + $this->fieldClean($name); + $status = $this->alterTableName($tblrs, $name); + if ($status != 0) return -3; + + return 0; + } + + // View functions + + /** + * Protected method which alter a view + * SHOULDN'T BE CALLED OUTSIDE OF A TRANSACTION + * @param $vwrs The view recordSet returned by getView() + * @param $name The new name for the view + * @param $owner The new owner for the view + * @param $comment The comment on the view + * @return 0 success + * @return -3 rename error + * @return -4 comment error + * @return -5 owner error + */ + protected + function _alterView($vwrs, $name, $owner, $schema, $comment) { + + /* $schema not supported in pg80- */ + $this->fieldArrayClean($vwrs->fields); + + // Comment + if ($this->setComment('VIEW', $vwrs->fields['relname'], '', $comment) != 0) + return -4; + + // Owner + $this->fieldClean($owner); + $status = $this->alterViewOwner($vwrs, $owner); + if ($status != 0) return -5; + + // Rename + $this->fieldClean($name); + $status = $this->alterViewName($vwrs, $name); + if ($status != 0) return -3; + + return 0; + } + + // Sequence functions + + /** + * Protected method which alter a sequence + * SHOULDN'T BE CALLED OUTSIDE OF A TRANSACTION + * @param $seqrs The sequence recordSet returned by getSequence() + * @param $name The new name for the sequence + * @param $comment The comment on the sequence + * @param $owner The new owner for the sequence + * @param $schema The new schema for the sequence + * @param $increment The increment + * @param $minvalue The min value + * @param $maxvalue The max value + * @param $restartvalue The starting value + * @param $cachevalue The cache value + * @param $cycledvalue True if cycled, false otherwise + * @param $startvalue The sequence start value when issueing a restart + * @return 0 success + * @return -3 rename error + * @return -4 comment error + * @return -5 owner error + * @return -6 get sequence props error + * @return -7 schema error + */ + protected + function _alterSequence($seqrs, $name, $comment, $owner, $schema, $increment, + $minvalue, $maxvalue, $restartvalue, $cachevalue, $cycledvalue, $startvalue) { + + /* $schema not supported in pg80- */ + $this->fieldArrayClean($seqrs->fields); + + // Comment + $status = $this->setComment('SEQUENCE', $seqrs->fields['seqname'], '', $comment); + if ($status != 0) + return -4; + + // Owner + $this->fieldClean($owner); + $status = $this->alterSequenceOwner($seqrs, $owner); + if ($status != 0) + return -5; + + // Props + $this->clean($increment); + $this->clean($minvalue); + $this->clean($maxvalue); + $this->clean($restartvalue); + $this->clean($cachevalue); + $this->clean($cycledvalue); + $this->clean($startvalue); + $status = $this->alterSequenceProps($seqrs, $increment, $minvalue, + $maxvalue, $restartvalue, $cachevalue, $cycledvalue, null); + if ($status != 0) + return -6; + + // Rename + $this->fieldClean($name); + $status = $this->alterSequenceName($seqrs, $name); + if ($status != 0) + return -3; + + return 0; + } + + // Role, User/group functions + + /** + * Changes a user's password + * @param $username The username + * @param $password The new password + * @return 0 success + */ + function changePassword($username, $password) { + $enc = $this->_encryptPassword($username, $password); + $this->fieldClean($username); + $this->clean($enc); + + $sql = "ALTER USER \"{$username}\" WITH ENCRYPTED PASSWORD '{$enc}'"; + + return $this->execute($sql); + } + + // Aggregate functions + + /** + * Gets all information for an aggregate + * @param $name The name of the aggregate + * @param $basetype The input data type of the aggregate + * @return A recordset + */ + function getAggregate($name, $basetype) { + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($name); + $this->clean($basetype); + + $sql = " + SELECT p.proname, + CASE p.proargtypes[0] + WHEN 'pg_catalog.\"any\"'::pg_catalog.regtype THEN NULL + ELSE pg_catalog.format_type(p.proargtypes[0], NULL) + END AS proargtypes, a.aggtransfn, format_type(a.aggtranstype, NULL) AS aggstype, + a.aggfinalfn, a.agginitval, u.usename, pg_catalog.obj_description(p.oid, 'pg_proc') AS aggrcomment + FROM pg_catalog.pg_proc p, pg_catalog.pg_namespace n, pg_catalog.pg_user u, pg_catalog.pg_aggregate a + WHERE n.oid = p.pronamespace AND p.proowner=u.usesysid AND p.oid=a.aggfnoid + AND p.proisagg AND n.nspname='{$c_schema}' + AND p.proname='{$name}' + AND CASE p.proargtypes[0] + WHEN 'pg_catalog.\"any\"'::pg_catalog.regtype THEN '' + ELSE pg_catalog.format_type(p.proargtypes[0], NULL) + END ='{$basetype}'"; + + return $this->selectSet($sql); + } + + // Capabilities + + function hasAggregateSortOp() { return false; } + function hasAlterTableSchema() { return false; } + function hasAutovacuum() { return false; } + function hasDisableTriggers() { return false; } + function hasFunctionAlterSchema() { return false; } + function hasPreparedXacts() { return false; } + function hasRoles() { return false; } + function hasAlterSequenceSchema() { return false; } + function hasServerAdminFuncs() { return false; } +} +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres81.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres81.php new file mode 100644 index 00000000..70d40b82 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres81.php @@ -0,0 +1,296 @@ + array('SELECT', 'INSERT', 'UPDATE', 'DELETE', 'RULE', 'REFERENCES', 'TRIGGER', 'ALL PRIVILEGES'), + 'view' => array('SELECT', 'INSERT', 'UPDATE', 'DELETE', 'RULE', 'REFERENCES', 'TRIGGER', 'ALL PRIVILEGES'), + 'sequence' => array('SELECT', 'UPDATE', 'ALL PRIVILEGES'), + 'database' => array('CREATE', 'TEMPORARY', 'ALL PRIVILEGES'), + 'function' => array('EXECUTE', 'ALL PRIVILEGES'), + 'language' => array('USAGE', 'ALL PRIVILEGES'), + 'schema' => array('CREATE', 'USAGE', 'ALL PRIVILEGES'), + 'tablespace' => array('CREATE', 'ALL PRIVILEGES') + ); + // List of characters in acl lists and the privileges they + // refer to. + var $privmap = array( + 'r' => 'SELECT', + 'w' => 'UPDATE', + 'a' => 'INSERT', + 'd' => 'DELETE', + 'R' => 'RULE', + 'x' => 'REFERENCES', + 't' => 'TRIGGER', + 'X' => 'EXECUTE', + 'U' => 'USAGE', + 'C' => 'CREATE', + 'T' => 'TEMPORARY' + ); + // Array of allowed index types + var $typIndexes = array('BTREE', 'RTREE', 'GIST', 'HASH'); + + /** + * Constructor + * @param $conn The database connection + */ + function Postgres81($conn) { + $this->Postgres82($conn); + } + + // Help functions + + function getHelpPages() { + include_once('./help/PostgresDoc81.php'); + return $this->help_page; + } + + // Database functions + + /** + * Returns all databases available on the server + * @return A list of databases, sorted alphabetically + */ + function getDatabases($currentdatabase = NULL) { + global $conf, $misc; + + $server_info = $misc->getServerInfo(); + + if (isset($conf['owned_only']) && $conf['owned_only'] && !$this->isSuperUser()) { + $username = $server_info['username']; + $this->clean($username); + $clause = " AND pr.rolname='{$username}'"; + } + else $clause = ''; + + if ($currentdatabase != NULL) { + $this->clean($currentdatabase); + $orderby = "ORDER BY pdb.datname = '{$currentdatabase}' DESC, pdb.datname"; + } + else + $orderby = "ORDER BY pdb.datname"; + + if (!$conf['show_system']) + $where = ' AND NOT pdb.datistemplate'; + else + $where = ' AND pdb.datallowconn'; + + $sql = "SELECT pdb.datname AS datname, pr.rolname AS datowner, pg_encoding_to_char(encoding) AS datencoding, + (SELECT description FROM pg_catalog.pg_description pd WHERE pdb.oid=pd.objoid) AS datcomment, + (SELECT spcname FROM pg_catalog.pg_tablespace pt WHERE pt.oid=pdb.dattablespace) AS tablespace, + pg_catalog.pg_database_size(pdb.oid) as dbsize + FROM pg_catalog.pg_database pdb LEFT JOIN pg_catalog.pg_roles pr ON (pdb.datdba = pr.oid) + WHERE true + {$where} + {$clause} + {$orderby}"; + + return $this->selectSet($sql); + } + + /** + * Alters a database + * the multiple return vals are for postgres 8+ which support more functionality in alter database + * @param $dbName The name of the database + * @param $newName new name for the database + * @param $newOwner The new owner for the database + * @return 0 success + * @return -1 transaction error + * @return -2 owner error + * @return -3 rename error + */ + function alterDatabase($dbName, $newName, $newOwner = '', $comment = '') { + $this->clean($dbName); + $this->clean($newName); + $this->clean($newOwner); + //ignore $comment, not supported pre 8.2 + + $status = $this->beginTransaction(); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + + if ($dbName != $newName) { + $status = $this->alterDatabaseRename($dbName, $newName); + if ($status != 0) { + $this->rollbackTransaction(); + return -3; + } + } + + $status = $this->alterDatabaseOwner($newName, $newOwner); + if ($status != 0) { + $this->rollbackTransaction(); + return -2; + } + return $this->endTransaction(); + } + + // Autovacuum functions + + function saveAutovacuum($table, $vacenabled, $vacthreshold, $vacscalefactor, + $anathresold, $anascalefactor, $vaccostdelay, $vaccostlimit) + { + $defaults = $this->getAutovacuum(); + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($table); + + $rs = $this->selectSet(" + SELECT c.oid + FROM pg_catalog.pg_class AS c + LEFT JOIN pg_catalog.pg_namespace AS n ON (n.oid=c.relnamespace) + WHERE + c.relname = '{$table}' AND n.nspname = '{$c_schema}' + "); + + if ($rs->EOF) + return -1; + + $toid = $rs->fields('oid'); + unset ($rs); + + if (empty($_POST['autovacuum_vacuum_threshold'])) + $_POST['autovacuum_vacuum_threshold'] = $defaults['autovacuum_vacuum_threshold']; + + if (empty($_POST['autovacuum_vacuum_scale_factor'])) + $_POST['autovacuum_vacuum_scale_factor'] = $defaults['autovacuum_vacuum_scale_factor']; + + if (empty($_POST['autovacuum_analyze_threshold'])) + $_POST['autovacuum_analyze_threshold'] = $defaults['autovacuum_analyze_threshold']; + + if (empty($_POST['autovacuum_analyze_scale_factor'])) + $_POST['autovacuum_analyze_scale_factor'] = $defaults['autovacuum_analyze_scale_factor']; + + if (empty($_POST['autovacuum_vacuum_cost_delay'])) + $_POST['autovacuum_vacuum_cost_delay'] = $defaults['autovacuum_vacuum_cost_delay']; + + if (empty($_POST['autovacuum_vacuum_cost_limit'])) + $_POST['autovacuum_vacuum_cost_limit'] = $defaults['autovacuum_vacuum_cost_limit']; + + $rs = $this->selectSet("SELECT vacrelid + FROM \"pg_catalog\".\"pg_autovacuum\" + WHERE vacrelid = {$toid};"); + + $status = -1; // ini + if ($rs->recordCount() and ($rs->fields['vacrelid'] == $toid)) { + // table exists in pg_autovacuum, UPDATE + $sql = sprintf("UPDATE \"pg_catalog\".\"pg_autovacuum\" SET + enabled = '%s', + vac_base_thresh = %s, + vac_scale_factor = %s, + anl_base_thresh = %s, + anl_scale_factor = %s, + vac_cost_delay = %s, + vac_cost_limit = %s + WHERE vacrelid = {$toid}; + ", + ($_POST['autovacuum_enabled'] == 'on')? 't':'f', + $_POST['autovacuum_vacuum_threshold'], + $_POST['autovacuum_vacuum_scale_factor'], + $_POST['autovacuum_analyze_threshold'], + $_POST['autovacuum_analyze_scale_factor'], + $_POST['autovacuum_vacuum_cost_delay'], + $_POST['autovacuum_vacuum_cost_limit'] + ); + $status = $this->execute($sql); + } + else { + // table doesn't exists in pg_autovacuum, INSERT + $sql = sprintf("INSERT INTO \"pg_catalog\".\"pg_autovacuum\" + VALUES (%s, '%s', %s, %s, %s, %s, %s, %s)", + $toid, + ($_POST['autovacuum_enabled'] == 'on')? 't':'f', + $_POST['autovacuum_vacuum_threshold'], + $_POST['autovacuum_vacuum_scale_factor'], + $_POST['autovacuum_analyze_threshold'], + $_POST['autovacuum_analyze_scale_factor'], + $_POST['autovacuum_vacuum_cost_delay'], + $_POST['autovacuum_vacuum_cost_limit'] + ); + $status = $this->execute($sql); + } + + return $status; + } + + /** + * Returns all available process information. + * @param $database (optional) Find only connections to specified database + * @return A recordset + */ + function getProcesses($database = null) { + if ($database === null) + $sql = "SELECT datname, usename, procpid AS pid, current_query AS query, query_start, + case when (select count(*) from pg_locks where pid=pg_stat_activity.procpid and granted is false) > 0 then 't' else 'f' end as waiting + FROM pg_catalog.pg_stat_activity + ORDER BY datname, usename, procpid"; + else { + $this->clean($database); + $sql = "SELECT datname, usename, procpid AS pid, current_query AS query, query_start + case when (select count(*) from pg_locks where pid=pg_stat_activity.procpid and granted is false) > 0 then 't' else 'f' end as waiting + FROM pg_catalog.pg_stat_activity + WHERE datname='{$database}' + ORDER BY usename, procpid"; + } + + $rc = $this->selectSet($sql); + + return $rc; + } + + // Tablespace functions + + /** + * Retrieves a tablespace's information + * @return A recordset + */ + function getTablespace($spcname) { + $this->clean($spcname); + + $sql = "SELECT spcname, pg_catalog.pg_get_userbyid(spcowner) AS spcowner, spclocation + FROM pg_catalog.pg_tablespace WHERE spcname='{$spcname}'"; + + return $this->selectSet($sql); + } + + /** + * Retrieves information for all tablespaces + * @param $all Include all tablespaces (necessary when moving objects back to the default space) + * @return A recordset + */ + function getTablespaces($all = false) { + global $conf; + + $sql = "SELECT spcname, pg_catalog.pg_get_userbyid(spcowner) AS spcowner, spclocation + FROM pg_catalog.pg_tablespace"; + + if (!$conf['show_system'] && !$all) { + $sql .= ' WHERE spcname NOT LIKE $$pg\_%$$'; + } + + $sql .= " ORDER BY spcname"; + + return $this->selectSet($sql); + } + + // Capabilities + + function hasCreateTableLikeWithConstraints() {return false;} + function hasSharedComments() {return false;} + function hasConcurrentIndexBuild() {return false;} +} + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres82.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres82.php new file mode 100644 index 00000000..e30cd673 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres82.php @@ -0,0 +1,359 @@ + 'i', '!=' => 'i', '<' => 'i', '>' => 'i', '<=' => 'i', '>=' => 'i', '<<' => 'i', '>>' => 'i', '<<=' => 'i', '>>=' => 'i', + 'LIKE' => 'i', 'NOT LIKE' => 'i', 'ILIKE' => 'i', 'NOT ILIKE' => 'i', 'SIMILAR TO' => 'i', + 'NOT SIMILAR TO' => 'i', '~' => 'i', '!~' => 'i', '~*' => 'i', '!~*' => 'i', + 'IS NULL' => 'p', 'IS NOT NULL' => 'p', 'IN' => 'x', 'NOT IN' => 'x'); + + /** + * Constructor + * @param $conn The database connection + */ + function Postgres82($conn) { + $this->Postgres($conn); + } + + // Help functions + + function getHelpPages() { + include_once('./help/PostgresDoc82.php'); + return $this->help_page; + } + + // Database functions + + /** + * Returns table locks information in the current database + * @return A recordset + */ + function getLocks() { + global $conf; + + if (!$conf['show_system']) + $where = 'AND pn.nspname NOT LIKE $$pg\_%$$'; + else + $where = "AND nspname !~ '^pg_t(emp_[0-9]+|oast)$'"; + + $sql = "SELECT pn.nspname, pc.relname AS tablename, pl.transaction, pl.pid, pl.mode, pl.granted + FROM pg_catalog.pg_locks pl, pg_catalog.pg_class pc, pg_catalog.pg_namespace pn + WHERE pl.relation = pc.oid AND pc.relnamespace=pn.oid {$where} + ORDER BY nspname,tablename"; + + return $this->selectSet($sql); + } + + // Sequence functions + + /** + * Rename a sequence + * @param $seqrs The sequence RecordSet returned by getSequence() + * @param $name The new name for the sequence + * @return 0 success + */ + function alterSequenceName($seqrs, $name) { + /* vars are cleaned in _alterSequence */ + if (!empty($name) && ($seqrs->fields['seqname'] != $name)) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $sql = "ALTER TABLE \"{$f_schema}\".\"{$seqrs->fields['seqname']}\" RENAME TO \"{$name}\""; + $status = $this->execute($sql); + if ($status == 0) + $seqrs->fields['seqname'] = $name; + else + return $status; + } + return 0; + } + + // View functions + + /** + * Rename a view + * @param $vwrs The view recordSet returned by getView() + * @param $name The new view's name + * @return -1 Failed + * @return 0 success + */ + function alterViewName($vwrs, $name) { + // Rename (only if name has changed) + /* $vwrs and $name are cleaned in _alterView */ + if (!empty($name) && ($name != $vwrs->fields['relname'])) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $sql = "ALTER TABLE \"{$f_schema}\".\"{$vwrs->fields['relname']}\" RENAME TO \"{$name}\""; + $status = $this->execute($sql); + if ($status == 0) + $vwrs->fields['relname'] = $name; + else + return $status; + } + return 0; + } + + // Trigger functions + + /** + * Grabs a list of triggers on a table + * @param $table The name of a table whose triggers to retrieve + * @return A recordset + */ + function getTriggers($table = '') { + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($table); + + $sql = "SELECT + t.tgname, pg_catalog.pg_get_triggerdef(t.oid) AS tgdef, t.tgenabled, p.oid AS prooid, + p.proname || ' (' || pg_catalog.oidvectortypes(p.proargtypes) || ')' AS proproto, + ns.nspname AS pronamespace + FROM pg_catalog.pg_trigger t, pg_catalog.pg_proc p, pg_catalog.pg_namespace ns + WHERE t.tgrelid = (SELECT oid FROM pg_catalog.pg_class WHERE relname='{$table}' + AND relnamespace=(SELECT oid FROM pg_catalog.pg_namespace WHERE nspname='{$c_schema}')) + AND (NOT tgisconstraint OR NOT EXISTS + (SELECT 1 FROM pg_catalog.pg_depend d JOIN pg_catalog.pg_constraint c + ON (d.refclassid = c.tableoid AND d.refobjid = c.oid) + WHERE d.classid = t.tableoid AND d.objid = t.oid AND d.deptype = 'i' AND c.contype = 'f')) + AND p.oid=t.tgfoid + AND p.pronamespace = ns.oid"; + + return $this->selectSet($sql); + } + + // Function functions + + /** + * Returns all details for a particular function + * @param $func The name of the function to retrieve + * @return Function info + */ + function getFunction($function_oid) { + $this->clean($function_oid); + + $sql = "SELECT + pc.oid AS prooid, + proname, + pg_catalog.pg_get_userbyid(proowner) AS proowner, + nspname as proschema, + lanname as prolanguage, + pg_catalog.format_type(prorettype, NULL) as proresult, + prosrc, + probin, + proretset, + proisstrict, + provolatile, + prosecdef, + pg_catalog.oidvectortypes(pc.proargtypes) AS proarguments, + proargnames AS proargnames, + pg_catalog.obj_description(pc.oid, 'pg_proc') AS procomment + FROM + pg_catalog.pg_proc pc, pg_catalog.pg_language pl, pg_catalog.pg_namespace pn + WHERE + pc.oid = '{$function_oid}'::oid + AND pc.prolang = pl.oid + AND pc.pronamespace = pn.oid + "; + + return $this->selectSet($sql); + } + + /** + * Creates a new function. + * @param $funcname The name of the function to create + * @param $args A comma separated string of types + * @param $returns The return type + * @param $definition The definition for the new function + * @param $language The language the function is written for + * @param $flags An array of optional flags + * @param $setof True if it returns a set, false otherwise + * @param $rows number of rows planner should estimate will be returned + * @param $cost cost the planner should use in the function execution step + * @param $comment The comment on the function + * @param $replace (optional) True if OR REPLACE, false for normal + * @return 0 success + * @return -1 create function failed + * @return -4 set comment failed + */ + function createFunction($funcname, $args, $returns, $definition, $language, $flags, $setof, $cost, $rows, $comment, $replace = false) { + + // Begin a transaction + $status = $this->beginTransaction(); + if ($status != 0) { + $this->rollbackTransaction(); + return -1; + } + + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($funcname); + $this->clean($args); + $this->fieldClean($language); + $this->arrayClean($flags); + + $sql = "CREATE"; + if ($replace) $sql .= " OR REPLACE"; + $sql .= " FUNCTION \"{$f_schema}\".\"{$funcname}\" ("; + + if ($args != '') + $sql .= $args; + + // For some reason, the returns field cannot have quotes... + $sql .= ") RETURNS "; + if ($setof) $sql .= "SETOF "; + $sql .= "{$returns} AS "; + + if (is_array($definition)) { + $this->arrayClean($definition); + $sql .= "'" . $definition[0] . "'"; + if ($definition[1]) { + $sql .= ",'" . $definition[1] . "'"; + } + } else { + $this->clean($definition); + $sql .= "'" . $definition . "'"; + } + + $sql .= " LANGUAGE \"{$language}\""; + + // Add flags + foreach ($flags as $v) { + // Skip default flags + if ($v == '') continue; + else $sql .= "\n{$v}"; + } + + $status = $this->execute($sql); + if ($status != 0) { + $this->rollbackTransaction(); + return -3; + } + + /* set the comment */ + $status = $this->setComment('FUNCTION', "\"{$funcname}\"({$args})", null, $comment); + if ($status != 0) { + $this->rollbackTransaction(); + return -4; + } + + return $this->endTransaction(); + } + + // Index functions + + /** + * Clusters an index + * @param $index The name of the index + * @param $table The table the index is on + * @return 0 success + */ + function clusterIndex($table='', $index='') { + + $sql = 'CLUSTER'; + + // We don't bother with a transaction here, as there's no point rolling + // back an expensive cluster if a cheap analyze fails for whatever reason + + if (!empty($table)) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $this->fieldClean($table); + + if (!empty($index)) { + $this->fieldClean($index); + $sql .= " \"{$index}\" ON \"{$f_schema}\".\"{$table}\""; + } + else { + $sql .= " \"{$f_schema}\".\"{$table}\""; + } + } + + return $this->execute($sql); + } + + // Operator functions + + /** + * Returns all details for a particular operator + * @param $operator_oid The oid of the operator + * @return Function info + */ + function getOperator($operator_oid) { + $this->clean($operator_oid); + + $sql = " + SELECT + po.oid, po.oprname, + oprleft::pg_catalog.regtype AS oprleftname, + oprright::pg_catalog.regtype AS oprrightname, + oprresult::pg_catalog.regtype AS resultname, + po.oprcanhash, + oprcom::pg_catalog.regoperator AS oprcom, + oprnegate::pg_catalog.regoperator AS oprnegate, + oprlsortop::pg_catalog.regoperator AS oprlsortop, + oprrsortop::pg_catalog.regoperator AS oprrsortop, + oprltcmpop::pg_catalog.regoperator AS oprltcmpop, + oprgtcmpop::pg_catalog.regoperator AS oprgtcmpop, + po.oprcode::pg_catalog.regproc AS oprcode, + po.oprrest::pg_catalog.regproc AS oprrest, + po.oprjoin::pg_catalog.regproc AS oprjoin + FROM + pg_catalog.pg_operator po + WHERE + po.oid='{$operator_oid}' + "; + + return $this->selectSet($sql); + } + + // Operator Class functions + + /** + * Gets all opclasses + * @return A recordset + */ + function getOpClasses() { + $c_schema = $this->_schema; + $this->clean($c_schema); + $sql = " + SELECT + pa.amname, + po.opcname, + po.opcintype::pg_catalog.regtype AS opcintype, + po.opcdefault, + pg_catalog.obj_description(po.oid, 'pg_opclass') AS opccomment + FROM + pg_catalog.pg_opclass po, pg_catalog.pg_am pa, pg_catalog.pg_namespace pn + WHERE + po.opcamid=pa.oid + AND po.opcnamespace=pn.oid + AND pn.nspname='{$c_schema}' + ORDER BY 1,2 + "; + + return $this->selectSet($sql); + } + + // Capabilities + + function hasCreateTableLikeWithIndexes() {return false;} + function hasEnumTypes() {return false;} + function hasFTS() {return false;} + function hasFunctionCosting() {return false;} + function hasFunctionGUC() {return false;} + function hasVirtualTransactionId() {return false;} + +} + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres83.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres83.php new file mode 100644 index 00000000..ce0416b9 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres83.php @@ -0,0 +1,363 @@ + array('SELECT', 'INSERT', 'UPDATE', 'DELETE', 'REFERENCES', 'TRIGGER', 'ALL PRIVILEGES'), + 'view' => array('SELECT', 'INSERT', 'UPDATE', 'DELETE', 'REFERENCES', 'TRIGGER', 'ALL PRIVILEGES'), + 'sequence' => array('SELECT', 'UPDATE', 'ALL PRIVILEGES'), + 'database' => array('CREATE', 'TEMPORARY', 'CONNECT', 'ALL PRIVILEGES'), + 'function' => array('EXECUTE', 'ALL PRIVILEGES'), + 'language' => array('USAGE', 'ALL PRIVILEGES'), + 'schema' => array('CREATE', 'USAGE', 'ALL PRIVILEGES'), + 'tablespace' => array('CREATE', 'ALL PRIVILEGES') + ); + // List of characters in acl lists and the privileges they + // refer to. + var $privmap = array( + 'r' => 'SELECT', + 'w' => 'UPDATE', + 'a' => 'INSERT', + 'd' => 'DELETE', + 'R' => 'RULE', + 'x' => 'REFERENCES', + 't' => 'TRIGGER', + 'X' => 'EXECUTE', + 'U' => 'USAGE', + 'C' => 'CREATE', + 'T' => 'TEMPORARY', + 'c' => 'CONNECT' + ); + + /** + * Constructor + * @param $conn The database connection + */ + function Postgres83($conn) { + $this->Postgres($conn); + } + + // Help functions + + function getHelpPages() { + include_once('./help/PostgresDoc83.php'); + return $this->help_page; + } + + // Databse functions + + /** + * Return all database available on the server + * @param $currentdatabase database name that should be on top of the resultset + * + * @return A list of databases, sorted alphabetically + */ + function getDatabases($currentdatabase = NULL) { + global $conf, $misc; + + $server_info = $misc->getServerInfo(); + + if (isset($conf['owned_only']) && $conf['owned_only'] && !$this->isSuperUser()) { + $username = $server_info['username']; + $this->clean($username); + $clause = " AND pr.rolname='{$username}'"; + } + else $clause = ''; + + if ($currentdatabase != NULL) { + $this->clean($currentdatabase); + $orderby = "ORDER BY pdb.datname = '{$currentdatabase}' DESC, pdb.datname"; + } + else + $orderby = "ORDER BY pdb.datname"; + + if (!$conf['show_system']) + $where = ' AND NOT pdb.datistemplate'; + else + $where = ' AND pdb.datallowconn'; + + $sql = " + SELECT pdb.datname AS datname, pr.rolname AS datowner, pg_encoding_to_char(encoding) AS datencoding, + (SELECT description FROM pg_catalog.pg_shdescription pd WHERE pdb.oid=pd.objoid AND pd.classoid='pg_database'::regclass) AS datcomment, + (SELECT spcname FROM pg_catalog.pg_tablespace pt WHERE pt.oid=pdb.dattablespace) AS tablespace, + pg_catalog.pg_database_size(pdb.oid) as dbsize + FROM pg_catalog.pg_database pdb LEFT JOIN pg_catalog.pg_roles pr ON (pdb.datdba = pr.oid) + WHERE true + {$where} + {$clause} + {$orderby}"; + + return $this->selectSet($sql); + } + + // Administration functions + + /** + * Returns all available autovacuum per table information. + * @return A recordset + */ + function getTableAutovacuum($table='') { + $sql = ''; + + if ($table !== '') { + $this->clean($table); + $c_schema = $this->_schema; + $this->clean($c_schema); + + $sql = " + SELECT vacrelid, nspname, relname, + CASE enabled + WHEN 't' THEN 'on' + ELSE 'off' + END AS autovacuum_enabled, vac_base_thresh AS autovacuum_vacuum_threshold, + vac_scale_factor AS autovacuum_vacuum_scale_factor, anl_base_thresh AS autovacuum_analyze_threshold, + anl_scale_factor AS autovacuum_analyze_scale_factor, vac_cost_delay AS autovacuum_vacuum_cost_delay, + vac_cost_limit AS autovacuum_vacuum_cost_limit + FROM pg_autovacuum AS a + join pg_class AS c on (c.oid=a.vacrelid) + join pg_namespace AS n on (n.oid=c.relnamespace) + WHERE c.relname = '{$table}' AND n.nspname = '{$c_schema}' + ORDER BY nspname, relname + "; + } + else { + $sql = " + SELECT vacrelid, nspname, relname, + CASE enabled + WHEN 't' THEN 'on' + ELSE 'off' + END AS autovacuum_enabled, vac_base_thresh AS autovacuum_vacuum_threshold, + vac_scale_factor AS autovacuum_vacuum_scale_factor, anl_base_thresh AS autovacuum_analyze_threshold, + anl_scale_factor AS autovacuum_analyze_scale_factor, vac_cost_delay AS autovacuum_vacuum_cost_delay, + vac_cost_limit AS autovacuum_vacuum_cost_limit + FROM pg_autovacuum AS a + join pg_class AS c on (c.oid=a.vacrelid) + join pg_namespace AS n on (n.oid=c.relnamespace) + ORDER BY nspname, relname + "; + } + + return $this->selectSet($sql); + } + + function saveAutovacuum($table, $vacenabled, $vacthreshold, $vacscalefactor, $anathresold, + $anascalefactor, $vaccostdelay, $vaccostlimit) + { + $defaults = $this->getAutovacuum(); + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($table); + + $rs = $this->selectSet(" + SELECT c.oid + FROM pg_catalog.pg_class AS c + LEFT JOIN pg_catalog.pg_namespace AS n ON (n.oid=c.relnamespace) + WHERE + c.relname = '{$table}' AND n.nspname = '{$c_schema}' + "); + + if ($rs->EOF) + return -1; + + $toid = $rs->fields('oid'); + unset ($rs); + + if (empty($_POST['autovacuum_vacuum_threshold'])) + $_POST['autovacuum_vacuum_threshold'] = $defaults['autovacuum_vacuum_threshold']; + + if (empty($_POST['autovacuum_vacuum_scale_factor'])) + $_POST['autovacuum_vacuum_scale_factor'] = $defaults['autovacuum_vacuum_scale_factor']; + + if (empty($_POST['autovacuum_analyze_threshold'])) + $_POST['autovacuum_analyze_threshold'] = $defaults['autovacuum_analyze_threshold']; + + if (empty($_POST['autovacuum_analyze_scale_factor'])) + $_POST['autovacuum_analyze_scale_factor'] = $defaults['autovacuum_analyze_scale_factor']; + + if (empty($_POST['autovacuum_vacuum_cost_delay'])) + $_POST['autovacuum_vacuum_cost_delay'] = $defaults['autovacuum_vacuum_cost_delay']; + + if (empty($_POST['autovacuum_vacuum_cost_limit'])) + $_POST['autovacuum_vacuum_cost_limit'] = $defaults['autovacuum_vacuum_cost_limit']; + + if (empty($_POST['vacuum_freeze_min_age'])) + $_POST['vacuum_freeze_min_age'] = $defaults['vacuum_freeze_min_age']; + + if (empty($_POST['autovacuum_freeze_max_age'])) + $_POST['autovacuum_freeze_max_age'] = $defaults['autovacuum_freeze_max_age']; + + + $rs = $this->selectSet("SELECT vacrelid + FROM \"pg_catalog\".\"pg_autovacuum\" + WHERE vacrelid = {$toid};"); + + $status = -1; // ini + if ($rs->recordCount() and ($rs->fields['vacrelid'] == $toid)) { + // table exists in pg_autovacuum, UPDATE + $sql = sprintf("UPDATE \"pg_catalog\".\"pg_autovacuum\" SET + enabled = '%s', + vac_base_thresh = %s, + vac_scale_factor = %s, + anl_base_thresh = %s, + anl_scale_factor = %s, + vac_cost_delay = %s, + vac_cost_limit = %s, + freeze_min_age = %s, + freeze_max_age = %s + WHERE vacrelid = {$toid}; + ", + ($_POST['autovacuum_enabled'] == 'on')? 't':'f', + $_POST['autovacuum_vacuum_threshold'], + $_POST['autovacuum_vacuum_scale_factor'], + $_POST['autovacuum_analyze_threshold'], + $_POST['autovacuum_analyze_scale_factor'], + $_POST['autovacuum_vacuum_cost_delay'], + $_POST['autovacuum_vacuum_cost_limit'], + $_POST['vacuum_freeze_min_age'], + $_POST['autovacuum_freeze_max_age'] + ); + $status = $this->execute($sql); + } + else { + // table doesn't exists in pg_autovacuum, INSERT + $sql = sprintf("INSERT INTO \"pg_catalog\".\"pg_autovacuum\" + VALUES (%s, '%s', %s, %s, %s, %s, %s, %s, %s, %s )", + $toid, + ($_POST['autovacuum_enabled'] == 'on')? 't':'f', + $_POST['autovacuum_vacuum_threshold'], + $_POST['autovacuum_vacuum_scale_factor'], + $_POST['autovacuum_analyze_threshold'], + $_POST['autovacuum_analyze_scale_factor'], + $_POST['autovacuum_vacuum_cost_delay'], + $_POST['autovacuum_vacuum_cost_limit'], + $_POST['vacuum_freeze_min_age'], + $_POST['autovacuum_freeze_max_age'] + ); + $status = $this->execute($sql); + } + + return $status; + } + + function dropAutovacuum($table) { + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($table); + + $rs = $this->selectSet(" + SELECT c.oid + FROM pg_catalog.pg_class AS c + LEFT JOIN pg_catalog.pg_namespace AS n ON (n.oid=c.relnamespace) + WHERE + c.relname = '{$table}' AND n.nspname = '{$c_schema}' + "); + + return $this->deleteRow('pg_autovacuum', array('vacrelid' => $rs->fields['oid']), 'pg_catalog'); + } + + // Sequence functions + + /** + * Alter a sequence's properties + * @param $seqrs The sequence RecordSet returned by getSequence() + * @param $increment The sequence incremental value + * @param $minvalue The sequence minimum value + * @param $maxvalue The sequence maximum value + * @param $restartvalue The sequence current value + * @param $cachevalue The sequence cache value + * @param $cycledvalue Sequence can cycle ? + * @param $startvalue The sequence start value when issueing a restart (ignored) + * @return 0 success + */ + function alterSequenceProps($seqrs, $increment, $minvalue, $maxvalue, + $restartvalue, $cachevalue, $cycledvalue, $startvalue) { + + $sql = ''; + /* vars are cleaned in _alterSequence */ + if (!empty($increment) && ($increment != $seqrs->fields['increment_by'])) $sql .= " INCREMENT {$increment}"; + if (!empty($minvalue) && ($minvalue != $seqrs->fields['min_value'])) $sql .= " MINVALUE {$minvalue}"; + if (!empty($maxvalue) && ($maxvalue != $seqrs->fields['max_value'])) $sql .= " MAXVALUE {$maxvalue}"; + if (!empty($restartvalue) && ($restartvalue != $seqrs->fields['last_value'])) $sql .= " RESTART {$restartvalue}"; + if (!empty($cachevalue) && ($cachevalue != $seqrs->fields['cache_value'])) $sql .= " CACHE {$cachevalue}"; + // toggle cycle yes/no + if (!is_null($cycledvalue)) $sql .= (!$cycledvalue ? ' NO ' : '') . " CYCLE"; + if ($sql != '') { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $sql = "ALTER SEQUENCE \"{$f_schema}\".\"{$seqrs->fields['seqname']}\" {$sql}"; + return $this->execute($sql); + } + return 0; + } + + /** + * Alter a sequence's owner + * @param $seqrs The sequence RecordSet returned by getSequence() + * @param $name The new owner for the sequence + * @return 0 success + */ + function alterSequenceOwner($seqrs, $owner) { + // If owner has been changed, then do the alteration. We are + // careful to avoid this generally as changing owner is a + // superuser only function. + /* vars are cleaned in _alterSequence */ + if (!empty($owner) && ($seqrs->fields['seqowner'] != $owner)) { + $f_schema = $this->_schema; + $this->fieldClean($f_schema); + $sql = "ALTER TABLE \"{$f_schema}\".\"{$seqrs->fields['seqname']}\" OWNER TO \"{$owner}\""; + return $this->execute($sql); + } + return 0; + } + + // Function functions + + /** + * Returns all details for a particular function + * @param $func The name of the function to retrieve + * @return Function info + */ + function getFunction($function_oid) { + $this->clean($function_oid); + + $sql = " + SELECT + pc.oid AS prooid, proname, pg_catalog.pg_get_userbyid(proowner) AS proowner, + nspname as proschema, lanname as prolanguage, procost, prorows, + pg_catalog.format_type(prorettype, NULL) as proresult, prosrc, + probin, proretset, proisstrict, provolatile, prosecdef, + pg_catalog.oidvectortypes(pc.proargtypes) AS proarguments, + proargnames AS proargnames, + pg_catalog.obj_description(pc.oid, 'pg_proc') AS procomment, + proconfig + FROM + pg_catalog.pg_proc pc, pg_catalog.pg_language pl, + pg_catalog.pg_namespace pn + WHERE + pc.oid = '{$function_oid}'::oid AND pc.prolang = pl.oid + AND pc.pronamespace = pn.oid + "; + + return $this->selectSet($sql); + } + + + // Capabilities + function hasQueryKill() { return false; } + function hasDatabaseCollation() { return false; } + function hasAlterSequenceStart() { return false; } +} + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres84.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres84.php new file mode 100644 index 00000000..bc2b2b34 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres84.php @@ -0,0 +1,231 @@ + array('SELECT', 'INSERT', 'UPDATE', 'DELETE', 'REFERENCES', 'TRIGGER', 'ALL PRIVILEGES'), + 'view' => array('SELECT', 'INSERT', 'UPDATE', 'DELETE', 'REFERENCES', 'TRIGGER', 'ALL PRIVILEGES'), + 'sequence' => array('SELECT', 'UPDATE', 'ALL PRIVILEGES'), + 'database' => array('CREATE', 'TEMPORARY', 'CONNECT', 'ALL PRIVILEGES'), + 'function' => array('EXECUTE', 'ALL PRIVILEGES'), + 'language' => array('USAGE', 'ALL PRIVILEGES'), + 'schema' => array('CREATE', 'USAGE', 'ALL PRIVILEGES'), + 'tablespace' => array('CREATE', 'ALL PRIVILEGES'), + 'column' => array('SELECT', 'INSERT', 'UPDATE', 'REFERENCES','ALL PRIVILEGES') + ); + + /** + * Constructor + * @param $conn The database connection + */ + function Postgres84($conn) { + $this->Postgres($conn); + } + + // Help functions + + function getHelpPages() { + include_once('./help/PostgresDoc84.php'); + return $this->help_page; + } + + // Database functions + + /** + * Grabs a list of triggers on a table + * @param $table The name of a table whose triggers to retrieve + * @return A recordset + */ + function getTriggers($table = '') { + $c_schema = $this->_schema; + $this->clean($c_schema); + $this->clean($table); + + $sql = "SELECT + t.tgname, pg_catalog.pg_get_triggerdef(t.oid) AS tgdef, + CASE WHEN t.tgenabled = 'D' THEN FALSE ELSE TRUE END AS tgenabled, p.oid AS prooid, + p.proname || ' (' || pg_catalog.oidvectortypes(p.proargtypes) || ')' AS proproto, + ns.nspname AS pronamespace + FROM pg_catalog.pg_trigger t, pg_catalog.pg_proc p, pg_catalog.pg_namespace ns + WHERE t.tgrelid = (SELECT oid FROM pg_catalog.pg_class WHERE relname='{$table}' + AND relnamespace=(SELECT oid FROM pg_catalog.pg_namespace WHERE nspname='{$c_schema}')) + AND (NOT tgisconstraint OR NOT EXISTS + (SELECT 1 FROM pg_catalog.pg_depend d JOIN pg_catalog.pg_constraint c + ON (d.refclassid = c.tableoid AND d.refobjid = c.oid) + WHERE d.classid = t.tableoid AND d.objid = t.oid AND d.deptype = 'i' AND c.contype = 'f')) + AND p.oid=t.tgfoid + AND p.pronamespace = ns.oid"; + + return $this->selectSet($sql); + } + + /** + * Searches all system catalogs to find objects that match a certain name. + * @param $term The search term + * @param $filter The object type to restrict to ('' means no restriction) + * @return A recordset + */ + function findObject($term, $filter) { + global $conf; + + /*about escaping: + * SET standard_conforming_string is not available before 8.2 + * So we must use PostgreSQL specific notation :/ + * E'' notation is not available before 8.1 + * $$ is available since 8.0 + * Nothing specific from 7.4 + **/ + + // Escape search term for ILIKE match + $this->clean($term); + $this->clean($filter); + $term = str_replace('_', '\_', $term); + $term = str_replace('%', '\%', $term); + + // Exclude system relations if necessary + if (!$conf['show_system']) { + // XXX: The mention of information_schema here is in the wrong place, but + // it's the quickest fix to exclude the info schema from 7.4 + $where = " AND pn.nspname NOT LIKE \$_PATERN_\$pg\_%\$_PATERN_\$ AND pn.nspname != 'information_schema'"; + $lan_where = "AND pl.lanispl"; + } + else { + $where = ''; + $lan_where = ''; + } + + // Apply outer filter + $sql = ''; + if ($filter != '') { + $sql = "SELECT * FROM ("; + } + + $term = "\$_PATERN_\$%{$term}%\$_PATERN_\$"; + + $sql .= " + SELECT 'SCHEMA' AS type, oid, NULL AS schemaname, NULL AS relname, nspname AS name + FROM pg_catalog.pg_namespace pn WHERE nspname ILIKE {$term} {$where} + UNION ALL + SELECT CASE WHEN relkind='r' THEN 'TABLE' WHEN relkind='v' THEN 'VIEW' WHEN relkind='S' THEN 'SEQUENCE' END, pc.oid, + pn.nspname, NULL, pc.relname FROM pg_catalog.pg_class pc, pg_catalog.pg_namespace pn + WHERE pc.relnamespace=pn.oid AND relkind IN ('r', 'v', 'S') AND relname ILIKE {$term} {$where} + UNION ALL + SELECT CASE WHEN pc.relkind='r' THEN 'COLUMNTABLE' ELSE 'COLUMNVIEW' END, NULL, pn.nspname, pc.relname, pa.attname FROM pg_catalog.pg_class pc, pg_catalog.pg_namespace pn, + pg_catalog.pg_attribute pa WHERE pc.relnamespace=pn.oid AND pc.oid=pa.attrelid + AND pa.attname ILIKE {$term} AND pa.attnum > 0 AND NOT pa.attisdropped AND pc.relkind IN ('r', 'v') {$where} + UNION ALL + SELECT 'FUNCTION', pp.oid, pn.nspname, NULL, pp.proname || '(' || pg_catalog.oidvectortypes(pp.proargtypes) || ')' FROM pg_catalog.pg_proc pp, pg_catalog.pg_namespace pn + WHERE pp.pronamespace=pn.oid AND NOT pp.proisagg AND pp.proname ILIKE {$term} {$where} + UNION ALL + SELECT 'INDEX', NULL, pn.nspname, pc.relname, pc2.relname FROM pg_catalog.pg_class pc, pg_catalog.pg_namespace pn, + pg_catalog.pg_index pi, pg_catalog.pg_class pc2 WHERE pc.relnamespace=pn.oid AND pc.oid=pi.indrelid + AND pi.indexrelid=pc2.oid + AND NOT EXISTS ( + SELECT 1 FROM pg_catalog.pg_depend d JOIN pg_catalog.pg_constraint c + ON (d.refclassid = c.tableoid AND d.refobjid = c.oid) + WHERE d.classid = pc2.tableoid AND d.objid = pc2.oid AND d.deptype = 'i' AND c.contype IN ('u', 'p') + ) + AND pc2.relname ILIKE {$term} {$where} + UNION ALL + SELECT 'CONSTRAINTTABLE', NULL, pn.nspname, pc.relname, pc2.conname FROM pg_catalog.pg_class pc, pg_catalog.pg_namespace pn, + pg_catalog.pg_constraint pc2 WHERE pc.relnamespace=pn.oid AND pc.oid=pc2.conrelid AND pc2.conrelid != 0 + AND CASE WHEN pc2.contype IN ('f', 'c') THEN TRUE ELSE NOT EXISTS ( + SELECT 1 FROM pg_catalog.pg_depend d JOIN pg_catalog.pg_constraint c + ON (d.refclassid = c.tableoid AND d.refobjid = c.oid) + WHERE d.classid = pc2.tableoid AND d.objid = pc2.oid AND d.deptype = 'i' AND c.contype IN ('u', 'p') + ) END + AND pc2.conname ILIKE {$term} {$where} + UNION ALL + SELECT 'CONSTRAINTDOMAIN', pt.oid, pn.nspname, pt.typname, pc.conname FROM pg_catalog.pg_type pt, pg_catalog.pg_namespace pn, + pg_catalog.pg_constraint pc WHERE pt.typnamespace=pn.oid AND pt.oid=pc.contypid AND pc.contypid != 0 + AND pc.conname ILIKE {$term} {$where} + UNION ALL + SELECT 'TRIGGER', NULL, pn.nspname, pc.relname, pt.tgname FROM pg_catalog.pg_class pc, pg_catalog.pg_namespace pn, + pg_catalog.pg_trigger pt WHERE pc.relnamespace=pn.oid AND pc.oid=pt.tgrelid + AND ( NOT pt.tgisconstraint OR NOT EXISTS + (SELECT 1 FROM pg_catalog.pg_depend d JOIN pg_catalog.pg_constraint c + ON (d.refclassid = c.tableoid AND d.refobjid = c.oid) + WHERE d.classid = pt.tableoid AND d.objid = pt.oid AND d.deptype = 'i' AND c.contype = 'f')) + AND pt.tgname ILIKE {$term} {$where} + UNION ALL + SELECT 'RULETABLE', NULL, pn.nspname AS schemaname, c.relname AS tablename, r.rulename FROM pg_catalog.pg_rewrite r + JOIN pg_catalog.pg_class c ON c.oid = r.ev_class + LEFT JOIN pg_catalog.pg_namespace pn ON pn.oid = c.relnamespace + WHERE c.relkind='r' AND r.rulename != '_RETURN' AND r.rulename ILIKE {$term} {$where} + UNION ALL + SELECT 'RULEVIEW', NULL, pn.nspname AS schemaname, c.relname AS tablename, r.rulename FROM pg_catalog.pg_rewrite r + JOIN pg_catalog.pg_class c ON c.oid = r.ev_class + LEFT JOIN pg_catalog.pg_namespace pn ON pn.oid = c.relnamespace + WHERE c.relkind='v' AND r.rulename != '_RETURN' AND r.rulename ILIKE {$term} {$where} + "; + + // Add advanced objects if show_advanced is set + if ($conf['show_advanced']) { + $sql .= " + UNION ALL + SELECT CASE WHEN pt.typtype='d' THEN 'DOMAIN' ELSE 'TYPE' END, pt.oid, pn.nspname, NULL, + pt.typname FROM pg_catalog.pg_type pt, pg_catalog.pg_namespace pn + WHERE pt.typnamespace=pn.oid AND typname ILIKE {$term} + AND (pt.typrelid = 0 OR (SELECT c.relkind = 'c' FROM pg_catalog.pg_class c WHERE c.oid = pt.typrelid)) + {$where} + UNION ALL + SELECT 'OPERATOR', po.oid, pn.nspname, NULL, po.oprname FROM pg_catalog.pg_operator po, pg_catalog.pg_namespace pn + WHERE po.oprnamespace=pn.oid AND oprname ILIKE {$term} {$where} + UNION ALL + SELECT 'CONVERSION', pc.oid, pn.nspname, NULL, pc.conname FROM pg_catalog.pg_conversion pc, + pg_catalog.pg_namespace pn WHERE pc.connamespace=pn.oid AND conname ILIKE {$term} {$where} + UNION ALL + SELECT 'LANGUAGE', pl.oid, NULL, NULL, pl.lanname FROM pg_catalog.pg_language pl + WHERE lanname ILIKE {$term} {$lan_where} + UNION ALL + SELECT DISTINCT ON (p.proname) 'AGGREGATE', p.oid, pn.nspname, NULL, p.proname FROM pg_catalog.pg_proc p + LEFT JOIN pg_catalog.pg_namespace pn ON p.pronamespace=pn.oid + WHERE p.proisagg AND p.proname ILIKE {$term} {$where} + UNION ALL + SELECT DISTINCT ON (po.opcname) 'OPCLASS', po.oid, pn.nspname, NULL, po.opcname FROM pg_catalog.pg_opclass po, + pg_catalog.pg_namespace pn WHERE po.opcnamespace=pn.oid + AND po.opcname ILIKE {$term} {$where} + "; + } + // Otherwise just add domains + else { + $sql .= " + UNION ALL + SELECT 'DOMAIN', pt.oid, pn.nspname, NULL, + pt.typname FROM pg_catalog.pg_type pt, pg_catalog.pg_namespace pn + WHERE pt.typnamespace=pn.oid AND pt.typtype='d' AND typname ILIKE {$term} + AND (pt.typrelid = 0 OR (SELECT c.relkind = 'c' FROM pg_catalog.pg_class c WHERE c.oid = pt.typrelid)) + {$where} + "; + } + + if ($filter != '') { + // We use like to make RULE, CONSTRAINT and COLUMN searches work + $sql .= ") AS sub WHERE type LIKE '{$filter}%' "; + } + + $sql .= "ORDER BY type, schemaname, relname, name"; + + return $this->selectSet($sql); + } + + + // Capabilities + + function hasByteaHexDefault() { return false; } + +} + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres90.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres90.php new file mode 100644 index 00000000..9f7b3a09 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres90.php @@ -0,0 +1,33 @@ +Postgres($conn); + } + + // Help functions + + function getHelpPages() { + include_once('./help/PostgresDoc90.php'); + return $this->help_page; + } + + // Capabilities + +} +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres91.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres91.php new file mode 100644 index 00000000..fb6d952c --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres91.php @@ -0,0 +1,98 @@ +Postgres($conn); + } + + // Help functions + + function getHelpPages() { + include_once('./help/PostgresDoc91.php'); + return $this->help_page; + } + + // Administration functions + /** + * Returns all available process information. + * @param $database (optional) Find only connections to specified database + * @return A recordset + */ + function getProcesses($database = null) { + if ($database === null) + $sql = "SELECT datname, usename, procpid AS pid, waiting, current_query AS query, query_start + FROM pg_catalog.pg_stat_activity + ORDER BY datname, usename, procpid"; + else { + $this->clean($database); + $sql = "SELECT datname, usename, procpid AS pid, waiting, current_query AS query, query_start + FROM pg_catalog.pg_stat_activity + WHERE datname='{$database}' + ORDER BY usename, procpid"; + } + + $rc = $this->selectSet($sql); + + return $rc; + } + + // Tablespace functions + + /** + * Retrieves information for all tablespaces + * @param $all Include all tablespaces (necessary when moving objects back to the default space) + * @return A recordset + */ + function getTablespaces($all = false) { + global $conf; + + $sql = "SELECT spcname, pg_catalog.pg_get_userbyid(spcowner) AS spcowner, spclocation, + (SELECT description FROM pg_catalog.pg_shdescription pd WHERE pg_tablespace.oid=pd.objoid AND pd.classoid='pg_tablespace'::regclass) AS spccomment + FROM pg_catalog.pg_tablespace"; + + if (!$conf['show_system'] && !$all) { + $sql .= ' WHERE spcname NOT LIKE $$pg\_%$$'; + } + + $sql .= " ORDER BY spcname"; + + return $this->selectSet($sql); + } + + /** + * Retrieves a tablespace's information + * @return A recordset + */ + function getTablespace($spcname) { + $this->clean($spcname); + + $sql = "SELECT spcname, pg_catalog.pg_get_userbyid(spcowner) AS spcowner, spclocation, + (SELECT description FROM pg_catalog.pg_shdescription pd WHERE pg_tablespace.oid=pd.objoid AND pd.classoid='pg_tablespace'::regclass) AS spccomment + FROM pg_catalog.pg_tablespace WHERE spcname='{$spcname}'"; + + return $this->selectSet($sql); + } + + + // Capabilities + function hasUserSignals() { return false; } + + + +} +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres92.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres92.php new file mode 100644 index 00000000..d20b188a --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres92.php @@ -0,0 +1,30 @@ +Postgres($conn); + } + + // Help functions + + function getHelpPages() { + include_once('./help/PostgresDoc92.php'); + return $this->help_page; + } + +} +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres93.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres93.php new file mode 100644 index 00000000..24ee22d6 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres93.php @@ -0,0 +1,30 @@ +Postgres($conn); + } + + // Help functions + + function getHelpPages() { + include_once('./help/PostgresDoc93.php'); + return $this->help_page; + } + +} +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres94.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres94.php new file mode 100644 index 00000000..619b238b --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres94.php @@ -0,0 +1,30 @@ +Postgres($conn); + } + + // Help functions + + function getHelpPages() { + include_once('./help/PostgresDoc94.php'); + return $this->help_page; + } + +} +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres95.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres95.php new file mode 100644 index 00000000..0120e550 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres95.php @@ -0,0 +1,55 @@ +Postgres($conn); + } + + // Help functions + + function getHelpPages() { + include_once('./help/PostgresDoc95.php'); + return $this->help_page; + } + + + /** + * Returns all available process information. + * @param $database (optional) Find only connections to specified database + * @return A recordset + */ + function getProcesses($database = null) { + if ($database === null) + $sql = "SELECT datname, usename, pid, waiting, state_change as query_start, + case when state='idle in transaction' then ' in transaction' when state = 'idle' then '' else query end as query + FROM pg_catalog.pg_stat_activity + ORDER BY datname, usename, pid"; + else { + $this->clean($database); + $sql = "SELECT datname, usename, pid, waiting, state_change as query_start, + case when state='idle in transaction' then ' in transaction' when state = 'idle' then '' else query end as query + FROM pg_catalog.pg_stat_activity + WHERE datname='{$database}' + ORDER BY usename, pid"; + } + + return $this->selectSet($sql); + } + + +} +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres96.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres96.php new file mode 100644 index 00000000..19397e15 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/classes/database/Postgres96.php @@ -0,0 +1,57 @@ +Postgres($conn); + } + + // Help functions + + function getHelpPages() { + include_once('./help/PostgresDoc96.php'); + return $this->help_page; + } + + // Sequence functions + + /** + * Returns properties of a single sequence + * @param $sequence Sequence name + * @return A recordset + */ + function getSequence($sequence) { + $c_schema = $this->_schema; + $this->clean($c_schema); + $c_sequence = $sequence; + $this->fieldClean($sequence); + $this->clean($c_sequence); + + $sql = " + SELECT c.relname AS seqname, s.*, + pg_catalog.obj_description(s.tableoid, 'pg_class') AS seqcomment, + u.usename AS seqowner, n.nspname + FROM \"{$sequence}\" AS s, pg_catalog.pg_class c, pg_catalog.pg_user u, pg_catalog.pg_namespace n + WHERE c.relowner=u.usesysid AND c.relnamespace=n.oid + AND c.relname = '{$c_sequence}' AND c.relkind = 'S' AND n.nspname='{$c_schema}' + AND n.oid = c.relnamespace"; + + return $this->selectSet( $sql ); + } + + +} +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/colproperties.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/colproperties.php new file mode 100644 index 00000000..2bf137b8 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/colproperties.php @@ -0,0 +1,346 @@ +printTrail('column'); + $misc->printTitle($lang['stralter'], 'pg.column.alter'); + $misc->printMsg($msg); + + echo ""; + echo "
\n"; + + // Output table header + echo "\n"; + echo "\n"; + if ($data->hasAlterColumnType()) { + echo "\n"; + echo "\n"; + } + else { + echo "\n"; + } + echo "\n\n\n"; + + $column = $data->getTableAttributes($_REQUEST['table'], $_REQUEST['column']); + $column->fields['attnotnull'] = $data->phpBool($column->fields['attnotnull']); + + // Upon first drawing the screen, load the existing column information + // from the database. + if (!isset($_REQUEST['default'])) { + $_REQUEST['field'] = $column->fields['attname']; + $_REQUEST['type'] = $column->fields['base_type']; + // Check to see if its' an array type... + // XXX: HACKY + if (substr($column->fields['base_type'], strlen($column->fields['base_type']) - 2) == '[]') { + $_REQUEST['type'] = substr($column->fields['base_type'], 0, strlen($column->fields['base_type']) - 2); + $_REQUEST['array'] = '[]'; + } + else { + $_REQUEST['type'] = $column->fields['base_type']; + $_REQUEST['array'] = ''; + } + // To figure out the length, look in the brackets :( + // XXX: HACKY + if ($column->fields['type'] != $column->fields['base_type'] && preg_match('/\\(([0-9, ]*)\\)/', $column->fields['type'], $bits)) { + $_REQUEST['length'] = $bits[1]; + } + else + $_REQUEST['length'] = ''; + $_REQUEST['default'] = $_REQUEST['olddefault'] = $column->fields['adsrc']; + if ($column->fields['attnotnull']) $_REQUEST['notnull'] = 'YES'; + $_REQUEST['comment'] = $column->fields['comment']; + } + + // Column name + echo "\n"; + + // Column type + $escaped_predef_types = array(); // the JS escaped array elements + if ($data->hasAlterColumnType()) { + // Fetch all available types + $types = $data->getTypes(true, false, true); + $types_for_js = array(); + + echo "\n"; + + // Output array type selector + echo "\n"; + $predefined_size_types = array_intersect($data->predefined_size_types, $types_for_js); + foreach($predefined_size_types as $value) { + $escaped_predef_types[] = "'{$value}'"; + } + + echo "\n"; + } else { + // Otherwise draw the read-only type name + echo "\n"; + } + + echo "\n"; + echo "\n"; + echo "\n"; + echo "
{$lang['strname']}{$lang['strtype']}{$lang['strlength']}{$lang['strtype']}{$lang['strnotnull']}{$lang['strdefault']}{$lang['strcomment']}
_maxNameLen}\" value=\"", + htmlspecialchars($_REQUEST['field']), "\" />", $misc->printVal($data->formatType($column->fields['type'], $column->fields['atttypmod'])), "
\n"; + echo "

\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "\n"; + if ($column->fields['attnotnull']) echo "\n"; + echo "formatType($column->fields['type'], $column->fields['atttypmod'])), "\" />\n"; + // Add hidden variables to suppress error notices if we don't support altering column type + if (!$data->hasAlterColumnType()) { + echo "\n"; + echo "\n"; + echo "\n"; + } + echo "\n"; + echo "

\n"; + echo "
\n"; + echo "\n"; + break; + case 2: + // Check inputs + if (trim($_REQUEST['field']) == '') { + $_REQUEST['stage'] = 1; + doAlter($lang['strcolneedsname']); + return; + } + if (!isset($_REQUEST['length'])) $_REQUEST['length'] = ''; + $status = $data->alterColumn($_REQUEST['table'], $_REQUEST['column'], $_REQUEST['field'], + isset($_REQUEST['notnull']), isset($_REQUEST['oldnotnull']), + $_REQUEST['default'], $_REQUEST['olddefault'], + $_REQUEST['type'], $_REQUEST['length'], $_REQUEST['array'], $_REQUEST['oldtype'], + $_REQUEST['comment']); + if ($status == 0) { + if ($_REQUEST['column'] != $_REQUEST['field']) { + $_REQUEST['column'] = $_REQUEST['field']; + $_reload_browser = true; + } + doDefault($lang['strcolumnaltered']); + } + else { + $_REQUEST['stage'] = 1; + doAlter($lang['strcolumnalteredbad']); + return; + } + break; + default: + echo "

{$lang['strinvalidparam']}

\n"; + } + } + + /** + * Show default list of columns in the table + */ + function doDefault($msg = '', $isTable = true) { + global $data, $conf, $misc, $tableName; + global $lang; + + function attPre(&$rowdata) { + global $data; + $rowdata->fields['+type'] = $data->formatType($rowdata->fields['type'], $rowdata->fields['atttypmod']); + } + + if (empty($_REQUEST['column'])) + $msg.= "
{$lang['strnoobjects']}"; + + $misc->printTrail('column'); + //$misc->printTitle($lang['strcolprop']); + $misc->printTabs('column','properties'); + $misc->printMsg($msg); + + if (! empty($_REQUEST['column'])) { + // Get table + $tdata = $data->getTable($tableName); + // Get columns + $attrs = $data->getTableAttributes($tableName, $_REQUEST['column']); + + // Show comment if any + if ($attrs->fields['comment'] !== null) + echo "

", $misc->printVal($attrs->fields['comment']), "

\n"; + + $column = array( + 'column' => array( + 'title' => $lang['strcolumn'], + 'field' => field('attname'), + ), + 'type' => array( + 'title' => $lang['strtype'], + 'field' => field('+type'), + ) + ); + + if ($isTable) { + $column['notnull'] = array( + 'title' => $lang['strnotnull'], + 'field' => field('attnotnull'), + 'type' => 'bool', + 'params'=> array('true' => 'NOT NULL', 'false' => '') + ); + $column['default'] = array( + 'title' => $lang['strdefault'], + 'field' => field('adsrc'), + ); + } + + $actions=array(); + $misc->printTable($attrs, $column, $actions, 'colproperties-colproperties', null, 'attPre'); + + echo "
\n"; + + $f_attname = $_REQUEST['column']; + $f_table = $tableName; + $f_schema = $data->_schema; + $data->fieldClean($f_attname); + $data->fieldClean($f_table); + $data->fieldClean($f_schema); + $query = "SELECT \"{$f_attname}\", count(*) AS \"count\" FROM \"{$f_schema}\".\"{$f_table}\" GROUP BY \"{$f_attname}\" ORDER BY \"{$f_attname}\""; + + if ($isTable) { + + /* Browse link */ + /* FIXME browsing a col should somehow be a action so we don't + * send an ugly SQL in the URL */ + + $navlinks = array ( + 'browse' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'display.php', + 'urlvars' => array ( + 'subject' => 'column', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'table' => $tableName, + 'column' => $_REQUEST['column'], + 'return' => 'column', + 'query' => $query + ) + ) + ), + 'content' => $lang['strbrowse'], + ), + 'alter' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'colproperties.php', + 'urlvars' => array ( + 'action' => 'properties', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'table' => $tableName, + 'column' => $_REQUEST['column'], + ) + ) + ), + 'content' => $lang['stralter'], + ), + 'drop' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'tblproperties.php', + 'urlvars' => array ( + 'action' => 'confirm_drop', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'table' => $tableName, + 'column' => $_REQUEST['column'], + ) + ) + ), + 'content' => $lang['strdrop'], + ) + ); + } + else { + /* Browse link */ + $navlinks = array ( + 'browse' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'display.php', + 'urlvars' => array ( + 'subject' => 'column', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'view' => $tableName, + 'column' => $_REQUEST['column'], + 'return' => 'column', + 'query' => $query + ) + ) + ), + 'content' => $lang['strbrowse'] + ) + ); + } + + $misc->printNavLinks($navlinks, 'colproperties-colproperties', get_defined_vars()); + } + } + + $misc->printHeader($lang['strtables'] . ' - ' . $tableName); + $misc->printBody(); + + if (isset($_REQUEST['view'])) + doDefault(null, false); + else + switch ($action) { + case 'properties': + if (isset($_POST['cancel'])) doDefault(); + else doAlter(); + break; + default: + doDefault(); + break; + } + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/composer.json b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/composer.json new file mode 100644 index 00000000..d25bfc18 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/composer.json @@ -0,0 +1,13 @@ +{ + "name": "phppgadmin/phppgadmin", + "description": "phpPgAdmin is a web-based administration tool for PostgreSQL. It is perfect for PostgreSQL DBAs, newbies, and hosting services.", + "type": "Application", + "license": "GPL-2.0+", + "require": { + "php": ">=5.0" + }, + "minimum-stability": "stable", + "autoload": { + } +} + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/conf/.gitignore b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/conf/.gitignore new file mode 100644 index 00000000..7e9e3afe --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/conf/.gitignore @@ -0,0 +1 @@ +config.inc.php diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/conf/config.inc.php-dist b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/conf/config.inc.php-dist new file mode 100644 index 00000000..ba927d40 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/conf/config.inc.php-dist @@ -0,0 +1,172 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/constraints.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/constraints.php new file mode 100644 index 00000000..cc1591c9 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/constraints.php @@ -0,0 +1,640 @@ +printTrail('table'); + $misc->printTitle($lang['straddfk'],'pg.constraint.foreign_key'); + $misc->printMsg($msg); + + // Unserialize target and fetch appropriate table. This is a bit messy + // because the table could be in another schema. + $data->setSchema($_REQUEST['target']['schemaname']); + $attrs = $data->getTableAttributes($_REQUEST['target']['tablename']); + $data->setSchema($_REQUEST['schema']); + + $selColumns = new XHTML_select('TableColumnList', true, 10); + $selColumns->set_style('width: 15em;'); + + if ($attrs->recordCount() > 0) { + while (!$attrs->EOF) { + $selColumns->add(new XHTML_Option($attrs->fields['attname'])); + $attrs->moveNext(); + } + } + + $selIndex = new XHTML_select('IndexColumnList[]', true, 10); + $selIndex->set_style('width: 15em;'); + $selIndex->set_attribute('id', 'IndexColumnList'); + $buttonAdd = new XHTML_Button('add', '>>'); + $buttonAdd->set_attribute('onclick', 'buttonPressed(this);'); + $buttonAdd->set_attribute('type', 'button'); + + $buttonRemove = new XHTML_Button('remove', '<<'); + $buttonRemove->set_attribute('onclick', 'buttonPressed(this);'); + $buttonRemove->set_attribute('type', 'button'); + + echo "
\n"; + + echo "\n"; + echo ""; + echo "\n"; + echo "\n"; + echo ""; + echo "\n"; + echo ""; + echo ""; + echo "\n"; + echo "
{$lang['strfktarget']}
{$lang['strtablecolumnlist']} {$lang['strfkcolumnlist']}
" . $selColumns->fetch() . "" . $buttonRemove->fetch() . $buttonAdd->fetch() . "" . $selIndex->fetch() . "
{$lang['stractions']}
\n"; + // ON SELECT actions + echo "{$lang['stronupdate']}
\n"; + + // ON DELETE actions + echo "{$lang['strondelete']}
\n"; + + // MATCH options + echo "
\n"; + + // DEFERRABLE options + echo "
\n"; + + // INITIALLY options + echo "\n"; + echo "
\n"; + + echo "

\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + break; + case 3: + // Unserialize target + $_POST['target'] = unserialize($_POST['target']); + + // Check that they've given at least one column + if (isset($_POST['SourceColumnList'])) $temp = unserialize($_POST['SourceColumnList']); + if (!isset($_POST['IndexColumnList']) || !is_array($_POST['IndexColumnList']) + || sizeof($_POST['IndexColumnList']) == 0 || !isset($temp) + || !is_array($temp) || sizeof($temp) == 0) addForeignKey(2, $lang['strfkneedscols']); + else { + $status = $data->addForeignKey($_POST['table'], $_POST['target']['schemaname'], $_POST['target']['tablename'], + unserialize($_POST['SourceColumnList']), $_POST['IndexColumnList'], $_POST['upd_action'], $_POST['del_action'], + $_POST['match'], $_POST['deferrable'], $_POST['initially'], $_POST['name']); + if ($status == 0) + doDefault($lang['strfkadded']); + else + addForeignKey(2, $lang['strfkaddedbad']); + } + break; + default: + $misc->printTrail('table'); + $misc->printTitle($lang['straddfk'],'pg.constraint.foreign_key'); + $misc->printMsg($msg); + + $attrs = $data->getTableAttributes($_REQUEST['table']); + $tables = $data->getTables(true); + + $selColumns = new XHTML_select('TableColumnList', true, 10); + $selColumns->set_style('width: 15em;'); + + if ($attrs->recordCount() > 0) { + while (!$attrs->EOF) { + $selColumns->add(new XHTML_Option($attrs->fields['attname'])); + $attrs->moveNext(); + } + } + + $selIndex = new XHTML_select('IndexColumnList[]', true, 10); + $selIndex->set_style('width: 15em;'); + $selIndex->set_attribute('id', 'IndexColumnList'); + $buttonAdd = new XHTML_Button('add', '>>'); + $buttonAdd->set_attribute('onclick', 'buttonPressed(this);'); + $buttonAdd->set_attribute('type', 'button'); + + $buttonRemove = new XHTML_Button('remove', '<<'); + $buttonRemove->set_attribute('onclick', 'buttonPressed(this);'); + $buttonRemove->set_attribute('type', 'button'); + + echo "
\n"; + + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo ""; + echo ""; + echo ""; + echo "
{$lang['strname']}
_maxNameLen}\" />
{$lang['strtablecolumnlist']} {$lang['strfkcolumnlist']}
" . $selColumns->fetch() . "" . $buttonRemove->fetch() . $buttonAdd->fetch() . "" . $selIndex->fetch() . "
{$lang['strfktarget']}
\n"; + echo "
\n"; + + echo "

\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "\n"; + echo "

\n"; + echo "
\n"; + break; + } + + } + + /** + * Confirm and then actually add a PRIMARY KEY or UNIQUE constraint + */ + function addPrimaryOrUniqueKey($type, $confirm, $msg = '') { + global $data, $misc; + global $lang; + + if (!isset($_POST['name'])) $_POST['name'] = ''; + + if ($confirm) { + if (!isset($_POST['name'])) $_POST['name'] = ''; + if (!isset($_POST['tablespace'])) $_POST['tablespace'] = ''; + + $misc->printTrail('table'); + + switch ($type) { + case 'primary': + $misc->printTitle($lang['straddpk'],'pg.constraint.primary_key'); + break; + case 'unique': + $misc->printTitle($lang['stradduniq'],'pg.constraint.unique_key'); + break; + default: + doDefault($lang['strinvalidparam']); + return; + } + + $misc->printMsg($msg); + + $attrs = $data->getTableAttributes($_REQUEST['table']); + // Fetch all tablespaces from the database + if ($data->hasTablespaces()) $tablespaces = $data->getTablespaces(); + + + $selColumns = new XHTML_select('TableColumnList', true, 10); + $selColumns->set_style('width: 15em;'); + + if ($attrs->recordCount() > 0) { + while (!$attrs->EOF) { + $selColumns->add(new XHTML_Option($attrs->fields['attname'])); + $attrs->moveNext(); + } + } + + $selIndex = new XHTML_select('IndexColumnList[]', true, 10); + $selIndex->set_style('width: 15em;'); + $selIndex->set_attribute('id', 'IndexColumnList'); + $buttonAdd = new XHTML_Button('add', '>>'); + $buttonAdd->set_attribute('onclick', 'buttonPressed(this);'); + $buttonAdd->set_attribute('type', 'button'); + + $buttonRemove = new XHTML_Button('remove', '<<'); + $buttonRemove->set_attribute('onclick', 'buttonPressed(this);'); + $buttonRemove->set_attribute('type', 'button'); + + echo "
\n"; + + echo "\n"; + echo ""; + echo ""; + echo ""; + echo "\n"; + echo "\n"; + echo ""; + echo "\n"; + + // Tablespace (if there are any) + if ($data->hasTablespaces() && $tablespaces->recordCount() > 0) { + echo ""; + echo "\n"; + } + + echo "
{$lang['strname']}
_maxNameLen}\" />
{$lang['strtablecolumnlist']} {$lang['strindexcolumnlist']}
" . $selColumns->fetch() . "" . $buttonRemove->fetch() . $buttonAdd->fetch() . "" . $selIndex->fetch() . "
{$lang['strtablespace']}
\n"; + + echo "

\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + else { + // Default tablespace to empty if it isn't set + if (!isset($_POST['tablespace'])) $_POST['tablespace'] = ''; + + if ($_POST['type'] == 'primary') { + // Check that they've given at least one column + if (!isset($_POST['IndexColumnList']) || !is_array($_POST['IndexColumnList']) + || sizeof($_POST['IndexColumnList']) == 0) addPrimaryOrUniqueKey($_POST['type'], true, $lang['strpkneedscols']); + else { + $status = $data->addPrimaryKey($_POST['table'], $_POST['IndexColumnList'], $_POST['name'], $_POST['tablespace']); + if ($status == 0) + doDefault($lang['strpkadded']); + else + addPrimaryOrUniqueKey($_POST['type'], true, $lang['strpkaddedbad']); + } + } + elseif ($_POST['type'] == 'unique') { + // Check that they've given at least one column + if (!isset($_POST['IndexColumnList']) || !is_array($_POST['IndexColumnList']) + || sizeof($_POST['IndexColumnList']) == 0) addPrimaryOrUniqueKey($_POST['type'], true, $lang['struniqneedscols']); + else { + $status = $data->addUniqueKey($_POST['table'], $_POST['IndexColumnList'], $_POST['name'], $_POST['tablespace']); + if ($status == 0) + doDefault($lang['struniqadded']); + else + addPrimaryOrUniqueKey($_POST['type'], true, $lang['struniqaddedbad']); + } + } + else doDefault($lang['strinvalidparam']); + } + } + + /** + * Confirm and then actually add a CHECK constraint + */ + function addCheck($confirm, $msg = '') { + global $data, $misc; + global $lang; + + if (!isset($_POST['name'])) $_POST['name'] = ''; + if (!isset($_POST['definition'])) $_POST['definition'] = ''; + + if ($confirm) { + $misc->printTrail('table'); + $misc->printTitle($lang['straddcheck'],'pg.constraint.check'); + $misc->printMsg($msg); + + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + + echo "\n"; + + echo "\n"; + echo "
{$lang['strname']}{$lang['strdefinition']}
_maxNameLen}\" value=\"", + htmlspecialchars($_POST['name']), "\" />()
\n"; + + echo "\n"; + echo "\n"; + echo $misc->form; + echo "

\n"; + echo "

\n"; + echo "
\n"; + + } + else { + if (trim($_POST['definition']) == '') + addCheck(true, $lang['strcheckneedsdefinition']); + else { + $status = $data->addCheckConstraint($_POST['table'], + $_POST['definition'], $_POST['name']); + if ($status == 0) + doDefault($lang['strcheckadded']); + else + addCheck(true, $lang['strcheckaddedbad']); + } + } + } + + /** + * Show confirmation of drop and perform actual drop + */ + function doDrop($confirm) { + global $data, $misc; + global $lang; + + if ($confirm) { + $misc->printTrail('constraint'); + $misc->printTitle($lang['strdrop'],'pg.constraint.drop'); + + echo "

", sprintf($lang['strconfdropconstraint'], $misc->printVal($_REQUEST['constraint']), + $misc->printVal($_REQUEST['table'])), "

\n"; + + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo $misc->form; + echo "

\n"; + echo "\n"; + echo "\n"; + echo "
\n"; + } + else { + $status = $data->dropConstraint($_POST['constraint'], $_POST['table'], $_POST['type'], isset($_POST['cascade'])); + if ($status == 0) + doDefault($lang['strconstraintdropped']); + else + doDefault($lang['strconstraintdroppedbad']); + } + } + + /** + * List all the constraints on the table + */ + function doDefault($msg = '') { + global $data, $misc, $lang; + + function cnPre(&$rowdata) { + global $data; + if (is_null($rowdata->fields['consrc'])) { + $atts = $data->getAttributeNames($_REQUEST['table'], explode(' ', $rowdata->fields['indkey'])); + $rowdata->fields['+definition'] = ($rowdata->fields['contype'] == 'u' ? "UNIQUE (" : "PRIMARY KEY (") . join(',', $atts) . ')'; + } else { + $rowdata->fields['+definition'] = $rowdata->fields['consrc']; + } + } + + $misc->printTrail('table'); + $misc->printTabs('table','constraints'); + $misc->printMsg($msg); + + $constraints = $data->getConstraints($_REQUEST['table']); + + $columns = array( + 'constraint' => array( + 'title' => $lang['strname'], + 'field' => field('conname'), + ), + 'definition' => array( + 'title' => $lang['strdefinition'], + 'field' => field('+definition'), + 'type' => 'pre', + ), + 'actions' => array( + 'title' => $lang['stractions'], + ), + 'comment' => array( + 'title' => $lang['strcomment'], + 'field' => field('constcomment'), + ), + ); + + $actions = array( + 'drop' => array( + 'content' => $lang['strdrop'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'constraints.php', + 'urlvars' => array ( + 'action' => 'confirm_drop', + 'table' => $_REQUEST['table'], + 'constraint' => field('conname'), + 'type' => field('contype') + ) + ) + ) + ) + ); + + $misc->printTable($constraints, $columns, $actions, 'constraints-constraints', $lang['strnoconstraints'], 'cnPre'); + + $navlinks = array ( + 'addcheck' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'constraints.php', + 'urlvars' => array ( + 'action' => 'add_check', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'table' => $_REQUEST['table'] + ) + ) + ), + 'content' => $lang['straddcheck'], + ), + 'adduniq' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'constraints.php', + 'urlvars' => array ( + 'action' => 'add_unique_key', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'table' => $_REQUEST['table'] + ) + ) + ), + 'content' => $lang['stradduniq'], + ), + 'addpk' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'constraints.php', + 'urlvars' => array ( + 'action' => 'add_primary_key', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'table' => $_REQUEST['table'] + ) + ) + ), + 'content' => $lang['straddpk'], + ), + 'addfk' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'constraints.php', + 'urlvars' => array ( + 'action' => 'add_foreign_key', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'table' => $_REQUEST['table'] + ) + ) + ), + 'content' => $lang['straddfk'] + ) + ); + $misc->printNavLinks($navlinks, 'constraints-constraints', get_defined_vars()); + } + + function doTree() { + global $misc, $data; + + $constraints = $data->getConstraints($_REQUEST['table']); + + $reqvars = $misc->getRequestVars('schema'); + + function getIcon($f) { + switch($f['contype']) { + case 'u': + return 'UniqueConstraint'; + case 'c': + return 'CheckConstraint'; + case 'f': + return 'ForeignKey'; + case 'p': + return 'PrimaryKey'; + + } + } + + $attrs = array( + 'text' => field('conname'), + 'icon' => callback('getIcon'), + ); + + $misc->printTree($constraints, $attrs, 'constraints'); + exit; + } + + if ($action == 'tree') doTree(); + + $misc->printHeader($lang['strtables'] . ' - ' . $_REQUEST['table'] . ' - ' . $lang['strconstraints'], + ""); + + if ($action == 'add_unique_key' || $action == 'save_add_unique_key' + || $action == 'add_primary_key' || $action == 'save_add_primary_key' + || $action == 'add_foreign_key' || $action == 'save_add_foreign_key') + echo ""; + else + $misc->printBody(); + + switch ($action) { + case 'add_foreign_key': + addForeignKey(1); + break; + case 'save_add_foreign_key': + if (isset($_POST['cancel'])) doDefault(); + else addForeignKey($_REQUEST['stage']); + break; + case 'add_unique_key': + addPrimaryOrUniqueKey('unique', true); + break; + case 'save_add_unique_key': + if (isset($_POST['cancel'])) doDefault(); + else addPrimaryOrUniqueKey('unique', false); + break; + case 'add_primary_key': + addPrimaryOrUniqueKey('primary', true); + break; + case 'save_add_primary_key': + if (isset($_POST['cancel'])) doDefault(); + else addPrimaryOrUniqueKey('primary', false); + break; + case 'add_check': + addCheck(true); + break; + case 'save_add_check': + if (isset($_POST['cancel'])) doDefault(); + else addCheck(false); + break; + case 'save_create': + doSaveCreate(); + break; + case 'create': + doCreate(); + break; + case 'drop': + if (isset($_POST['drop'])) doDrop(false); + else doDefault(); + break; + case 'confirm_drop': + doDrop(true); + break; + default: + doDefault(); + break; + } + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/conversions.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/conversions.php new file mode 100644 index 00000000..32def8d7 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/conversions.php @@ -0,0 +1,88 @@ +printTrail('schema'); + $misc->printTabs('schema', 'conversions'); + $misc->printMsg($msg); + + $conversions = $data->getconversions(); + + $columns = array( + 'conversion' => array( + 'title' => $lang['strname'], + 'field' => field('conname'), + ), + 'source_encoding' => array( + 'title' => $lang['strsourceencoding'], + 'field' => field('conforencoding'), + ), + 'target_encoding' => array( + 'title' => $lang['strtargetencoding'], + 'field' => field('contoencoding'), + ), + 'default' => array( + 'title' => $lang['strdefault'], + 'field' => field('condefault'), + 'type' => 'yesno', + ), + 'comment' => array( + 'title' => $lang['strcomment'], + 'field' => field('concomment'), + ), + ); + + $actions = array(); + + $misc->printTable($conversions, $columns, $actions, 'conversions-conversions', $lang['strnoconversions']); + } + + /** + * Generate XML for the browser tree. + */ + function doTree() { + global $misc, $data; + + $conversions = $data->getconversions(); + + $attrs = array( + 'text' => field('conname'), + 'icon' => 'Conversion', + 'toolTip'=> field('concomment') + ); + + $misc->printTree($conversions, $attrs, 'conversions'); + exit; + } + + if ($action == 'tree') doTree(); + + $misc->printHeader($lang['strconversions']); + $misc->printBody(); + + switch ($action) { + default: + doDefault(); + break; + } + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/database.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/database.php new file mode 100644 index 00000000..cdd53c60 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/database.php @@ -0,0 +1,698 @@ +{$term}", $string); + } + + /** + * Sends a signal to a process + */ + function doSignal() { + global $data, $lang; + + $status = $data->sendSignal($_REQUEST['pid'], $_REQUEST['signal']); + if ($status == 0) + doProcesses($lang['strsignalsent']); + else + doProcesses($lang['strsignalsentbad']); + } + + /** + * Searches for a named database object + */ + function doFind($confirm = true, $msg = '') { + global $data, $misc; + global $lang, $conf; + + if (!isset($_REQUEST['term'])) $_REQUEST['term'] = ''; + if (!isset($_REQUEST['filter'])) $_REQUEST['filter'] = ''; + + $misc->printTrail('database'); + $misc->printTabs('database','find'); + $misc->printMsg($msg); + + echo "
\n"; + echo "

_maxNameLen}\" />\n"; + // Output list of filters. This is complex due to all the 'has' and 'conf' feature possibilities + echo "\n"; + echo "\n"; + echo $misc->form; + echo "

\n"; + echo "
\n"; + + // Default focus + $misc->setFocus('forms[0].term'); + + // If a search term has been specified, then perform the search + // and display the results, grouped by object type + if ($_REQUEST['term'] != '') { + $rs = $data->findObject($_REQUEST['term'], $_REQUEST['filter']); + if ($rs->recordCount() > 0) { + $curr = ''; + while (!$rs->EOF) { + // Output a new header if the current type has changed, but not if it's just changed the rule type + if ($rs->fields['type'] != $curr) { + // Short-circuit in the case of changing from table rules to view rules; table cols to view cols; + // table constraints to domain constraints + if ($rs->fields['type'] == 'RULEVIEW' && $curr == 'RULETABLE') { + $curr = $rs->fields['type']; + } + elseif ($rs->fields['type'] == 'COLUMNVIEW' && $curr == 'COLUMNTABLE') { + $curr = $rs->fields['type']; + } + elseif ($rs->fields['type'] == 'CONSTRAINTTABLE' && $curr == 'CONSTRAINTDOMAIN') { + $curr = $rs->fields['type']; + } + else { + if ($curr != '') echo "\n"; + $curr = $rs->fields['type']; + echo "

"; + switch ($curr) { + case 'SCHEMA': + echo $lang['strschemas']; + break; + case 'TABLE': + echo $lang['strtables']; + break; + case 'VIEW': + echo $lang['strviews']; + break; + case 'SEQUENCE': + echo $lang['strsequences']; + break; + case 'COLUMNTABLE': + case 'COLUMNVIEW': + echo $lang['strcolumns']; + break; + case 'INDEX': + echo $lang['strindexes']; + break; + case 'CONSTRAINTTABLE': + case 'CONSTRAINTDOMAIN': + echo $lang['strconstraints']; + break; + case 'TRIGGER': + echo $lang['strtriggers']; + break; + case 'RULETABLE': + case 'RULEVIEW': + echo $lang['strrules']; + break; + case 'FUNCTION': + echo $lang['strfunctions']; + break; + case 'TYPE': + echo $lang['strtypes']; + break; + case 'DOMAIN': + echo $lang['strdomains']; + break; + case 'OPERATOR': + echo $lang['stroperators']; + break; + case 'CONVERSION': + echo $lang['strconversions']; + break; + case 'LANGUAGE': + echo $lang['strlanguages']; + break; + case 'AGGREGATE': + echo $lang['straggregates']; + break; + case 'OPCLASS': + echo $lang['stropclasses']; + break; + } + echo "

"; + echo "\n"; + + echo "

", $rs->recordCount(), " ", $lang['strobjects'], "

\n"; + } + else echo "

{$lang['strnoobjects']}

\n"; + } + } + + /** + * Displays options for database download + */ + function doExport($msg = '') { + global $data, $misc; + global $lang; + + $misc->printTrail('database'); + $misc->printTabs('database','export'); + $misc->printMsg($msg); + + echo "
\n"; + echo "\n"; + echo "\n"; + // Data only + echo "\n"; + echo "\n"; + echo "\n\n"; + echo "\n\n"; + // Structure only + echo "\n"; + echo "\n\n"; + // Structure and data + echo "\n"; + echo "\n"; + echo "\n\n"; + echo "\n\n"; + echo "\n\n"; + echo "
{$lang['strformat']}{$lang['stroptions']}
"; + echo "{$lang['strformat']}\n
"; + echo "{$lang['strformat']}\n
\n"; + + echo "

{$lang['stroptions']}

\n"; + echo "

\n"; + echo "
\n"; + // MSIE cannot download gzip in SSL mode - it's just broken + if (!(strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE') && isset($_SERVER['HTTPS']))) { + echo "
\n"; + } + echo "

\n"; + echo "

\n"; + echo "\n"; + echo $misc->form; + echo "

\n"; + echo "
\n"; + } + + /** + * Show the current status of all database variables + */ + function doVariables() { + global $data, $misc; + global $lang; + + // Fetch the variables from the database + $variables = $data->getVariables(); + $misc->printTrail('database'); + $misc->printTabs('database','variables'); + + $columns = array( + 'variable' => array( + 'title' => $lang['strname'], + 'field' => field('name'), + ), + 'value' => array( + 'title' => $lang['strsetting'], + 'field' => field('setting'), + ), + ); + + $actions = array(); + + $misc->printTable($variables, $columns, $actions, 'database-variables', $lang['strnodata']); + } + + /** + * Show all current database connections and any queries they + * are running. + */ + function doProcesses($msg = '') { + global $data, $misc; + global $lang; + + $misc->printTrail('database'); + $misc->printTabs('database','processes'); + $misc->printMsg($msg); + + if (strlen($msg) === 0) { + echo "
icon('Refresh')."\" alt=\"{$lang['strrefresh']}\" title=\"{$lang['strrefresh']}\"/> {$lang['strrefresh']}"; + } + + echo "
"; + currentProcesses(); + echo "
"; + } + + function currentProcesses($isAjax = false) { + global $data, $misc, $lang; + + // Display prepared transactions + if($data->hasPreparedXacts()) { + echo "

{$lang['strpreparedxacts']}

\n"; + $prep_xacts = $data->getPreparedXacts($_REQUEST['database']); + + $columns = array( + 'transaction' => array( + 'title' => $lang['strxactid'], + 'field' => field('transaction'), + ), + 'gid' => array( + 'title' => $lang['strgid'], + 'field' => field('gid'), + ), + 'prepared' => array( + 'title' => $lang['strstarttime'], + 'field' => field('prepared'), + ), + 'owner' => array( + 'title' => $lang['strowner'], + 'field' => field('owner'), + ), + ); + + $actions = array(); + + $misc->printTable($prep_xacts, $columns, $actions, 'database-processes-preparedxacts', $lang['strnodata']); + } + + // Fetch the processes from the database + echo "

{$lang['strprocesses']}

\n"; + $processes = $data->getProcesses($_REQUEST['database']); + + $columns = array( + 'user' => array( + 'title' => $lang['strusername'], + 'field' => field('usename'), + ), + 'process' => array( + 'title' => $lang['strprocess'], + 'field' => field('pid'), + ), + 'blocked' => array( + 'title' => $lang['strblocked'], + 'field' => field('waiting'), + ), + 'query' => array( + 'title' => $lang['strsql'], + 'field' => field('query'), + ), + 'start_time' => array( + 'title' => $lang['strstarttime'], + 'field' => field('query_start'), + ), + ); + + // Build possible actions for our process list + $columns['actions'] = array('title' => $lang['stractions']); + + $actions = array(); + if ($data->hasUserSignals() || $data->isSuperUser()) { + $actions = array( + 'cancel' => array( + 'content' => $lang['strcancel'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'database.php', + 'urlvars' => array ( + 'action' => 'signal', + 'signal' => 'CANCEL', + 'pid' => field('pid') + ) + ) + ) + ), + 'kill' => array( + 'content' => $lang['strkill'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'database.php', + 'urlvars' => array ( + 'action' => 'signal', + 'signal' => 'KILL', + 'pid' => field('pid') + ) + ) + ) + ) + ); + + // Remove actions where not supported + if (!$data->hasQueryKill()) unset($actions['kill']); + if (!$data->hasQueryCancel()) unset($actions['cancel']); + } + + if (count($actions) == 0) unset($columns['actions']); + + $misc->printTable($processes, $columns, $actions, 'database-processes', $lang['strnodata']); + + if ($isAjax) exit; + } + + function currentLocks($isAjax = false) { + global $data, $misc, $lang; + + // Get the info from the pg_locks view + $variables = $data->getLocks(); + + $columns = array( + 'namespace' => array( + 'title' => $lang['strschema'], + 'field' => field('nspname'), + ), + 'tablename' => array( + 'title' => $lang['strtablename'], + 'field' => field('tablename'), + ), + 'vxid' => array( + 'title' => $lang['strvirtualtransaction'], + 'field' => field('virtualtransaction'), + ), + 'transactionid' => array( + 'title' => $lang['strtransaction'], + 'field' => field('transaction'), + ), + 'processid' => array( + 'title' => $lang['strprocessid'], + 'field' => field('pid'), + ), + 'mode' => array( + 'title' => $lang['strmode'], + 'field' => field('mode'), + ), + 'granted' => array( + 'title' => $lang['strislockheld'], + 'field' => field('granted'), + 'type' => 'yesno', + ), + ); + + if (!$data->hasVirtualTransactionId()) unset($columns['vxid']); + + $actions = array(); + $misc->printTable($variables, $columns, $actions, 'database-locks', $lang['strnodata']); + + if ($isAjax) exit; + } + + /** + * Show the existing table locks in the current database + */ + function doLocks() { + global $data, $misc; + global $lang; + + $misc->printTrail('database'); + $misc->printTabs('database','locks'); + + echo "
icon('Refresh')."\" alt=\"{$lang['strrefresh']}\" title=\"{$lang['strrefresh']}\"/> {$lang['strrefresh']}"; + + echo "
"; + currentLocks(); + echo "
"; + } + + /** + * Allow execution of arbitrary SQL statements on a database + */ + function doSQL() { + global $data, $misc; + global $lang; + + if ((!isset($_SESSION['sqlquery'])) || isset($_REQUEST['new'])) { + $_SESSION['sqlquery'] = ''; + $_REQUEST['paginate'] = 'on'; + } + + $misc->printTrail('database'); + $misc->printTabs('database','sql'); + echo "

{$lang['strentersql']}

\n"; + echo "
\n"; + echo "

{$lang['strsql']}
\n"; + echo "

\n"; + + // Check that file uploads are enabled + if (ini_get('file_uploads')) { + // Don't show upload option if max size of uploads is zero + $max_size = $misc->inisizeToBytes(ini_get('upload_max_filesize')); + if (is_double($max_size) && $max_size > 0) { + echo "

\n"; + echo "

\n"; + } + } + + echo "

\n"; + echo "

\n"; + echo $misc->form; + echo "

\n"; + echo "
\n"; + + // Default focus + $misc->setFocus('forms[0].query'); + } + + function doTree() { + global $misc, $data, $lang; + + $reqvars = $misc->getRequestVars('database'); + + $tabs = $misc->getNavTabs('database'); + + $items = $misc->adjustTabsForTree($tabs); + + $attrs = array( + 'text' => field('title'), + 'icon' => field('icon'), + 'action' => url(field('url'), + $reqvars, + field('urlvars', array()) + ), + 'branch' => url(field('url'), + $reqvars, + field('urlvars'), + array('action' => 'tree') + ), + ); + + $misc->printTree($items, $attrs, 'database'); + + exit; + } + + require('./admin.php'); + + /* shortcuts: these functions exit the script */ + if ($action == 'tree') doTree(); + if ($action == 'refresh_locks') currentLocks(true); + if ($action == 'refresh_processes') currentProcesses(true); + + /* normal flow */ + if ($action == 'locks' or $action == 'processes') { + $scripts .= ""; + + $refreshTime = $conf['ajax_refresh'] * 1000; + + $scripts .= "\n"; + } + + $misc->printHeader($lang['strdatabase'], $scripts); + $misc->printBody(); + + switch ($action) { + case 'find': + if (isset($_REQUEST['term'])) doFind(false); + else doFind(true); + break; + case 'sql': + doSQL(); + break; + case 'variables': + doVariables(); + break; + case 'processes': + doProcesses(); + break; + case 'locks': + doLocks(); + break; + case 'export': + doExport(); + break; + case 'signal': + doSignal(); + break; + default: + if (adminActions($action, 'database') === false) doSQL(); + break; + } + + $misc->printFooter(); +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/dataexport.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/dataexport.php new file mode 100644 index 00000000..84db24f8 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/dataexport.php @@ -0,0 +1,345 @@ + 'sql', + 'copy' => 'sql', + 'csv' => 'csv', + 'tab' => 'txt', + 'html' => 'html', + 'xml' => 'xml' + ); + + // Prevent timeouts on large exports (non-safe mode only) + if (!ini_get('safe_mode')) set_time_limit(0); + + // if (!isset($_REQUEST['table']) && !isset($_REQUEST['query'])) + // What must we do in this case? Maybe redirect to the homepage? + + // If format is set, then perform the export + if (isset($_REQUEST['what'])) { + + // Include application functions + $_no_output = true; + include_once('./libraries/lib.inc.php'); + + switch ($_REQUEST['what']) { + case 'dataonly': + // Check to see if they have pg_dump set up and if they do, use that + // instead of custom dump code + if ($misc->isDumpEnabled() + && ($_REQUEST['d_format'] == 'copy' || $_REQUEST['d_format'] == 'sql')) { + include('./dbexport.php'); + exit; + } + else { + $format = $_REQUEST['d_format']; + $oids = isset($_REQUEST['d_oids']); + } + break; + case 'structureonly': + // Check to see if they have pg_dump set up and if they do, use that + // instead of custom dump code + if ($misc->isDumpEnabled()) { + include('./dbexport.php'); + exit; + } + else $clean = isset($_REQUEST['s_clean']); + break; + case 'structureanddata': + // Check to see if they have pg_dump set up and if they do, use that + // instead of custom dump code + if ($misc->isDumpEnabled()) { + include('./dbexport.php'); + exit; + } + else { + $format = $_REQUEST['sd_format']; + $clean = isset($_REQUEST['sd_clean']); + $oids = isset($_REQUEST['sd_oids']); + } + break; + } + + // Make it do a download, if necessary + if ($_REQUEST['output'] == 'download') { + // Set headers. MSIE is totally broken for SSL downloading, so + // we need to have it download in-place as plain text + if (strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE') && isset($_SERVER['HTTPS'])) { + header('Content-Type: text/plain'); + } + else { + header('Content-Type: application/download'); + + if (isset($extensions[$format])) + $ext = $extensions[$format]; + else + $ext = 'txt'; + + header('Content-Disposition: attachment; filename=dump.' . $ext); + } + } + else { + header('Content-Type: text/plain'); + } + + if (isset($_REQUEST['query'])) $_REQUEST['query'] = trim(urldecode($_REQUEST['query'])); + + // Set the schema search path + if (isset($_REQUEST['search_path'])) { + $data->setSearchPath(array_map('trim',explode(',',$_REQUEST['search_path']))); + } + + // Set up the dump transaction + $status = $data->beginDump(); + + // If the dump is not dataonly then dump the structure prefix + if ($_REQUEST['what'] != 'dataonly') + echo $data->getTableDefPrefix($_REQUEST['table'], $clean); + + // If the dump is not structureonly then dump the actual data + if ($_REQUEST['what'] != 'structureonly') { + // Get database encoding + $dbEncoding = $data->getDatabaseEncoding(); + + // Set fetch mode to NUM so that duplicate field names are properly returned + $data->conn->setFetchMode(ADODB_FETCH_NUM); + + // Execute the query, if set, otherwise grab all rows from the table + if (isset($_REQUEST['table'])) + $rs = $data->dumpRelation($_REQUEST['table'], $oids); + else + $rs = $data->conn->Execute($_REQUEST['query']); + + if ($format == 'copy') { + $data->fieldClean($_REQUEST['table']); + echo "COPY \"{$_REQUEST['table']}\""; + if ($oids) echo " WITH OIDS"; + echo " FROM stdin;\n"; + while (!$rs->EOF) { + $first = true; + while(list($k, $v) = each($rs->fields)) { + // Escape value + $v = $data->escapeBytea($v); + + // We add an extra escaping slash onto octal encoded characters + $v = preg_replace('/\\\\([0-7]{3})/', '\\\\\1', $v); + if ($first) { + echo (is_null($v)) ? '\\N' : $v; + $first = false; + } + else echo "\t", (is_null($v)) ? '\\N' : $v; + } + echo "\n"; + $rs->moveNext(); + } + echo "\\.\n"; + } + elseif ($format == 'html') { + echo "\r\n"; + echo "\r\n"; + echo "\r\n"; + echo "\t\r\n"; + echo "\t\r\n"; + echo "\r\n"; + echo "\r\n"; + echo "\r\n"; + echo "\t\r\n"; + if (!$rs->EOF) { + // Output header row + $j = 0; + foreach ($rs->fields as $k => $v) { + $finfo = $rs->fetchField($j++); + if ($finfo->name == $data->id && !$oids) continue; + echo "\t\t\r\n"; + } + } + echo "\t\r\n"; + while (!$rs->EOF) { + echo "\t\r\n"; + $j = 0; + foreach ($rs->fields as $k => $v) { + $finfo = $rs->fetchField($j++); + if ($finfo->name == $data->id && !$oids) continue; + echo "\t\t\r\n"; + } + echo "\t\r\n"; + $rs->moveNext(); + } + echo "
", $misc->printVal($finfo->name, true), "
", $misc->printVal($v, true, $finfo->type), "
\r\n"; + echo "\r\n"; + echo "\r\n"; + } + elseif ($format == 'xml') { + echo "\n"; + echo "\n"; + if (!$rs->EOF) { + // Output header row + $j = 0; + echo "\t
\n"; + foreach ($rs->fields as $k => $v) { + $finfo = $rs->fetchField($j++); + $name = htmlspecialchars($finfo->name); + $type = htmlspecialchars($finfo->type); + echo "\t\t\n"; + } + echo "\t
\n"; + } + echo "\t\n"; + while (!$rs->EOF) { + $j = 0; + echo "\t\t\n"; + foreach ($rs->fields as $k => $v) { + $finfo = $rs->fetchField($j++); + $name = htmlspecialchars($finfo->name); + if (!is_null($v)) $v = htmlspecialchars($v); + echo "\t\t\t{$v}\n"; + } + echo "\t\t\n"; + $rs->moveNext(); + } + echo "\t\n"; + echo "
\n"; + } + elseif ($format == 'sql') { + $data->fieldClean($_REQUEST['table']); + while (!$rs->EOF) { + echo "INSERT INTO \"{$_REQUEST['table']}\" ("; + $first = true; + $j = 0; + foreach ($rs->fields as $k => $v) { + $finfo = $rs->fetchField($j++); + $k = $finfo->name; + // SQL (INSERT) format cannot handle oids + // if ($k == $data->id) continue; + // Output field + $data->fieldClean($k); + if ($first) echo "\"{$k}\""; + else echo ", \"{$k}\""; + + if (!is_null($v)) { + // Output value + // addCSlashes converts all weird ASCII characters to octal representation, + // EXCEPT the 'special' ones like \r \n \t, etc. + $v = addCSlashes($v, "\0..\37\177..\377"); + // We add an extra escaping slash onto octal encoded characters + $v = preg_replace('/\\\\([0-7]{3})/', '\\\1', $v); + // Finally, escape all apostrophes + $v = str_replace("'", "''", $v); + } + if ($first) { + $values = (is_null($v) ? 'NULL' : "'{$v}'"); + $first = false; + } + else $values .= ', ' . ((is_null($v) ? 'NULL' : "'{$v}'")); + } + echo ") VALUES ({$values});\n"; + $rs->moveNext(); + } + } + else { + switch ($format) { + case 'tab': + $sep = "\t"; + break; + case 'csv': + default: + $sep = ','; + break; + } + if (!$rs->EOF) { + // Output header row + $first = true; + foreach ($rs->fields as $k => $v) { + $finfo = $rs->fetchField($k); + $v = $finfo->name; + if (!is_null($v)) $v = str_replace('"', '""', $v); + if ($first) { + echo "\"{$v}\""; + $first = false; + } + else echo "{$sep}\"{$v}\""; + } + echo "\r\n"; + } + while (!$rs->EOF) { + $first = true; + foreach ($rs->fields as $k => $v) { + if (!is_null($v)) $v = str_replace('"', '""', $v); + if ($first) { + echo (is_null($v)) ? "\"\\N\"" : "\"{$v}\""; + $first = false; + } + else echo is_null($v) ? "{$sep}\"\\N\"" : "{$sep}\"{$v}\""; + } + echo "\r\n"; + $rs->moveNext(); + } + } + } + + // If the dump is not dataonly then dump the structure suffix + if ($_REQUEST['what'] != 'dataonly') { + // Set fetch mode back to ASSOC for the table suffix to work + $data->conn->setFetchMode(ADODB_FETCH_ASSOC); + echo $data->getTableDefSuffix($_REQUEST['table']); + } + + // Finish the dump transaction + $status = $data->endDump(); + } + else { + // Include application functions + include_once('./libraries/lib.inc.php'); + + if ( !isset($_REQUEST['query']) or empty($_REQUEST['query']) ) + $_REQUEST['query'] = $_SESSION['sqlquery']; + + $misc->printHeader($lang['strexport']); + $misc->printBody(); + $misc->printTrail(isset($_REQUEST['subject']) ? $_REQUEST['subject'] : 'database'); + $misc->printTitle($lang['strexport']); + if (isset($msg)) $misc->printMsg($msg); + + echo "
\n"; + echo "\n"; + echo ""; + echo "
{$lang['strformat']}:
\n"; + + echo "

{$lang['stroptions']}

\n"; + echo "

\n"; + echo "

\n"; + + echo "

\n"; + echo "\n"; + if (isset($_REQUEST['table'])) { + echo "\n"; + } + echo "\n"; + if (isset($_REQUEST['search_path'])) { + echo "\n"; + } + echo $misc->form; + echo "

\n"; + echo "
\n"; + + $misc->printFooter(); + } + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/dataimport.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/dataimport.php new file mode 100644 index 00000000..ff81cd96 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/dataimport.php @@ -0,0 +1,298 @@ +rollbackTransaction(); + $misc->printMsg($lang['strimporterror']); + exit; + } + $state = 'DATA'; + break; + case 'HEADER': + if ($state != 'DATA') { + $data->rollbackTransaction(); + $misc->printMsg($lang['strimporterror']); + exit; + } + $state = 'HEADER'; + break; + case 'RECORDS': + if ($state != 'READ_HEADER') { + $data->rollbackTransaction(); + $misc->printMsg($lang['strimporterror']); + exit; + } + $state = 'RECORDS'; + break; + case 'ROW': + if ($state != 'RECORDS') { + $data->rollbackTransaction(); + $misc->printMsg($lang['strimporterror']); + exit; + } + $state = 'ROW'; + $curr_row = array(); + break; + case 'COLUMN': + // We handle columns in rows + if ($state == 'ROW') { + $state = 'COLUMN'; + $curr_col_name = $attrs['NAME']; + $curr_col_null = isset($attrs['NULL']); + } + // And we ignore columns in headers and fail in any other context + elseif ($state != 'HEADER') { + $data->rollbackTransaction(); + $misc->printMsg($lang['strimporterror']); + exit; + } + break; + default: + // An unrecognised tag means failure + $data->rollbackTransaction(); + $misc->printMsg($lang['strimporterror']); + exit; + } + } + + /** + * Close tag handler for XML import feature + */ + function _endElement($parser, $name) { + global $data, $misc, $lang; + global $state, $curr_row, $curr_col_name, $curr_col_val, $curr_col_null; + + switch ($name) { + case 'DATA': + $state = 'READ_DATA'; + break; + case 'HEADER': + $state = 'READ_HEADER'; + break; + case 'RECORDS': + $state = 'READ_RECORDS'; + break; + case 'ROW': + // Build value map in order to insert row into table + $fields = array(); + $vars = array(); + $nulls = array(); + $format = array(); + $types = array(); + $i = 0; + foreach ($curr_row as $k => $v) { + $fields[$i] = $k; + // Check for nulls + if ($v === null) $nulls[$i] = 'on'; + // Add to value array + $vars[$i] = $v; + // Format is always VALUE + $format[$i] = 'VALUE'; + // Type is always text + $types[$i] = 'text'; + $i++; + } + $status = $data->insertRow($_REQUEST['table'], $fields, $vars, $nulls, $format, $types); + if ($status != 0) { + $data->rollbackTransaction(); + $misc->printMsg($lang['strimporterror']); + exit; + } + $curr_row = array(); + $state = 'RECORDS'; + break; + case 'COLUMN': + $curr_row[$curr_col_name] = ($curr_col_null ? null : $curr_col_val); + $curr_col_name = null; + $curr_col_val = null; + $curr_col_null = false; + $state = 'ROW'; + break; + default: + // An unrecognised tag means failure + $data->rollbackTransaction(); + $misc->printMsg($lang['strimporterror']); + exit; + } + } + + /** + * Character data handler for XML import feature + */ + function _charHandler($parser, $cdata) { + global $data, $misc, $lang; + global $state, $curr_col_val; + + if ($state == 'COLUMN') { + $curr_col_val .= $cdata; + } + } + + function loadNULLArray() { + $array = array(); + if (isset($_POST['allowednulls'])) { + foreach ($_POST['allowednulls'] as $null_char) + $array[] = $null_char; + } + return $array; + } + + function determineNull($field, $null_array) { + return in_array($field, $null_array); + } + + $misc->printHeader($lang['strimport']); + $misc->printTrail('table'); + $misc->printTabs('table','import'); + + // Check that file is specified and is an uploaded file + if (isset($_FILES['source']) && is_uploaded_file($_FILES['source']['tmp_name']) && is_readable($_FILES['source']['tmp_name'])) { + + $fd = fopen($_FILES['source']['tmp_name'], 'r'); + // Check that file was opened successfully + if ($fd !== false) { + $null_array = loadNULLArray(); + $status = $data->beginTransaction(); + if ($status != 0) { + $misc->printMsg($lang['strimporterror']); + exit; + } + + // If format is set to 'auto', then determine format automatically from file name + if ($_REQUEST['format'] == 'auto') { + $extension = substr(strrchr($_FILES['source']['name'], '.'), 1); + switch ($extension) { + case 'csv': + $_REQUEST['format'] = 'csv'; + break; + case 'txt': + $_REQUEST['format'] = 'tab'; + break; + case 'xml': + $_REQUEST['format'] = 'xml'; + break; + default: + $data->rollbackTransaction(); + $misc->printMsg($lang['strimporterror-fileformat']); + exit; + } + } + + // Do different import technique depending on file format + switch ($_REQUEST['format']) { + case 'csv': + case 'tab': + // XXX: Length of CSV lines limited to 100k + $csv_max_line = 100000; + // Set delimiter to tabs or commas + if ($_REQUEST['format'] == 'csv') $csv_delimiter = ','; + else $csv_delimiter = "\t"; + // Get first line of field names + $fields = fgetcsv($fd, $csv_max_line, $csv_delimiter); + $row = 2; //We start on the line AFTER the field names + while ($line = fgetcsv($fd, $csv_max_line, $csv_delimiter)) { + // Build value map + $t_fields = array(); + $vars = array(); + $nulls = array(); + $format = array(); + $types = array(); + $i = 0; + foreach ($fields as $f) { + // Check that there is a column + if (!isset($line[$i])) { + $misc->printMsg(sprintf($lang['strimporterrorline-badcolumnnum'], $row)); + exit; + } + $t_fields[$i] = $f; + + // Check for nulls + if (determineNull($line[$i], $null_array)) { + $nulls[$i] = 'on'; + } + // Add to value array + $vars[$i] = $line[$i]; + // Format is always VALUE + $format[$i] = 'VALUE'; + // Type is always text + $types[$i] = 'text'; + $i++; + } + + $status = $data->insertRow($_REQUEST['table'], $t_fields, $vars, $nulls, $format, $types); + if ($status != 0) { + $data->rollbackTransaction(); + $misc->printMsg(sprintf($lang['strimporterrorline'], $row)); + exit; + } + $row++; + } + break; + case 'xml': + $parser = xml_parser_create(); + xml_set_element_handler($parser, '_startElement', '_endElement'); + xml_set_character_data_handler($parser, '_charHandler'); + + while (!feof($fd)) { + $line = fgets($fd, 4096); + xml_parse($parser, $line); + } + + xml_parser_free($parser); + break; + default: + // Unknown type + $data->rollbackTransaction(); + $misc->printMsg($lang['strinvalidparam']); + exit; + } + + $status = $data->endTransaction(); + if ($status != 0) { + $misc->printMsg($lang['strimporterror']); + exit; + } + fclose($fd); + + $misc->printMsg($lang['strfileimported']); + } + else { + // File could not be opened + $misc->printMsg($lang['strimporterror']); + } + } + else { + // Upload went wrong + $misc->printMsg($lang['strimporterror-uploadedfile']); + } + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/dbexport.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/dbexport.php new file mode 100644 index 00000000..d7320817 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/dbexport.php @@ -0,0 +1,139 @@ +isDumpEnabled($dumpall)) { + + $server_info = $misc->getServerInfo(); + + // Get the path of the pg_dump/pg_dumpall executable + $exe = $misc->escapeShellCmd($server_info[$dumpall ? 'pg_dumpall_path' : 'pg_dump_path']); + + // Obtain the pg_dump version number and check if the path is good + $version = array(); + preg_match("/(\d+(?:\.\d+)?)(?:\.\d+)?.*$/", exec($exe . " --version"), $version); + + if (empty($version)) { + if ($dumpall) + printf($lang['strbadpgdumpallpath'], $server_info['pg_dumpall_path']); + else + printf($lang['strbadpgdumppath'], $server_info['pg_dump_path']); + exit; + } + + // Make it do a download, if necessary + switch($_REQUEST['output']){ + case 'show': + header('Content-Type: text/plain'); + break; + case 'download': + // Set headers. MSIE is totally broken for SSL downloading, so + // we need to have it download in-place as plain text + if (strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE') && isset($_SERVER['HTTPS'])) { + header('Content-Type: text/plain'); + } + else { + header('Content-Type: application/download'); + header('Content-Disposition: attachment; filename=dump.sql'); + } + break; + case 'gzipped': + // MSIE in SSL mode cannot do this - it should never get to this point + header('Content-Type: application/download'); + header('Content-Disposition: attachment; filename=dump.sql.gz'); + break; + } + + // Set environmental variables that pg_dump uses + putenv('PGPASSWORD=' . $server_info['password']); + putenv('PGUSER=' . $server_info['username']); + $hostname = $server_info['host']; + if ($hostname !== null && $hostname != '') { + putenv('PGHOST=' . $hostname); + } + $port = $server_info['port']; + if ($port !== null && $port != '') { + putenv('PGPORT=' . $port); + } + + // Build command for executing pg_dump. + $cmd = $exe; + + // we are PG 7.4+, so we always have a schema + if (isset($_REQUEST['schema'])) { + $f_schema = $_REQUEST['schema']; + $data->fieldClean($f_schema); + } + + // Check for a specified table/view + switch ($_REQUEST['subject']) { + case 'schema': + // This currently works for 8.2+ (due to the orthoganl -t -n issue introduced then) + $cmd .= " -n " . $misc->escapeShellArg("\"{$f_schema}\""); + break; + case 'table': + case 'view': + $f_object = $_REQUEST[$_REQUEST['subject']]; + $data->fieldClean($f_object); + + // Starting in 8.2, -n and -t are orthagonal, so we now schema qualify + // the table name in the -t argument and quote both identifiers + if ( ((float) $version[1]) >= 8.2 ) { + $cmd .= " -t " . $misc->escapeShellArg("\"{$f_schema}\".\"{$f_object}\""); + } + else { + // If we are 7.4 or higher, assume they are using 7.4 pg_dump and + // set dump schema as well. Also, mixed case dumping has been fixed + // then.. + $cmd .= " -t " . $misc->escapeShellArg($f_object) + . " -n " . $misc->escapeShellArg($f_schema); + } + } + + // Check for GZIP compression specified + if ($_REQUEST['output'] == 'gzipped' && !$dumpall) { + $cmd .= " -Z 9"; + } + + switch ($_REQUEST['what']) { + case 'dataonly': + $cmd .= ' -a'; + if ($_REQUEST['d_format'] == 'sql') $cmd .= ' --inserts'; + elseif (isset($_REQUEST['d_oids'])) $cmd .= ' -o'; + break; + case 'structureonly': + $cmd .= ' -s'; + if (isset($_REQUEST['s_clean'])) $cmd .= ' -c'; + break; + case 'structureanddata': + if ($_REQUEST['sd_format'] == 'sql') $cmd .= ' --inserts'; + elseif (isset($_REQUEST['sd_oids'])) $cmd .= ' -o'; + if (isset($_REQUEST['sd_clean'])) $cmd .= ' -c'; + break; + } + + if (!$dumpall) { + putenv('PGDATABASE=' . $_REQUEST['database']); + } + + // Execute command and return the output to the screen + passthru($cmd); + } + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/display.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/display.php new file mode 100644 index 00000000..f87a2153 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/display.php @@ -0,0 +1,879 @@ +printTrail($_REQUEST['subject']); + $misc->printTitle($lang['streditrow']); + $misc->printMsg($msg); + + $attrs = $data->getTableAttributes($_REQUEST['table']); + $rs = $data->browseRow($_REQUEST['table'], $key); + + if (($conf['autocomplete'] != 'disable')) { + $fksprops = $misc->getAutocompleteFKProperties($_REQUEST['table']); + if ($fksprops !== false) + echo $fksprops['code']; + } + else $fksprops = false; + + echo "
\n"; + $elements = 0; + $error = true; + if ($rs->recordCount() == 1 && $attrs->recordCount() > 0) { + echo "\n"; + + // Output table header + echo ""; + echo "\n"; + echo ""; + + $i = 0; + while (!$attrs->EOF) { + + $attrs->fields['attnotnull'] = $data->phpBool($attrs->fields['attnotnull']); + $id = (($i % 2) == 0 ? '1' : '2'); + + // Initialise variables + if (!isset($_REQUEST['format'][$attrs->fields['attname']])) + $_REQUEST['format'][$attrs->fields['attname']] = 'VALUE'; + + echo "\n"; + echo ""; + echo ""; + $elements++; + echo "\n"; + $elements++; + echo "\n"; + $elements++; + } + else + echo " "; + + echo ""; + $elements++; + echo "\n"; + $i++; + $attrs->moveNext(); + } + echo "
{$lang['strcolumn']}{$lang['strtype']}{$lang['strformat']}{$lang['strnull']}{$lang['strvalue']}
", $misc->printVal($attrs->fields['attname']), "\n"; + echo $misc->printVal($data->formatType($attrs->fields['type'], $attrs->fields['atttypmod'])); + echo "fields['attname']), "]\" value=\"", + htmlspecialchars($attrs->fields['type']), "\" />\n"; + echo "\n"; + // Output null box if the column allows nulls (doesn't look at CHECKs or ASSERTIONS) + if (!$attrs->fields['attnotnull']) { + // Set initial null values + if ($_REQUEST['action'] == 'confeditrow' && $rs->fields[$attrs->fields['attname']] === null) { + $_REQUEST['nulls'][$attrs->fields['attname']] = 'on'; + } + echo "fields['attnum']}\" style=\"white-space:nowrap;\">"; + + $extras = array(); + + // If the column allows nulls, then we put a JavaScript action on the data field to unset the + // NULL checkbox as soon as anything is entered in the field. We use the $elements variable to + // keep track of which element offset we're up to. We can't refer to the null checkbox by name + // as it contains '[' and ']' characters. + if (!$attrs->fields['attnotnull']) { + $extras['onChange'] = 'elements[' . ($elements - 1) . '].checked = false;'; + } + + if (($fksprops !== false) && isset($fksprops['byfield'][$attrs->fields['attnum']])) { + $extras['id'] = "attr_{$attrs->fields['attnum']}"; + $extras['autocomplete'] = 'off'; + } + + echo $data->printField("values[{$attrs->fields['attname']}]", $rs->fields[$attrs->fields['attname']], $attrs->fields['type'], $extras); + + echo "
\n"; + + $error = false; + } + elseif ($rs->recordCount() != 1) { + echo "

{$lang['strrownotunique']}

\n"; + } + else { + echo "

{$lang['strinvalidparam']}

\n"; + } + + echo "\n"; + echo $misc->form; + if (isset($_REQUEST['table'])) + echo "\n"; + if (isset($_REQUEST['subject'])) + echo "\n"; + if (isset($_REQUEST['query'])) + echo "\n"; + if (isset($_REQUEST['count'])) + echo "\n"; + if (isset($_REQUEST['return'])) + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "

"; + if (!$error) echo "\n"; + echo "\n"; + + if($fksprops !== false) { + if ($conf['autocomplete'] != 'default off') + echo "\n"; + else + echo "\n"; + } + + echo "

\n"; + echo "
\n"; + } + else { + if (!isset($_POST['values'])) $_POST['values'] = array(); + if (!isset($_POST['nulls'])) $_POST['nulls'] = array(); + + $status = $data->editRow($_POST['table'], $_POST['values'], $_POST['nulls'], + $_POST['format'], $_POST['types'], $key); + if ($status == 0) + doBrowse($lang['strrowupdated']); + elseif ($status == -2) + doEditRow(true, $lang['strrownotunique']); + else + doEditRow(true, $lang['strrowupdatedbad']); + } + + } + + /** + * Show confirmation of drop and perform actual drop + */ + function doDelRow($confirm) { + global $data, $misc; + global $lang; + + if ($confirm) { + $misc->printTrail($_REQUEST['subject']); + $misc->printTitle($lang['strdeleterow']); + + $rs = $data->browseRow($_REQUEST['table'], $_REQUEST['key']); + + echo "
\n"; + echo $misc->form; + + if ($rs->recordCount() == 1) { + echo "

{$lang['strconfdeleterow']}

\n"; + + $fkinfo = array(); + echo ""; + printTableHeaderCells($rs, false, true); + echo ""; + echo "\n"; + printTableRowCells($rs, $fkinfo, true); + echo "\n"; + echo "
\n"; + echo "
\n"; + + echo "\n"; + echo "\n"; + echo "\n"; + } + elseif ($rs->recordCount() != 1) { + echo "

{$lang['strrownotunique']}

\n"; + echo "\n"; + } + else { + echo "

{$lang['strinvalidparam']}

\n"; + echo "\n"; + } + if (isset($_REQUEST['table'])) + echo "\n"; + if (isset($_REQUEST['subject'])) + echo "\n"; + if (isset($_REQUEST['query'])) + echo "\n"; + if (isset($_REQUEST['count'])) + echo "\n"; + if (isset($_REQUEST['return'])) + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "
\n"; + } + else { + $status = $data->deleteRow($_POST['table'], unserialize(urldecode($_POST['key']))); + if ($status == 0) + doBrowse($lang['strrowdeleted']); + elseif ($status == -2) + doBrowse($lang['strrownotunique']); + else + doBrowse($lang['strrowdeletedbad']); + } + + } + + /* build & return the FK information data structure + * used when deciding if a field should have a FK link or not*/ + function &getFKInfo() { + global $data, $misc, $lang; + + // Get the foreign key(s) information from the current table + $fkey_information = array('byconstr' => array(), 'byfield' => array()); + + if (isset($_REQUEST['table'])) { + $constraints = $data->getConstraintsWithFields($_REQUEST['table']); + if ($constraints->recordCount() > 0) { + + $fkey_information['common_url'] = $misc->getHREF('schema') .'&subject=table'; + + /* build the FK constraints data structure */ + while (!$constraints->EOF) { + $constr =& $constraints->fields; + if ($constr['contype'] == 'f') { + + if (!isset($fkey_information['byconstr'][$constr['conid']])) { + $fkey_information['byconstr'][$constr['conid']] = array ( + 'url_data' => 'table='. urlencode($constr['f_table']) .'&schema='. urlencode($constr['f_schema']), + 'fkeys' => array(), + 'consrc' => $constr['consrc'] + ); + } + + $fkey_information['byconstr'][$constr['conid']]['fkeys'][$constr['p_field']] = $constr['f_field']; + + if (!isset($fkey_information['byfield'][$constr['p_field']])) + $fkey_information['byfield'][$constr['p_field']] = array(); + + $fkey_information['byfield'][$constr['p_field']][] = $constr['conid']; + } + $constraints->moveNext(); + } + } + } + + return $fkey_information; + } + + /* Print table header cells + * @param $args - associative array for sort link parameters + * */ + function printTableHeaderCells(&$rs, $args, $withOid) { + global $misc, $data, $conf; + $j = 0; + + foreach ($rs->fields as $k => $v) { + + if (($k === $data->id) && ( !($withOid && $conf['show_oids']) )) { + $j++; + continue; + } + $finfo = $rs->fetchField($j); + + if ($args === false) { + echo "", $misc->printVal($finfo->name), "\n"; + } + else { + $args['page'] = $_REQUEST['page']; + $args['sortkey'] = $j + 1; + // Sort direction opposite to current direction, unless it's currently '' + $args['sortdir'] = ( + $_REQUEST['sortdir'] == 'asc' + and $_REQUEST['sortkey'] == ($j + 1) + ) ? 'desc' : 'asc'; + + $sortLink = http_build_query($args); + + echo "" + , $misc->printVal($finfo->name); + if($_REQUEST['sortkey'] == ($j + 1)) { + if($_REQUEST['sortdir'] == 'asc') + echo 'asc'; + else echo 'desc'; + } + echo "\n"; + } + $j++; + } + + reset($rs->fields); + } + + /* Print data-row cells */ + function printTableRowCells(&$rs, &$fkey_information, $withOid) { + global $data, $misc, $conf; + $j = 0; + + if (!isset($_REQUEST['strings'])) $_REQUEST['strings'] = 'collapsed'; + + foreach ($rs->fields as $k => $v) { + $finfo = $rs->fetchField($j++); + + if (($k === $data->id) && ( !($withOid && $conf['show_oids']) )) continue; + elseif ($v !== null && $v == '') echo " "; + else { + echo ""; + + if (($v !== null) && isset($fkey_information['byfield'][$k])) { + foreach ($fkey_information['byfield'][$k] as $conid) { + + $query_params = $fkey_information['byconstr'][$conid]['url_data']; + + foreach ($fkey_information['byconstr'][$conid]['fkeys'] as $p_field => $f_field) { + $query_params .= '&'. urlencode("fkey[{$f_field}]") .'='. urlencode($rs->fields[$p_field]); + } + + /* $fkey_information['common_url'] is already urlencoded */ + $query_params .= '&'. $fkey_information['common_url']; + echo ""; + } + echo $misc->printVal($v, $finfo->type, array('null' => true, 'clip' => ($_REQUEST['strings']=='collapsed'), 'class' => 'fk_value')); + } else { + echo $misc->printVal($v, $finfo->type, array('null' => true, 'clip' => ($_REQUEST['strings']=='collapsed'))); + } + echo ""; + } + } + } + + /* Print the FK row, used in ajax requests */ + function doBrowseFK() { + global $data, $misc, $lang; + + $ops = array(); + foreach($_REQUEST['fkey'] as $x => $y) { + $ops[$x] = '='; + } + $query = $data->getSelectSQL($_REQUEST['table'], array(), $_REQUEST['fkey'], $ops); + $_REQUEST['query'] = $query; + + $fkinfo =& getFKInfo(); + + $max_pages = 1; + // Retrieve page from query. $max_pages is returned by reference. + $rs = $data->browseQuery('SELECT', $_REQUEST['table'], $_REQUEST['query'], + null, null, 1, 1, $max_pages); + + echo "\"[delete]\"icon('Delete') ."\" />\n"; + echo "
"; + + if (is_object($rs) && $rs->recordCount() > 0) { + /* we are browsing a referenced table here + * we should show OID if show_oids is true + * so we give true to withOid in functions bellow + * as 3rd paramter */ + + echo ""; + printTableHeaderCells($rs, false, true); + echo ""; + echo "\n"; + printTableRowCells($rs, $fkinfo, true); + echo "\n"; + echo "
\n"; + } + else + echo $lang['strnodata']; + + echo "
"; + + exit; + } + + /** + * Displays requested data + */ + function doBrowse($msg = '') { + global $data, $conf, $misc, $lang, $plugin_manager; + + $save_history = false; + // If current page is not set, default to first page + if (!isset($_REQUEST['page'])) + $_REQUEST['page'] = 1; + if (!isset($_REQUEST['nohistory'])) + $save_history = true; + + if (isset($_REQUEST['subject'])) { + $subject = $_REQUEST['subject']; + if (isset($_REQUEST[$subject])) $object = $_REQUEST[$subject]; + } + else { + $subject = ''; + } + + $misc->printTrail(isset($subject) ? $subject : 'database'); + $misc->printTabs($subject,'browse'); + + /* This code is used when browsing FK in pure-xHTML (without js) */ + if (isset($_REQUEST['fkey'])) { + $ops = array(); + foreach($_REQUEST['fkey'] as $x => $y) { + $ops[$x] = '='; + } + $query = $data->getSelectSQL($_REQUEST['table'], array(), $_REQUEST['fkey'], $ops); + $_REQUEST['query'] = $query; + } + + if (isset($object)) { + if (isset($_REQUEST['query'])) { + $_SESSION['sqlquery'] = $_REQUEST['query']; + $misc->printTitle($lang['strselect']); + $type = 'SELECT'; + } + else { + $type = 'TABLE'; + } + } else { + $misc->printTitle($lang['strqueryresults']); + /*we comes from sql.php, $_SESSION['sqlquery'] has been set there */ + $type = 'QUERY'; + } + + $misc->printMsg($msg); + + // If 'sortkey' is not set, default to '' + if (!isset($_REQUEST['sortkey'])) $_REQUEST['sortkey'] = ''; + + // If 'sortdir' is not set, default to '' + if (!isset($_REQUEST['sortdir'])) $_REQUEST['sortdir'] = ''; + + // If 'strings' is not set, default to collapsed + if (!isset($_REQUEST['strings'])) $_REQUEST['strings'] = 'collapsed'; + + // Fetch unique row identifier, if this is a table browse request. + if (isset($object)) + $key = $data->getRowIdentifier($object); + else + $key = array(); + + // Set the schema search path + if (isset($_REQUEST['search_path'])) { + if ($data->setSearchPath(array_map('trim',explode(',',$_REQUEST['search_path']))) != 0) { + return; + } + } + + // Retrieve page from query. $max_pages is returned by reference. + $rs = $data->browseQuery($type, + isset($object) ? $object : null, + isset($_SESSION['sqlquery']) ? $_SESSION['sqlquery'] : null, + $_REQUEST['sortkey'], $_REQUEST['sortdir'], $_REQUEST['page'], + $conf['max_rows'], $max_pages); + + $fkey_information =& getFKInfo(); + + // Build strings for GETs in array + $_gets = array( + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'] + ); + + if (isset($_REQUEST['schema'])) $_gets['schema'] = $_REQUEST['schema']; + if (isset($object)) $_gets[$subject] = $object; + if (isset($subject)) $_gets['subject'] = $subject; + if (isset($_REQUEST['query'])) $_gets['query'] = $_REQUEST['query']; + if (isset($_REQUEST['count'])) $_gets['count'] = $_REQUEST['count']; + if (isset($_REQUEST['return'])) $_gets['return'] = $_REQUEST['return']; + if (isset($_REQUEST['search_path'])) $_gets['search_path'] = $_REQUEST['search_path']; + if (isset($_REQUEST['table'])) $_gets['table'] = $_REQUEST['table']; + if (isset($_REQUEST['sortkey'])) $_gets['sortkey'] = $_REQUEST['sortkey']; + if (isset($_REQUEST['sortdir'])) $_gets['sortdir'] = $_REQUEST['sortdir']; + if (isset($_REQUEST['nohistory'])) $_gets['nohistory'] = $_REQUEST['nohistory']; + $_gets['strings'] = $_REQUEST['strings']; + + if ($save_history && is_object($rs) && ($type == 'QUERY')) //{ + $misc->saveScriptHistory($_REQUEST['query']); + + echo '

'; + + if (is_object($rs) && $rs->recordCount() > 0) { + // Show page navigation + $misc->printPages($_REQUEST['page'], $max_pages, $_gets); + + echo "\n"; + + // Check that the key is actually in the result set. This can occur for select + // operations where the key fields aren't part of the select. XXX: We should + // be able to support this, somehow. + foreach ($key as $v) { + // If a key column is not found in the record set, then we + // can't use the key. + if (!in_array($v, array_keys($rs->fields))) { + $key = array(); + break; + } + } + + $buttons = array( + 'edit' => array ( + 'content' => $lang['stredit'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'display.php', + 'urlvars' => array_merge(array ( + 'action' => 'confeditrow', + 'strings' => $_REQUEST['strings'], + 'page' => $_REQUEST['page'], + ), $_gets) + ) + ) + ), + 'delete' => array ( + 'content' => $lang['strdelete'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'display.php', + 'urlvars' => array_merge(array ( + 'action' => 'confdelrow', + 'strings' => $_REQUEST['strings'], + 'page' => $_REQUEST['page'], + ), $_gets) + ) + ) + ), + ); + $actions = array( + 'actionbuttons' => &$buttons, + 'place' => 'display-browse' + ); + $plugin_manager->do_hook('actionbuttons', $actions); + + foreach (array_keys($actions['actionbuttons']) as $action) { + $actions['actionbuttons'][$action]['attr']['href']['urlvars'] = array_merge( + $actions['actionbuttons'][$action]['attr']['href']['urlvars'], + $_gets + ); + } + + $edit_params = isset($actions['actionbuttons']['edit'])? + $actions['actionbuttons']['edit']:array(); + $delete_params = isset($actions['actionbuttons']['delete'])? + $actions['actionbuttons']['delete']:array(); + + // Display edit and delete actions if we have a key + $colspan = count($buttons); + if ($colspan > 0 and count($key) > 0) + echo "\n"; + + /* we show OIDs only if we are in TABLE or SELECT type browsing */ + printTableHeaderCells($rs, $_gets, isset($object)); + + echo "\n"; + + $i = 0; + reset($rs->fields); + while (!$rs->EOF) { + $id = (($i % 2) == 0 ? '1' : '2'); + echo "\n"; + // Display edit and delete links if we have a key + if ($colspan > 0 and count($key) > 0) { + $keys_array = array(); + $has_nulls = false; + foreach ($key as $v) { + if ($rs->fields[$v] === null) { + $has_nulls = true; + break; + } + $keys_array["key[{$v}]"] = $rs->fields[$v]; + } + if ($has_nulls) { + echo "\n"; + } else { + + if (isset($actions['actionbuttons']['edit'])) { + $actions['actionbuttons']['edit'] = $edit_params; + $actions['actionbuttons']['edit']['attr']['href']['urlvars'] = array_merge( + $actions['actionbuttons']['edit']['attr']['href']['urlvars'], + $keys_array + ); + } + + if (isset($actions['actionbuttons']['delete'])) { + $actions['actionbuttons']['delete'] = $delete_params; + $actions['actionbuttons']['delete']['attr']['href']['urlvars'] = array_merge( + $actions['actionbuttons']['delete']['attr']['href']['urlvars'], + $keys_array + ); + } + + foreach ($actions['actionbuttons'] as $action) { + echo "\n"; + } + } + } + + print printTableRowCells($rs, $fkey_information, isset($object)); + + echo "\n"; + $rs->moveNext(); + $i++; + } + echo "
{$lang['stractions']}
 "; + $misc->printLink($action); + echo "
\n"; + + echo "

", $rs->recordCount(), " {$lang['strrows']}

\n"; + // Show page navigation + $misc->printPages($_REQUEST['page'], $max_pages, $_gets); + } + else echo "

{$lang['strnodata']}

\n"; + + // Navigation links + $navlinks = array(); + + $fields = array( + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + ); + + if (isset($_REQUEST['schema'])) + $fields['schema'] = $_REQUEST['schema']; + + // Return + if (isset($_REQUEST['return'])) { + $urlvars = $misc->getSubjectParams($_REQUEST['return']); + + $navlinks['back'] = array ( + 'attr'=> array ( + 'href' => array ( + 'url' => $urlvars['url'], + 'urlvars' => $urlvars['params'] + ) + ), + 'content' => $lang['strback'] + ); + } + + // Edit SQL link + if ($type == 'QUERY') + $navlinks['edit'] = array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'database.php', + 'urlvars' => array_merge($fields, array ( + 'action' => 'sql', + 'paginate' => 'on', + )) + ) + ), + 'content' => $lang['streditsql'] + ); + + // Expand/Collapse + if ($_REQUEST['strings'] == 'expanded') + $navlinks['collapse'] = array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'display.php', + 'urlvars' => array_merge( + $_gets, + array ( + 'strings' => 'collapsed', + 'page' => $_REQUEST['page'] + )) + ) + ), + 'content' => $lang['strcollapse'] + ); + else + $navlinks['collapse'] = array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'display.php', + 'urlvars' => array_merge( + $_gets, + array ( + 'strings' => 'expanded', + 'page' => $_REQUEST['page'] + )) + ) + ), + 'content' => $lang['strexpand'] + ); + + // Create view and download + if (isset($_REQUEST['query']) && isset($rs) && is_object($rs) && $rs->recordCount() > 0) { + + + // Report views don't set a schema, so we need to disable create view in that case + if (isset($_REQUEST['schema'])) { + + $navlinks['createview'] = array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'views.php', + 'urlvars' => array_merge($fields, array( + 'action' => 'create', + 'formDefinition' => $_REQUEST['query'] + )) + ) + ), + 'content' => $lang['strcreateview'] + ); + } + + $urlvars = array(); + if (isset($_REQUEST['search_path'])) + $urlvars['search_path'] = $_REQUEST['search_path']; + + $navlinks['download'] = array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'dataexport.php', + 'urlvars' => array_merge($fields, $urlvars) + ) + ), + 'content' => $lang['strdownload'] + ); + } + + // Insert + if (isset($object) && (isset($subject) && $subject == 'table')) + $navlinks['insert'] = array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'tables.php', + 'urlvars' => array_merge($fields, array( + 'action' => 'confinsertrow', + 'table' => $object + )) + ) + ), + 'content' => $lang['strinsert'] + ); + + // Refresh + $navlinks['refresh'] = array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'display.php', + 'urlvars' => array_merge( + $_gets, + array( + 'strings' => $_REQUEST['strings'], + 'page' => $_REQUEST['page'] + )) + ) + ), + 'content' => $lang['strrefresh'] + ); + + $misc->printNavLinks($navlinks, 'display-browse', get_defined_vars()); + } + + + /* shortcuts: this function exit the script for ajax purpose */ + if ($action == 'dobrowsefk') { + doBrowseFK(); + } + + $scripts = ""; + + $scripts .= "\n"; + + // Set the title based on the subject of the request + if (isset($_REQUEST['subject']) && isset($_REQUEST[$_REQUEST['subject']])) { + if ($_REQUEST['subject'] == 'table') { + $misc->printHeader( + $lang['strtables'].': '.$_REQUEST[$_REQUEST['subject']], + $scripts + ); + } + else if ($_REQUEST['subject'] == 'view') { + $misc->printHeader( + $lang['strviews'].': '.$_REQUEST[$_REQUEST['subject']], + $scripts + ); + } + else if ($_REQUEST['subject'] == 'column') { + $misc->printHeader( + $lang['strcolumn'].': '.$_REQUEST[$_REQUEST['subject']], + $scripts + ); + } + } + else + $misc->printHeader($lang['strqueryresults']); + + $misc->printBody(); + + switch ($action) { + case 'editrow': + if (isset($_POST['save'])) doEditRow(false); + else doBrowse(); + break; + case 'confeditrow': + doEditRow(true); + break; + case 'delrow': + if (isset($_POST['yes'])) doDelRow(false); + else doBrowse(); + break; + case 'confdelrow': + doDelRow(true); + break; + default: + doBrowse(); + break; + } + + $misc->printFooter(); +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/domains.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/domains.php new file mode 100644 index 00000000..a9b7e992 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/domains.php @@ -0,0 +1,587 @@ +alterDomain($_POST['domain'], $_POST['domdefault'], + isset($_POST['domnotnull']), $_POST['domowner']); + if ($status == 0) + doProperties($lang['strdomainaltered']); + else + doAlter($lang['strdomainalteredbad']); + } + + /** + * Allow altering a domain + */ + function doAlter($msg = '') { + global $data, $misc; + global $lang; + + $misc->printTrail('domain'); + $misc->printTitle($lang['stralter'],'pg.domain.alter'); + $misc->printMsg($msg); + + // Fetch domain info + $domaindata = $data->getDomain($_REQUEST['domain']); + // Fetch all users + $users = $data->getUsers(); + + if ($domaindata->recordCount() > 0) { + if (!isset($_POST['domname'])) { + $_POST['domtype'] = $domaindata->fields['domtype']; + $_POST['domdefault'] = $domaindata->fields['domdef']; + $domaindata->fields['domnotnull'] = $data->phpBool($domaindata->fields['domnotnull']); + if ($domaindata->fields['domnotnull']) $_POST['domnotnull'] = 'on'; + $_POST['domowner'] = $domaindata->fields['domowner']; + } + + // Display domain info + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "
{$lang['strname']}", $misc->printVal($domaindata->fields['domname']), "
{$lang['strtype']}", $misc->printVal($domaindata->fields['domtype']), "
{$lang['strdefault']}
{$lang['strowner']}
\n"; + echo "

\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + else echo "

{$lang['strnodata']}

\n"; + } + + /** + * Confirm and then actually add a CHECK constraint + */ + function addCheck($confirm, $msg = '') { + global $data, $misc; + global $lang; + + if (!isset($_POST['name'])) $_POST['name'] = ''; + if (!isset($_POST['definition'])) $_POST['definition'] = ''; + + if ($confirm) { + $misc->printTrail('domain'); + $misc->printTitle($lang['straddcheck'],'pg.constraint.check'); + $misc->printMsg($msg); + + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + + echo "\n"; + + echo "\n"; + echo "
{$lang['strname']}{$lang['strdefinition']}
_maxNameLen}\" value=\"", + htmlspecialchars($_POST['name']), "\" />()
\n"; + + echo "

\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + + } + else { + if (trim($_POST['definition']) == '') + addCheck(true, $lang['strcheckneedsdefinition']); + else { + $status = $data->addDomainCheckConstraint($_POST['domain'], + $_POST['definition'], $_POST['name']); + if ($status == 0) + doProperties($lang['strcheckadded']); + else + addCheck(true, $lang['strcheckaddedbad']); + } + } + } + + /** + * Show confirmation of drop constraint and perform actual drop + */ + function doDropConstraint($confirm, $msg = '') { + global $data, $misc; + global $lang; + + if ($confirm) { + $misc->printTrail('domain'); + $misc->printTitle($lang['strdrop'],'pg.constraint.drop'); + $misc->printMsg($msg); + + echo "

", sprintf($lang['strconfdropconstraint'], $misc->printVal($_REQUEST['constraint']), + $misc->printVal($_REQUEST['domain'])), "

\n"; + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo $misc->form; + echo "

\n"; + echo "\n"; + echo "\n"; + echo "
\n"; + } + else { + $status = $data->dropDomainConstraint($_POST['domain'], $_POST['constraint'], isset($_POST['cascade'])); + if ($status == 0) + doProperties($lang['strconstraintdropped']); + else + doDropConstraint(true, $lang['strconstraintdroppedbad']); + } + + } + + /** + * Show properties for a domain. Allow manipulating constraints as well. + */ + function doProperties($msg = '') { + global $data, $misc; + global $lang; + + $misc->printTrail('domain'); + $misc->printTitle($lang['strproperties'],'pg.domain'); + $misc->printMsg($msg); + + $domaindata = $data->getDomain($_REQUEST['domain']); + + if ($domaindata->recordCount() > 0) { + // Show comment if any + if ($domaindata->fields['domcomment'] !== null) + echo "

", $misc->printVal($domaindata->fields['domcomment']), "

\n"; + + // Display domain info + $domaindata->fields['domnotnull'] = $data->phpBool($domaindata->fields['domnotnull']); + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "
{$lang['strname']}", $misc->printVal($domaindata->fields['domname']), "
{$lang['strtype']}", $misc->printVal($domaindata->fields['domtype']), "
{$lang['strnotnull']}", ($domaindata->fields['domnotnull'] ? 'NOT NULL' : ''), "
{$lang['strdefault']}", $misc->printVal($domaindata->fields['domdef']), "
{$lang['strowner']}", $misc->printVal($domaindata->fields['domowner']), "
\n"; + + // Display domain constraints + echo "

{$lang['strconstraints']}

\n"; + if ($data->hasDomainConstraints()) { + $domaincons = $data->getDomainConstraints($_REQUEST['domain']); + + $columns = array ( + 'name' => array ( + 'title' => $lang['strname'], + 'field' => field('conname') + ), + 'definition' => array ( + 'title' => $lang['strdefinition'], + 'field' => field('consrc'), + ), + 'actions' => array ( + 'title' => $lang['stractions'], + ) + ); + + $actions = array ( + 'drop' => array ( + 'content' => $lang['strdrop'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'domains.php', + 'urlvars' => array ( + 'action' => 'confirm_drop_con', + 'domain' => $_REQUEST['domain'], + 'constraint' => field('conname'), + 'type' => field('contype'), + ) + ) + ) + ) + ); + + $misc->printTable($domaincons, $columns, $actions, 'domains-properties', $lang['strnodata']); + } + } + else echo "

{$lang['strnodata']}

\n"; + + $navlinks = array ( + 'drop' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'domains.php', + 'urlvars' => array ( + 'action' => 'confirm_drop', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'domain' => $_REQUEST['domain'] + ) + ) + ), + 'content' => $lang['strdrop'] + ) + ); + if ($data->hasAlterDomains()) { + $navlinks['addcheck'] = array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'domains.php', + 'urlvars' => array ( + 'action' => 'add_check', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'domain' => $_REQUEST['domain'] + ) + ) + ), + 'content' => $lang['straddcheck'] + ); + $navlinks['alter'] = array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'domains.php', + 'urlvars' => array ( + 'action' => 'alter', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'domain' => $_REQUEST['domain'] + ) + ) + ), + 'content' => $lang['stralter'] + ); + } + + $misc->printNavLinks($navlinks, 'domains-properties', get_defined_vars()); + } + + /** + * Show confirmation of drop and perform actual drop + */ + function doDrop($confirm) { + global $data, $misc; + global $lang; + + if ($confirm) { + $misc->printTrail('domain'); + $misc->printTitle($lang['strdrop'],'pg.domain.drop'); + + echo "

", sprintf($lang['strconfdropdomain'], $misc->printVal($_REQUEST['domain'])), "

\n"; + echo "
\n"; + echo "

\n"; + echo "

\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + else { + $status = $data->dropDomain($_POST['domain'], isset($_POST['cascade'])); + if ($status == 0) + doDefault($lang['strdomaindropped']); + else + doDefault($lang['strdomaindroppedbad']); + } + + } + + /** + * Displays a screen where they can enter a new domain + */ + function doCreate($msg = '') { + global $data, $misc; + global $lang; + + if (!isset($_POST['domname'])) $_POST['domname'] = ''; + if (!isset($_POST['domtype'])) $_POST['domtype'] = ''; + if (!isset($_POST['domlength'])) $_POST['domlength'] = ''; + if (!isset($_POST['domarray'])) $_POST['domarray'] = ''; + if (!isset($_POST['domdefault'])) $_POST['domdefault'] = ''; + if (!isset($_POST['domcheck'])) $_POST['domcheck'] = ''; + + $types = $data->getTypes(true); + + $misc->printTrail('schema'); + $misc->printTitle($lang['strcreatedomain'],'pg.domain.create'); + $misc->printMsg($msg); + + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + if ($data->hasDomainConstraints()) { + echo "\n"; + echo "\n"; + } + echo "
{$lang['strname']}_maxNameLen}\" value=\"", + htmlspecialchars($_POST['domname']), "\" />
{$lang['strtype']}\n"; + // Output return type list + echo "\n"; + + // Type length + echo ""; + + // Output array type selector + echo "
{$lang['strdefault']}
{$lang['strconstraints']}CHECK ()
\n"; + echo "

\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + + /** + * Actually creates the new domain in the database + */ + function doSaveCreate() { + global $data, $lang; + + if (!isset($_POST['domcheck'])) $_POST['domcheck'] = ''; + + // Check that they've given a name and a definition + if ($_POST['domname'] == '') doCreate($lang['strdomainneedsname']); + else { + $status = $data->createDomain($_POST['domname'], $_POST['domtype'], $_POST['domlength'], $_POST['domarray'] != '', + isset($_POST['domnotnull']), $_POST['domdefault'], $_POST['domcheck']); + if ($status == 0) + doDefault($lang['strdomaincreated']); + else + doCreate($lang['strdomaincreatedbad']); + } + } + + /** + * Show default list of domains in the database + */ + function doDefault($msg = '') { + global $data, $conf, $misc; + global $lang; + + $misc->printTrail('schema'); + $misc->printTabs('schema','domains'); + $misc->printMsg($msg); + + $domains = $data->getDomains(); + + $columns = array( + 'domain' => array( + 'title' => $lang['strdomain'], + 'field' => field('domname'), + 'url' => "domains.php?action=properties&{$misc->href}&", + 'vars' => array('domain' => 'domname'), + ), + 'type' => array( + 'title' => $lang['strtype'], + 'field' => field('domtype'), + ), + 'notnull' => array( + 'title' => $lang['strnotnull'], + 'field' => field('domnotnull'), + 'type' => 'bool', + 'params'=> array('true' => 'NOT NULL', 'false' => ''), + ), + 'default' => array( + 'title' => $lang['strdefault'], + 'field' => field('domdef'), + ), + 'owner' => array( + 'title' => $lang['strowner'], + 'field' => field('domowner'), + ), + 'actions' => array( + 'title' => $lang['stractions'], + ), + 'comment' => array( + 'title' => $lang['strcomment'], + 'field' => field('domcomment'), + ), + ); + + $actions = array( + 'alter' => array( + 'content' => $lang['stralter'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'domains.php', + 'urlvars' => array ( + 'action' => 'alter', + 'domain' => field('domname') + ) + ) + ) + ), + 'drop' => array( + 'content' => $lang['strdrop'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'domains.php', + 'urlvars' => array ( + 'action' => 'confirm_drop', + 'domain' => field('domname') + ) + ) + ) + ), + ); + + if (!$data->hasAlterDomains()) unset($actions['alter']); + + $misc->printTable($domains, $columns, $actions, 'domains-domains', $lang['strnodomains']); + + $navlinks = array ( + 'create' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'domains.php', + 'urlvars' => array ( + 'action' => 'create', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + ) + ) + ), + 'content' => $lang['strcreatedomain'] + ) + ); + $misc->printNavLinks($navlinks, 'domains-domains', get_defined_vars()); + } + + /** + * Generate XML for the browser tree. + */ + function doTree() { + global $misc, $data; + + $domains = $data->getDomains(); + + $reqvars = $misc->getRequestVars('domain'); + + $attrs = array( + 'text' => field('domname'), + 'icon' => 'Domain', + 'toolTip'=> field('domcomment'), + 'action' => url('domains.php', + $reqvars, + array( + 'action' => 'properties', + 'domain' => field('domname') + ) + ) + ); + + $misc->printTree($domains, $attrs, 'domains'); + exit; + } + + if ($action == 'tree') doTree(); + + $misc->printHeader($lang['strdomains']); + $misc->printBody(); + + switch ($action) { + case 'add_check': + addCheck(true); + break; + case 'save_add_check': + if (isset($_POST['cancel'])) doProperties(); + else addCheck(false); + break; + case 'drop_con': + if (isset($_POST['drop'])) doDropConstraint(false); + else doProperties(); + break; + case 'confirm_drop_con': + doDropConstraint(true); + break; + case 'save_create': + if (isset($_POST['cancel'])) doDefault(); + else doSaveCreate(); + break; + case 'create': + doCreate(); + break; + case 'drop': + if (isset($_POST['drop'])) doDrop(false); + else doDefault(); + break; + case 'confirm_drop': + doDrop(true); + break; + case 'save_alter': + if (isset($_POST['alter'])) doSaveAlter(); + else doProperties(); + break; + case 'alter': + doAlter(); + break; + case 'properties': + doProperties(); + break; + default: + doDefault(); + break; + } + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/fulltext.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/fulltext.php new file mode 100644 index 00000000..da8b92b0 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/fulltext.php @@ -0,0 +1,1120 @@ +printTrail('schema'); + $misc->printTabs('schema','fulltext'); + $misc->printTabs('fulltext','ftsconfigs'); + $misc->printMsg($msg); + + $cfgs = $data->getFtsConfigurations(false); + + $columns = array( + 'configuration' => array( + 'title' => $lang['strftsconfig'], + 'field' => field('name'), + 'url' => "fulltext.php?action=viewconfig&{$misc->href}&", + 'vars' => array('ftscfg' => 'name'), + ), + 'schema' => array( + 'title' => $lang['strschema'], + 'field' => field('schema'), + ), + 'actions' => array( + 'title' => $lang['stractions'], + ), + 'comment' => array( + 'title' => $lang['strcomment'], + 'field' => field('comment'), + ), + ); + + $actions = array( + 'drop' => array( + 'content' => $lang['strdrop'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'fulltext.php', + 'urlvars' => array ( + 'action' => 'dropconfig', + 'ftscfg' => field('name') + ) + ) + ) + ), + 'alter' => array( + 'content' => $lang['stralter'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'fulltext.php', + 'urlvars' => array ( + 'action' => 'alterconfig', + 'ftscfg' => field('name') + ) + ) + ) + ), + ); + + $misc->printTable($cfgs, $columns, $actions, 'fulltext-fulltext', $lang['strftsnoconfigs']); + + $navlinks = array( + 'createconf' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'fulltext.php', + 'urlvars' => array ( + 'action' => 'createconfig', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'] + ) + ) + ), + 'content' => $lang['strftscreateconfig'] + ) + ); + + $misc->printNavLinks($navlinks, 'fulltext-fulltext', get_defined_vars()); + } + + function doDropConfig($confirm) { + global $data, $data, $misc; + global $lang, $_reload_browser; + + if ($confirm) { + $misc->printTrail('ftscfg'); + $misc->printTitle($lang['strdrop'], 'pg.ftscfg.drop'); + + echo "

", sprintf($lang['strconfdropftsconfig'], $misc->printVal($_REQUEST['ftscfg'])), "

\n"; + + echo "
\n"; + echo "

\n"; + echo "

\n"; + echo "\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + else { + $status = $data->dropFtsConfiguration($_POST['ftscfg'], isset($_POST['cascade'])); + if ($status == 0) { + $_reload_browser = true; + doDefault($lang['strftsconfigdropped']); + } + else + doDefault($lang['strftsconfigdroppedbad']); + } + + } + + function doDropDict($confirm) { + global $data, $data, $misc; + global $lang, $_reload_browser; + + if ($confirm) { + $misc->printTrail('ftscfg'); // TODO: change to smth related to dictionary + $misc->printTitle($lang['strdrop'], 'pg.ftsdict.drop'); + + echo "

", sprintf($lang['strconfdropftsdict'], $misc->printVal($_REQUEST['ftsdict'])), "

\n"; + + echo "
\n"; + echo "

\n"; + echo "

\n"; + echo "\n"; + echo "\n"; + //echo "\n"; + echo "

\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + else { + $status = $data->dropFtsDictionary($_POST['ftsdict'], isset($_POST['cascade'])); + if ($status == 0) { + $_reload_browser = true; + doViewDicts($lang['strftsdictdropped']); + } + else + doViewDicts($lang['strftsdictdroppedbad']); + } + + } + + /** + * Displays a screen where one can enter a new FTS configuration + */ + function doCreateConfig($msg = '') { + global $data, $misc; + global $lang; + + include_once('./classes/Gui.php'); + + $server_info = $misc->getServerInfo(); + + if (!isset($_POST['formName'])) $_POST['formName'] = ''; + if (!isset($_POST['formParser'])) $_POST['formParser'] = ''; + if (!isset($_POST['formTemplate'])) $_POST['formTemplate'] = ''; + if (!isset($_POST['formWithMap'])) $_POST['formWithMap'] = ''; + if (!isset($_POST['formComment'])) $_POST['formComment'] = ''; + + // Fetch all FTS configurations from the database + $ftscfgs = $data->getFtsConfigurations(); + // Fetch all FTS parsers from the database + $ftsparsers = $data->getFtsParsers(); + + $misc->printTrail('schema'); + $misc->printTitle($lang['strftscreateconfig'], 'pg.ftscfg.create'); + $misc->printMsg($msg); + + echo "
\n"; + echo "\n"; + /* conf name */ + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + + // Template + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + + // Parser + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + + // Comment + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + + echo "
{$lang['strname']}_maxNameLen}\" value=\"", + htmlspecialchars($_POST['formName']), "\" />
{$lang['strftstemplate']}"; + + $tpls = array(); + $tplsel = ''; + while (!$ftscfgs->EOF) { + $data->fieldClean($ftscfgs->fields['schema']); + $data->fieldClean($ftscfgs->fields['name']); + $tplname = $ftscfgs->fields['schema'] .'.'. $ftscfgs->fields['name']; + $tpls[$tplname] = serialize(array( + 'name' => $ftscfgs->fields['name'], + 'schema' => $ftscfgs->fields['schema'] + )); + if ($_POST['formTemplate'] == $tpls[$tplname]) { + $tplsel = htmlspecialchars($tpls[$tplname]); + } + $ftscfgs->moveNext(); + } + echo GUI::printCombo($tpls, 'formTemplate', true, $tplsel, false); + echo "\n\t\t
{$lang['strftsparser']}\n"; + $ftsparsers_ = array(); + $ftsparsel = ''; + while (!$ftsparsers->EOF) { + $data->fieldClean($ftsparsers->fields['schema']); + $data->fieldClean($ftsparsers->fields['name']); + $parsername = $ftsparsers->fields['schema'] .'.'. $ftsparsers->fields['name']; + + $ftsparsers_[$parsername] = serialize(array( + 'parser' => $ftsparsers->fields['name'], + 'schema' => $ftsparsers->fields['schema'] + )); + if ($_POST['formParser'] == $ftsparsers_[$parsername]) { + $ftsparsel = htmlspecialchars($ftsparsers_[$parsername]); + } + $ftsparsers->moveNext(); + } + echo GUI::printCombo($ftsparsers_, 'formParser', true, $ftsparsel, false); + echo "\n\t\t
{$lang['strcomment']}
\n"; + echo "

\n"; + echo "\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + + /** + * Actually creates the new FTS configuration in the database + */ + function doSaveCreateConfig() { + global $data, $lang, $_reload_browser; + + $err = ''; + // Check that they've given a name + if ($_POST['formName'] == '') $err .= "{$lang['strftsconfigneedsname']}
"; + if (($_POST['formParser'] != '') && ($_POST['formTemplate'] != '')) $err .= "{$lang['strftscantparsercopy']}
"; + + if ($err != '') return doCreateConfig($err); + + if ($_POST['formParser'] != '') $formParser = unserialize($_POST['formParser']); + else $formParser = ''; + if ($_POST['formTemplate'] != '') $formTemplate = unserialize($_POST['formTemplate']); + else $formTemplate = ''; + + $status = $data->createFtsConfiguration($_POST['formName'], $formParser, $formTemplate, $_POST['formComment']); + if ($status == 0) { + $_reload_browser = true; + doDefault($lang['strftsconfigcreated']); + } + else + doCreateConfig($lang['strftsconfigcreatedbad']); + } + + /** + * Display a form to permit editing FTS configuration properies. + */ + function doAlterConfig($msg = '') { + global $data, $misc, $lang; + + $misc->printTrail('ftscfg'); + $misc->printTitle($lang['stralter'], 'pg.ftscfg.alter'); + $misc->printMsg($msg); + + $ftscfg = $data->getFtsConfigurationByName($_REQUEST['ftscfg']); + if ($ftscfg->recordCount() > 0) { + if (!isset($_POST['formComment'])) $_POST['formComment'] = $ftscfg->fields['comment']; + if (!isset($_POST['ftscfg'])) $_POST['ftscfg'] = $_REQUEST['ftscfg']; + if (!isset($_POST['formName'])) $_POST['formName'] = $_REQUEST['ftscfg']; + if (!isset($_POST['formParser'])) $_POST['formParser'] = ''; + + // Fetch all FTS parsers from the database + $ftsparsers = $data->getFtsParsers(); + + echo "
\n"; + echo "\n"; + + echo "\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\n"; + + // Comment + echo "\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\n"; + echo "
{$lang['strname']}"; + echo "\t\t\t_maxNameLen}\" value=\"", + htmlspecialchars($_POST['formName']), "\" />\n"; + echo "\t\t
{$lang['strcomment']}
\n"; + echo "

\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } else { + echo "

{$lang['strnodata']}

\n"; + } + } + + /** + * Save the form submission containing changes to a FTS configuration + */ + function doSaveAlterConfig() { + global $data, $misc, $lang; + + $status = $data->updateFtsConfiguration($_POST['ftscfg'], $_POST['formComment'], $_POST['formName']); + if ($status == 0) + doDefault($lang['strftsconfigaltered']); + else + doAlterConfig($lang['strftsconfigalteredbad']); + } + + /** + * View list of FTS parsers + */ + function doViewParsers($msg = '') { + global $data, $misc; + global $lang; + + $misc->printTrail('schema'); + $misc->printTabs('schema','fulltext'); + $misc->printTabs('fulltext','ftsparsers'); + $misc->printMsg($msg); + + $parsers = $data->getFtsParsers(false); + + $columns = array( + 'schema' => array( + 'title' => $lang['strschema'], + 'field' => field('schema'), + ), + 'name' => array( + 'title' => $lang['strname'], + 'field' => field('name'), + ), + 'comment' => array( + 'title' => $lang['strcomment'], + 'field' => field('comment'), + ), + ); + + $actions = array(); + + $misc->printTable($parsers, $columns, $actions, 'fulltext-viewparsers', $lang['strftsnoparsers']); + + //TODO: navlink to "create parser" + } + + + /** + * View list of FTS dictionaries + */ + function doViewDicts($msg = '') { + global $data, $misc; + global $lang; + + $misc->printTrail('schema'); + $misc->printTabs('schema','fulltext'); + $misc->printTabs('fulltext','ftsdicts'); + $misc->printMsg($msg); + + $dicts = $data->getFtsDictionaries(false); + + $columns = array( + 'schema' => array( + 'title' => $lang['strschema'], + 'field' => field('schema'), + ), + 'name' => array( + 'title' => $lang['strname'], + 'field' => field('name'), + ), + 'actions' => array( + 'title' => $lang['stractions'], + ), + 'comment' => array( + 'title' => $lang['strcomment'], + 'field' => field('comment'), + ), + ); + + $actions = array( + 'drop' => array( + 'content' => $lang['strdrop'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'fulltext.php', + 'urlvars' => array ( + 'action' => 'dropdict', + 'ftsdict' => field('name') + ) + ) + ) + ), + 'alter' => array( + 'content' => $lang['stralter'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'fulltext.php', + 'urlvars' => array ( + 'action' => 'alterdict', + 'ftsdict' => field('name') + ) + ) + ) + ), + ); + + $misc->printTable($dicts, $columns, $actions, 'fulltext-viewdicts', $lang['strftsnodicts']); + + $navlinks = array( + 'createdict' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'fulltext.php', + 'urlvars' => array ( + 'action' => 'createdict', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + ) + ) + ), + 'content' => $lang['strftscreatedict'] + ) + ); + + $misc->printNavLinks($navlinks, 'fulltext-viewdicts', get_defined_vars()); + } + + + /** + * View details of FTS configuration given + */ + function doViewConfig($ftscfg, $msg = '') { + global $data, $misc; + global $lang; + + $misc->printTrail('ftscfg'); + $misc->printTabs('schema','fulltext'); + $misc->printTabs('fulltext','ftsconfigs'); + $misc->printMsg($msg); + + echo "

{$lang['strftsconfigmap']}

\n"; + + $map = $data->getFtsConfigurationMap($ftscfg); + + $columns = array( + 'name' => array( + 'title' => $lang['strftsmapping'], + 'field' => field('name'), + ), + 'dictionaries' => array( + 'title' => $lang['strftsdicts'], + 'field' => field('dictionaries'), + ), + 'actions' => array( + 'title' => $lang['stractions'], + ), + 'comment' => array( + 'title' => $lang['strcomment'], + 'field' => field('description'), + ), + ); + + $actions = array( + 'drop' => array( + 'multiaction' => 'dropmapping', + 'content' => $lang['strdrop'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'fulltext.php', + 'urlvars' => array ( + 'action' => 'dropmapping', + 'mapping' => field('name'), + 'ftscfg' => field('cfgname') + ) + ) + ) + ), + 'alter' => array( + 'content' => $lang['stralter'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'fulltext.php', + 'urlvars' => array ( + 'action' => 'altermapping', + 'mapping' => field('name'), + 'ftscfg' => field('cfgname') + ) + ) + ) + ), + 'multiactions' => array( + 'keycols' => array('mapping' => 'name'), + 'url' => 'fulltext.php', + 'default' => null, + 'vars' => array('ftscfg' => $ftscfg), + ), + + ); + + $misc->printTable($map, $columns, $actions, 'fulltext-viewconfig', $lang['strftsemptymap']); + + $navlinks = array( + 'addmapping' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'fulltext.php', + 'urlvars' => array ( + 'action' => 'addmapping', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'ftscfg' => $ftscfg + ) + ) + ), + 'content' => $lang['strftsaddmapping'] + ) + ); + + $misc->printNavLinks($navlinks, 'fulltext-viewconfig', get_defined_vars()); + } + + /** + * Displays a screen where one can enter a details of a new FTS dictionary + */ + function doCreateDict($msg = '') { + global $data, $misc; + global $lang; + + include_once('./classes/Gui.php'); + + $server_info = $misc->getServerInfo(); + + if (!isset($_POST['formName'])) $_POST['formName'] = ''; + if(!isset($_POST['formIsTemplate'])) $_POST['formIsTemplate'] = false; + if (!isset($_POST['formTemplate'])) $_POST['formTemplate'] = ''; + if (!isset($_POST['formLexize'])) $_POST['formLexize'] = ''; + if (!isset($_POST['formInit'])) $_POST['formInit'] = ''; + if (!isset($_POST['formOption'])) $_POST['formOption'] = ''; + if (!isset($_POST['formComment'])) $_POST['formComment'] = ''; + + // Fetch all FTS dictionaries from the database + $ftstpls = $data->getFtsDictionaryTemplates(); + + $misc->printTrail('schema'); + // TODO: create doc links + $misc->printTitle($lang['strftscreatedict'], 'pg.ftsdict.create'); + $misc->printMsg($msg); + + echo "
\n"; + echo "\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + + // Template + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + + // TODO: what about maxlengths? + // Lexize + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + + // Init + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + + // Option + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + + // Comment + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + + echo "
{$lang['strname']}_maxNameLen}\" value=\"", + htmlspecialchars($_POST['formName']), "\" /> ", + "\n", + "
{$lang['strftstemplate']}"; + $tpls = array(); + $tplsel = ''; + while (!$ftstpls->EOF) { + $data->fieldClean($ftstpls->fields['schema']); + $data->fieldClean($ftstpls->fields['name']); + $tplname = $ftstpls->fields['schema'] .'.'. $ftstpls->fields['name']; + $tpls[$tplname] = serialize(array( + 'name' => $ftstpls->fields['name'], + 'schema' => $ftstpls->fields['schema'] + )); + if ($_POST['formTemplate'] == $tpls[$tplname]) { + $tplsel = htmlspecialchars($tpls[$tplname]); + } + $ftstpls->moveNext(); + } + echo GUI::printCombo($tpls, 'formTemplate', true, $tplsel, false); + echo "\n\t\t
{$lang['strftslexize']}
{$lang['strftsinit']}
{$lang['strftsoptionsvalues']}
{$lang['strcomment']}
\n"; + echo "

\n"; + echo "\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "

\n"; + echo "
\n", + "\n"; + } + + /** + * Actually creates the new FTS dictionary in the database + */ + function doSaveCreateDict() { + global $data, $lang, $_reload_browser; + + // Check that they've given a name + if ($_POST['formName'] == '') doCreateDict($lang['strftsdictneedsname']); + else { + + if(!isset($_POST['formIsTemplate'])) $_POST['formIsTemplate'] = false; + if(isset($_POST['formTemplate'])) + $formTemplate = unserialize($_POST['formTemplate']); + else + $formTemplate = ''; + if(!isset($_POST['formLexize'])) $_POST['formLexize'] = ''; + if(!isset($_POST['formInit'])) $_POST['formInit'] = ''; + if(!isset($_POST['formOption'])) $_POST['formOption'] = ''; + + $status = $data->createFtsDictionary($_POST['formName'], $_POST['formIsTemplate'], + $formTemplate, $_POST['formLexize'], + $_POST['formInit'], $_POST['formOption'], $_POST['formComment'] + ); + + if ($status == 0) { + $_reload_browser = true; + doViewDicts($lang['strftsdictcreated']); + } + else + doCreateDict($lang['strftsdictcreatedbad']); + } + } + + /** + * Display a form to permit editing FTS dictionary properies. + */ + function doAlterDict($msg = '') { + global $data, $misc, $lang; + + $misc->printTrail('ftscfg'); // TODO: change to smth related to dictionary + $misc->printTitle($lang['stralter'], 'pg.ftsdict.alter'); + $misc->printMsg($msg); + + $ftsdict = $data->getFtsDictionaryByName($_REQUEST['ftsdict']); + if ($ftsdict->recordCount() > 0) { + if (!isset($_POST['formComment'])) $_POST['formComment'] = $ftsdict->fields['comment']; + if (!isset($_POST['ftsdict'])) $_POST['ftsdict'] = $_REQUEST['ftsdict']; + if (!isset($_POST['formName'])) $_POST['formName'] = $_REQUEST['ftsdict']; + + echo "
\n"; + echo "\n"; + + echo "\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\n"; + + // Comment + echo "\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\n"; + echo "
{$lang['strname']}"; + echo "\t\t\t_maxNameLen}\" value=\"", + htmlspecialchars($_POST['formName']), "\" />\n"; + echo "\t\t
{$lang['strcomment']}
\n"; + echo "

\n"; + echo "\n"; + echo "

\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } else { + echo "

{$lang['strnodata']}

\n"; + } + } + + /** + * Save the form submission containing changes to a FTS dictionary + */ + function doSaveAlterDict() { + global $data, $misc, $lang; + + $status = $data->updateFtsDictionary($_POST['ftsdict'], $_POST['formComment'], $_POST['formName']); + if ($status == 0) + doViewDicts($lang['strftsdictaltered']); + else + doAlterDict($lang['strftsdictalteredbad']); + } + + /** + * Show confirmation of drop and perform actual drop of FTS mapping + */ + function doDropMapping($confirm) { + global $data, $misc; + global $lang, $_reload_drop_database; + + if (empty($_REQUEST['mapping']) && empty($_REQUEST['ma'])) { + doDefault($lang['strftsspecifymappingtodrop']); + return; + } + + if (empty($_REQUEST['ftscfg'])) { + doDefault($lang['strftsspecifyconfigtoalter']); + return; + } + + if ($confirm) { + $misc->printTrail('ftscfg'); // TODO: proper breadcrumbs + $misc->printTitle($lang['strdrop'], 'pg.ftscfg.alter'); + + echo "
\n"; + + // Case of multiaction drop + if (isset($_REQUEST['ma'])) { + + foreach($_REQUEST['ma'] as $v) { + $a = unserialize(htmlspecialchars_decode($v, ENT_QUOTES)); + echo "

", sprintf($lang['strconfdropftsmapping'], $misc->printVal($a['mapping']), $misc->printVal($_REQUEST['ftscfg'])), "

\n"; + printf('', htmlspecialchars($a['mapping'])); + } + + } else { + echo "

", sprintf($lang['strconfdropftsmapping'], $misc->printVal($_REQUEST['mapping']), $misc->printVal($_REQUEST['ftscfg'])), "

\n"; + echo "\n"; + } + + echo "\n"; + echo "\n"; + echo "

\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "
\n"; + } else { + // Case of multiaction drop + if (is_array($_REQUEST['mapping'])) { + $status = $data->changeFtsMapping($_REQUEST['ftscfg'], $_REQUEST['mapping'], 'drop'); + if ($status != 0) { + doViewConfig($_REQUEST['ftscfg'], $lang['strftsmappingdroppedbad']); + return; + } + doViewConfig($_REQUEST['ftscfg'], $lang['strftsmappingdropped']); + } else { + $status = $data->changeFtsMapping($_REQUEST['ftscfg'], array($_REQUEST['mapping']), 'drop'); + if ($status == 0) { + doViewConfig($_REQUEST['ftscfg'], $lang['strftsmappingdropped']); + } else { + doViewConfig($_REQUEST['ftscfg'], $lang['strftsmappingdroppedbad']); + } + } + } + } + + function doAlterMapping($msg = '') { + global $data, $misc, $lang; + + $misc->printTrail('ftscfg'); + $misc->printTitle($lang['stralter'], 'pg.ftscfg.alter'); + $misc->printMsg($msg); + + $ftsdicts = $data->getFtsDictionaries(); + if ($ftsdicts->recordCount() > 0) { + if (!isset($_POST['formMapping'])) $_POST['formMapping'] = @$_REQUEST['mapping']; + if (!isset($_POST['formDictionary'])) $_POST['formDictionary'] = ''; + if (!isset($_POST['ftscfg'])) $_POST['ftscfg'] = $_REQUEST['ftscfg']; + + echo "
\n"; + + echo "\n"; + echo "\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\n"; + + + // Dictionary + echo "\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\n"; + + echo "
{$lang['strftsmapping']}"; + + // Case of multiaction drop + if (isset($_REQUEST['ma'])) { + $ma_mappings = array(); + $ma_mappings_names = array(); + foreach($_REQUEST['ma'] as $v) { + $a = unserialize(htmlspecialchars_decode($v, ENT_QUOTES)); + printf('', htmlspecialchars($a['mapping'])); + $ma_mappings[] = $data->getFtsMappingByName($_POST['ftscfg'], $a['mapping']); + $ma_mappings_names[] = $a['mapping']; + } + echo implode(", ", $ma_mappings_names); + } else { + $mapping = $data->getFtsMappingByName($_POST['ftscfg'], $_POST['formMapping']); + echo $mapping->fields['name']; + echo "\n"; + } + + echo "\t\t
{$lang['strftsdict']}"; + echo "\t\t\t
\n"; + echo "

\n"; + echo "\n"; + echo "

\n"; + + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } else { + echo "

{$lang['strftsnodictionaries']}

\n"; + } + } + + /** + * Save the form submission containing changes to a FTS mapping + */ + function doSaveAlterMapping() { + global $data, $misc, $lang; + + $mappingArray = (is_array($_POST['formMapping']) ? $_POST['formMapping'] : array($_POST['formMapping'])); + $status = $data->changeFtsMapping($_POST['ftscfg'], $mappingArray, 'alter', $_POST['formDictionary']); + if ($status == 0) + doViewConfig($_POST['ftscfg'], $lang['strftsmappingaltered']); + else + doAlterMapping($lang['strftsmappingalteredbad']); + } + + /** + * Show the form to enter parameters of a new FTS mapping + */ + function doAddMapping($msg = '') { + global $data, $misc, $lang; + + $misc->printTrail('ftscfg'); + $misc->printTitle($lang['stralter'], 'pg.ftscfg.alter'); + $misc->printMsg($msg); + + $ftsdicts = $data->getFtsDictionaries(); + if ($ftsdicts->recordCount() > 0) { + if (!isset($_POST['formMapping'])) $_POST['formMapping'] = ''; + if (!isset($_POST['formDictionary'])) $_POST['formDictionary'] = ''; + if (!isset($_POST['ftscfg'])) $_POST['ftscfg'] = $_REQUEST['ftscfg']; + $mappings = $data->getFtsMappings($_POST['ftscfg']); + + echo "
\n"; + echo "\n"; + echo "\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\n"; + + + // Dictionary + echo "\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\n"; + + echo "
{$lang['strftsmapping']}"; + echo "\t\t\t
{$lang['strftsdict']}"; + echo "\t\t\t
\n"; + echo "

\n"; + echo "\n"; + echo "

\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } else { + echo "

{$lang['strftsnodictionaries']}

\n"; + } + } + + /** + * Save the form submission containing parameters of a new FTS mapping + */ + function doSaveAddMapping() { + global $data, $misc, $lang; + + $mappingArray = (is_array($_POST['formMapping']) ? $_POST['formMapping'] : array($_POST['formMapping'])); + $status = $data->changeFtsMapping($_POST['ftscfg'], $mappingArray, 'add', $_POST['formDictionary']); + if ($status == 0) + doViewConfig($_POST['ftscfg'], $lang['strftsmappingadded']); + else + doAddMapping($lang['strftsmappingaddedbad']); + } + + /** + * Generate XML for the browser tree. + */ + function doTree() { + global $misc, $data, $lang; + + $tabs = $misc->getNavTabs('fulltext'); + $items = $misc->adjustTabsForTree($tabs); + + $reqvars = $misc->getRequestVars('ftscfg'); + + $attrs = array( + 'text' => field('title'), + 'icon' => field('icon'), + 'action' => url('fulltext.php', + $reqvars, + field('urlvars') + ), + 'branch' => url('fulltext.php', + $reqvars, + array( + 'action' => 'subtree', + 'what' => field('icon') // IZ: yeah, it's ugly, but I do not want to change navigation tabs arrays + ) + ), + ); + + $misc->printTree($items, $attrs, 'fts'); + + exit; + } + + function doSubTree($what) { + global $misc, $data, $lang; + + switch($what) { + case 'FtsCfg': + $items = $data->getFtsConfigurations(false); + $urlvars = array('action' => 'viewconfig', 'ftscfg' => field('name')); + break; + case 'FtsDict': + $items = $data->getFtsDictionaries(false); + $urlvars = array('action' => 'viewdicts'); + break; + case 'FtsParser': + $items = $data->getFtsParsers(false); + $urlvars = array('action' => 'viewparsers'); + break; + default: + exit; + } + + $reqvars = $misc->getRequestVars('ftscfg'); + + $attrs = array( + 'text' => field('name'), + 'icon' => $what, + 'toolTip'=> field('comment'), + 'action' => url('fulltext.php', + $reqvars, + $urlvars + ), + 'branch' => ifempty(field('branch'), + '', + url('fulltext.php', + $reqvars, + array( + 'action' => 'subtree', + 'ftscfg' => field('name') + ) + ) + ), + ); + + $misc->printTree($items, $attrs, strtolower($what)); + exit; + } + + + if ($action == 'tree') doTree(); + if ($action == 'subtree') doSubTree($_REQUEST['what']); + + $misc->printHeader($lang['strschemas']); + $misc->printBody(); + + if (isset($_POST['cancel'])) { + if (isset($_POST['prev_action'])) { + $action = $_POST['prev_action']; + } else { + $action = ''; + } + } + + switch ($action) { + case 'createconfig': + if (isset($_POST['create'])) doSaveCreateConfig(); + else doCreateConfig(); + break; + case 'alterconfig': + if (isset($_POST['alter'])) doSaveAlterConfig(); + else doAlterConfig(); + break; + case 'dropconfig': + if (isset($_POST['drop'])) doDropConfig(false); + else doDropConfig(true); + break; + case 'viewconfig': + doViewConfig($_REQUEST['ftscfg']); + break; + case 'viewparsers': + doViewParsers(); + break; + case 'viewdicts': + doViewDicts(); + break; + case 'createdict': + if (isset($_POST['create'])) doSaveCreateDict(); + else doCreateDict(); + break; + case 'alterdict': + if (isset($_POST['alter'])) doSaveAlterDict(); + else doAlterDict(); + break; + case 'dropdict': + if (isset($_POST['drop'])) doDropDict(false); + else doDropDict(true); + break; + case 'dropmapping': + if (isset($_POST['drop'])) doDropMapping(false); + else doDropMapping(true); + break; + case 'altermapping': + if (isset($_POST['alter'])) doSaveAlterMapping(); + else doAlterMapping(); + break; + case 'addmapping': + if (isset($_POST['add'])) doSaveAddMapping(); + else doAddMapping(); + break; + + default: + doDefault(); + break; + } + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/functions.js b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/functions.js new file mode 100644 index 00000000..3a93bf87 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/functions.js @@ -0,0 +1,204 @@ +var g_args = 0; +var g_no_args = new Boolean(false); +/* +function for adding arguments +*/ + +function addArg() { + var baseTR = baseArgTR(); + if(document.getElementById("args_table").insertBefore(baseTR,document.getElementById("parent_add_tr"))) { + g_args++; + return baseTR; + } +} + +function buildArgImages(orig_td) { + var table = document.createElement("table"); + var tbody = document.createElement("tbody"); + var tr = document.createElement("tr"); + var td = document.createElement("td"); + var img = document.createElement("img"); + img.src="images/themes/default/RaiseArgument.png"; + td.onmouseover=function() { this.style.cursor='pointer';this.title=g_lang_strargraise; } + td.onclick=function() { swapArgTR(this.parentNode.parentNode.parentNode.parentNode.parentNode.previousSibling,this.parentNode.parentNode.parentNode.parentNode.parentNode); } + img.className='arg_icon'; + td.appendChild(img); + td.className="data1"; + tr.appendChild(td); + var img = document.createElement("img"); + var td = document.createElement("td"); + img.src="images/themes/default/LowerArgument.png"; + img.className='arg_icon'; + td.appendChild(img); + td.className="data1"; + td.onmouseover=function() { this.style.cursor='pointer';this.title=g_lang_strarglower; } + td.onclick=function() { swapArgTR(this.parentNode.parentNode.parentNode.parentNode.parentNode,this.parentNode.parentNode.parentNode.parentNode.parentNode.nextSibling); } + tr.appendChild(td); + var img = document.createElement("img"); + var td = document.createElement("td"); + img.src="images/themes/default/RemoveArgument.png"; + img.title=g_lang_strargremove; + img.className='arg_icon'; + td.appendChild(img); + td.className="data1"; + td.onmouseover=function() { this.style.cursor='pointer';this.title='Remove'; } + td.onclick=function() { if(g_args>1) { if(confirm(g_lang_strargremoveconfirm)) document.getElementById("args_table").removeChild(this.parentNode.parentNode.parentNode.parentNode.parentNode);g_args--; } else { + if(g_no_args==false) { + disableArgTR(this.parentNode.parentNode.parentNode.parentNode.parentNode); + this.childNodes[0].src='images/themes/default/EnableArgument.png'; + this.childNodes[0].title=g_lang_strargenableargs; + this.childNodes[0].id="1st_arg_iag"; + alert(g_lang_strargnoargs); + g_no_args = true; + g_args--; + } else { + enableArgTR(this.parentNode.parentNode.parentNode.parentNode.parentNode); + this.childNodes[0].src='images/themes/default/RemoveArgument.png'; + this.childNodes[0].title=g_lang_strargremove; + g_args++; + g_no_args = false; + } + } + } + td.onmouseout=function() { } + if(g_args==0) { + td.id="1st_arg_td"; + } + tr.className='arg_tr_pc'; + tr.appendChild(td); + tbody.appendChild(tr); + table.appendChild(tbody); + orig_td.appendChild(table); + return orig_td; +} + +function noArgsRebuild(tr) { + disableArgTR(tr); + var td = document.getElementById("1st_arg_td"); + td.childNodes[0].src='images/themes/default/EnableArgument.png'; + td.childNodes[0].title=g_lang_strargenableargs; + td.childNodes[0].id="1st_arg_iag"; + g_no_args = true; + g_args--; +} + +function swapArgTR(first,second) { + var tmp = null; + tmp = second; + second = first; + first = tmp; + if(first.className=='arg_tr_pc' && second.className=='arg_tr_pc') { + document.getElementById("args_table").insertBefore(first,second); + } else if(first.className=='arg_tr_pc' && second.className!='arg_tr_pc') { + alert(g_lang_strargnorowabove); + } else if(first.className!='arg_tr_pc' && second.className=='arg_tr_pc') { + alert(g_lang_strargnorowbelow); + } +} + +function disableArgTR(tr) { + var children = (tr.childNodes); + for(i in children) { + var secondary_children = children[i].childNodes; + for(i2 in secondary_children) { + secondary_children[i2].disabled=true; + } + } +} + +function enableArgTR(tr) { + var children = (tr.childNodes); + for(i in children) { + var secondary_children = children[i].childNodes; + for(i2 in secondary_children) { + secondary_children[i2].disabled=false; + } + } +} + +function RebuildArgTR(mode,arg_name,arg_type,arg_array) { + var tr = document.createElement("tr"); + var td = document.createElement("td"); + var modes_select = buildSelect("formArgModes[]",g_main_modes,mode); + modes_select.style.width='100%'; + td.appendChild(modes_select); + tr.appendChild(td); + var arg_txt = document.createElement("input"); + arg_txt.type='text'; + arg_txt.name='formArgName[]'; + arg_txt.style.width='100%'; + arg_txt.value=arg_name; + var td = document.createElement("td"); + td.appendChild(arg_txt); + tr.appendChild(td); + var td = document.createElement("td"); + td.appendChild(buildSelect("formArgType[]",g_main_types,arg_type)); + if(arg_array==true) { + var szArr = "[]"; + } else { + var szArr = ""; + } + td.appendChild(buildSelect("formArgArray[]",new Array("","[]"),szArr)); + tr.appendChild(td); + var td = document.createElement("td"); + td = buildArgImages(td); + td.className="data3"; + tr.className='arg_tr_pc'; + tr.appendChild(td); + if(document.getElementById("args_table").insertBefore(tr,document.getElementById("parent_add_tr"))) { + g_args++; + } +} + +function buildSelect(name,options,selected) { + var s = document.createElement('select'); + for(i=0;ihasFunctionAlterSchema()) $_POST['formFuncSchema'] = ''; + + $status = $data->setFunction($_POST['function_oid'], $_POST['original_function'], $_POST['formFunction'], + $_POST['original_arguments'], $_POST['original_returns'], $def, + $_POST['original_lang'], $_POST['formProperties'], isset($_POST['original_setof']), + $_POST['original_owner'], $_POST['formFuncOwn'], $_POST['original_schema'], + $_POST['formFuncSchema'], isset($_POST['formCost']) ? $_POST['formCost'] : null, + isset($_POST['formRows']) ? $_POST['formRows'] : 0, $_POST['formComment']); + + if ($status == 0) { + // If function has had schema altered, need to change to the new schema + // and reload the browser frame. + if (!empty($_POST['formFuncSchema']) && ($_POST['formFuncSchema'] != $_POST['original_schema'])) { + // Jump them to the new function schema + $misc->setCurrentSchema($_POST['formFuncSchema']); + // Force a browser reload + $_reload_browser = true; + } + doProperties($lang['strfunctionupdated']); + } else { + doEdit($lang['strfunctionupdatedbad']); + } + } + + /** + * Function to allow editing of a Function + */ + function doEdit($msg = '') { + global $data, $misc; + global $lang; + $misc->printTrail('function'); + $misc->printTitle($lang['stralter'],'pg.function.alter'); + $misc->printMsg($msg); + + $fndata = $data->getFunction($_REQUEST['function_oid']); + + if ($fndata->recordCount() > 0) { + $fndata->fields['proretset'] = $data->phpBool($fndata->fields['proretset']); + + // Initialise variables + if (!isset($_POST['formDefinition'])) $_POST['formDefinition'] = $fndata->fields['prosrc']; + if (!isset($_POST['formProperties'])) $_POST['formProperties'] = $data->getFunctionProperties($fndata->fields); + if (!isset($_POST['formFunction'])) $_POST['formFunction'] = $fndata->fields['proname']; + if (!isset($_POST['formComment'])) $_POST['formComment'] = $fndata->fields['procomment']; + if (!isset($_POST['formObjectFile'])) $_POST['formObjectFile'] = $fndata->fields['probin']; + if (!isset($_POST['formLinkSymbol'])) $_POST['formLinkSymbol'] = $fndata->fields['prosrc']; + if (!isset($_POST['formFuncOwn'])) $_POST['formFuncOwn'] = $fndata->fields['proowner']; + if (!isset($_POST['formFuncSchema'])) $_POST['formFuncSchema'] = $fndata->fields['proschema']; + + if ($data->hasFunctionCosting()) { + if (!isset($_POST['formCost'])) $_POST['formCost'] = $fndata->fields['procost']; + if (!isset($_POST['formRows'])) $_POST['formRows'] = $fndata->fields['prorows']; + } + + // Deal with named parameters + if ($data->hasNamedParams()) { + if ( isset($fndata->fields['proallarguments']) ) { + $args_arr = $data->phpArray($fndata->fields['proallarguments']); + } else { + $args_arr = explode(', ', $fndata->fields['proarguments']); + } + $names_arr = $data->phpArray($fndata->fields['proargnames']); + $modes_arr = $data->phpArray($fndata->fields['proargmodes']); + $args = ''; + $i = 0; + for ($i = 0; $i < sizeof($args_arr); $i++) { + if ($i != 0) $args .= ', '; + if (isset($modes_arr[$i])) { + switch($modes_arr[$i]) { + case 'i' : $args .= " IN "; break; + case 'o' : $args .= " OUT "; break; + case 'b' : $args .= " INOUT "; break; + case 'v' : $args .= " VARIADIC "; break; + case 't' : $args .= " TABLE "; break; + } + } + if (isset($names_arr[$i]) && $names_arr[$i] != '') { + $data->fieldClean($names_arr[$i]); + $args .= '"' . $names_arr[$i] . '" '; + } + $args .= $args_arr[$i]; + } + } + else { + $args = $fndata->fields['proarguments']; + } + + $func_full = $fndata->fields['proname'] . "(". $fndata->fields['proarguments'] .")"; + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + + echo "\n"; + echo "\n"; + echo "\n"; + + echo "\n"; + + echo "\n"; + + echo "\n"; + echo "\n"; + + $fnlang = strtolower($fndata->fields['prolanguage']); + if ($fnlang == 'c') { + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + } else if ($fnlang == 'internal') { + echo "\n"; + echo "\n"; + } else { + echo "\n"; + echo "\n"; + } + + // Display function comment + echo "\n"; + echo "\n"; + + // Display function cost options + if ($data->hasFunctionCosting()) { + echo "\n"; + echo ""; + echo ""; + } + + // Display function properties + if (is_array($data->funcprops) && sizeof($data->funcprops) > 0) { + echo "\n"; + echo "\n"; + } + + // function owner + if ($data->hasFunctionAlterOwner()) { + $users = $data->getUsers(); + echo "\n"; + } + echo "
{$lang['strschema']}{$lang['strfunction']}{$lang['strarguments']}{$lang['strreturns']}{$lang['strproglanguage']}
"; + echo "fields['proschema']),"\" />\n"; + if ($data->hasFunctionAlterSchema()) { + $schemas = $data->getSchemas(); + echo "\n"; + } + else echo $fndata->fields['proschema']; + echo ""; + echo "fields['proname']),"\" />\n"; + echo "_maxNameLen}\" value=\"", htmlspecialchars($_POST['formFunction']), "\" />"; + echo "", $misc->printVal($args), "\n"; + echo "\n"; + echo ""; + if ($fndata->fields['proretset']) echo "setof "; + echo $misc->printVal($fndata->fields['proresult']), "\n"; + echo "fields['proresult']), "\" />\n"; + if ($fndata->fields['proretset']) + echo "\n"; + echo "", $misc->printVal($fndata->fields['prolanguage']), "\n"; + echo "fields['prolanguage']), "\" />\n"; + echo "
{$lang['strobjectfile']}{$lang['strlinksymbol']}
{$lang['strlinksymbol']}
{$lang['strdefinition']}
{$lang['strcomment']}
{$lang['strfunctioncosting']}
{$lang['strexecutioncost']}: {$lang['strresultrows']}: fields['proretset']) ? 'disabled' : '', "/>
{$lang['strproperties']}
\n"; + $i = 0; + foreach ($data->funcprops as $k => $v) { + echo "
\n"; + $i++; + } + echo "
{$lang['strowner']}: \n"; + echo "fields['proowner']),"\" />\n"; + echo "
\n"; + echo "

\n"; + echo "\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + else echo "

{$lang['strnodata']}

\n"; + } + + /** + * Show read only properties of a function + */ + function doProperties($msg = '') { + global $data, $misc; + global $lang; + + $misc->printTrail('function'); + $misc->printTitle($lang['strproperties'],'pg.function'); + $misc->printMsg($msg); + + $funcdata = $data->getFunction($_REQUEST['function_oid']); + + if ($funcdata->recordCount() > 0) { + // Deal with named parameters + if ($data->hasNamedParams()) { + if ( isset($funcdata->fields['proallarguments']) ) { + $args_arr = $data->phpArray($funcdata->fields['proallarguments']); + } else { + $args_arr = explode(', ', $funcdata->fields['proarguments']); + } + $names_arr = $data->phpArray($funcdata->fields['proargnames']); + $modes_arr = $data->phpArray($funcdata->fields['proargmodes']); + $args = ''; + $i = 0; + for ($i = 0; $i < sizeof($args_arr); $i++) { + if ($i != 0) $args .= ', '; + if (isset($modes_arr[$i])) { + switch($modes_arr[$i]) { + case 'i' : $args .= " IN "; break; + case 'o' : $args .= " OUT "; break; + case 'b' : $args .= " INOUT "; break; + case 'v' : $args .= " VARIADIC "; break; + case 't' : $args .= " TABLE "; break; + } + } + if (isset($names_arr[$i]) && $names_arr[$i] != '') { + $data->fieldClean($names_arr[$i]); + $args .= '"' . $names_arr[$i] . '" '; + } + $args .= $args_arr[$i]; + } + } + else { + $args = $funcdata->fields['proarguments']; + } + + // Show comment if any + if ($funcdata->fields['procomment'] !== null) + echo "

", $misc->printVal($funcdata->fields['procomment']), "

\n"; + + $funcdata->fields['proretset'] = $data->phpBool($funcdata->fields['proretset']); + $func_full = $funcdata->fields['proname'] . "(". $funcdata->fields['proarguments'] .")"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + + $fnlang = strtolower($funcdata->fields['prolanguage']); + if ($fnlang == 'c') { + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + } else if ($fnlang == 'internal') { + echo "\n"; + echo "\n"; + } else { + include_once('./libraries/highlight.php'); + echo "\n"; + // Check to see if we have syntax highlighting for this language + if (isset($data->langmap[$funcdata->fields['prolanguage']])) { + $temp = syntax_highlight(htmlspecialchars($funcdata->fields['prosrc']), $data->langmap[$funcdata->fields['prolanguage']]); + $tag = 'prenoescape'; + } + else { + $temp = $funcdata->fields['prosrc']; + $tag = 'pre'; + } + echo "\n"; + } + + // Display function cost options + if ($data->hasFunctionCosting()) { + echo "\n"; + echo ""; + echo ""; + } + + // Show flags + if (is_array($data->funcprops) && sizeof($data->funcprops) > 0) { + // Fetch an array of the function properties + $funcprops = $data->getFunctionProperties($funcdata->fields); + echo "\n"; + echo "\n"; + } + + echo "\n"; + echo "
{$lang['strfunction']}{$lang['strarguments']}{$lang['strreturns']}{$lang['strproglanguage']}
", $misc->printVal($funcdata->fields['proname']), "", $misc->printVal($args), ""; + if ($funcdata->fields['proretset']) echo "setof "; + echo $misc->printVal($funcdata->fields['proresult']), "", $misc->printVal($funcdata->fields['prolanguage']), "
{$lang['strobjectfile']}{$lang['strlinksymbol']}
", $misc->printVal($funcdata->fields['probin']), "", $misc->printVal($funcdata->fields['prosrc']), "
{$lang['strlinksymbol']}
", $misc->printVal($funcdata->fields['prosrc']), "
{$lang['strdefinition']}
", $misc->printVal($temp, $tag, array('lineno' => true, 'class' => 'data1')), "
{$lang['strfunctioncosting']}
{$lang['strexecutioncost']}: ", $misc->printVal($funcdata->fields['procost']), " {$lang['strresultrows']}: ", $misc->printVal($funcdata->fields['prorows']), "
{$lang['strproperties']}
\n"; + foreach ($funcprops as $v) { + echo $misc->printVal($v), "
\n"; + } + echo "
{$lang['strowner']}: ", htmlspecialchars($funcdata->fields['proowner']),"\n"; + echo "
\n"; + } + else echo "

{$lang['strnodata']}

\n"; + + $navlinks = array( + 'showall' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'functions.php', + 'urlvars' => array ( + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + ) + ) + ), + 'content' => $lang['strshowallfunctions'] + ), + 'alter' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'functions.php', + 'urlvars' => array ( + 'action' => 'edit', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'function' => $_REQUEST['function'], + 'function_oid' => $_REQUEST['function_oid'] + ) + ) + ), + 'content' => $lang['stralter'] + ), + 'drop' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'functions.php', + 'urlvars' => array ( + 'action' => 'confirm_drop', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'function' => $func_full, + 'function_oid' => $_REQUEST['function_oid'] + ) + ) + ), + 'content' => $lang['strdrop'] + ) + ); + + $misc->printNavLinks($navlinks, 'functions-properties', get_defined_vars()); + } + + /** + * Show confirmation of drop and perform actual drop + */ + function doDrop($confirm) { + global $data, $misc; + global $lang, $_reload_browser; + + if (empty($_REQUEST['function']) && empty($_REQUEST['ma'])) { + doDefault($lang['strspecifyfunctiontodrop']); + exit(); + } + + if ($confirm) { + $misc->printTrail('schema'); + $misc->printTitle($lang['strdrop'],'pg.function.drop'); + + echo "
\n"; + + //If multi drop + if (isset($_REQUEST['ma'])) { + foreach($_REQUEST['ma'] as $v) { + $a = unserialize(htmlspecialchars_decode($v, ENT_QUOTES)); + echo "

", sprintf($lang['strconfdropfunction'], $misc->printVal($a['function'])), "

\n"; + echo '\n"; + echo "\n"; + } + } + else { + echo "

", sprintf($lang['strconfdropfunction'], $misc->printVal($_REQUEST['function'])), "

\n"; + echo "\n"; + echo "\n"; + } + + echo "\n"; + + echo $misc->form; + echo "

\n"; + echo "\n"; + echo "\n"; + echo "
\n"; + } + else { + if (is_array($_POST['function_oid'])) { + $msg = ''; + $status = $data->beginTransaction(); + if ($status == 0) { + foreach($_POST['function_oid'] as $k => $s) { + $status = $data->dropFunction($s, isset($_POST['cascade'])); + if ($status == 0) + $msg.= sprintf('%s: %s
', htmlentities($_POST['function'][$k], ENT_QUOTES, 'UTF-8'), $lang['strfunctiondropped']); + else { + $data->endTransaction(); + doDefault(sprintf('%s%s: %s
', $msg, htmlentities($_POST['function'][$k], ENT_QUOTES, 'UTF-8'), $lang['strfunctiondroppedbad'])); + return; + } + } + } + if($data->endTransaction() == 0) { + // Everything went fine, back to the Default page.... + $_reload_browser = true; + doDefault($msg); + } + else doDefault($lang['strfunctiondroppedbad']); + } + else{ + $status = $data->dropFunction($_POST['function_oid'], isset($_POST['cascade'])); + if ($status == 0) { + $_reload_browser = true; + doDefault($lang['strfunctiondropped']); + } + else { + doDefault($lang['strfunctiondroppedbad']); + } + } + } + + } + + /** + * Displays a screen where they can enter a new function + */ + function doCreate($msg = '',$szJS="") { + global $data, $misc; + global $lang; + + $misc->printTrail('schema'); + if (!isset($_POST['formFunction'])) $_POST['formFunction'] = ''; + if (!isset($_POST['formArguments'])) $_POST['formArguments'] = ''; + if (!isset($_POST['formReturns'])) $_POST['formReturns'] = ''; + if (!isset($_POST['formLanguage'])) $_POST['formLanguage'] = isset($_REQUEST['language']) ? $_REQUEST['language'] : 'sql'; + if (!isset($_POST['formDefinition'])) $_POST['formDefinition'] = ''; + if (!isset($_POST['formObjectFile'])) $_POST['formObjectFile'] = ''; + if (!isset($_POST['formLinkSymbol'])) $_POST['formLinkSymbol'] = ''; + if (!isset($_POST['formProperties'])) $_POST['formProperties'] = $data->defaultprops; + if (!isset($_POST['formSetOf'])) $_POST['formSetOf'] = ''; + if (!isset($_POST['formArray'])) $_POST['formArray'] = ''; + if (!isset($_POST['formCost'])) $_POST['formCost'] = ''; + if (!isset($_POST['formRows'])) $_POST['formRows'] = ''; + if (!isset($_POST['formComment'])) $_POST['formComment'] = ''; + + $types = $data->getTypes(true, true, true); + $langs = $data->getLanguages(true); + $fnlang = strtolower($_POST['formLanguage']); + + switch ($fnlang) { + case 'c': + $misc->printTitle($lang['strcreatecfunction'],'pg.function.create.c'); + break; + case 'internal': + $misc->printTitle($lang['strcreateinternalfunction'],'pg.function.create.internal'); + break; + default: + $misc->printTitle($lang['strcreateplfunction'],'pg.function.create.pl'); + break; + } + $misc->printMsg($msg); + + // Create string for return type list + $szTypes = ""; + while (!$types->EOF) { + $szSelected = ""; + if($types->fields['typname'] == $_POST['formReturns']) { + $szSelected = " selected=\"selected\""; + } + /* this variable is include in the JS code bellow, so we need to ENT_QUOTES */ + $szTypes .= ""; + $types->moveNext(); + } + + $szFunctionName = "_maxNameLen}\" value=\"". + htmlspecialchars($_POST['formFunction']) ."\" />"; + + $szArguments = ""; + + $szSetOfSelected = ""; + $szNotSetOfSelected = ""; + if($_POST['formSetOf'] == '') { + $szNotSetOfSelected = " selected=\"selected\""; + } else if($_POST['formSetOf'] == 'SETOF') { + $szSetOfSelected = " selected=\"selected\""; + } + $szReturns = ""; + $szReturns .= ""; + + $szReturns .= ""; + + // Create string array type selector + + $szArraySelected = ""; + $szNotArraySelected = ""; + if($_POST['formArray'] == '') { + $szNotArraySelected = " selected=\"selected\""; + } else if($_POST['formArray'] == '[]') { + $szArraySelected = " selected=\"selected\""; + } + + $szReturns .= "\n"; + + // Create string for language + $szLanguage = ""; + if ($fnlang == 'c' || $fnlang == 'internal') { + $szLanguage .= $_POST['formLanguage'] . "\n"; + $szLanguage .= "\n"; + } + else { + $szLanguage .= "\n"; + } + + $szLanguage .= ""; + $szJSArguments = "{$lang['strarguments']}"; + $arrayModes = array("IN","OUT","INOUT"); + $szModes = ""; + $szArgReturns = ""; + if(!empty($conf['theme'])) { + $szImgPath = "images/themes/{$conf['theme']}"; + } else { + $szImgPath = "images/themes/default"; + } + if(empty($msg)) { + $szJSTRArg = "\n"; + } else { + $szJSTRArg = ""; + } + $szJSAddTR = "\n
\"Add{$lang['strargadd']}
\n\n"; + + echo " + + "; + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "{$szFunctionName}\n"; + echo "{$szReturns}\n"; + echo "{$szLanguage}\n"; + echo "\n"; + echo "{$szJSArguments}\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "{$szJSAddTR}\n"; + + if ($fnlang == 'c') { + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + } else if ($fnlang == 'internal') { + echo "\n"; + echo "\n"; + } else { + echo "\n"; + echo "\n"; + } + + // Display function comment + echo "\n"; + echo "\n"; + + // Display function cost options + if ($data->hasFunctionCosting()) { + echo "\n"; + echo ""; + echo ""; + } + + // Display function properties + if (is_array($data->funcprops) && sizeof($data->funcprops) > 0) { + echo "\n"; + echo "\n"; + } + echo "
{$lang['strname']}{$lang['strreturns']}{$lang['strproglanguage']}
{$lang['strargmode']}{$lang['strname']}{$lang['strargtype']}
{$lang['strobjectfile']}{$lang['strlinksymbol']}
{$lang['strlinksymbol']}
{$lang['strdefinition']}
{$lang['strcomment']}
{$lang['strfunctioncosting']}
{$lang['strexecutioncost']}: {$lang['strresultrows']}:
{$lang['strproperties']}
\n"; + $i = 0; + foreach ($data->funcprops as $k => $v) { + echo "
\n"; + $i++; + } + echo "
\n"; + echo $szJSTRArg; + echo "

\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + echo $szJS; + } + + /** + * Actually creates the new function in the database + */ + function doSaveCreate() { + global $data, $lang; + + $fnlang = strtolower($_POST['formLanguage']); + + if ($fnlang == 'c') { + $def = array($_POST['formObjectFile'], $_POST['formLinkSymbol']); + } else if ($fnlang == 'internal'){ + $def = $_POST['formLinkSymbol']; + } else { + $def = $_POST['formDefinition']; + } + + $szJS = ''; + + echo ""; + echo "'; + if(!empty($_POST['formArgName'])) { + $szJS = buildJSRows(buildFunctionArguments($_POST)); + } else { + $szJS = ""; + } + + $cost = (isset($_POST['formCost'])) ? $_POST['formCost'] : null; + if ($cost == '' || !is_numeric($cost) || $cost != (int)$cost || $cost < 0) { + $cost = null; + } + + $rows = (isset($_POST['formRows'])) ? $_POST['formRows'] : null; + if ($rows == '' || !is_numeric($rows) || $rows != (int)$rows ) { + $rows = null; + } + + // Check that they've given a name and a definition + if ($_POST['formFunction'] == '') doCreate($lang['strfunctionneedsname'],$szJS); + elseif ($fnlang != 'internal' && !$def) doCreate($lang['strfunctionneedsdef'],$szJS); + else { + // Append array symbol to type if chosen + $status = $data->createFunction($_POST['formFunction'], empty($_POST['nojs'])? buildFunctionArguments($_POST) : $_POST['formArguments'], + $_POST['formReturns'] . $_POST['formArray'] , $def , $_POST['formLanguage'], + $_POST['formProperties'], $_POST['formSetOf'] == 'SETOF', + $cost, $rows, $_POST['formComment'], false); + if ($status == 0) + doDefault($lang['strfunctioncreated']); + else { + doCreate($lang['strfunctioncreatedbad'],$szJS); + } + } + } + + /** + * Build out the function arguments string + */ + function buildFunctionArguments($arrayVars) { + if(isset($_POST['formArgName'])) { + $arrayArgs = array(); + foreach($arrayVars['formArgName'] as $pK => $pV) { + $arrayArgs[] = $arrayVars['formArgModes'][$pK] .' '. trim($pV) .' '. trim($arrayVars['formArgType'][$pK]) . $arrayVars['formArgArray'][$pK]; + } + return implode(",", $arrayArgs); + } + return ''; + } + + /** + * Build out JS to re-create table rows for arguments + */ + function buildJSRows($szArgs) { + $arrayModes = array('IN','OUT','INOUT'); + $arrayArgs = explode(',',$szArgs); + $arrayProperArgs = array(); + $nC = 0; + $szReturn = ''; + foreach($arrayArgs as $pV) { + $arrayWords = explode(' ',$pV); + if(in_array($arrayWords[0],$arrayModes)===true) { + $szMode = $arrayWords[0]; + array_shift($arrayWords); + } + $szArgName = array_shift($arrayWords); + if(strpos($arrayWords[count($arrayWords)-1],'[]')===false) { + $szArgType = implode(" ",$arrayWords); + $bArgIsArray = "false"; + } else { + $szArgType = str_replace('[]','',implode(' ',$arrayWords)); + $bArgIsArray = "true"; + } + $arrayProperArgs[] = array($szMode,$szArgName,$szArgType,$bArgIsArray); + $szReturn .= ""; + $nC++; + } + return $szReturn; + } + + + function buildJSData() { + global $data; + $arrayModes = array('IN','OUT','INOUT'); + $arrayTypes = $data->getTypes(true, true, true); + $arrayPTypes = array(); + $arrayPModes = array(); + $szTypes = ''; + + while (!$arrayTypes->EOF) { + $arrayPTypes[] = "'". $arrayTypes->fields['typname'] ."'"; + $arrayTypes->moveNext(); + } + + foreach($arrayModes as $pV) { + $arrayPModes[] = "'{$pV}'"; + } + + $szTypes = 'g_main_types = new Array('. implode(',', $arrayPTypes) .');'; + $szModes = 'g_main_modes = new Array('. implode(',', $arrayPModes) .');'; + return $szTypes . $szModes; + } + + /** + * Show default list of functions in the database + */ + function doDefault($msg = '') { + global $data, $conf, $misc, $func; + global $lang; + + $misc->printTrail('schema'); + $misc->printTabs('schema','functions'); + $misc->printMsg($msg); + + $funcs = $data->getFunctions(); + + $columns = array( + 'function' => array( + 'title' => $lang['strfunction'], + 'field' => field('proproto'), + 'url' => "redirect.php?subject=function&action=properties&{$misc->href}&", + 'vars' => array('function' => 'proproto', 'function_oid' => 'prooid'), + ), + 'returns' => array( + 'title' => $lang['strreturns'], + 'field' => field('proreturns'), + ), + 'owner' => array( + 'title' => $lang['strowner'], + 'field' => field('proowner'), + ), + 'proglanguage' => array( + 'title' => $lang['strproglanguage'], + 'field' => field('prolanguage'), + ), + 'actions' => array( + 'title' => $lang['stractions'], + ), + 'comment' => array( + 'title' => $lang['strcomment'], + 'field' => field('procomment'), + ), + ); + + $actions = array( + 'multiactions' => array( + 'keycols' => array('function' => 'proproto', 'function_oid' => 'prooid'), + 'url' => 'functions.php', + ), + 'alter' => array( + 'content' => $lang['stralter'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'functions.php', + 'urlvars' => array ( + 'action' => 'edit', + 'function' => field('proproto'), + 'function_oid' => field('prooid') + ) + ) + ) + ), + 'drop' => array( + 'multiaction' => 'confirm_drop', + 'content' => $lang['strdrop'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'functions.php', + 'urlvars' => array ( + 'action' => 'confirm_drop', + 'function' => field('proproto'), + 'function_oid' => field('prooid') + ) + ) + ) + ), + 'privileges' => array( + 'content' => $lang['strprivileges'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'privileges.php', + 'urlvars' => array ( + 'subject' => 'function', + 'function' => field('proproto'), + 'function_oid' => field('prooid') + ) + ) + ) + ), + ); + + $misc->printTable($funcs, $columns, $actions, 'functions-functions', $lang['strnofunctions']); + + $navlinks = array( + 'createpl' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'functions.php', + 'urlvars' => array ( + 'action' => 'create', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'] + ) + ) + ), + 'content' => $lang['strcreateplfunction'] + ), + 'createinternal' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'functions.php', + 'urlvars' => array ( + 'action' => 'create', + 'language' => 'internal', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'] + ) + ) + ), + 'content' => $lang['strcreateinternalfunction'] + ), + 'createc' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'functions.php', + 'urlvars' => array ( + 'action' => 'create', + 'language' => 'C', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'] + ) + ) + ), + 'content' => $lang['strcreatecfunction'] + ) + ); + + $misc->printNavLinks($navlinks, 'functions-functions', get_defined_vars()); + } + + /** + * Generate XML for the browser tree. + */ + function doTree() { + global $misc, $data; + + $funcs = $data->getFunctions(); + + $proto = concat(field('proname'),' (',field('proarguments'),')'); + + $reqvars = $misc->getRequestVars('function'); + + $attrs = array( + 'text' => $proto, + 'icon' => 'Function', + 'toolTip' => field('procomment'), + 'action' => url('redirect.php', + $reqvars, + array( + 'action' => 'properties', + 'function' => $proto, + 'function_oid' => field('prooid') + ) + ) + ); + + $misc->printTree($funcs, $attrs, 'functions'); + exit; + } + + if ($action == 'tree') doTree(); + + $misc->printHeader($lang['strfunctions']); + $misc->printBody(); + + switch ($action) { + case 'save_create': + if (isset($_POST['cancel'])) doDefault(); + else doSaveCreate(); + break; + case 'create': + doCreate(); + break; + case 'drop': + if (isset($_POST['drop'])) doDrop(false); + else doDefault(); + break; + case 'confirm_drop': + doDrop(true); + break; + case 'save_edit': + if (isset($_POST['cancel'])) doDefault(); + else doSaveEdit(); + break; + case 'edit': + doEdit(); + break; + case 'properties': + doProperties(); + break; + default: + doDefault(); + break; + } + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/groups.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/groups.php new file mode 100644 index 00000000..b6e65249 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/groups.php @@ -0,0 +1,330 @@ +addGroupMember($_REQUEST['group'], $_REQUEST['user']); + if ($status == 0) + doProperties($lang['strmemberadded']); + else + doProperties($lang['strmemberaddedbad']); + } + + /** + * Show confirmation of drop user from group and perform actual drop + */ + function doDropMember($confirm) { + global $data, $misc; + global $lang; + + if ($confirm) { + $misc->printTrail('group'); + $misc->printTitle($lang['strdropmember'],'pg.group.alter'); + + echo "

", sprintf($lang['strconfdropmember'], $misc->printVal($_REQUEST['user']), $misc->printVal($_REQUEST['group'])), "

\n"; + + echo "
\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "
\n"; + } + else { + $status = $data->dropGroupMember($_REQUEST['group'], $_REQUEST['user']); + if ($status == 0) + doProperties($lang['strmemberdropped']); + else + doDropMember(true, $lang['strmemberdroppedbad']); + } + } + + /** + * Show read only properties for a group + */ + function doProperties($msg = '') { + global $data, $misc; + global $lang; + + if (!isset($_POST['user'])) $_POST['user'] = ''; + + $misc->printTrail('group'); + $misc->printTitle($lang['strproperties'],'pg.group'); + $misc->printMsg($msg); + + $groupdata = $data->getGroup($_REQUEST['group']); + $users = $data->getUsers(); + + if ($groupdata->recordCount() > 0) { + $columns = array ( + 'members' => array ( + 'title' => $lang['strmembers'], + 'field' => field('usename') + ), + 'actions' => array ( + 'title' => $lang['stractions'], + ) + ); + + $actions = array ( + 'drop' => array ( + 'content' => $lang['strdrop'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'groups.php', + 'urlvars' => array ( + 'action' => 'confirm_drop_member', + 'group' => $_REQUEST['group'], + 'user' => field('usename') + ) + ) + ) + ) + ); + + $misc->printTable($groupdata, $columns, $actions, 'groups-members', $lang['strnousers']); + } + + // Display form for adding a user to the group + echo "
\n"; + echo "\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "
\n"; + + $misc->printNavLinks(array ('showall' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'groups.php', + 'urlvars' => array ( + 'server' => $_REQUEST['server'] + ) + ) + ), + 'content' => $lang['strshowallgroups'] + )), 'groups-properties', get_defined_vars()); + } + + /** + * Show confirmation of drop and perform actual drop + */ + function doDrop($confirm) { + global $data, $misc; + global $lang; + + if ($confirm) { + $misc->printTrail('group'); + $misc->printTitle($lang['strdrop'],'pg.group.drop'); + + echo "

", sprintf($lang['strconfdropgroup'], $misc->printVal($_REQUEST['group'])), "

\n"; + + echo "
\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "
\n"; + } + else { + $status = $data->dropGroup($_REQUEST['group']); + if ($status == 0) + doDefault($lang['strgroupdropped']); + else + doDefault($lang['strgroupdroppedbad']); + } + } + + /** + * Displays a screen where they can enter a new group + */ + function doCreate($msg = '') { + global $data, $misc; + global $lang; + + if (!isset($_POST['name'])) $_POST['name'] = ''; + if (!isset($_POST['members'])) $_POST['members'] = array(); + + // Fetch a list of all users in the cluster + $users = $data->getUsers(); + + $misc->printTrail('server'); + $misc->printTitle($lang['strcreategroup'],'pg.group.create'); + $misc->printMsg($msg); + + echo "
\n"; + echo $misc->form; + echo "\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + if ($users->recordCount() > 0) { + echo "\t\n\t\t\n"; + + echo "\t\t\n\t\n"; + } + echo "
{$lang['strname']}_maxNameLen}\" name=\"name\" value=\"", htmlspecialchars($_POST['name']), "\" />
{$lang['strmembers']}\n"; + echo "\t\t\t\n"; + echo "\t\t
\n"; + echo "

\n"; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + + /** + * Actually creates the new group in the database + */ + function doSaveCreate() { + global $data; + global $lang; + + if (!isset($_POST['members'])) $_POST['members'] = array(); + + // Check form vars + if (trim($_POST['name']) == '') + doCreate($lang['strgroupneedsname']); + else { + $status = $data->createGroup($_POST['name'], $_POST['members']); + if ($status == 0) + doDefault($lang['strgroupcreated']); + else + doCreate($lang['strgroupcreatedbad']); + } + } + + /** + * Show default list of groups in the database + */ + function doDefault($msg = '') { + global $data, $misc; + global $lang; + + $misc->printTrail('server'); + $misc->printTabs('server','groups'); + $misc->printMsg($msg); + + $groups = $data->getGroups(); + + $columns = array( + 'group' => array( + 'title' => $lang['strgroup'], + 'field' => field('groname'), + 'url' => "groups.php?action=properties&{$misc->href}&", + 'vars' => array('group' => 'groname'), + ), + 'actions' => array( + 'title' => $lang['stractions'], + ), + ); + + $actions = array( + 'drop' => array( + 'content' => $lang['strdrop'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'groups.php', + 'urlvars' => array ( + 'action' => 'confirm_drop', + 'group' => field('groname') + ) + ) + ) + ), + ); + + $misc->printTable($groups, $columns, $actions, 'groups-properties', $lang['strnogroups']); + + $misc->printNavLinks(array ('create' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'groups.php', + 'urlvars' => array ( + 'action' => 'create', + 'server' => $_REQUEST['server'] + ) + ) + ), + 'content' => $lang['strcreategroup'] + )), 'groups-groups', get_defined_vars()); + + } + + $misc->printHeader($lang['strgroups']); + $misc->printBody(); + + switch ($action) { + case 'add_member': + doAddMember(); + break; + case 'drop_member': + if (isset($_REQUEST['drop'])) doDropMember(false); + else doProperties(); + break; + case 'confirm_drop_member': + doDropMember(true); + break; + case 'save_create': + if (isset($_REQUEST['cancel'])) doDefault(); + else doSaveCreate(); + break; + case 'create': + doCreate(); + break; + case 'drop': + if (isset($_REQUEST['drop'])) doDrop(false); + else doDefault(); + break; + case 'confirm_drop': + doDrop(true); + break; + case 'save_edit': + doSaveEdit(); + break; + case 'edit': + doEdit(); + break; + case 'properties': + doProperties(); + break; + default: + doDefault(); + break; + } + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help.php new file mode 100644 index 00000000..9dbde0eb --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help.php @@ -0,0 +1,88 @@ +getHelp($_REQUEST['help']); + + if (is_array($url)) { + doChoosePage($url); + return; + } + + if ($url) { + header("Location: $url"); + exit; + } + } + + doBrowse($lang['strinvalidhelppage']); + } + + function doBrowse($msg = '') { + global $misc, $data, $lang; + + $misc->printHeader($lang['strhelppagebrowser']); + $misc->printBody(); + + $misc->printTitle($lang['strselecthelppage']); + + echo $misc->printMsg($msg); + + echo "
\n"; + + $pages = $data->getHelpPages(); + foreach ($pages as $page => $dummy) { + echo "
{$page}
\n"; + + $urls = $data->getHelp($page); + if (!is_array($urls)) $urls = array($urls); + foreach ($urls as $url) { + echo "
{$url}
\n"; + } + } + + echo "
\n"; + + $misc->printFooter(); + } + + function doChoosePage($urls) { + global $misc, $lang; + + $misc->printHeader($lang['strhelppagebrowser']); + $misc->printBody(); + + $misc->printTitle($lang['strselecthelppage']); + + echo "
    \n"; + foreach($urls as $url) { + echo "
  • {$url}
  • \n"; + } + echo "
\n"; + + $misc->printFooter(); + } + + switch ($action) { + case 'browse': + doBrowse(); + break; + default: + doDefault(); + break; + } +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc10.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc10.php new file mode 100644 index 00000000..79fb627a --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc10.php @@ -0,0 +1,13 @@ +help_base = sprintf($GLOBALS['conf']['help_base'], '10'); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc11.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc11.php new file mode 100644 index 00000000..36e768f9 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc11.php @@ -0,0 +1,13 @@ +help_base = sprintf($GLOBALS['conf']['help_base'], '11'); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc12.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc12.php new file mode 100644 index 00000000..154953d7 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc12.php @@ -0,0 +1,13 @@ +help_base = sprintf($GLOBALS['conf']['help_base'], '12'); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc74.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc74.php new file mode 100644 index 00000000..b8458283 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc74.php @@ -0,0 +1,160 @@ +help_base = sprintf($GLOBALS['conf']['help_base'], '7.4'); + +# TODO: Check and fix links + +$this->help_page = array( + + 'pg.database' => 'managing-databases.html', + 'pg.database.create' => array('sql-createdatabase.html', 'manage-ag-createdb.html'), + 'pg.database.alter' => 'sql-alterdatabase.html', + 'pg.database.drop' => array('sql-dropdatabase.html', 'manage-ag-dropdb.html'), + + 'pg.admin.analyze' => 'sql-analyze.html', + 'pg.admin.vacuum' => 'sql-vacuum.html', + + 'pg.cast' => array('sql-expressions.html#SQL-SYNTAX-TYPE-CASTS','sql-createcast.html'), + 'pg.cast.create' => 'sql-createcast.html', + 'pg.cast.drop' => 'sql-dropcast.html', + + 'pg.column.add' => array('ddl-alter.html#AEN2115', 'sql-altertable.html'), + 'pg.column.alter' => array('ddl-alter.html','sql-altertable.html'), + 'pg.column.drop' => array('ddl-alter.html#AEN2124', 'sql-altertable.html'), + + 'pg.constraint' => 'ddl-constraints.html', + 'pg.constraint.add' => 'ddl-alter.html#AEN2131', + 'pg.constraint.check' => 'ddl-constraints.html#AEN1895', + 'pg.constraint.drop' => 'ddl-alter.html#AEN2140', + 'pg.constraint.foreign_key' => 'ddl-constraints.html#DDL-CONSTRAINTS-FK', + 'pg.constraint.primary_key' => 'ddl-constraints.html#AEN1972', + 'pg.constraint.unique_key' => 'ddl-constraints.html#AEN1950', + + 'pg.conversion' => 'multibyte.html', + 'pg.conversion.alter' => 'sql-alterconversion.html', + 'pg.conversion.create' => 'sql-createconversion.html', + 'pg.conversion.drop' => 'sql-dropconversion.html', + + 'pg.domain' => 'extend-type-system.html#AEN28657', + 'pg.domain.alter' => 'sql-alterdomain.html', + 'pg.domain.create' => 'sql-createdomain.html', + 'pg.domain.drop' => 'sql-dropdomain.html', + + 'pg.function' => array('xfunc.html', 'functions.html', 'sql-expressions.html#AEN1599'), + 'pg.function.alter' => 'sql-alterfunction.html', + 'pg.function.create' => 'sql-createfunction.html', + 'pg.function.create.c' => array('xfunc-c.html','sql-createfunction.html'), + 'pg.function.create.internal' => array('xfunc-internal.html','sql-createfunction.html'), + 'pg.function.create.pl' => array('xfunc-sql.html','xfunc-pl.html','sql-createfunction.html'), + 'pg.function.drop' => 'sql-dropfunction.html', + + 'pg.group' => 'groups.html', + 'pg.group.alter' => array('sql-altergroup.html','groups.html'), + 'pg.group.create' => 'sql-creategroup.html', + 'pg.group.drop' => 'sql-dropgroup.html', + + 'pg.index' => 'indexes.html', + 'pg.index.cluster' => 'sql-cluster.html', + 'pg.index.drop' => 'sql-dropindex.html', + 'pg.index.create' => 'sql-createindex.html', + 'pg.index.reindex' => 'sql-reindex.html', + + 'pg.language' => 'xplang.html', + 'pg.language.alter' => 'sql-alterlanguage.html', + 'pg.language.create' => 'sql-createlanguage.html', + 'pg.language.drop' => 'sql-droplanguage.html', + + 'pg.opclass' => 'indexes-opclass.html', + 'pg.opclass.alter' => 'sql-alteropclass.html', + 'pg.opclass.create' => 'sql-createopclass.html', + 'pg.opclass.drop' => 'sql-dropopclass.html', + + 'pg.operator' => array('xoper.html', 'functions.html', 'sql-expressions.html#AEN1570'), + 'pg.operator.alter' => 'sql-alteroperator.html', + 'pg.operator.create' => 'sql-createoperator.html', + 'pg.operator.drop' => 'sql-dropoperator.html', + + 'pg.pl' => 'xplang.html', + 'pg.pl.plperl' => 'plperl.html', + 'pg.pl.plpgsql' => 'plpgsql.html', + 'pg.pl.plpython' => 'plpython.html', + 'pg.pl.pltcl' => 'pltcl.html', + + 'pg.privilege' => array('privileges.html','ddl-priv.html'), + 'pg.privilege.grant' => 'sql-grant.html', + 'pg.privilege.revoke' => 'sql-revoke.html', + + 'pg.process' => 'monitoring.html', + + 'pg.rule' => 'rules.html', + 'pg.rule.create' => 'sql-createrule.html', + 'pg.rule.drop' => 'sql-droprule.html', + + 'pg.schema' => 'ddl-schemas.html', + 'pg.schema.alter' => 'sql-alterschema.html', + 'pg.schema.create' => array( 'sql-createschema.html','ddl-schemas.html#DDL-SCHEMAS-CREATE'), + 'pg.schema.drop' => 'sql-dropschema.html', + 'pg.schema.search_path' => 'ddl-schemas.html#DDL-SCHEMAS-PATH', + + 'pg.sequence' => 'functions-sequence.html', + 'pg.sequence.alter' => 'sql-altersequence.html', + 'pg.sequence.create' => 'sql-createsequence.html', + 'pg.sequence.drop' => 'sql-dropsequence.html', + + 'pg.sql' => array('sql.html','sql-commands.html'), + 'pg.sql.insert' => 'sql-insert.html', + 'pg.sql.select' => 'sql-select.html', + 'pg.sql.update' => 'sql-update.html', + + 'pg.table' => 'ddl.html#DDL-BASICS', + 'pg.table.alter' => 'sql-altertable.html', + 'pg.table.create' => 'sql-createtable.html', + 'pg.table.drop' => 'sql-droptable.html', + 'pg.table.empty' => 'sql-truncate.html', + + 'pg.tablespace' => 'manage-ag-tablespaces.html', + 'pg.tablespace.alter' => 'sql-altertablespace.html', + 'pg.tablespace.create' => 'sql-createtablespace.html', + 'pg.tablespace.drop' => 'sql-droptablespace.html', + + 'pg.trigger' => 'triggers.html', + 'pg.trigger.alter' => 'sql-altertrigger.html', + 'pg.trigger.create' => 'sql-createtrigger.html', + 'pg.trigger.drop' => 'sql-droptrigger.html', + + 'pg.type' => array('xtypes.html','datatype.html','extend-type-system.html'), + 'pg.type.alter' => 'sql-altertype.html', + 'pg.type.create' => 'sql-createtype.html', + 'pg.type.drop' => 'sql-droptype.html', + + 'pg.user.alter' => array('sql-alteruser.html','user-attributes.html'), + 'pg.user.create' => array('sql-createuser.html','user-manag.html#DATABASE-USERS'), + 'pg.user.drop' => array('sql-dropuser.html','user-manag.html#DATABASE-USERS'), + + 'pg.variable' => 'runtime-config.html', + + 'pg.view' => 'tutorial-views.html', + 'pg.view.alter' => array('sql-createview.html','sql-altertable.html'), + 'pg.view.create' => 'sql-createview.html', + 'pg.view.drop' => 'sql-dropview.html', + + 'pg.aggregate' => array('xaggr.html', 'tutorial-agg.html', 'functions-aggregate.html', 'sql-expressions.html#SYNTAX-AGGREGATES'), + 'pg.aggregate.create' => 'sql-createaggregate.html', + 'pg.aggregate.drop' => 'sql-dropaggregate.html', + 'pg.aggregate.alter' => 'sql-alteraggregate.html', + + 'pg.server' => 'admin.html', + + 'pg.user' => 'user-manag.html', + + 'pg.locks' => 'view-pg-locks.html' +); + + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc80.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc80.php new file mode 100644 index 00000000..f0bd19ad --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc80.php @@ -0,0 +1,28 @@ +help_base = sprintf($GLOBALS['conf']['help_base'], '8.0'); + +$this->help_page['pg.column.add'][0] = 'ddl-alter.html#AEN2217'; +$this->help_page['pg.column.drop'][0] = 'ddl-alter.html#AEN2226'; + +$this->help_page['pg.constraint.add'] = 'ddl-alter.html#AEN2217'; +$this->help_page['pg.constraint.check'] = 'ddl-constraints.html#AEN1978'; +$this->help_page['pg.constraint.drop'] = 'ddl-alter.html#AEN2226'; +$this->help_page['pg.constraint.primary_key'] = 'ddl-constraints.html#AEN2055'; +$this->help_page['pg.constraint.unique_key'] = 'ddl-constraints.html#AEN2033'; + +$this->help_page['pg.domain'] = 'extend-type-system.html#AEN27940'; + +$this->help_page['pg.function'][2] = 'sql-expressions.html#AEN1652'; + +$this->help_page['pg.operator'][2] = 'sql-expressions.html#AEN1623'; + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc81.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc81.php new file mode 100644 index 00000000..29307e37 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc81.php @@ -0,0 +1,18 @@ +help_base = sprintf($GLOBALS['conf']['help_base'], '8.1'); + +$this->help_page['pg.role'] = 'user-manag.html'; +$this->help_page['pg.role.create'] = array('sql-createrole.html','user-manag.html#DATABASE-ROLES'); +$this->help_page['pg.role.alter'] = array('sql-alterrole.html','role-attributes.html'); +$this->help_page['pg.role.drop'] = array('sql-droprole.html','user-manag.html#DATABASE-ROLES'); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc82.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc82.php new file mode 100644 index 00000000..7b956f0c --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc82.php @@ -0,0 +1,13 @@ +help_base = sprintf($GLOBALS['conf']['help_base'], '8.2'); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc83.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc83.php new file mode 100644 index 00000000..3684ad28 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc83.php @@ -0,0 +1,27 @@ +help_base = sprintf($GLOBALS['conf']['help_base'], '8.3'); + +$this->help_page['pg.fts'] = 'textsearch.html'; + +$this->help_page['pg.ftscfg'] = 'textsearch-intro.html#TEXTSEARCH-INTRO-CONFIGURATIONS'; +$this->help_page['pg.ftscfg.example'] = 'textsearch-configuration.html'; +$this->help_page['pg.ftscfg.drop'] = 'sql-droptsconfig.html'; +$this->help_page['pg.ftscfg.create'] = 'sql-createtsconfig.html'; +$this->help_page['pg.ftscfg.alter'] = 'sql-altertsconfig.html'; + +$this->help_page['pg.ftsdict'] = 'textsearch-dictionaries.html'; +$this->help_page['pg.ftsdict.drop'] = 'sql-droptsdictionary.html'; +$this->help_page['pg.ftsdict.create'] = array('sql-createtsdictionary.html', 'sql-createtstemplate.html'); +$this->help_page['pg.ftsdict.alter'] = 'sql-altertsdictionary.html'; + +$this->help_page['pg.ftsparser'] = 'textsearch-parsers.html'; +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc84.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc84.php new file mode 100644 index 00000000..91c8b204 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc84.php @@ -0,0 +1,13 @@ +help_base = sprintf($GLOBALS['conf']['help_base'], '8.4'); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc90.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc90.php new file mode 100644 index 00000000..519a7db7 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc90.php @@ -0,0 +1,13 @@ +help_base = sprintf($GLOBALS['conf']['help_base'], '9.0'); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc91.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc91.php new file mode 100644 index 00000000..74e4fea4 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc91.php @@ -0,0 +1,13 @@ +help_base = sprintf($GLOBALS['conf']['help_base'], '9.1'); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc92.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc92.php new file mode 100644 index 00000000..7cfdfdec --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc92.php @@ -0,0 +1,13 @@ +help_base = sprintf($GLOBALS['conf']['help_base'], '9.2'); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc93.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc93.php new file mode 100644 index 00000000..014b0c84 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc93.php @@ -0,0 +1,13 @@ +help_base = sprintf($GLOBALS['conf']['help_base'], '9.3'); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc94.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc94.php new file mode 100644 index 00000000..94a1dedc --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc94.php @@ -0,0 +1,13 @@ +help_base = sprintf($GLOBALS['conf']['help_base'], '9.4'); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc95.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc95.php new file mode 100644 index 00000000..5ef261ab --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc95.php @@ -0,0 +1,13 @@ +help_base = sprintf($GLOBALS['conf']['help_base'], '9.5'); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc96.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc96.php new file mode 100644 index 00000000..7bfaca3b --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/help/PostgresDoc96.php @@ -0,0 +1,13 @@ +help_base = sprintf($GLOBALS['conf']['help_base'], '9.6'); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/history.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/history.php new file mode 100644 index 00000000..1dab1db8 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/history.php @@ -0,0 +1,226 @@ +printHeader($lang['strhistory']); + + // Bring to the front always + echo "\n"; + + echo "
\n"; + $misc->printConnection($onchange); + echo "

"; + + if (!isset($_REQUEST['database'])) { + echo "

{$lang['strnodatabaseselected']}

\n"; + return; + } + + if (isset($_SESSION['history'][$_REQUEST['server']][$_REQUEST['database']])) { + include_once('classes/ArrayRecordSet.php'); + + $history = new ArrayRecordSet($_SESSION['history'][$_REQUEST['server']][$_REQUEST['database']]); + + $columns = array( + 'query' => array( + 'title' => $lang['strsql'], + 'field' => field('query'), + ), + 'paginate' => array( + 'title' => $lang['strpaginate'], + 'field' => field('paginate'), + 'type' => 'yesno', + ), + 'actions' => array( + 'title' => $lang['stractions'], + ), + ); + + $actions = array( + 'run' => array( + 'content' => $lang['strexecute'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'sql.php', + 'urlvars' => array ( + 'subject' => 'history', + 'nohistory' => 't', + 'queryid' => field('queryid'), + 'paginate' => field('paginate') + ) + ), + 'target' => 'detail' + ) + ), + 'remove' => array( + 'content' => $lang['strdelete'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'history.php', + 'urlvars' => array ( + 'action' => 'confdelhistory', + 'queryid' => field('queryid'), + ) + ) + ) + ) + ); + + $misc->printTable($history, $columns, $actions, 'history-history', $lang['strnohistory']); + } + else echo "

{$lang['strnohistory']}

\n"; + + $navlinks = array ( + 'refresh' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'history.php', + 'urlvars' => array ( + 'action' => 'history', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + ) + ) + ), + 'content' => $lang['strrefresh'] + ) + ); + + if (isset($_SESSION['history'][$_REQUEST['server']][$_REQUEST['database']]) + && count($_SESSION['history'][$_REQUEST['server']][$_REQUEST['database']])) { + $navlinks['download'] = array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'history.php', + 'urlvars' => array ( + 'action' => 'download', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'] + ) + ) + ), + 'content' => $lang['strdownload'] + ); + $navlinks['clear'] = array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'history.php', + 'urlvars' => array( + 'action' => 'confclearhistory', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'] + ) + ) + ), + 'content' => $lang['strclearhistory'] + ); + } + + $misc->printNavLinks($navlinks, 'history-history', get_defined_vars()); + } + + function doDelHistory($qid, $confirm) { + global $misc, $lang; + + if ($confirm) { + $misc->printHeader($lang['strhistory']); + + // Bring to the front always + echo "\n"; + + echo "

{$lang['strdelhistory']}

\n"; + echo "

{$lang['strconfdelhistory']}

\n"; + + echo "
", htmlentities($_SESSION['history'][$_REQUEST['server']][$_REQUEST['database']][$qid]['query'], ENT_QUOTES, 'UTF-8'), "
"; + echo "
\n"; + echo "\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "
\n"; + } + else + unset($_SESSION['history'][$_REQUEST['server']][$_REQUEST['database']][$qid]); + } + + function doClearHistory($confirm) { + global $misc, $lang; + + if ($confirm) { + $misc->printHeader($lang['strhistory']); + + // Bring to the front always + echo "\n"; + + echo "

{$lang['strclearhistory']}

\n"; + echo "

{$lang['strconfclearhistory']}

\n"; + + echo "
\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "
\n"; + } + else + unset($_SESSION['history'][$_REQUEST['server']][$_REQUEST['database']]); + } + + function doDownloadHistory() { + header('Content-Type: application/download'); + $datetime = date('YmdHis'); + header("Content-Disposition: attachment; filename=history{$datetime}.sql"); + + foreach ($_SESSION['history'][$_REQUEST['server']][$_REQUEST['database']] as $queries) { + $query = rtrim($queries['query']); + echo $query; + if (substr($query, -1) != ';') + echo ';'; + echo "\n"; + } + + exit; + } + + switch ($action) { + case 'confdelhistory': + doDelHistory($_REQUEST['queryid'], true); + break; + case 'delhistory': + if (isset($_POST['yes'])) doDelHistory($_REQUEST['queryid'], false); + doDefault(); + break; + case 'confclearhistory': + doClearHistory(true); + break; + case 'clearhistory': + if (isset($_POST['yes'])) doClearHistory(false); + doDefault(); + break; + case 'download': + doDownloadHistory(); + break; + default: + doDefault(); + } + + // Set the name of the window + $misc->setWindowName('history'); + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/bootstrap/Favicon.ico b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/bootstrap/Favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..6a188d538076f52875fd4748fde3d29f6b537b14 GIT binary patch literal 1406 zcmeHHyJ`YK6g|5->L$DHuKQjy`{?o+`3Awp!W1IJ(n7G21XBotU}I%vC4!Y;VIzr! zg@yiyRmzYeW>&+JVEQ!9aPHi5xHEG(#RWLF6$QujKme0vw+xXKFmTAQ2;6bU<18Ew z2eeu(ESF0Z3Iz;@L+tl^)M_>Cb~{X`Q}lX0l*?tz=X0#rYt-v?bUGc3Mk5Rc15_#% zG@DI~$78hHZIntSY&ILLRx2zP3lxh*%w{t*8Vz*2UG)2XRI61?CKGJ8+q0f7!o`7$ z1OMg#&;S0K(x2P~QQ^jl%lU-(Tr9XLO(9w;=J2kZyzG6~%VLhVZAZMx3DKj5qvRCH zPB`kdDjI-5sA*eF5KOA%0a2DsJ84Nt(e#MTxWW5+CbT4yRu#r|S(Xo z(lm7(S1(gy;B#H!75v1thL+t+LJ8Wm?+%=Q;di$fD zI(6sXd(PZn^8(<7P!#2>4o$~i$3%zn6jL6)w+B=muZ$T9)l#X1e!q{&WFiOz0?_^6 ziC{2@)oO*!W`q5Hk4~qVh z9*4){kuMqK^ZAV9@rXvF0iVx@N~MBkvnj2RD*`N&6(o~M*laclTCG--Y_V7{olYfI zEEc7TXMxsWFc4=xpNHLUm+}nqZnwjFy~b!X5&_Pp-EPY}xfJ-q@|VjcTCEn`ZZ|Yd zdq?I5%H=W~4u`ZbpUR$z(gf!!{Y5y+oPXa10lN+J^KLW3h-`4zfKf_OUc%biCVOF{T0000Fmw` literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/bootstrap/title.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/bootstrap/title.png new file mode 100644 index 0000000000000000000000000000000000000000..44f5c7a18f9ef396503ae728c360e42a3ae8e01d GIT binary patch literal 5388 zcmeHLX;f3!8jXk=0V_p(MN~*50-})8*MFXsrGo5xFFU74L(|$?Xq>}}pDdI}Y%VSj_&&a8AzG_e)q43xwbWoAa>!(j zb&s_o|3qY4K!E=Rr7_h6?@|T(uEfY0V;ddnjT@b%_1_^(bF7sN{hN0V8?&|z3`$W(YQM zGb0kP?69B^fWVP9&WF~q#*>hXw`RyM<7P-{Cw7z?1%kP{!#wL z3rcFQ(l8;HWjrit6Q`e;DW33L>(r8FD`QyHEZ1zN;cj!ONYg6G^Dyy{B9yNwqcPu5 z+;`6NTp8+7voaM5a#2ghW+l$*NBu`zYoe;E*xX(T4#}-xvm0Mmb!TOr?jDB7S}FeH z#k6G39RNq&acaVd-Dar%?LFh;6TOXIkV6eY7Rs`JuErp!mr5|%cn#0LtXi7?oVViqO`&zr(sk;7W zwdL#%JaYG1i_2-6+^?ZzWuUql1hy7;+a{lYNi4`c?)NxweiVOS+YA+2adwlkETnHz zp{gLbv^4K@>Iih%)gPPBrESbvkn=Ml`GvE+RhHB#KpvHuI4>B}eJlMm+${|z75WZZ zt8?&<^~D$0^-VtTy2*-9Aos0v2*R87?Fv#8^YcP!OL^-uYwpZV{FYUnU+Joy6u)Np zIgBrJ!?aTrWQ2QrDwH;~HZgYh)(BF~u1YoDxS-uaJ@Z$soOktM=JQo`v2B%%r4XHb z{WtY*-4~`>uTk2;nR>|x@&$10Os!yk^}}V7@rPYcJGz!YxapoW5fOWO9M~W0Tun3V@r!|KQR2zNxyj?^Vi?L$bpAbp-sq z=$l7=qP4$IX=DUCk&0SdDe^Z1eyH54++cInM`sx%4mPbPOr;EJ1e;we_TC`qXceu_ zMwwcv_=r?YJ%e~2#ER+ml`@e1IQ8(+KUR8qxilr#uuX&bG@C+K~7mmA& zTbbLFLX5Tb=*Nx!DsKhp@Ke5f>kh{c(Wsc?AKQs2)L03vFtACM+oA8LnFzwp(fp6Z z1+`ArW(??|l*dJ6cUAS*RRxMY%oRUOu4UiR=<+$;y+IdFC#|q|=!g z*@d!xWrFq_jpe&$ZMq)by1qrwT`TE(JUZU^!`>0me6~T&6Ybt&A7plC^{zTt%xn!? zv^6+ONzSOZt1TiZFcbn|f-ua&gdL*e*3>Hznf|l$+cP&Nm$?SMy%Tn`CNjI>));TS zCEj!H?mdxLgR@I0X8N(6S$g0FAEPva!viFX-(JHw85-5s2Z+MbkFT!nY08YEwp|}=vsZ_z0fxRV(v0Xd@*w{>2;G? zi#^Y~t+QK*=KeWWFbK}`SARG9yfx`uBR39qcUabn+k=(}yD+>-Ng>c^#?99{?0suZ z%lvSiWNNd;`7aJ_n9^WfN^S5juB#rt<}%kodvs`-{Y ztCl}o3hVC{>-Q<^MF9g|F6s`wj`rFYUcW!%yt@5_NS|(e-s76{cWn}O9in5>ryvAe znvzg)n&u01HtbMgSJ`^;(h=Nhgb#n7BPxC1V#!GLb zz{;SAVAqx$6>h#rNlmW?ZC?7st}!S+GN==-p@+lIo(OYR*d~z0>_-1}6`e6$gofEPX; z@2$&JAy_OcO+{?GQy!cao!sAZyzVi_^eo3H^W8{$If=2Ia& zqy5WQ(ya1>X*r$Mx5EU2y`|zxPHQYlS}C#eY|zDG4LP6#%eRRjnc^_jqDjr2ATz&ablf1r^WA=ZVBHEW-i4k1YLA-NTe;hYx~Ds3dJfLHY8|cV=(voFVA1QM=XQz? z=QM3P<MJHd%f;AY3~3e#umGOGmpfL;7DQ#L>>x_KNkMxc>qdJ=JRf literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/cappuccino/Lminus.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/cappuccino/Lminus.png new file mode 100644 index 0000000000000000000000000000000000000000..b5e489822d12a43277e47074423530264fc86949 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VV{wqX6T`Z5GB1G~wj^(N7X~v1 zV+Mok*XG&)MK}vQB8wRqxP?KOkzv*x37{Z*iKnkC`z>}M20oqzCEGoKLiV06jv*GO zlM@z*XJlsmJa4e#;0o?eww@(BRxDfBHZdzs#f)Rdinpn^q;Fih@=0Dc`LmT?6-%4q g=?ka!D>E}N6fe=&tZVGI1scWR>FVdQ&MBb@0Mk@Ag8%>k literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/cappuccino/Lplus.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/cappuccino/Lplus.png new file mode 100644 index 0000000000000000000000000000000000000000..ef51c7e30b8343f2efb561d1dad21956307bb75f GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VV{wqX6T`Z5GB1G~wj^(N7X~v1 zV+Mok*XG&)MK}vQB8wRqxP?KOkzv*x37{Z*iKnkC`z>}M20no;rLWn6LSCLOjv*GO zlM@z*XJlsmJa4e#;0o?eww@(BRxDfBHZdzs#f)Rd3fVTFD}2ssIeN`I`DXUMD~d7k r(-(TgKWF+$FC~wL)QqS1Co(czpJ%MO^m}Fx&{PIbS3j3^P6}M20nhv+Gn4DLJpoTjv*GO zlM@z*XJlsmJa4e#;0o?eww@(BRxDfBHZdzs#f)Rdinpn^q;Fih@=0Dc`LmT?6-%4q h=?ka!D=*%{$e@^NVx6%-XCu%o22WQ%mvv4FO#nujIQIYm literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/cappuccino/Tplus.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/cappuccino/Tplus.png new file mode 100644 index 0000000000000000000000000000000000000000..c54f5c80ad67408010b2da5c01fce03339604bf0 GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VV{wqX6T`Z5GB1G~wj^(N7X~v1 zV+Mok*XG&)MK}vQB8wRqxP?KOkzv*x37{Z*iKnkC`z>}M20p>VMYkscg?v0+978Nl zCnqcr&&bUBdEQ{f!4=${Y&}bMtXQ_LZDLlOiW$d@6|!wUSNNROa`c*a^3CjhR}^F7 tr!Vw~f6nxiUP>MfsToi2PYk@pz|b0RVJ-gR^JAd744$rjF6*2UngGmTJthDE literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/cappuccino/inputbckg.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/cappuccino/inputbckg.png new file mode 100644 index 0000000000000000000000000000000000000000..35815c5e83c7e6c9087b62a6c24cb10c448c73c4 GIT binary patch literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^tUxTx!3HEF9vn{wQjEnx?oJHr&dIz4a;!aF977~7 zC)fOc_OG7J>F4|LN}>Ohqg0os cC4CfR_$Oi+b6xD{9-uJ{p00i_>zopr04g&tQUCw| literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/cappuccino/openListe.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/cappuccino/openListe.png new file mode 100644 index 0000000000000000000000000000000000000000..0d132d36486f1a070da2fa332c28c8db5b55b006 GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VOS+@4BLl<6e(pbstUx|nlDE4H z!+#K5uy^@npa^GyM`SSr1K$x4W}K?cCk+(r@pN$vu{fQ)r##h|*_2V3dFsIxjm}3M zRR6wU0O6QfA5K0lco@&d*7m>ghKb{mf9y_I5}4d#IHNu7l^PlwH77j$zhC#(r}*oJ z1_lN(wI^hc960gh@PQBcfA@B4n@vbjSheu~euog_PY;ZH5|%ia{EI$+;KT{%oPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igY` z0S*%^zR-#Q01jtKL_t(|+U=ZMbKAxhfOjEEvL%W(Xvx;aPGZop;-pQTK)JhVAIOLF zoqTT}$jN&<#4l*UUyvbwKsqB#oJ^bPWQOP^nL4*IF}`qjBxD=RAm3kGk8CnBb4R!y^7 zt3RTV3HV6u#6-351lGuGS|!}X%f(2wB83`Yxgup+=;pnZxtlk;7~InxfYWUssK+G% zpQ>FmQ8uqHD;sx60)*Ahn@k&r85(Wk)&RtxL1+Ksif zHG~jN)qW8ltj=8?@-R`Bhly&Bl*9KuC{N_-S!z5&pD)sq(?v8c&vo%kwZ%Bn)Z2f4WzI;Quh|_)$8@1?f~jyo{S+4_&j;?M46-ZF3&xXYWhB} z@Vrwl+NVvU@)n+$rq^=|q-;p(#mcQa_ZF8Hd%6RG zC&ffPrC@pG3rJS8B@*9^r;TKitBG<8q(ITq!}5)vZkLLM&7vpAFR!#Tr=)0 z>9)eLA@*Q**KTRE$>C6NDA?<|xN}+G8O`{~LKd?0LS^+qf!22XXt+0kZBZ0~$+VDm zXW4f4qoF=J)p_&wooZ#hO@mDftrdz)bMp^l+;{N6J_W1mo!4G@JXB3h&tBK&`hvkq ztp=YfGc$#9W#~w_yF+*2s?GMfGBfk9&%gL#R_hH89A!fr#t9+Ud;#%O;Hu7l`dOh= z3Wh>8!>Ad?*WZ4-`e5yuv5`Q4!3bjp!%z5UT1dOQ{P}+`3=SQw*6Y=JePL|C2uG);q3tpD~m{P;-%)27bu{HLD{4i4sW zIgaC?M3N*y5dQtO`rf;5Y=q%WB7rKN=X1FnlqiZK2*Tg~@!7M_obZbGTRb1btgWrx zTU>T3nVG$IihIttST3?stSqnU@4fdsQ4}>zQ&m;dG=xw*9-p6|zjfag~SU@2-4*`SQh!7degt{VdC#J9my{*^fW@j zJ^q4I$;aoG-L{Utq(+HspUw(xU zIyN+f5IQwFxIJx7;W$nd#dtiP&1S*mAcR7}pe+nK66~b|?RkA|`s&qaGzzvV7K>?` zmP{tI*=#%>7X;zb^vpYF&j3}Ws(E*5)v~Nl{{Cq+8bt`Hsv3*MqR}W=okF2-UAuAm z6jv;jA@fNRrw4j_s?{o{aI2%(eDo_OlOy70d%00$A4WqF=Eb4 zs%o3VVM-nrONyd|LZM&&;-#Hvqy1nak;rDV$z)O#MM;wW^Z6GX#}V&FY#Wgi$H#hm zd#~rUKmSDpPo!xY$8oYOi=xP~Y%-br;DZl(dwX9y6Zz*im(;0C&^G9Ts}u@_sqel= z2=P46vMdy;s;cWc-56ch>HbEeQPO2#YiW7KIS#>K@Wt^{PbOGERXUxf!yR4M$sm$B zc0HUviiAYl(3VUl<2+s;N{;Q50gU6h%>0)k_JC!}QF| z-ehYRvU4^L;F{BQ9mWNwiUg$2AyyPcQ52|_&1Sc!jpMjzQ(FLJQRpVYP-HS0 z`dly$z*eD9cq)Q-Ns?%L0MnVv<>;UR#*3Z?P191TR5Ti;z24Tf*&Hh!iV@S5NF->x zBFnPV%z)p7=7D_zyaYjzBq z3cdiu;J5`rfOUq~sOq|&PN!Lxg)vDa68U_d<2at@5i*`wi$%|UGMQXmUCrn7F#Wo& zXEGV56BI?!vMd-KC;>aM4Q*giKr)#OF&@ovMnt>wpW1x@1{~ z`eXqJRORz|Q4~c{^m6yaeW%mu$;nALT$bfrE(ZrrPEHaV=_R_ZL;Z9*eevQ&=rZ)k zb}8;xurRXV<5dA-1(s#$V8}UYJkP`RN`htE;;18Sk|f2NA_xL8MZ^YxBLhzdQ=3kw zo&J=}I)Tht4!{x52q7RiGQy%W3?+vUE6DRa^cPB;eYZ7?)Q4r`ribiNu)F|*eO%Lm z$I&e3ng!;ATuj7gk*Rg9=GBZXYIEf~m&=h@nA8V_VDnrTiD3L7%aCabOd$#3ZInoo z1b=dM(4?GhGbm|qrCc>^+VQ;-W6@7q+5rM+utk?5YEKP$Z(%|I>Ew;8$g=D;869b( z(+yiWuWK?4S^~^L?!(EPBuP%Qq$moUu2Zk%^u_H(Rn;~blf4C&X|}x< zbu*;XV!_1?tMr|>Z;RSUplzE5K@e=A53Csh4x1|hrv{5thA8nvfehlpoTr1Z-Bo`k zlOgGNPzd=GDi*rC@QY_&fDK@nY~m;dK>$7yiG-5_@Pj0MKo$hxv!ER6ko6+qpMa{y#TZr~`W1h;11U zX#$SpwzoF!R9m@RCg1z}4u%GTWF-Z8Aeeie=O-s8>3H9kWl&XBRn?QvJ$qtoEW(`x zu;4x%l5c}76y()1nG9@4`bcd*^S*H}lE*s)Add$=g3f9}xzpab7H(VHMmsUa7{}xB zXfz7G%vRs#3bWZP$$QDN91I4Bj__E zrGIs;-zFKm4-%vp;l_uSCQZ2Qdvxe~KVTmQcDrn`wrk-|v>hKE-sl^{kmkv<9En6Q z#;_}AOSIZTbx<`je2kQg3?GBNMN*PVrJw=MyIfFnzt2Xwt<7*2TQz#u67C?i)sMwu z^z~r-bx-B7u)FOcOF#y<6kj_eS{@wx&A42GL{_Gxgg)QjNi3Ut{)v_D7P2Yc{ zD9YP!z1f8f=y|=m?i>QTaDHLwr`vbhXd4|F?(gp(KmGinfqsM#ZJb=B`Q!pgSY)$V zxc7lhTfp8hod@@tr{kl;u4jCxHy+OE+QJ+=D|Cv*iLsFrV#@BhA?KiSORm8$h`F8!e2e?V`!XqvWO zE*%N8Gzzu4;iQ(llm$*^n8xyo-rdt{(^julhmQ{Ku(#K=o8&18TDhVqg+k$#mtS%o z(#0^wK76L{XP02#K@4wA-c-s}W4&5kE0#^uER;&MTCGy4tgo-v>vh90N@cst>pOTL z5C}N^Ci#_VFy(TtdfliShH09nX~O$9gZ+KG(&1vMj9TB}+2(0ujPX_;3G~J3c?J)M z0wjs@pj5Fet5!GGE7eN1R;gBi9{A}x?(j1Z2!sZLZ5Xm!DG#1D+;gBS5a@aoeeUl& zxb@0DRofKH!WiQ>UgKT4@ru)3Blm4Hv1D3z2_T`a)<%=&qSibmR d`SMiD{{dI6bVEQ817iRH002ovPDHLkV1irJL|6a- literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/AddArguments.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/AddArguments.png new file mode 100644 index 0000000000000000000000000000000000000000..3ac45e18a0edc80abd0ae1125ae3fef2d8b5b7f1 GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^93afX3?$7I7w-U4(g8jpt_&eH|NsAI$eitQ=s&~c zn+$ckCfxe3vhBY|>;FAs{Q*E_x}GkMAsn*F0wD=*Sbx{(dgl)CBD(h4H_+8_;V*@_aBpdx`JAPEA6&;?pTM70}L5Ftz` zNvlv(Mc&RVZdgS{2`|dod7d-Qjs}3{KY9D1)oM8wsU5DfNT<^oS$r%Nmi12p0_?UG z#N~6A0PMC^s1gQ3}5kP3QDnV=|e#XQnLJvaVoud<3(j!`R@LFk`Vmuh*m5Y@$>uA(zV`o6RDf zP9qkJAruOcz(<0yW7iIvr@N?a&!b|SM%l53BT+yw7(}sHL@Jd+I2?xG?}yjxg)GaU z+0cwg5J;UIqPDYu^1=`vC;L&F7{t}~CImr1B9TyFnngSwha^cVEGk1}f@;OPhw}26 z0^bj4QRwT%-6{{W*{s|~tup}aJ)nIszP&~!KqGjDvQxnGh7}LiWfT|Z@N}>bdX~v# zRM_$5CbA+26@C?$%k?e%Zk1V)luRb!@p#~NyOrVn1b-B8s)X_z_?@6r(hm0%{7LYa ZyaHMXz-Z}srnUe8002ovPDHLkV1l=r>v#YF literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Aggregate.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Aggregate.png new file mode 100644 index 0000000000000000000000000000000000000000..6fe42013bff18afd5d7617a5ef287484a0b60a64 GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%``#fD7LoEE4PPXMbgZ1H|_ z_8ZQiO0nwZMI9XiDxHSUwtFtxc7ARvduAC&RE@#WbKjTUbZ}u3XiH3)*y?hNJB{h) zvS#INZ#Fr8yQ$G$GiCA968WbwK1G#2evd@gm}{Tfs?t=^sF28HCOtiHpKW{{&@wqOL>KeRuhAKmX5EeMZ6G%cS`>wgY{_;OXk;vd$@?2>`r#VSE4p literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Aggregates.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Aggregates.png new file mode 100644 index 0000000000000000000000000000000000000000..4641859871886bb95d9829e8599a34796b407dcf GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!eSlAh>;M1%^TD8LLTpDz$DDmG zC+~keegEUx2OrNr{B-Hjr>l=Y-+1!*_S4Vzo_~4x;>(klU!T4D`ttR+*RQ|5dGqZ( z%X%N6QA{O4e!&dW^8f$#1oCn`T^vIs!b8t?b2TXNv_33$dJ*^j|GY`AM~Z@zI~Uaa zxy&H6&E*Y8!o6KV%nvlLpPR)aa$n<*6!U$N74=_oU8H3fHYX_amdKI;Vst0Fg^| As{jB1 literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/AllUsers.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/AllUsers.png new file mode 100644 index 0000000000000000000000000000000000000000..bbfadb50130308c1da8b5be1c8939149d64f020e GIT binary patch literal 384 zcmV-`0e}99P)72InUazfQ$QY;Q!*6^36JrQA1O6X+(+$?V`*{nBA=q4o(*--9HT~cE zxbFXk2bFL`K=ka3$zVQC1CR|_d$$a%c=5GtFg@dZ!vD#qqfrg;XxcXoi2q~5aou(Q z7hK8sKkGu$|EXtU|4%p>{=fTZ5QYK&OHMraUwr)j|DvP!{}&v-_doyO-T%4!?|=;f zDV}sH>VNO?kpCTr{r@)~@WwQt_!vTS9#C`6zB_Oi^q&a(-*qJLf9pZt|Bd@R{@3ny z!8D){ruhJ>=AL80|Jx7w{cqmy^}l|v+yClaPX8-**kc+{a0sC}YxnK{89Q&m4S~i0 zI-Z7NKrTr0UWm=QJoO3)DGXap;Q@#EJ* yG{>yG45o=r%E*R9Lp9@d0WJx2myv7$u^0dus=UWF|MLd`0000t2WrXD&$nHdQ&f&TEGVgUhNwRrYH(181l1jhTvWj zs<6Q~5KKqW{rm7s7wQ^&hodD&0Ef(jX- z0w8Qq6oz;iov6$8n*K$v2qI$;ogn~d>sF(TYN^k8Ef5Qv^>y7FYruQAX zhMBY7zRXlmwE@uCnPT2tU9MN3@G#kA3uW!}G*fqbjXl&rjRUQ z7X(^h0NGV`7hzfA+q*BcvZ&+XJJ0O%zR&0R^={AX_}N~fOGH+p&qO;!2VL4}pIO^? zdja%l>LDLvPFo*>uA5*s9wQfj4?gdMCH686yhH6+!D#Wg^C!1s+OsmO%+u+k9|HuK&vSJ zS=1_k0gz1uAQz)Rjex5Hn(|M`r3LJ!C&5J@A;p-GWJXCF6UcKj#{;ASV*r?6dvNB4 z?=(&505KnH0qT1cpk1(q)6|Me1DvFQE!U8#sMKc<<)}3R>N21RfYbuqTi&Kt3wAgh zRH5A}^^LevCj~sJWzc6{J<@x>DFn+rX9Un8 zY86nxW(%;$;_}-t2Hr$4_-YG-FMr|6i)~ze9)o4B3m_JcwlM68qklMP$bRAOHw=xl zu*_x;0UO?j?ROv=08hVg`W8~6qHkd6NgNM89ByH3e(F2|bJxKJpMg&-K+5?sVt4CV xOVtJ)Vq9tsPz#>+^E%+f-}%~|QT4Qk^bab>12emjpfdmf002ovPDHLkV1mn*5EB3Z literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Cast.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Cast.png new file mode 100644 index 0000000000000000000000000000000000000000..d7666e59aba60707a39b9e10fb1fe507ea746c45 GIT binary patch literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}a)3{W>;M1%BmH+R?Xy`p`^K65 z6MEXtAKX|05xM_RKXKy!lc)9gKz6g11o;IsOq;fS zdu)8tZJCJ|OWt+p#STv{qv(u4glAD|GaqHu&%8m)C u?-d;%reVU>SwdzFD!rH(wMrT?m`|FNQs=E-9ehSK28E_u34ZA(j1Ht1|ZE{ zn+*TYIqv#@@p&JxQ$bD!;WgJI{vZBW@V|bsI)-MfE@)q?|9|7X7_gJ)9ryfy`d8)u zse9}}nj49V1&}Qur-Gb(GmDKLI&UvF@f>$U2GHoV`5wu%D)N` znJPKow3#C3KuC$U?IV7*)nx#)8O)n9H#->idFc8FMyiA!sX-RftSJMS&0yY?3_73> zYUojDllP%nKSD={%m4zPh1|G@+I_V&F@Vf5z&pPH5F3wBztBK7Z!j_S#VklWjB4J6d~z32|N879mC}b_ yGnfEOOv|3KGZxsuL(~POac5~-_L=_moj(DbCqBaAv2Sc1#I>_55Diq*o0xS u@4H%Xj6Dnk#&MJ>*v#-5!DF}aFMI$MARXeY9aaYb0000sjaQ8uCA`HudlGMu(7eRwASvpxVYWj-QM2b;Nall;o;@w z<>uz*=jZ3?>FMg~>g((4?Ck9A?d|aJ@b>oh_xJbyV^&N60007XQchCiwe*-!* zFlGi!W;n2^mZPB**i=}zTL`N&lObb5AZL&WW7wTRUI-F^jbC~RoA$EG#^6lXD|LVV gvmd9uKjA&W1MRy8G?F2Q_W%F@07*qoM6N<$f(o96$^ZZW literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Constraints.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Constraints.png new file mode 100644 index 0000000000000000000000000000000000000000..76df5ed79055c9218fa82abb71f22f686f3be21a GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`O`a}}Ar_~TfBgS%lu|Q(O zeYX@Tf&c6mTTB+LZsq(}zc2k7fLm)`FV4RjSd@wsj|0{ zbkn+@k+mXX%o9}RKizdmRA5rOw!`!z&zNTX*({-~!}j1pPa;RaXXE%(Ap2rZV#j8d kHpVGSn-eF9YaC>7e7kSK52sreK-VyMy85}Sb4q9e0GYT(oB#j- literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Conversion.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Conversion.png new file mode 100644 index 0000000000000000000000000000000000000000..bc6db85faa8ece1a50b145553e983622ace3f3f1 GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!eSlAh>;M1%YnIw9^51o8_KmG) zCP3KFcKly^FJaN;(6^`l-=6k=f7|&h|NEC7thnC&f9I>5S*LwJ-THs*d*y>=|EHKL z+XIbaEeY}qW|%f@`}WxQq}xD&P)`@fkczn26UTWE7;rE+#2irF`^G+7z>VqoJa(;w z2F|$s2d_Ol7`58Zp>UJo4++UTGEYwIo@{yPl?tDg%%hGi5==9vPwX&QHpMBSqDnro eIQxc6FTb!k>(Q@5!I?k{7(8A5T-G@yGywoMgJf<1 literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Conversions.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Conversions.png new file mode 100644 index 0000000000000000000000000000000000000000..2e37247469b2fe447287e6a2c16a4aa4a21a9f7d GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!O@L2`>;M1%7y0k1S!x4BKt@Mr z3WRZY-v6Dia;|s(pLN=I`HiS&JO20W^60OsZkZg`-(7h2U&Dv1|CwH%O9Pt2RubeF z%rI@*l`F5>5Bxm=6p8Y5aSW-5OYMmiYf#`h!gXrO)vy1`Ll0bB{>=Dnh?H1ZoI)+n zrxwSEa3&$%ZO1O}sH`-Xdat(qyj!@LVo9)cla%pg z{LGn?Flhm3Z9=^mhSBC=1?_bNSS-JgmP;h%C!*p5;rx9qNh4rMXSALj-8<-w z5?xSbi3MVj%C#Hm0zWTsOBuS}&o>Z@j)yJ|2LuQGXY6+^TsVOy(5|vrq+${(3slsi tE1q1PdQN3@Ygm05n*mS{Yi1L1Y1;kcLjNRfa`ruw_c1g3%I+Y7ij=Gg2k|)W;$M24Fx*DH28BvT7x> zRZbO2HLd1chWqcFns@Hr>AiPb+iFke%qgx*0uP7t=lz}Meb0H*0HnRVeKMoqR88GOa>;V37L|()rGl)dY2(Aocl{3Q6bYo%R1?D|Z;dXao)Yw1)gPQ?7 z<1uUien+f`hD{K~QE*&8Shkly2FN&0*6d`ThyHPuuo(cay$_7z16Xe_x%oSSycMz7 zYC`dN3}JBzE9?{jeS&Z9BXxijz=CrKqHhNHMZjSWanSQULstbqx>=Bmj)= zE~avG5o~FJ*wh3;qXA!6ht*4J%$1f>K$jE{6@dr`2o~6yFTh<^2C=abED56a9mT~6 z)YgJ2FQ;?oe*x41XL^!Ifd+owy9<+9S@74?fUB;CEkB>GYqv~+)_@k#+IA6^oE!vH zDsWX*u*qcTE!#~2xzZw12MK_A?G?Q3Fsn=8BG%c;O1SqQfccC9y4we(ufY3KQxKSU z@c(=W>mxP3C}oLMOs9`xw(FMkA50kUB>w@w0a$nNRatR%K{|00000NkvXXu0mjf*~m2; literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Cut.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Cut.png new file mode 100644 index 0000000000000000000000000000000000000000..8fdf56530731f50dbc7b70dd0e920c2d75426cc1 GIT binary patch literal 415 zcmV;Q0bu@#P)CbV$;(D2jMfReu2U^9zpaA{-85G#WvwH+%t#l2nK1c@P8voo*NT zJbg~_R6vkrSy+|@!!S^jB!ogC0tlW2Sa(sWR3OXBvidEpPB!8PfPt=~D%Kz?3JQe+ z4r$?#h|p}ckj-W>91daIHthKv*YWrsWGgw7$xzYsHEmg4q@c-U0&<>6Ch^*o_qMUs zw(Gj!c^=VNY_mGYan|jl^!RcdFr7{}msPb#{bI2IpGbg>#E`qYKMo+GiA1BcgAemp zzNvH?O8*_jhbLTIULBtS$8q%Snx-M0N?|qB&0u|P;n4TpwI3iE+-!{IpaTE^002ov JPDHLkV1mvIx%U77 literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Database.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Database.png new file mode 100644 index 0000000000000000000000000000000000000000..e998bc5b8a2f4084c6ee42af898becb6cdb56515 GIT binary patch literal 527 zcmV+q0`UEbP)F@ccPYj4XyMJm(j9%P6X#e;Tti;H$CfgQSxsTv8MYg9l+`DE{~Tu}b%W&dOH50r@zw-^bn)vr z{I*1Nx~&|o)*5>|@7cAIG>jQ4l_|>FV^np5<>Yk_NCyGi(B=+-U#&dt<`-Od8OvJ4 zG#3Q&R$N!ay@GgdlX!IA2?FSa6oxX7sV|5xud`?8>2!Aebh{mzZj~MLn}FU?+kE3S zAOuv38QfY9emc;!=(<_l#w>MBLeJf0L%xkFk5JaesOnSy1{^~U0sB^hx-Ow9BR=3= zePH7Vz^>*GfcAC>&`WpvfO<>=A85PKvcSoTMz0Ql;1<-A8uWm}84Na1q!StpZb9n< ze;d>)#|_bI-~(&@28A$ibc0%W3*HPGKgJ?MG|Eq-z-n^1_aE4i8EneKfd&$v(l;Z( z=*#i5WL{jMu=EhKIE%Bjh*O`&&>o4-;{VlGH#;tCRaqU(UP26aVCN-MYF1oNLR%0QxiE-ETW}r<=xQZ2&S}cW> z+rR+BGz?{?H3uBb)lxfNqB}1wImCSH$ zdboG2UuzlyW~}p9;9tLsc9ad{I3{v!@T(+Ilm!?|)3YvzmS*XRM> z^qvLiDii@dEe=f!qjvHY6~&3NWQ8a$p^*Cko}Wj+d9M%f>H$p3ZJq);S^}-cPpE1D zisFVWI|$;TZ;<|_Xq{nw;aXJ>fRJ!N;_Q$G2b~;6jU~`-R|e_z+GwanoXGnG+D0k6 z)xQBo0IBdQ)KVO161btDr$(TbH*l0QLx{gXHaQMHIYrNS2R^o71cbLO*mJ*z7_or~ z0o2QW0$5SX&w-0hAin#A_KYLwc#6oEmqvh)aG?;hBO6*m)HjQO?HN9=JcM`o0d|~| zhy~3ka8`Oo44qB`w)a;@0b- z?{;U~?e4aRd1t#zwpS!xoJ`-DJw((RWeuk;t6*Ju-;mP6+CE z8SGmW?5hO!B?6WVbG?N2aUR;?3p5XdD6c)ipW(9vN;rUAEh(e1KZn%nJbp+LQn4V^ z?Euux39$HGq?ezG{fs<==EfbccQXXYIRKt{$u*ZsC9$So&w*{6nCtbr4OyB-`~9S7 z#|2QybXYEzkIB{aKHh zvN{7JGs!Rv5g&!`!&1PT%(1S1U;6ws+(!8h2L*xFcVj4>u!Xk%lgLBxIV z+VFJb-1XuDY?S2e$=qdT&YgQ#I6OKo4GaIQ5&%J80=?kB!57dOKGfa-^==rLBL&V zpOJ4XO(rm0E73ajkpOolGWFvHHzTXXBI|^&$_<<>uP|JT$H7IIz~r78xln+b&!d&g zF?_k3*2u9K-*hnT( zOC+G|>_84|L2|n>l>v7qvOak}i4q}l0Fui!Mji?1ohfY!jPF^AL?HY9kep6@uC1eL zvrSLHoryf=91cVF`5-!+3|CiI@nN;1VzG>8pm)A_t83&?2$I(e(e7aQJfQ_yS+d~W zY)08+8lA$_*T~OX+_1AwnAXqCi%*2h^QPYkCa)&1$s1?1{tbpGsr}D2ztjK#002ov JPDHLkV1j6?*mM8@ literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/DisconnectedDatabase.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/DisconnectedDatabase.png new file mode 100644 index 0000000000000000000000000000000000000000..b81a1715b9c61ae2badf8637626d56ee5339751b GIT binary patch literal 663 zcmV;I0%-k-P)K#$=Ec3UwL}^s zGtpb3ZKCvF+Ah`1rMxcCaJ>`IT|LP?0gCz>0kaZ!OT|+9qhy-gzEHaHy=sEUwo*)pIg2Q@41k9HM z_{h%eZ@~Ag8@bFU2!aDFI|qib5Xc7-m&ux!)OpN2mM6;r2zqUZ_}+mDTFA+pNbzpu z^9ia#A&-m@Mx0qEpan#C--{if0ub`sAw*rkHv-PE@D1v*NXlFNEeN`9nnT$!UJj(155+hKN*JJ%bhNtV3kTR zt!)*r5IG}7xULTS5=q4?OuU&q5BsaD@GjlQmO({}%*9q3oq8EIJ`Ta5K1K8Wlai_q xs(xon)A2mLD~aX5^W5oUPH}zV=#fXF_b0CvyqJBP6 literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/DisconnectedServer.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/DisconnectedServer.png new file mode 100644 index 0000000000000000000000000000000000000000..6badaecc7378730ee210015c9d8502560779e0d0 GIT binary patch literal 506 zcmVX(8Zz*VyHwQ{mE5He`&--(lB7?fI%eGVj>b15fY2QQjic@hL*GjB>KLg#d?Zv&)Et?g-$_e}sK^fCtR3VRFF90S<)#xI8#x z6Wp_aD<0qpd?j#=&5>&e0)oChJSCryeoG_uxxT00k&H9Ay$t;iaN67qANwe1ZGd-S z6|Uh4tc*^>r`3^tww!+g0tPcV^xD>)NtOu>p5ItW|EIx&kOl*@0Oic}FwHlA*6^NCTh$q-ks(G`~ z2u7zvT*d2{T#jf_5h5~~_!JTb189muT&W^@TuG5Nk}tzUULL|ysrVG)3ME;+8VW6r w5sa(&k0_ig6;8kv*QiXxvVY~wes&K&0C@nQz-4*1`2YX_07*qoM6N<$f`Dh@ZvX%Q literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Domain.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Domain.png new file mode 100644 index 0000000000000000000000000000000000000000..15ab7d7efbaf624d00b69c2db5126b409fff1c27 GIT binary patch literal 320 zcmV-G0l)rc4lu&te$H7hKAx-g&|63ruza^?YA} z7Q`=$0uE1B0RnN`qJYCAJ3t_wSrl-1XnSgbcwwS|!vjk#DAVE(DF^c0@~Exd>H8ngKKOY4;ipTF zK3#qM`I>*wwe5#*Jo$WU=i%Fr-rs)u`QGy{_jez8ux;;yod+K-TKRCv>W6!dJbd!u z;fpVicO81X_vn+CU!OjD^Yq!rXRp2<7du)2bQ@nukY6wZE0<+z`?Tc;pMLxK=ikIA z_Z2{yX`U{QArj%fXJ3moDG0b-R6MhVN5lB4(Zb!CU;pJ_KjWeLf8XA7QVa|&b37UU ztEbF4rhG70Z*`@CBrt#5xn_Z@2=FG@X0JSk#8%?&o7Sr5Wi~a zvg)tjn>$q-53`lOp0&4=L&q%t&bDgTe~DWM4fW|+PA literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/EnableArgument.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/EnableArgument.png new file mode 100644 index 0000000000000000000000000000000000000000..4ba0a0a5e1066ef42482ae0f452fae5730e79f62 GIT binary patch literal 690 zcmV;j0!{siP)5}X;SOrJItDzI#*3xkEz{^#$ z-D5Nu*#|?*_|gVl&*8%x=&B;kG$TurLH{Cqo3V^nY0z2(ttHTQ7uwBin(H2~AEtR3 z0)ofcg*ZsA`i(0KRrN7md`$6yN6FB56<%lZE+_WAtG!0+(mL;ao*$+&XH9qceq&YK zJeS=QM#?B@sQL}JSHJ=vr4)v#^Yf`uP?rQXNl=$S#1zN%I=09$o$Ad{y$5RI;o%l2 zjiMzjsLi~?FDGWMi)oCT#@b5b%#l`2+>e9@o1i+DxL}uLt({`EkAnGddpX>WfYNZN zSO%8m@Hi407SnjhrCt3(jW#B#=0kZH-11?2kdAAPmm;_}9&&>qKLGB`fl_~{mBHfMClri^VsEJM=3A~4&HMG~ z_zLTs`g22`VHpNR1}GF{iVz>gsNaYe3F;t2a9xmZ1;qv^H-Nu4uG^)uYrs9MZ|d_k_DLQp5D7d#a-2pR=Vf=co2q=+`^v<945s&tA3mqpJ` z@hMS|EvOeX3t9wC0<-AdD-r^fC&^I*V*Ry`i{gbzUsf1(_C&BAG@C?UvLHi{CHhiD zO|*Ifmgpy24`&62_$gt-G@V~LS*f$Uw82jD)gL%X^3;F$ Y4!0SOnp0Y1m;e9(07*qoM6N<$f*4{uDF6Tf literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Erase.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Erase.png new file mode 100644 index 0000000000000000000000000000000000000000..a9ad128b83cde478e0116a6ebd4cb02a224204f4 GIT binary patch literal 451 zcmV;!0X+VRP)4aar06OFqBH9@BIr7#6%t5kg%A=YPa+6hI|?umB|xIZRX|eQUtQ64RWma@ zd;4akYce*P%HdcK!Z1ls3?jkmlgDS z4uZiTlWct}pg|{sARw2^Vl;Y1x9h-h+Q?=fn1HddR6sutiKld0g6ldM4EpGFI%qbV zuq+d{Z9x>znP7iTKpnfpbs~{~u4{Z&*LBfuw|Uqw45+FKO;aJu1tv&;3FzY@91cTK zikM8^F&qx4V8ir2C)SC@SP^pvhS*!U z2h@3-OkVL_w{07yY0``qg*Bv7w=DQf9Id>{?4~J-Ock_flUj7%83Y2t!p&PH@UinP tm1IOB;%uGUYdt0k91wS`{g>Ccj86+;0MO)>;{^Z!002ovPDHLkV1n~&!7l&+ literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Execute.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Execute.png new file mode 100644 index 0000000000000000000000000000000000000000..289805c9eae7629cec062e390bb04fcee37aafb6 GIT binary patch literal 276 zcmV+v0qg#WP)YPRq+ApQ@c$u;2r(ObR$i8TbP0qf5s191vbhF~>d<%zKWQ+DhB-*`5Y zpdnZdSal-mf8Tbs|I_za{NHlE0Iwlf4Oo3L?*D`xI{zo_H2gn%zw`fX7b|cYg4KYv zr<49q+GPy%hQBh+Lx?h9-RboIQ+HebpSIWT|GY!~|94$(B+UgI z&gT4|zSrUZ{6m32&CR5T!KQPC|K}eL{=e%=GkLK9a`LV#t>mYJa}SnNloBb+3l!%@ aQZWE0r_1pX7Vo_P0000h literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/ExecuteSave.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/ExecuteSave.png new file mode 100644 index 0000000000000000000000000000000000000000..ff2abb9fd4438d77bc3289d8233b2273bfbd3f4f GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl3Qr1BkI|l?suPcn8=dFG*w1WEhnM#+KmOzuM3vFf)y9)z(-A z$`;I4m)%FU7?|qn)Vc2SyYF*Ow@9ka;Nk*{07U6Z#EQ4w1Nbk50L%Nean=0`LV!6z zf)PVDbO()TLkKW0NHMsc36(Jqt4A$qK?tz0TaBTOEGRZ}pth7^?YQmF5CSai)j+}L z#@omPXDq_ZwiL~ydSum`eiKIk?Op?vhJ0|QVoX}gz@PNe0kz#vF%*d*5RSle|BQ== zDCH)EAVmVK95g{?DuKpY9xv{r=QFdz;-bikbvhkMxPGEs&#Es8&>yx!V-tgS_9c2} zW~cd#4qZJ);kbLIVt43;ax%R?31Cm=o&6sM$ILFH8wIkhl->(F1;|$dNx-3RHf8Dr z;5{gxwxdGhfOy;q@z^OURW4L1&mq?)0bl+FW_E9SQP{on;r62TT}Tuj$QLi)0N?GG znZvd~Vhg@dB(VX>kQcr4!CwK~`>i)mF&d&b{5C*VJY~N98SokMjks45;M1%i@@N}WKjqMNY>Of z)R!kWwskZCQG3Va2A|1u7f+eDcPxuo0pyZ!1pau@${J-&p!FjpHIIuxF6pwb#MOD>3q{(m(G=P zdAG+@(&%DgHdo8seye56xD#Ej7#>VqQ*)(|HB-5vWT|e6s=b_TUGvZ}sbP_U(N3?tb>}fcNl<`0$MQ z@sIfNk@@qO`SY6k^ql(ipZoTw`}V2)_pSZ-v=0F8<^TWy19VbOQvjBh!~x$k0001h zNklCPRoB_M1(Q zMd~R7z$^zXuU(RKJIMg%BMj;FxE^EZ`D_ literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Favicon.ico b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..6a188d538076f52875fd4748fde3d29f6b537b14 GIT binary patch literal 1406 zcmeHHyJ`YK6g|5->L$DHuKQjy`{?o+`3Awp!W1IJ(n7G21XBotU}I%vC4!Y;VIzr! zg@yiyRmzYeW>&+JVEQ!9aPHi5xHEG(#RWLF6$QujKme0vw+xXKFmTAQ2;6bU<18Ew z2eeu(ESF0Z3Iz;@L+tl^)M_>Cb~{X`Q}lX0l*?tz=X0#rYt-v?bUGc3Mk5Rc15_#% zG@DI~$78hHZIntSY&ILLRx2zP3lxh*%w{t*8Vz*2UG)2XRI61?CKGJ8+q0f7!o`7$ z1OMg#&;S0K(x2P~QQ^jl%lU-(Tr9XLO(9w;=J2kZyzG6~%VLhVZAZMx3DKj5qvRCH zPB`kdDjI-5sA*eF5KOA%0a2DsJ84Nt(e#MTxWW5+CbT4yRu#r|S(Xo z(lm7(SDEnXE~_?U2q95mric-Pn2m&$h=Vbfw@UMlnVDK@Awh35 z9}O5z`CyFkU+E=rw@m{TJ%lPgK(*6q6sw zUk#9pzakawK#sH^iI0ed>c}KoXt#%0Ra)ACij;Cgq{R_p-T}_`y9n+);fSxnz5ak* zTNc}vB(|0%IIIao#WKaT0|1v!Q zKf}l8Dc&%}!LLZT2$d${31A!%Jr#;=#&dWaDcx8X_(56;xYJllC b&I)`3jnVKCv%D#@00000NkvXXu0mjfGM%Ou literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/ForeignKey.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/ForeignKey.png new file mode 100644 index 0000000000000000000000000000000000000000..d4b99e88f4c400b60d199c36125efd577345e2e5 GIT binary patch literal 250 zcmV;h1fO(#g=Q#o26n_AQRhMOv zi)osmwMNr47{^gyv;=ouhraKzZJWfN0M5AsP*oM`x)wi8Q|T;85=kcP+JTHf025e+ zz%0v-z>7VSPfO(D+P0O-oIec1drN%$jQ_u&UQcW3f6KT1umAu607*qoM6N<$f?pnG Awg3PC literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Fts.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Fts.png new file mode 100644 index 0000000000000000000000000000000000000000..4bbc8a8ecb72c78a8a68f7f28134e3d03b595fff GIT binary patch literal 675 zcmV;U0$lxxP)yzyxCeH3tBx z`#@ZfbaF}o55r%$B4uljg2J|`2{;XKvN98BlJLm?!oUo20fW$!OAH?Uo(yc?KQes! z@`d5`$FB?;&cXAs83Hyy#WCokLXoGZ>H!k$iQ7Vfo|P46pCsWLURj7Xv6v&<$aNnZE1vMTX}O@1ht|!)C}Z z;qi9{rKe{Yyqz2vw(i@{@ag+66hpwVV3AP%{Tu)gtisX~eoAW12YCnP5^iA$hR?uQ z5D^lBYXsSRY+)w@*RPKZI)=um2??7aLXvWD&DZy>Ww?7_9fOgvF@u4{Pi7!zdQ@r$xj|VU^sv3#D_1RKPT=xc4`AwFCYVpn1cELIQSAg zCI2$qzkM5Izygr1K+PZEig0CT7_jvYo)63`_kq{}n>;{(0RZRv60wV`zaans002ov JPDHLkV1j+FD5?Me literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/FtsCfg.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/FtsCfg.png new file mode 100644 index 0000000000000000000000000000000000000000..6d6df98940779a1c6801ffa22e765774ead8ddea GIT binary patch literal 612 zcmV-q0-ODbP)T@pOGG`r-?ub(D-e3&VdnkL`+VMa-uHPK0QNr`Yfz`t*&mO` zzpASGj`2oM>Qj9z01ftfy%+_A!(mW;EP%t|Kq8SqI-UMV0D5M#SrC+swgZX$Xw5sgN70D@e!OaVEwQbw%&97ivgK`SG3{%H?4)Ky{3WHMs+ zhk#!Y3s-*tA<;>Y`Re^m%tfNOQ!IjxFPTh=^WOp34WW%AbMl&wv(X50xg2h)DkMpw z9Kh*x{s|a?P>A3P&0|Sf6y~{52)d>{qeN1eY&P590fRIW#C{@#EBt?DuhjFnW-N4Z yD1}z5Risf|q<=Mn*yYn(+_=FtIr?q)J^2A7E+!+R49ivk0000IqP)nR6Zooa{sZX-AQoUC31pZXh_~Cnx7_OW-)ObRfBssV_aFla>iciQAOOVY7e+|F zcU|lH-)v4g7=sK_pX>6UtJG>g$Z&iHoCo6nApF^d^?y%P$bX9!5&z8>B>gvE5(_p+ zw%_qTTcKq?rni6s2Cg#a*K0xyfZ?0|!vE7UbKnM9tPKHsOSs7v(Ya;XizA40j204cRc9z0m1B{BMfeiq;#B_t_fA%8F|H;$q9T=>u=Iu{jwiy)S z|3zEvz&5B9>iuulWc}}xqy^DjHW3~kAkExm*8gi3PxycA*s=KxK$Fjxt-JVNq|_g5 z2urR7*srFmT){3v)(pZROF)`;9oYNdv@!NQ$bkJI=Y>vP``@Uu2y6%lgPf?n$QA4Y zWX<6d%Rn~&SFH;A4~|}-<^YfZARIky=l}8@NB_&!M8ORbYOn=+3*;)V?p&~D5RDRu zK+Oq2{2pXT$b`-RXPkNWKXS>!|6KXbaD$8*qT!mAihR#wqywO41DGLhEi1r=Og;VL zzs-a?umO@Ko?yT0W80Pgi5YqS<12Ii%M^J27f7-B9~|I+ z9*7lirbwV>0Z`0<4DpUk{NLHp@qgmPiT{(*lmB}K`}7l)pJ0Z73}~pY{~sP2@*Zew j00XJOD>7+4AtwU>bpK;|7W?nJ00000NkvXXu0mjf-T@+8 literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/FtsParser.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/FtsParser.png new file mode 100644 index 0000000000000000000000000000000000000000..be510ec43d3bc4bd931edc12e92cc864df0ce09f GIT binary patch literal 601 zcmV-f0;c_mP)$J)KT2OyViy2A(Lfxx(hjb3zp5Z@gz&SxA3%WUBH~0RaaPv3 zUsW(^?4dY8#E7TFYb#^2&V8lws_PiGxvq%`Z{LdrdhJLXI{^fVL1LCDSjp!maDR0V zE@d|%n){#RN9LEooFB=UX`>E+M(D&ev1H|dye;la!E(J~k^sMs?LgnXG58145TDD) zOx;AWa1=l{F-knQGAirbR}NnnBJ4i{vt9v6veHn4G2``vq;mbN?ihjvBN-cqIkj%_1$U7Qg{QmC0xM2(87vKiKmK(eY1c z42B{0D)2?FBJ%JJxPD`55z(&82!-|$cA4>b9F?1ICcv=dVt*2mJMY}brPeSKi3FTZrxb9~ z`OgMHg@k`Z@U^s|r#lK=*OANRpsK1AaF$Be0=JOZSmM=MaI3c$fz$r{DPN;wt-skn nc2kKraAAQ4CkR_*Z@u6zBnnRxe&dCf00000NkvXXu0mjf6zdc5 literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Function.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Function.png new file mode 100644 index 0000000000000000000000000000000000000000..a68e1fdeb2baaab776ee09152b1f0d4fd66ce8d1 GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`6FprVLo9lefBgS%&#Wr3ye0hN z%}j?s@?Fa(rZD(?zNB4$Kw`e)4xS(XKRm7%={YU1NAJh)|MFbN(m2fiFM3ctzkX3d ziSq-$dqvNUFG}1L*ul7&Z@(&M^Opq@0lS}AUX+;4UC`!Ob>3N|$CRhwsFT-mW|1Ca zu?Zm;M1%y^7Al(b6k_sun(b z|NVd0rWYyg4{|0x`uzLP+~e>1RzAv^db@hz-GfiRE@=4g0o2Y?666=mFzw3Q!bdi2 zKz@{`i(^PdTx_2wUxR_bVXFu4a{kxr8Yr!J5UnFGq{p+tz@g`3a*ybYEe!A6+8!r; zPb)jPsaE>Z literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/GurusHint.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/GurusHint.png new file mode 100644 index 0000000000000000000000000000000000000000..1ee60f11e12e500de5becd2901e9026f8e24a626 GIT binary patch literal 609 zcmV-n0-pVeP)y45y1vnJYVqcG`?IcTT?S?scFTZCim z(2XGIj)sVm4prX7+nkREv~?rka1Q4@?>lF{?^^?~<^<34SM0d;kmL4Mk7s!3cK@QF zntC)NW>K>!z99$#s`)%l0|A)19A@v1Fg<#UGeyR!-^XUe5W8exH{7bKqSNW1S1Msp zC}95Cz)wTRk54D~-aLT$BFSdN5K9_nU>EDzY!;)@2wz$)q=l!r8&0BBEW>KO$L!-F zG<6>vPvVdt35+3@G^8biSGulaI-Mf(ECc2BF~(Di<>E^XT3%i15ko9#NJ|Fa27>`} zy%UP!e7m*e_XX$L-^51OVilicnWj-?=?9B2Cdeloap&cHFzU9PKpULMV66Z82T zmSwSx4!j=FY*Bp9zzHwUf2C`hOeQSq^*Vw)A6vz)G_b!C%w#g?^?K-byX-gY-nIWW v_+zqHE|;AXmoDP|WpJGi(#|(8VkmwCXkFu@iY3`q00000NkvXXu0mjfIaL;y literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Help.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Help.png new file mode 100644 index 0000000000000000000000000000000000000000..916726cb208d144658e6726e37ba0ccd6a85150f GIT binary patch literal 480 zcmV<60U!Q}P))RTof(6^ap+S*aMArKEusQbgdYO`9fY)h|Y%KtxIz8vbjQ zK$Rgnqb=XgH(3m-zyL4vA@e-ndC#Z-ppa(gs6$5yQ6LFNQP#i9A_Y4s-m{Pzv3Do( z-yXbF*YQfvV9o+A(9cA>l(tp^?@h`=z#6g@BT|AMNnsL6eu~a>$W>P13u{D4gMf{9 z7#JYfjf`MGT9_q?l^{Ev&4`yL5G#)(C%CY8-pwTK^#bnhX$8+!2LT2GZ8#07#Qs-N zEfV|;9!q01jTy(mA@;kjUZ7*$uaooCeH-boE%s7|je8MR(*$}%OQR$*H5W*>@2zcJ zginGhqce2RuwPg!!byISZXaZ@v*}lmz)H^Fhpb@#zd6O* zaNzH4_yVm2+-=rEy{8c=jnLDC{mY)Fa4Uf?oOd8oaZv?3B5zIxhnm5y1jgDD|Nh48 zY?LF&Bnlqty-bUHn*C|eOLxMd4u?cfJj WDB1D12`x$h0000d5)go z((XWfpNI62gWwM!Vt3-gY_^REhR`K<+#2EsJcL3KGuC;em3Jf$kBES02}Vl7Qx-_s zJj6l?v(^R7^?1xFL{K&q&?UF)s}TJ`$VwR*wSsK13ONvB7tkf-!XgeQQv5NV@+#zD s2vO%U`womCi^+*3dobF5y~2O^2CmEW0(X04=>Px#07*qoM6N<$f?=SotpET3 literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/History.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/History.png new file mode 100644 index 0000000000000000000000000000000000000000..5d9a56ce705793b77307926845da68c9c41d438c GIT binary patch literal 529 zcmV+s0`C2ZP)vN|5a`>)BomQHTd9*mD5sdtt8EruWLSQaW#j7)oI`?4ZzNtnKmXM70v33l z)CndSy>2>X-uZR&5sR~P>}l)b;LIlu^xP%Xboxmq61iO>AT?p&awk_3rq8l8^`6aj zhss0}S#yjtO$`t|&c1=GgqvF~Xpy)-f%LdB_CWVTgIP|0WN&>8&vmgS5XfMVa6=R`Gq=I~$^RrYUQIy=>}iXg0s*hz&H$X;A>eUq{4pr#?`x;>$YHj==W&nL zB7o=bKHvldZor}NIR}v4u?0!r#rSptjl*@dY-G~x*YhhKTL^H4Lr`w9l%587_P;>t zcP`<-3sq29UuA7f5Q;TYQ61%PewGzYUU~KMj$LKh+gSYDt;LzM#@Ujs0K2Jw2Q%+T Tr@O7m00000NkvXXu0mjfp;_=@ literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/I.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/I.png new file mode 100644 index 0000000000000000000000000000000000000000..00fd33455766be308a29d24979925fd2522a15ac GIT binary patch literal 89 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=f~SjPNJU)o0_lv*te@u{%ne>S l{b~*r@7q;yrFF3$3&X5#$><=j{xd+e44$rjF6*2UngD|g7_9&R literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Import.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Import.png new file mode 100644 index 0000000000000000000000000000000000000000..fe49e63766b8d89f908f900ce5953097e033c7e2 GIT binary patch literal 482 zcmV<80UiE{P)Wpwf8r3kA!1p)bg zy16;s)TU%tFZHv_?4M*dh%qgf+~t6^x!K81c#&K9(?W zn5Qj1nZu60eO>T+R&+q?3t)@@JRQJb4*=e349M@be-W`*4Domzi9`bFbQ+mV2H9+u z{tZW@vxAZPq1WmO>gq0izCE|W=kp<%Oj2_o5I~_&K(SavKA$%LXw@&!)J}D?TQ~1O zE86iQEl~*Tnno&>qR9lnFbsmhAVg8@0-Bl+jmi<~%C>IaKvlA#BFsb0PEiP{Pipf# z50XsGk|cEjjmiOPiW8c=j;d%yS(ww!lSTtlpO{Hz>wQCfuX-9AIJvsp<;1m-3(KAyuvhKO1cuzW(KIu|FGKp z8!9(**K14zCZ;Mebd=>nY=YXBQQOBbrJ)ec2hmZ*T?}*gzQHu0FIf@l=YL@O*B>O? zK{o$^*!~CTodx^fVj9qupuo^mnG3ZEVp~#WFTSDDb@Rf282|ukS2pnRDTNOJ0000gOd>Q)Kh>a75eKL#NF&ydy7&oHqzpW!c%{TC<}UDAaJL}-9yft-cxl9IMb48Q&WZHL;J zT-^(2gVmwO0=i2&%5xe1L2XO{YM$9t1a?70Q5VC!eQ&_(K?FE2pa)QQf&$ofuz!Cc v{0$Uin7j84JW-*z0No|TrbsH}MhXD{M0@~1(gy;B#H!75v1thL+t+LJ8Wm?+%=Q;di$fD zI(6sXd(PZn^8(<7P!#2>4o$~i$3%zn6jL6)w+B=muZ$T9)l#X1e!q{&WFiOz0?_^6 ziC{2@)oO*!W`q5Hk4~qVh z9*4){kuMqK^ZAV9@rXvF0iVx@N~MBkvnj2RD*`N&6(o~M*laclTCG--Y_V7{olYfI zEEc7TXMxsWFc4=xpNHLUm+}nqZnwjFy~b!X5&_Pp-EPY}xfJ-q@|VjcTCEn`ZZ|Yd zdq?I5%H=W~4u`ZbpUR$z(gf!!{Y5y+oPXa10lN+J^KLW3h-`4zfKf_OUc%biCVOF{T0000Fmw` literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Job.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Job.png new file mode 100644 index 0000000000000000000000000000000000000000..b416209e87ad9ddd70d32028643089ed3ab896a9 GIT binary patch literal 551 zcmV+?0@(eDP)dT*s~CeNhH%mVj;5{u^78rT(*513wzpVc2?%F`g=16eJT`|%p*S5-hI*kmItT`X zp|&;3YLm^D7bxa@zVMsF;bk}OPh>>(6he{&b#4X>hH9&qwQsdnE+CuwhnIZVzt*vN5g`~_)n|hX2xl4<9q><$@xX#!iHpm3DGa%N zT*SU8V`tSvFto}~xekOg!90WJ5uWzt>@<#V;#_z)q%-&*{sbcM_SgwVu%bMdfpFfs zieo((!`8k8e}5NG`(%6^2kX1o2!ye{;wgmXU|A`jLeZ~r;YT};8f+qMapyuf_YU4Z p&BCHN)2JwI3XJYdZIiP&^9;Hv_0(z%Dog+X002ovPDHLkV1ih6{7(P? literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Jobs.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Jobs.png new file mode 100644 index 0000000000000000000000000000000000000000..b4dd827686117dac648934be6324ed238d1de641 GIT binary patch literal 396 zcmV;70dxL|P)%G2*-uU3W?CLltyXN4W>bQGe}IRr*om&$qiJHm<@3VZ z=fzn`#_06NpQXp#=*gg^&Fl5ksH)SnuhZ@J)pcptP(0V~_t<`I*s7}9@c7(jTHW#Z z-c~;0vaaFt`QmwH^^{rt@yd!7Yf>B!n-WH4?)e;Q~JZ0000DBTL=4rd6;M4%ky*I zDQTbCpd~0spf?eC?6N!ac9>xmKp6z(j|dhDL#Yror1pv2rxFQd;Bs*c-I(Y0Rj2WC zie}7`DUOgtA_b~Uex^>dcY)JA!wJfqh-oSKjrA`Eq1$Lefi`B`rKZ5rMV zmb-!ZzJh3{5pQYk+`T9^CeV27RieZD;0V)S!}M0My)6zeC$QZd`<3xfut>eV^rHe* zGv>nb&v^(+*quDKpX0bX*$@1-_LE~x9HlH~xNhxo^^~V1rpO!&Cu`!sWBmUM$_L5c V;JM{@0Am0E002ovPDHLkV1khej}rg@ literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/L.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/L.png new file mode 100644 index 0000000000000000000000000000000000000000..b67c8375ad29efd2b807e8022ed12393ecded1d6 GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=qNj^vNJU)o0_lv*te@u{*d!|T mWJ({d;Pza`&MCpVn1SKxTDjbIZl6q`Vg^rFKbLh*2~7Y&m=(; zLFz#2LHb|@%zky-vt~E7^EKA zfZ18-Q%c|GyRF8GvjEh$hPbTo?f5Wc~kRJvS==0000v!(&-}!(36#e~E^6zii z|GyQw9~4gj-NsWAM2tykY>u902?6z}(RaSV|N5A8oF)}$c75FQ|) ze0hsbi1yi2UcdkE=f1YrfSvE~n`FiYg|5jeeM|}!VOt;H2$PIw)t+_yuFT~x6WTIb zD&zLJeKp@7c=%+#%iiN`nOtmZ?(A$cU~0(E{j5~Q%CIo^-jN3_*>*0u?i*h2^9VN* zIq>;&>8xj#%fEhXmfovVwRd^&tNHp4S)3o(zv~Ezmo1!?3UnHSr>mdKI;Vst0NKg7 Ab^rhX literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Listen.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Listen.png new file mode 100644 index 0000000000000000000000000000000000000000..5cf37a4658bc510bc7ac9fbf3b855cf981d9dd10 GIT binary patch literal 244 zcmVDt`bKl|&!7ipPa?aJNSXk4UijpzlzR!OZu`qipyn=gv?sR7Xu=WgTk!{<2 z7>wW5z#JR%8Ud^V=D6!BG)+kZzP5`wPLdc!aU%mT=8d+kp!H*lgCIbjCv;$p(=>%r zYKlG2LzXEzP}h19bIuV(f(~eXU&M~%K*|dp==?8-cP237OUu^Ttp>4F!_!e4no^n4oN`0YAd{&)Gpy1E9%9*L8;t z_*1pRXBO`JHy2=&K)`KVqONm@3RTTC7XqgAjx2i&XQ~<@U<)5KO^Kp-{$S7ZV46ED z)eHg-M^OaBFtDX&5L8tGLI}3hj09cx8g5xzqkM@=HEBx6g2`u;)^H(*UDrh%lUaeZ zM!=5aAPlc+!Biw_C=Hn42+OkI`{!kWtR_haYFVdQ&MBb@0F&P%lmGw# literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Loading.gif b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..874e0db1cc8cea26dec0986940715e969475e093 GIT binary patch literal 2090 zcmaLYeM}Q)90%~b_Ii|3*x435N==SZq`s~coXnTy3Z<68un4WdM4^<5AXr=!bZ+ZA z1)U;vY%)w}$8_PJk!3GzF0L(AH{*2ZqQ-#34b3v08W&BrEMY&mQDhn3KX9Xoda{(Ze(pOKN_@p#l~b#rs`)Xy^)ww=&cI%Rw7=))yvaLmxhN0mru z|DwA`39a6=35~JaZgvG+ed$~_J7`2lNggK~DYG=N+(v^p9LH-T-bLOvx_VSs2X8wM zNim*1F+!rHsDEPc#HI;~E+G#`=T zda1lq&g(tkI_VLWbmAwJ+p&Q_{Gx1Bz?rXy@O#)fv0+ozgU$cpfPLK?=b_ zm`t#dg$L|^Bdr6eeR}x|hBaj&TWWVvfm(&QR5H8Id1V~8(F8~>`(mT*L0=%#l*!^4 z)42qG_IqpAL}Og*3RS9T5y5x*%0~qIgz=J z_sA$Jj_;_}2x+PoQ>i{$qI}C=U1Z%-BWw@f{nRVb=F6yfq<9y3$@s$-6U+T0&(}u| zil0X~e5;g|xK%h$34j`LLJy#^5h~;f+BtJo3#qyxRh?4=b+swH1{F{V$F(}lqi>RP zHu)Z$4CPY_Q>JY=c;c@eysz`9uhPlBke^#gw`@E4ORIVnm$fV#IZ9l^F->LDOEN#2 zGTwJRO@@~UW4H*$vnNs3XXMIYBij~WA=IbGYc|&zEbSCQ1pu2+G?go0In!8y??Jc9 zmjc)irJBcAdOOw?p$Qb(E~S6Bv>Z2xQ&M^Ka=?yvWOXMFWP}C_)$D`s&?q63aZEyP zlmx8!n#yM+%M4be1PqfQL%4I2h252yQ-W^YbO~m#oqZ1yvV9p5Z10Ai@l0AFlF~s1 zDUWjnUalVJv~;qigup8p84i7ce=~xH>nsQoMZXeS?k9=cFUqiI&-};>h+35`#g1JmYN zc$hi{6iyKwS$2LH=iVZ?CvwT+4iR0&-MX+)yW3A@)u5O9l}bX?&aSWKiL@?<#c`RB zORWpyE2vN0*#s&cU5wxRY!9`2V^6^5RJg*W=aWqjovGWK6q)-f6X!jzAWLTVhYkQ2 zprB-kAbxu3r=U<(orhmlx1?KgHK8)o;Fz^?qVSBH*NnFIx5*7D3o MJ+{XIhwIvZ076~XN&o-= literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/LowerArgument.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/LowerArgument.png new file mode 100644 index 0000000000000000000000000000000000000000..9334e9076033a9cc26eeac8df7fb58df479df361 GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6ialK%Lp09soe;>?V8GF~_k7v9 zh0kB^Tz5fIs?QWQ|ajnH>N%c{IgZ-4wL%9 zWou4_adx~E+N53V?BFp|DpAq1M{u(HmygaCq6Zh;_~xX4P{dl~YuUQF^Xz|mTQE3i Wh%rn)&g}!Vp25@A&t;ucLK6T^)j+cV literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Lplus.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Lplus.png new file mode 100644 index 0000000000000000000000000000000000000000..4d5cd78786380cb4e39a0c64a676d6486dd47317 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=o2QFoNJU(7$^xSUnF-#(r~l8| zB{fM`W{#drsp28m77^jcNp6SYTuuaMJ*aQ_qhS2O-mEmBvgyl$&qhx-+AzGF5M+?0 Zz~B;*DB8KmQx9k&gQu&X%Q~loCIHiIDHH$z literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Node.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Node.png new file mode 100644 index 0000000000000000000000000000000000000000..c68cd4442971889fe389f808d60ab75190fe09da GIT binary patch literal 484 zcmVr0 z??Eg9#A8kLm2Bh+7IOUz`JpJ1DHmNy1`nO6tc*kV=w2HDql34{7jVbL{oMm7$S!XX zy&9((J7)I~qc}YPhc?s%gHj6n>*p&+)hk7ON|+*Kb-f+BX6{Z8H!qd$(e-vgQF93X a)cybwNCk4{1tGNn0000D6AqDkv%{^8M>y`Eza4W|rBM&-|(PkKskDNR#=m zN#)#Cle3#1l@#`BybFCJwI?k3{0a9Q-}7CEPt16%WWc-LG5ge8OVK+Y7AnpzUG_;T z`eJ%;nwFPTrq#_gAtp2P1Qr^_(zPSJZ literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/ObjectNotFound.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/ObjectNotFound.png new file mode 100644 index 0000000000000000000000000000000000000000..648b0fe87f1e84f25c76a80b9bc8450d257bc6bf GIT binary patch literal 508 zcmV=ItqB#_+N_FJ88RHSw^D z5P#71l$yVpEG+<77aFLPnqg+286!hz+BGUqKPZ!7u3XnK%uLO{zo>zgEmvtD?}B@dci904VM@)bovr z!V`d{e+K?~{56@mEKX|=q}?$q zFAfsz13tZffZN^&+>W6XP3)tuWFB=tC`5pnI0aIKa-+diG&wryvk2nR43#sUV(6R;q0000$?QS^ literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/OfferedReplicationSet.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/OfferedReplicationSet.png new file mode 100644 index 0000000000000000000000000000000000000000..39076e7edc392ae2d7ff33993d819eb3106d1661 GIT binary patch literal 492 zcmVh>~ihP?j*8ZJ6r4 zgnxt-rw)MopWyjfCPRNBgqCTpsUb+bmGFcCoTRX5fZ@qs3Gw3Z6`+} zG+EpU%r{CbUMeu>X=NpJ9X*hcbzDKT#N=ur%~QuRQit~{Ft}5~6{IUy4OAeMa*YBL zhgC4{S37Pl;rxJBKpM*ad4SBD! iIPjkWerSjf)A?OP0cfg^WRe49raiQ83yitZ~iy~ zTbqHYjKj!BpucpZD0LEU^UvU1HgH6p_q@)V*&;SFD%O_zd}~k?JD_A+>ek>-eEeHxp4jiJ`i*P zzXBG4IpC3z-E~rNf>ii6fLT=mgTN9nZebU9gzn>EC(f+S4?PBo98GCzraqej9{_y- z>c!lkT)uUmxbqFsLXa6^ZTX&;kPGyG615*!di=I zlQ`Po;?y;ik=Z%-K3^E+&9gg2;HUr*2Wu)@74~-Pq{ZBu0P{e}3ba_5TD3;5{{j;? zuA`F{kf4acHu7UnP~b;pduHqH6L$pB1`zgk>YN>)rgK%w?_zSb?T)&OLnQ3Q62>z;QUV zW6;yj?$>pIlK+*X&LPc4$iVOz=#~XMOz7Ykr4(8h_*r=m@YH{WU$sA+9-XAO_Y_GG z1FnQ1u@fZ(D#uRw3p$A&nC<^{0!rnL)gr+6&F6HHO`wF!KQ})CD#qEW@Bjb+07*qo IM6N<$g27?u<^TWy literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Operator.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Operator.png new file mode 100644 index 0000000000000000000000000000000000000000..b67679a23f51602da41abf6f6b98f455fbe8068d GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHF3h)VW{r~@eJ{Vkj^y$ju&)1%O zzVY<)?WdpbKKpY2`Im<;zC3>U_36v6&tHA@zrJHLP#054kY6yvwEX|SJ%K!DPZ!4! zj+w~`2iRIf7V_M64rn{4rr}&I=+Zjrnu_WKt-F`CZwJqH&?-Bt!EMOoy;5D%ktcw= l=~Yl^lTk>|g|!Z>3^irko6ae%@dg^l;OXk;vd$@?2>?M~QL+F4 literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/OperatorClass.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/OperatorClass.png new file mode 100644 index 0000000000000000000000000000000000000000..7af9217e639fa37fa8e6c8c5e36c76a840cc21a2 GIT binary patch literal 479 zcmV<50U-W~P)&x2d%-iYB)85ZOHqhbn z(MLMc;_}nu^3+Z~)z{$FGkF5_2%mJ=j!#K<^QSx000McQchChf`~#V!ROH3|NjUF-35h?f(C8V+;biV z03pTzkpf@<;&PQb4Ram|7+{-SC+W!Hl`9N!(=T+*X#0Kp{LsR3w~+Fg7uK{cqs3Jx z39P8%b}AN=t{JF~8=8Yf3!U!cOYq!ac0kYbH|^H zg~mMWtKfu-zb{SWt4(YkNaFl1GB7{a+k?CKdyj+x^;0HmG?i~5U;sFl7$8yr{sGoq VkE*wL9ozr_002ovPDHLkV1n~${>T6T literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/OperatorClasses.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/OperatorClasses.png new file mode 100644 index 0000000000000000000000000000000000000000..489a57768dabf38f4dc6cdcb4d1aae100713895e GIT binary patch literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}dw@@f>;M1%^D#hCQE^#$MO9UG zb!~lZT|<3+Lw!Tj%=t@a&6z)I{?fV2*3DbEY{8;siU1l?<=i&tL-*gM*RPGTzw@(X5Au&F-wBl*Xp+dz@&o-U3d5|?B9uM0I9h`2Zl zO%tjTcG(s3^Z$Ee1&c@f?pmj(ofmQvITm_Oq^K>*bEnA01;^J$e81Yd@aC_Ni6?*U zFxXSFzGv5iQy&i9m?>~@3fIk}Nx8{!GYr28PS!m%&4+`hVfyE@&i7|jR+RB-m6}iX zVJK;s{IP$voWHWvmaXUcswaMvoAWDeUiXTQPg?E60a2Wnv|3GxeOn3n(lw~rAs$e7*Y)8#&HTJ-Qp2V3Sr{X4Qk->4Qk@ry1c2SrR=N* ucOZlGf_W^Hn7CH5I-U(Hb=oe*!XSNL@YRxM)9(X~X7F_Nb6Mw<&;$S&xljrK literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Paste.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Paste.png new file mode 100644 index 0000000000000000000000000000000000000000..d82c7332edd12cce29b863981da2fd1d439e2046 GIT binary patch literal 500 zcmV z?<+%59LD_<{tNGcAb)_Qf{LN2LSCx8lky5xrc_F)1WFJ9bD2A~LEE+8ciWxaHnTg! zrL4!!S)1J*+O6kyJKyK|obUN@O8}JQOQ+N6(?Wstg}$ulYizhwpB9Gt8)$&zI4Yj! zVYOQ67^x8t@oE6s@XS;%HRgwiWLbuyDD-=JqK|szv>ajQ50OM*83wY$(nDE4C^S_;t4b=byLpw7wF}{9%Bb@w1=v75f`GENH#vCmL z*iJi`wuy;^g-8+)ast-S3rvA19d}2S93-;`#sOTdHEPyO3{pZxS>I7k7v34bT!3#N@sF%W-;MT&v@bB{d!7>&hej z0{#*yx}pi3yPt662x8af!{(hE>lO!=ukGMmf#Lu`j{n<%!66n0gyL_w4Mt!VWthBA qxO7W&=CgFz5q>TT`0KYWl>P^Om$f|ww@h3B00004%P)FLN(%=Z8LOv_k%xhX|Wxkyoz( z=DG~T;$c!z>?j(M(e(X=4BHNzW{E@M?=4? zDOG-M(TkFYL+vn&&!B*})ew0s1elb?rq{xdE^3g@z95A}6x>gU%{mdAapJ@AfV%e` z6()nq!7Gx>0SdE}?SA6Mt!9a00000NkvXX Hu0mjf=~1|J literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Paths.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Paths.png new file mode 100644 index 0000000000000000000000000000000000000000..e61415be065b7a481ebdf2d0088c20c008c9a9b1 GIT binary patch literal 424 zcmV;Z0ayNsP)0xE>5X%c%I(Sl3S1n`Kp741GerLr@>~?uVcnKirSCbW zRY|P|k=u+SG4G&-${>|KU|6q;^0sxUXn)ziRkQ$=N;mTHr-};DgCyxQi#8tJi+8+* zM6`};gH+7l06oYE3zADas5oy>cNOqz&*8-yLvqnYiyrEzF7XG5RC4lEM#EP?-JO-+ zStgXd-vAszWWatN^}VzV(Dnub6d(w`3~KI2-2kb1nnv?P21t4UeH99)oqqu)?bMpW Se0op-0000;K1Bv;Kd6v-tm)w?O&i>6B4rKKfm zBQ~p6YHMqmU-w)$);4uBe6f4{KKGbS13*(xzdleDMN9EYbWH#mIM_*up#v!n4%QAe zNGZURaV{A{Hu(S{bVLBYMu3yY*rV20^3=Kvz1M9pC zqh_;KDi+p+&kGEzduC<6?cH=?pkim+daxv+Uf4*CU z;P1lcy9X~Zh76)td+i7Zn^AFtDgZ5Pb|MjB5D)8c?rkHZaVe`(W7R)XIYMrt^!Jxo ZPv4H}&Wn~oB%uHR002ovPDHLkV1ly2w9Wtk literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Processes.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Processes.png new file mode 100644 index 0000000000000000000000000000000000000000..ca2bbe0caba45bb26ae0025b4e8e8cd3300c3886 GIT binary patch literal 499 zcmVPBKvC;2XpI;V!K#S$FNz4>qGy=CT~v}9p%fVM zlHHx`%zGcb7>~y&7K@N&8I#EbgTX+=!#H(f?SP9{ zs}+{ZC1W<5iJ~uzMkDlkJ+#|xCZJp=2^ujk77I>FrBd+ue2io=iDt72(=-tX1X#|Q zz~VNl)v6$vbFp}r1#XX!$)8rMg>*W7@`R_uZj;m0I_agB>9161>F(C!@xU+)lu9M` z$240^!UW{>d_LpWNw3%IbtI_OYRKpFD3{AD=|pgrK*4_h6NyCPLV}_ws8lL=d3m-= zu$mYQ2GQwsP_Ne!kH!9;4syX9Ej`Jjb0DDHaNaY->ve@9zcMH%Yp` pT;*$*$uJuD_^AKwGX3{D{{S;XlcIL^-n0M!002ovPDHLkV1gFB=)?d3 literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Property.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Property.png new file mode 100644 index 0000000000000000000000000000000000000000..e616bcbca0f34e5a7bcbe7ff1da032c230b80ffe GIT binary patch literal 357 zcmV-r0h<1aP)YPh$f_n8i;}-m5PO;NUJ6YrMZ}y@!yT6 z12kdwFZjdl12g=8@4>}%ET00000NkvXXu0mjf DAuOMG literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/RaiseArgument.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/RaiseArgument.png new file mode 100644 index 0000000000000000000000000000000000000000..b0ea0e1f7777b4625edbeb39b15410dab5e4a3ae GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6$~|2iLp08xop6x1L4n70H~$&e z1Vix&tO`~Q;$PofT+H_&m(%ge5#!3Aja$}hHah$d&~{pIg7ZmFYm?c;q*Z%Z(q;T) zE(EA8ixNCC{iUq2SfAG^=Ls))mD&0fx>t!#yRB_g)pvfm#`XrzyX>t>8I=*s_HF-k aRa|z5u(JN-eOW*!FnGH9xvXbK#Kp>m>QwOrWH_GOzdHtCIV_xC{BkUai7%i-{lP+q9U(!t;{@~thzWY# zisQ(_9|Q=|5Fm!ZaH+1(DtL&sTSZF%q0=s@t5?xVfJiVJZ`4sBgRk0bW002ovPDHLkV1nu@bNK)O literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Records.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Records.png new file mode 100644 index 0000000000000000000000000000000000000000..ccdae661cc16f01aee28cbe16957512cb66a8382 GIT binary patch literal 294 zcmV+>0oneEP)1OwajET)d<lmnnW6wH8`ELQ~r z{Pn)%SzH3tgT8oNQ)ZH91C^%(l_oy>1m_0dsgC@VLzDGpPq(8sYX1JtFFYFI?ZNV#WdHyG07*qoM6N<$g4(@!<^TWy literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Redo.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Redo.png new file mode 100644 index 0000000000000000000000000000000000000000..ed5a0af9da890462a382fa2d15f88baa72e0bc73 GIT binary patch literal 489 zcmVPuS|3hgI-;JOFKt)MD&HMi6ZhZQ`?8vwOMaO>p&)EO* zf5giB|J@q*fDB8*X#h|%(5GeJ|B~Hr|Cb#2^gn0!yZ>1SKL3x~_UeE5)|dZ%*F601 z3^61SmjSy9fC`KEfA}B2?Dl`(?xX)*s<-|3>^l74d*0RmZfhU^w_kJyGlho-s3 zq4mIji^*sHYb?3*Uv}Bu|Dua;{pVkBU;OGC&5EGfvT>vsfZ_?@i;)`wrZNB+mVCH3z zy8Fn1IK{K=AUN=_#WPS`17w?7)87A_^RE9l1kyl$8G1CD5K6K@HPalbwt+NHBReku fHS^FmGm(Po5WbQ!5EPB_y1+Auc7Ou;5Cts7KagNB;WREdrLVy*_mx(!?-?+a4^m+7aEWCsbpx#SHO+4I5_;Bim|3 zj@g4ek!S^FnqHJ8f}3De;1(@Mk#!zKuDJ?%>n;>7HvSR(i%oHE@FbaRK;E(wh2uL= zbXk52TmcBWw<^FV!He0|6DpD9X~e}bSyEE16iyb< z(DSdAgetuJwhzIzQ|bo)tEdWm%eyhPtj9Ee2oF9VgHp|?;3h0-s}agnL2#`FFUaIq ziCVnokHEiT!;`oLSEJPgJ)SPu5fMC?%M4>7JAp@WE0wUSAo}ARW|Isim+CQ-Y=A#m zhrmw;;dCb=Vi!VU2ZE9V(M&hqtaM{2TtNi}Rq#c+E3bCrV-2R4od~7c@lLQ~Ce@5U zn!$Ui4Y7@W67Ipx*a3Rhr2Pk+rk80bRE~%9X1wKDd`J%--DlseGRnmnr7}0000!!9+Aj+Dc*kl?w9jc>Eak<>o#7LKF;V0N!K&Zeh0s^6_2@nQ}H<1D0k0S12E*ewcKZx^ zdV*(kbl^jBGP;RiA{u0_GFT#iQ%(`humxYUvVit>z~hnsTl=;)Ea-H&Mg$9yB=(+v zbUH)y@{UwVS{mSX1I^7cTrPZ!kH-!69hJ$uLv>2qB?zzAEEb@lK}KU^5P{50Gzr23 zj!}go(@9ZuEL$u~sH+2NYh~2e%c!o#JH39^q*SKuNIt7l)%=W&T?Z=+vl%EU!6H8; zAZb!m1Y~Ce>FHQWN?Ihz`Y-w%1i_$hF@OL9`dAPnhyiOs?{7m1hzVt3MdC&UQVM02)-0;6M{PZ6 z*z4TJ*aA|F%#ZA0x$<_?#S?}xqnd==T4JPK4~qXJU#5Oj9s8lrQvLq@el zLYGs4wa#v%c}C{HMK&rRod^TBSI|y>Ry&iqY-knbqwAe#S2m~Nah!&x@N3`vUqDti$@6vm2@W9We-DqN hUU^7)0MGi&{{kY**#3#xMalpG002ovPDHLkV1m!x`S}0< literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/ReplicationSets.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/ReplicationSets.png new file mode 100644 index 0000000000000000000000000000000000000000..89ef45a80ee01a7c87ca010a5287fc68eea47ca8 GIT binary patch literal 320 zcmV-G0l)r}SLvFF3f9&25`zK(ZBBIG3uwJuK!=&o95dt)+ti6v`uzj#UJ2{; SyDh~40000hz1PBBQ=yN2Y6hV~r$uI%~m#R@vk;#kztVmg@nZf{+8m2Q{SSs3Fw%ukM zxv4C(r6QuKy1TjQoKABq@141+^>p?sQ$+(F-h0k@pWiv}Iq!|qDB_}-l9}X8My5%o z-@7!qxhCJtjRp`ERumhQaW$vWqnE_r2f)pnQLjxWQ~hu{6#d7cp2(oF zrsEz~0$%*`4KYwR7N$RiPkHR}h`nvzPn8jX;GF=1BAGroZ{l@#GM=_%Q=$-Bhg%GR zUkYMod5z{&)>(=>0jmMrSHysGWJ1)zZ6R2S?EWuA+PEn;-p+;_k{d!NK^1A(s;H2eWqdr7RG^~K!Cr2VI)1w!{ge+ zIG0;auiz3wkrzmNX2%ot)+>~0t53nwngzb60zO9@#MurMs0=u9M@>nKE9-QLc5&kZ r!{)jUUj(r4?|eP4WbHpqM2++h;VRVP&Lokh00000NkvXXu0mjf*U3Pb literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Roles.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Roles.png new file mode 100644 index 0000000000000000000000000000000000000000..aad272852f3a5a58baceac494e188ab9491edce6 GIT binary patch literal 465 zcmV;?0WSWDP)3nTa`c{2t`RZ0+Iv@VP=KFq(G~h z>5_#so69BU={uWS+fp`o{f6f}&pF%r0HDtphr=;O5+jj1r^ni3j1}HkSz3gvWDGt_ z1#-qAu)YfTzpa2YjV{d3L7mHk%)gKnp~06x;(5uOy(cl;CZN(I21^B0)LPS=Kyjtxx$gMVr%^#@B zEqIffz>43H7i6W!C>VA+o#69&AxKe5(Fzx~Xh@T#5oW4ie*$td=$dfDUibhm9#{w- zMwFrkBc#F1CZ)hP?~*DYKm9m)I}`?n7vQ!cz%^G>irVCy+oQl)*Q5@oDs^2j;-8r{ z!RfLpFg|l`ci#jj%Azh)uQ&ct&sm=GUz^Y4eFss4-w zwvTK1cPU=gogVWs_-@jQ^Rt^4H%2puvz_CSdATbtwjfC~G5x`;(2vE;$Jcbdp1mMe z{7t0mjSXEz2Uq>zTph#{A$nc$j!28h)mM*WSBDnf760KW@LlxZ{-Qk(*cwg#9C*@q RQU>T&22WQ%mvv4FO#nU2Sl9pn literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Rules.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Rules.png new file mode 100644 index 0000000000000000000000000000000000000000..dc9aa0d68d85a31e3b7972f1c58bc3a6c215bf4c GIT binary patch literal 223 zcmV<503iQ~P)Cjw8yWx)UcPv`uH(6b=)lW9qy9C|&$nyUl zwPQ5^#U;po{`aU8tm)sQRtW!L1EvA!EI)4zvxKwR_x--9Z=29T7n7>0gk Z0s!ZL@8&1v7cC5Aq*la5axj}BJ)>5?m5S6%Le+ELOEI&ZGQn^u}B69DF3b|CGz_PRF znA4monn}r1Z)d7^o^P7YC$!f52M3^k>Szs^=5G`)Hb!S8KGU-^-5AbRM>t%`nXtE< zV|QtYoy8%x7qaZF3}Yxv_7Dtou-rVpVR&~H=Lfq)(Uu*@aQjdqz~Lvj3OciSK9u$X zrHZDc@SgqCAe0OXgcg8bygA*E{8^uadD|r{zzPyolFr-&Wu+-=aBV7DlTO%rCHf1f zZ>=Ujcg$}zq>`o^7NDS|D@jX7tzS?ge0o7kh!O}bK}lN@-%c5lMGArm_t!5x-M{k_ zXl$+_lWDTOD1n`3UN)D>+z0a`OI{LAjETZAnRE)F0TYYFl1|1+I==6tq)M91Xa*GO~CIN{|1z>5WZ)UgI)~1HVA_-2!k*PL;loj$bBCLxu?tVe1L_a&P^iW{fV1s z1nHcPc=!a$nj7-a7Z8Tr-6@m>6w5Xkrw{)^yMI6`Z=m{v8>&`7B$LOPXA|N;ALPys zL+NO9mIhdNHc!?HgmnX#xqCCrL2@nu1Lk*l!8c!lnRm?kvf4JkQ+Cuxf0y4WQ5YT;xw}Cd}kTk zVQjMe!&6j`Vre{%)D|b~vnW z?8btf99B3C4uiwsFgOg>*{rY@r}NtY^Unf~uDhV0co5m$0$Z4bIz9w-um@^atIpaQ z+wB9g+5)~m_kpd`Wdn6vUHh zMEriRQmnRK`Huctt^-3u?l^Wh{xSnQ3qsT1~Yq0_e_k zDzRgpNj#w7A@hpJ^NR=w#53^g&+xeq35Hfx>CL?Z+DR0YXL6rN<0kcj>nB45jIRZ7 zbeqK9b&OzW73D@QK!osisUXWF?DHeYVdWu>F;_r@46iEiY`O`CR#xi$5b)U~w6uV; zy97?7DI7$S96rZ(Fb3biFu@3y6w6-%@=d7ii>WD`?i^q@7{&gEJ0DiUMTHLA0L#QY zl~tIfZNcyFz%GD>?o6kmwy7}MnY67x{}}Mwc>{Ev-w2;k`v(93002ovPDHLkV1iY= B^ThxF literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Schema.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Schema.png new file mode 100644 index 0000000000000000000000000000000000000000..e592562b9355e6b4dcf316390a7eccca36f4b9f4 GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`t2|vCLo7~D4c6vsFyOiS)q<%l zL4ZSqso6n+gR^Y=!<^Qh+Lx~r7M=W5r@bcBWl6x?(53H{qN6UQo-L7CR;0M8^8Q>y zyVp4l=J~VD6?oVx9_}(q?DJ+lt+Y)mlgaQrXJZ^==2XUIoLh4Xj&JnS`Nwfwkp0e% z#}N%jnGJaU+bdpLwzBsBU*UKuy%$zLB^lfEGo$T11i$4^nXT4SWbt}a>Zwu6~3Q1(L_m>R;wn)va%bHTql|sYJYB9-n;9^gVe;7&7YfwW%d`C2Ra*It^5wM nr!26Q7EE3yh3$14|E%*4*krFi-{FBR00000NkvXXu0mjfm|9{= literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Search.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Search.png new file mode 100644 index 0000000000000000000000000000000000000000..1d3052f39361575c1857e813dc5efa554d549612 GIT binary patch literal 488 zcmVP)KehT1g~7ZVTW39dj0KZV6j+c&1SPY$Rtc~Fp|KK zt<7JU9PXVZ1Gv327#SOdl`gq_e(X@W>9UBeY#wuz+=PF>1BOYMo)`d|WKRWfCEU)x zFR=xu{CXrjeV7_IswUh{r>CwOwBY2j9&v)B^ZnpGpZ^E943P905MLzN)gAn+f{3$w e_|FWwg<0Qlo6~rrUJ!l&0000M literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Sequence.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Sequence.png new file mode 100644 index 0000000000000000000000000000000000000000..9475ff40bcef1924643a72c8750c2b8f5874ce3a GIT binary patch literal 280 zcmV+z0q6dSP)NJjHNKUB{@Nq8c{kYCg z1wbWDt-5Ga5as(j5yIxx(ne89rrEM?I9gZOrdvpo79hNb3_=J3PM#z)0qtiH@&I`K zO(I+a*YV*w0n51dKT0yjM51pz=xZ-djz}W>uS7CaFO0c%e$~ zX`1;HB+YVjhh9X3L+ji%NSeF#ZH7X-5PdXk?I}9Xn9}D!8yHagCML2`?j)uqQ|(m# eF8t*-{=yS_`S?p~daZ^40000;M1%TQZLT(Uh9=b6c;? zYr8(L^?^TRZ*E+UfT;%)5DT2qffm7%CYH+v=@7edzMbO9p%Q nMxL54zcNPQ*ZpI^&h2EJtHQM2Eme^bXcdE}tDnm{r-UW|puBGW literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Server.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Server.png new file mode 100644 index 0000000000000000000000000000000000000000..347802874e0812f35dd9a712a15313cc2cac674c GIT binary patch literal 404 zcmV;F0c-w=P)z|Rs+Rg@Q;Mn2C6}1CrA>UI^d8EAjKrjfB@V! z2L%Y+I$U!cd%{I3rEef$VPq0Kr;f;wu3Vl literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Servers.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Servers.png new file mode 100644 index 0000000000000000000000000000000000000000..dd457a5f2da58a16c75d1e08f68b6f86f8167d74 GIT binary patch literal 360 zcmV-u0hj)XP);L>D08%rPL%|*%bVyhGjr0vL78;+!lktGt(lyGN67ne( zCy4{>ukB)Hc%lIqaRU^Tn2bl`UI4UA5xG>>0mKwUra}!s!3_ZYOyeI^IpE3x>}6XY zY=zgw3|Bz@SVhgMfqgL0udcH?tY?Bd-S7r@F$rvHqjG+Mqxd#P=cDM4?qD{qcmojA z#Cr>nL||D)_vI-D5{I1ui@}8-8Ju21Z+KI*F9&abb#PPEklv7mgTSgU2gGr}0m8vb z@}C?~>s2&k3{_$wr&s(sC?m}$^!b_4bYN5ZJBeP>e)9=}!2Xcm@PWJl00007SVZ literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/SqlEditor.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/SqlEditor.png new file mode 100644 index 0000000000000000000000000000000000000000..513559922c08ac85e8190ea8edf4980bc215fa12 GIT binary patch literal 588 zcmV-S0<-;zP)2t!zQ5n6w|;6@=iLq<%JdX-fav9x zwItJ7Q1Zz_DP%8aO5EF93d-FQqFwQ*14wvq{0FzjzDsD!qM!tNM!x~Dt+tYY>u`SX z69>W}g078aDFCcOGmbv`NG6x3+-EcL^*4teejt_2lg>@CulGHf$tk*rzi7{6TS6gn zC}{4i8Qg!DqPDV>bqfOwfBr>#(>%d#y8c#&3IV00fKmp5r4;p{GLA<=Len*r6q1Q_ zj)_bTzt0vD@2wDE5GaLoA5Y~#!R{qhRQp{{B*sZ)|IoU04nbF7+1@iM{%l8`Q2^*{ zUZA^8QsLV2!y2poY^bSVWA_Mel0Ru#T*bi7I&6jD2TL83K(KUIpLW5NH9z2TV{?rZ z&;e%8Eb;Co;}PfpY(4oLPq$Ckv;Igw@w3Z0*!CKLYm8y)MaQaQf}5w7VOd}+rCo7P zhcyKc+9KXrfedj)F#(&74PdJGT!c0Ip91jYLIW%IKE~9m*lL3S#ho)@DP&70C7x(+ zK${TtUs~yP7uQxy(0sU$|Ecd{BjG&>{?*VGgP_dk$V1B<9AlVXYFuyc5t{_D)~oSp akMmzjY?Bzj%U-Mi0000h~o<>K}Sy4w(P^BkE6=a@h5@ovA)NRh0hN3D-Q$-Wm(&o}M&Hd3gno~3& z)gTHLH)U>1=X^H``U1b6XSs4%QUqKl&-+}z`?{a|elviK|IvYi)4JhIAw@_P()Oh8 zon;;h5Ess8SGzIW-_zp@@q8(PV`U-a z)u{2rsGp3{IUT3XvrcZ4Hx2SLwyfMGDz(4;LhWmfD)%mx&K(S6Q7T5Z(GPFY=-$EN z3XoOhBGpa`pvc&=a!t}4qjLP0xoqe&iX%elK!jFL6r*iX0+js#RrcI86~~k^k47nf z5#auyFbiWzf0%o=O^gF!+MMeWpza4~j>QDEle-v&S)VlfG1!lx*p3LDLTAgO#9D~X zs?a?4L;|#Qzn26L4%*erOb3e? zUCl<_xGjLSR1coydQ;(v1B;Z~=;g69z$5oIhJg^py&IH1J<3AF!fdE2X>K0Bz>StX z(;rt^E{V~)h-ExLkGe(uaGiLxf@Ex2dB6Fuf2OMqcb8?)sn~}C{#D-r(ly6jg#)R0 P00000NkvXXu0mjfKBFpd literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Step.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Step.png new file mode 100644 index 0000000000000000000000000000000000000000..897dc138e742c83d27b3599221bc8eb1f4bd8561 GIT binary patch literal 306 zcmV-20nPr2P)ho@c7+PQQq?T<6vRr^!n*;Z|U~??fCredV2DLg7W(O_WS+${r>&_|NsC0 z$-mD}00002bW%=J0G4n6`$+%*0CP!1K~xx5WslbmgD?yLgUu`uMoQWH|NjvZ+ej7n zco*A>Qp&>zPg(Fhk9}LGv2T$D?BHlvNNVUD3uey=?E28-y8r+H07*qoM6N<$ Eg14@jc>n+a literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Steps.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Steps.png new file mode 100644 index 0000000000000000000000000000000000000000..b923faf968d61ff17ed47f70b8b45220df590480 GIT binary patch literal 374 zcmV-+0g3*JP)puU?e^6{LD)w}+3@(=O-|laRNnIW;96SaUtr|)`sHP1 z=xS@}_WSB@aO`w+?fCreczEx8eDQyP@`8f$`uz6${rUa={r>;||Nocv&?5i<00MMU zPE!DuZ~yyA0001uNkl)k&o*Z}N<@(uDKuDm^0{~) z-JN}<6s8;>6VGo24(l)l5IZ>8YX3-v62#FaMfJSFQvyuYV6uTHYjCQA*#hTus|^MP zhH>j}PGw`y>I8p-i^>_h_!X9KP-Q#g@7i)MMA(?pt$F-`;?IJdxB*DWMT(rLhn o>o-73w1&B3Fg?7iHh#_&KiUg((5OqrtpET307*qoM6N<$g2bV#zyJUM literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Tables.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Tables.png new file mode 100644 index 0000000000000000000000000000000000000000..e5d0d829a7f45dda449a6803a9eeac101496e0e3 GIT binary patch literal 415 zcmV;Q0bu@#P)*89eH-{oNJBMje{2tKo|dedbj&)p7=tg<~?&2Eh)kJa)h=v#)_6fr%F+< zOLw2Z*}aVOM>c3q0C@piJVdy9`mPO>guE2nJbW!g5|x*!xd{mq*wF`QO2P!T^$!58 zMkJ~@M2;_?e=<$7jHl0uAf|PeU zotcH+>3h2iyj6twR57TDTi|!q=|*`+Aqr7|EYL|LmSwR#48xg)G)+<2#5xI~axrSC zTd-}rDo`gO3nDJ%j^oUI6LrxqOC(7SjFZ2`VM`<|(;M1%Pc2n}ps!!*K7B6! z`EBy|ubtn&_Wb%j>*u#=KfX=;_$l+-m)6gp%kLcXd44DA)2G6xw?kgsNw|B=|H*CN zTSx3)+)a6W%l+f0>@#cRB40Fw01am@3GxeOn06)R^8bDyH^S4!F{C1{_nf)V0RSvmLLiikjGrAbd^7cE+#_+R=Kk7mXGMo+H49TVn+EJ(bW^|6() x&$sUo&sj0whi!?w8F{TQsEUjDr}qnq#=Uf8e%m|KPy}cPgQu&X%Q~loCIG)jb$b8+ literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Tablespaces.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Tablespaces.png new file mode 100644 index 0000000000000000000000000000000000000000..57bd8dcc7e573c72431fa1b772295d5ed623bb22 GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`?Vc`XI7o@@Ji6s zOou=6y#C5Z8~*R#ci!pX5(y5o2hX>ktT6Q8jbq+d|CZ(P?&E(9a@so|nm%|v-O51i zxOD=vU9BEla?u`Uvj>lt`+$TbE_$pg4`6DMd7mKBaMpT1`N~73lf{y o4(w^>7B*stRy!=u{Um`Q`T|2Q+kEqQppzIpUHx3vIVCg!0J7XhqyPW_ literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Tminus.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Tminus.png new file mode 100644 index 0000000000000000000000000000000000000000..86ed3a6540c02117155e6c792bc6875c827cc3d7 GIT binary patch literal 115 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=m8XkiNJU)o0_lv*te^g}ligx1 z9?Y01B7XJCRf9<{Tu(JObn?XW?rHpg(Qw)IjhB^8cp};2-%04^GW_$^>5SJ@Rs)*C N;OXk;vd$@?2>|%nBjf-8 literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Tplus.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Tplus.png new file mode 100644 index 0000000000000000000000000000000000000000..552d7a09a7c4f0bc5a71a46cf3b91e09f8819fa6 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=o2QFoNJU(7$^xSUnF-#(r~l8| zB{fM`W{#drsp28m77^jcNp6SYTuuaMJ*aQ_qhS2O-mEmBvgyl%&qhx-`us2P(3H^4 ZWhl9mDH`hbK?-OhgQu&X%Q~loCIIeoDl`B9 literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Trigger.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Trigger.png new file mode 100644 index 0000000000000000000000000000000000000000..a0c781dee35a936f84aeeb5302adbffbe0b1155a GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`t)4E9Ar`&KKmPx>XI7PHU2I?Y z(L~{2f6MZTSqJ`4^6!5zL&DjB$KvaMb}qFPjyA^nMxK(M^8!4~eayK>+X^L{5*^;Y zziwe@22|xyTO+B@w(?+h!}U&C3&TJ?gPU78wAHM5c&?v6en91D)8$59jTui$1ZqF4 m$V{Frqi-X?0~<;{J&L}0Qq}aeEKnCyNswPK!?gVWzdeDxC{Gv1 zkcznE24*)`0Vbwp&P)z0No#^wlqQ@w zkB^?7p971Cr+2WIH}lGu8A7izm|osm%i*F>tjEb9ct!t-3<=sci$Id6*zqV^zqZ2M?SD}N-{{!Gf*s#->+Wh->@pi z_V54S|Jk!jiofrz{{Bvsk&Qq6{7i=j2NWJXivt2Cle>paub7IY?C6N@isrgu#qZAF fkz4Rvk%2+dN^X|Tln3{K7BhId`njxgN@xNAcT!?X literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Triggers.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Triggers.png new file mode 100644 index 0000000000000000000000000000000000000000..4989f114d914b23d27fc1107882cc2d4a0a91b7a GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv5AX?b{r~^J{=~&VWUy|Y<@V+7 zN4JJuIg^ECgy{DhcunW|)@$|Fq zED$7=z`)$g=gQ$+y=cScQQ3knADw>ks%Nu7(8p!Mnezj#gn?ag^$>6HCa(wz~0cx Y*kULlEh1*N8fYzpr>mdKI;Vst0FrN3_5c6? literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Type.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Type.png new file mode 100644 index 0000000000000000000000000000000000000000..9c8f53859b3e1b236b6d0856c4f3e1ee2a145c2f GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`>7Fi*Ar_~TfBye(&#c$s57p8ZaPJhM#46t~A;%+u!y&z)k()3EHV&aUTf4B;#)%F|{tumG)O@O1Ta JS?83{1OU57IcNX? literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Types.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Types.png new file mode 100644 index 0000000000000000000000000000000000000000..dab729448a9fad52adbb0d9274ae7122b9b53b07 GIT binary patch literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv5AX?b{r~@e)ahA3l=pvg<^P@S z{||IM*g5V0iDmyUZux)X(Et1A{y)9;|5fyt$sjFEB|(0{4Ab)e|Mmp(f<0XvLpY*s zPi^EqV8G#WQCK)aGdNAd?X-ZTs&fj<2bKq$bBcKV<4+V8@=o~tQ0-G#Xy%dKlb-k; z@p7?Z?>rQ5WVWX(wMK?zANQJu%Duv7^}iT&i-Qy|R@~eLG@ilJ)z4*}Q$iB}%Pv)j literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Undo.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Undo.png new file mode 100644 index 0000000000000000000000000000000000000000..8c8df1a5686481a214453941d01bcb2051a4eed4 GIT binary patch literal 470 zcmV;{0V)28P)cL%;~FOpMarNGOUBFW8!xy%645tYHg4pjsA{)>4cF z43ZZe_xp#|pG8TjPPgx#d(U^e-~B`YM8ARP&jh$evy3oJ@DT7G*;)3j02Qe++ZRze zb&8thdsM7Epm_co@^L4)HX9RD`4u2CPu{+STFWKWwp%DEmQc(wok2G3M)HIU60b;} zKLM+H<{Z`58z@GPkkPXauE~P5?lq(gJ0PBPAE$ zD59asNhFor5O*UGh)8OgN5}|2heu!HxQr&Qu-zexnmHO6YyQGPKq~D;pjY74muN^Q zYuWVPoY%UR5aVZ0bP28eQ|g3-o@=%+LjTil?UQ!K>Qzyr;%zvN8Z9q|Jx4V`9J5(W3VAa8341@xB0~XqOI5d zhp#;Uzh>8Mk_`C2{L0h+eaG(o&)RhLf9TQ+|7&;NA>9QaoVn!6|A-}*|JQE2OS}O{ z2EA?FdGCMZ!mI!5w%jMnfZavQZ~Tv%fBk>`rUzuYVB3TL(Q|J8Z`kmNJQtKLz4bqC z_U-=->mHLAh-^SY=1dp5oJzhM8H p|7(uD$LbQCF2I4O(I+#Jf&rg9-69(v09F71002ovPDHLkV1j2#|?|9Xve?o}mokdZ2ElGJJ5rl;3)hzVk940G~afP$)gz zB;w29y@>+8h2e+#DSp%!N)M*`N*T~vjU;i{C$S4ezS$0&>O19=CMmK&oFq_qY$w=M zRrFgO7AP))rXy^s-z4a|3Pdi<2{zRsJ)!LSgdn%gh1uczdK0Vh71t7{X2Rid+gupG znaAdv85U@d&o~NbBd{2aVq20So!79Q&SG|c0TD`aGmAp?3gVuOxuqye0{;ZG;1>h| z`BDXUs)m~{4UG>C*Y7$m2RhFBI!<~zjujo5f`n;dh9!QhKuB(+T;Zc<1M-uB*jkDO zf>n^)s>q&T>Cr%X_mBlStDs%IZF_?Ey9V+X6 d$MD$=84 zj_r*lyk_yw*&&KLu)P!i63YTJ!3TTm_`;LsnRVK5QlrMG*@TBK3l`l&un(G`V>MYK z3vzUFD_q-8!!dD{!^ykX@qEFCbjXIxJsWOWj3h805m4JQ{AM=>9~(iXRKg%=F*aaC zEI7j9mtiZS{y`Gtj*LJv%djZuG4Gj1A(LQ9BIuc6H311}7`ccQtAT+(1bVtKzt_&& zCb&^4vXoG-lv&;}i5nBF^;h?=VQRQ#1h(k7aMpme@F=9)SD;pP@snHOdgTN1nJl_R z4Ttqw6$$jRz_Q>P0(K>!I1f{wz}s$x>y=MTumPpI6JwGN-nfX~^GcF*kRX+hPjeUr z52UF}eCAfTUfE+cFNc#qdXV^jnys}Yu#li}xD((o^0QdEbD3Wl%}j06$pnjn2-jnQ z!%q(l2yN*}kRm}7F2$@kV>CiqT*ghe7rp)G(8FSz@xd8>gzkP5A_Wm^jZ=u$1QIlU z2^fs+Nh)B{7eMyoXRN=k;@R6O;^itwZus~B+xVfAYe`zB!ZEAN0mA&0Rw&I?Pa z7stX63N?75S@d1(;_#CL{-1DxgG)AVK&|XVvb=XJ9NDQMw7CzZO3{Rgl|Ljd`Oi3r Z{R!W`#4Vh;WUc@J002ovPDHLkV1hdPAY=dl literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/UserGroups.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/UserGroups.png new file mode 100644 index 0000000000000000000000000000000000000000..2e91dfce8bb8a3a806028726827c318f85d1405d GIT binary patch literal 593 zcmV-X0 zk82Wf7{>hr{P&#huq>f$C^&Vw)b6fTp{dc5N~qa3Dk8SBnM$o%`~D$^R?Ex)3L%~a$9X79@=7bQrs0JN%tKl?ja z*Bdm~tO4~V4_L#|FA7j-;gHPD7kR9g^O%1qK}=p^0edW9iRN`4z&W5 zT%iD!0y^DKPoTfN4xiV9SR@RsS}|{phyteHoPnKEVP=5>Iuvk=scWzPbaKkPHJtL` z7)t-hYhtul_n!7yZ^bc`>U|jLWilJp!|^24Z*5GxZoo>3%r`RLOx^6rzdCebwn!gAzWMfUP?~D}$CY zVp34&8_U?(JH*Ov8;$KYuWn#6C|S*TFQfZ*#H7$^ZXfiS7rq=p+4{j3dXzf7HdgVO f=q-`cMKI^(Dgaw_6N00000NkvXXu0mjfiYyge literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Users.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Users.png new file mode 100644 index 0000000000000000000000000000000000000000..d03e9ee0b88614b3bd977e831f38421b7d67c88a GIT binary patch literal 364 zcmV-y0h9iTP)OM2Iv?<`wqB7I3;JyU%@h z_iYac?){(NJ;(oM0Awh~ak5h0Oj&ilOp&?a?xWxBNC`CDL!^Z$fJgIhFu*kUz*E;J zz|#kl5^4bPZ=MDt3Am2|79~^zc^>j*nj7vB2l5&qF(EHk)^a)Q9@Mc}EMY^cT&rVM zp7Cy3LS7b*Pg{5n#^{g6=zWIphatAAdmMV5bv{crn4m^VDdQp zip=6Y#QJs>X6MpQCH6?|q(wl1fF>bQ&}DWmmMgJGF7JAr6V}gR+seh&O=P}(`$7BV zn}CVUyl5-Bn7U~LShu1&oAWln+*b6?X#jIu(L1LBShu1&oAZCgqrO{=F=5L90000< KMNUMnLSTY}L!i$9 literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Variables.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Variables.png new file mode 100644 index 0000000000000000000000000000000000000000..d24bc14c0d685e8b7c8c4b63cd37308f0eb085b4 GIT binary patch literal 380 zcmV-?0fYXDP)>&;93H?p@_Dpz z;@1x~$e#m@x6lb^tjX zKb(9)HnK#ri1PM^4=e_vIGK8dsT%}#vZy**H=v2lK(TPy&AvZc!SVJA$*RiRvzcl- zKtg)_xptH6+sf1pNdKQf@T!MBHvEMA?&`OJ02Av;yFp^40%L^anQ;0iodD}VBLc?(&Wk12GyXl0-@ASETmOJ7E&s-L aw3rV#e(b6G#-&;S0000LPayZ%3ZdGY_#=lB0VfBy9U zvuDr1`0>+Q|8G2B^Z(e3({eSgGHX;mwfq3}6!~cD6%>M6srH9o8 dlw~GLFaR4y(>QKggM9!1002ovPDHLkV1jiUhzbAz literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Views.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/Views.png new file mode 100644 index 0000000000000000000000000000000000000000..a7232d7b21af132b7f41f6748169c024af150b63 GIT binary patch literal 286 zcmV+(0pb3MP)=ABUZ|LD)O|Bt^d|NrRSzW+~NUH<>{`Mv+opFjQo?AbFg ze)RO#|Lf0J{@-#j`v3d)?*&i{0Ga&ge>br%z;FrN0CHV|;sSD9f?)uuE&&_x5X}X| zxMcfFH873U3osfNz-hokEC!(43^(9~I&m%l(Rbdg0s9@*06boJh-Sd)&td z06Zx_BF77`6h(3%!d!r40ESD5ibnL@1vB8mzqbE({?z@y`KuHX1|PluAAaxff8QIk k|GQr4VY&dDONdFz0E9#7J=tYE6#xJL07*qoM6N<$f_Ptu1^@s6 literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/blank.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/blank.png new file mode 100644 index 0000000000000000000000000000000000000000..dae1f43dd8641ff24609e8163eba0a59a7b5fb50 GIT binary patch literal 77 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqCmyPZ!6Kin!zjLK3Wt6GVEN0u8tr Y*g_Z>J@w9O0_7PzUHx3vIVCg!0P>p-{r~^~ literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/title.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/images/themes/default/title.png new file mode 100644 index 0000000000000000000000000000000000000000..10015d679599247be64a52a96f146cecddd90696 GIT binary patch literal 3523 zcmV;!4LtIRP)00093P)t-s&d;3x z|Nj600C#tHySuw0A|eqH5#;2_?(Xi0h=|?Y-7_;Y%*@QHs;XvYW<*3pRaI4KYEb0l z$l>9_K9XrhS^5b)uqr92^xM9vWL)MORotv$TlgCVTYiv=QoOR&fz~ke_YHCp7;lZq}f}EXpXlYNnyN$!d zlyh@ex44V7wu!#Kke;7-baYpMfMK$;hmMbI<>kx4!jiwhk-NN&Z*Nqos({DHmb|@> zdwX4pifD+4XXWL|ZEjPBhh}wlS%ZXQg@$Fgxr>*Wa-pJn;NZc2e_v~BQK+eZqN975 znRA(%bd8N_s;hyCiD!_IZN|rzZ3ItE_@_by$*pCt zmBPc5Utmatg=CYIZ*g)~yS$FT!IH_zuXlH4)YQDm$+Fzs!OP5=y}plqeqYVbo4>%2 zq@;_<%9x6ZaLCD*p`nM4k9EezsBv;wmX>_S$FR%GvBANnkC1kzrj2rQR!d7kT3Ss= zNj9vkl8lXNXJ}4$cwWuUv*Y8+sHl{$ua)BB#y2-AEiEEzYhK~u$aZ&K%FCH}cxTMb znt_61hlg~`&70=t%;4a|YHLx0glcwnS$cb6)z!P=;>XI$u(r0Lh=_N6eQLP4o_u{{ zva^PAb60b8TG-gR;NZoFh;C|YP>G3n*4DSBrhZ#nPh@0Q&MQUa000VpNklbufnR_b^ zDA*Koq@)>cj6^SnC2HU6ox37+ATJ z$Btgncgfn;xvQtvRdr`O7C$=11SGBp@ zz#e{fG!n=YshVQfb-SXaJ`u3OqK-qwWDqY$vz|lE9&!5#i~0My@;>k zgfRx$`1$?rr@!tvwF6Jp0N8O}+R+Fg`#1ops;1af)uw1_>fXHpDnf>fNjMa5@v8m( zd-y{eYKUSrvk>ropRZIy6`g;IVoHx5J#e7(@{lGuMwBvEriwx^_rA8VHiA zl6Z7g4+u_bas7%^nqmbH$AxtKJ=KNg4AZJ;#s5hEhTctrKn_X|zuW-`XQ+mfeBYvf zF$Opq3PLVGR-S!_0FgncR|&ynrGd&+6o;-z>3~v{Fw+Gu?P~GA#Ty6^`5LQu&dL8w z=Yx3PqQN5M4F?e+rqKnC0Kq}WAwY%Crm8v>C+Kv$Bte2OSO$1P;TOLfg9tg19(uVG zBocvN!z5%!qkwRSHgsn=6)PV!5d>@filS*&>Qx5@9@H?G%1NNA&Oa{Vpf?D0F$kc^ z!Zd!)0U+kHx&IRQ*cd!7^Y@3Xe1pI8WThfvD(pD7=zHL8D8oCO!Z4j_C) zUKqy?I!&=+fyvQA-A1dK4iW@-R^rne0>S|4q>&>nSt28pLRg~913%QO2=V3-Y>F;G z?5bfS!7I_8&8EnVfR-|$r1^oMuHP;Q+V}Jyfjd6jez%R5AU2rn0dd3mRpe;V29h9Q z0>p|`NTFSBk4pX^+W&xPw++JWbN>K{&Z((M#O>1e7(~NF)CUPrVL3w?#0o2TYa#!p z&Pu~cIubk(bdUB$|B;dH+v9GjO`FFU#E?nw0|`{&tF$Vw7kD6$G(&Ug9gIwbN@nT zNem({9d>_^K$Q)(ox%?kg|HWdDK3Z(S_mJI6SR6YzK$3{1CjlE5PhfIn^AAf7uamir-4`br4W42#}Ba|HeJYuJw)C0NGTIQ`1uaci(q+^ z|F_US_0Iq~(b2e?BsFjD0a3G7{$}31c@_(P{rbeqFCJGtl|x5M2ayq7doA9+J@)Ql zaTg7&T=yDCqouVxGk@x;4#`zz-MgJ0`1BvQ_1!urJNG<&_7k6)8dual`ey+ABqf!X zM_97t$Mmc>=0Trcedp~z;M<$W`G#p5-9 z@T|IJeacdZ;<-oe+i~yQAukDv#>arZ{1OPF{|F0IUXISQz~5 zBfiSIQ40b_ptaNjqZEEjR4y)bGprvwZsY6~%lppBuE;1kX@+T}F!SW!%esSNC{c7_ z3YZZ*3W)l?2V#JIkDmDA)Z5oz3$NY4s%3&vEd~KW#9_?R($d41FPDs&+`IRBHsZ?6 zt@D>utesxavFF6;gASLJ96WgN{@6u`#n2uD`h$WeD##SjJ>P!&=A&<&c<0nB*S~`l zumiBbOF)4ZX`oTM7RNqF1{m>R#)Lhst8*t#YkAk;SsgG>oC+GK{yVztoI8Z9V2WU3 zK(c$E{sF)qNCIC3oJ8P<>yyLK05=I0^V1ks&SA*|Tx9;l#Gu+TiZ7wvQZ5`aBm zf?-~S(Ib!t$uOhiE;eH7szqK1%oAlBR`^mh3%<}icaQd|e>flkBmoZ+BftjA17@j! z8CJsxOw+Qeb(>SVc_6wFL{klvS7;vHQ~TUMJHP-Qf{n9>!v#hl8(LTQ++FBpfDs}S z3?Ua(lMR$t)I9(BF+tqF01zGs0)(L=gAjxbJWG-RMhwJ`MJA*ZzNu(Rp?U6}+86zA zB!DZ+x4{EJu%`en03j0yu%V7-NivWT6zn?+!9w%sp4;dCXKw2|XMQ%OC}YC(83i4Q zpfGcFJ|Qdu!h$~QHq$II12!y-kiljM8SSPQHIMEwK<@t60st25>bV;pFaZq`To4H3 zkq7p{%Rs@tb52NQFL@B%Q~P^h0Q%1*00bcq9)N&NC=&?SOR&L*!OsXl+({L*c6VP` xNd4#M!2tl&B_}Va@)8X6Ly$g5Bkni^^j}c3NjgN9{J{VK002ovPDHLkV1mlixD@~Z literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/index.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/index.php new file mode 100644 index 00000000..f9177b7f --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/index.php @@ -0,0 +1,42 @@ +printHeader('', null, true); + + $rtl = (strcasecmp($lang['applangdir'], 'rtl') == 0); + + $cols = $rtl ? '*,'.$conf['left_width'] : $conf['left_width'].',*'; + $mainframe = '' +?> + + + + + + + + + + <body> + <?php echo $lang['strnoframes'] ?><br /> + <a href="intro.php"><?php echo $lang['strnoframeslink'] ?></a> + </body> + + + + +printFooter(false); +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/indexes.js b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/indexes.js new file mode 100644 index 00000000..27160f2f --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/indexes.js @@ -0,0 +1,70 @@ + // Globals + // + + + /* + * Multiple Selection lists in HTML Document + */ + var tableColumnList; + var indexColumnList; + + /* + * Two Array vars + */ + + var indexColumns, tableColumns; + + + function buttonPressed(object) { + + if (object.name == "add") { + from = tableColumnList; + to = indexColumnList; + } + else { + to = tableColumnList; + from = indexColumnList; + } + + var selectedOptions = getSelectedOptions(from); + + for (i = 0; i < selectedOptions.length; i++) { + option = new Option(selectedOptions[i].text); + addToArray(to, option); + removeFromArray(from, selectedOptions[i].index); + } + } + + function doSelectAll() { + for(var x = 0; x < indexColumnList.options.length; x++){ + indexColumnList.options[x].selected = true; + } + } + + function init() { + tableColumnList = document.formIndex.TableColumnList; + indexColumnList = document.getElementById("IndexColumnList"); + indexColumns = indexColumnList.options; + tableColumns = tableColumnList.options; + } + + + function getSelectedOptions(obj) { + var selectedOptions = new Array(); + + for (i = 0; i < obj.options.length; i++) { + if (obj.options[i].selected) { + selectedOptions.push(obj.options[i]); + } + } + + return selectedOptions; + } + + function removeFromArray(obj, index) { + obj.remove(index); + } + + function addToArray(obj, item) { + obj.options[obj.options.length] = item; + } \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/indexes.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/indexes.php new file mode 100644 index 00000000..5c6ebdbf --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/indexes.php @@ -0,0 +1,422 @@ +printTrail('index'); + $misc->printTitle($lang['strclusterindex'],'pg.index.cluster'); + + echo "

", sprintf($lang['strconfcluster'], $misc->printVal($_REQUEST['index'])), "

\n"; + + echo "
\n"; + echo "

\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "
\n"; + } + else { + $status = $data->clusterIndex($_POST['table'], $_POST['index']); + if ($status == 0) + if (isset($_POST['analyze'])){ + $status = $data->analyzeDB($_POST['table']); + if ($status == 0) + doDefault($lang['strclusteredgood'] . ' ' . $lang['stranalyzegood']); + else + doDefault($lang['stranalyzebad']); + } else + doDefault($lang['strclusteredgood']); + else + doDefault($lang['strclusteredbad']); + } + + } + + function doReindex() { + global $data, $lang; + + $status = $data->reindex('INDEX', $_REQUEST['index']); + if ($status == 0) + doDefault($lang['strreindexgood']); + else + doDefault($lang['strreindexbad']); + } + + /** + * Displays a screen where they can enter a new index + */ + function doCreateIndex($msg = '') { + global $data, $misc; + global $lang; + + if (!isset($_POST['formIndexName'])) $_POST['formIndexName'] = ''; + if (!isset($_POST['formIndexType'])) $_POST['formIndexType'] = null; + if (!isset($_POST['formCols'])) $_POST['formCols'] = ''; + if (!isset($_POST['formWhere'])) $_POST['formWhere'] = ''; + if (!isset($_POST['formSpc'])) $_POST['formSpc'] = ''; + + $attrs = $data->getTableAttributes($_REQUEST['table']); + // Fetch all tablespaces from the database + if ($data->hasTablespaces()) $tablespaces = $data->getTablespaces(); + + $misc->printTrail('table'); + $misc->printTitle($lang['strcreateindex'],'pg.index.create'); + $misc->printMsg($msg); + + $selColumns = new XHTML_select("TableColumnList",true,10); + $selColumns->set_style("width: 10em;"); + + if ($attrs->recordCount() > 0) { + while (!$attrs->EOF) { + $selColumns->add(new XHTML_Option($attrs->fields['attname'])); + $attrs->moveNext(); + } + } + + $selIndex = new XHTML_select("IndexColumnList[]", true, 10); + $selIndex->set_style("width: 10em;"); + $selIndex->set_attribute("id", "IndexColumnList"); + $buttonAdd = new XHTML_Button("add", ">>"); + $buttonAdd->set_attribute("onclick", "buttonPressed(this);"); + $buttonAdd->set_attribute("type", "button"); + + $buttonRemove = new XHTML_Button("remove", "<<"); + $buttonRemove->set_attribute("onclick", "buttonPressed(this);"); + $buttonRemove->set_attribute("type", "button"); + + echo "
\n"; + + + echo "\n"; + echo ""; + echo ""; + echo ""; + echo ""; + echo "\n"; + echo "\n"; + echo ""; + echo "\n"; + echo "
{$lang['strindexname']}
_maxNameLen}\" value=\"", + htmlspecialchars($_POST['formIndexName']), "\" />
{$lang['strtablecolumnlist']} {$lang['strindexcolumnlist']}
" . $selColumns->fetch() . "" . $buttonRemove->fetch() . $buttonAdd->fetch() . "" . $selIndex->fetch() . "
\n"; + + echo " \n"; + echo ""; + echo ""; + echo "\n"; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + + // Tablespace (if there are any) + if ($data->hasTablespaces() && $tablespaces->recordCount() > 0) { + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + } + + if ($data->hasConcurrentIndexBuild()) { + echo ""; + echo ""; + echo ""; + echo ""; + } + + echo "
{$lang['strindextype']}
{$lang['strwhere']}(_maxNameLen}\" value=\"", + htmlspecialchars($_POST['formWhere']), "\" />)
{$lang['strtablespace']}\n\t\t\t\n\t\t
"; + + echo "

\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + + /** + * Actually creates the new index in the database + * @@ Note: this function can't handle columns with commas in them + */ + function doSaveCreateIndex() { + global $data; + global $lang; + + // Handle databases that don't have partial indexes + if (!isset($_POST['formWhere'])) $_POST['formWhere'] = ''; + // Default tablespace to null if it isn't set + if (!isset($_POST['formSpc'])) $_POST['formSpc'] = null; + + // Check that they've given a name and at least one column + if ($_POST['formIndexName'] == '') doCreateIndex($lang['strindexneedsname']); + elseif (!isset($_POST['IndexColumnList']) || $_POST['IndexColumnList'] == '') doCreateIndex($lang['strindexneedscols']); + else { + $status = $data->createIndex($_POST['formIndexName'], $_POST['table'], $_POST['IndexColumnList'], + $_POST['formIndexType'], isset($_POST['formUnique']), $_POST['formWhere'], $_POST['formSpc'], + isset($_POST['formConcur'])); + if ($status == 0) + doDefault($lang['strindexcreated']); + else + doCreateIndex($lang['strindexcreatedbad']); + } + } + + /** + * Show confirmation of drop index and perform actual drop + */ + function doDropIndex($confirm) { + global $data, $misc; + global $lang; + + if ($confirm) { + $misc->printTrail('index'); + $misc->printTitle($lang['strdrop'],'pg.index.drop'); + + echo "

", sprintf($lang['strconfdropindex'], $misc->printVal($_REQUEST['index'])), "

\n"; + + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo $misc->form; + echo "

\n"; + echo "\n"; + echo "\n"; + echo "
\n"; + } + else { + $status = $data->dropIndex($_POST['index'], isset($_POST['cascade'])); + if ($status == 0) + doDefault($lang['strindexdropped']); + else + doDefault($lang['strindexdroppedbad']); + } + + } + + function doDefault($msg = '') { + global $data, $misc; + global $lang; + + function indPre(&$rowdata, $actions) { + global $data, $lang; + + if ($data->phpBool($rowdata->fields['indisprimary'])) { + $rowdata->fields['+constraints'] = $lang['strprimarykey']; + $actions['drop']['disable'] = true; + } + elseif ($data->phpBool($rowdata->fields['indisunique'])) { + $rowdata->fields['+constraints'] = $lang['struniquekey']; + $actions['drop']['disable'] = true; + } + else + $rowdata->fields['+constraints'] = ''; + + return $actions; + } + + $misc->printTrail('table'); + $misc->printTabs('table','indexes'); + $misc->printMsg($msg); + + $indexes = $data->getIndexes($_REQUEST['table']); + + $columns = array( + 'index' => array( + 'title' => $lang['strname'], + 'field' => field('indname'), + ), + 'definition' => array( + 'title' => $lang['strdefinition'], + 'field' => field('inddef'), + ), + 'constraints' => array( + 'title' => $lang['strconstraints'], + 'field' => field('+constraints'), + 'type' => 'verbatim', + 'params'=> array('align' => 'center'), + ), + 'clustered' => array( + 'title' => $lang['strclustered'], + 'field' => field('indisclustered'), + 'type' => 'yesno', + ), + 'actions' => array( + 'title' => $lang['stractions'], + ), + 'comment' => array( + 'title' => $lang['strcomment'], + 'field' => field('idxcomment'), + ), + ); + + $actions = array( + 'cluster' => array( + 'content' => $lang['strclusterindex'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'indexes.php', + 'urlvars' => array ( + 'action' => 'confirm_cluster_index', + 'table' => $_REQUEST['table'], + 'index' => field('indname') + ) + ) + ) + ), + 'reindex' => array( + 'content' => $lang['strreindex'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'indexes.php', + 'urlvars' => array ( + 'action' => 'reindex', + 'table' => $_REQUEST['table'], + 'index' => field('indname') + ) + ) + ) + ), + 'drop' => array( + 'content' => $lang['strdrop'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'indexes.php', + 'urlvars' => array ( + 'action' => 'confirm_drop_index', + 'table' => $_REQUEST['table'], + 'index' => field('indname') + ) + ) + ) + ) + ); + + $misc->printTable($indexes, $columns, $actions, 'indexes-indexes', $lang['strnoindexes'], 'indPre'); + + $misc->printNavLinks(array ( + 'create' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'indexes.php', + 'urlvars' => array ( + 'action' => 'create_index', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'table' => $_REQUEST['table'] + ) + ) + ), + 'content' => $lang['strcreateindex'] + ) + ), 'indexes-indexes', get_defined_vars()); + } + + function doTree() { + global $misc, $data; + + $indexes = $data->getIndexes($_REQUEST['table']); + + $reqvars = $misc->getRequestVars('table'); + + function getIcon($f) { + if ($f['indisprimary'] == 't') + return 'PrimaryKey'; + if ($f['indisunique'] == 't') + return 'UniqueConstraint'; + return 'Index'; + } + + $attrs = array( + 'text' => field('indname'), + 'icon' => callback('getIcon'), + ); + + $misc->printTree($indexes, $attrs, 'indexes'); + exit; + } + + if ($action == 'tree') doTree(); + + $misc->printHeader($lang['strindexes'], ""); + + if ($action == 'create_index' || $action == 'save_create_index') + echo ""; + else + $misc->printBody(); + + switch ($action) { + case 'cluster_index': + if (isset($_POST['cluster'])) doClusterIndex(false); + else doDefault(); + break; + case 'confirm_cluster_index': + doClusterIndex(true); + break; + case 'reindex': + doReindex(); + break; + case 'save_create_index': + if (isset($_POST['cancel'])) doDefault(); + else doSaveCreateIndex(); + break; + case 'create_index': + doCreateIndex(); + break; + case 'drop_index': + if (isset($_POST['drop'])) doDropIndex(false); + else doDefault(); + break; + case 'confirm_drop_index': + doDropIndex(true); + break; + default: + doDefault(); + break; + } + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/info.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/info.php new file mode 100644 index 00000000..cfb6e8d3 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/info.php @@ -0,0 +1,339 @@ +printTrail('table'); + $misc->printTabs('table','info'); + $misc->printMsg($msg); + + // common params for printVal + $shownull = array('null' => true); + + // Fetch info + $referrers = $data->getReferrers($_REQUEST['table']); + $parents = $data->getTableParents($_REQUEST['table']); + $children = $data->getTableChildren($_REQUEST['table']); + $tablestatstups = $data->getStatsTableTuples($_REQUEST['table']); + $tablestatsio = $data->getStatsTableIO($_REQUEST['table']); + $indexstatstups = $data->getStatsIndexTuples($_REQUEST['table']); + $indexstatsio = $data->getStatsIndexIO($_REQUEST['table']); + + // Check that there is some info + if (($referrers === -99 || ($referrers !== -99 && $referrers->recordCount() == 0)) + && $parents->recordCount() == 0 && $children->recordCount() == 0 + && ($tablestatstups->recordCount() == 0 && $tablestatsio->recordCount() == 0 + && $indexstatstups->recordCount() == 0 && $indexstatsio->recordCount() == 0)) { + $misc->printMsg($lang['strnoinfo']); + } + else { + // Referring foreign tables + if ($referrers !== -99 && $referrers->recordCount() > 0) { + echo "

{$lang['strreferringtables']}

\n"; + + $columns = array ( + 'schema' => array ( + 'title' => $lang['strschema'], + 'field' => field('nspname') + ), + 'table' => array ( + 'title' => $lang['strtable'], + 'field' => field('relname'), + ), + 'name' => array ( + 'title' => $lang['strname'], + 'field' => field('conname'), + ), + 'definition' => array ( + 'title' => $lang['strdefinition'], + 'field' => field('consrc'), + ), + 'actions' => array ( + 'title' => $lang['stractions'], + ) + ); + + $actions = array ( + 'properties' => array ( + 'content' => $lang['strproperties'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'constraints.php', + 'urlvars' => array ( + 'schema' => field('nspname'), + 'table' => field('relname') + ) + ) + ) + ) + ); + + $misc->printTable($referrers, $columns, $actions, 'info-referrers', $lang['strnodata']); + } + + // Parent tables + if ($parents->recordCount() > 0) { + echo "

{$lang['strparenttables']}

\n"; + + $columns = array ( + 'schema' => array ( + 'title' => $lang['strschema'], + 'field' => field('nspname') + ), + 'table' => array ( + 'title' => $lang['strtable'], + 'field' => field('relname'), + ), + 'actions' => array ( + 'title' => $lang['stractions'], + ) + ); + + $actions = array ( + 'properties' => array ( + 'content' => $lang['strproperties'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'tblproperties.php', + 'urlvars' => array ( + 'schema' => field('nspname'), + 'table' => field('relname') + ) + ) + ) + ) + ); + + $misc->printTable($parents, $columns, $actions, 'info-parents', $lang['strnodata']); + } + + // Child tables + if ($children->recordCount() > 0) { + echo "

{$lang['strchildtables']}

\n"; + + $columns = array ( + 'schema' => array ( + 'title' => $lang['strschema'], + 'field' => field('nspname') + ), + 'table' => array ( + 'title' => $lang['strtable'], + 'field' => field('relname'), + ), + 'actions' => array ( + 'title' => $lang['stractions'], + ) + ); + + $actions = array ( + 'properties' => array ( + 'content' => $lang['strproperties'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'tblproperties.php', + 'urlvars' => array ( + 'schema' => field('nspname'), + 'table' => field('relname') + ) + ) + ) + ) + ); + + $misc->printTable($children, $columns, $actions, 'info-children', $lang['strnodata']); + + } + + // Row performance + if ($tablestatstups->recordCount() > 0) { + echo "

{$lang['strrowperf']}

\n"; + + echo "\n"; + echo "\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\n"; + echo "\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\n"; + $i = 0; + + while (!$tablestatstups->EOF) { + $id = ( ($i % 2 ) == 0 ? '1' : '2' ); + echo "\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\n"; + $tablestatstups->movenext(); + $i++; + } + + echo "
{$lang['strsequential']}{$lang['strindex']}{$lang['strrows2']}
{$lang['strscan']}{$lang['strread']}{$lang['strscan']}{$lang['strfetch']}{$lang['strinsert']}{$lang['strupdate']}{$lang['strdelete']}
", $misc->printVal($tablestatstups->fields['seq_scan'], 'int4', $shownull), "", $misc->printVal($tablestatstups->fields['seq_tup_read'], 'int4', $shownull), "", $misc->printVal($tablestatstups->fields['idx_scan'], 'int4', $shownull), "", $misc->printVal($tablestatstups->fields['idx_tup_fetch'], 'int4', $shownull), "", $misc->printVal($tablestatstups->fields['n_tup_ins'], 'int4', $shownull), "", $misc->printVal($tablestatstups->fields['n_tup_upd'], 'int4', $shownull), "", $misc->printVal($tablestatstups->fields['n_tup_del'], 'int4', $shownull), "
\n"; + } + + // I/O performance + if ($tablestatsio->recordCount() > 0) { + echo "

{$lang['strioperf']}

\n"; + + echo "\n"; + echo "\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\n"; + echo "\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\n"; + $i = 0; + + while (!$tablestatsio->EOF) { + $id = ( ($i % 2 ) == 0 ? '1' : '2' ); + echo "\t\n"; + + $total = $tablestatsio->fields['heap_blks_hit'] + $tablestatsio->fields['heap_blks_read']; + if ($total > 0) $percentage = round(($tablestatsio->fields['heap_blks_hit'] / $total) * 100); + else $percentage = 0; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + + $total = $tablestatsio->fields['idx_blks_hit'] + $tablestatsio->fields['idx_blks_read']; + if ($total > 0) $percentage = round(($tablestatsio->fields['idx_blks_hit'] / $total) * 100); + else $percentage = 0; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + + $total = $tablestatsio->fields['toast_blks_hit'] + $tablestatsio->fields['toast_blks_read']; + if ($total > 0) $percentage = round(($tablestatsio->fields['toast_blks_hit'] / $total) * 100); + else $percentage = 0; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + + $total = $tablestatsio->fields['tidx_blks_hit'] + $tablestatsio->fields['tidx_blks_read']; + if ($total > 0) $percentage = round(($tablestatsio->fields['tidx_blks_hit'] / $total) * 100); + else $percentage = 0; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\n"; + $tablestatsio->movenext(); + $i++; + } + + echo "
{$lang['strheap']}{$lang['strindex']}{$lang['strtoast']}{$lang['strtoastindex']}
{$lang['strdisk']}{$lang['strcache']}{$lang['strpercent']}{$lang['strdisk']}{$lang['strcache']}{$lang['strpercent']}{$lang['strdisk']}{$lang['strcache']}{$lang['strpercent']}{$lang['strdisk']}{$lang['strcache']}{$lang['strpercent']}
", $misc->printVal($tablestatsio->fields['heap_blks_read'], 'int4', $shownull), "", $misc->printVal($tablestatsio->fields['heap_blks_hit'], 'int4', $shownull), "({$percentage}{$lang['strpercent']})", $misc->printVal($tablestatsio->fields['idx_blks_read'], 'int4', $shownull), "", $misc->printVal($tablestatsio->fields['idx_blks_hit'], 'int4', $shownull), "({$percentage}{$lang['strpercent']})", $misc->printVal($tablestatsio->fields['toast_blks_read'], 'int4', $shownull), "", $misc->printVal($tablestatsio->fields['toast_blks_hit'], 'int4', $shownull), "({$percentage}{$lang['strpercent']})", $misc->printVal($tablestatsio->fields['tidx_blks_read'], 'int4', $shownull), "", $misc->printVal($tablestatsio->fields['tidx_blks_hit'], 'int4', $shownull), "({$percentage}{$lang['strpercent']})
\n"; + } + + // Index row performance + if ($indexstatstups->recordCount() > 0) { + echo "

{$lang['stridxrowperf']}

\n"; + + echo "\n"; + echo "\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\n"; + $i = 0; + + while (!$indexstatstups->EOF) { + $id = ( ($i % 2 ) == 0 ? '1' : '2' ); + echo "\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\n"; + $indexstatstups->movenext(); + $i++; + } + + echo "
{$lang['strindex']}{$lang['strscan']}{$lang['strread']}{$lang['strfetch']}
", $misc->printVal($indexstatstups->fields['indexrelname']), "", $misc->printVal($indexstatstups->fields['idx_scan'], 'int4', $shownull), "", $misc->printVal($indexstatstups->fields['idx_tup_read'], 'int4', $shownull), "", $misc->printVal($indexstatstups->fields['idx_tup_fetch'], 'int4', $shownull), "
\n"; + } + + // Index I/0 performance + if ($indexstatsio->recordCount() > 0) { + echo "

{$lang['stridxioperf']}

\n"; + + echo "\n"; + echo "\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\n"; + $i = 0; + + while (!$indexstatsio->EOF) { + $id = ( ($i % 2 ) == 0 ? '1' : '2' ); + echo "\t\n"; + $total = $indexstatsio->fields['idx_blks_hit'] + $indexstatsio->fields['idx_blks_read']; + if ($total > 0) $percentage = round(($indexstatsio->fields['idx_blks_hit'] / $total) * 100); + else $percentage = 0; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\n"; + $indexstatsio->movenext(); + $i++; + } + + echo "
{$lang['strindex']}{$lang['strdisk']}{$lang['strcache']}{$lang['strpercent']}
", $misc->printVal($indexstatsio->fields['indexrelname']), "", $misc->printVal($indexstatsio->fields['idx_blks_read'], 'int4', $shownull), "", $misc->printVal($indexstatsio->fields['idx_blks_hit'], 'int4', $shownull), "({$percentage}{$lang['strpercent']})
\n"; + } + } + } + + $misc->printHeader($lang['strtables'] . ' - ' . $_REQUEST['table'] . ' - ' . $lang['strinfo']); + $misc->printBody(); + + switch ($action) { + default: + doDefault(); + break; + } + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/intro.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/intro.php new file mode 100644 index 00000000..e95916d2 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/intro.php @@ -0,0 +1,70 @@ +printHeader(); + $misc->printBody(); + + $misc->printTrail('root'); + $misc->printTabs('root','intro'); +?> + +

+ +
+ + + + + + + + + +
+ +
+ +
+ +
+ +

+ +
    +
  • +
  • +
  • +
  • +
+ +printFooter(); +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/js/ac_insert_row.js b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/js/ac_insert_row.js new file mode 100644 index 00000000..1101a99d --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/js/ac_insert_row.js @@ -0,0 +1,229 @@ +var fkl_hasnext=false; +var fkl_hasprev=false; + +/* hide the value list */ +function hideAc() { + jQuery.ppa.o=0; + with (jQuery.ppa) { + fklist.hide(); + fkbg.hide(); + } +} + +/* enable/disable auto-complete feature */ +function triggerAc(ac) { + if (ac) { + jQuery.ppa.attrs + .bind('keyup.ac_action', autocomplete) + .bind('focus.ac_action', autocomplete) + .bind('keypress.ac_action', move) + .addClass('ac_field'); + } + else { + jQuery.ppa.attrs + .removeClass('ac_field') + .unbind('.ac_action'); + } +} + +/* select the given index value and highlight it */ +function selectVal(index) { + if (index == jQuery.ppa.i) + return; + + // we catch the header as well so it takes th index 0 + var trs = jQuery.ppa.fklist.find('tr'); + + // change colors for unselected + if (jQuery.ppa.i > 0) + trs.eq(jQuery.ppa.i).find('*').css({ + 'background-color': '#fff', + 'color': '' + }); + + // change colors for newly selected + trs.eq(index).find('*').css({ + 'background-color': '#3d80df', + 'color': '#fff' + }); + + jQuery.ppa.i = index; +} + +function openlist(e) { + var elt = jQuery(e); + var attnum = elt.attr('id').match(/\d+/)[0]; + /* FIXME we only support the first FK constraint of the field */ + var conid = attrs['attr_'+attnum][0]; + + var constr = constrs["constr_" + conid]; + + // get the changed attribute position in the arrays + for (i=0; (constr.pattnums[i] != attnum);i++); + + var datas = { + fattpos: i, + fvalue: e.value, + database: database, + 'keys[]': constr.pattnums, + 'keynames[]': constr.pattnames, + 'fkeynames[]': constr.fattnames, + f_table: constr.f_table, + f_schema: constr.f_schema, + offset: jQuery.ppa.o + }; + + jQuery.ajax({ + url: 'ajax-ac-insert.php?server=' + server, + type: 'post', + data: datas, + dataType: 'html', + cache: false, + contentType: 'application/x-www-form-urlencoded', + success: function (ret) { + jQuery.ppa.i = 0; + jQuery.ppa.fkbg.show(); + with(jQuery.ppa.fklist) { + html(ret); + appendTo('#row_att_'+ attnum); + css('width',elt.css('width')); + show(); + jQuery.ppa.numrow = find('tr').length; + } + } + }); +} + + +/* move the cursor down or up, + * load available next/prev values if going out of bound */ +function move(event) { + /* selecting next value down. + * if the list is closed, it will open next */ + if(event.keyCode == 40) { + if (jQuery.ppa.fklist[0].style.display == 'block') { + if ((jQuery.ppa.i + 1) < jQuery.ppa.numrow) { + selectVal(jQuery.ppa.i + 1); + } + else if (fkl_hasnext == true) { + jQuery.ppa.o+=11; + openlist(this); + } + } + else { + openlist(this); + } + } + /* selecting prev value up */ + else if(event.keyCode == 38) { + if ((jQuery.ppa.i - 1) > 0) { + selectVal(jQuery.ppa.i - 1); + } + else if ((fkl_hasprev == true) && (jQuery.ppa.i == 1)) { + jQuery.ppa.o-=11; + openlist(this); + } + else { + selectVal(jQuery.ppa.numrow -1); + } + } +} + +/* open/update the value list */ +function autocomplete(event) { + + /* if pressing enter, fire a click on the selected line */ + if (event.keyCode == 13) { + if (jQuery.ppa.i > 0) { + jQuery.ppa.fklist.find('tr').eq(jQuery.ppa.i).click(); + } + return false; + } + /* ignoring 38:up and 40:down */ + else if ( event.keyCode == 38 || event.keyCode == 40 ) { + return false; + } + /* ignoring 9:tab, 37:left, 39:right, 16:shift, ctrl: 17, alt:18, 20:lockmaj */ + else if ( event.keyCode == 9 || event.keyCode == 37 || event.keyCode == 39 + || event.keyCode == 16 || event.keyCode == 17 + || event.keyCode == 18 || event.keyCode == 20) { + return true; + } + /* esc */ + else if (event.keyCode == 27) { + hideAc(); + } + /* request the list of possible values asynchronously */ + else { + /* if we refresh because of a value update, + * we reset back to offset 0 so we catch values + * if list is smaller than 11 values */ + if (event.type == 'keyup') + jQuery.ppa.o = 0; + openlist(this); + } + + return true; +} + +/* bind actions on values lines: hover for style change, click for select */ +with(jQuery('tr.acline')) { + live('mouseover', function () { + selectVal(jQuery('table.ac_values tr').index(this)); + }); + + live('click', function () { + var a = jQuery(this).find('td > a.fkval'); + + for (i=0; i < a.length; i++) { + jQuery('input[name="values['+ a[i].name +']"]').val(jQuery(a[i]).text()); + } + hideAc(); + }); +} + +jQuery('#fkprev').live('click', function () { + jQuery.ppa.o -= 11; + /* get the field that is the previous html elt from the #fklist + * and trigger its focus to refresh the list AND actualy + * focus back on the field */ + jQuery('#fklist').prev().focus(); +}); + +jQuery('#fknext').live('click', function () { + jQuery.ppa.o += 11; + /* get the field that is the previous html elt from the #fklist + * and trigger its focus to refresh the list AND actualy + * focus back on the field*/ + jQuery('#fklist').prev().focus(); +}); + +jQuery(document).ready(function () { + /* register some global value in the ppa namespace */ + jQuery.ppa = { + fklist: jQuery('#fklist'), + attrs: jQuery('input[id^=attr_]'), // select fields with FK + fkbg: jQuery('#fkbg'), + i:0, // selected value indice + o:0 // offset when navigating prev/next + }; + + /* close the list when clicking outside of it */ + jQuery.ppa.fkbg.click(function (e) { + hideAc(); + }); + + /* do not submit the form when selecting a value by pressing enter */ + jQuery.ppa.attrs + .keydown(function (e) { + if (e.keyCode == 13 && jQuery.ppa.fklist[0].style.display == 'block') + return false; + }); + + /* enable/disable auto-complete according to the checkbox */ + triggerAc( + jQuery('#no_ac').click(function () { + triggerAc(this.checked); + })[0].checked + ); +}); diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/js/database.js b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/js/database.js new file mode 100644 index 00000000..f70f7078 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/js/database.js @@ -0,0 +1,64 @@ +$(document).ready(function() { + + var timeid = query = null; + var controlLink = $('#control'); + var errmsg = $('

'+Database.errmsg+'

') + .insertBefore(controlLink) + .hide(); + var loading = $('[loading]') + .insertAfter(controlLink) + .hide(); + + function refreshTable() { + if (Database.ajax_time_refresh > 0) { + loading.show(); + query = $.ajax({ + type: 'GET', + dataType: 'html', + data: {server: Database.server, database: Database.dbname, action: Database.action}, + url: 'database.php', + cache: false, + contentType: 'application/x-www-form-urlencoded', + success: function(html) { + $('#data_block').html(html); + timeid = window.setTimeout(refreshTable, Database.ajax_time_refresh) + }, + error: function() { + controlLink.click(); + errmsg.show(); + }, + complete: function () { + loading.hide(); + } + }); + } + } + + controlLink.toggle( + function() { + $(errmsg).hide(); + timeid = window.setTimeout(refreshTable, Database.ajax_time_refresh); + controlLink.html(' ' + + Database.str_stop.text + '   ' + ); + }, + function() { + $(errmsg).hide(); + $(loading).hide(); + window.clearInterval(timeid); + if (query) query.abort(); + controlLink.html(' ' + + Database.str_start.text + ); + } + ); + + /* preload images */ + $('#control img').hide() + .attr('src', Database.str_start.icon) + .attr('src', Database.str_stop.icon) + .show(); + + /* start refreshing */ + controlLink.click(); +}); diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/js/display.js b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/js/display.js new file mode 100644 index 00000000..bac28ecb --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/js/display.js @@ -0,0 +1,90 @@ +$(document).ready(function() { + + /* init some needed tags and values */ + + $('table#data').wrap('
'); + $('#fkcontainer').append('
'); + + jQuery.ppa = { + root: $('#root') + }; + + $("a.fk").live('click', function (event) { + /* make the cursor being a waiting cursor */ + $('body').css('cursor','wait'); + + query = $.ajax({ + type: 'GET', + dataType: 'html', + data: {action:'dobrowsefk'}, + url: $(this).attr('href'), + cache: false, + context: $(this), + contentType: 'application/x-www-form-urlencoded', + success: function(answer) { + pdiv = this.closest('div.fk'); + divclass = this.attr('class').split(' ')[1]; + + /* if we are clicking on a FK from the original table + (level 0), we are using the #root div as parent-div */ + if (pdiv[0].id == 'fkcontainer') { + /* computing top position, which is the topid as well */ + var top = this.position().top + 2 + this.height(); + /* if the requested top position is different than + the previous topid position of #root, empty and position it */ + if (top != jQuery.ppa.root.topid) + jQuery.ppa.root.empty() + .css({ + left: (pdiv.position().left) +'px', + top: top + 'px' + }) + /* this "topid" allows to track if we are + opening a FK from the same line in the original table */ + .topid = top; + + pdiv = jQuery.ppa.root; + + /* Remove equal rows in the root div */ + jQuery.ppa.root.children('.'+divclass).remove(); + } + else { + /* Remove equal rows in the pdiv */ + pdiv.children('div.'+divclass).remove(); + } + + /* creating the data div */ + newdiv = $('
').html(answer); + + /* highlight referencing fields */ + newdiv.data('ref', this).data('refclass', $(this).attr('class').split(' ')[1]) + .mouseenter(function (event) { + $(this).data('ref').closest('tr').find('a.'+$(this).data('refclass')).closest('div').addClass('highlight'); + }) + .mouseleave(function (event) { + $(this).data('ref').closest('tr').find('a.'+$(this).data('refclass')).closest('div').removeClass('highlight'); + }); + + /* appending it to the level-1 div */ + pdiv.append(newdiv); + }, + + error: function() { + this.closest('div.fk').append('

'+Display.errmsg+'

'); + }, + + complete: function () { + $('body').css('cursor','auto'); + } + }); + + return false; // do not refresh the page + }); + + $(".fk_delete").live('click', function (event) { + with($(this).closest('div')) { + data('ref').closest('tr').find('a.'+data('refclass')).closest('div').removeClass('highlight'); + remove(); + } + return false; // do not refresh the page + }); +}); diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/README b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/README new file mode 100644 index 00000000..a93cab61 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/README @@ -0,0 +1,14 @@ +Translators +----------- + +Please read the TRANSLATORS file in the top directory. + +To check your translation: + +cd lang +php langcheck (eg. 'french'); + +To synchronize your translation with english.php: + +cd lang +./synch (eg. 'polish'); diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/afrikaans.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/afrikaans.php new file mode 100644 index 00000000..30f3e478 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/afrikaans.php @@ -0,0 +1,621 @@ +>'; + $lang['strfailed'] = 'Het misluk'; + $lang['strcreate'] = 'Skep'; + $lang['strcreated'] = 'Geskep'; + $lang['strcomment'] = 'Kommentaar'; + $lang['strlength'] = 'Lengte'; + $lang['strdefault'] = 'Standaard'; + $lang['stralter'] = 'Wysig'; + $lang['strok'] = 'OK'; + $lang['strcancel'] = 'Kanselleer'; + $lang['strsave'] = 'Bewaar'; + $lang['strreset'] = 'Herstel'; + $lang['strinsert'] = 'Voeg in'; + $lang['strselect'] = 'Selekteer'; + $lang['strdelete'] = 'Verwyder'; + $lang['strupdate'] = 'Verfris'; + $lang['strreferences'] = 'Verwysings'; + $lang['stryes'] = 'Ja'; + $lang['strno'] = 'Nee'; + $lang['strtrue'] = 'WAAR'; + $lang['strfalse'] = 'VALS'; + $lang['stredit'] = 'Redigeer'; + $lang['strcolumn'] = 'Kolom'; + $lang['strcolumns'] = 'Kolomme'; + $lang['strrows'] = 'ry(e)'; + $lang['strrowsaff'] = 'ry(e) het verander.'; + $lang['strobjects'] = 'objek(te)'; + $lang['strback'] = 'Terug'; + $lang['strqueryresults'] = 'Navraagresultate'; + $lang['strshow'] = 'Wys'; + $lang['strempty'] = 'Leeg'; + $lang['strlanguage'] = 'Taal'; + $lang['strencoding'] = 'Enkodering'; + $lang['strvalue'] = 'Waarde'; + $lang['strunique'] = 'Uniek'; + $lang['strprimary'] = 'PrimΓͺr'; + $lang['strexport'] = 'Eksporteer'; + $lang['strimport'] = 'Importeer'; + $lang['strsql'] = 'SQL'; + $lang['stradmin'] = 'Admin'; + $lang['strvacuum'] = 'Stofsuig'; + $lang['stranalyze'] = 'Analiseer'; + $lang['strcluster'] = 'Kluster'; + $lang['strclustered'] = 'In klusters?'; + $lang['strreindex'] = 'Herindekseer'; + $lang['strrun'] = 'Loop'; + $lang['stradd'] = 'Voeg by'; + $lang['strevent'] = 'Gebeurtenis'; + $lang['strwhere'] = 'Waar'; + $lang['strinstead'] = 'Doen eerder'; + $lang['strwhen'] = 'Wanneer'; + $lang['strformat'] = 'Formaat'; + $lang['strdata'] = 'Data'; + $lang['strconfirm'] = 'Bevestig'; + $lang['strexpression'] = 'Uitdrukking'; + $lang['strellipsis'] = '...'; + $lang['strseparator'] = ': '; + $lang['strexpand'] = 'Vou oop'; + $lang['strcollapse'] = 'Vou toe'; + $lang['strexplain'] = 'Verduidelik'; + $lang['strexplainanalyze'] = 'Verduidelik Analise'; + $lang['strfind'] = 'Soek'; + $lang['stroptions'] = 'Opsies'; + $lang['strrefresh'] = 'Verfris'; + $lang['strdownload'] = 'Laai af'; + $lang['strdownloadgzipped'] = 'Laai af ... saamgepers met gzip'; + $lang['strinfo'] = 'Info'; + $lang['stroids'] = 'OIDs'; + $lang['stradvanced'] = 'Gevorderd'; + $lang['strvariables'] = 'Veranderlikes'; + $lang['strprocess'] = 'Proses'; + $lang['strprocesses'] = 'Prosesse'; + $lang['strsetting'] = 'Instelling'; + $lang['streditsql'] = 'Redigeer SQL'; + $lang['strruntime'] = 'Totale looptyd: %s ms'; + $lang['strpaginate'] = 'Resultate per bladsy'; + $lang['struploadscript'] = 'of laai \'n SQL skrip in:'; + $lang['strstarttime'] = 'Begintyd'; + $lang['strfile'] = 'LΓͺer'; + $lang['strfileimported'] = 'LΓͺer is ingetrek.'; + + // Error handling + $lang['strnoframes'] = 'Hierdie toepassing maak gebruik van HTML-rame. U het \'n blaaier nodig wat rame ondersteun om hierdie toepassing te kan gebruik. '; + $lang['strbadconfig'] = 'Die lΓͺer config.inc.php is verouderd. Jy kan verbeterde weergawe aflei van die lΓͺer config.inc.php-dist.'; + $lang['strnotloaded'] = 'Hierdie PHP-installasie is sonder ondersteuning van hierdie tipe database nie gekompileerd.'; + $lang['strpostgresqlversionnotsupported'] = 'Weergawe van PostgreSQL word nie ondersteun nie. Probeer asb. weergawe %s of later.'; + $lang['strbadschema'] = 'Ongeldige skema gespesifiseer.'; + $lang['strbadencoding'] = 'Die kliΓ«ntenkodering kon nie in die databasis geplaas word nie.'; + $lang['strsqlerror'] = 'SQL-fout:'; + $lang['strinstatement'] = 'In stelling:'; + $lang['strinvalidparam'] = 'Ongeldige parameters.'; + $lang['strnodata'] = 'Geen rye gevind.'; + $lang['strnoobjects'] = 'Geen objekte gevind.'; + $lang['strrownotunique'] = 'Geen unieke identifiseerder vir hierdie ry.'; + $lang['strnouploads'] = 'Oplaaiing van lΓͺers is afgeskakel.'; + $lang['strimporterror'] = 'Inleesfout.'; + $lang['strimporterrorline'] = 'Inleesfout op reΓ«l %s.'; + $lang['strcannotdumponwindows'] = 'Weergee van komplekse tabel- en skemaname word nie op Windows ondersteun nie. Kyk asb. in die FAQ.'; + + // Tables + $lang['strtable'] = 'Tabel'; + $lang['strtables'] = 'Tabelle'; + $lang['strshowalltables'] = 'Wys alle tabelle'; + $lang['strnotables'] = 'Geen tabelle gevind.'; + $lang['strnotable'] = 'Geen tabel gevind.'; + $lang['strcreatetable'] = 'Skep tabel'; + $lang['strtablename'] = 'Tabelnaam'; + $lang['strtableneedsname'] = 'Jy moet die tabel \'n naam gee.'; + $lang['strtableneedsfield'] = 'Jy moet ten minste een veld spesifiseer.'; + $lang['strtableneedscols'] = 'Jy moet die tabel \'n geldige aantal kolomme gee.'; + $lang['strtablecreated'] = 'Tabel geskep.'; + $lang['strtablecreatedbad'] = 'Die tabel kon nie geskep word nie.'; + $lang['strconfdroptable'] = 'Is jy seker dat dat jy die tabel "%s" wil verwyder?'; + $lang['strtabledropped'] = 'Tabel is verwyder.'; + $lang['strtabledroppedbad'] = 'Die tabel kon nie verwyder word nie.'; + $lang['strconfemptytable'] = 'Is jy seker dat jy alle rye uit tabel "%s" wil verwyder?'; + $lang['strtableemptied'] = 'Alle ryen is uit die tabel verwyder.'; + $lang['strtableemptiedbad'] = 'Die rye kon nie verwyder word nie.'; + $lang['strinsertrow'] = 'Voeg \'n ry by'; + $lang['strrowinserted'] = 'Ry is bygevoeg.'; + $lang['strrowinsertedbad'] = 'Die ry kon nie bygevoeg word nie.'; + $lang['streditrow'] = 'Wysig ry'; + $lang['strrowupdated'] = 'Ry is opgedateer.'; + $lang['strrowupdatedbad'] = 'Die opdatering van die ry het misluk.'; + $lang['strdeleterow'] = 'Verwyder ry'; + $lang['strconfdeleterow'] = 'Is jy seker dat jy hierdie ry wil verwyder?'; + $lang['strrowdeleted'] = 'Ry is verwyder.'; + $lang['strrowdeletedbad'] = 'Die ry kon nie verwyder word nie.'; + $lang['strinsertandrepeat'] = 'Voeg in & Herhaal'; + $lang['strnumcols'] = 'Aantal kolomme'; + $lang['strcolneedsname'] = 'Jy moet die kolom \'n naam gee'; + $lang['strselectallfields'] = 'Selekteer alle velde'; + $lang['strselectneedscol'] = 'Jy moet ten minste één kolom as uitvoer hΓͺ'; + $lang['strselectunary'] = 'UnΓͺre operatore kan nie waardes kry nie.'; + $lang['straltercolumn'] = 'Wysig kolom'; + $lang['strcolumnaltered'] = 'Kolom is gewysig.'; + $lang['strcolumnalteredbad'] = 'Die kolom kon nie gewysig word nie.'; + $lang['strconfdropcolumn'] = 'Is jy seker dat jy die kolom "%s" wil verwyder uit tabel "%s"?'; + $lang['strcolumndropped'] = 'Kolom is verwyder.'; + $lang['strcolumndroppedbad'] = 'Die kolom kon nie verwyder word nie.'; + $lang['straddcolumn'] = 'Voeg kolom by'; + $lang['strcolumnadded'] = 'Kolom is bygevoeg.'; + $lang['strcolumnaddedbad'] = 'Die kolom kon nie bygevoeg word nie.'; + $lang['strcascade'] = 'CASCADE'; + $lang['strtablealtered'] = 'Tabel is gewysig.'; + $lang['strtablealteredbad'] = 'Tabelwysiging het misluk.'; + $lang['strdataonly'] = 'Slegs data'; + $lang['strstructureonly'] = 'Slegs struktuur'; + $lang['strstructureanddata'] = 'Struktuur en data'; + $lang['strtabbed'] = 'Tabbed'; + $lang['strauto'] = 'Auto'; + $lang['strconfvacuumtable'] = 'Is jy seker jy wil VACUUM "%s"?'; + $lang['strestimatedrowcount'] = 'Geskatte aantal rye'; + + // Users + $lang['struser'] = 'Gebruiker'; + $lang['strusers'] = 'Gebruikers'; + $lang['strusername'] = 'Gebruikersnaam'; + $lang['strpassword'] = 'Wagwoord'; + $lang['strsuper'] = 'Supergebruiker?'; + $lang['strcreatedb'] = 'Skep DB?'; + $lang['strexpires'] = 'Verval'; + $lang['strsessiondefaults'] = 'Verstekwaardes van sessie'; + $lang['strnousers'] = 'Geen gebruikers gevind.'; + $lang['struserupdated'] = 'Gebruiker is opgedateer.'; + $lang['struserupdatedbad'] = 'Gebruiker kon nie opgedateer word nie.'; + $lang['strshowallusers'] = 'Wys alle gebruikers'; + $lang['strcreateuser'] = 'Skep gebruiker'; + $lang['struserneedsname'] = 'Jy moet \'n naam gee vir die gebruiker.'; + $lang['strusercreated'] = 'Gebruiker geskep.'; + $lang['strusercreatedbad'] = 'Die gebruiker kon nie geskep word nie.'; + $lang['strconfdropuser'] = 'Is jy seker dat jy die gebruiker "%s" wil verwyder?'; + $lang['struserdropped'] = 'Gebruiker is verwyder.'; + $lang['struserdroppedbad'] = 'Verwydering van die gebruiker het misluk.'; + $lang['straccount'] = 'Gebruiker'; + $lang['strchangepassword'] = 'Verander wagwoord'; + $lang['strpasswordchanged'] = 'Wagwoord is verander.'; + $lang['strpasswordchangedbad'] = 'Wagwoordverandering het misluk.'; + $lang['strpasswordshort'] = 'Wagwoord is te kort.'; + $lang['strpasswordconfirm'] = 'Wagwoord verskil van bevestigings-wagwoord.'; + + // Groups + $lang['strgroup'] = 'Groep'; + $lang['strgroups'] = 'Groepe'; + $lang['strnogroup'] = 'Groep nie gevind.'; + $lang['strnogroups'] = 'Geen groepe gevind.'; + $lang['strcreategroup'] = 'Skep groep'; + $lang['strshowallgroups'] = 'Wys alle groepe'; + $lang['strgroupneedsname'] = 'Jy moet die groep \'n naam gee.'; + $lang['strgroupcreated'] = 'Groep geskep.'; + $lang['strgroupcreatedbad'] = 'Die groep kon nie geskep word nie.'; + $lang['strconfdropgroup'] = 'Is jy seker dat jy die groep "%s" wil verwyder?'; + $lang['strgroupdropped'] = 'Groep is verwyder.'; + $lang['strgroupdroppedbad'] = 'Verwydering van die groep het misluk.'; + $lang['strmembers'] = 'Lede'; + $lang['straddmember'] = 'Voeg \'n groeplid by'; + $lang['strmemberadded'] = 'Groeplid is bygevoeg.'; + $lang['strmemberaddedbad'] = 'Toevoeging van groeplid het misluk.'; + $lang['strdropmember'] = 'Verwyder groeplid'; + $lang['strconfdropmember'] = 'Is jy seker dat jy "%s" uit groep "%s" wil verwyder?'; + $lang['strmemberdropped'] = 'Groeplid is verwyder.'; + $lang['strmemberdroppedbad'] = 'Verwydering van groeplid het misluk.'; + + // Privileges + $lang['strprivilege'] = 'Voorregte'; + $lang['strprivileges'] = 'Voorregte'; + $lang['strnoprivileges'] = 'Hierdie objek het verstekeienaarvoorregte.'; + $lang['strgrant'] = 'Staan toe'; + $lang['strrevoke'] = 'Ontneem'; + $lang['strgranted'] = 'Voorregte is bygevoeg.'; + $lang['strgrantfailed'] = 'Voorregte kon nie bygevoeg word nie.'; + $lang['strgrantbad'] = 'Jy moet minstens een gebruiker of groep en minstens een voorreg aandui.'; + $lang['strgrantor'] = 'Grantor'; + $lang['strasterisk'] = '*'; + + // Databases + $lang['strdatabase'] = 'Databasis'; + $lang['strdatabases'] = 'Databasisse'; + $lang['strshowalldatabases'] = 'Wys alle databasisse'; + $lang['strnodatabase'] = 'Geen databasis gevind.'; + $lang['strnodatabases'] = 'Geen databasis gevind.'; + $lang['strcreatedatabase'] = 'Skep databasis'; + $lang['strdatabasename'] = 'Databasisnaam'; + $lang['strdatabaseneedsname'] = 'Jy moet die databasis \'n naam gee.'; + $lang['strdatabasecreated'] = 'Databasis is geskep.'; + $lang['strdatabasecreatedbad'] = 'Die databasis kon nie geskep word nie.'; + $lang['strconfdropdatabase'] = 'Is jy seker dat jy die databasis "%s" wil verwyder?'; + $lang['strdatabasedropped'] = 'Databasis is verwyder.'; + $lang['strdatabasedroppedbad'] = 'Databasisverwydering het misluk.'; + $lang['strentersql'] = 'Tik hieronder die SQL in wat uitgevoer moet word:'; + $lang['strsqlexecuted'] = 'SQL uitgevoer.'; + $lang['strvacuumgood'] = 'Vacuum-bewerking is klaar.'; + $lang['strvacuumbad'] = 'Vacuum-bewerking het misluk.'; + $lang['stranalyzegood'] = 'Analise is voltooi.'; + $lang['stranalyzebad'] = 'Analise het misluk.'; + $lang['strreindexgood'] = 'Herindeksering is voltooi.'; + $lang['strreindexbad'] = 'Herindeksering het misluk.'; + $lang['strfull'] = 'Volledig'; + $lang['strfreeze'] = 'Vries'; + $lang['strforce'] = 'Forseer'; + $lang['strsignalsent'] = 'Sein gestuur.'; + $lang['strsignalsentbad'] = 'Stuur van sein het misluk.'; + $lang['strallobjects'] = 'Alle objekte'; + + // Views + $lang['strview'] = 'Aansig'; + $lang['strviews'] = 'Aansigte'; + $lang['strshowallviews'] = 'Wys alle aansigte'; + $lang['strnoview'] = 'Geen aansigte gevind.'; + $lang['strnoviews'] = 'Geen aansigte gevind.'; + $lang['strcreateview'] = 'Skep aansig'; + $lang['strviewname'] = 'Aansignaam'; + $lang['strviewneedsname'] = 'Jy moet die aansig \'n naam gee.'; + $lang['strviewneedsdef'] = 'Jy moet die aansig definieer.'; + $lang['strviewneedsfields'] = 'Jy moet sΓͺ watter kolomme gekies moet wees in hierdie aansig.'; + $lang['strviewcreated'] = 'Aansig is geskep.'; + $lang['strviewcreatedbad'] = 'Die aansig kon nie geskep word nie.'; + $lang['strconfdropview'] = 'Is jy seker dat jy die aansig "%s" wil verwyder?'; + $lang['strviewdropped'] = 'Aansig is verwyder.'; + $lang['strviewdroppedbad'] = 'Die aansig kon nie verwyder word nie.'; + $lang['strviewupdated'] = 'Aansig is opgedateer.'; + $lang['strviewupdatedbad'] = 'Opdatering van aansig het misluk.'; + $lang['strviewlink'] = 'Sleutels word verbind'; + $lang['strviewconditions'] = 'Addisionele voorwaardes'; + $lang['strcreateviewwiz'] = 'Skep \'n aansig met behulp van \'n toergids'; + + // Sequences + $lang['strsequence'] = 'Reeks'; + $lang['strsequences'] = 'Reekse'; + $lang['strshowallsequences'] = 'Wys alle reekse'; + $lang['strnosequence'] = 'Geen reeks gevind.'; + $lang['strnosequences'] = 'Geen reekse gevind.'; + $lang['strcreatesequence'] = 'Skep reeks'; + $lang['strlastvalue'] = 'Laaste waarde'; + $lang['strincrementby'] = 'Verhoog met'; + $lang['strstartvalue'] = 'Aanvangswaarde'; + $lang['strmaxvalue'] = 'maks_waarde'; + $lang['strminvalue'] = 'min_waarde'; + $lang['strcachevalue'] = 'Kasgeheue-waarde'; + $lang['strlogcount'] = 'Boekstaaftelling'; + $lang['striscycled'] = 'is_siklies ?'; + $lang['strsequenceneedsname'] = 'Jy moet \'n naam gee vir die reeks.'; + $lang['strsequencecreated'] = 'Reeks is geskep.'; + $lang['strsequencecreatedbad'] = 'Die reeks kon nie geskep word nie.'; + $lang['strconfdropsequence'] = 'Is jy seker dat jy die reeks "%s" wil verwyder?'; + $lang['strsequencedropped'] = 'Reeks is verwyder.'; + $lang['strsequencedroppedbad'] = 'Verwydering van die reeks het misluk.'; + $lang['strsequencereset'] = 'Herstel reeks.'; + $lang['strsequenceresetbad'] = 'Herstel van reeks het misluk.'; + + // Indexes + $lang['strindex'] = 'Indeks'; + $lang['strindexes'] = 'Indekse'; + $lang['strindexname'] = 'Indeksnaam'; + $lang['strshowallindexes'] = 'Wys alle indekse'; + $lang['strnoindex'] = 'Geen indeks gevind.'; + $lang['strnoindexes'] = 'Geen indekse gevind.'; + $lang['strcreateindex'] = 'Skep \'n indeks'; + $lang['strtabname'] = 'Tab-naam'; + $lang['strcolumnname'] = 'Kolomnaam'; + $lang['strindexneedsname'] = 'Jy moet \'n naam gee vir die index.'; + $lang['strindexneedscols'] = 'Indekse moet ten minste uit één kolom bestaan.'; + $lang['strindexcreated'] = 'Indeks is geskep'; + $lang['strindexcreatedbad'] = 'Die indeks kon nie geskep word nie.'; + $lang['strconfdropindex'] = 'Is jy seker dat jy die indeks "%s" wil verwyder?'; + $lang['strindexdropped'] = 'Indeks is verwyder.'; + $lang['strindexdroppedbad'] = 'Verwydering van die indeks het misluk.'; + $lang['strkeyname'] = 'Sleutelnaam'; + $lang['struniquekey'] = 'Unieke sleutel'; + $lang['strprimarykey'] = 'PrimΓͺre sleutel'; + $lang['strindextype'] = 'Tipe van die indeks'; + $lang['strtablecolumnlist'] = 'Kolomme in tabel'; + $lang['strindexcolumnlist'] = 'Kolomme in indeks'; + $lang['strconfcluster'] = 'Is jy seker jy wil \'n kluster maak van "%s"?'; + $lang['strclusteredgood'] = 'Kluster is voltooi.'; + $lang['strclusteredbad'] = 'Kluster het misluk.'; + + // Rules + $lang['strrules'] = 'ReΓ«ls'; + $lang['strrule'] = 'ReΓ«l'; + $lang['strshowallrules'] = 'Wys alle reΓ«ls'; + $lang['strnorule'] = 'Geen reΓ«l gevind.'; + $lang['strnorules'] = 'Geen reΓ«ls gevind.'; + $lang['strcreaterule'] = 'Skep \'n reΓ«l'; + $lang['strrulename'] = 'ReΓ«lnaam'; + $lang['strruleneedsname'] = 'Jy moet \'n naam gee vir die reΓ«l.'; + $lang['strrulecreated'] = 'ReΓ«l is geskep.'; + $lang['strrulecreatedbad'] = 'Die reΓ«l kon nie geskep word nie.'; + $lang['strconfdroprule'] = 'Is jy seker dat jy die reΓ«l "%s" op "%s" wil verwyder?'; + $lang['strruledropped'] = 'ReΓ«l is verwyder.'; + $lang['strruledroppedbad'] = 'Verwydering van die reΓ«l het misluk.'; + + // Constraints + $lang['strconstraints'] = 'Beperkings'; + $lang['strshowallconstraints'] = 'Wys alle beperkings'; + $lang['strnoconstraints'] = 'Geen beperkings gevind.'; + $lang['strcreateconstraint'] = 'Skep beperking'; + $lang['strconstraintcreated'] = 'Beperking is geskep.'; + $lang['strconstraintcreatedbad'] = 'Die beperking kon nie geskep word nie.'; + $lang['strconfdropconstraint'] = 'Is jy seker dat jy die beperking "%s" op "%s" wil verwyder?'; + $lang['strconstraintdropped'] = 'Beperking is verwyder.'; + $lang['strconstraintdroppedbad'] = 'Verwydering van die beperking het misluk.'; + $lang['straddcheck'] = 'Voeg \'n kontrole by'; + $lang['strcheckneedsdefinition'] = 'Kontrolebeperking moet gedefinieer wees.'; + $lang['strcheckadded'] = 'Kontrolebeperking is bygevoeg.'; + $lang['strcheckaddedbad'] = 'Kontrolebeperking kon nie bygevoeg word nie.'; + $lang['straddpk'] = 'Voeg primΓͺre sleutel by'; + $lang['strpkneedscols'] = 'PrimΓͺre sleutel moet minstens één kolom hΓͺ.'; + $lang['strpkadded'] = 'PrimΓͺre sleutel bygevoeg.'; + $lang['strpkaddedbad'] = 'PrimΓͺre sleutel kon nie bygevoeg word nie.'; + $lang['stradduniq'] = 'Voeg unieke sleutel by.'; + $lang['struniqneedscols'] = 'Unieke sleutel moet minstens één kolom hΓͺ.'; + $lang['struniqadded'] = 'Unieke sleutel is bygevoeg.'; + $lang['struniqaddedbad'] = 'Unieke sleutel kon nie bygevoeg word nie.'; + $lang['straddfk'] = 'Voeg vreemdesleutel toe'; + $lang['strfkneedscols'] = 'Vreemdesleutel moet minstens één kolom hΓͺ.'; + $lang['strfkneedstarget'] = 'Vreemdesleutel moet \'n doeltabel hΓͺ.'; + $lang['strfkadded'] = 'Vreemdesleutel is bygevoeg.'; + $lang['strfkaddedbad'] = 'Vreemdesleutel kon nie bygevoeg word nie.'; + $lang['strfktarget'] = 'Doeltabel'; + $lang['strfkcolumnlist'] = 'Kolomme in sleutel'; + $lang['strondelete'] = 'ON DELETE'; + $lang['stronupdate'] = 'ON UPDATE'; + + // Functions + $lang['strfunction'] = 'Funksie'; + $lang['strfunctions'] = 'Funksies'; + $lang['strshowallfunctions'] = 'Wys alle funksies'; + $lang['strnofunction'] = 'Geen funksies gevind.'; + $lang['strnofunctions'] = 'Geen funksies gevind.'; + $lang['strcreateplfunction'] = 'Skep SQL/PL funksie'; + $lang['strcreateinternalfunction'] = 'Skep interne funksie'; + $lang['strcreatecfunction'] = 'Skep C funksie'; + $lang['strfunctionname'] = 'Funksienaam'; + $lang['strreturns'] = 'Gee terug'; + $lang['strarguments'] = 'Argumente'; + $lang['strproglanguage'] = 'Programmeertaal'; + $lang['strfunctionneedsname'] = 'Jy moet die funksie \'n naam gee.'; + $lang['strfunctionneedsdef'] = 'Jy moet die funksie definieer.'; + $lang['strfunctioncreated'] = 'Funksie is geskep.'; + $lang['strfunctioncreatedbad'] = 'Die funksie kon nie geskep word nie.'; + $lang['strconfdropfunction'] = 'Is jy seker dat jy die funksie "%s" wil verwyder?'; + $lang['strfunctiondropped'] = 'Funksie is verwyder.'; + $lang['strfunctiondroppedbad'] = 'Verwydering van die funksie het misluk.'; + $lang['strfunctionupdated'] = 'Funksie is opgedateer.'; + $lang['strfunctionupdatedbad'] = 'Opdatering van die funksie het misluk.'; + $lang['strobjectfile'] = 'ObjeklΓͺer'; + $lang['strlinksymbol'] = 'Skakelsimbool'; + + // Triggers + $lang['strtrigger'] = 'Snellers'; + $lang['strtriggers'] = 'Snellers'; + $lang['strshowalltriggers'] = 'Wys alle snellers'; + $lang['strnotrigger'] = 'Geen sneller gevind.'; + $lang['strnotriggers'] = 'Geen snellers gevind.'; + $lang['strcreatetrigger'] = 'skep trigger'; + $lang['strtriggerneedsname'] = 'Jy moet vir die sneller \'n naam gee.'; + $lang['strtriggerneedsfunc'] = 'Jy moet vir die sneller \'n funksie gee.'; + $lang['strtriggercreated'] = 'Sneller is geskep.'; + $lang['strtriggercreatedbad'] = 'Die sneller kon nie geskep word nie.'; + $lang['strconfdroptrigger'] = 'Is jy seker dat jy die sneller "%s" op "%s" wil verwyder?'; + $lang['strtriggerdropped'] = 'Sneller is verwyder.'; + $lang['strtriggerdroppedbad'] = 'Verwydering van sneller misluk.'; + $lang['strtriggeraltered'] = 'Sneller is gewysig.'; + $lang['strtriggeralteredbad'] = 'Snellerwysiging het misluk.'; + + // Types + $lang['strtype'] = 'Tipe'; + $lang['strtypes'] = 'Tipes'; + $lang['strshowalltypes'] = 'Wys alle tipes'; + $lang['strnotype'] = 'Geen tipe gevind.'; + $lang['strnotypes'] = 'Geen tipes gevind.'; + $lang['strcreatetype'] = 'skep tipe'; + $lang['strcreatecomptype'] = 'Skep saamgestelde tipe'; + $lang['strtypeneedsfield'] = 'Jy moet ten minste een veld spesifiseer.'; + $lang['strtypeneedscols'] = 'Jy \'n geldige aantal velde spesifiseer.'; + $lang['strtypename'] = 'Tipenaam'; + $lang['strinputfn'] = 'Toevoerfunksie'; + $lang['stroutputfn'] = 'Afvoerfunksie'; + $lang['strpassbyval'] = 'Aangestuur per waarde?'; + $lang['stralignment'] = 'Belyning'; + $lang['strelement'] = 'Element'; + $lang['strdelimiter'] = 'Skeidingsteken'; + $lang['strstorage'] = 'Berging'; + $lang['strfield'] = 'Veld'; + $lang['strnumfields'] = 'Aantal velde'; + $lang['strtypeneedsname'] = 'Jy moet die tipe \'n naam gee.'; + $lang['strtypeneedslen'] = 'Jy moet die tipe \'n lengte gee.'; + $lang['strtypecreated'] = 'Tipe geskep'; + $lang['strtypecreatedbad'] = 'Tipeskepping het misluk.'; + $lang['strconfdroptype'] = 'Is jy seker dat jy die tipe \"%s\" wil verwyder?'; + $lang['strtypedropped'] = 'Tipe is verwyder.'; + $lang['strtypedroppedbad'] = 'Verwydering van die tipe het misluk.'; + $lang['strflavor'] = 'Geur'; + $lang['strbasetype'] = 'Basis'; + $lang['strcompositetype'] = 'Saamgestel'; + $lang['strpseudotype'] = 'Pseudo'; + + // Schemas + $lang['strschema'] = 'Skema'; + $lang['strschemas'] = 'Skemas'; + $lang['strshowallschemas'] = 'Wys alle skemas'; + $lang['strnoschema'] = 'Geen skema gevind.'; + $lang['strnoschemas'] = 'Geen skemas gevind.'; + $lang['strcreateschema'] = 'Skep skema'; + $lang['strschemaname'] = 'Skemanaam'; + $lang['strschemaneedsname'] = 'Jy moet \'n naam gee vir die skema.'; + $lang['strschemacreated'] = 'Skema is geskep'; + $lang['strschemacreatedbad'] = 'Die skema kon nie geskep word nie.'; + $lang['strconfdropschema'] = 'Is jy seker dat jy die skema "%s" wil verwyder?'; + $lang['strschemadropped'] = 'Skema is verwyder.'; + $lang['strschemadroppedbad'] = 'Verwydering van die skema het misluk.'; + $lang['strschemaaltered'] = 'Skema is gewysig.'; + $lang['strschemaalteredbad'] = 'Skemawysiging het misluk.'; + $lang['strsearchpath'] = 'Skema-soekpad'; + + // Reports + + // Domains + $lang['strdomain'] = 'Domein'; + $lang['strdomains'] = 'Domeine'; + $lang['strshowalldomains'] = 'Wys alle domeine'; + $lang['strnodomains'] = 'Geen domeine is gevind nie.'; + $lang['strcreatedomain'] = 'Skep domein'; + $lang['strdomaindropped'] = 'Domein is verwyder.'; + $lang['strdomaindroppedbad'] = 'Verwydering van domein het misluk.'; + $lang['strconfdropdomain'] = 'Is jy seker dat jy die domein "%s" wil verwyder?'; + $lang['strdomainneedsname'] = 'Jy moet \'n naam gee vir die domein.'; + $lang['strdomaincreated'] = 'Domein is geskep.'; + $lang['strdomaincreatedbad'] = 'Domeinskepping het misluk.'; + $lang['strdomainaltered'] = 'Domein is gewysig.'; + $lang['strdomainalteredbad'] = 'Wysiging van die domein het misluk.'; + + // Operators + $lang['stroperator'] = 'Operator'; + $lang['stroperators'] = 'Operatore'; + $lang['strshowalloperators'] = 'Wys alle operators'; + $lang['strnooperator'] = 'Geen operator is gevind nie.'; + $lang['strnooperators'] = 'Geen operators is gevind nie.'; + $lang['strcreateoperator'] = 'Skep operator'; + $lang['strleftarg'] = 'Linkerargumenttipe'; + $lang['strrightarg'] = 'Regterargumenttipe'; + $lang['strcommutator'] = 'Kommutator'; + $lang['strnegator'] = 'Negeerder'; + $lang['strrestrict'] = 'Beperk'; + $lang['strjoin'] = 'Join'; + $lang['strhashes'] = 'Hashes'; + $lang['strmerges'] = 'Merges'; + $lang['strleftsort'] = 'Linkssorteer'; + $lang['strrightsort'] = 'Regssorteer'; + $lang['strlessthan'] = 'Kleiner as'; + $lang['strgreaterthan'] = 'Groter as'; + $lang['stroperatorneedsname'] = 'Jy moet \'n naam gee vir die operator.'; + $lang['stroperatorcreated'] = 'Operator is geskep'; + $lang['stroperatorcreatedbad'] = 'Operatorskepping het misluk.'; + $lang['strconfdropoperator'] = 'Is jy seker dat jy die operator "%s" wil verwyder?'; + $lang['stroperatordropped'] = 'Operator is verwyder.'; + $lang['stroperatordroppedbad'] = 'Verwydering van die operator het misluk.'; + + // Casts + $lang['strcasts'] = 'Ekwivalente'; + $lang['strnocasts'] = 'Geen ekwivalente gevind.'; + $lang['strsourcetype'] = 'Brontipe'; + $lang['strtargettype'] = 'Doeltipe'; + $lang['strimplicit'] = 'Implisiet'; + $lang['strinassignment'] = 'Tydens toekenning'; + $lang['strbinarycompat'] = '(BinΓͺr-versoenbaar)'; + + // Conversions + $lang['strconversions'] = 'Omskakelings'; + $lang['strnoconversions'] = 'Geen omskakelings gevind.'; + $lang['strsourceencoding'] = 'Bron-enkodering'; + $lang['strtargetencoding'] = 'Doel-enkodering'; + + // Languages + $lang['strlanguages'] = 'Tale'; + $lang['strnolanguages'] = 'Geen tale gevind.'; + $lang['strtrusted'] = 'Betroubaar'; + + // Info + $lang['strnoinfo'] = 'Geen inligting beskikbaar.'; + $lang['strreferringtables'] = 'Verwysende tabelle'; + $lang['strparenttables'] = 'Parent-tabelle'; + $lang['strchildtables'] = 'Child-tabelle'; + + // Aggregates + $lang['straggregates'] = 'Opsommers'; + $lang['strnoaggregates'] = 'Geen opsommers gevind.'; + $lang['stralltypes'] = '(Alle tipes)'; + + // Operator Classes + $lang['stropclasses'] = 'Operatorklasse'; + $lang['strnoopclasses'] = 'Geen operatorklasse gevind.'; + $lang['straccessmethod'] = 'Toegangmetode'; + + // Stats and performance + $lang['strrowperf'] = 'Ry werkverrigting'; + $lang['strioperf'] = 'T/A werkverrigting'; + $lang['stridxrowperf'] = 'Indekseer-ry werkverrigting'; + $lang['stridxioperf'] = 'Indeks T/A werkverrigting'; + $lang['strpercent'] = '%'; + $lang['strsequential'] = 'Sekwensieel'; + $lang['strscan'] = 'Deursoek'; + $lang['strread'] = 'Lees'; + $lang['strfetch'] = 'Gaan haal'; + $lang['strheap'] = 'Hoop'; + $lang['strtoast'] = 'TOAST'; + $lang['strtoastindex'] = 'TOAST-indeks'; + $lang['strcache'] = 'Kasgeheue'; + $lang['strdisk'] = 'Skyf'; + $lang['strrows2'] = 'Rye'; + + // Tablespaces + $lang['strtablespace'] = 'Tabelruimte'; + $lang['strtablespaces'] = 'Tabelruimtes'; + $lang['strshowalltablespaces'] = 'Wys alle tabelruimtes'; + $lang['strnotablespaces'] = 'Geen tabelruimtes gevind.'; + $lang['strcreatetablespace'] = 'Skep tabelruimte'; + $lang['strlocation'] = 'Plek'; + $lang['strtablespaceneedsname'] = 'Jy moet \'n naam gee vir jou tabelruimte.'; + $lang['strtablespaceneedsloc'] = 'Jy moet \'n gids gee om jou tabelruimte in te skep.'; + $lang['strtablespacecreated'] = 'Tabelruimte geskep.'; + $lang['strtablespacecreatedbad'] = 'Skep van tabelruimte het misluk.'; + $lang['strconfdroptablespace'] = 'Is jy seker jy wil die tabelruimte "%s" uitvee?'; + $lang['strtablespacedropped'] = 'Tabelruimte is uitgevee.'; + $lang['strtablespacedroppedbad'] = 'Uitvee van tabelruimte het misluk.'; + $lang['strtablespacealtered'] = 'Tabelruimte gewysig.'; + $lang['strtablespacealteredbad'] = 'Wysiging van tabelruimte het misluk.'; + + // Miscellaneous + $lang['strtopbar'] = '%s loop op %s:%s -- Jy is aangeteken as gebruiker "%s"'; + $lang['strtimefmt'] = 'jS M, Y g:iA'; + $lang['strhelp'] = 'Hulp'; + $lang['strhelpicon'] = '?'; + +?> + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/arabic.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/arabic.php new file mode 100644 index 00000000..cb0203f5 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/arabic.php @@ -0,0 +1,581 @@ +Ψ§Ω„Ψ³Ψ§Ψ¨Ω‚'; + $lang['strnext'] = '<Ψ§Ω„ΨͺΨ§Ω„ΩŠ'; + $lang['strfirst'] = '>>Ψ§Ω„Ψ£ΩˆΩ„'; + $lang['strlast'] = 'Ψ§Ω„Ψ£Ψير<<'; + $lang['strfailed'] = 'فشـل'; + $lang['strcreate'] = 'Ψ₯Ω†Ψ΄Ψ§Ψ‘'; + $lang['strcreated'] = 'ΨͺΩ… Ψ§Ω„Ψ₯Ω†Ψ΄Ψ§Ψ‘'; + $lang['strcomment'] = 'Ω…Ω„Ψ§Ψ­ΨΈΨ§Ψͺ'; + $lang['strlength'] = 'Ψ·ΩˆΩ„'; + $lang['strdefault'] = 'Ψ§Ω„Ψ₯فΨͺراآي'; + $lang['stralter'] = 'ΨͺΨΉΨ―ΩŠΩ„Alter'; + $lang['strok'] = 'Ω…ΩˆΨ§ΩΩ‚'; + $lang['strcancel'] = 'ΨͺΨ±Ψ§Ψ¬ΨΉ'; + $lang['strsave'] = 'حفظ'; + $lang['strreset'] = 'Ψ₯ΨΉΨ§Ψ―Ψ© Reset'; + $lang['strinsert'] = 'Ψ₯Ψ―Ψ±Ψ§Ψ¬ Insert'; + $lang['strselect'] = 'Ψ₯ΨΨͺيار Select'; + $lang['strdelete'] = 'حذف Delete'; + $lang['strupdate'] = 'ΨͺΨΉΨ―ΩŠΩ„ Update'; + $lang['strreferences'] = 'Ω…Ψ±Ψ§Ψ¬ΨΉ'; + $lang['stryes'] = 'Ω†ΨΉΩ…'; + $lang['strno'] = 'Ω„Ψ§'; + $lang['strtrue'] = 'ءحيح TRUE'; + $lang['strfalse'] = 'ΨΨ§Ψ·Ψ¦ FALSE'; + $lang['stredit'] = 'Ψͺحرير'; + $lang['strcolumns'] = 'Ψ£ΨΉΩ…Ψ―Ψ© Columns'; + $lang['strrows'] = 'Ψ³Ψ¬Ω„/Ψ³Ψ¬Ω„Ψ§Ψͺ'; + $lang['strrowsaff'] = 'Ψ³Ψ¬Ω„ ΨͺΨ£Ψ«Ψ±/Ψ³Ψ¬Ω„Ψ§Ψͺ ΨͺΨ£Ψ«Ψ±Ψͺ'; + $lang['strobjects'] = 'object(s)'; + $lang['strexample'] = 'Ω…Ψ«Ω„Ψ§'; + $lang['strback'] = 'رجوع Ω„Ω„Ψلف'; + $lang['strqueryresults'] = 'Ω†ΨͺΨ§Ψ¦Ψ¬ Ψ§Ω„Ψ₯Ψ³ΨͺΨΉΩ„Ψ§Ω…'; + $lang['strshow'] = 'Ψ§ΨΉΨ±ΨΆ'; + $lang['strempty'] = 'Ψ₯فراغ Empty'; + $lang['strlanguage'] = 'Ψ§Ω„Ω„ΨΊΨ©'; + $lang['strencoding'] = 'Ψ§Ω„Ψ΄ΩŠΩΨ±Ψ© Encoding'; + $lang['strvalue'] = 'Ψ§Ω„Ω‚ΩŠΩ…Ψ© Value'; + $lang['strunique'] = 'فريد Unique'; + $lang['strprimary'] = 'رئيسي Primary'; + $lang['strexport'] = 'Ψͺءدير Export'; + $lang['strimport'] = 'Ψ₯Ψ³Ψͺيراد Import'; + $lang['strsql'] = 'SQL'; + $lang['strgo'] = 'Go'; + $lang['stradmin'] = 'Ψ₯Ψ―Ψ§Ψ±Ψ© Admin'; + $lang['strvacuum'] = 'Vacuum'; + $lang['stranalyze'] = 'Analyze'; + $lang['strclusterindex'] = 'Cluster'; + $lang['strclustered'] = 'Clustered?'; + $lang['strreindex'] = 'Reindex'; + $lang['strrun'] = 'Run'; + $lang['stradd'] = 'Ψ₯آافة'; + $lang['strevent'] = 'Event'; + $lang['strwhere'] = 'Where'; + $lang['strinstead'] = 'Do Instead'; + $lang['strwhen'] = 'When'; + $lang['strformat'] = 'Format'; + $lang['strdata'] = 'Data'; + $lang['strconfirm'] = 'ΨͺΨ£ΩƒΩŠΨ―'; + $lang['strexpression'] = 'Ψͺعبير'; + $lang['strellipsis'] = '...'; + $lang['strseparator'] = ': '; + $lang['strexpand'] = 'Ψ₯فΨͺΨ­'; + $lang['strcollapse'] = 'Ψ³ΩƒΩ‘Ψ±'; + $lang['strexplain'] = 'Explain'; + $lang['strexplainanalyze'] = 'Explain Analyze'; + $lang['strfind'] = 'Ψ¨Ψ­Ψ«'; + $lang['stroptions'] = 'ΨياراΨͺ'; + $lang['strrefresh'] = 'Ψͺحديث Refresh'; + $lang['strdownload'] = 'ΨͺΩ†Ψ²ΩŠΩ„'; + $lang['strdownloadgzipped'] = 'ΨͺΩ†Ψ²ΩŠΩ„ ΨΉΩ„Ω‰ Ψ΄ΩƒΩ„ ملف Ω…ΨΆΨΊΩˆΨ· Ψ¨Ω€ gzip'; + $lang['strinfo'] = 'Info'; + $lang['stroids'] = 'OIDs'; + $lang['stradvanced'] = 'Advanced'; + $lang['strvariables'] = 'Variables'; + $lang['strprocess'] = 'Ψ§Ω„ΨΉΩ…Ω„ΩŠΨ© Process'; + $lang['strprocesses'] = 'Ψ§Ω„ΨΉΩ…Ω„ΩŠΨ§Ψͺ Processes'; + $lang['strsetting'] = 'Setting'; + $lang['streditsql'] = 'Edit SQL'; + $lang['strruntime'] = 'Total runtime: %s ms'; + $lang['strpaginate'] = 'Paginate results'; + $lang['struploadscript'] = 'or upload an SQL script:'; + $lang['strstarttime'] = 'Start Time'; + $lang['strfile'] = 'ملف'; + $lang['strfileimported'] = 'ΨͺΩ… Ψ§Ψ³Ψͺيراد الملف.'; + + // Error handling + $lang['strbadconfig'] = 'Ψ₯Ω† الملف config.inc.php Ψ§Ω„Ψ°ΩŠ Ω„Ψ―ΩŠΩƒ Ψ§Ψ΅Ψ¨Ψ­ Ω‚Ψ―ΩŠΩ…Ψ§. Ψ³ΨͺΨ­ΨͺΨ§Ψ¬ Ψ§Ω„Ω‰ Ψ₯ΨΉΨ§Ψ―Ψ© ΨͺΩˆΩ„ΩŠΨ―Ω‡ Ω…Ω† الملف Ψ§Ω„Ψ¬Ψ―ΩŠΨ― config.inc.php-dist.'; + $lang['strnotloaded'] = 'Ψ₯Ω† Ψ§ΨΉΨ―Ψ§Ψ― PHP Ψ§Ω„Ω…ΩˆΨ¬ΩˆΨ― ΨΉΩ„Ω‰ Ω‡Ψ°Ψ§ Ψ§Ω„ΨΨ§Ψ―Ω… Ω„Ψ§ΨͺΨ―ΨΉΩ… PostgreSQL. ΨͺΨ­ΨͺΨ§Ψ¬ Ψ§Ω„Ω‰ Ψ§ΨΉΨ§Ψ―Ψ© ΨͺثبيΨͺ PHP Ψ¨Ψ₯Ψ³ΨͺΨΨ―Ψ§Ω… Ψ§Ω„Ψيار --with-pgsql configure option.'; + $lang['strpostgresqlversionnotsupported'] = 'Ω‡Ψ°Ψ§ Ψ§Ω„Ψ§Ψ΅Ψ―Ψ§Ψ± Ω…Ω† PostgreSQL غير Ω…Ψ―ΨΉΩˆΩ…. Ψ§Ω„Ψ±Ψ¬Ψ§Ψ‘ Ψ§Ω„ΨͺΨ±Ω‚ΩŠΨ© Ψ§Ω„Ω‰ Ψ§Ω„Ψ₯Ψ΅Ψ―Ψ§Ψ± %s او Ψ£ΨΉΩ„Ω‰.'; + $lang['strbadschema'] = 'Invalid schema specified.'; + $lang['strbadencoding'] = 'Ω„Ω‚Ψ― فشل ΨΆΨ¨Ψ· شيفرة Ψ§Ω„ΨΉΩ…ΩŠΩ„ client encoding في Ω‚Ψ§ΨΉΨ―Ψ© Ψ§Ω„Ψ¨ΩŠΨ§Ω†Ψ§Ψͺ.'; + $lang['strsqlerror'] = 'ΨΨ·Ψ£ SQL:'; + $lang['strinstatement'] = 'في Ψ§Ω„Ψ¬Ω…Ω„Ψ© statement:'; + $lang['strinvalidparam'] = 'Invalid script parameters.'; + $lang['strnodata'] = 'Ω„Ω… Ψͺوجد Ψ³Ψ¬Ω„Ψ§Ψͺ.'; + $lang['strnoobjects'] = 'Ω„Ω… Ψͺوجد ΩƒΨ§Ψ¦Ω†Ψ§Ψͺ.'; + $lang['strrownotunique'] = 'Ω„Ψ§ يوجد معرّف فريد unique identifier في Ω‡Ψ°Ψ§ Ψ§Ω„Ψ³Ψ¬Ω„.'; + $lang['strnouploads'] = 'ΨͺΨ­Ω…ΩŠΩ„ الملفاΨͺ غير مفعّل.'; + $lang['strimporterror'] = 'ΨΨ·Ψ£ في Ψ§Ω„Ψ₯Ψ³Ψͺيراد.'; + $lang['strimporterrorline'] = 'ΨΨ·Ψ£ في Ψ§Ω„Ψ₯Ψ³Ψͺيراد ΨΉΩ†Ψ― Ψ§Ω„Ψ³Ψ·Ψ±: %s.'; + + // Tables + $lang['strtable'] = 'Ψ¬Ψ―ΩˆΩ„ Table'; + $lang['strtables'] = 'Ψ¬Ψ―Ψ§ΩˆΩ„ Tables'; + $lang['strshowalltables'] = 'Ψ£ΨΉΨ±ΨΆ Ψ¬Ω…ΩŠΨΉ Ψ§Ω„Ψ¬Ψ―Ψ§ΩˆΩ„ Tables.'; + $lang['strnotables'] = 'Ω„Ψ§ يوجد Ψ¬Ψ―Ψ§ΩˆΩ„.'; + $lang['strnotable'] = 'Ω„Ψ§ يوجد Ψ¬Ψ―ΩˆΩ„.'; + $lang['strcreatetable'] = 'Ψ₯Ω†Ψ΄Ψ§Ψ‘ Ψ¬Ψ―ΩˆΩ„ Table جديد.'; + $lang['strtablename'] = 'Ψ₯Ψ³Ω… Ψ§Ω„Ψ¬Ψ―ΩˆΩ„'; + $lang['strtableneedsname'] = 'يجب Ψ₯ΨΉΨ·Ψ§Ψ‘ Ψ₯Ψ³Ω… Ω„Ω„Ψ¬Ψ―ΩˆΩ„.'; + $lang['strtableneedsfield'] = 'يجب ΨΉΩ„ΩŠΩƒ Ψͺحديد ΨΉΩ„Ω‰ Ψ§Ω„Ψ£Ω‚Ω„ Ψ­Ω‚Ω„ واحد.'; + $lang['strtableneedscols'] = 'Ψ§Ω„Ψ¬Ψ―Ψ§ΩˆΩ„ ΨͺΨͺΨ·Ω„Ψ¨ ΨΉΨ―Ψ― Ω…Ω‚Ψ¨ΩˆΩ„ Ω…Ω† Ψ§Ω„Ψ£ΨΉΩ…Ψ―Ψ©.'; + $lang['strtablecreated'] = 'Ω„Ω‚Ψ― ΨͺΩ… Ψ₯Ω†Ψ΄Ψ§Ψ‘ Ψ§Ω„Ψ¬Ψ―ΩˆΩ„ Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strtablecreatedbad'] = 'Ω„Ω‚Ψ― فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© Ψ₯Ω†Ψ΄Ψ§Ψ‘ Ψ§Ω„Ψ¬Ψ―ΩˆΩ„.'; + $lang['strconfdroptable'] = 'Ω‡Ω„ Ψ§Ω†Ψͺ Ω…ΨͺΨ£ΩƒΨ― Ψͺريد حذف Ψ§Ω„Ψ¬Ψ―ΩˆΩ„ Ψ¨Ψ₯Ψ³Ω… "%s"؟'; + $lang['strtabledropped'] = 'Ω„Ω‚Ψ― ΨͺΩ… حذف Ψ§Ω„Ψ¬Ψ―ΩˆΩ„.'; + $lang['strtabledroppedbad'] = 'Ω„Ω‚Ψ― فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© حذف Ψ§Ω„Ψ¬Ψ―ΩˆΩ„.'; + $lang['strconfemptytable'] = 'Ω‡Ω„ Ψ§Ω†Ψͺ Ω…ΨͺΨ£ΩƒΨ― Ψͺريد افراغ Ω…Ψ­ΨͺوياΨͺ Ψ§Ω„Ψ¬Ψ―ΩˆΩ„ "%s"؟'; + $lang['strtableemptied'] = 'Ω„Ω‚Ψ― ΨͺΩ… افراغ Ω…Ψ­ΨͺوياΨͺ Ψ§Ω„Ψ¬Ψ―ΩˆΩ„ Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strtableemptiedbad'] = 'Ω„Ω‚Ψ― فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© Ψ₯فراغ Ω…Ψ­ΨͺوياΨͺ Ψ§Ω„Ψ¬Ψ―ΩˆΩ„.'; + $lang['strinsertrow'] = 'Ψ₯Ψ―Ψ±Ψ§Ψ¬ Ψ³Ψ¬Ω„.'; + $lang['strrowinserted'] = 'Ω„Ω‚Ψ― ΨͺΩ… Ψ₯Ψ―Ψ±Ψ§Ψ¬ Ψ§Ω„Ψ³Ψ¬Ω„ Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strrowinsertedbad'] = 'Ω„Ω‚Ψ― فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© Ψ₯Ψ―Ψ±Ψ§Ψ¬ Ψ§Ω„Ψ³Ψ¬Ω„.'; + $lang['streditrow'] = 'Ψͺحرير Ψ§Ω„Ψ³Ψ¬Ω„.'; + $lang['strrowupdated'] = 'ΨͺΩ… ΨͺΨΉΨ―ΩŠΩ„ Ψ§Ω„Ψ³Ψ¬Ω„ Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strrowupdatedbad'] = 'Ω„Ω‚Ψ― فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© ΨͺΨΉΨ―ΩŠΩ„ Ψ§Ω„Ψ³Ψ¬Ω„.'; + $lang['strdeleterow'] = 'Ψ₯حذف Ψ§Ω„Ψ³Ψ¬Ω„.'; + $lang['strconfdeleterow'] = 'Ω‡Ω„ Ψ§Ω†Ψͺ Ω…ΨͺΨ£ΩƒΨ― Ψͺريد حذف Ω‡Ψ°Ψ§ Ψ§Ω„Ψ³Ψ¬Ω„ΨŸ'; + $lang['strrowdeleted'] = 'Ω„Ω‚Ψ― ΨͺΩ… حذف Ψ§Ω„Ψ³Ψ¬Ω„ Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strrowdeletedbad'] = 'Ω„Ω‚Ψ― فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© حذف Ψ§Ω„Ψ³Ψ¬Ω„.'; + $lang['strinsertandrepeat'] = 'Ψ₯Ψ―Ψ±Ψ§Ψ¬ و Ψ₯ΨΉΨ§Ψ―Ψ©'; + $lang['strfield'] = 'Ψ§Ω„Ψ­Ω‚Ω„'; + $lang['strnumfields'] = 'ΨΉΨ―Ψ― Ψ§Ω„Ψ­Ω‚ΩˆΩ„'; + $lang['strselectallfields'] = 'Ψ₯ΨΨͺيار Ψ¬Ω…ΩŠΨΉ Ψ§Ω„Ψ­Ω‚ΩˆΩ„'; + $lang['strselectneedscol'] = 'ΨͺΨ­ΨͺΨ§Ψ¬ ΨΉΨ±ΨΆ ΨΉΩ„Ω‰ Ψ§Ω„Ψ£Ω‚Ω„ ΨΉΩ…ΩˆΨ― واحد.'; + $lang['strselectunary'] = 'Ψ§Ω„ΨΉΩ…Ω„ΩŠΨ§Ψͺ Ψ§Ω„Ψ£Ψ­Ψ§Ψ―ΩŠΨ© Unary operators Ω„Ψ§ ΩŠΩ…ΩƒΩ† Ψ§Ω† ΩŠΩƒΩˆΩ† Ω„Ω‡Ψ§ Ω‚ΩŠΩ….'; + $lang['straltercolumn'] = 'ΨͺΨΉΨ―ΩŠΩ„ Ψ§Ω„ΨΉΩ…ΩˆΨ―'; + $lang['strcolumnaltered'] = 'Ω„Ω‚Ψ― ΨͺΩ… ΨͺΨΉΨ―ΩŠΩ„ Ψ§Ω„ΨΉΩ…ΩˆΨ― Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strcolumnalteredbad'] = 'Ω„Ω‚Ψ― فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© ΨͺΨΉΨ―ΩŠΩ„ Ψ§Ω„ΨΉΩ…ΩˆΨ―.'; + $lang['strconfdropcolumn'] = 'Ω‡Ω„ Ψ§Ω†Ψͺ Ω…ΨͺΨ£ΩƒΨ― Ψͺريد حذف Ψ§Ω„ΨΉΩ…ΩˆΨ― "%s" Ω…Ω† Ψ§Ω„Ψ¬Ψ―ΩˆΩ„ "%s"؟'; + $lang['strcolumndropped'] = 'Ω„Ω‚Ψ― ΨͺΩ… حذف Ψ§Ω„ΨΉΩ…ΩˆΨ― Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strcolumndroppedbad'] = 'Ω„Ω‚Ψ― فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© حذف Ψ§Ω„ΨΉΩ…ΩˆΨ―.'; + $lang['straddcolumn'] = 'Ψ₯آافة ΨΉΩ…ΩˆΨ―.'; + $lang['strcolumnadded'] = 'Ω„Ω‚Ψ― ΨͺΩ…Ψͺ Ψ₯آافة Ψ§Ω„ΨΉΩ…ΩˆΨ― Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strcolumnaddedbad'] = 'Ω„Ω‚Ψ― فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© Ψ₯آافة Ψ§Ω„ΨΉΩ…ΩˆΨ―.'; + $lang['strcascade'] = 'CASCADE'; + $lang['strtablealtered'] = 'Ω„Ω‚Ψ― ΨͺΩ… ΨͺΨΉΨ―ΩŠΩ„ Ψ§Ω„Ψ¬Ψ―ΩˆΩ„ Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strtablealteredbad'] = 'Ω„Ω‚Ψ― فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© ΨͺΨΉΨ―ΩŠΩ„ Ψ§Ω„Ψ¬Ψ―ΩˆΩ„.'; + $lang['strdataonly'] = 'Ψ§Ω„Ψ¨ΩŠΨ§Ω†Ψ§Ψͺ فقط'; + $lang['strstructureonly'] = 'Ψ§Ω„Ω‡ΩŠΩƒΩ„ΩŠΨ© فقط'; + $lang['strstructureanddata'] = 'Ψ§Ω„Ω‡ΩŠΩƒΩ„ΩŠΨ© ΩˆΨ§Ω„Ψ¨ΩŠΨ§Ω†Ψ§Ψͺ'; + $lang['strtabbed'] = 'Tabbed'; + $lang['strauto'] = 'Auto'; + + // Users + $lang['struser'] = 'Ψ§Ω„Ω…Ψ³ΨͺΨΨ―Ω…'; + $lang['strusers'] = 'Ψ§Ω„Ω…Ψ³ΨͺΨΨ―Ω…ΩŠΩ†'; + $lang['strusername'] = 'Ψ₯Ψ³Ω… Ψ§Ω„Ω…Ψ³ΨͺΨΨ―Ω…'; + $lang['strpassword'] = 'ΩƒΩ„Ω…Ψ© Ψ§Ω„Ψ³Ψ±'; + $lang['strsuper'] = 'Ω…Ψ³ΨͺΨΨ―Ω… ذو Ψ΅Ω„Ψ§Ψ­ΩŠΩ‘Ψ§Ψͺ ΨΉΩ„ΩŠΨ§ΨŸ'; + $lang['strcreatedb'] = 'Ψ₯Ω†Ψ΄Ψ§Ψ‘ Ω‚Ψ§ΨΉΨ―Ψ© Ψ¨ΩŠΨ§Ω†Ψ§Ψͺ؟'; + $lang['strexpires'] = 'ΩŠΩ†ΨͺΩ‡ΩŠ'; + $lang['strsessiondefaults'] = 'Session defaults'; + $lang['strnousers'] = 'Ω„Ω… يوجد Ω…Ψ³ΨͺΨΨ―Ω…ΩŠΩ†.'; + $lang['struserupdated'] = 'ΨͺΩ… ΨͺΨΉΨ―ΩŠΩ„ Ψ§Ω„Ω…Ψ³ΨͺΨΨ―Ω… Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['struserupdatedbad'] = 'فشل ΨͺΨΉΨ―ΩŠΩ„ Ψ§Ω„Ω…Ψ³ΨͺΨΨ―Ω….'; + $lang['strshowallusers'] = 'ΨΉΨ±ΨΆ Ψ¬Ω…ΩŠΨΉ Ψ§Ω„Ω…Ψ³ΨͺΨΨ―Ω…ΩŠΩ†'; + $lang['strcreateuser'] = 'Ψ₯آافة Ω…Ψ³ΨͺΨΨ―Ω… جديد'; + $lang['struserneedsname'] = 'يجب Ψ₯ΨΉΨ·Ψ§Ψ‘ Ψ₯Ψ³Ω… Ω„Ω„Ω…Ψ³ΨͺΨΨ―Ω….'; + $lang['strusercreated'] = 'ΨͺΩ…Ψͺ ΨΉΩ…Ω„ΩŠΨ© Ψ₯آافة Ψ§Ω„Ω…Ψ³ΨͺΨΨ―Ω… Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strusercreatedbad'] = 'فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© Ψ₯آافة Ψ§Ω„Ω…Ψ³ΨͺΨΨ―Ω….'; + $lang['strconfdropuser'] = 'Ω‡Ω„ Ψ§Ω†Ψͺ Ω…ΨͺΨ£ΩƒΨ― Ψͺريد حذف Ψ§Ω„Ω…Ψ³ΨͺΨΨ―Ω… "%s"؟'; + $lang['struserdropped'] = 'ΨͺΩ… حذف Ψ§Ω„Ω…Ψ³ΨͺΨΨ―Ω… Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['struserdroppedbad'] = 'فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© حذف Ψ§Ω„Ω…Ψ³ΨͺΨΨ―Ω….'; + $lang['straccount'] = 'Account'; + $lang['strchangepassword'] = 'Ψͺغيير ΩƒΩ„Ω…Ψ© Ψ§Ω„Ψ³Ψ±'; + $lang['strpasswordchanged'] = 'ΨͺΩ… Ψͺغيير ΩƒΩ„Ω…Ψ© Ψ§Ω„Ψ³Ψ± Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strpasswordchangedbad'] = 'Ω„Ω… ΩŠΩ†Ψ¬Ψ­ Ψͺغيير ΩƒΩ„Ω…Ψ© Ψ§Ω„Ψ³Ψ±.'; + $lang['strpasswordshort'] = 'ΩƒΩ„Ω…Ψ© Ψ§Ω„Ψ³Ψ± Ψ£Ω‚Ψ΅Ψ± Ω…Ω† Ψ§Ω„Ψ­Ψ― Ψ§Ω„Ψ£Ψ―Ω†Ω‰.'; + $lang['strpasswordconfirm'] = 'ΩƒΩ„Ω…Ψ© Ψ§Ω„Ψ³Ψ± Ψ§Ω„Ω…Ψ―ΨΩ„Ψ© Ω„Ω… ΨͺΨͺΨ·Ψ§Ψ¨Ω‚ Ω…ΨΉ ΨͺΨ£ΩƒΩŠΨ― ΩƒΩ„Ω…Ψ© Ψ§Ω„Ψ³Ψ±.'; + + // Groups + $lang['strgroup'] = 'Ψ§Ω„Ω…Ψ¬Ω…ΩˆΨΉΨ©'; + $lang['strgroups'] = 'Ψ§Ω„Ω…Ψ¬Ω…ΩˆΨΉΨ§Ψͺ'; + $lang['strnogroup'] = 'Ω„Ω… Ψͺوجد Ψ§Ω„Ω…Ψ¬Ω…ΩˆΨΉΨ©.'; + $lang['strnogroups'] = 'Ω„Ω… Ψͺوجد Ω…Ψ¬Ω…ΩˆΨΉΨ§Ψͺ.'; + $lang['strcreategroup'] = 'Ψ₯آافة Ω…Ψ¬Ω…ΩˆΨΉΨ© جديدة'; + $lang['strshowallgroups'] = 'ΨΉΨ±ΨΆ Ψ¬Ω…ΩŠΨΉ Ψ§Ω„Ω…Ψ¬Ω…ΩˆΨΉΨ§Ψͺ'; + $lang['strgroupneedsname'] = 'يجب Ψ₯ΨΉΨ·Ψ§Ψ‘ Ψ₯Ψ³Ω… Ω„Ω„Ω…Ψ¬Ω…ΩˆΨΉΨ©.'; + $lang['strgroupcreated'] = 'Ω„Ω‚Ψ― ΨͺΩ…Ψͺ Ψ₯آافة Ψ§Ω„Ω…Ψ¬Ω…ΩˆΨΉΨ© Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strgroupcreatedbad'] = 'Ω„Ω‚Ψ― فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© Ψ₯آافة Ψ§Ω„Ω…Ψ¬Ω…ΩˆΨΉΨ©.'; + $lang['strconfdropgroup'] = 'Ω‡Ω„ Ψ§Ω†Ψͺ Ω…ΨͺΨ£ΩƒΨ― Ψͺريد حذف Ψ§Ω„Ω…Ψ¬Ω…ΩˆΨΉΨ© "%s"؟'; + $lang['strgroupdropped'] = 'ΨͺΩ… حذف Ψ§Ω„Ω…Ψ¬Ω…ΩˆΨΉΨ© Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strgroupdroppedbad'] = 'Ω„Ω‚Ψ― فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© حذف Ψ§Ω„Ω…Ψ¬Ω…ΩˆΨΉΨ©.'; + $lang['strmembers'] = 'Ψ§Ω„Ψ£ΨΉΨΆΨ§Ψ‘'; + $lang['straddmember'] = 'Ψ₯آافة عآو'; + $lang['strmemberadded'] = 'ΨͺΩ…Ψͺ Ψ₯آافة Ψ§Ω„ΨΉΨΆΩˆ.'; + $lang['strmemberaddedbad'] = 'Ω„Ω‚Ψ― فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© Ψ₯آافة Ψ§Ω„ΨΉΨΆΩˆ.'; + $lang['strdropmember'] = 'حذف عآو'; + $lang['strconfdropmember'] = 'Ω‡Ω„ Ψ£Ω†Ψͺ Ω…ΨͺΨ£ΩƒΨ― Ψͺريد حذف Ψ§Ω„ΨΉΨΆΩˆ "%s" Ω…Ω† Ψ§Ω„Ω…Ψ¬Ω…ΩˆΨΉΨ© "%s"؟'; + $lang['strmemberdropped'] = 'ΨͺΩ… حذف Ψ§Ω„ΨΉΨΆΩˆ.'; + $lang['strmemberdroppedbad'] = 'Ω„Ω‚Ψ― فشل حذف Ψ§Ω„ΨΉΨΆΩˆ.'; + + // Privileges + $lang['strprivilege'] = 'Ψ§Ω„Ψ΅Ω„Ψ§Ψ­ΩŠΩ‘Ψ©'; + $lang['strprivileges'] = 'Ψ§Ω„Ψ΅Ω„Ψ§Ψ­ΩŠΨ§Ψͺ'; + $lang['strnoprivileges'] = 'Ω‡Ψ°Ψ§ Ψ§Ω„ΩƒΨ§Ψ¦Ω† Ω„Ψ―ΩŠΩ‡ Ψ΅Ω„Ψ§Ψ­ΩŠΩ‘Ψ§Ψͺ Ψ§Ω„Ω…Ψ§Ω„Ωƒ Ψ§Ω„Ψ₯فΨͺراآية.'; + $lang['strgrant'] = 'Ψͺءريح Grant'; + $lang['strrevoke'] = 'Ψ³Ψ­Ψ¨ Revoke'; + $lang['strgranted'] = 'ΨͺΩ… Ψͺغيير Ψ§Ω„Ψ΅Ω„Ψ§Ψ­ΩŠΨ§Ψͺ.'; + $lang['strgrantfailed'] = 'Ω„Ω‚Ψ― فشل Ψͺغيير Ψ§Ω„Ψ΅Ω„Ψ§Ψ­ΩŠΨ§Ψͺ.'; + $lang['strgrantbad'] = 'يجب ΨΉΩ„ΩŠΩƒ Ψͺحديد ΨΉΩ„Ω‰ Ψ§Ω„Ψ§Ω‚Ω„ Ω…Ψ³ΨͺΨΨ―Ω… واحد او Ω…Ψ¬Ω…ΩˆΨΉΨ© واحدة و ΨΉΩ„Ω‰ Ψ§Ω„Ψ£Ω‚Ω„ Ψ΅Ω„Ψ§Ψ­ΩŠΩ‘Ψ© واحدة.'; + $lang['strgrantor'] = 'Ψ§Ω„Ω…Ψ΅Ψ±Ω‘Ψ­ Grantor'; + $lang['strasterisk'] = '*'; + + // Databases + $lang['strdatabase'] = 'Ω‚Ψ§ΨΉΨ―Ψ© Ψ¨ΩŠΨ§Ω†Ψ§Ψͺ'; + $lang['strdatabases'] = 'Ω‚ΩˆΨ§ΨΉΨ― Ψ§Ω„Ψ¨ΩŠΨ§Ω†Ψ§Ψͺ'; + $lang['strshowalldatabases'] = 'ΨΉΨ±ΨΆ Ψ¬Ω…ΩŠΨΉ Ω‚ΩˆΨ§ΨΉΨ― Ψ§Ω„Ψ¨ΩŠΨ§Ω†Ψ§Ψͺ'; + $lang['strnodatabase'] = 'Ω„Ω… يوجد Ω‚Ψ§ΨΉΨ―Ψ© Ψ¨ΩŠΨ§Ω†Ψ§Ψͺ.'; + $lang['strnodatabases'] = 'Ω„Ω… يوجد Ω‚ΩˆΨ§ΨΉΨ― Ψ¨ΩŠΨ§Ω†Ψ§Ψͺ.'; + $lang['strcreatedatabase'] = 'Ψ₯Ω†Ψ΄Ψ§Ψ‘ Ω‚Ψ§ΨΉΨ―Ψ© Ψ¨ΩŠΨ§Ω†Ψ§Ψͺ جديدة'; + $lang['strdatabasename'] = 'Ψ₯Ψ³Ω… Ω‚Ψ§ΨΉΨ―Ψ© Ψ§Ω„Ψ¨ΩŠΨ§Ω†Ψ§Ψͺ'; + $lang['strdatabaseneedsname'] = 'يجب ΨΉΩ„ΩŠΩƒ Ψ₯ΨΉΨ·Ψ§Ψ‘ Ψ₯Ψ³Ω… Ω„Ω‚Ψ§ΨΉΨ―Ψ© Ψ§Ω„Ψ¨ΩŠΨ§Ω†Ψ§Ψͺ.'; + $lang['strdatabasecreated'] = 'ΨͺΩ… Ψ₯Ω†Ψ΄Ψ§Ψ‘ Ω‚Ψ§ΨΉΨ―Ψ© Ψ§Ω„Ψ¨ΩŠΨ§Ω†Ψ§Ψͺ Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strdatabasecreatedbad'] = 'فشل Ψ₯Ω†Ψ΄Ψ§Ψ‘ Ω‚Ψ§ΨΉΨ―Ψ© Ψ§Ω„Ψ¨ΩŠΨ§Ω†Ψ§Ψͺ.'; + $lang['strconfdropdatabase'] = 'Ω‡Ω„ Ψ£Ω†Ψͺ Ω…ΨͺΨ£ΩƒΨ― Ψͺريد حذف Ω‚Ψ§ΨΉΨ―Ψ© Ψ§Ω„Ψ¨ΩŠΨ§Ω†Ψ§Ψͺ Ψ¨Ψ₯Ψ³Ω… "%s"?'; + $lang['strdatabasedropped'] = 'ΨͺΩ… حذف Ω‚Ψ§ΨΉΨ―Ψ© Ψ§Ω„Ψ¨ΩŠΨ§Ω†Ψ§Ψͺ.'; + $lang['strdatabasedroppedbad'] = 'Ω„Ω‚Ψ― فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© حذف Ω‚Ψ§ΨΉΨ―Ψ© Ψ§Ω„Ψ¨ΩŠΨ§Ω†Ψ§Ψͺ.'; + $lang['strentersql'] = 'Ψ£Ψ―ΨΩ„ Ψ§Ω„Ω€SQL Ψ§Ω„Ψ°ΩŠ Ψͺريد Ψ₯Ψ³ΨͺΨ―ΨΉΨ§Ψ‘Ω‡ Ω‡Ω†Ψ§:'; + $lang['strsqlexecuted'] = 'ΨͺΩ… Ψ₯Ψ³ΨͺΨ―ΨΉΨ§Ψ‘ Ψ§Ω„Ω€SQL.'; + $lang['strvacuumgood'] = 'ΨͺΩ…Ψͺ ΨΉΩ…Ω„ΩŠΨ© Ψ§Ω„Ω€Vacuum.'; + $lang['strvacuumbad'] = 'Ω„Ω‚Ψ― فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© Ψ§Ω„Ω€Vacuum.'; + $lang['stranalyzegood'] = 'ΨͺΩ…Ψͺ ΨΉΩ…Ω„ΩŠΨ© الفحء.'; + $lang['stranalyzebad'] = 'Ω„Ω‚Ψ― فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© الفحء.'; + $lang['strreindexgood'] = 'ΨͺΩ…Ψͺ ΨΉΩ…Ω„ΩŠΨ© Ψ₯ΨΉΨ§Ψ―Ψ© الفهرسة Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strreindexbad'] = 'Ω„Ω‚Ψ― فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© Ψ₯ΨΉΨ§Ψ―Ψ© الفهرسة.'; + $lang['strfull'] = 'Full'; + $lang['strfreeze'] = 'Freeze'; + $lang['strforce'] = 'Force'; + + // Views + $lang['strview'] = 'View ΨΉΨ±ΨΆ'; + $lang['strviews'] = 'عروآ Views'; + $lang['strshowallviews'] = 'Ψ£ΨΉΨ±ΨΆ Ψ¬Ω…ΩŠΨΉ Ψ§Ω„ΨΉΨ±ΩˆΨΆ Views.'; + $lang['strnoview'] = 'Ω„Ω… يوجد ΨΉΨ±ΨΆ View.'; + $lang['strnoviews'] = 'Ω„Ω… يوجد عروآ Views.'; + $lang['strcreateview'] = 'Ψ₯Ω†Ψ΄Ψ§Ψ‘ ΨΉΨ±ΨΆ View جديد'; + $lang['strviewname'] = 'Ψ₯Ψ³Ω… Ψ§Ω„ΨΉΨ±ΨΆ View'; + $lang['strviewneedsname'] = 'يجب Ψ₯ΨΉΨ·Ψ§Ψ‘ Ψ₯Ψ³Ω… Ω„Ω„ΨΉΨ±ΨΆ View.'; + $lang['strviewneedsdef'] = 'يجب ΨΉΩ„ΩŠΩƒ Ψ₯ΨΉΨ·Ψ§Ψ‘ Ψͺعريف Ω„Ω„ΨΉΨ±ΨΆ View.'; + $lang['strviewneedsfields'] = 'يجب ΨΉΩ„ΩŠΩƒ Ψͺحديد Ψ§Ω„Ψ­Ω‚ΩˆΩ„ Ψ§Ω„Ψͺي ΨͺΨ±ΩŠΨ―Ω‡Ψ§ في Ψ§Ω„ΨΉΨ±ΨΆ View.'; + $lang['strviewcreated'] = 'ΨͺΩ… Ψ₯Ω†Ψ΄Ψ§Ψ‘ Ψ§Ω„ΨΉΨ±ΨΆ View.'; + $lang['strviewcreatedbad'] = 'فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© Ψ₯Ω†Ψ΄Ψ§Ψ‘ Ψ§Ω„ΨΉΨ±ΨΆ View.'; + $lang['strconfdropview'] = 'Ω‡Ω„ Ψ§Ω†Ψͺ Ω…ΨͺΨ£ΩƒΨ― Ψͺريد حذف Ψ§Ω„ΨΉΨ±ΨΆ View Ψ¨Ψ₯Ψ³Ω… "%s"'; + $lang['strviewdropped'] = 'ΨͺΩ… حذف Ψ§Ω„ΨΉΨ±ΨΆ View.'; + $lang['strviewdroppedbad'] = 'Ω„Ω‚Ψ― فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© حذف Ψ§Ω„ΨΉΨ±ΨΆ View.'; + $lang['strviewupdated'] = 'ΨͺΩ… Ψͺحديث Ψ§Ω„ΨΉΨ±ΨΆ View Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strviewupdatedbad'] = 'Ω„Ω‚Ψ― فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© Ψͺحديث Ψ§Ω„ΨΉΨ±ΨΆ View.'; + $lang['strviewlink'] = 'Linking Keys'; + $lang['strviewconditions'] = 'Additional Conditions'; + $lang['strcreateviewwiz'] = 'Ψ₯Ω†Ψ΄Ψ§Ψ‘ ΨΉΨ±ΨΆ View Ψ¨Ψ₯Ψ³ΨͺΨΨ―Ψ§Ω… Ψ§Ω„Ψ³Ψ§Ψ­Ψ± Wizard.'; + + // Sequences + $lang['strsequence'] = 'ΨͺΨ³Ω„Ψ³Ω„ Sequence'; + $lang['strsequences'] = 'ΨͺΨ³Ω„Ψ³Ω„Ψ§Ψͺ Sequences'; + $lang['strshowallsequences'] = 'ΨΉΨ±ΨΆ Ψ¬Ω…ΩŠΨΉ Ψ§Ω„ΨͺΨ³Ω„Ψ³Ω„Ψ§Ψͺ'; + $lang['strnosequence'] = 'Ω„Ω… يوجد ΨͺΨ³Ω„Ψ³Ω„.'; + $lang['strnosequences'] = 'Ω„Ω… يوجد ΨͺΨ³Ω„Ψ³Ω„Ψ§Ψͺ.'; + $lang['strcreatesequence'] = 'Ψ₯Ω†Ψ΄Ψ§Ψ‘ ΨͺΨ³Ω„Ψ³Ω„ جديد'; + $lang['strlastvalue'] = 'Ψ’ΨΨ± Ω‚ΩŠΩ…Ψ©'; + $lang['strincrementby'] = 'Ω…Ω‚Ψ―Ψ§Ψ± Ψ§Ω„Ψ²ΩŠΨ§Ψ―Ψ© Increment by'; + $lang['strstartvalue'] = 'Ω‚ΩŠΩ…Ψ© Ψ§Ω„Ψ¨Ψ―Ψ§ΩŠΨ©'; + $lang['strmaxvalue'] = 'Ψ§Ω„Ω‚ΩŠΩ…Ψ© Ψ§Ω„Ω‚Ψ΅ΩˆΩ‰'; + $lang['strminvalue'] = 'Ψ§Ω„Ω‚ΩŠΩ…Ψ© Ψ§Ω„Ψ―Ω†ΩŠΨ§'; + $lang['strcachevalue'] = 'Cache value'; + $lang['strlogcount'] = 'Log count'; + $lang['striscycled'] = 'Is cycled?'; + $lang['strsequenceneedsname'] = 'يجب Ψ₯ΨΉΨ·Ψ§Ψ‘ Ψ₯Ψ³Ω… Ω„Ω„ΨͺΨ³Ω„Ψ³Ω„ sequence.'; + $lang['strsequencecreated'] = 'ΨͺΩ… Ψ₯Ω†Ψ΄Ψ§Ψ‘ Ψ§Ω„ΨͺΨ³Ω„Ψ³Ω„ Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strsequencecreatedbad'] = 'Ω„Ω‚Ψ― فشل Ψ₯Ω†Ψ΄Ψ§Ψ‘ Ψ§Ω„ΨͺΨ³Ω„Ψ³Ω„.'; + $lang['strconfdropsequence'] = 'Ω‡Ω„ Ψ£Ω†Ψͺ Ω…ΨͺΨ£ΩƒΨ― Ψͺريد حذف Ψ§Ω„ΨͺΨ³Ω„Ψ³Ω„ Ψ¨Ψ₯Ψ³Ω… "%s"؟'; + $lang['strsequencedropped'] = 'Ω„Ω‚Ψ― ΨͺΩ… حذف Ψ§Ω„ΨͺΨ³Ω„Ψ³Ω„ Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strsequencedroppedbad'] = 'Ω„Ω‚Ψ― فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© حذف Ψ§Ω„ΨͺΨ³Ω„Ψ³Ω„.'; + $lang['strsequencereset'] = 'Ω„Ω‚Ψ― ΨͺΩ…Ψͺ Ψ₯ΨΉΨ§Ψ―Ψ© Ψ§Ω„ΨͺΨ³Ω„Ψ³Ω„ Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strsequenceresetbad'] = 'Ω„Ω‚Ψ― فشلΨͺ Ψ₯ΨΉΨ§Ψ―Ψ© Ψ§Ω„ΨͺΨ³Ω„Ψ³Ω„.'; + + // Indexes + $lang['strindex'] = 'فهرسIndex'; + $lang['strindexes'] = 'فهارسIndexes'; + $lang['strindexname'] = 'Ψ₯Ψ³Ω… الفهرس Index'; + $lang['strshowallindexes'] = 'ΨΉΨ±ΨΆ Ψ¬Ω…ΩŠΨΉ الفهارس indexes'; + $lang['strnoindex'] = 'Ω„Ω… يوجد فهرس index.'; + $lang['strnoindexes'] = 'Ω„Ω… Ψͺوجد فهارس indexes.'; + $lang['strcreateindex'] = 'Ψ₯Ω†Ψ΄Ψ§Ψ‘ فهرس index جديد'; + $lang['strtabname'] = 'Tab name'; + $lang['strcolumnname'] = 'Ψ₯Ψ³Ω… Ψ§Ω„ΨΉΩ…ΩˆΨ―'; + $lang['strindexneedsname'] = 'يجب ΨΉΩ„ΩŠΩƒ Ψ₯ΨΉΨ·Ψ§Ψ‘ Ψ₯Ψ³Ω… للفهرس index.'; + $lang['strindexneedscols'] = 'الفهارس ΨͺΨͺΨ·Ω„Ψ¨ ΨΉΨ―Ψ― Ω…Ω‚Ψ¨ΩˆΩ„ Ω…Ω† Ψ§Ω„Ψ£ΨΉΩ…Ψ―Ψ©.'; + $lang['strindexcreated'] = 'Ω„Ω‚Ψ― ΨͺΩ… Ψ₯Ω†Ψ΄Ψ§Ψ‘ الفهرس Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strindexcreatedbad'] = 'فشل Ψ₯Ω†Ψ΄Ψ§Ψ‘ الفهرس.'; + $lang['strconfdropindex'] = 'Ω‡Ω„ Ψ§Ω†Ψͺ Ω…ΨͺΨ£ΩƒΨ― Ψͺريد حذف الفهرس Ψ¨Ψ₯Ψ³Ω… "%s"؟'; + $lang['strindexdropped'] = 'Ω„Ω‚Ψ― ΨͺΩ… حذف الفهرس Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strindexdroppedbad'] = 'فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© حذف الفهرس.'; + $lang['strkeyname'] = 'Ψ₯Ψ³Ω… المفΨͺΨ§Ψ­ Key'; + $lang['struniquekey'] = 'مفΨͺΨ§Ψ­ فريد Unique key'; + $lang['strprimarykey'] = 'مفΨͺΨ§Ψ­ رئيسي Primary key'; + $lang['strindextype'] = 'Ω†ΩˆΨΉ الفهرس'; + $lang['strtablecolumnlist'] = 'Ψ§Ω„Ψ£ΨΉΩ…Ψ―Ψ© في Ψ§Ω„Ψ¬Ψ―ΩˆΩ„'; + $lang['strindexcolumnlist'] = 'Ψ§Ω„Ψ£ΨΉΩ…Ψ―Ψ© في الفهرس'; + $lang['strconfcluster'] = 'Are you sure you want to cluster "%s"?'; + $lang['strclusteredgood'] = 'Cluster complete.'; + $lang['strclusteredbad'] = 'Cluster failed.'; + + // Rules + $lang['strrules'] = 'Ω‚ΩˆΨ§ΨΉΨ― Rules'; + $lang['strrule'] = 'Ω‚Ψ§ΨΉΨ―Ψ© Rule'; + $lang['strshowallrules'] = 'ΨΉΨ±ΨΆ Ψ¬Ω…ΩŠΨΉ Ψ§Ω„Ω‚ΩˆΨ§ΨΉΨ―'; + $lang['strnorule'] = 'Ω„Ω… Ψͺوجد Ω‚Ψ§ΨΉΨ―Ψ©.'; + $lang['strnorules'] = 'Ω„Ω… Ψͺوجد Ω‚ΩˆΨ§ΨΉΨ―.'; + $lang['strcreaterule'] = 'Ψ₯Ω†Ψ΄Ψ§Ψ‘ Ω‚Ψ§ΨΉΨ―Ψ© rule جديدة'; + $lang['strrulename'] = 'Ψ₯Ψ³Ω… Ψ§Ω„Ω‚Ψ§ΨΉΨ―Ψ© rule name'; + $lang['strruleneedsname'] = 'يجب ΨΉΩ„ΩŠΩƒ Ψ₯ΨΉΨ·Ψ§Ψ‘ Ψ₯Ψ³Ω… Ω„Ω„Ω‚Ψ§ΨΉΨ―Ψ© rule.'; + $lang['strrulecreated'] = 'ΨͺΩ… Ψ₯Ω†Ψ΄Ψ§Ψ‘ Ψ§Ω„Ω‚Ψ§ΨΉΨ―Ψ© Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strrulecreatedbad'] = 'فشل Ψ₯Ω†Ψ΄Ψ§Ψ‘ Ψ§Ω„Ω‚Ψ§ΨΉΨ―Ψ©.'; + $lang['strconfdroprule'] = 'Ω‡Ω„ Ψ£Ω†Ψͺ Ω…ΨͺΨ£ΩƒΨ― Ψͺريد حذف Ψ§Ω„Ω‚Ψ§ΨΉΨ―Ψ© "%s" ΨΉΩ„Ω‰ "%s"؟'; + $lang['strruledropped'] = 'ΨͺΩ… حذف Ψ§Ω„Ω‚Ψ§ΨΉΨ―Ψ©.'; + $lang['strruledroppedbad'] = 'فشل حذف Ψ§Ω„Ω‚Ψ§ΨΉΨ―Ψ©.'; + + // Constraints + $lang['strconstraints'] = 'Ω‚ΩŠΩˆΨ― Constraints'; + $lang['strshowallconstraints'] = 'ΨΉΨ±ΨΆ Ψ¬Ω…ΩŠΨΉ Ψ§Ω„Ω‚ΩŠΩˆΨ― constraints'; + $lang['strnoconstraints'] = 'Ω„Ω… يوجد Ω‚ΩŠΩˆΨ― constraints.'; + $lang['strcreateconstraint'] = 'Ψ₯Ω†Ψ΄Ψ§Ψ‘ Ω‚ΩŠΨ― constraint جديد'; + $lang['strconstraintcreated'] = 'ΨͺΩ… Ψ₯Ω†Ψ΄Ψ§Ψ‘ Ψ§Ω„Ω‚ΩŠΨ― Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strconstraintcreatedbad'] = 'فشل Ψ₯Ω†Ψ΄Ψ§Ψ‘ Ψ§Ω„Ω‚ΩŠΨ―.'; + $lang['strconfdropconstraint'] = 'Ω‡Ω„ Ψ£Ω†Ψͺ Ω…ΨͺΨ£ΩƒΨ― Ψͺريد حذف Ψ§Ω„Ω‚ΩŠΨ― "%s" ΨΉΩ„Ω‰ "%s"؟'; + $lang['strconstraintdropped'] = 'ΨͺΩ… حذف Ψ§Ω„Ω‚ΩŠΨ― Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strconstraintdroppedbad'] = 'فشل حذف Ψ§Ω„Ω‚ΩŠΨ―.'; + $lang['straddcheck'] = 'Ψ₯آافة فحء check'; + $lang['strcheckneedsdefinition'] = 'Ω‚ΩŠΨ― الفحء يحΨͺΨ§Ψ¬ Ω„Ψͺعريف.'; + $lang['strcheckadded'] = 'ΨͺΩ… Ψ₯آافة Ω‚ΩŠΨ― الفحء Ψ¨Ω†Ψ­Ψ§Ψ­.'; + $lang['strcheckaddedbad'] = 'فشلΨͺ Ψ₯آافة Ω‚ΩŠΨ― الفحء.'; + $lang['straddpk'] = 'primary key Ψ₯آافة مفΨͺΨ§Ψ­ رئيسي.'; + $lang['strpkneedscols'] = 'المفΨͺΨ§Ψ­ Ψ§Ω„Ψ±Ψ¦ΩŠΨ³ΩŠ يΨͺΨ·Ω„Ψ¨ ΨΉΩ„Ω‰ Ψ§Ω„Ψ£Ω‚Ω„ ΨΉΩ…ΩˆΨ― واحد.'; + $lang['strpkadded'] = 'ΨͺΩ…Ψͺ Ψ₯آافة المفΨͺΨ§Ψ­ Ψ§Ω„Ψ±Ψ¦ΩŠΨ³ΩŠ Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strpkaddedbad'] = 'فشلΨͺ Ψ₯آافة المفΨͺΨ§Ψ­ Ψ§Ω„Ψ±Ψ¦ΩŠΨ³ΩŠ.'; + $lang['stradduniq'] = 'unique key Ψ₯آافة مفΨͺΨ§Ψ­ فريد'; + $lang['struniqneedscols'] = 'المفΨͺΨ§Ψ­ Ψ§Ω„ΩΨ±ΩŠΨ― يΨͺΨ·Ω„Ψ¨ ΨΉΩ…ΩˆΨ― واحد ΨΉΩ„Ω‰ Ψ§Ω„Ψ£Ω‚Ω„.'; + $lang['struniqadded'] = 'ΨͺΩ…Ψͺ Ψ₯آافة المفΨͺΨ§Ψ­ Ψ§Ω„ΩΨ±ΩŠΨ― Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['struniqaddedbad'] = 'فشلΨͺ Ψ₯آافة المفΨͺΨ§Ψ­ Ψ§Ω„ΩΨ±ΩŠΨ―.'; + $lang['straddfk'] = 'Ψ₯آافة مفΨͺΨ§Ψ­ Ψارجيforeign key'; + $lang['strfkneedscols'] = 'المفΨͺΨ§Ψ­ Ψ§Ω„Ψارجي يΨͺΨ·Ω„Ψ¨ ΨΉΩ…ΩˆΨ― واحد ΨΉΩ„Ω‰ Ψ§Ω„Ψ£Ω‚Ω„.'; + $lang['strfkneedstarget'] = 'المفΨͺΨ§Ψ­ Ψ§Ω„Ψارجي يحΨͺΨ§Ψ¬ Ψ§Ω„Ω‰ Ψ¬Ψ―ΩˆΩ„ هدف.'; + $lang['strfkadded'] = 'ΨͺΩ…Ψͺ Ψ₯آافة المفΨͺΨ§Ψ­ Ψ§Ω„Ψارجي Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strfkaddedbad'] = 'فشلΨͺ Ψ₯آافة المفΨͺΨ§Ψ­ Ψ§Ω„Ψارجي.'; + $lang['strfktarget'] = 'Ψ§Ω„Ψ¬Ψ―ΩˆΩ„ الهدف Target table'; + $lang['strfkcolumnlist'] = 'Ψ§Ω„Ψ£ΨΉΩ…Ψ―Ψ© في المفΨͺΨ§Ψ­'; + $lang['strondelete'] = 'ON DELETE'; + $lang['stronupdate'] = 'ON UPDATE'; + + // Functions + $lang['strfunction'] = 'Ψ―Ψ§Ω„Ψ© Function'; + $lang['strfunctions'] = 'Ψ―ΩˆΨ§Ω„ Functions'; + $lang['strshowallfunctions'] = 'ΨΉΨ±ΨΆ Ψ¬Ω…ΩŠΨΉ Ψ§Ω„Ψ―ΩˆΨ§Ω„ functions'; + $lang['strnofunction'] = 'Ω„Ω… Ψͺوجد Ψ―Ψ§Ω„Ψ© function.'; + $lang['strnofunctions'] = 'Ω„Ω… Ψͺوجد Ψ―ΩˆΨ§Ω„ functions.'; + $lang['strfunctionname'] = 'Ψ₯Ψ³Ω… Ψ§Ω„Ψ―Ψ§Ω„Ψ© function name'; + $lang['strreturns'] = 'Returns'; + $lang['strarguments'] = 'Arguments'; + $lang['strproglanguage'] = 'Ω„ΨΊΨ© Ψ¨Ψ±Ω…Ψ¬Ψ©'; + $lang['strfunctionneedsname'] = 'يجب ΨΉΩ„ΩŠΩƒ Ψ₯ΨΉΨ·Ψ§Ψ‘ Ψ₯Ψ³Ω… Ω„Ω„Ψ―Ψ§Ω„Ψ© function.'; + $lang['strfunctionneedsdef'] = 'يجب ΨΉΩ„ΩŠΩƒ Ψ§ΨΉΨ·Ψ§Ψ‘ Ψͺعريف Ω„Ω„Ψ―Ψ§Ω„Ψ© function definition.'; + $lang['strfunctioncreated'] = 'ΨͺΩ… Ψ₯Ω†Ψ΄Ψ§Ψ‘ Ψ§Ω„Ψ―Ψ§Ω„Ψ© function Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strfunctioncreatedbad'] = 'Ω„Ω‚Ψ― فشل Ψ₯Ω†Ψ΄Ψ§Ψ‘ Ψ§Ω„Ψ―Ψ§Ω„Ψ©.'; + $lang['strconfdropfunction'] = 'Ω‡Ω„ Ψ£Ω†Ψͺ Ω…ΨͺΨ£ΩƒΨ― Ψͺريد حذف Ψ§Ω„Ψ―Ψ§Ω„Ψ© function Ψ¨Ψ₯Ψ³Ω… "%s"?'; + $lang['strfunctiondropped'] = 'ΨͺΩ… حذف Ψ§Ω„Ψ―Ψ§Ω„Ψ© function Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strfunctiondroppedbad'] = 'Ω„Ω‚Ψ― فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© حذف Ψ§Ω„Ψ―Ψ§Ω„Ψ© function.'; + $lang['strfunctionupdated'] = 'Ω„Ω‚Ψ― ΨͺΩ… ΨͺΨΉΨ―ΩŠΩ„ Ψ§Ω„Ψ―Ψ§Ω„Ψ© function.'; + $lang['strfunctionupdatedbad'] = 'Ω„Ω‚Ψ― فشل ΨͺΨΉΨ―ΩŠΩ„ Ψ§Ω„Ψ―Ψ§Ω„Ψ© function.'; + + // Triggers + $lang['strtrigger'] = 'محفّز Trigger'; + $lang['strtriggers'] = 'محفّزاΨͺ Triggers'; + $lang['strshowalltriggers'] = 'ΨΉΨ±ΨΆ Ψ¬Ω…ΩŠΨΉ المحفزاΨͺ triggers'; + $lang['strnotrigger'] = 'Ω„Ω… يوجد المحفز trigger.'; + $lang['strnotriggers'] = 'Ω„Ω… يوجد محفزاΨͺ triggers.'; + $lang['strcreatetrigger'] = 'Ψ₯Ω†Ψ΄Ψ§Ψ‘ محفّز trigger جديد'; + $lang['strtriggerneedsname'] = 'يجب Ψ₯ΨΉΨ·Ψ§Ψ‘ Ψ§Ψ³Ω… للمحفز.'; + $lang['strtriggerneedsfunc'] = 'يجب Ψͺحديد Ψ―Ψ§Ω„Ψ© function للمحفز.'; + $lang['strtriggercreated'] = 'ΨͺΩ… Ψ₯Ω†Ψ΄Ψ§Ψ‘ المحفز Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strtriggercreatedbad'] = 'Ω„Ω‚Ψ― فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© Ψ₯Ω†Ψ΄Ψ§Ψ‘ المحفز.'; + $lang['strconfdroptrigger'] = 'Ω‡Ω„ Ψ£Ω†Ψͺ Ω…ΨͺΨ£ΩƒΨ― Ψͺريد حذف المحفّز trigger "%s" ΨΉΩ„Ω‰ "%s"؟'; + $lang['strtriggerdropped'] = 'ΨͺΩ… حذف المحفز.'; + $lang['strtriggerdroppedbad'] = 'فشل حذف Ψ§Ω„Ω…Ψ­ΩΨ²ΨŒ Ω„Ω… يΨͺΩ… الحذف.'; + $lang['strtriggeraltered'] = 'ΨͺΩ… ΨͺΨΉΨ―ΩŠΩ„ المحفز Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strtriggeralteredbad'] = 'فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© ΨͺΨΉΨ―ΩŠΩ„ المحفز. Ω„Ω… يΨͺΩ… Ψ§Ω„ΨͺΨΉΨ―ΩŠΩ„.'; + + // Types + $lang['strtype'] = 'Ω†ΩˆΨΉ Type'; + $lang['strtypes'] = 'Ψ£Ω†ΩˆΨ§ΨΉ Types'; + $lang['strshowalltypes'] = 'ΨΉΨ±ΨΆ Ψ¬Ω…ΩŠΨΉ Ψ§Ω„Ψ£Ω†ΩˆΨ§ΨΉ'; + $lang['strnotype'] = 'Ω„Ω… يوجد Ψ§Ω„Ω†ΩˆΨΉ.'; + $lang['strnotypes'] = 'Ω„Ω… يوجد Ψ£Ω†ΩˆΨ§ΨΉ.'; + $lang['strcreatetype'] = 'Ψ₯Ω†Ψ΄Ψ§Ψ‘ Ω†ΩˆΨΉ جديد.'; + $lang['strtypename'] = 'Ψ₯Ψ³Ω… Ψ§Ω„Ω†ΩˆΨΉ'; + $lang['strinputfn'] = 'Ψ―Ψ§Ω„Ψ© Ψ§Ω„Ψ₯Ψ―ΨΨ§Ω„ Input function'; + $lang['stroutputfn'] = 'Ψ―Ψ§Ω„Ψ© Ψ§Ω„Ψ₯ΨΨ±Ψ§Ψ¬ Output function'; + $lang['strpassbyval'] = 'Passed by val?'; + $lang['stralignment'] = 'Alignment'; + $lang['strelement'] = 'Element'; + $lang['strdelimiter'] = 'Delimiter'; + $lang['strstorage'] = 'Storage'; + $lang['strtypeneedsname'] = 'يجب Ψ₯ΨΉΨ·Ψ§Ψ‘ Ψ₯Ψ³Ω… Ω„Ω„Ω†ΩˆΨΉ.'; + $lang['strtypeneedslen'] = 'يجب Ψ₯ΨΉΨ·Ψ§Ψ‘ Ψ·ΩˆΩ„ Ω„Ω„Ω†ΩˆΨΉ.'; + $lang['strtypecreated'] = 'ΨͺΩ… Ψ₯Ω†Ψ΄Ψ§Ψ‘ Ψ§Ω„Ω†ΩˆΨΉ'; + $lang['strtypecreatedbad'] = 'فشل Ψ₯Ω†Ψ΄Ψ§Ψ‘ Ψ§Ω„Ω†ΩˆΨΉ.'; + $lang['strconfdroptype'] = 'Ω‡Ω„ Ψ£Ω†Ψͺ Ω…ΨͺΨ£ΩƒΨ― Ψͺريد حذف Ψ§Ω„Ω†ΩˆΨΉ "%s"؟'; + $lang['strtypedropped'] = 'ΨͺΩ… حذف Ψ§Ω„Ω†ΩˆΨΉ.'; + $lang['strtypedroppedbad'] = 'فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© حذف Ψ§Ω„Ω†ΩˆΨΉ.'; + + // Schemas + $lang['strschema'] = 'Ω…ΨΨ·Ψ· Schema'; + $lang['strschemas'] = 'Ψ§Ω„Ω…ΨΨ·Ψ·Ψ§Ψͺ Schemas'; + $lang['strshowallschemas'] = 'ΨΉΨ±ΨΆ Ψ¬Ω…ΩŠΨΉ Ψ§Ω„Ω…ΨΨ·Ψ·Ψ§Ψͺ schemas'; + $lang['strnoschema'] = 'Ω„Ω… يوجد Ω…ΨΨ·Ψ· schema.'; + $lang['strnoschemas'] = 'Ω„Ω… Ψͺوجد Ω…ΨΨ·Ψ·Ψ§Ψͺ schemas.'; + $lang['strcreateschema'] = 'Ψ₯Ω†Ψ΄Ψ§Ψ‘ Ω…ΨΨ·Ψ· schema جديد'; + $lang['strschemaname'] = 'Ψ₯Ψ³Ω… Ψ§Ω„Ω…ΨΨ·Ψ·'; + $lang['strschemaneedsname'] = 'يجب ΨΉΩ„ΩŠΩƒ Ψ₯ΨΉΨ·Ψ§Ψ‘ Ψ₯Ψ³Ω… Ω„Ω„Ω…ΨΨ·Ψ·.'; + $lang['strschemacreated'] = 'Ω„Ω‚Ψ― ΨͺΩ… Ψ§Ω†Ψ΄Ψ§Ψ‘ Ψ§Ω„Ω…ΨΨ·Ψ· Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strschemacreatedbad'] = 'فشل Ψ₯Ω†Ψ΄Ψ§Ψ‘ Ψ§Ω„Ω…ΨΨ·Ψ·.'; + $lang['strconfdropschema'] = 'Ω‡Ω„ Ψ£Ω†Ψͺ Ω…ΨͺΨ£ΩƒΨ― Ψͺريد حذف Ψ§Ω„Ω…ΨΨ·Ψ· Schema Ψ¨Ψ₯Ψ³Ω… "%s"؟'; + $lang['strschemadropped'] = 'ΨͺΩ… حذف Ψ§Ω„Ω…ΨΨ·Ψ·.'; + $lang['strschemadroppedbad'] = 'فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© الحذف Ω„Ω„Ω…ΨΨ·Ψ·.'; + $lang['strschemaaltered'] = 'ΨͺΩ… ΨͺΨΉΨ―ΩŠΩ„ Ψ§Ω„Ω…ΨΨ·Ψ·.'; + $lang['strschemaalteredbad'] = 'فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© ΨͺΨΉΨ―ΩŠΩ„ Ψ§Ω„Ω…Ψطط، Ω„Ω… يΨͺΩ… Ψ§Ω„ΨͺΨΉΨ―ΩŠΩ„.'; + + // Reports + + // Domains + $lang['strdomain'] = 'Ω†Ψ·Ψ§Ω‚ Domain'; + $lang['strdomains'] = 'Ω†Ψ·Ψ§Ω‚Ψ§Ψͺ Domains'; + $lang['strshowalldomains'] = 'ΨΉΨ±ΨΆ جيع Ψ§Ω„Ω†Ψ·Ψ§Ω‚Ψ§Ψͺ'; + $lang['strnodomains'] = 'Ω„Ω… يوجد Ω†Ψ·Ψ§Ω‚Ψ§Ψͺ.'; + $lang['strcreatedomain'] = 'Ψ₯Ω†Ψ΄Ψ§Ψ‘ Ω†Ψ·Ψ§Ω‚ جديد'; + $lang['strdomaindropped'] = 'ΨͺΩ… حذف Ψ§Ω„Ω†Ψ·Ψ§Ω‚.'; + $lang['strdomaindroppedbad'] = 'Ω„Ω‚Ψ― فشل حذف Ψ§Ω„Ω†Ψ·Ψ§Ω‚ΨŒ Ω„Ω… يΨͺΩ… الحذف.'; + $lang['strconfdropdomain'] = 'Ω‡Ω„ Ψ£Ω†Ψͺ Ω…ΨͺΨ£ΩƒΨ― Ψͺريد حذف Ψ§Ω„Ω†Ψ·Ψ§Ω‚ domain Ψ¨Ψ₯Ψ³Ω… "%s"؟'; + $lang['strdomainneedsname'] = 'يجب Ψ₯ΨΉΨ·Ψ§Ψ‘ Ψ₯Ψ³Ω… Ω„Ω„Ω†Ψ·Ψ§Ω‚.'; + $lang['strdomaincreated'] = 'ΨͺΩ… Ψ₯Ω†Ψ΄Ψ§Ψ‘ Ψ§Ω„Ω†Ψ·Ψ§Ω‚ Ψ¨Ω†Ψ¬Ψ§Ψ­.'; + $lang['strdomaincreatedbad'] = 'Ω„Ω… يΨͺΩ… Ψ₯Ω†Ψ΄Ψ§Ψ‘ Ψ§Ω„Ω†Ψ·Ψ§Ω‚ΨŒ فشلΨͺ Ψ§Ω„ΨΉΩ…Ω„ΩŠΨ©.'; + $lang['strdomainaltered'] = 'ΨͺΩ… ΨͺΨΉΨ―ΩŠΩ„ Ψ§Ω„Ω†Ψ·Ψ§Ω‚.'; + $lang['strdomainalteredbad'] = 'فشلΨͺ ΨΉΩ…Ω„ΩŠΨ© ΨͺΨΉΨ―ΩŠΩ„ Ψ§Ω„Ω†Ψ·Ψ§Ω‚.'; + + // Operators + $lang['stroperator'] = 'Operator'; + $lang['stroperators'] = 'Operators'; + $lang['strshowalloperators'] = 'Show all operators'; + $lang['strnooperator'] = 'No operator found.'; + $lang['strnooperators'] = 'No operators found.'; + $lang['strcreateoperator'] = 'Create operator'; + $lang['strleftarg'] = 'Left Arg Type'; + $lang['strrightarg'] = 'Right Arg Type'; + $lang['strcommutator'] = 'Commutator'; + $lang['strnegator'] = 'Negator'; + $lang['strrestrict'] = 'Restrict'; + $lang['strjoin'] = 'Join'; + $lang['strhashes'] = 'Hashes'; + $lang['strmerges'] = 'Merges'; + $lang['strleftsort'] = 'Left sort'; + $lang['strrightsort'] = 'Right sort'; + $lang['strlessthan'] = 'Less than'; + $lang['strgreaterthan'] = 'Greater than'; + $lang['stroperatorneedsname'] = 'You must give a name for your operator.'; + $lang['stroperatorcreated'] = 'Operator created'; + $lang['stroperatorcreatedbad'] = 'Operator creation failed.'; + $lang['strconfdropoperator'] = 'Are you sure you want to drop the operator "%s"?'; + $lang['stroperatordropped'] = 'Operator dropped.'; + $lang['stroperatordroppedbad'] = 'Operator drop failed.'; + + // Casts + $lang['strcasts'] = 'Casts'; + $lang['strnocasts'] = 'No casts found.'; + $lang['strsourcetype'] = 'Source type'; + $lang['strtargettype'] = 'Target type'; + $lang['strimplicit'] = 'Implicit'; + $lang['strinassignment'] = 'In assignment'; + $lang['strbinarycompat'] = '(Binary compatible)'; + + // Conversions + $lang['strconversions'] = 'Conversions'; + $lang['strnoconversions'] = 'No conversions found.'; + $lang['strsourceencoding'] = 'Source encoding'; + $lang['strtargetencoding'] = 'Target encoding'; + + // Languages + $lang['strlanguages'] = 'Languages'; + $lang['strnolanguages'] = 'No languages found.'; + $lang['strtrusted'] = 'Trusted'; + + // Info + $lang['strnoinfo'] = 'No information available.'; + $lang['strreferringtables'] = 'Referring tables'; + $lang['strparenttables'] = 'Parent tables'; + $lang['strchildtables'] = 'Child tables'; + + // Aggregates + $lang['straggregates'] = 'Aggregates'; + $lang['strnoaggregates'] = 'No aggregates found.'; + $lang['stralltypes'] = '(All types)'; + + // Operator Classes + $lang['stropclasses'] = 'Op Classes'; + $lang['strnoopclasses'] = 'No operator classes found.'; + $lang['straccessmethod'] = 'Access method'; + + // Stats and performance + $lang['strrowperf'] = 'Row Performance'; + $lang['strioperf'] = 'I/O Performance'; + $lang['stridxrowperf'] = 'Index Row Performance'; + $lang['stridxioperf'] = 'Index I/O Performance'; + $lang['strpercent'] = '%'; + $lang['strsequential'] = 'Sequential'; + $lang['strscan'] = 'Scan'; + $lang['strread'] = 'Read'; + $lang['strfetch'] = 'Fetch'; + $lang['strheap'] = 'Heap'; + $lang['strtoast'] = 'TOAST'; + $lang['strtoastindex'] = 'TOAST Index'; + $lang['strcache'] = 'Cache'; + $lang['strdisk'] = 'Disk'; + $lang['strrows2'] = 'Rows'; + + // Miscellaneous + $lang['strtopbar'] = '%s ΩŠΨΉΩ…Ω„ ΨΉΩ„Ω‰ %s:%s -- You are logged in as user "%s"'; + $lang['strtimefmt'] = 'jS M, Y g:iA'; + $lang['strhelp'] = 'Ω…Ψ³Ψ§ΨΉΨ―Ψ©'; + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/catalan.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/catalan.php new file mode 100644 index 00000000..02fed655 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/catalan.php @@ -0,0 +1,897 @@ + + * + * $Id: catalan.php,v 1.4 2008/03/14 03:31:43 xzilla Exp $ + */ + + // Language and character set + $lang['applang'] = 'CatalΓ '; + $lang['applocale'] = 'ca-ES'; + $lang['applangdir'] = 'ltr'; + + // Welcome + $lang['strintro'] = 'Benvingut a phpPgAdmin.'; + $lang['strppahome'] = 'PΓ gina web de phpPgAdmin'; + $lang['strpgsqlhome'] = 'PΓ gina web de PostgreSQL'; + $lang['strpgsqlhome_url'] = 'http://www.postgresql.org/'; + $lang['strlocaldocs'] = 'DocumentaciΓ³ PostgreSQL (local)'; + $lang['strreportbug'] = 'Reportar un Bug'; + $lang['strviewfaq'] = 'Veure FAQ online'; + $lang['strviewfaq_url'] = 'http://phppgadmin.sourceforge.net/doku.php?id=faq'; + + // Basic strings + $lang['strlogin'] = 'Entrada'; + $lang['strloginfailed'] = 'Entrada fallida'; + $lang['strlogindisallowed'] = 'Entrada rebutjada per raons de seguretat.'; + $lang['strserver'] = 'Servidor'; + $lang['strservers'] = 'Servidors'; + $lang['strgroupservers'] = 'Servidors en el grup "%s"'; + $lang['strallservers'] = 'Tots els servidors'; + $lang['strintroduction'] = 'IntroducciΓ³'; + $lang['strhost'] = 'Host'; + $lang['strport'] = 'Port'; + $lang['strlogout'] = 'Sortida'; + $lang['strowner'] = 'Propietari'; + $lang['straction'] = 'AcciΓ³'; + $lang['stractions'] = 'Accions'; + $lang['strname'] = 'Nom'; + $lang['strdefinition'] = 'DefiniciΓ³'; + $lang['strproperties'] = 'Propietats'; + $lang['strbrowse'] = 'Navega'; + $lang['strenable'] = 'Habilita'; + $lang['strdisable'] = 'Inhabilita'; + $lang['strdrop'] = 'Elimina'; + $lang['strdropped'] = 'Eliminat'; + $lang['strnull'] = 'Nul'; + $lang['strnotnull'] = 'No Nul'; + $lang['strprev'] = '< Previ'; + $lang['strnext'] = 'SegΓΌent >'; + $lang['strfirst'] = '<< Primer'; + $lang['strlast'] = 'Últim >>'; + $lang['strfailed'] = 'Fallat'; + $lang['strcreate'] = 'Crea'; + $lang['strcreated'] = 'Creat'; + $lang['strcomment'] = 'Comentari'; + $lang['strlength'] = 'Longitud'; + $lang['strdefault'] = 'Predeterminat'; + $lang['stralter'] = 'Modifica'; + $lang['strok'] = 'D\'acord'; + $lang['strcancel'] = 'CancelΒ·la'; + $lang['strkill'] = 'Mata'; + $lang['strac'] = 'Habilita AutoCompletat'; + $lang['strsave'] = 'Desa'; + $lang['strreset'] = 'Restableix'; + $lang['strrestart'] = 'Reinicia'; + $lang['strinsert'] = 'Inserta'; + $lang['strselect'] = 'Selecciona'; + $lang['strdelete'] = 'Elimina'; + $lang['strupdate'] = 'Actualitza'; + $lang['strreferences'] = 'ReferΓ¨ncies'; + $lang['stryes'] = 'SΓ­'; + $lang['strno'] = 'No'; + $lang['strtrue'] = 'Cert'; + $lang['strfalse'] = 'Fals'; + $lang['stredit'] = 'Edita'; + $lang['strcolumn'] = 'Columna'; + $lang['strcolumns'] = 'Columnes'; + $lang['strrows'] = 'fila(es)'; + $lang['strrowsaff'] = 'fila/es afectada/es.'; + $lang['strobjects'] = 'objecte(s)'; + $lang['strback'] = 'Enrere'; + $lang['strqueryresults'] = 'Resultat de la Consulta'; + $lang['strshow'] = 'Mostra'; + $lang['strempty'] = 'Buida'; + $lang['strlanguage'] = 'Idioma'; + $lang['strencoding'] = 'CodificaciΓ³'; + $lang['strvalue'] = 'Valor'; + $lang['strunique'] = 'Únic'; + $lang['strprimary'] = 'Primari'; + $lang['strexport'] = 'Exporta'; + $lang['strimport'] = 'Importa'; + $lang['strallowednulls'] = 'CarΓ cters NULL Permesos'; + $lang['strbackslashn'] = '\N'; + $lang['stremptystring'] = 'Cadena o camp buit'; + $lang['strsql'] = 'SQL'; + $lang['stradmin'] = 'Admin'; + $lang['strvacuum'] = 'Vacuum'; + $lang['stranalyze'] = 'Analyze'; + $lang['strclusterindex'] = 'ClΓΊster'; + $lang['strclustered'] = 'Clusteritzat?'; + $lang['strreindex'] = 'Reindex'; + $lang['strexecute'] = 'Executa'; + $lang['stradd'] = 'Agrega'; + $lang['strevent'] = 'Event'; + $lang['strwhere'] = 'On'; + $lang['strinstead'] = 'Fes en el seu lloc'; + $lang['strwhen'] = 'Quan'; + $lang['strformat'] = 'Format'; + $lang['strdata'] = 'Dades'; + $lang['strconfirm'] = 'Confirma'; + $lang['strexpression'] = 'ExpressiΓ³'; + $lang['strellipsis'] = '...'; + $lang['strseparator'] = ': '; + $lang['strexpand'] = 'Expandeix'; + $lang['strcollapse'] = 'Colapsa'; + $lang['strfind'] = 'Cerca'; + $lang['stroptions'] = 'Opcions'; + $lang['strrefresh'] = 'Refresca'; + $lang['strdownload'] = 'Baixa'; + $lang['strdownloadgzipped'] = 'Baixa comprimit amb gzip'; + $lang['strinfo'] = 'InformaciΓ³'; + $lang['stroids'] = 'OIDs'; + $lang['stradvanced'] = 'AvanΓ§at'; + $lang['strvariables'] = 'Variables'; + $lang['strprocess'] = 'ProcΓ©s'; + $lang['strprocesses'] = 'Processos'; + $lang['strsetting'] = 'Ajustament'; + $lang['streditsql'] = 'Edita SQL'; + $lang['strruntime'] = 'Total temps d\'execuciΓ³: %s ms'; + $lang['strpaginate'] = 'Pagina els resultats'; + $lang['struploadscript'] = 'o carrega un script SQL:'; + $lang['strstarttime'] = 'Hora d\'Inici'; + $lang['strfile'] = 'Fitxer'; + $lang['strfileimported'] = 'Fitxer importat.'; + $lang['strtrycred'] = 'Usa aquestes credencials a tots els servidors'; + $lang['strconfdropcred'] = 'Per raons de seguretat, la desconnexiΓ³ eliminarΓ  la informaciΓ³ d\'entrada compartida. EstΓ  segur de voler desconnectar ?'; + $lang['stractionsonmultiplelines'] = 'Accions a mΓΊltiples lΓ­nies'; + $lang['strselectall'] = 'Seleccina\'ls tots'; + $lang['strunselectall'] = 'No en seleccionis cap'; + $lang['strlocale'] = 'Local'; + $lang['strcollation'] = 'ColΒ·laciΓ³'; + $lang['strctype'] = 'Tipus de carΓ cter'; + $lang['strdefaultvalues'] = 'Valors per defecte'; + $lang['strnewvalues'] = 'Valors nous'; + $lang['strstart'] = 'ComenΓ§a'; + $lang['strstop'] = 'Para'; + $lang['strgotoppage'] = 'Torna al principi'; + $lang['strtheme'] = 'Tema'; + $lang['strcluster'] = 'ClΓΊster'; + + // Admin + $lang['stradminondatabase'] = 'Les segΓΌents tasques administratives s\'apliquen a tota la base de dades %s.'; + $lang['stradminontable'] = 'Les segΓΌents tasques administratives s\'apliquen a la taula %s.'; + + // User-supplied SQL history + $lang['strhistory'] = 'HistΓ²ria'; + $lang['strnohistory'] = 'No hi ha histΓ²ria.'; + $lang['strclearhistory'] = 'Neteja la histΓ²ria'; + $lang['strdelhistory'] = 'Elimina de la histΓ²ria'; + $lang['strconfdelhistory'] = 'Realment vol eliminar aquesta peticiΓ³ de la histΓ²ria?'; + $lang['strconfclearhistory'] = 'Realment vol elimnar la histΓ²ria?'; + $lang['strnodatabaseselected'] = 'Si us plau, seleccioni una base de dades.'; + + // Database Sizes + $lang['strnoaccess'] = 'Sense AccΓ©s'; + $lang['strsize'] = 'Tamany'; + $lang['strbytes'] = 'bytes'; + $lang['strkb'] = 'kB'; + $lang['strmb'] = 'MB'; + $lang['strgb'] = 'GB'; + $lang['strtb'] = 'TB'; + + // Error handling + $lang['strnoframes'] = 'Aquesta aplicaciΓ³ treballa millor en un navegador amb suport per frames, perΓ² es pot usar sense seguint el link de sota.'; + $lang['strnoframeslink'] = 'Usa sense frames'; + $lang['strbadconfig'] = 'El seu config.inc.php no estΓ  actualitzat. NecessitarΓ  regenerar-lo a partir del nou config.inc.php-dist.'; + $lang['strnotloaded'] = 'La seva instalΒ·laciΓ³ de PHP no suporta la PostgreSQL. Necessita recompilar el PHP usant la opciΓ³ de configuraciΓ³ --with-pgsql.'; + $lang['strpostgresqlversionnotsupported'] = 'VersiΓ³ de PostgreSQL no suportada. Si su plau actualitzi a la versiΓ³ %s o posterior.'; + $lang['strbadschema'] = 'Esquema especificat invΓ lid.'; + $lang['strbadencoding'] = 'Error al fixar la codificaciΓ³ del client a la base de dades.'; + $lang['strsqlerror'] = 'Error SQL:'; + $lang['strinstatement'] = 'En la sentΓ¨ncia:'; + $lang['strinvalidparam'] = 'ParΓ metres del script invΓ lids.'; + $lang['strnodata'] = 'No s\'han trobat files.'; + $lang['strnoobjects'] = 'No s\'han trobat objectes.'; + $lang['strrownotunique'] = 'No hi ha un identificador ΓΊnic per aquesta fila.'; + $lang['strnouploads'] = 'La pujada de fitxers estΓ  deshabilitada.'; + $lang['strimporterror'] = 'Error d\'importaciΓ³.'; + $lang['strimporterror-fileformat'] = 'Error d\'importaciΓ³: Error al determinar automΓ ticament el format del fitxer.'; + $lang['strimporterrorline'] = 'Error d\'importaciΓ³ a la lΓ­nia %s.'; + $lang['strimporterrorline-badcolumnnum'] = 'Error d\'importaciΓ³ a la lΓ­nia %s: La lΓ­nia no tΓ© el nΓΊmero correcte de columnes.'; + $lang['strimporterror-uploadedfile'] = 'Error d\'importaciΓ³: El fitxer no s\'ha pogut pujar al servidor'; + $lang['strcannotdumponwindows'] = 'El volcat de dades amb noms complexos de taules i esquemes en Windows no Γ©s suportada.'; + $lang['strinvalidserverparam'] = 'Intent de connexiΓ³ amb un parΓ metre del servidor invΓ lid, possiblement algΓΊ estΓ  provant d\'entrar al sistema.'; + $lang['strnoserversupplied'] = 'No s\'ha proporcionat cap servidor!'; + $lang['strbadpgdumppath'] = 'Error d\'exportaciΓ³: Fallada en l\'execuciΓ³ de pg_dump (path definit a conf/config.inc.php : %s ). Sisplau, arregli el path en la configuraciΓ³.'; + $lang['strbadpgdumpallpath'] = 'Error d\'exportaciΓ³: Fallada en l\'execuciΓ³ de pg_dumpall (path definit a conf/config.inc.php : %s ). Sisplau, arregli el path en la configuraciΓ³.'; + $lang['strconnectionfail'] = 'No hi ha connexiΓ³ amb el servidor.'; + + // Tables + $lang['strtable'] = 'Taula'; + $lang['strtables'] = 'Taules'; + $lang['strshowalltables'] = 'Mostra totes les taules'; + $lang['strnotables'] = 'No s\'han trobat taules.'; + $lang['strnotable'] = 'No s\'ha trobat la taula.'; + $lang['strcreatetable'] = 'Crea una taula'; + $lang['strcreatetablelike'] = 'Crea una taula com a'; + $lang['strcreatetablelikeparent'] = 'Taula origen'; + $lang['strcreatelikewithdefaults'] = 'INCLUDE DEFAULTS'; + $lang['strcreatelikewithconstraints'] = 'INCLUDE CONSTRAINTS'; + $lang['strcreatelikewithindexes'] = 'INCLUDE INDEXES'; + $lang['strtablename'] = 'Nom de la taula'; + $lang['strtableneedsname'] = 'Ha d\'anomenar la taula.'; + $lang['strtablelikeneedslike'] = 'Ha de donar una taula d\'on copiar les propietats.'; + $lang['strtableneedsfield'] = 'Ha d\'especificar almenys un camp.'; + $lang['strtableneedscols'] = 'Ha d\'especificar un nΓΊmero vΓ lid de columnes.'; + $lang['strtablecreated'] = 'Taula creada.'; + $lang['strtablecreatedbad'] = 'No s\'ha pogut crear la taula.'; + $lang['strconfdroptable'] = 'EstΓ  segur de voler eliminar la taula "%s"?'; + $lang['strtabledropped'] = 'Taula eliminada.'; + $lang['strtabledroppedbad'] = 'No s\'ha pogut eliminar la taula.'; + $lang['strconfemptytable'] = 'EstΓ  segur que vol buidar la taula "%s"?'; + $lang['strtableemptied'] = 'Taula buidada.'; + $lang['strtableemptiedbad'] = 'No s\'ha pogut buidar la taula.'; + $lang['strinsertrow'] = 'Inserta una fila'; + $lang['strrowinserted'] = 'Fila insertada.'; + $lang['strrowinsertedbad'] = 'No s\'ha pogut insertar la taula.'; + $lang['strnofkref'] = 'No hi ha cap valor coincident en la foreign key %s.'; + $lang['strrowduplicate'] = 'InserciΓ³ de la taula fallada, intentant fer una inserciΓ³ duplicada.'; + $lang['streditrow'] = 'Edita la fila'; + $lang['strrowupdated'] = 'Fila actualitzada.'; + $lang['strrowupdatedbad'] = 'No s\'ha pogut actualitzar la fila.'; + $lang['strdeleterow'] = 'Elimina la fila'; + $lang['strconfdeleterow'] = 'EstΓ  segur que vol eliminar aquesta fila?'; + $lang['strrowdeleted'] = 'Fila eliminada.'; + $lang['strrowdeletedbad'] = 'No s\'ha pogut eliminar la fila.'; + $lang['strinsertandrepeat'] = 'Inserta & Repeteix'; + $lang['strnumcols'] = 'Nombre de columnes'; + $lang['strcolneedsname'] = 'Ha d\'especificar un nom per la columna'; + $lang['strselectallfields'] = 'Selecciona tots els camps'; + $lang['strselectneedscol'] = 'Ha de mostrar almenys una columna.'; + $lang['strselectunary'] = 'Els operadors unaris no poden tenir valors.'; + $lang['strcolumnaltered'] = 'Columna modificada.'; + $lang['strcolumnalteredbad'] = 'No s\'ha pogut modificar la columna.'; + $lang['strconfdropcolumn'] = 'EstΓ  segur d\'eliminar la columna "%s" de la taula "%s"?'; + $lang['strcolumndropped'] = 'Columna eliminada.'; + $lang['strcolumndroppedbad'] = 'No s\'ha pogut eliminar la columna.'; + $lang['straddcolumn'] = 'Agrega una columna'; + $lang['strcolumnadded'] = 'Columna agregada.'; + $lang['strcolumnaddedbad'] = 'No s\'ha pogut agregar la columna.'; + $lang['strcascade'] = 'EN CASCADA'; + $lang['strtablealtered'] = 'Taula modificada.'; + $lang['strtablealteredbad'] = 'No s\'ha pogut modificar la columna.'; + $lang['strdataonly'] = 'NomΓ©s dades'; + $lang['strstructureonly'] = 'Nomes estructura'; + $lang['strstructureanddata'] = 'Estructura i dades'; + $lang['strtabbed'] = 'Tabulat'; + $lang['strauto'] = 'AutomΓ tic'; + $lang['strconfvacuumtable'] = 'EstΓ  segur de voler un vacuum "%s"?'; + $lang['strconfanalyzetable'] = 'EstΓ  segur de voler un analyze "%s"?'; + $lang['strconfreindextable'] = 'EstΓ  segur de voler un reindex "%s"?'; + $lang['strconfclustertable'] = 'EstΓ  sergur de voler un cluster "%s"?'; + $lang['strestimatedrowcount'] = 'Nombre estimat de files'; + $lang['strspecifytabletoanalyze'] = 'Ha d\'especificar almenys una taula per l\'analyze.'; + $lang['strspecifytabletoempty'] = 'Ha d\'especificar almenys una taula per buidar.'; + $lang['strspecifytabletodrop'] = 'Ha d\'especificar almenys una taula per eliminar.'; + $lang['strspecifytabletovacuum'] = 'Ha d\'especificar almenys una taula pel vacuum.'; + $lang['strspecifytabletoreindex'] = 'Ha d\'especifiar almenys una taula pel reindex.'; + $lang['strspecifytabletocluster'] = 'Ha d\'especificar almenys una taula pel cluster.'; + $lang['strnofieldsforinsert'] = 'No es pot insertar una fila a una taula sense cap columna.'; + + // Columns + $lang['strcolprop'] = 'Propietats de la Columna'; + $lang['strnotableprovided'] = 'No s\'ha proporcionat cap taula!'; + + // Users + $lang['struser'] = 'Usuari'; + $lang['strusers'] = 'Usuaris'; + $lang['strusername'] = 'Usuari'; + $lang['strpassword'] = 'Contrasenya'; + $lang['strsuper'] = 'Superusuari?'; + $lang['strcreatedb'] = 'Crear DB?'; + $lang['strexpires'] = 'Expira'; + $lang['strsessiondefaults'] = 'Valors predeterminats de la sessiΓ³'; + $lang['strnousers'] = 'No s\'han trobat usuaris.'; + $lang['struserupdated'] = 'Usuari actualitzat.'; + $lang['struserupdatedbad'] = 'L\'actualitzaciΓ³ de l\'usuari ha fallat.'; + $lang['strshowallusers'] = 'Mostra tots els usuaris'; + $lang['strcreateuser'] = 'Crea un usuari'; + $lang['struserneedsname'] = 'Ha de donar un nom a l\'usuari.'; + $lang['strusercreated'] = 'Usuari creat.'; + $lang['strusercreatedbad'] = 'Error al crear l\'usuari.'; + $lang['strconfdropuser'] = 'EstΓ  segur de voler eliminar l\'usuari "%s"?'; + $lang['struserdropped'] = 'Usuari eliminat.'; + $lang['struserdroppedbad'] = 'Error a l\'eliminar l\'usuari.'; + $lang['straccount'] = 'Compte'; + $lang['strchangepassword'] = 'Canvia la contrasenya'; + $lang['strpasswordchanged'] = 'Contrasenya canviada.'; + $lang['strpasswordchangedbad'] = 'Error al canviar la contrasenya.'; + $lang['strpasswordshort'] = 'Contrasenya massa curta.'; + $lang['strpasswordconfirm'] = 'La contrasenya no coincideix amb la confirmaciΓ³.'; + + // Groups + $lang['strgroup'] = 'Grup'; + $lang['strgroups'] = 'Grups'; + $lang['strshowallgroups'] = 'Mostra tots els grups'; + $lang['strnogroup'] = 'Grup no trobat.'; + $lang['strnogroups'] = 'No s\'han trobat grups.'; + $lang['strcreategroup'] = 'Crea un grup'; + $lang['strgroupneedsname'] = 'Ha de donar un nom al grup.'; + $lang['strgroupcreated'] = 'Grup creat.'; + $lang['strgroupcreatedbad'] = 'No s\'ha pogut crear el grup.'; + $lang['strconfdropgroup'] = 'EstΓ  segur de voler eliminar el grup "%s"?'; + $lang['strgroupdropped'] = 'Grup eliminat.'; + $lang['strgroupdroppedbad'] = 'No s\'ha pogut eliminar el grup.'; + $lang['strmembers'] = 'Membres'; + $lang['strmemberof'] = 'Membre de'; + $lang['stradminmembers'] = 'Membres administradors'; + $lang['straddmember'] = 'Afegeix un membre'; + $lang['strmemberadded'] = 'Membre afegit.'; + $lang['strmemberaddedbad'] = 'No s\'ha pogut afegir el membre.'; + $lang['strdropmember'] = 'Elimina el membre'; + $lang['strconfdropmember'] = 'EstΓ  segur de voler eliminar el membre "%s" del grup "%s"?'; + $lang['strmemberdropped'] = 'Membre eliminat.'; + $lang['strmemberdroppedbad'] = 'No s\'ha pogut eliminar el membre.'; + + // Roles + $lang['strrole'] = 'Rol'; + $lang['strroles'] = 'Rols'; + $lang['strshowallroles'] = 'Mostra tots els rols'; + $lang['strnoroles'] = 'No s\'han trobat rols.'; + $lang['strinheritsprivs'] = 'Hereda privilegis?'; + $lang['strcreaterole'] = 'Crea un rol'; + $lang['strcancreaterole'] = 'Crear el rol?'; + $lang['strrolecreated'] = 'Rol creat.'; + $lang['strrolecreatedbad'] = 'No s\'ha pogut crear el rol.'; + $lang['strrolealtered'] = 'Rol modificat.'; + $lang['strrolealteredbad'] = 'No s\ha pogut modificar el rol.'; + $lang['strcanlogin'] = 'Pot entrar?'; + $lang['strconnlimit'] = 'LΓ­mit de la connexiΓ³'; + $lang['strdroprole'] = 'Elimina el rol'; + $lang['strconfdroprole'] = 'EstΓ  segur de voler eliminar el rol \'%s\'?'; + $lang['strroledropped'] = 'Rol eliminat.'; + $lang['strroledroppedbad'] = 'No s\'ha pogut eliminar el rol.'; + $lang['strnolimit'] = 'Sense lΓ­mit'; + $lang['strnever'] = 'Mai'; + $lang['strroleneedsname'] = 'Ha de donar un nom al rol.'; + + // Privileges + $lang['strprivilege'] = 'Privilegi'; + $lang['strprivileges'] = 'Privilegis'; + $lang['strnoprivileges'] = 'Aquest objecte tΓ© els privilegis predeterminats.'; + $lang['strgrant'] = 'Concedeix'; + $lang['strrevoke'] = 'Revoca'; + $lang['strgranted'] = 'Privilegis canviats.'; + $lang['strgrantfailed'] = 'Ha fallat el canvi de privilegis.'; + $lang['strgrantbad'] = 'Ha d\'especificar almenys un usuari o grup i almenys un privilegi.'; + $lang['strgrantor'] = 'Cedent'; + $lang['strasterisk'] = '*'; + + // Databases + $lang['strdatabase'] = 'Base de dades'; + $lang['strdatabases'] = 'Bases de dades'; + $lang['strshowalldatabases'] = 'Mostra totes les bases de dades'; + $lang['strnodatabases'] = 'No s\'han trobat bases de dades.'; + $lang['strcreatedatabase'] = 'Crea una base de dades'; + $lang['strdatabasename'] = 'Nom de la base de dades'; + $lang['strdatabaseneedsname'] = 'Ha de donar un nom a la base de dades.'; + $lang['strdatabasecreated'] = 'Base de dades creada.'; + $lang['strdatabasecreatedbad'] = 'No s\'ha pogut crear la base de dades.'; + $lang['strconfdropdatabase'] = 'EstΓ  segur de voler eliminar la base de dades "%s"?'; + $lang['strdatabasedropped'] = 'Base de dades eliminada.'; + $lang['strdatabasedroppedbad'] = 'No s\'ha pogut eliminar la base de dades.'; + $lang['strentersql'] = 'Entri la sentΓ¨ncia SQL per executar a sota:'; + $lang['strsqlexecuted'] = 'SQL executat.'; + $lang['strvacuumgood'] = 'Vacuum completat.'; + $lang['strvacuumbad'] = 'Vacuum ha fallat.'; + $lang['stranalyzegood'] = 'Analyze completat.'; + $lang['stranalyzebad'] = 'Analyze ha fallat.'; + $lang['strreindexgood'] = 'Reindex completat.'; + $lang['strreindexbad'] = 'Reindex ha fallat.'; + $lang['strfull'] = 'Ple'; + $lang['strfreeze'] = 'Congelat'; + $lang['strforce'] = 'ForΓ§a'; + $lang['strsignalsent'] = 'Senyal enviat.'; + $lang['strsignalsentbad'] = 'L\'enviament del senyal ha fallat.'; + $lang['strallobjects'] = 'Tots els objectes'; + $lang['strdatabasealtered'] = 'Base de dades modificada.'; + $lang['strdatabasealteredbad'] = 'No s\'ha pogut modificar la base de dades.'; + $lang['strspecifydatabasetodrop'] = 'Ha d\'especificar almenys una base de dades per eliminar.'; + $lang['strtemplatedb'] = 'Plantilla'; + $lang['strconfanalyzedatabase'] = 'EstΓ  segur de voler un analyze de totes les taules de la base de dades "%s"?'; + $lang['strconfvacuumdatabase'] = 'EstΓ  segur de voler un vacuum de totes les taules de la base de dades "%s"?'; + $lang['strconfreindexdatabase'] = 'EstΓ  segur de voler un reindex de totes les taules de la base de dades "%s"?'; + $lang['strconfclusterdatabase'] = 'EstΓ  segur de voler un clΓΊster de totes les taules de la base de dades "%s"?'; + + // Views + $lang['strview'] = 'Vista'; + $lang['strviews'] = 'Vistes'; + $lang['strshowallviews'] = 'Mostra totes les vistes'; + $lang['strnoview'] = 'No s\'ha trobat la vista.'; + $lang['strnoviews'] = 'No s\'han trobat vistes.'; + $lang['strcreateview'] = 'Crea una vista'; + $lang['strviewname'] = 'Nom de la vista'; + $lang['strviewneedsname'] = 'Ha d\'anomenar la vista.'; + $lang['strviewneedsdef'] = 'Ha de donar una definiciΓ³ a la vista.'; + $lang['strviewneedsfields'] = 'Ha de seleccionar les columnes de la vista.'; + $lang['strviewcreated'] = 'Vista creada.'; + $lang['strviewcreatedbad'] = 'No s\'ha pogut crear la vista.'; + $lang['strconfdropview'] = 'EstΓ  segur de voler eliminar la vista "%s"?'; + $lang['strviewdropped'] = 'Vista eliminada.'; + $lang['strviewdroppedbad'] = 'No s\'ha pogut eliminar la vista.'; + $lang['strviewupdated'] = 'Vista actualitzada.'; + $lang['strviewupdatedbad'] = 'No s\'ha pogut actualitzar la vista.'; + $lang['strviewlink'] = 'EnllaΓ§ant claus'; + $lang['strviewconditions'] = 'Condicions addicionals'; + $lang['strcreateviewwiz'] = 'Crea una vista amb l\'assistent'; + $lang['strrenamedupfields'] = 'Reanomena els camps duplicats'; + $lang['strdropdupfields'] = 'Elimina els camps duplicats'; + $lang['strerrordupfields'] = 'Error en els camps duplicats'; + $lang['strviewaltered'] = 'Vista modificada.'; + $lang['strviewalteredbad'] = 'No s\'ha pogut modificar la vista.'; + $lang['strspecifyviewtodrop'] = 'Ha d\'especificar almenys una vista per eliminar.'; + + // Sequences + $lang['strsequence'] = 'SeqΓΌΓ¨ncia'; + $lang['strsequences'] = 'SeqΓΌΓ¨ncies'; + $lang['strshowallsequences'] = 'Mostra totes les seqΓΌΓ¨ncies'; + $lang['strnosequence'] = 'No s\'ha trobat la seqΓΌencia.'; + $lang['strnosequences'] = 'No s\'han trobat seqΓΌencies.'; + $lang['strcreatesequence'] = 'Crea una seqΓΌΓ¨ncia'; + $lang['strlastvalue'] = 'Últim valor'; + $lang['strincrementby'] = 'Incrementar en'; + $lang['strstartvalue'] = 'Valor inicial'; + $lang['strrestartvalue'] = 'Valor al reiniciar'; + $lang['strmaxvalue'] = 'Valor mΓ xim'; + $lang['strminvalue'] = 'Valor mΓ­nim'; + $lang['strcachevalue'] = 'Valor de cache'; + $lang['strlogcount'] = 'Compte del registre'; + $lang['strcancycle'] = 'Pot completar un cicle?'; + $lang['striscalled'] = 'Vol incrementar l\ΓΊltim valor abans de retornar el segΓΌent valor (is_called)?'; + $lang['strsequenceneedsname'] = 'Ha d\'especificar un nom per la seqΓΌΓ¨ncia.'; + $lang['strsequencecreated'] = 'SeqΓΌΓ¨ncia creada.'; + $lang['strsequencecreatedbad'] = 'No s\'ha pogut crear la seqΓΌΓ¨ncia.'; + $lang['strconfdropsequence'] = 'EstΓ  segur de voler eliminar la seqΓΌΓ¨ncia "%s"?'; + $lang['strsequencedropped'] = 'SeqΓΌΓ¨ncia eliminada.'; + $lang['strsequencedroppedbad'] = 'No s\'ha pogut eliminar la seqΓΌΓ¨ncia.'; + $lang['strsequencerestart'] = 'SeqΓΌΓ¨ncia reiniciada.'; + $lang['strsequencerestartbad'] = 'No s\'ha pogut reiniciar la seqΓΌΓ¨ncia.'; + $lang['strsequencereset'] = 'SeqΓΌΓ¨ncia reiniciada.'; + $lang['strsequenceresetbad'] = 'No s\'ha pogut reiniciar la seqΓΌΓ¨ncia.'; + $lang['strsequencealtered'] = 'SeqΓΌΓ¨ncia modificada.'; + $lang['strsequencealteredbad'] = 'No s\'ha pogut modificar la seqΓΌΓ¨ncia.'; + $lang['strsetval'] = 'Fixa el valor'; + $lang['strsequencesetval'] = 'Valor de la seqΓΌΓ¨ncia fixat.'; + $lang['strsequencesetvalbad'] = 'No s\'ha pogut fixar el valor de la seqΓΌencia.'; + $lang['strnextval'] = 'Valor incremental'; + $lang['strsequencenextval'] = 'SeqΓΌΓ¨ncia incrementada.'; + $lang['strsequencenextvalbad'] = 'No s\'ha pogut incrementar la seqΓΌΓ¨ncia.'; + $lang['strspecifysequencetodrop'] = 'Ha d\'especificar almenys una seqΓΌΓ¨ncia per eliminar.'; + + // Indexes + $lang['strindex'] = 'Índex'; + $lang['strindexes'] = 'Índexs'; + $lang['strindexname'] = 'Nom de l\'Γ­ndex'; + $lang['strshowallindexes'] = 'Mostra tots els Γ­ndexs'; + $lang['strnoindex'] = 'No s\'ha trobat l\'Γ­ndex'; + $lang['strnoindexes'] = 'No s\'han trobat Γ­ndexs.'; + $lang['strcreateindex'] = 'Crea un Γ­ndex'; + $lang['strtabname'] = 'Nom de la pestanya'; + $lang['strcolumnname'] = 'Nom de la columna'; + $lang['strindexneedsname'] = 'Ha d\'anomenar l\'Γ­ndex.'; + $lang['strindexneedscols'] = 'Els Γ­ndexs requereixen un nΓΊmero vΓ lid de columnes.'; + $lang['strindexcreated'] = 'Índex creat'; + $lang['strindexcreatedbad'] = 'No s\'ha pogut crear l\'Γ­ndex.'; + $lang['strconfdropindex'] = 'EstΓ  segur de voler eliminar l\'Γ­ndex "%s"?'; + $lang['strindexdropped'] = 'Índex eliminat.'; + $lang['strindexdroppedbad'] = 'No s\'ha pogut eliminar l\'Γ­ndex.'; + $lang['strkeyname'] = 'Nom de la clau'; + $lang['struniquekey'] = 'Clau ΓΊnica'; + $lang['strprimarykey'] = 'Clau primΓ ria'; + $lang['strindextype'] = 'Tipus d\'Γ­ndex'; + $lang['strtablecolumnlist'] = 'Columnes a la taula'; + $lang['strindexcolumnlist'] = 'Columnes a l\'Γ­ndex'; + $lang['strclusteredgood'] = 'ClΓΊster completat.'; + $lang['strclusteredbad'] = 'No s\'ha pogut crear el clΓΊster.'; + $lang['strconcurrently'] = 'Actualment'; + $lang['strnoclusteravailable'] = 'No hi ha el clΓΊster disponible en l\'Γ­ndex.'; + + // Rules + $lang['strrules'] = 'Regles'; + $lang['strrule'] = 'Regla'; + $lang['strshowallrules'] = 'Mostra totes les regles'; + $lang['strnorule'] = 'No s\'ha trobat la regla.'; + $lang['strnorules'] = 'No s\'han trobat regles.'; + $lang['strcreaterule'] = 'Crea una regla'; + $lang['strrulename'] = 'Nom de la regla'; + $lang['strruleneedsname'] = 'Ha d\'especificar un nom per la regla'; + $lang['strrulecreated'] = 'Regla creada.'; + $lang['strrulecreatedbad'] = 'No s\'ha pogut crear la regla.'; + $lang['strconfdroprule'] = 'EstΓ  segur de voler eliminar la regla "%s" a "%s"?'; + $lang['strruledropped'] = 'Regla eliminada.'; + $lang['strruledroppedbad'] = 'No s\'ha pogut eliminar la regla.'; + + // Constraints + $lang['strconstraint'] = 'RestricciΓ³'; + $lang['strconstraints'] = 'Restriccions'; + $lang['strshowallconstraints'] = 'Mostra totes les restriccions'; + $lang['strnoconstraints'] = 'No s\'han trobat restriccions.'; + $lang['strcreateconstraint'] = 'Crea una restricciΓ³'; + $lang['strconstraintcreated'] = 'RestricciΓ³ creada.'; + $lang['strconstraintcreatedbad'] = 'No s\'ha pogut crear la restricciΓ³.'; + $lang['strconfdropconstraint'] = 'EstΓ  segur de voler eliminar la restricciΓ³ "%s" de "%s"?'; + $lang['strconstraintdropped'] = 'RestricciΓ³ eliminada.'; + $lang['strconstraintdroppedbad'] = 'No s\'ha pogut eliminar la restricciΓ³.'; + $lang['straddcheck'] = 'Agrega un control'; + $lang['strcheckneedsdefinition'] = 'La restricciΓ³ de control necessita una definiciΓ³.'; + $lang['strcheckadded'] = 'RestricciΓ³ de control agregada.'; + $lang['strcheckaddedbad'] = 'No s\'ha pogut agregar la restricciΓ³ de control.'; + $lang['straddpk'] = 'Agrega una clau primΓ ria'; + $lang['strpkneedscols'] = 'La clau primΓ ria requereix almenys una columna.'; + $lang['strpkadded'] = 'Clau primΓ ria agregada.'; + $lang['strpkaddedbad'] = 'No s\'ha pogut agregar la clau primΓ ria.'; + $lang['stradduniq'] = 'Agrega una clau ΓΊnica'; + $lang['struniqneedscols'] = 'La clau ΓΊnica requereix almenys una columna.'; + $lang['struniqadded'] = 'Clau ΓΊnica agregada.'; + $lang['struniqaddedbad'] = 'No s\'ha pogut agregar la clau ΓΊnica.'; + $lang['straddfk'] = 'Agrega una clau externa'; + $lang['strfkneedscols'] = 'La clau externa requereix almenys una columna.'; + $lang['strfkneedstarget'] = 'La clau externa requereix una taula de referΓ¨ncia.'; + $lang['strfkadded'] = 'Clau externa agregada.'; + $lang['strfkaddedbad'] = 'No s\'ha pogut agregar la clau externa.'; + $lang['strfktarget'] = 'Taula de destΓ­'; + $lang['strfkcolumnlist'] = 'Columnes a la clau'; + $lang['strondelete'] = 'A L\'ELIMINAR'; + $lang['stronupdate'] = 'A L\'ACTUALITZAR'; + + // Functions + $lang['strfunction'] = 'FunciΓ³'; + $lang['strfunctions'] = 'Funcions'; + $lang['strshowallfunctions'] = 'Mostra totes les funcions'; + $lang['strnofunction'] = 'No s\'ha trobat la funciΓ³.'; + $lang['strnofunctions'] = 'No s\'han trobat funcions'; + $lang['strcreateplfunction'] = 'Crea una funciΓ³ SQL/PL'; + $lang['strcreateinternalfunction'] = 'Crea una funciΓ³ interna'; + $lang['strcreatecfunction'] = 'Crea una funciΓ³ C'; + $lang['strfunctionname'] = 'Nom de la funciΓ³'; + $lang['strreturns'] = 'Retorna'; + $lang['strproglanguage'] = 'Llenguatge de programaciΓ³'; + $lang['strfunctionneedsname'] = 'Ha de donar un nom a la funciΓ³.'; + $lang['strfunctionneedsdef'] = 'Ha de donar una definiciΓ³ a la funciΓ³.'; + $lang['strfunctioncreated'] = 'FunciΓ³ creada.'; + $lang['strfunctioncreatedbad'] = 'No s\'ha pogut crear la funciΓ³.'; + $lang['strconfdropfunction'] = 'EstΓ  segur de voler eliminar la funciΓ³ "%s"?'; + $lang['strfunctiondropped'] = 'FunciΓ³ eliminada.'; + $lang['strfunctiondroppedbad'] = 'No s\'ha pogut eliminar la funciΓ³.'; + $lang['strfunctionupdated'] = 'FunciΓ³ actualitzada.'; + $lang['strfunctionupdatedbad'] = 'No s\'ha pogut actualitzar la funciΓ³.'; + $lang['strobjectfile'] = 'Fitxer objecte'; + $lang['strlinksymbol'] = 'EnllaΓ§ simbΓ²lic'; + $lang['strarguments'] = 'Arguments'; + $lang['strargmode'] = 'Mode'; + $lang['strargtype'] = 'Tipus'; + $lang['strargadd'] = 'Afegeix un altre argument'; + $lang['strargremove'] = 'Elimina aquest argument'; + $lang['strargnoargs'] = 'Aquesta funciΓ³ no tindrΓ  arguments.'; + $lang['strargenableargs'] = 'Habilita els arguments passats a aquesta funciΓ³.'; + $lang['strargnorowabove'] = 'Hi ha d\'haver una fila sobre aquesta fila.'; + $lang['strargnorowbelow'] = 'Hi ha d\'haver una fila sota aquesta fila.'; + $lang['strargraise'] = 'Mou amunt.'; + $lang['strarglower'] = 'Mou avall.'; + $lang['strargremoveconfirm'] = 'EstΓ  segur de voler eliminar aquest argument? AixΓ² NO es pot desfer.'; + $lang['strfunctioncosting'] = 'FunciΓ³ de Cost'; + $lang['strresultrows'] = 'Files Resultants'; + $lang['strexecutioncost'] = 'Cost de l\'ExecuciΓ³'; + $lang['strspecifyfunctiontodrop'] = 'Ha d\'especificar almenys una funciΓ³ per eliminar.'; + + // Triggers + $lang['strtrigger'] = 'Disparador'; + $lang['strtriggers'] = 'Disparadors'; + $lang['strshowalltriggers'] = 'Mostrar tots els disparadors'; + $lang['strnotrigger'] = 'No s\'ha trobat el disparador.'; + $lang['strnotriggers'] = 'No s\'han trobat disparadors.'; + $lang['strcreatetrigger'] = 'Crea un disparador'; + $lang['strtriggerneedsname'] = 'Ha de donar un nom al disparador.'; + $lang['strtriggerneedsfunc'] = 'Ha d\'especificar una funciΓ³ pel disparador.'; + $lang['strtriggercreated'] = 'Disparador creat.'; + $lang['strtriggercreatedbad'] = 'No s\'ha pogut crear el disparador.'; + $lang['strconfdroptrigger'] = 'EstΓ  segur de voler eliminar el disparador "%s" de "%s"?'; + $lang['strconfenabletrigger'] = 'EstΓ  segur de voler habilitar el disparador "%s" a "%s"?'; + $lang['strconfdisabletrigger'] = 'EstΓ  segur de voler inhabilitar el disparador "%s" a "%s"?'; + $lang['strtriggerdropped'] = 'Disparador eliminat.'; + $lang['strtriggerdroppedbad'] = 'No s\'ha pogut eliminar el disparador.'; + $lang['strtriggerenabled'] = 'Disparador habilitat.'; + $lang['strtriggerenabledbad'] = 'No s\'ha pogut habilitar el disparador.'; + $lang['strtriggerdisabled'] = 'Disparador inhabilitat.'; + $lang['strtriggerdisabledbad'] = 'No s\'ha pogut inhabilitar el disparador.'; + $lang['strtriggeraltered'] = 'Disparador modificat.'; + $lang['strtriggeralteredbad'] = 'No s\'ha pogut modificar el disparador.'; + $lang['strforeach'] = 'Per cada'; + + // Types + $lang['strtype'] = 'Tipus'; + $lang['strtypes'] = 'Tipus'; + $lang['strshowalltypes'] = 'Mostrar tots els tipus'; + $lang['strnotype'] = 'No s\'ha trobat el tipus.'; + $lang['strnotypes'] = 'No s\'han trobat els tipus.'; + $lang['strcreatetype'] = 'Crea un tipus'; + $lang['strcreatecomptype'] = 'Crea un tipus compost'; + $lang['strcreateenumtype'] = 'Crea un tipus d\'enumeraciΓ³'; + $lang['strtypeneedsfield'] = 'Ha d\'especificar almenys un camp.'; + $lang['strtypeneedsvalue'] = 'Ha d\'especificar almenys un valor.'; + $lang['strtypeneedscols'] = 'Ha d\'especificar un nΓΊmero vΓ lid de camps.'; + $lang['strtypeneedsvals'] = 'Ha d\'especificar un nΓΊmero vΓ lid de valors.'; + $lang['strinputfn'] = 'FunciΓ³ d\'entrada'; + $lang['stroutputfn'] = 'FunciΓ³ de sortida'; + $lang['strpassbyval'] = 'Passat per valor?'; + $lang['stralignment'] = 'Alineament'; + $lang['strelement'] = 'Element'; + $lang['strdelimiter'] = 'Delimitador'; + $lang['strstorage'] = 'Emmagatzemament'; + $lang['strfield'] = 'Camp'; + $lang['strnumfields'] = 'Num. de camps'; + $lang['strnumvalues'] = 'Num. de valors'; + $lang['strtypeneedsname'] = 'Ha de donar un nom al tipus.'; + $lang['strtypeneedslen'] = 'Ha de donar una longitud al tipus.'; + $lang['strtypecreated'] = 'Tipus creat'; + $lang['strtypecreatedbad'] = 'No s\'ha pogut crear el tipus.'; + $lang['strconfdroptype'] = 'EstΓ  segur de voler eliminar el tipus "%s"?'; + $lang['strtypedropped'] = 'Tipus eliminat.'; + $lang['strtypedroppedbad'] = 'No s\'ha pogut eliminar el tipus.'; + $lang['strflavor'] = 'Varietat'; + $lang['strbasetype'] = 'Base'; + $lang['strcompositetype'] = 'Compost'; + $lang['strpseudotype'] = 'Pseudo'; + $lang['strenum'] = 'EnumeraciΓ³'; + $lang['strenumvalues'] = 'Valors de l\'enumeraciΓ³'; + + // Schemas + $lang['strschema'] = 'Esquema'; + $lang['strschemas'] = 'Esquemes'; + $lang['strshowallschemas'] = 'Mostra tots els esquemes'; + $lang['strnoschema'] = 'No s\'ha trobat l\'esquema.'; + $lang['strnoschemas'] = 'No s\'han trobat esquemes.'; + $lang['strcreateschema'] = 'Crea un esquema'; + $lang['strschemaname'] = 'Nom de l\'esquema'; + $lang['strschemaneedsname'] = 'Ha d\'anomenar l\'esquema.'; + $lang['strschemacreated'] = 'Esquema creat'; + $lang['strschemacreatedbad'] = 'No s\'ha pogut crear l\'esquema.'; + $lang['strconfdropschema'] = 'EstΓ  segur de voler eliminar l\'esquema "%s"?'; + $lang['strschemadropped'] = 'Esquema eliminat.'; + $lang['strschemadroppedbad'] = 'No s\'ha pogut eliminar l\'esquema.'; + $lang['strschemaaltered'] = 'Esquema modificat.'; + $lang['strschemaalteredbad'] = 'No s\'ha pogut modificar l\'esquema.'; + $lang['strsearchpath'] = 'CamΓ­ de cerca de l\'esquema'; + $lang['strspecifyschematodrop'] = 'Ha d\especificar almenys un esquema per eliminar.'; + + // Reports + + // Domains + $lang['strdomain'] = 'Domini'; + $lang['strdomains'] = 'Dominis'; + $lang['strshowalldomains'] = 'Mostrar tots els dominis'; + $lang['strnodomains'] = 'No s\'han trobat dominis.'; + $lang['strcreatedomain'] = 'Crea un domini'; + $lang['strdomaindropped'] = 'Domini eliminat.'; + $lang['strdomaindroppedbad'] = 'No s\'ha pogut eliminar el domini.'; + $lang['strconfdropdomain'] = 'EstΓ  segur de voler eliminar el domini "%s"?'; + $lang['strdomainneedsname'] = 'Ha d\'anomenar el domini.'; + $lang['strdomaincreated'] = 'Domini creat.'; + $lang['strdomaincreatedbad'] = 'No s\'ha pogut crear el domini.'; + $lang['strdomainaltered'] = 'Domini modificat.'; + $lang['strdomainalteredbad'] = 'No s\'ha pogut modificar el domini.'; + + // Operators + $lang['stroperator'] = 'Operador'; + $lang['stroperators'] = 'Operadors'; + $lang['strshowalloperators'] = 'Mostra tots els operadors'; + $lang['strnooperator'] = 'No s\'ha trobat l\'operador.'; + $lang['strnooperators'] = 'No s\'han trobat operadors.'; + $lang['strcreateoperator'] = 'Crea un operador'; + $lang['strleftarg'] = 'Tipus de l\'arg. esquerre'; + $lang['strrightarg'] = 'Tipus de l\'arg. dret'; + $lang['strcommutator'] = 'Commutador'; + $lang['strnegator'] = 'NegaciΓ³'; + $lang['strrestrict'] = 'Restringeix'; + $lang['strjoin'] = 'Unieix'; + $lang['strhashes'] = 'Hash'; + $lang['strmerges'] = 'Fussiona'; + $lang['strleftsort'] = 'Sort esquerre'; + $lang['strrightsort'] = 'Sort dret'; + $lang['strlessthan'] = 'Menor que'; + $lang['strgreaterthan'] = 'Major que'; + $lang['stroperatorneedsname'] = 'Ha d\'anomenar l\'operador.'; + $lang['stroperatorcreated'] = 'Operador creat'; + $lang['stroperatorcreatedbad'] = 'No s\'ha pogut crear l\'operador.'; + $lang['strconfdropoperator'] = 'EstΓ  segur de voler eliminar l\'operador "%s"?'; + $lang['stroperatordropped'] = 'Operador eliminat.'; + $lang['stroperatordroppedbad'] = 'No s\'ha pogut eliminar l\'operador.'; + + // Casts + $lang['strcasts'] = 'ConversiΓ³ de tipus'; + $lang['strnocasts'] = 'No s\'han trobat conversions.'; + $lang['strsourcetype'] = 'Tipus inicial'; + $lang['strtargettype'] = 'Tipus final'; + $lang['strimplicit'] = 'ImplΓ­cit'; + $lang['strinassignment'] = 'En assignaciΓ³'; + $lang['strbinarycompat'] = '(Compatible amb binari)'; + + // Conversions + $lang['strconversions'] = 'Conversions'; + $lang['strnoconversions'] = 'No s\'han trobat conversions.'; + $lang['strsourceencoding'] = 'CodificaciΓ³ inicial'; + $lang['strtargetencoding'] = 'CodificaciΓ³ final'; + + // Languages + $lang['strlanguages'] = 'Llenguatges'; + $lang['strnolanguages'] = 'No s\'han trobat llenguatges.'; + $lang['strtrusted'] = 'Fiable'; + + // Info + $lang['strnoinfo'] = 'No hi ha informaciΓ³ disponible.'; + $lang['strreferringtables'] = 'Referent a les taules'; + $lang['strparenttables'] = 'Taules pare'; + $lang['strchildtables'] = 'Taules fill'; + + // Aggregates + $lang['straggregate'] = 'Agregat'; + $lang['straggregates'] = 'Agregats'; + $lang['strnoaggregates'] = 'No s\'han trobat agregats'; + $lang['stralltypes'] = '(Tots els tipus)'; + $lang['strcreateaggregate'] = 'Crea un agregat'; + $lang['straggrbasetype'] = 'Tipus de dades d\'entrada'; + $lang['straggrsfunc'] = 'FunciΓ³ de la transiciΓ³ de l\'estat'; + $lang['straggrstype'] = 'Tipus de dades pel valor de l\'estat'; + $lang['straggrffunc'] = 'FunciΓ³ final'; + $lang['straggrinitcond'] = 'CondiciΓ³ inicial'; + $lang['straggrsortop'] = 'Operador ordre'; + $lang['strconfdropaggregate'] = 'EstΓ  segur de voler elimnar l\'agregat \'%s\'?'; + $lang['straggregatedropped'] = 'Agregat eliminat.'; + $lang['straggregatedroppedbad'] = 'No s\'ha pogut eliminar l\'agregat.'; + $lang['straggraltered'] = 'Agregat modificat.'; + $lang['straggralteredbad'] = 'No s\'ha pogut modificar l\'agregat.'; + $lang['straggrneedsname'] = 'Ha d\'especificar un nom per l\'agregat'; + $lang['straggrneedsbasetype'] = 'Ha d\'especificar el tipus de dades d\'entrada per l\'agregat'; + $lang['straggrneedssfunc'] = 'Ha d\'especificar el nom de la funciΓ³ de transiciΓ³ de l\'estat per l\'agregat'; + $lang['straggrneedsstype'] = 'Ha d\'especificar el tipus de dades pel valor de l\'estat de l\'agregat'; + $lang['straggrcreated'] = 'Agregat creat.'; + $lang['straggrcreatedbad'] = 'No s\'ha pogut crear l\agregat.'; + $lang['straggrshowall'] = 'Mostra tots els agregats'; + + // Operator Classes + $lang['stropclasses'] = 'Classes d\'operadors'; + $lang['strnoopclasses'] = 'No s\'han trobat classes d\'operadors.'; + $lang['straccessmethod'] = 'MΓ¨tode d\'accΓ©s'; + + // Stats and performance + $lang['strrowperf'] = 'Row Performance'; + $lang['strioperf'] = 'I/O Performance'; + $lang['stridxrowperf'] = 'Index Row Performance'; + $lang['stridxioperf'] = 'Index I/O Performance'; + $lang['strpercent'] = '%'; + $lang['strsequential'] = 'Sequential'; + $lang['strscan'] = 'Scan'; + $lang['strread'] = 'Read'; + $lang['strfetch'] = 'Fetch'; + $lang['strheap'] = 'Heap'; + $lang['strtoast'] = 'TOAST'; + $lang['strtoastindex'] = 'TOAST Index'; + $lang['strcache'] = 'Cache'; + $lang['strdisk'] = 'Disk'; + $lang['strrows2'] = 'Rows'; + + // Tablespaces + $lang['strtablespace'] = 'Tablespace'; + $lang['strtablespaces'] = 'Tablespaces'; + $lang['strshowalltablespaces'] = 'Mostrar tots els tablespaces'; + $lang['strnotablespaces'] = 'No s\'han trobat tablespaces'; + $lang['strcreatetablespace'] = 'Crea un tablespace'; + $lang['strlocation'] = 'LocalitzaciΓ³'; + $lang['strtablespaceneedsname'] = 'Ha de donar un nom al tablespace.'; + $lang['strtablespaceneedsloc'] = 'Ha de donar un directori on crear el tablespace.'; + $lang['strtablespacecreated'] = 'Tablespace creat.'; + $lang['strtablespacecreatedbad'] = 'No s\'ha pogut crear el Tablespace.'; + $lang['strconfdroptablespace'] = 'EstΓ  segur de voler eliminar el tablespace "%s"?'; + $lang['strtablespacedropped'] = 'Tablespace eliminat.'; + $lang['strtablespacedroppedbad'] = 'No s\'ha pogut eliminar el tablespace.'; + $lang['strtablespacealtered'] = 'Tablespace modificat.'; + $lang['strtablespacealteredbad'] = 'No s\'ha pogut modifcar el tablespace.'; + + // Miscellaneous + $lang['strtopbar'] = '%s corrent a %s:%s -- Ha entrat com a usuari "%s"'; + $lang['strtimefmt'] = 'jS M, Y g:iA'; + $lang['strhelp'] = 'Ajuda'; + $lang['strhelpicon'] = '?'; + $lang['strhelppagebrowser'] = 'Cercador de pΓ gines d\'ajuda'; + $lang['strselecthelppage'] = 'Selecciona una pΓ gina d\'ajuda'; + $lang['strinvalidhelppage'] = 'PΓ gina d\'ajuda invΓ lida.'; + $lang['strlogintitle'] = 'Entrar a %s'; + $lang['strlogoutmsg'] = 'Sortir de %s'; + $lang['strloading'] = 'Carregant...'; + $lang['strerrorloading'] = 'Error Carregant'; + $lang['strclicktoreload'] = 'Clicar per recarregar'; + + // Autovacuum + $lang['strautovacuum'] = 'Autovacuum'; + $lang['strturnedon'] = 'Activat'; + $lang['strturnedoff'] = 'Desactivat'; + $lang['strenabled'] = 'Habilitat'; + $lang['strnovacuumconf'] = 'No s\'ha trobat la configuraciΓ³ de l\'autovacuum.'; + $lang['strvacuumbasethreshold'] = 'Llindar Base del Vacuum'; + $lang['strvacuumscalefactor'] = 'Factor d\'Escala del Vacuum'; + $lang['stranalybasethreshold'] = 'Llindar Base de l\'Analyze'; + $lang['stranalyzescalefactor'] = 'Factor d\'Escala de l\'Analyze'; + $lang['strvacuumcostdelay'] = 'Cost del Retard del Vacuum'; + $lang['strvacuumcostlimit'] = 'LΓ­mit de Cost del Vacuum'; + $lang['strvacuumpertable'] = 'ConfiguraciΓ³ de l\'autovacuum per taula'; + $lang['straddvacuumtable'] = 'Afegeix la configuraciΓ³ de l\'autovacuum per una taula'; + $lang['streditvacuumtable'] = 'Edita la configuraciΓ³ de l\'autovacuum de la taula %s'; + $lang['strdelvacuumtable'] = 'Vol eliminar la configuraciΓ³ de l\'autovacuum de la taula %s ?'; + $lang['strvacuumtablereset'] = 'S\'ha inicialitzat la configuraciΓ³ de l\'autovacuum de la taula %s als valors per defecte'; + $lang['strdelvacuumtablefail'] = 'No s\'ha pogut eliminar la configuraciΓ³ de l\'autovacuum de la taula %s'; + $lang['strsetvacuumtablesaved'] = 'ConfiguraciΓ³ de l\'autovacuum de la taula %s desada.'; + $lang['strsetvacuumtablefail'] = 'Ha fallat la configuraciΓ³ de l\'autovacuum de la taula %s.'; + $lang['strspecifydelvacuumtable'] = 'Ha d\'especificar la taula d\'on vol eliminar els parΓ metres de l\'autovacuum.'; + $lang['strspecifyeditvacuumtable'] = 'Ha d\'especificar la taula d\'on vol editar els parΓ metres de l\'autovacuum.'; + $lang['strnotdefaultinred'] = 'Els parΓ metres no per defecte en vermell.'; + + // Table-level Locks + $lang['strlocks'] = 'Bloquejos'; + $lang['strtransaction'] = 'ID de la TransacciΓ³'; + $lang['strvirtualtransaction'] = 'ID de la TransacciΓ³ Virtual'; + $lang['strprocessid'] = 'ID del ProcΓ©s'; + $lang['strmode'] = 'Mode de Bloqueig'; + $lang['strislockheld'] = 'S\'aguanta el bloqueig?'; + + // Prepared transactions + $lang['strpreparedxacts'] = 'Transaccions preparades'; + $lang['strxactid'] = 'ID de la TransacciΓ³'; + $lang['strgid'] = 'ID Global'; + + // Fulltext search + $lang['strfulltext'] = 'Cerca del Text Completa (FTS)'; + $lang['strftsconfig'] = 'ConfiguraciΓ³ FTS'; + $lang['strftsconfigs'] = 'Configuracions'; + $lang['strftscreateconfig'] = 'Crea una configuraciΓ³ FTS'; + $lang['strftscreatedict'] = 'Crea un diccionari'; + $lang['strftscreatedicttemplate'] = 'Crea una plantilla d\'un diccionari'; + $lang['strftscreateparser'] = 'Crea un analitzador'; + $lang['strftsnoconfigs'] = 'No s\'ha trobat cap configuraciΓ³ FTS.'; + $lang['strftsconfigdropped'] = 'ConfiguraciΓ³ FTS eliminada.'; + $lang['strftsconfigdroppedbad'] = 'No s\'ha pogut eliminar la configuraciΓ³ FTS.'; + $lang['strconfdropftsconfig'] = 'EstΓ  segur de voler eliminar la configuraciΓ³ FTS "%s"?'; + $lang['strconfdropftsdict'] = 'EstΓ  segur de voler eliminar el diccionari FTS "%s"?'; + $lang['strconfdropftsmapping'] = 'EstΓ  segur de voler eliminar el traΓ§at "%s" de la configuraciΓ³ FTS "%s"?'; + $lang['strftstemplate'] = 'Plantilla'; + $lang['strftsparser'] = 'Analitzador'; + $lang['strftsconfigneedsname'] = 'Ha de donar un nom a la configuraciΓ³ FTS.'; + $lang['strftsconfigcreated'] = 'ConfiguraciΓ³ FTS creada.'; + $lang['strftsconfigcreatedbad'] = 'No s\'ha pogut crear la configuraciΓ³ FTS.'; + $lang['strftsmapping'] = 'TraΓ§at'; + $lang['strftsdicts'] = 'Diccionaris'; + $lang['strftsdict'] = 'Diccionari'; + $lang['strftsemptymap'] = 'Mapa de la configuraciΓ³ FTS buida.'; + $lang['strftsconfigaltered'] = 'ConfiguraciΓ³ FTS modificada.'; + $lang['strftsconfigalteredbad'] = 'No s\'ha pogut modificar la configuraciΓ³ FTS.'; + $lang['strftsconfigmap'] = 'Mapa de la configuraciΓ³ FTS'; + $lang['strftsparsers'] = 'Analitzadors FTS'; + $lang['strftsnoparsers'] = 'No hi ha analitzadors FTS disponibles.'; + $lang['strftsnodicts'] = 'No hi ha diccionaris FTS disponibles.'; + $lang['strftsdictcreated'] = 'Diccionari FTS creat.'; + $lang['strftsdictcreatedbad'] = 'No s\ha pogut crear el diccionari FTS.'; + $lang['strftslexize'] = 'Lexize'; + $lang['strftsinit'] = 'Inicialitzador'; + $lang['strftsoptionsvalues'] = 'Opcions i valors'; + $lang['strftsdictneedsname'] = 'Ha de donar un nom al diccionari FTS.'; + $lang['strftsdictdropped'] = 'Diccionari FTS eliminat.'; + $lang['strftsdictdroppedbad'] = 'No s\'ha pogut eliminar el diccionari FTS.'; + $lang['strftsdictaltered'] = 'Diccionari FTS modificat.'; + $lang['strftsdictalteredbad'] = 'No s\'ha pogut modificar el diccionari FTS.'; + $lang['strftsaddmapping'] = 'Afegeix un nou traΓ§at'; + $lang['strftsspecifymappingtodrop'] = 'Ha d\'especificar almenys un traΓ§at per eliminar.'; + $lang['strftsspecifyconfigtoalter'] = 'Ha d\'especificar la configuraciΓ³ FTS per modificar'; + $lang['strftsmappingdropped'] = 'TraΓ§at FTS eliminat.'; + $lang['strftsmappingdroppedbad'] = 'No s\'ha pogut eliminar el traΓ§at FTS.'; + $lang['strftsnodictionaries'] = 'No s\'han trobat diccionaris.'; + $lang['strftsmappingaltered'] = 'TraΓ§at FTS modificat.'; + $lang['strftsmappingalteredbad'] = 'No s\'ha pogut modificar el traΓ§at FTS.'; + $lang['strftsmappingadded'] = 'TraΓ§at FTS afegit.'; + $lang['strftsmappingaddedbad'] = 'No s\'ha pogut afegir el traΓ§at FTS.'; + $lang['strftstabconfigs'] = 'Configuracions'; + $lang['strftstabdicts'] = 'Diccionaris'; + $lang['strftstabparsers'] = 'Analitzadors'; + $lang['strftscantparsercopy'] = 'No es pot especificar alhora un analitzador i una plantilla durant la creaciΓ³ de la configuraciΓ³ de la cerca de text.'; +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/chinese-sim.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/chinese-sim.php new file mode 100644 index 00000000..49b056e4 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/chinese-sim.php @@ -0,0 +1,359 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/chinese-tr.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/chinese-tr.php new file mode 100644 index 00000000..766ccb53 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/chinese-tr.php @@ -0,0 +1,583 @@ +'; + $lang['strfirst'] = '<< 第一ζ­₯'; + $lang['strlast'] = 'ζœ€εΎŒδΈ€ζ­₯ >>'; + $lang['strfailed'] = 'ε€±ζ•—'; + $lang['strcreate'] = 'ε»Ίη«‹'; + $lang['strcreated'] = 'ε·²ε»Ίη«‹'; + $lang['strcomment'] = '註釋'; + $lang['strlength'] = 'ι•·εΊ¦'; + $lang['strdefault'] = '預設值'; + $lang['stralter'] = 'δΏζ”Ή'; + $lang['strok'] = 'η’Ίεš'; + $lang['strcancel'] = 'ε–ζΆˆ'; + $lang['strsave'] = 'ε„²ε­˜'; + $lang['strreset'] = '重設'; + $lang['strinsert'] = '插ε…₯'; + $lang['strselect'] = '選取'; + $lang['strdelete'] = 'εˆͺ陀'; + $lang['strupdate'] = 'ζ›΄ζ–°'; + $lang['strreferences'] = '參考'; + $lang['stryes'] = '是'; + $lang['strno'] = '否'; + $lang['strtrue'] = '真'; + $lang['strfalse'] = '假'; + $lang['stredit'] = 'δΏζ”Ή'; + $lang['strcolumns'] = 'θ³‡ζ–™θ‘Œ'; + $lang['strrows'] = 'θ³‡ζ–™εˆ—'; + $lang['strrowsaff'] = 'θ³‡ζ–™εˆ—ε—ε½±ιŸΏγ€‚'; + $lang['strobjects'] = '物仢'; + $lang['strexample'] = 'δΎ‹ε¦‚οΌš'; + $lang['strback'] = 'θΏ”ε›ž'; + $lang['strqueryresults'] = 'ζŸ₯詒硐果'; + $lang['strshow'] = 'ι‘―η€Ί'; + $lang['strempty'] = 'η©Ί'; + $lang['strlanguage'] = 'θͺžθ¨€'; + $lang['strencoding'] = 'η·¨η’Ό'; + $lang['strvalue'] = 'ε€Ό'; + $lang['strunique'] = '獨一鍡'; + $lang['strprimary'] = '主紒引鍡'; + $lang['strexport'] = 'εŒ―ε‡Ί'; + $lang['strimport'] = '匯ε…₯'; + $lang['strsql'] = 'SQL'; + $lang['strgo'] = '開始'; + $lang['stradmin'] = 'η‘理'; + $lang['strvacuum'] = '清理(Vacuum)'; + $lang['stranalyze'] = 'εˆ†ζž'; + $lang['strclusterindex'] = '叒集'; + $lang['strclustered'] = '叒集?'; + $lang['strreindex'] = '重建紒引'; + $lang['strrun'] = '執葌'; + $lang['stradd'] = '加ε…₯'; + $lang['strevent'] = 'δΊ‹δ»Ά'; + $lang['strwhere'] = 'Where'; + $lang['strinstead'] = 'Do Instead'; + $lang['strwhen'] = 'η•Ά'; + $lang['strformat'] = '格式'; + $lang['strdata'] = '資料'; + $lang['strconfirm'] = 'η’Ίθͺ'; + $lang['strexpression'] = '葨瀺式'; + $lang['strellipsis'] = '...'; + $lang['strexpand'] = '展開'; + $lang['strcollapse'] = 'ζ‘Ίη–Š'; + $lang['strexplain'] = 'ι—‘ζ˜Ž'; + $lang['strexplainanalyze'] = 'ι—‘ζ˜Žεˆ†ζž'; + $lang['strfind'] = 'ε°‹ζ‰Ύ'; + $lang['stroptions'] = '選項'; + $lang['strrefresh'] = '重新整理'; + $lang['strdownload'] = 'δΈ‹θΌ‰'; + $lang['strdownloadgzipped'] = 'δ»₯gzip壓ηΈεΎŒδΈ‹θΌ‰'; + $lang['strinfo'] = 'θ³‡θ¨Š'; + $lang['stroids'] = 'OIDs'; + $lang['stradvanced'] = 'ι€²ιšŽ'; + $lang['strvariables'] = 'θŠζ•Έ'; + $lang['strprocess'] = '程序'; + $lang['strprocesses'] = '程序'; + $lang['strsetting'] = 'θ¨­εš'; + $lang['streditsql'] = 'η·¨θΌ―SQL'; + $lang['strruntime'] = 'ηΈ½ε…±εŸ·θ‘Œζ™‚ι–“: %s ms'; + $lang['strpaginate'] = 'εˆ†ι ι‘―η€Ίη΅ζžœ'; + $lang['struploadscript'] = 'ζˆ–ζ˜―δΈŠε‚³δΈ€ε€‹SQLζŒ‡δ»€ζͺ”:'; + $lang['strstarttime'] = '開始時間'; + $lang['strfile'] = 'ζͺ”ζ‘ˆ'; + $lang['strfileimported'] = 'ζͺ”ζ‘ˆε·²εŒ―ε…₯。'; + + // Error handling + $lang['strbadconfig'] = 'ζ‚¨ηš„ config.inc.php η„‘ζ•ˆγ€‚θ«‹εˆ©η”¨ config.inc.php-dist ε»Ίη«‹ζ‚¨ηš„ config.inc.php ζͺ”。'; + $lang['strnotloaded'] = 'ζ‚¨ηš„ PHP η’°ε’ƒζœͺε‰θ£εΏ…ιœ€ηš„θ³‡ζ–™εΊ«ζ”―援。'; + $lang['strbadschema'] = 'ζŒ‡εšδΊ†η„‘ζ•ˆηš„ζ¨‘εΌ (schema)。'; + $lang['strbadencoding'] = '資料庫焑法設εšη”¨ζˆΆη«―ηš„η·¨η’Όζ–ΉεΌγ€‚'; + $lang['strsqlerror'] = 'SQL 錯θͺ€οΌš'; + $lang['strinstatement'] = 'ζ–Όι™³θΏ°ε…§οΌš'; + $lang['strinvalidparam'] = 'η„‘ζ•ˆηš„ script θŠζ•Έγ€‚'; + $lang['strnodata'] = 'ζ‰ΎδΈεˆ°δ»»δ½•θ³‡ζ–™εˆ—γ€‚'; + $lang['strnoobjects'] = 'ζ‰ΎδΈεˆ°δ»»δ½•η‰©δ»Άγ€‚'; + $lang['strrownotunique'] = 'ζ­€ι‘―ζ–™εˆ—η„‘η¨η‰Ήθ­˜εˆ₯項。'; + $lang['strnouploads'] = 'δΈŠε‚³ζͺ”ζ‘ˆεŠŸθƒ½ε·²εœη”¨γ€‚'; + $lang['strimporterror'] = '匯ε…₯錯θͺ€γ€‚'; + $lang['strimporterrorline'] = '匯ε…₯錯θͺ€η™Όη”Ÿζ–Όη¬¬ %s θ‘Œγ€‚'; + + // Tables + $lang['strtable'] = '資料葨'; + $lang['strtables'] = '資料葨'; + $lang['strshowalltables'] = 'ι‘―η€Ίζ‰€ζœ‰ηš„θ³‡ζ–™θ‘¨'; + $lang['strnotables'] = 'ζ‰ΎδΈεˆ°ζ­€θ³‡ζ–™θ‘¨γ€‚'; + $lang['strnotable'] = 'ζ‰ΎδΈεˆ°δ»»δ½•θ³‡ζ–™θ‘¨γ€‚'; + $lang['strcreatetable'] = '建立新資料葨'; + $lang['strtablename'] = '資料葨名'; + $lang['strtableneedsname'] = 'ζ‚¨ιœ€η‚Ίζ‚¨ηš„θ³‡ζ–™θ‘¨ε‘½εγ€‚'; + $lang['strtableneedsfield'] = 'ζ‚¨θ‡³ε°‘ζ‡‰ζŒ‡εšδΈ€ε€‹ζ¬„位。'; + $lang['strtableneedscols'] = 'θ³‡ζ–™θ‘¨ιœ€θ¦δΈ€εšζ•Έη›ηš„θ³‡ζ–™θ‘Œγ€‚'; + $lang['strtablecreated'] = 'ζˆεŠŸε»Ίη«‹θ³‡ζ–™θ‘¨γ€‚'; + $lang['strtablecreatedbad'] = 'ε»Ίη«‹θ³‡ζ–™θ‘¨δ½œζ₯­ε€±ζ•—。'; + $lang['strconfdroptable'] = '您璺εšθ¦εˆͺ陀資料葨 "%s"?'; + $lang['strtabledropped'] = '成功εˆͺ陀資料葨。'; + $lang['strtabledroppedbad'] = 'εˆͺι™€θ³‡ζ–™θ‘¨δ½œζ₯­ε€±ζ•—。'; + $lang['strconfemptytable'] = '您璺εšθ¦ζΈ…空資料葨 "%s"?'; + $lang['strtableemptied'] = 'ζˆεŠŸζΈ…η©Ίθ³‡ζ–™θ‘¨γ€‚'; + $lang['strtableemptiedbad'] = 'ζΈ…η©Ίθ³‡ζ–™θ‘¨δ½œζ₯­ε€±ζ•—。'; + $lang['strinsertrow'] = '插ε…₯θ³‡ζ–™θ‘Œ'; + $lang['strrowinserted'] = 'ζˆεŠŸζ’ε…₯θ³‡ζ–™θ‘Œγ€‚'; + $lang['strrowinsertedbad'] = '插ε…₯θ³‡ζ–™θ‘Œδ½œζ₯­ε€±ζ•—。'; + $lang['streditrow'] = 'δΏζ”Ήθ³‡ζ–™θ‘Œ'; + $lang['strrowupdated'] = 'ζˆεŠŸζ›΄ζ–°θ³‡ζ–™θ‘Œγ€‚'; + $lang['strrowupdatedbad'] = 'ζ›΄ζ–°θ³‡ζ–™θ‘Œδ½œζ₯­ε€±ζ•—。'; + $lang['strdeleterow'] = 'εˆͺι™€θ³‡ζ–™θ‘Œ'; + $lang['strconfdeleterow'] = '您璺εšθ¦εˆͺι™€δΊ›θ³‡ζ–™θ‘Œ?'; + $lang['strrowdeleted'] = '成功εˆͺι™€θ³‡ζ–™θ‘Œγ€‚'; + $lang['strrowdeletedbad'] = 'θ³‡ζ–™θ‘Œεˆͺι™€δ½œζ₯­ε€±ζ•—。'; + $lang['strsaveandrepeat'] = 'ε„²ε­˜δΈ¦ι‡θ¦†'; + $lang['strfield'] = '欄位'; + $lang['strfields'] = '欄位'; + $lang['strnumfields'] = '欄位數η›'; + $lang['strfieldneedsname'] = 'ζ‚¨ιœ€η‚Ίζ‚¨ηš„ζ¬„δ½ε‘½εγ€‚'; + $lang['strselectallfields'] = 'ιΈζ“‡ζ‰€ζœ‰ζ¬„δ½'; + $lang['strselectneedscol'] = 'θ‡³ε°‘ζ‡‰ι‘―η€ΊδΈ€θ³‡ζ–™εˆ—γ€‚'; + $lang['strselectunary'] = '不能為一元運η—ε­ζŒ‡εšζ•Έε€Όγ€‚'; + $lang['straltercolumn'] = 'δΏζ”Ήθ³‡ζ–™εˆ—'; + $lang['strcolumnaltered'] = '成功δΏζ”Ήθ³‡ζ–™εˆ—。'; + $lang['strcolumnalteredbad'] = 'δΏζ”Ήθ³‡ζ–™εˆ—δ½œζ₯­ε€±ζ•—。'; + $lang['strconfdropcolumn'] = '您璺εšθ¦εˆͺι™€θ³‡ζ–™εˆ— "%s" 於資料葨 "%s"?'; + $lang['strcolumndropped'] = '成功εˆͺι™€θ³‡ζ–™εˆ—γ€‚'; + $lang['strcolumndroppedbad'] = 'εˆͺι™€θ³‡ζ–™εˆ—δ½œζ₯­ε€±ζ•—。'; + $lang['straddcolumn'] = '加ε…₯新資料欄'; + $lang['strcolumnadded'] = '成功加ε…₯資料欄。'; + $lang['strcolumnaddedbad'] = '加ε…₯θ³‡ζ–™ζ¬„δ½œζ₯­ε€±ζ•—。'; + $lang['strcascade'] = 'CASCADE'; + $lang['strtablealtered'] = '資料葨已δΏζ”Ήγ€‚'; + $lang['strtablealteredbad'] = '資料葨δΏζ”Ήδ½œζ₯­ε€±ζ•—。'; + $lang['strdataonly'] = 'εͺ鑯瀺資料'; + $lang['strstructureonly'] = 'εͺζœ‰η΅ζ§‹'; + $lang['strstructureanddata'] = 'θ³‡ζ–™ε’Œη΅ζ§‹'; + $lang['strtabbed'] = 'Tabbed'; + $lang['strauto'] = 'θ‡ͺε‹•'; + + // Users + $lang['struser'] = 'η”¨ζˆΆ'; + $lang['strusers'] = 'η”¨ζˆΆ'; + $lang['strusername'] = 'η”¨ζˆΆε'; + $lang['strpassword'] = 'ε―†η’Ό'; + $lang['strsuper'] = 'θΆ…η΄šη”¨ζˆΆ?'; + $lang['strcreatedb'] = '允許建立資料庫?'; + $lang['strexpires'] = 'ε€±ζ•ˆ'; + $lang['strsessiondefaults'] = '預設Session'; + $lang['strnousers'] = 'ζ‰ΎδΈεˆ°ζ­€η”¨ζˆΆγ€‚'; + $lang['struserupdated'] = 'ζˆεŠŸζ›΄ζ–°η”¨ζˆΆγ€‚'; + $lang['struserupdatedbad'] = 'ζ›΄ζ–°η”¨ζˆΆδ½œζ₯­ε€±ζ•—。'; + $lang['strshowallusers'] = 'ι‘―η€Ίζ‰€ζœ‰η”¨ζˆΆ'; + $lang['strcreateuser'] = 'ε»Ίη«‹ζ–°η”¨ζˆΆ'; + $lang['struserneedsname'] = 'θ«‹η‚Ίζ­€η”¨ζˆΆε‘½ζˆΆ'; + $lang['strusercreated'] = 'ζˆεŠŸε»Ίη«‹ζ–°η”¨ζˆΆγ€‚'; + $lang['strusercreatedbad'] = 'ε»Ίη«‹ζ–°η”¨ζˆΆδ½œζ₯­ε€±ζ•—。'; + $lang['strconfdropuser'] = '您璺εšθ¦εˆͺι™€η”¨ζˆΆ "%s"?'; + $lang['struserdropped'] = 'η”¨ζˆΆε·²εˆͺ陀。'; + $lang['struserdroppedbad'] = 'εˆͺι™€η”¨ζˆΆδ½œζ₯­ε€±ζ•—。'; + $lang['straccount'] = '帳戢'; + $lang['strchangepassword'] = 'ζ›΄ζ”Ήε―†η’Ό'; + $lang['strpasswordchanged'] = 'ζˆεŠŸζ›΄ζ”Ήε―†η’Όγ€‚'; + $lang['strpasswordchangedbad'] = 'ζ›΄ζ”Ήε―†η’Όδ½œζ₯­ε€±ζ•—。'; + $lang['strpasswordshort'] = 'ε―†η’Όε€ͺηŸ­γ€‚'; + $lang['strpasswordconfirm'] = '所輸ε…₯ηš„ε…©η΅„ε―†η’ΌδΈεŒγ€‚'; + + // Groups + $lang['strgroup'] = 'ηΎ€η΅„'; + $lang['strgroups'] = 'ηΎ€η΅„'; + $lang['strnogroup'] = 'ζ‰ΎδΈεˆ°ζ­€ηΎ€η΅„γ€‚'; + $lang['strnogroups'] = 'ζ‰ΎδΈεˆ°δ»»δ½•ηΎ€η΅„γ€‚'; + $lang['strcreategroup'] = 'ε»Ίη«‹ζ–°ηΎ€η΅„'; + $lang['strshowallgroups'] = 'ι‘―η€Ίζ‰€ζœ‰ηΎ€η΅„'; + $lang['strgroupneedsname'] = 'ζ‚¨ιœ€η‚Ίζ‚¨ηš„ηΎ€η΅„ε‘½εγ€‚'; + $lang['strgroupcreated'] = 'ζˆεŠŸε»Ίη«‹ηΎ€η΅„γ€‚'; + $lang['strgroupcreatedbad'] = 'ηΎ€η΅„ε»Ίη«‹δ½œζ₯­ε€±ζ•—。'; + $lang['strconfdropgroup'] = '您璺εšεˆͺ陀羀硄 "%s"?'; + $lang['strgroupdropped'] = '成功εˆͺ陀羀硄。'; + $lang['strgroupdroppedbad'] = 'εˆͺι™€ηΎ€η΅„δ½œζ₯­ε€±ζ•—。'; + $lang['strmembers'] = 'η”¨ζˆΆ'; + $lang['straddmember'] = 'ζ–°ε’žη”¨ζˆΆ'; + $lang['strmemberadded'] = '已加ε…₯η”¨ζˆΆγ€‚'; + $lang['strmemberaddedbad'] = 'ζ–°ε’žη”¨ζˆΆε€±ζ•—γ€‚'; + $lang['strdropmember'] = 'εˆͺι™€η”¨ζˆΆ'; + $lang['strconfdropmember'] = '您璺εšθ¦εˆͺι™€η”¨ζˆΆ "%s" εΎžηΎ€η΅„ "%s"δΈ­?'; + $lang['strmemberdropped'] = 'η”¨ζˆΆε·²εˆͺ陀。'; + $lang['strmemberdroppedbad'] = 'εˆͺι™€η”¨ζˆΆδ½œζ₯­ε€±ζ•—。'; + + // Privilges + $lang['strprivilege'] = 'η‰Ήζ¬Š'; + $lang['strprivileges'] = 'η‰Ήζ¬Š'; + $lang['strnoprivileges'] = 'θ©²η‰©δ»Άζœ‰ι θ¨­ηš„ζ‰€ε±¬ε…₯η‰Ήζ¬Šγ€‚'; + $lang['strgrant'] = '賦予'; + $lang['strrevoke'] = 'ζ’€ε›ž'; + $lang['strgranted'] = 'ζˆεŠŸζ›΄ζ”Ήη‰Ήζ¬Šγ€‚'; + $lang['strgrantfailed'] = 'ζ›΄ζ”Ήη‰Ήζ¬Šδ½œζ₯­ε€±ζ•—。'; + $lang['strgrantbad'] = 'ζ‚¨ζ‡‰η‚ΊδΈ€εδ½Ώη”¨θ€…ζˆ–ηΎ€η΅„ζŒ‡εšθ‡³ε°‘δΈ€ε€‹η‰Ήζ¬Šγ€‚'; + $lang['stralterprivs'] = 'ζ›΄ζ”Ήη‰Ήζ¬Š'; + $lang['strgrantor'] = 'ζŽˆζ¬Šθ€…'; + $lang['strasterisk'] = '*'; + + // Databases + $lang['strdatabase'] = '資料庫'; + $lang['strdatabases'] = '資料庫'; + $lang['strshowalldatabases'] = 'ι‘―η€Ίζ‰€ζœ‰θ³‡ζ–™εΊ«'; + $lang['strnodatabase'] = 'ζ‰ΎδΈεˆ°ζ­€θ³‡ζ–™εΊ«γ€‚'; + $lang['strnodatabases'] = 'ζ‰ΎδΈεˆ°δ»»δ½•θ³‡ζ–™εΊ«γ€‚'; + $lang['strcreatedatabase'] = '建立新資料庫'; + $lang['strdatabasename'] = '資料庫名'; + $lang['strdatabaseneedsname'] = 'ζ‚¨ιœ€η‚Ίζ‚¨ηš„θ³‡ζ–™εΊ«ε‘½εγ€‚'; + $lang['strdatabasecreated'] = 'ζˆεŠŸε»Ίη«‹θ³‡ζ–™εΊ«γ€‚'; + $lang['strdatabasecreatedbad'] = 'ε»Ίη«‹θ³‡ζ–™εΊ«δ½œζ₯­ε€±ζ•—。'; + $lang['strconfdropdatabase'] = '您璺εšθ¦εˆͺ陀資料庫 "%s"?'; + $lang['strdatabasedropped'] = '成功εˆͺ陀資料庫。'; + $lang['strdatabasedroppedbad'] = 'εˆͺι™€θ³‡ζ–™εΊ«δ½œζ₯­ε€±ζ•—。'; + $lang['strentersql'] = 'ζ–ΌδΈ‹ζ–ΉθΌΈε…₯ζ‰€θ¦εŸ·θ‘Œηš„ SQL ι™³θΏ°εΌοΌš'; + $lang['strsqlexecuted'] = '成功執葌 SQL 。'; + $lang['strvacuumgood'] = '清理(Vacuum)作ζ₯­εŒζˆγ€‚'; + $lang['strvacuumbad'] = '清理(Vacuum)作ζ₯­ε€±ζ•—。'; + $lang['stranalyzegood'] = 'εˆ†ζžδ½œζ₯­εŒζˆγ€‚'; + $lang['stranalyzebad'] = 'εˆ†ζžδ½œζ₯­ε€±ζ•—.'; + $lang['strreindexgood'] = '紒引重建εŒζˆγ€‚'; + $lang['strreindexbad'] = '紒引重建倱敗。'; + $lang['strfull'] = 'εŒζ•΄'; + $lang['strfreeze'] = '凍硐'; + $lang['strforce'] = '強刢'; + + // Views + $lang['strview'] = '視葨'; + $lang['strviews'] = '視葨'; + $lang['strshowallviews'] = 'ι‘―η€Ίζ‰€ζœ‰θ¦–θ‘¨'; + $lang['strnoview'] = 'ζ‰ΎδΈεˆ°ζ­€θ¦–θ‘¨γ€‚'; + $lang['strnoviews'] = 'ζ‰ΎδΈεˆ°δ»»δ½•θ¦–θ‘¨γ€‚'; + $lang['strcreateview'] = '建立新視葨'; + $lang['strviewname'] = '視葨名'; + $lang['strviewneedsname'] = 'ζ‚¨ιœ€η‚Ίζ‚¨ηš„θ¦–θ‘¨ε‘½εγ€‚'; + $lang['strviewneedsdef'] = 'ζ‚¨εΏ…ι ˆεšηΎ©δ½ ηš„視葨。'; + $lang['strviewneedsfields'] = 'θ«‹ιΈζ“‡θ¦εŠ ε…₯θ¦–θ‘¨ηš„θ³‡ζ–™ζ¬„γ€‚'; + $lang['strviewcreated'] = 'ζˆεŠŸε»Ίη«‹ζ–°θ¦–θ‘¨γ€‚'; + $lang['strviewcreatedbad'] = 'ε»Ίη«‹ζ–°θ¦–θ‘¨δ½œζ₯­ε€±ζ•—'; + $lang['strconfdropview'] = '您璺εšθ¦εˆͺ陀視葨 "%s"?'; + $lang['strviewdropped'] = '成功εˆͺ陀視葨。'; + $lang['strviewdroppedbad'] = 'εˆͺι™€θ¦–θ‘¨δ½œζ₯­ε€±ζ•—。'; + $lang['strviewupdated'] = 'ζˆεŠŸζ›΄ζ–°θ¦–θ‘¨γ€‚'; + $lang['strviewupdatedbad'] = 'ζ›΄ζ–°θ¦–θ‘¨δ½œζ₯­ε€±ζ•—。'; + $lang['strviewlink'] = '連硐紒引'; + $lang['strviewconditions'] = '鑍倖撝仢'; + $lang['strcreateviewwiz'] = 'δ½Ώη”¨θ¦–θ‘¨η²Ύιˆ'; + + // Sequences + $lang['strsequence'] = 'εΊεˆ—'; + $lang['strsequences'] = 'εΊεˆ—'; + $lang['strshowallsequences'] = 'ι‘―η€Ίζ‰€ζœ‰εΊεˆ—'; + $lang['strnosequence'] = 'ζ‰ΎδΈεˆ°ζ­€εΊεˆ—γ€‚'; + $lang['strnosequences'] = 'ζ‰ΎδΈεˆ°δ»»δ½•εΊεˆ—γ€‚'; + $lang['strcreatesequence'] = 'ε»Ίη«‹ζ–°εΊεˆ—'; + $lang['strlastvalue'] = 'η΅ζŸε€Ό'; + $lang['strincrementby'] = 'ε’žι‡ (加/ζΈ›) '; + $lang['strstartvalue'] = 'ε•Ÿε§‹ε€Ό'; + $lang['strmaxvalue'] = 'ζœ€ε€§ε€Ό'; + $lang['strminvalue'] = 'ζœ€ε°‘ε€Ό'; + $lang['strcachevalue'] = '快取值'; + $lang['strlogcount'] = 'η™»ιŒ„ζ•Έι‡'; + $lang['striscycled'] = 'εΎͺη’°?'; + $lang['strsequenceneedsname'] = 'ζ‚¨ιœ€η‚Ίζ‚¨ηš„εΊεˆ—ε‘½εγ€‚'; + $lang['strsequencecreated'] = 'ζˆεŠŸε»Ίη«‹ζ–°εΊεˆ—γ€‚'; + $lang['strsequencecreatedbad'] = 'ε»Ίη«‹ζ–°εΊεˆ—δ½œζ₯­ε€±ζ•—。'; + $lang['strconfdropsequence'] = '您璺εšθ¦εˆͺι™€εΊεˆ— "%s"?'; + $lang['strsequencedropped'] = '成功εˆͺι™€εΊεˆ—γ€‚'; + $lang['strsequencedroppedbad'] = 'εˆͺι™€εΊεˆ—δ½œζ₯­ε€±ζ•—。'; + $lang['strsequencereset'] = 'ε·²ι‡θ¨­εΊεˆ—γ€‚'; + $lang['strsequenceresetbad'] = 'ι‡θ¨­εΊεˆ—ε€±ζ•—γ€‚'; + + // Indexes + $lang['strindex'] = 'η΄’εΌ•'; + $lang['strindexes'] = 'η΄’εΌ•'; + $lang['strindexname'] = '紒引名'; + $lang['strshowallindexes'] = 'ι‘―η€Ίζ‰€ζœ‰ηš„η΄’εΌ•'; + $lang['strnoindex'] = 'ζ‰ΎδΈεˆ°ζ­€η΄’εΌ•γ€‚'; + $lang['strnoindexes'] = 'ζ‰ΎδΈεˆ°δ»»δ½•η΄’εΌ•γ€‚'; + $lang['strcreateindex'] = 'ε»Ίη«‹ζ–°η΄’εΌ•'; + $lang['strtabname'] = 'ζͺ’紒名'; + $lang['strcolumnname'] = 'θ³‡ζ–™εˆ—ε'; + $lang['strindexneedsname'] = 'ζ‚¨ιœ€η‚Ίζ‚¨ηš„η΄’εΌ•ε‘½εγ€‚'; + $lang['strindexneedscols'] = 'η΄’εΌ•ζ‡‰ζœ‰δΈ€εšζ•Έε•ηš„θ³‡ζ–™εˆ—γ€‚'; + $lang['strindexcreated'] = 'ζˆεŠŸε»Ίη«‹ζ–°η΄’εΌ•'; + $lang['strindexcreatedbad'] = 'ε»Ίη«‹η΄’εΌ•δ½œζ₯­ε€±ζ•—。'; + $lang['strconfdropindex'] = '您璺εšθ¦εˆͺ陀紒引 "%s"?'; + $lang['strindexdropped'] = '成功εˆͺ陀紒引。'; + $lang['strindexdroppedbad'] = 'εˆͺι™€η΄’εΌ•δ½œζ₯­ε€±ζ•—。'; + $lang['strkeyname'] = '鍡名'; + $lang['struniquekey'] = '獨一鍡'; + $lang['strprimarykey'] = '主紒引鍡'; + $lang['strindextype'] = 'η΄’εΌ•ι‘žεž‹'; + $lang['strtablecolumnlist'] = 'θ³‡ζ–™θ‘¨ζ‰€ε«ηš„θ³‡ζ–™εˆ—'; + $lang['strindexcolumnlist'] = 'η΄’εΌ•ζ‰€ε«ηš„θ³‡ζ–™εˆ—'; + $lang['strconfcluster'] = '您璺εšθ¦ε’集 "%s"?'; + $lang['strclusteredgood'] = '叒集εŒζˆγ€‚'; + $lang['strclusteredbad'] = '叒集倱敗。'; + + // Rules + $lang['strrules'] = '規則'; + $lang['strrule'] = '規則'; + $lang['strshowallrules'] = 'ι‘―η€Ίζ‰€ζœ‰ηš„θ¦ε‰‡'; + $lang['strnorule'] = 'ζ‰ΎδΈεˆ°ζ­€θ¦ε‰‡γ€‚'; + $lang['strnorules'] = 'ζ‰ΎδΈεˆ°δ»»δ½•θ¦ε‰‡γ€‚'; + $lang['strcreaterule'] = '建立新規則'; + $lang['strrulename'] = '規則名'; + $lang['strruleneedsname'] = 'ζ‚¨ιœ€η‚Ίζ‚¨ηš„θ¦ε‰‡ε‘½εγ€‚'; + $lang['strrulecreated'] = 'ζˆεŠŸε»Ίη«‹ζ–°θ¦ε‰‡γ€‚'; + $lang['strrulecreatedbad'] = 'ε»Ίη«‹ζ–°θ¦ε‰‡δ½œζ₯­ε€±ζ•—。'; + $lang['strconfdroprule'] = '您璺εšθ¦εˆͺ陀 "%s" ζ–Ό "%s"?'; + $lang['strruledropped'] = '成功εˆͺ陀規則。'; + $lang['strruledroppedbad'] = 'εˆͺι™€θ¦ε‰‡δ½œζ₯­ε€±ζ•—。'; + + // Constraints + $lang['strconstraints'] = 'η΄„ζŸ'; + $lang['strshowallconstraints'] = 'ι‘―η€Ίζ‰€ζœ‰ηš„η΄„ζŸ'; + $lang['strnoconstraints'] = 'ζ‰ΎδΈεˆ°ζ­€η΄„ζŸγ€‚'; + $lang['strcreateconstraint'] = 'ε»Ίη«‹ζ–°η΄„ζŸ'; + $lang['strconstraintcreated'] = 'ζˆεŠŸε»Ίη«‹ζ–°η΄„ζŸγ€‚'; + $lang['strconstraintcreatedbad'] = 'ζ–°ε»Ίη΄„ζŸδ½œζ₯­ε€±ζ•—。'; + $lang['strconfdropconstraint'] = '您璺εšθ¦εˆͺι™€η΄„ζŸ "%s" ζ–Ό "%s"?'; + $lang['strconstraintdropped'] = '成功εˆͺι™€η΄„ζŸγ€‚'; + $lang['strconstraintdroppedbad'] = 'εˆͺι™€η΄„ζŸδ½œζ₯­ε€±ζ•—。'; + $lang['straddcheck'] = '加ε…₯ζ–°ζŸ₯ι©— (check)'; + $lang['strcheckneedsdefinition'] = 'ζ‚¨ιœ€εšηΎ©ζ‚¨ηš„ζŸ₯ι©— (check)。'; + $lang['strcheckadded'] = '成功加ε…₯ζ–°ζŸ₯ι©— (check)。'; + $lang['strcheckaddedbad'] = '加ε…₯ζ–°ζŸ₯ι©— (check) 作ζ₯­ε€±ζ•—。'; + $lang['straddpk'] = '加ε…₯主紒引鍡'; + $lang['strpkneedscols'] = 'δΈ»η΄’εΌ•ι΅θ‡³ε°‘ζ‡‰εŒ…ε«δΈ€ε€‹θ³‡ζ–™θ‘Œγ€‚'; + $lang['strpkadded'] = '成功加ε…₯主紒引鍡。'; + $lang['strpkaddedbad'] = '加ε…₯δΈ»η΄’εΌ•ι΅δ½œδ½œζ₯­ε€±ζ•—。'; + $lang['stradduniq'] = '加ε…₯獨一鍡'; + $lang['struniqneedscols'] = 'η¨δΈ€ι΅θ‡³ε°‘ζ‡‰εŒ…ε«δΈ€ε€‹θ³‡ζ–™θ‘Œγ€‚'; + $lang['struniqadded'] = '成功加ε…₯獨一鍡。'; + $lang['struniqaddedbad'] = '加ε…₯η¨δΈ€ι΅δ½œζ₯­ε€±ζ•—。'; + $lang['straddfk'] = '加ε…₯倖部紒引鍡'; + $lang['strfkneedscols'] = 'ε€–ιƒ¨η΄’εΌ•ι΅θ‡³ε°‘ζ‡‰εŒ…ε«δΈ€ε€‹θ³‡ζ–™θ‘Œγ€‚'; + $lang['strfkneedstarget'] = 'ε€–ιƒ¨η΄’εΌ•ι΅ιœ€εƒη…§η›ζ¨™θ³‡ζ–™θ‘¨γ€‚'; + $lang['strfkadded'] = '成功加ε…₯倖部紒引鍡。'; + $lang['strfkaddedbad'] = '加ε…₯ε€–ιƒ¨η΄’εΌ•ι΅δ½œζ₯­ε€±ζ•—。'; + $lang['strfktarget'] = 'η›ζ¨™θ³‡ζ–™θ‘¨'; + $lang['strfkcolumnlist'] = 'ι΅ζ‰€ε«ηš„θ³‡ζ–™θ‘Œ'; + $lang['strondelete'] = 'ζ–Όεˆͺ陀時'; + $lang['stronupdate'] = 'ζ–Όζ›΄ζ”Ήζ™‚'; + + // Functions + $lang['strfunction'] = '函數'; + $lang['strfunctions'] = '函數'; + $lang['strshowallfunctions'] = 'ι‘―η€Ίζ‰€ζœ‰ηš„ε‡½ζ•Έ'; + $lang['strnofunction'] = 'ζ‰ΎδΈεˆ°ζ­€ε‡½ζ•Έγ€‚'; + $lang['strnofunctions'] = 'ζ‰ΎδΈεˆ°δ»»δ½•ε‡½ζ•Έγ€‚'; + $lang['strcreatefunction'] = '建立新函數'; + $lang['strfunctionname'] = '函數名'; + $lang['strreturns'] = 'θΏ”ε›ž'; + $lang['strarguments'] = '參數'; + $lang['strproglanguage'] = '程式θͺžθ¨€'; + $lang['strfunctionneedsname'] = 'ζ‚¨ιœ€η‚Ίζ‚¨ηš„ε‡½ζ•Έε‘½εγ€‚'; + $lang['strfunctionneedsdef'] = 'ζ‚¨εΏ…ι ˆεšηΎ©ζ‚¨ηš„函數。'; + $lang['strfunctioncreated'] = 'ζˆεŠŸε»Ίη«‹ζ–°ε‡½ζ•Έγ€‚'; + $lang['strfunctioncreatedbad'] = 'ζ–°ε»Ίε‡½ζ•Έδ½œζ₯­ε€±ζ•—。'; + $lang['strconfdropfunction'] = '您璺εšθ¦εˆͺ陀函數 "%s"?'; + $lang['strfunctiondropped'] = '成功εˆͺ陀函數。'; + $lang['strfunctiondroppedbad'] = 'εˆͺι™€ε‡½ζ•Έδ½œζ₯­ε€±ζ•—。'; + $lang['strfunctionupdated'] = 'ζˆεŠŸζ›΄ζ”Ήε‡½ζ•Έγ€‚'; + $lang['strfunctionupdatedbad'] = 'ζ›΄ζ”Ήε‡½ζ•Έδ½œζ₯­ε€±ζ•—。'; + + // Triggers + $lang['strtrigger'] = '觸發器'; + $lang['strtriggers'] = '觸發器'; + $lang['strshowalltriggers'] = 'ι‘―η€Ίζ‰€ζœ‰ηš„θ§Έη™Όε™¨'; + $lang['strnotrigger'] = 'ζ‰ΎδΈεˆ°ζ­€θ§Έη™Όε™¨γ€‚'; + $lang['strnotriggers'] = 'ζ‰ΎδΈεˆ°δ»»δ½•θ§Έη™Όε™¨γ€‚'; + $lang['strcreatetrigger'] = '建立新觸發器'; + $lang['strtriggerneedsname'] = 'ζ‚¨ιœ€η‚Ίζ‚¨ηš„θ§Έη™Όε™¨ε‘½εγ€‚'; + $lang['strtriggerneedsfunc'] = 'ζ‚¨εΏ…ι ˆη‚Ίδ½ ηš„θ§Έη™Όε™¨ζŒ‡εšδΈ€ε€‹ε‡½ζ•Έγ€‚'; + $lang['strtriggercreated'] = 'ζˆεŠŸε»Ίη«‹ζ–°θ§Έη™Όε™¨γ€‚'; + $lang['strtriggercreatedbad'] = 'ε»Ίη«‹θ§Έη™Όε™¨δ½œζ₯­ε€±ζ•—。'; + $lang['strconfdroptrigger'] = '您璺εšθ¦εˆͺ陀觸發器 "%s" ζ–Ό "%s"?'; + $lang['strtriggerdropped'] = '成功εˆͺ陀觸發器。'; + $lang['strtriggerdroppedbad'] = 'εˆͺι™€θ§Έη™Όε™¨δ½œζ₯­ε€±ζ•—。'; + $lang['strtriggeraltered'] = '觸發器已δΏζ”Ήγ€‚'; + $lang['strtriggeralteredbad'] = 'δΏζ”Ήθ§Έη™Όε™¨δ½œζ₯­ε€±ζ•—。'; + + // Types + $lang['strtype'] = 'ι‘žεž‹'; + $lang['strtypes'] = 'ι‘žεž‹'; + $lang['strshowalltypes'] = 'ι‘―η€Ίζ‰€ζœ‰ηš„ι‘žεž‹'; + $lang['strnotype'] = 'ζ‰ΎδΈεˆ°ζ­€ι‘žεž‹γ€‚'; + $lang['strnotypes'] = 'ζ‰ΎδΈεˆ°δ»»δ½•ι‘žεž‹γ€‚'; + $lang['strcreatetype'] = 'ε»Ίη«‹ζ–°ι‘žεž‹'; + $lang['strtypename'] = 'ι‘žεž‹ε'; + $lang['strinputfn'] = 'θΌΈε…₯函數'; + $lang['stroutputfn'] = '輸出函數'; + $lang['strpassbyval'] = 'δ»₯值傳送?'; + $lang['stralignment'] = 'ζŽ’εˆ—'; + $lang['strelement'] = 'ε…ƒη΄ '; + $lang['strdelimiter'] = 'εˆ†ιš”η¬¦θ™Ÿ'; + $lang['strstorage'] = 'ε„²ε­˜'; + $lang['strtypeneedsname'] = 'ζ‚¨ιœ€η‚Ίζ‚¨ηš„ι‘žεž‹ε‘½εγ€‚'; + $lang['strtypeneedslen'] = 'ζ‚¨εΏ…ι ˆζŒ‡εšζ‚¨ηš„ι‘žεž‹ηš„ι•·εΊ¦γ€‚'; + $lang['strtypecreated'] = 'ζˆεŠŸε»Ίη«‹ζ–°ι‘žεž‹'; + $lang['strtypecreatedbad'] = ' ε»Ίη«‹ι‘žεž‹δ½œζ₯­ε€±ζ•—。'; + $lang['strconfdroptype'] = '您璺εšθ¦εˆͺι™€ι‘žεž‹ "%s"?'; + $lang['strtypedropped'] = '成功εˆͺι™€ι‘žεž‹γ€‚'; + $lang['strtypedroppedbad'] = 'εˆͺι™€ι‘žεž‹δ½œζ₯­ε€±ζ•—。'; + + // Schemas + $lang['strschema'] = '樑式'; + $lang['strschemas'] = '樑式'; + $lang['strshowallschemas'] = 'ι‘―η€Ίζ‰€ζœ‰ηš„ζ¨‘εΌ'; + $lang['strnoschema'] = 'ζ‰ΎδΈεˆ°ζ­€ζ¨‘εΌ'; + $lang['strnoschemas'] = 'ζ‰ΎδΈεˆ°δ»»δ½•ζ¨‘εΌγ€‚'; + $lang['strcreateschema'] = '建立新樑式'; + $lang['strschemaname'] = '樑式名'; + $lang['strschemaneedsname'] = 'ζ‚¨ιœ€η‚Ίζ‚¨ηš„ζ¨‘εΌε‘½εγ€‚'; + $lang['strschemacreated'] = 'ζˆεŠŸε»Ίη«‹ζ–°ζ¨‘εΌγ€‚'; + $lang['strschemacreatedbad'] = 'ε»Ίη«‹ζ¨‘εΌδ½œζ₯­ε€±ζ•—。'; + $lang['strconfdropschema'] = '您璺εšθ¦εˆͺ陀樑式 "%s"?'; + $lang['strschemadropped'] = '成功εˆͺ陀樑式。 '; + $lang['strschemadroppedbad'] = 'εˆͺι™€ζ¨‘εΌδ½œζ₯­ε€±ζ•—。'; + $lang['strschemaaltered'] = '成功δΏζ”Ήζ¨‘式'; + $lang['strschemaalteredbad'] = 'δΏζ”Ήζ¨‘式倱敗。'; + + // Reports + + // Domains + $lang['strdomain'] = '領域'; + $lang['strdomains'] = '領域'; + $lang['strshowalldomains'] = 'ι‘―η€Ίζ‰€ζœ‰ι ˜εŸŸ'; + $lang['strnodomains'] = 'ζ‰ΎδΈεˆ°δ»»δ½•ι ˜εŸŸγ€‚'; + $lang['strcreatedomain'] = 'ζ–°ε»Ίι ˜εŸŸ'; + $lang['strdomaindropped'] = '領域已εˆͺ陀。'; + $lang['strdomaindroppedbad'] = '領域εˆͺι™€δ½œζ₯­ε€±ζ•—。'; + $lang['strconfdropdomain'] = '您璺εšθ¦εˆͺι™€ι ˜εŸŸ "%s"?'; + $lang['strdomainneedsname'] = 'ζ‚¨ιœ€η‚Ίζ­€ι ˜εŸŸε‘½εγ€‚'; + $lang['strdomaincreated'] = 'ι ˜εŸŸε·²ε»Ίη«‹γ€‚'; + $lang['strdomaincreatedbad'] = 'ζ–°ε»Ίι ˜εŸŸδ½œζ₯­ε€±ζ•—。'; + $lang['strdomainaltered'] = '領域已δΏζ”Ήγ€‚'; + $lang['strdomainalteredbad'] = 'δΏζ”Ήι ˜εŸŸδ½œζ₯­ε€±ζ•—。'; + + // Operators + $lang['stroperator'] = '運η—子'; + $lang['stroperators'] = '運η—子'; + $lang['strshowalloperators'] = 'ι‘―η€Ίζ‰€ζœ‰ι‹η—子s'; + $lang['strnooperator'] = 'ζ‰ΎδΈεˆ°ι‹η—子。'; + $lang['strnooperators'] = 'ζ‰ΎδΈεˆ°δ»»δ½•ι‹η—子。'; + $lang['strcreateoperator'] = '新建運η—子'; + $lang['strleftarg'] = 'ε·¦εΌ•ζ•Έεž‹ζ…‹'; + $lang['strrightarg'] = 'ε³εΌ•ζ•Έεž‹ζ…‹'; + $lang['strcommutator'] = '轉換器'; + $lang['strnegator'] = '否εšε™¨'; + $lang['strrestrict'] = 'ι™εˆΆ'; + $lang['strjoin'] = '硐合'; + $lang['strhashes'] = 'Hashes'; + $lang['strmerges'] = '合佡'; + $lang['strleftsort'] = 'ε·¦ζŽ’εΊ'; + $lang['strrightsort'] = 'ε³ζŽ’εΊ'; + $lang['strlessthan'] = '小於'; + $lang['strgreaterthan'] = '倧於'; + $lang['stroperatorneedsname'] = 'ζ‚¨ιœ€η‚Ίζ‚¨ηš„ι‹η—子命名。'; + $lang['stroperatorcreated'] = '運η—子已建立'; + $lang['stroperatorcreatedbad'] = '運η—ε­ζ–°ε»Ίδ½œζ₯­ε€±ζ•—。'; + $lang['strconfdropoperator'] = '您璺εšθ¦εˆͺ陀運η—子 "%s"?'; + $lang['stroperatordropped'] = '運η—子已εˆͺ陀。'; + $lang['stroperatordroppedbad'] = '運η—子εˆͺ陀倱敗。'; + + // Casts + $lang['strcasts'] = 'εž‹εˆ₯轉換'; + $lang['strnocasts'] = 'ζ‰ΎδΈεˆ°εž‹εˆ₯轉換。'; + $lang['strsourcetype'] = 'εŽŸε§‹εž‹εˆ₯'; + $lang['strtargettype'] = 'η›ζ‘½εž‹εˆ₯'; + $lang['strimplicit'] = '隱含'; + $lang['strinassignment'] = 'ζŒ‡ζ΄ΎδΈ­'; + $lang['strbinarycompat'] = '(δΊŒε…ƒη›Έη¬¦)'; + + // Conversions + $lang['strconversions'] = '轉換'; + $lang['strnoconversions'] = 'ζ‰ΎδΈεˆ°θ½‰ζ›γ€‚'; + $lang['strsourceencoding'] = 'εŽŸε§‹η·¨η’Ό'; + $lang['strtargetencoding'] = 'η›ζ¨™η·¨η’Ό'; + + // Languages + $lang['strlanguages'] = 'θͺžθ¨€'; + $lang['strnolanguages'] = 'ζ‰ΎδΈεˆ°θͺžθ¨€γ€‚'; + $lang['strtrusted'] = 'ε—δΏ‘δ»»ηš„'; + + // Info + $lang['strnoinfo'] = 'η„‘ζ³•ε–εΎ—θ³‡θ¨Šγ€‚'; + $lang['strreferringtables'] = '參照資料葨'; + $lang['strparenttables'] = 'ηˆΆθ³‡ζ–™θ‘¨'; + $lang['strchildtables'] = '子資料葨'; + + // Aggregates + $lang['straggregates'] = '匯總'; + $lang['strnoaggregates'] = 'ζ‰ΎδΈεˆ°δ»»δ½•εŒ―ηΈ½γ€‚'; + $lang['stralltypes'] = '(ε…¨ιƒ¨ι‘žεž‹)'; + + // Operator Classes + $lang['stropclasses'] = '運η—ε­ι‘žεˆ₯'; + $lang['strnoopclasses'] = 'ζ‰ΎδΈεˆ°δ»»δ½•ι‹η—ι‘žεˆ₯。'; + $lang['straccessmethod'] = 'ζ‹’η΅•ε­˜ε–'; + + // Stats and performance + $lang['strrowperf'] = 'θ³‡ζ–™θ‘Œζ•ˆηŽ‡'; + $lang['strioperf'] = 'I/Oζ•ˆηŽ‡'; + $lang['stridxrowperf'] = 'η΄’εΌ•θ‘Œζ•ˆηŽ‡'; + $lang['stridxioperf'] = 'η΄’εΌ•I/Oζ•ˆηŽ‡'; + $lang['strpercent'] = '%'; + $lang['strsequential'] = 'εΎͺ序'; + $lang['strscan'] = 'ζŽƒζ'; + $lang['strread'] = 'θ€ε–'; + $lang['strfetch'] = 'Fetch'; + $lang['strheap'] = 'Heap'; + $lang['strtoast'] = 'TOAST'; + $lang['strtoastindex'] = 'TOASTη΄’εΌ•'; + $lang['strcache'] = '快取'; + $lang['strdisk'] = '磁璟'; + $lang['strrows2'] = 'θ³‡ζ–™θ‘Œ'; + + // Miscellaneous + $lang['strtopbar'] = '%s εŸ·θ‘Œζ–Ό %s:%s - ζ‚¨ζ˜― "%s"'; + $lang['strtimefmt'] = 'jS M, Y g:iA'; + $lang['strhelp'] = 'θͺͺ明'; + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/chinese-utf8-zh_CN.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/chinese-utf8-zh_CN.php new file mode 100644 index 00000000..d2f2a29a --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/chinese-utf8-zh_CN.php @@ -0,0 +1,902 @@ +>'; + $lang['strfailed'] = 'ε€±θ΄₯'; + $lang['strcreate'] = 'εˆ›ε»Ί'; + $lang['strcreated'] = 'ε·²εˆ›ε»Ί'; + $lang['strcomment'] = 'ζ³¨ι‡Š'; + $lang['strlength'] = 'ι•ΏεΊ¦'; + $lang['strdefault'] = '默θ€'; + $lang['stralter'] = 'ε˜ζ›΄'; + $lang['strok'] = 'η‘θ€'; + $lang['strcancel'] = 'ε–ζΆˆ'; + $lang['strkill'] = '终歒'; + $lang['strac'] = 'θ‡ͺ动εŒζˆζœ‰ζ•ˆ'; + $lang['strsave'] = '保存'; + $lang['strreset'] = '重η½'; + $lang['strrestart'] = '重启'; + $lang['strinsert'] = '插ε…₯'; + $lang['strselect'] = '选择'; + $lang['strdelete'] = 'εˆ ι™€'; + $lang['strupdate'] = 'ζ›΄ζ–°'; + $lang['strreferences'] = '参考'; + $lang['stryes'] = '是'; + $lang['strno'] = '否'; + $lang['strtrue'] = 'TRUE'; + $lang['strfalse'] = 'FALSE'; + $lang['stredit'] = 'ηΌ–θΎ‘'; + $lang['strcolumn'] = 'εˆ—'; + $lang['strcolumns'] = 'εˆ—'; + $lang['strrows'] = '葌'; + $lang['strrowsaff'] = 'θ‘Œε·²ε½±ε“οΌˆε˜ζ›΄οΌ‰γ€‚'; + $lang['strobjects'] = '对豑'; + $lang['strback'] = 'θΏ”ε›ž'; + $lang['strqueryresults'] = 'ζŸ₯θ―’η»“ζžœ'; + $lang['strshow'] = '显瀺'; + $lang['strempty'] = 'ζΈ…η©Ί'; + $lang['strlanguage'] = '语言'; + $lang['strencoding'] = '编码'; + $lang['strvalue'] = 'ε€Ό'; + $lang['strunique'] = 'ε”―δΈ€'; + $lang['strprimary'] = 'δΈ»'; + $lang['strexport'] = 'ε―Όε‡Ί'; + $lang['strimport'] = 'ε―Όε…₯'; + $lang['strallowednulls'] = '允θΈη©ΊδΈ²'; + $lang['strbackslashn'] = '\N'; + $lang['stremptystring'] = 'η©Ί 字符串/ε­—ζ΅'; + $lang['strsql'] = 'SQL码'; + $lang['stradmin'] = 'η‘理'; + $lang['strvacuum'] = '清理'; + $lang['stranalyze'] = 'εˆ†ζž'; + $lang['strclusterindex'] = '集羀'; + $lang['strclustered'] = '集羀?'; + $lang['strreindex'] = '重建紒引'; + $lang['strexecute'] = 'ζ‰§θ‘Œ'; + $lang['stradd'] = '添加'; + $lang['strevent'] = 'δΊ‹δ»Ά'; + $lang['strwhere'] = 'Where'; + $lang['strinstead'] = 'Do Instead'; + $lang['strwhen'] = '当'; + $lang['strformat'] = '格式'; + $lang['strdata'] = 'ζ•°ζ'; + $lang['strconfirm'] = 'η‘θ€'; + $lang['strexpression'] = '葨达式'; + $lang['strellipsis'] = '。。。'; + $lang['strseparator'] = ': '; + $lang['strexpand'] = '扩展'; + $lang['strcollapse'] = 'ε΄©ζΊƒ'; + $lang['strfind'] = 'ζŸ₯ζ‰Ύ'; + $lang['stroptions'] = '选鑹'; + $lang['strrefresh'] = 'εˆ·ζ–°'; + $lang['strdownload'] = 'δΈ‹θ½½'; + $lang['strdownloadgzipped'] = '下载使用gzipεŽ‹ηΌ©ηš„ζ–‡δ»Ά'; + $lang['strinfo'] = '俑息'; + $lang['stroids'] = 'OIDs'; + $lang['stradvanced'] = '高级'; + $lang['strvariables'] = 'ε˜ι‡'; + $lang['strprocess'] = '进程'; + $lang['strprocesses'] = '进程'; + $lang['strsetting'] = 'θΎη½'; + $lang['streditsql'] = 'ηΌ–θΎ‘ SQL'; + $lang['strruntime'] = 'ζ€»ζ‰§θ‘Œζ—Άι—΄: %s ms'; + $lang['strpaginate'] = 'εˆ†ι‘΅η»“ζžœ'; + $lang['struploadscript'] = 'ζˆ–θ€…δΈŠδΌ δΈ€δΈͺ SQL θ„šζœ¬:'; + $lang['strstarttime'] = '开始既间'; + $lang['strfile'] = 'ζ–‡δ»Ά'; + $lang['strfileimported'] = 'ζ–‡δ»Άε·²ε―Όε…₯。'; + $lang['strtrycred'] = 'ε―Ήζ‰€ζœ‰ζœεŠ‘ε™¨δ½Ώη”¨θ―₯η”¨ζˆ·εε’Œε―†η '; + $lang['strconfdropcred'] = 'ε› δΈΊε‰ε…¨εŽŸε› οΌŒδΈ­ζ–­θΏžζŽ₯ε°†δΌšι”€ζ―δ½ ηš„η™»ε½•δΏ‘ζ―γ€‚δ½ η‘εšθ¦δΈ­ζ–­θΏžζŽ₯ε—οΌŸ'; + $lang['stractionsonmultiplelines'] = 'ε€šθ‘ŒδΈŠηš„ζ“δ½œ'; + $lang['strselectall'] = 'ι€‰ζ‹©ζ‰€ζœ‰'; + $lang['strunselectall'] = 'ε–ζΆˆι€‰ζ‹©ζ‰€ζœ‰'; + $lang['strlocale'] = '本地'; + $lang['strcollation'] = 'ζ ‘ε―Ή'; + $lang['strctype'] = 'ε­—η¬¦η±»εž‹'; + $lang['strdefaultvalues'] = '默θ€ε€Ό'; + $lang['strnewvalues'] = 'ζ–°ε€Ό'; + $lang['strstart'] = '启动'; + $lang['strstop'] = '停歒'; + $lang['strgotoppage'] = 'ε›žεˆ°ι‘Άη«―'; + $lang['strtheme'] = '主钘'; + $lang['strcluster'] = '集羀'; + + // Admin + $lang['stradminondatabase'] = 'δ»₯δΈ‹η‘η†εŠŸθƒ½ε―εΊ”η”¨δΊŽζ•°ζεΊ“ %s.'; + $lang['stradminontable'] = 'δ»₯δΈ‹η‘η†εŠŸθƒ½ε―εΊ”η”¨δΊŽθ‘¨ %s.'; + + // User-supplied SQL history + $lang['strhistory'] = 'εŽ†ε²'; + $lang['strnohistory'] = 'ζ— εŽ†ε².'; + $lang['strclearhistory'] = 'ζΈ…η©ΊεŽ†ε²'; + $lang['strdelhistory'] = 'δ»ŽεŽ†ε²εˆ ι™€'; + $lang['strconfdelhistory'] = 'η‘εšθ¦δ»ŽεŽ†ε²εˆ ι™€ε— ?'; + $lang['strconfclearhistory'] = 'η‘εšθ¦ζΈ…η©ΊεŽ†ε²ε— ?'; + $lang['strnodatabaseselected'] = '请选择一δΈͺζ•°ζεΊ“.'; + + // Database sizes + $lang['strnoaccess'] = '无法θΏι—'; + $lang['strsize'] = '倧小'; + $lang['strbytes'] = 'ε­—θŠ‚'; + $lang['strkb'] = 'kB'; + $lang['strmb'] = 'MB'; + $lang['strgb'] = 'GB'; + $lang['strtb'] = 'TB'; + + // Error handling + $lang['strnoframes'] = 'θ―₯η¨‹εΊεœ¨ε…·ζœ‰ζ‘†ζžΆεŠŸθƒ½ηš„ζ΅θ§ˆε™¨δΈŠε·₯δ½œηš„ζ›΄ε₯½οΌŒθ―·ζŒ‰δΈ‹ι’ηš„ι“ΎζŽ₯εœ¨δΈζ”―ζŒζ‘†ζžΆηš„ζ΅θ§ˆε™¨δΈŠε·₯δ½œγ€‚'; + $lang['strnoframeslink'] = 'δΈδ½Ώη”¨ζ‘†ζžΆ'; + $lang['strbadconfig'] = 'ζ‚¨ηš„ config.inc.php ε·²ε€±ζ•ˆγ€‚ζ‚¨ιœ€θ¦θ‡ͺθ‘Œι€šθΏ‡ config.inc.php-ist 恒倍。'; + $lang['strnotloaded'] = '您ε‰θ£…ηš„ PHP δΈζ”―ζŒPostgreSQL。 δ½ ιœ€θ¦ι‡ζ–°ηΌ–θ―‘PHP幢使用 --with-pgsql 配η½ι€‰ι‘Ήγ€‚'; + $lang['strpostgresqlversionnotsupported'] = 'ζ—§η‰ˆζœ¬ηš„PostgreSQLδΈθ’«ζ”―ζŒγ€‚ θ―·ζ›΄ζ–°εˆ°η‰ˆζœ¬ %s ζˆ–ζ›΄ι«˜η‰ˆζœ¬γ€‚'; + $lang['strbadschema'] = 'ζ— ζ•ˆηš„ζ¨‘εΌγ€‚'; + $lang['strbadencoding'] = 'θΎεšε’ζˆ·η«―ηΌ–η ι”™θ――γ€‚'; + $lang['strsqlerror'] = 'SQL:ι”™θ――'; + $lang['strinstatement'] = '在语ε₯:'; + $lang['strinvalidparam'] = 'ζ— ζ•ˆηš„θ„šζœ¬ε‚ζ•°γ€‚'; + $lang['strnodata'] = 'ζŸ₯ζ— ζ•°ζθ‘Œγ€‚'; + $lang['strnoobjects'] = 'ζŸ₯无对豑。'; + $lang['strrownotunique'] = 'θ―₯θ‘Œζ— ε”―δΈ€ηΊ¦ζŸγ€‚'; + $lang['strnouploads'] = 'ζ–‡δ»ΆδΈŠδΌ θ’«η¦ζ­’γ€‚'; + $lang['strimporterror'] = 'ε―Όε…₯错误。'; + $lang['strimporterror-fileformat'] = 'ε―Όε…₯ι”™θ――: θ‡ͺεŠ¨θ―†εˆ«ζ–‡δ»Άη±»εž‹ε€±θ΄₯。'; + $lang['strimporterrorline'] = 'ε―Όε…₯ι”™θ――οΌŒε‡Ίι”™θ‘Œ %s。'; + $lang['strimporterrorline-badcolumnnum'] = 'ε―Όε…₯ι”™θ――οΌŒε‡Ίι”™θ‘Œ %s: θ―₯θ‘Œεˆ—ζ•°δΈζ­£η‘。'; + $lang['strimporterror-uploadedfile'] = 'ε―Όε…₯ι”™θ――: ζ–‡δ»ΆδΈθƒ½δΈŠδΌ εˆ°ζœεŠ‘ε™¨'; + $lang['strcannotdumponwindows'] = 'ε€ζ‚θ‘¨ε’Œζ¨‘εΌεη§°ηš„θ½¬ε‚¨εœ¨Windows δΈθ’«ζ”―ζŒγ€‚'; + $lang['strinvalidserverparam'] = 'ε°θ―•η”¨ζ— ζ•ˆηš„ζœεŠ‘ε™¨ε‚ζ•°θΏžζŽ₯,ε―θƒ½ζœ‰δΊΊζ­£ε°θ―•ζ”»ε‡»δ½ ηš„η³»η»Ÿγ€‚'; + $lang['strnoserversupplied'] = 'ζ²‘ζœ‰ι€‰ζ‹©ζ•°ζεΊ“!'; + $lang['strbadpgdumppath'] = 'ε―Όε‡Ίι”™θ――οΌšεœ¨ conf/config.inc.php δΈ­ζŒ‡εšηš„θ·―εΎ„ %s δΈ‹ζ‰§θ‘Œpg_dumpε€±θ΄₯γ€‚θ―·εœ¨ι…η½δΈ­δΏζ”Ήθ·―径幢重新登录。'; + $lang['strbadpgdumpallpath'] = 'ε―Όε‡Ίι”™θ――οΌšεœ¨ conf/config.inc.php δΈ­ζŒ‡εšηš„θ·―εΎ„ %s δΈ‹ζ‰§θ‘Œpg_dumpallε€±θ΄₯γ€‚θ―·εœ¨ι…η½δΈ­δΏζ”Ήθ·―径幢重新登录。'; + $lang['strconnectionfail'] = 'ζ— ζ³•θΏžζŽ₯ζœεŠ‘ε™¨γ€‚'; + + // Tables + $lang['strtable'] = 'ζ•°ζθ‘¨'; + $lang['strtables'] = 'ζ•°ζθ‘¨'; + $lang['strshowalltables'] = 'ζ˜Ύη€Ίη€Ίζ‰€ζœ‰θ‘¨γ€‚'; + $lang['strnotables'] = 'ζŸ₯ζ— ζ•°ζθ‘¨γ€‚'; + $lang['strnotable'] = 'ζŸ₯无歀葨。'; + $lang['strcreatetable'] = 'εˆ›ε»Ίθ‘¨'; + $lang['strcreatetablelike'] = 'εˆ›ε»Ίθ‘¨(δ»₯ηŽ°ζœ‰θ‘¨δΈΊζ¨‘ζΏ)'; + $lang['strcreatetablelikeparent'] = '源葨'; + $lang['strcreatelikewithdefaults'] = 'εŒ…ε«ι»˜θ€ε€Ό'; + $lang['strcreatelikewithconstraints'] = 'εŒ…ε«ηΊ¦ζŸ'; + $lang['strcreatelikewithindexes'] = 'εŒ…ε«θ‘¨ε'; + $lang['strtablename'] = '葨名'; + $lang['strtableneedsname'] = 'εΏ…ι‘»ζŒ‡εšθ‘¨εγ€‚'; + $lang['strtablelikeneedslike'] = 'εΏ…ι‘»ζŒ‡εšθ¦ζ‹·θ΄ηš„ε±žζ€§ζ‰€ε±žηš„ζ•°ζθ‘¨.'; + $lang['strtableneedsfield'] = 'εΏ…ι‘»θ‡³ε°‘ζŒ‡εšδΈ€δΈͺε­—ζ΅γ€‚'; + $lang['strtableneedscols'] = 'εΏ…ι‘»ζŒ‡εšδΈ€δΈͺζœ‰ζ•ˆηš„εˆ—ζ•°γ€‚'; + $lang['strtablecreated'] = 'ζ•°ζθ‘¨ε·²εˆ›ε»Ίγ€‚'; + $lang['strtablecreatedbad'] = 'ζ•°ζθ‘¨εˆ›ε»Ίε€±θ΄₯'; + $lang['strconfdroptable'] = 'η‘εšθ¦εˆ ι™€"%s"ζ•°ζθ‘¨ε—οΌŸ'; + $lang['strtabledropped'] = 'ζ•°ζθ‘¨ε·²εˆ ι™€γ€‚'; + $lang['strtabledroppedbad'] = 'ζ•°ζθ‘¨εˆ ι™€ε€±θ΄₯。'; + $lang['strconfemptytable'] = 'η‘εšθ¦ζΈ…η©Ί"%s"ζ•°ζθ‘¨ε—οΌŸ'; + $lang['strtableemptied'] = 'ζ•°ζθ‘¨ε·²ζΈ…空。'; + $lang['strtableemptiedbad'] = 'ζ•°ζθ‘¨ζΈ…η©Ίε€±θ΄₯。'; + $lang['strinsertrow'] = '插ε…₯葌'; + $lang['strrowinserted'] = 'θ‘Œε·²ζ’ε…₯。'; + $lang['strrowinsertedbad'] = 'θ‘Œζ’ε…₯ε€±θ΄₯。'; + $lang['strnofkref'] = 'εœ¨ε€–ι” %s δΈ­ζ‰ΎδΈεˆ°η›ΈεΊ”ηš„ε€Όγ€‚'; + $lang['strrowduplicate'] = 'θ‘Œζ’ε…₯ε€±θ΄₯, 尝试再欑插ε…₯。'; + $lang['streditrow'] = 'ηΌ–θΎ‘θ‘Œ'; + $lang['strrowupdated'] = 'θ‘Œε·²ζ›΄ζ–°γ€‚'; + $lang['strrowupdatedbad'] = 'θ‘Œζ›΄ζ–°ε€±θ΄₯。'; + $lang['strdeleterow'] = 'εˆ ι™€θ‘Œ'; + $lang['strconfdeleterow'] = 'η‘εšθ¦εˆ ι™€θ―₯θ‘Œε—οΌŸ'; + $lang['strrowdeleted'] = 'θ‘Œε·²εˆ ι™€γ€‚'; + $lang['strrowdeletedbad'] = 'θ‘Œεˆ ι™€ε€±θ΄₯。'; + $lang['strinsertandrepeat'] = '插ε…₯ & 替捒'; + $lang['strnumcols'] = 'εˆ—ζ•°η›'; + $lang['strcolneedsname'] = 'εΏ…ι‘»ζŒ‡εšεˆ—名'; + $lang['strselectallfields'] = 'ι€‰ζ‹©ζ‰€ζœ‰ε­—ζ΅'; + $lang['strselectneedscol'] = 'εΏ…ι‘»θ‡³ε°‘ζ˜Ύη€ΊδΈ€εˆ—γ€‚'; + $lang['strselectunary'] = 'ε•ι‘Ήζ“δ½œδΈθƒ½ζœ‰ε€Όγ€‚'; + $lang['strcolumnaltered'] = 'εˆ—ε·²ε˜ζ›΄γ€‚'; + $lang['strcolumnalteredbad'] = 'εˆ—ε˜ζ›΄ε€±θ΄₯。'; + $lang['strconfdropcolumn'] = 'η‘εšθ¦ε°†εˆ— "%s" 从葨 "%s" δΈ­εˆ ι™€ε—?'; + $lang['strcolumndropped'] = 'εˆ—ε·²εˆ ι™€γ€‚'; + $lang['strcolumndroppedbad'] = 'εˆ—εˆ ι™€ε€±θ΄₯。'; + $lang['straddcolumn'] = 'ζ·»εŠ εˆ—'; + $lang['strcolumnadded'] = 'εˆ—ε·²ζ·»εŠ γ€‚'; + $lang['strcolumnaddedbad'] = 'εˆ—ζ·»εŠ ε€±θ΄₯。'; + $lang['strcascade'] = 'CASCADE'; + $lang['strtablealtered'] = 'ζ•°ζθ‘¨ε·²ε˜ζ›΄γ€‚'; + $lang['strtablealteredbad'] = 'ζ•°ζθ‘¨ε˜ζ›΄ε€±θ΄₯。'; + $lang['strdataonly'] = 'δ»…ζ•°ζ'; + $lang['strstructureonly'] = 'δ»…η»“ζž„'; + $lang['strstructureanddata'] = 'η»“ζž„ε’Œζ•°ζ'; + $lang['strtabbed'] = 'ε›ΊεšοΌˆTabbedοΌ‰'; + $lang['strauto'] = 'θ‡ͺ动'; + $lang['strconfvacuumtable'] = 'η‘εšθ¦ζΈ…理 "%s" 吗?'; + $lang['strconfanalyzetable'] = 'η‘εšθ¦εˆ†ζž "%s" 吗?'; + $lang['strconfreindextable'] = 'η‘εšθ¦ι‡ζ–°η΄’εΌ• "%s" 吗?'; + $lang['strconfclustertable'] = 'η‘εšθ¦ι›†ηΎ€ "%s" 吗?'; + $lang['strestimatedrowcount'] = 'δΌ°θ‘ηš„θ‘Œζ•°'; + $lang['strspecifytabletoanalyze'] = '必鑻至少选择一δΈͺ葨ζ₯εˆ†ζž'; + $lang['strspecifytabletoempty'] = '必鑻至少选择一δΈͺ葨ζ₯ζΈ…η©Ί'; + $lang['strspecifytabletodrop'] = '必鑻至少选择一δΈͺ葨ζ₯移陀'; + $lang['strspecifytabletovacuum'] = '必鑻至少选择一δΈͺ葨ζ₯ζΈ…η†οΌˆvacuumοΌ‰'; + $lang['strspecifytabletoreindex'] = '必鑻至少选择一δΈͺθ¦ι‡ζ–°η΄’εΌ•ηš„θ‘¨γ€‚'; + $lang['strspecifytabletocluster'] = '必鑻至少选择一δΈͺθ¦ι›†ηΎ€ηš„θ‘¨γ€‚'; + $lang['strnofieldsforinsert'] = 'ζ— ζ³•εœ¨ζ²‘ζœ‰δ»»δ½•εˆ—εšδΉ‰ηš„葨中插ε…₯ζ•°ζγ€‚'; + + // Columns + $lang['strcolprop'] = 'εˆ—ε±žζ€§'; + $lang['strnotableprovided'] = 'ζ²‘ζœ‰η›ΈεΊ”ηš„θ‘¨!'; + + // Users + $lang['struser'] = 'η”¨ζˆ·'; + $lang['strusers'] = 'η”¨ζˆ·'; + $lang['strusername'] = '用名'; + $lang['strpassword'] = '密码'; + $lang['strsuper'] = 'θΆ…ηΊ§η”¨ζˆ·'; + $lang['strcreatedb'] = 'εˆ›ε»Ίζ•°ζεΊ“οΌŸ'; + $lang['strexpires'] = 'θΏ‡ζœŸ'; + $lang['strsessiondefaults'] = '会话默θ€'; + $lang['strnousers'] = 'ζŸ₯ζ— ζ­€η”¨ζˆ·γ€‚'; + $lang['struserupdated'] = 'η”¨ζˆ·ε·²ζ›΄ζ–°γ€‚'; + $lang['struserupdatedbad'] = 'η”¨ζˆ·ζ›΄ζ–°ε€±θ΄₯。'; + $lang['strshowallusers'] = 'ζ˜Ύη€Ίζ‰€ζœ‰η”¨ζˆ·'; + $lang['strcreateuser'] = 'εˆ›ε»Ίη”¨ζˆ·'; + $lang['struserneedsname'] = 'εΏ…ι‘»ζŒ‡εšη”¨ζˆ·εη§°γ€‚'; + $lang['strusercreated'] = 'η”¨ζˆ·ε·²εˆ›ε»Ίγ€‚'; + $lang['strusercreatedbad'] = 'η”¨ζˆ·εˆ›ε»Ίε€±θ΄₯。'; + $lang['strconfdropuser'] = 'η‘εšθ¦εˆ ι™€η”¨ζˆ·"%s"ε—οΌŸ'; + $lang['struserdropped'] = 'η”¨ζˆ·ε·²εˆ ι™€γ€‚'; + $lang['struserdroppedbad'] = 'η”¨ζˆ·εˆ ι™€ε€±θ΄₯。'; + $lang['straccount'] = '帐户'; + $lang['strchangepassword'] = 'δΏζ”Ήε―†η '; + $lang['strpasswordchanged'] = '密码已δΏζ”Ήγ€‚'; + $lang['strpasswordchangedbad'] = '密码δΏζ”Ήε€±θ΄₯。'; + $lang['strpasswordshort'] = '密码ε€ͺηŸ­δΊ†γ€‚'; + $lang['strpasswordconfirm'] = 'ε―†η δΈεŒΉι…γ€‚'; + + // Groups + $lang['strgroup'] = 'ηΎ€η»„'; + $lang['strgroups'] = 'ηΎ€η»„'; + $lang['strgroupgroups'] = '在"%s"δΈ­ηš„ηΎ€η»„'; + $lang['strshowallgroups'] = 'ζ˜Ύη€Ίζ‰€ζœ‰ηΎ€η»„'; + $lang['strnogroup'] = 'ζŸ₯无歀羀组。'; + $lang['strnogroups'] = 'ζŸ₯无羀组。'; + $lang['strcreategroup'] = 'εˆ›ε»ΊηΎ€η»„'; + $lang['strgroupneedsname'] = 'εΏ…ι‘»ζŒ‡εšηΎ€η»„名称。'; + $lang['strgroupcreated'] = 'ηΎ€η»„ε·²εˆ›ε»Ίγ€‚'; + $lang['strgroupcreatedbad'] = 'ηΎ€η»„εˆ›ε»Ίε€±θ΄₯。'; + $lang['strconfdropgroup'] = 'η‘εšθ¦εˆ ι™€ηΎ€η»„"%s"ε—οΌŸ'; + $lang['strgroupdropped'] = 'ηΎ€η»„ε·²εˆ ι™€γ€‚'; + $lang['strgroupdroppedbad'] = 'ηΎ€η»„εˆ ι™€ε€±θ΄₯。'; + $lang['strmembers'] = 'ζˆε‘˜'; + $lang['strmemberof'] = 'ζ‰€ε±žζˆε‘˜'; + $lang['stradminmembers'] = 'η‘η†ζˆε‘˜'; + $lang['straddmember'] = 'ζ·»εŠ ζˆε‘˜'; + $lang['strmemberadded'] = 'ζˆε‘˜ε·²ζ·»εŠ γ€‚'; + $lang['strmemberaddedbad'] = 'ζˆε‘˜ζ·»εŠ ε€±θ΄₯。'; + $lang['strdropmember'] = 'εˆ ι™€ζˆε‘˜'; + $lang['strconfdropmember'] = 'η‘εšθ¦ε°†ζˆε‘˜ "%s" δ»ŽηΎ€η»„ "%s"δΈ­εˆ ι™€ε—?'; + $lang['strmemberdropped'] = 'ζˆε‘˜ε·²εˆ ι™€γ€‚'; + $lang['strmemberdroppedbad'] = 'ζˆε‘˜εˆ ι™€ε€±θ΄₯。'; + + // Roles + $lang['strrole'] = '角色'; + $lang['strroles'] = '角色'; + $lang['strshowallroles'] = 'ζ˜Ύη€Ίζ‰€ζœ‰θ§’θ‰²'; + $lang['strnoroles'] = 'ζŸ₯无角色。'; + $lang['strinheritsprivs'] = '继承权限?'; + $lang['strcreaterole'] = 'εˆ›ε»Ίθ§’θ‰²'; + $lang['strcancreaterole'] = 'εˆ›ε»Ίθ§’θ‰²?'; + $lang['strrolecreated'] = 'θ§’θ‰²ε·²εˆ›ε»Ίγ€‚'; + $lang['strrolecreatedbad'] = 'θ§’θ‰²εˆ›ε»Ίε€±θ΄₯。'; + $lang['strrolealtered'] = 'θ§’θ‰²ε·²ε˜ζ›΄γ€‚'; + $lang['strrolealteredbad'] = 'θ§’θ‰²ε˜ζ›΄ε€±θ΄₯。'; + $lang['strcanlogin'] = '可δ»₯登录?'; + $lang['strconnlimit'] = '连ζŽ₯ι™εˆΆ'; + $lang['strdroprole'] = 'εˆ ι™€θ§’θ‰²'; + $lang['strconfdroprole'] = 'η‘εšθ¦εˆ ι™€θ§’色 "%s"吗?'; + $lang['strroledropped'] = 'θ§’θ‰²ε·²εˆ ι™€γ€‚'; + $lang['strroledroppedbad'] = 'θ§’θ‰²εˆ ι™€ε€±θ΄₯。'; + $lang['strnolimit'] = 'ζ— ι™εˆΆ'; + $lang['strnever'] = '从不'; + $lang['strroleneedsname'] = 'εΏ…ι‘»ζŒ‡εšθ§’色名称。'; + + // Privileges + $lang['strprivilege'] = '权限'; + $lang['strprivileges'] = '权限'; + $lang['strnoprivileges'] = 'θΏ™δΈͺ对豑ζ‹₯ζœ‰ι»˜θ€ζ‰€ε±žδΊΊηš„权限。'; + $lang['strgrant'] = 'θ΅‹δΊˆ'; + $lang['strrevoke'] = 'ζ’€ε›ž'; + $lang['strgranted'] = 'ζƒι™ε·²ζ”Ήε˜'; + $lang['strgrantfailed'] = 'ζƒι™ζ”Ήε˜ε€±θ΄₯'; + $lang['strgrantbad'] = 'εΏ…ι‘»ζŒ‡εšθ‡³ε°‘δΈ€δΈͺη”¨ζˆ·ζˆ–δΈ€δΈͺη»„ε’ŒδΈ€δΈͺ权限。'; + $lang['strgrantor'] = 'θ΅‹δΊˆθ€…'; + $lang['strasterisk'] = '*'; + + // Databases + $lang['strdatabase'] = 'ζ•°ζεΊ“'; + $lang['strdatabases'] = 'ζ•°ζεΊ“'; + $lang['strshowalldatabases'] = 'ζ˜Ύη€Ίζ‰€ζœ‰ζ•°ζεΊ“'; + $lang['strnodatabases'] = 'ζŸ₯ζ— ζ•°ζεΊ“。'; + $lang['strcreatedatabase'] = 'εˆ›ε»Ίζ•°ζεΊ“'; + $lang['strdatabasename'] = 'ζ•°ζεΊ“名称'; + $lang['strdatabaseneedsname'] = 'εΏ…ι‘»ζŒ‡εšζ•°ζεΊ“名称。'; + $lang['strdatabasecreated'] = 'ζ•°ζεΊ“ε·²εˆ›ε»Ίγ€‚'; + $lang['strdatabasecreatedbad'] = 'ζ•°ζεΊ“εˆ›ε»Ίε€±θ΄₯。'; + $lang['strconfdropdatabase'] = 'η‘εšθ¦εˆ ι™€ζ•°ζεΊ“"%s"ε—οΌŸ'; + $lang['strdatabasedropped'] = 'ζ•°ζεΊ“ε·²εˆ ι™€γ€‚'; + $lang['strdatabasedroppedbad'] = 'ζ•°ζεΊ“εˆ ι™€ε€±θ΄₯'; + $lang['strentersql'] = 'θ―·εœ¨δΈ‹ζ–ΉθΎ“ε…₯θ¦ζ‰§θ‘Œηš„SQLθ―­ε₯:'; + $lang['strsqlexecuted'] = 'SQL ε·²ζ‰§θ‘Œγ€‚'; + $lang['strvacuumgood'] = '清理εŒζˆ'; + $lang['strvacuumbad'] = '清理倱θ΄₯'; + $lang['stranalyzegood'] = 'εˆ†ζžεŒζˆ'; + $lang['stranalyzebad'] = 'εˆ†ζžε€±θ΄₯'; + $lang['strreindexgood'] = '重建紒引εŒζˆγ€‚'; + $lang['strreindexbad'] = '重建紒引倱θ΄₯。'; + $lang['strfull'] = 'εŒε…¨'; + $lang['strfreeze'] = '冻结'; + $lang['strforce'] = '强刢'; + $lang['strsignalsent'] = '俑号已发送。'; + $lang['strsignalsentbad'] = '俑号发送倱θ΄₯。'; + $lang['strallobjects'] = 'ζ‰€ζœ‰ε―Ήθ±‘'; + $lang['strdatabasealtered'] = 'ζ•°ζεΊ“ε·²ε˜ζ›΄γ€‚'; + $lang['strdatabasealteredbad'] = 'ζ•°ζεΊ“ε˜ζ›΄ε€±θ΄₯。'; + $lang['strspecifydatabasetodrop'] = 'εΏ…ι‘»θ‡³ε°‘ζŒ‡εšδΈ€δΈͺθ¦η§»ι™€ηš„ζ•°ζεΊ“'; + $lang['strtemplatedb'] = '樑板'; + $lang['strconfanalyzedatabase'] = 'δ½ η‘εšθ¦εˆ†ζžζ•°ζεΊ“"%s"δΈ­ηš„ζ‰€ζœ‰θ‘¨ε—?'; + $lang['strconfvacuumdatabase'] = 'δ½ η‘εšθ¦ζΈ…理数ζεΊ“"%s"δΈ­ηš„ζ‰€ζœ‰θ‘¨ε—?'; + $lang['strconfreindexdatabase'] = 'δ½ η‘εšθ¦ι‡ζ–°η΄’εΌ•ζ•°ζεΊ“"%s"δΈ­ηš„ζ‰€ζœ‰θ‘¨ε—?'; + $lang['strconfclusterdatabase'] = 'δ½ η‘εšθ¦ι›†ηΎ€ζ•°ζεΊ“"%s"δΈ­ηš„ζ‰€ζœ‰θ‘¨ε—?'; + + // Views + $lang['strview'] = '视图'; + $lang['strviews'] = '视图'; + $lang['strshowallviews'] = 'ζ˜Ύη€Ίζ‰€ζœ‰θ§†ε›Ύ'; + $lang['strnoview'] = 'ζŸ₯无歀视图'; + $lang['strnoviews'] = 'ζŸ₯无视图。'; + $lang['strcreateview'] = 'εˆ›ε»Ίθ§†ε›Ύ'; + $lang['strviewname'] = '视图名称'; + $lang['strviewneedsname'] = 'εΏ…ι‘»ζŒ‡εšθ§†ε›Ύεη§°γ€‚'; + $lang['strviewneedsdef'] = 'εΏ…ι‘»ζŒ‡εšθ§†ε›ΎεšδΉ‰γ€‚'; + $lang['strviewneedsfields'] = 'εΏ…ι‘»ζŒ‡εšθ§†ε›Ύι‡Œθ¦ι€‰ζ‹©ηš„εˆ—γ€‚'; + $lang['strviewcreated'] = 'θ§†ε›Ύε·²εˆ›ε»Ίγ€‚'; + $lang['strviewcreatedbad'] = 'θ§†ε›Ύεˆ›ε»Ίε€±θ΄₯。'; + $lang['strconfdropview'] = 'η‘εšθ¦εˆ ι™€θ§†ε›Ύ"%s"ε—οΌŸ'; + $lang['strviewdropped'] = 'θ§†ε›Ύε·²εˆ ι™€γ€‚'; + $lang['strviewdroppedbad'] = 'θ§†ε›Ύεˆ ι™€ε€±θ΄₯。'; + $lang['strviewupdated'] = '视图已更新。'; + $lang['strviewupdatedbad'] = '视图更新倱θ΄₯'; + $lang['strviewlink'] = '连ζŽ₯ε…³ι”ε­—οΌˆLinking keysοΌ‰'; + $lang['strviewconditions'] = 'ι™„εŠ ζ‘δ»Ά'; + $lang['strcreateviewwiz'] = 'δ½Ώη”¨ε‘ε―Όεˆ›ε»Ίθ§†ε›Ύ'; + $lang['strrenamedupfields'] = 'ι‡ε‘½εε€εˆΆηš„ε­—ζ΅'; + $lang['strdropdupfields'] = 'η§»ι™€ε€εˆΆηš„ε­—ζ΅'; + $lang['strerrordupfields'] = 'ε€εˆΆε­—ζ΅ζ—Άε‘η”Ÿι”™θ――'; + $lang['strviewaltered'] = 'θ§†ε›Ύε·²ε˜ζ›΄γ€‚'; + $lang['strviewalteredbad'] = 'θ§†ε›Ύε˜ζ›΄ε€±θ΄₯。'; + $lang['strspecifyviewtodrop'] = 'εΏ…ι‘»θ‡³ε°‘ζŒ‡εšδΈ€δΈͺθ¦η§»ι™€ηš„θ§†ε›Ύ'; + + // Sequences + $lang['strsequence'] = 'εΊεˆ—'; + $lang['strsequences'] = 'εΊεˆ—'; + $lang['strshowallsequences'] = 'ζ˜Ύη€Ίζ‰€ζœ‰εΊεˆ—'; + $lang['strnosequence'] = 'ζŸ₯ζ— ζ­€εΊεˆ—'; + $lang['strnosequences'] = 'ζŸ₯ζ— εΊεˆ—γ€‚'; + $lang['strcreatesequence'] = 'εˆ›ε»ΊεΊεˆ—'; + $lang['strlastvalue'] = 'ζœ€εŽε€Ό'; + $lang['strincrementby'] = 'ε’žι‡'; + $lang['strstartvalue'] = '衷始值'; + $lang['strrestartvalue'] = '重新θ‘η—'; + $lang['strmaxvalue'] = 'ζœ€ε€§ε€Ό'; + $lang['strminvalue'] = 'ζœ€ε°ε€Ό'; + $lang['strcachevalue'] = 'ηΌ“ε­˜ε€Ό'; + $lang['strlogcount'] = 'ζ—₯εΏ—θ‘ζ•°οΌˆLog countοΌ‰'; + $lang['strcancycle'] = '可δ»₯εΎͺηŽ―ε—?'; + $lang['striscalled'] = 'ε°†εœ¨θΏ”ε›žδΈ‹δΈ€δΈͺε€Όε‰ι€’ε’žζœ€εŽηš„ε€Ό(is_called)ε—οΌŸ'; + $lang['strsequenceneedsname'] = 'εΏ…ι‘»ζŒ‡εšεΊεˆ—名称。'; + $lang['strsequencecreated'] = 'εΊεˆ—ε·²εˆ›ε»Ίγ€‚'; + $lang['strsequencecreatedbad'] = 'εΊεˆ—εˆ›ε»Ίε€±θ΄₯。'; + $lang['strconfdropsequence'] = 'η‘εšθ¦εˆ ι™€εΊεˆ—"%s"ε—οΌŸ'; + $lang['strsequencedropped'] = 'εΊεˆ—ε·²εˆ ι™€γ€‚'; + $lang['strsequencedroppedbad'] = 'εΊεˆ—εˆ ι™€ε€±θ΄₯。'; + $lang['strsequencerestart'] = '重新θ‘η—εΊεˆ—γ€‚'; + $lang['strsequencerestartbad'] = 'εΊεˆ—ι‡ζ–°θ‘η—ε€±θ΄₯。'; + $lang['strsequencereset'] = 'εΊεˆ—ε·²ι‡η½γ€‚'; + $lang['strsequenceresetbad'] = 'εΊεˆ—ι‡η½ε€±θ΄₯。'; + $lang['strsequencealtered'] = 'εΊεˆ—ε·²ε˜ζ›΄γ€‚'; + $lang['strsequencealteredbad'] = 'εΊεˆ—ε˜ζ›΄ε€±θ΄₯。'; + $lang['strsetval'] = 'θΎεšεΊεˆ—ε€Ό'; + $lang['strsequencesetval'] = 'εΊεˆ—ε€Όε·²θΎεšγ€‚'; + $lang['strsequencesetvalbad'] = 'εΊεˆ—ε€ΌθΎη½ε€±θ΄₯。'; + $lang['strnextval'] = 'ι€’ε’žεΊεˆ—ε€Ό'; + $lang['strsequencenextval'] = 'εΊεˆ—ε€Όε·²ι€’ε’žγ€‚'; + $lang['strsequencenextvalbad'] = 'εΊεˆ—ε€Όι€’ε’žε€±θ΄₯。'; + $lang['strspecifysequencetodrop'] = 'εΏ…ι‘»θ‡³ε°‘ζŒ‡εšδΈ€δΈͺεΊεˆ—ζ₯εˆ ι™€'; + + // Indexes + $lang['strindex'] = 'η΄’εΌ•'; + $lang['strindexes'] = 'η΄’εΌ•'; + $lang['strindexname'] = '紒引名'; + $lang['strshowallindexes'] = 'ζ˜Ύη€Ίζ‰€ζœ‰η΄’εΌ•'; + $lang['strnoindex'] = 'ζŸ₯ζ— ζ­€η΄’εΌ•'; + $lang['strnoindexes'] = 'ζŸ₯ζ— η΄’εΌ•'; + $lang['strcreateindex'] = 'εˆ›ε»Ίη΄’εΌ•'; + $lang['strtabname'] = 'ζ•°ζθ‘¨ε'; + $lang['strcolumnname'] = 'εˆ—ε'; + $lang['strindexneedsname'] = 'εΏ…ι‘»ζŒ‡εšη΄’引名称。'; + $lang['strindexneedscols'] = 'εΏ…ι‘»η»™η΄’εΌ•ζŒ‡εšζœ‰ζ•ˆηš„εˆ—ζ•°γ€‚'; + $lang['strindexcreated'] = 'η΄’εΌ•ε·²εˆ›ε»Ί'; + $lang['strindexcreatedbad'] = 'η΄’εΌ•εˆ›ε»Ίε€±θ΄₯。'; + $lang['strconfdropindex'] = 'η‘εšθ¦εˆ ι™€"%s"η΄’εΌ•οΌŸ'; + $lang['strindexdropped'] = 'η΄’εΌ•ε·²εˆ ι™€γ€‚'; + $lang['strindexdroppedbad'] = 'η΄’εΌ•εˆ ι™€ε€±θ΄₯。'; + $lang['strkeyname'] = 'ι”名'; + $lang['struniquekey'] = 'ε”―δΈ€ι”'; + $lang['strprimarykey'] = 'δΈ»ι”'; + $lang['strindextype'] = 'η΄’εΌ•η±»εž‹'; + $lang['strtablecolumnlist'] = 'θ‘¨δΈ­ηš„εˆ—'; + $lang['strindexcolumnlist'] = 'η΄’εΌ•δΈ­ηš„εˆ—'; + $lang['strconfcluster'] = 'η‘εšθ¦ι›†ηΎ€ "%s"吗?'; + $lang['strclusteredgood'] = '集羀εŒζˆγ€‚'; + $lang['strclusteredbad'] = '集羀倱θ΄₯。'; + $lang['strconcurrently'] = '幢发'; + $lang['strnoclusteravailable'] = 'θ‘¨δΈ­ζ²‘ζœ‰ι›†ηΎ€η΄’εΌ•γ€‚'; + + // Rules + $lang['strrules'] = 'θ§„εˆ™'; + $lang['strrule'] = 'θ§„εˆ™'; + $lang['strshowallrules'] = 'ζ˜Ύη€Ίζ‰€ζœ‰θ§„εˆ™'; + $lang['strnorule'] = 'ζŸ₯ζ— ζ­€θ§„εˆ™γ€‚'; + $lang['strnorules'] = 'ζŸ₯ζ— θ§„εˆ™'; + $lang['strcreaterule'] = 'εˆ›ε»Ίθ§„εˆ™'; + $lang['strrulename'] = 'θ§„εˆ™εη§°'; + $lang['strruleneedsname'] = 'εΏ…ι‘»ζŒ‡εšθ§„εˆ™εη§°γ€‚'; + $lang['strrulecreated'] = 'θ§„εˆ™ε·²εˆ›ε»Ίγ€‚'; + $lang['strrulecreatedbad'] = 'θ§„εˆ™εˆ›ε»Ίε€±θ΄₯。'; + $lang['strconfdroprule'] = 'η‘εšθ¦ε°†θ§„εˆ™"%s"从"%s"δΈ­εˆ ι™€ε—οΌŸ'; + $lang['strruledropped'] = 'θ§„εˆ™ε·²εˆ ι™€γ€‚'; + $lang['strruledroppedbad'] = 'θ§„εˆ™εˆ ι™€ε€±θ΄₯。'; + + // Constraints + $lang['strconstraint'] = '约束'; + $lang['strconstraints'] = '约束'; + $lang['strshowallconstraints'] = 'ζ˜Ύη€Ίζ‰€ζœ‰ηΊ¦ζŸγ€‚'; + $lang['strnoconstraints'] = 'ζŸ₯ζ— ζ­€ηΊ¦ζŸγ€‚'; + $lang['strcreateconstraint'] = 'εˆ›ε»ΊηΊ¦ζŸ'; + $lang['strconstraintcreated'] = 'ηΊ¦ζŸε·²εˆ›ε»Ίγ€‚'; + $lang['strconstraintcreatedbad'] = 'ηΊ¦ζŸεˆ›ε»Ίε€±θ΄₯。'; + $lang['strconfdropconstraint'] = 'η‘εšθ¦ε°†εΌΊεˆΆ"%s"从"%s"δΈ­εˆ ι™€ε—οΌŸ'; + $lang['strconstraintdropped'] = 'ηΊ¦ζŸε·²εˆ ι™€γ€‚'; + $lang['strconstraintdroppedbad'] = 'ηΊ¦ζŸεˆ ι™€ε€±θ΄₯。'; + $lang['straddcheck'] = 'ζ·»εŠ ζ£€ζŸ₯约束'; + $lang['strcheckneedsdefinition'] = 'εΏ…ι‘»ζŒ‡εšζ£€ζŸ₯ηΊ¦ζŸηš„εšδΉ‰γ€‚'; + $lang['strcheckadded'] = 'ζ£€ζŸ₯ηΊ¦ζŸε·²ζ·»εŠ γ€‚'; + $lang['strcheckaddedbad'] = 'ζ£€ζŸ₯约束添加倱θ΄₯。'; + $lang['straddpk'] = '添加主ι”'; + $lang['strpkneedscols'] = 'δΈ»ι”θ‡³ε°‘ιœ€ζŒ‡εšδΈ€εˆ—。'; + $lang['strpkadded'] = 'δΈ»ι”ε·²ζ·»εŠ γ€‚'; + $lang['strpkaddedbad'] = 'δΈ»ι”ζ·»εŠ ε€±θ΄₯。'; + $lang['stradduniq'] = 'ζ·»εŠ ε”―δΈ€ι”'; + $lang['struniqneedscols'] = 'ε”―δΈ€ι”θ‡³ε°‘ιœ€ζŒ‡εšδΈ€εˆ—。'; + $lang['struniqadded'] = 'ε”―δΈ€ι”ε·²ζ·»εŠ γ€‚'; + $lang['struniqaddedbad'] = 'ε”―δΈ€ι”ζ·»εŠ ε€±θ΄₯。'; + $lang['straddfk'] = 'ζ·»εŠ ε€–ι”'; + $lang['strfkneedscols'] = 'ε€–ι”θ‡³ε°‘ιœ€ζŒ‡εšδΈ€εˆ—。'; + $lang['strfkneedstarget'] = 'ε€–ι”ιœ€ζŒ‡εšδΈ€δΈͺη›ζ ‡ζ•°ζθ‘¨γ€‚'; + $lang['strfkadded'] = 'ε€–ι”ε·²ζ·»εŠ γ€‚'; + $lang['strfkaddedbad'] = 'ε€–ι”ζ·»εŠ ε€±θ΄₯。'; + $lang['strfktarget'] = 'η›ζ ‡ζ•°ζθ‘¨'; + $lang['strfkcolumnlist'] = 'ι”δΈ­ηš„εˆ—'; + $lang['strondelete'] = 'ON DELETE'; + $lang['stronupdate'] = 'ON UPDATE'; + + // Functions + $lang['strfunction'] = '函数'; + $lang['strfunctions'] = '函数'; + $lang['strshowallfunctions'] = 'ζ˜Ύη€Ίζ‰€ζœ‰ε‡½ζ•°'; + $lang['strnofunction'] = 'ζŸ₯无歀函数'; + $lang['strnofunctions'] = 'ζŸ₯无函数'; + $lang['strcreateplfunction'] = 'εˆ›ε»Ί SQL/PL 函数'; + $lang['strcreateinternalfunction'] = 'εˆ›ε»Ίε†…ιƒ¨ε‡½ζ•°'; + $lang['strcreatecfunction'] = 'εˆ›ε»Ί C 函数'; + $lang['strfunctionname'] = '函数名称'; + $lang['strreturns'] = 'θΏ”ε›ž'; + $lang['strproglanguage'] = '过程语言'; + $lang['strfunctionneedsname'] = 'εΏ…ι‘»ζŒ‡εšε‡½ζ•°εη§°γ€‚'; + $lang['strfunctionneedsdef'] = 'εΏ…ι‘»ζŒ‡εšε‡½ζ•°εšδΉ‰γ€‚'; + $lang['strfunctioncreated'] = 'ε‡½ζ•°ε·²εˆ›ε»Ί'; + $lang['strfunctioncreatedbad'] = 'ε‡½ζ•°εˆ›ε»Ίε€±θ΄₯'; + $lang['strconfdropfunction'] = 'η‘εšθ¦εˆ ι™€ε‡½ζ•°"%s"ε—οΌŸ'; + $lang['strfunctiondropped'] = 'ε‡½ζ•°ε·²εˆ ι™€γ€‚'; + $lang['strfunctiondroppedbad'] = 'ε‡½ζ•°εˆ ι™€ε€±θ΄₯。'; + $lang['strfunctionupdated'] = '函数已更新。'; + $lang['strfunctionupdatedbad'] = '函数更新倱θ΄₯。'; + $lang['strobjectfile'] = '对豑文仢'; + $lang['strlinksymbol'] = '连ζŽ₯对豑'; + $lang['strarguments'] = '参数'; + $lang['strargmode'] = '樑式'; + $lang['strargtype'] = 'η±»εž‹'; + $lang['strargadd'] = 'ζ–°ζ·»εŠ δΈ€δΈͺ参数'; + $lang['strargremove'] = '移陀这δΈͺ参数'; + $lang['strargnoargs'] = 'θ―₯函数无参数。'; + $lang['strargenableargs'] = 'δ½Ώθ―₯ε‡½ζ•°ηš„ε‚ζ•°ζœ‰ζ•ˆγ€‚'; + $lang['strargnorowabove'] = '在θ―₯θ‘ŒδΈŠι’ι‘»ζœ‰δΈ€θ‘Œγ€‚'; + $lang['strargnorowbelow'] = '在θ―₯θ‘ŒδΈ‹ι’ι‘»ζœ‰δΈ€θ‘Œγ€‚'; + $lang['strargraise'] = 'δΈŠη§»γ€‚'; + $lang['strarglower'] = '下移。'; + $lang['strargremoveconfirm'] = 'η‘εšθ¦η§»ι™€θΏ™δΈͺε‚ζ•°ε—οΌŸθΏ™δΈͺζ“δ½œδΈθƒ½ζ’€ι”€γ€‚'; + $lang['strfunctioncosting'] = '函数代价(Function Costing)'; + $lang['strresultrows'] = 'η»“ζžœθ‘Œ'; + $lang['strexecutioncost'] = 'ζ‰§θ‘Œδ»£δ»·'; + $lang['strspecifyfunctiontodrop'] = 'εΏ…ι‘»θ‡³ε°‘ζŒ‡εšδΈ€δΈͺ函数ζ₯εˆ ι™€'; + + // Triggers + $lang['strtrigger'] = '触发器'; + $lang['strtriggers'] = '触发器'; + $lang['strshowalltriggers'] = 'ζ˜Ύη€Ίζ‰€ζœ‰θ§¦ε‘ε™¨'; + $lang['strnotrigger'] = 'ζŸ₯无歀触发器。'; + $lang['strnotriggers'] = 'ζŸ₯无触发器。'; + $lang['strcreatetrigger'] = 'εˆ›ε»Ίθ§¦ε‘ε™¨'; + $lang['strtriggerneedsname'] = 'εΏ…ι‘»ζŒ‡εšθ§¦ε‘器名称。'; + $lang['strtriggerneedsfunc'] = 'εΏ…ι‘»η»™θ§¦ε‘ε™¨ζŒ‡εšδΈ€δΈͺ函数。'; + $lang['strtriggercreated'] = 'θ§¦ε‘ε™¨ε·²εˆ›ε»Ίγ€‚'; + $lang['strtriggercreatedbad'] = 'θ§¦ε‘ε™¨εˆ›ε»Ίε€±θ΄₯。'; + $lang['strconfdroptrigger'] = 'η‘εšθ¦ε°†θ§¦ε‘器"%s"从"%s"δΈ­εˆ ι™€ε—οΌŸ'; + $lang['strconfenabletrigger'] = 'η‘εšθ¦δ½Ώθ§¦ε‘器 "%s" 在 "%s"δΈŠζœ‰ζ•ˆε—?'; + $lang['strconfdisabletrigger'] = 'η‘εšθ¦δ½Ώθ§¦ε‘器 "%s" 在 "%s"δΈŠζ— ζ•ˆε—?'; + $lang['strtriggerdropped'] = 'θ§¦ε‘ε™¨ε·²εˆ ι™€γ€‚'; + $lang['strtriggerdroppedbad'] = 'θ§¦ε‘ε™¨εˆ ι™€ε€±θ΄₯。'; + $lang['strtriggerenabled'] = 'θ§¦ε‘ε™¨ε·²ζœ‰ζ•ˆγ€‚'; + $lang['strtriggerenabledbad'] = 'θ§¦ε‘ε™¨ζœ‰ζ•ˆεŒ–ε€±θ΄₯。'; + $lang['strtriggerdisabled'] = 'θ§¦ε‘ε™¨ε·²ζ— ζ•ˆγ€‚'; + $lang['strtriggerdisabledbad'] = 'θ§¦ε‘ε™¨ζ— ζ•ˆεŒ–ε€±θ΄₯。'; + $lang['strtriggeraltered'] = 'θ§¦ε‘ε™¨ε·²ε˜ζ›΄γ€‚'; + $lang['strtriggeralteredbad'] = 'θ§¦ε‘ε™¨ε˜ζ›΄ε€±θ΄₯。'; + $lang['strforeach'] = '给每一δΈͺ'; + + // Types + $lang['strtype'] = 'η±»εž‹'; + $lang['strtypes'] = 'η±»εž‹'; + $lang['strshowalltypes'] = 'ζ˜Ύη€Ίζ‰€ζœ‰ηš„η±»εž‹'; + $lang['strnotype'] = 'ζŸ₯ζ— ζ­€η±»εž‹'; + $lang['strnotypes'] = 'ζŸ₯ζ— η±»εž‹γ€‚'; + $lang['strcreatetype'] = 'εˆ›ε»Ίη±»εž‹'; + $lang['strcreatecomptype'] = 'εˆ›ε»Ίη»„εˆη±»εž‹'; + $lang['strcreateenumtype'] = 'εˆ›ε»ΊζžšδΈΎη±»εž‹'; + $lang['strtypeneedsfield'] = 'εΏ…ι‘»θ‡³ε°‘ζŒ‡εšδΈ€δΈͺε­—ζ΅γ€‚'; + $lang['strtypeneedsvalue'] = 'εΏ…ι‘»θ‡³ε°‘ζŒ‡εšδΈ€δΈͺε€Ό'; + $lang['strtypeneedscols'] = 'εΏ…ι‘»ζŒ‡εšζœ‰ζ•ˆηš„ε­—ζ΅ζ•°γ€‚'; + $lang['strtypeneedsvals'] = 'εΏ…ι‘»ζŒ‡εšδΈ€δΈͺζœ‰ζ•ˆηš„ε­—ζ΅ζ•°γ€‚'; + $lang['strinputfn'] = 'θΎ“ε…₯函数'; + $lang['stroutputfn'] = '输出函数'; + $lang['strpassbyval'] = 'δΌ ε€ΌοΌŸ'; + $lang['stralignment'] = '参数'; + $lang['strelement'] = 'ε…ƒη΄ '; + $lang['strdelimiter'] = 'εˆ†ιš”η¬¦'; + $lang['strstorage'] = 'η£η›˜ε­˜ε‚¨'; + $lang['strfield'] = 'ε­—ζ΅'; + $lang['strnumfields'] = 'εˆ—ζ•°'; + $lang['strnumvalues'] = 'ε€Όζ•°'; + $lang['strtypeneedsname'] = 'εΏ…ι‘»ζŒ‡εšη±»εž‹εη§°γ€‚'; + $lang['strtypeneedslen'] = 'εΏ…ι‘»ζŒ‡εšη±»εž‹ι•ΏεΊ¦γ€‚'; + $lang['strtypecreated'] = 'η±»εž‹ε·²εˆ›ε»Ίγ€‚'; + $lang['strtypecreatedbad'] = 'η±»εž‹εˆ›ε»Ίε€±θ΄₯。'; + $lang['strconfdroptype'] = 'η‘εšθ¦εˆ ι™€"%s"η±»εž‹ε—οΌŸ'; + $lang['strtypedropped'] = 'η±»εž‹ε·²εˆ ι™€γ€‚'; + $lang['strtypedroppedbad'] = 'η±»εž‹εˆ ι™€ε€±θ΄₯。'; + $lang['strflavor'] = '风格(FlavorοΌ‰'; + $lang['strbasetype'] = '基本'; + $lang['strcompositetype'] = 'η»„εˆ'; + $lang['strpseudotype'] = 'δΌͺ(PseudoοΌ‰'; + $lang['strenum'] = 'Enum'; + $lang['strenumvalues'] = 'ζžšδΈΎη±»εž‹'; + + // Schemas + $lang['strschema'] = '樑式'; + $lang['strschemas'] = '樑式'; + $lang['strshowallschemas'] = 'ζ˜Ύη€Ίζ‰€ζœ‰ζ¨‘εΌ'; + $lang['strnoschema'] = 'ζŸ₯无歀樑式'; + $lang['strnoschemas'] = 'ζŸ₯无樑式'; + $lang['strcreateschema'] = 'εˆ›ε»Ίζ¨‘εΌ'; + $lang['strschemaname'] = '樑式名称'; + $lang['strschemaneedsname'] = 'εΏ…ι‘»ζŒ‡εšζ¨‘式名称'; + $lang['strschemacreated'] = 'ζ¨‘εΌε·²εˆ›ε»Ί'; + $lang['strschemacreatedbad'] = 'ζ¨‘εΌεˆ›ε»Ίε€±θ΄₯'; + $lang['strconfdropschema'] = 'η‘εšθ¦εˆ ι™€ζ¨‘式"%s"ε—οΌŸ'; + $lang['strschemadropped'] = 'ζ¨‘εΌε·²εˆ ι™€'; + $lang['strschemadroppedbad'] = 'ζ¨‘εΌεˆ ι™€ε€±θ΄₯'; + $lang['strschemaaltered'] = 'ζ¨‘εΌε·²ε˜ζ›΄γ€‚'; + $lang['strschemaalteredbad'] = 'ζ¨‘εΌε˜ζ›΄ε€±θ΄₯。'; + $lang['strsearchpath'] = '樑式ζŸ₯ζ‰Ύθ·―εΎ„'; + $lang['strspecifyschematodrop'] = 'εΏ…ι‘»θ‡³ε°‘ζŒ‡εšδΈ€δΈͺ樑式ζ₯εˆ ι™€'; + + // Reports + + // Domains + $lang['strdomain'] = '域'; + $lang['strdomains'] = '域'; + $lang['strshowalldomains'] = 'ζ˜Ύη€Ίζ‰€ζœ‰εŸŸ'; + $lang['strnodomains'] = 'ζŸ₯ζ—  εŸŸγ€‚'; + $lang['strcreatedomain'] = 'εˆ›ε»ΊεŸŸ'; + $lang['strdomaindropped'] = 'εŸŸε·²εˆ ι™€γ€‚'; + $lang['strdomaindroppedbad'] = 'εŸŸεˆ ι™€ε€±θ΄₯。'; + $lang['strconfdropdomain'] = 'η‘εšθ¦εˆ ι™€εŸŸ "%s"吗?'; + $lang['strdomainneedsname'] = 'εΏ…ι‘»ζŒ‡εšεŸŸεη§°γ€‚'; + $lang['strdomaincreated'] = 'εŸŸε·²εˆ›ε»Ίγ€‚'; + $lang['strdomaincreatedbad'] = 'εŸŸεˆ›ε»Ίε€±θ΄₯。'; + $lang['strdomainaltered'] = 'εŸŸε·²ε˜ζ›΄γ€‚'; + $lang['strdomainalteredbad'] = 'εŸŸε˜ζ›΄ε€±θ΄₯。'; + + // Operators + $lang['stroperator'] = 'ζ“δ½œη¬¦'; + $lang['stroperators'] = 'ζ“δ½œη¬¦'; + $lang['strshowalloperators'] = 'ζ˜Ύη€Ίζ‰€ζœ‰ζ“δ½œη¬¦'; + $lang['strnooperator'] = 'ζŸ₯ζ— ζ­€ζ“δ½œη¬¦γ€‚'; + $lang['strnooperators'] = 'ζŸ₯ζ— ζ“δ½œη¬¦γ€‚'; + $lang['strcreateoperator'] = 'εˆ›ε»Ίζ“δ½œη¬¦'; + $lang['strleftarg'] = 'ε·¦ε‚ζ•°η±»εž‹'; + $lang['strrightarg'] = 'ε³ε‚ζ•°η±»εž‹'; + $lang['strcommutator'] = '转捒符'; + $lang['strnegator'] = 'ιžζ“δ½œη¬¦'; + $lang['strrestrict'] = '受限'; + $lang['strjoin'] = '连ζŽ₯'; + $lang['strhashes'] = 'ε“ˆεΈŒ'; + $lang['strmerges'] = '合幢'; + $lang['strleftsort'] = 'ε·¦ζŽ’εΊ'; + $lang['strrightsort'] = 'ε³ζŽ’εΊ'; + $lang['strlessthan'] = '小于'; + $lang['strgreaterthan'] = '倧于'; + $lang['stroperatorneedsname'] = 'εΏ…ι‘»ζŒ‡εšζ“δ½œη¬¦εη§°γ€‚'; + $lang['stroperatorcreated'] = 'ζ“δ½œη¬¦ε·²εˆ›ε»Ί'; + $lang['stroperatorcreatedbad'] = 'ζ“δ½œη¬¦εˆ›ε»Ίε€±θ΄₯。'; + $lang['strconfdropoperator'] = 'η‘εšθ¦εˆ ι™€ζ“δ½œη¬¦ "%s"吗?'; + $lang['stroperatordropped'] = 'ζ“δ½œη¬¦ε·²εˆ ι™€γ€‚'; + $lang['stroperatordroppedbad'] = 'ζ“δ½œη¬¦εˆ ι™€ε€±θ΄₯。'; + + // Casts + $lang['strcasts'] = 'η±»εž‹θ½¬ζ’'; + $lang['strnocasts'] = 'ζŸ₯ζ— η±»εž‹θ½¬ζ’γ€‚'; + $lang['strsourcetype'] = 'ζΊη±»εž‹'; + $lang['strtargettype'] = 'η›ζ ‡η±»εž‹'; + $lang['strimplicit'] = 'ιšε«ηš„'; + $lang['strinassignment'] = '委派中'; + $lang['strbinarycompat'] = '(δΊŒθΏ›εˆΆε…ΌεΉ)'; + + // Conversions + $lang['strconversions'] = '编码转捒'; + $lang['strnoconversions'] = 'ζŸ₯无编码转捒。'; + $lang['strsourceencoding'] = '源编码'; + $lang['strtargetencoding'] = 'η›ζ ‡ηΌ–码'; + + // Languages + $lang['strlanguages'] = '过程语言'; + $lang['strnolanguages'] = 'ζŸ₯无过程语言。'; + $lang['strtrusted'] = 'δΏ‘δ»»ηš„'; + + // Info + $lang['strnoinfo'] = 'ζ— θ΅„ζ–™οΌˆinformation)可用。'; + $lang['strreferringtables'] = 'ζŸ₯诒(Referring)葨'; + $lang['strparenttables'] = '爢葨'; + $lang['strchildtables'] = '子葨'; + + // Aggregates + $lang['straggregate'] = 'θšι›†'; + $lang['straggregates'] = 'θšι›†'; + $lang['strnoaggregates'] = 'ζŸ₯ζ— θšι›†γ€‚'; + $lang['stralltypes'] = '(ζ‰€ζœ‰η±»εž‹)'; + $lang['strcreateaggregate'] = 'εˆ›ε»Ίθšι›†'; + $lang['straggrbasetype'] = 'θΎ“ε…₯ζ•°ζη±»εž‹'; + $lang['straggrsfunc'] = 'ηŠΆζ€θ½¬εŒ–ε‡½ζ•°'; + $lang['straggrstype'] = 'ηŠΆζ€η±»εž‹'; + $lang['straggrffunc'] = 'ζœ€η»ˆε‡½ζ•°'; + $lang['straggrinitcond'] = 'εˆε§‹ε‡½ζ•°'; + $lang['straggrsortop'] = 'ζŽ’εΊζ“δ½œη¬¦'; + $lang['strconfdropaggregate'] = 'η‘εšθ¦εˆ ι™€θšι›† "%s"吗?'; + $lang['straggregatedropped'] = 'θšι›†ε·²εˆ ι™€γ€‚'; + $lang['straggregatedroppedbad'] = 'θšι›†εˆ ι™€ε€±θ΄₯。'; + $lang['straggraltered'] = 'θšι›†ε·²ε˜ζ›΄γ€‚'; + $lang['straggralteredbad'] = 'θšι›†ε˜ζ›΄ε€±θ΄₯。'; + $lang['straggrneedsname'] = 'εΏ…ι‘»ζŒ‡εšθšι›†ηš„名称'; + $lang['straggrneedsbasetype'] = 'εΏ…ι‘»ζŒ‡εšθšι›†ηš„θΎ“ε…₯ζ•°ζη±»εž‹'; + $lang['straggrneedssfunc'] = 'εΏ…ι‘»ζŒ‡εšθšι›†ηš„ηŠΆζ€θ½¬ζ’函数'; + $lang['straggrneedsstype'] = 'εΏ…ι‘»ζŒ‡εšθšι›†ηš„ηŠΆζ€ε€Όηš„ζ•°ζη±»εž‹'; + $lang['straggrcreated'] = 'θšι›†ε·²εˆ›ε»Ίγ€‚'; + $lang['straggrcreatedbad'] = 'θšι›†εˆ›ε»Ίε€±θ΄₯。'; + $lang['straggrshowall'] = 'ζ˜Ύη€Ίζ‰€ζœ‰θšι›†'; + + // Operator Classes + $lang['stropclasses'] = 'ζ“δ½œη¬¦η±»'; + $lang['strnoopclasses'] = 'ζŸ₯ζ— ζ­€ζ“δ½œη¬¦η±»γ€‚'; + $lang['straccessmethod'] = 'ε­˜ε–ζ–Ήζ³•'; + + // Stats and performance + $lang['strrowperf'] = 'θ‘Œζ€§θƒ½'; + $lang['strioperf'] = 'I/O 性能'; + $lang['stridxrowperf'] = 'η΄’εΌ•θ‘Œζ€§θƒ½'; + $lang['stridxioperf'] = 'η΄’εΌ• I/O 性能'; + $lang['strpercent'] = '%'; + $lang['strsequential'] = '鑺序扫描'; + $lang['strscan'] = '扫描'; + $lang['strread'] = '读取'; + $lang['strfetch'] = '取得'; + $lang['strheap'] = 'ε †'; + $lang['strtoast'] = 'TOAST'; + $lang['strtoastindex'] = 'TOAST η΄’εΌ•'; + $lang['strcache'] = 'ηΌ“ε­˜'; + $lang['strdisk'] = 'η‘¬η›˜'; + $lang['strrows2'] = '葌'; + + // Tablespaces + $lang['strtablespace'] = '葨空间'; + $lang['strtablespaces'] = '葨空间'; + $lang['strshowalltablespaces'] = 'ζ˜Ύη€Ίζ‰€ζœ‰θ‘¨η©Ίι—΄'; + $lang['strnotablespaces'] = 'ζŸ₯无歀葨空间。'; + $lang['strcreatetablespace'] = 'εˆ›ε»Ίθ‘¨η©Ίι—΄'; + $lang['strlocation'] = '位η½'; + $lang['strtablespaceneedsname'] = 'εΏ…ι‘»ζŒ‡εšθ‘¨η©Ίι—΄εη§°γ€‚'; + $lang['strtablespaceneedsloc'] = 'εΏ…ι‘»ζŒ‡εšεˆ›ε»Ίθ‘¨η©Ίι—΄ηš„文仢倹。'; + $lang['strtablespacecreated'] = 'θ‘¨η©Ίι—΄ε·²εˆ›ε»Ίγ€‚'; + $lang['strtablespacecreatedbad'] = 'θ‘¨η©Ίι—΄εˆ›ε»Ίε€±θ΄₯。'; + $lang['strconfdroptablespace'] = 'η‘εšθ¦εˆ ι™€θ‘¨η©Ίι—΄ "%s"吗?'; + $lang['strtablespacedropped'] = 'θ‘¨η©Ίι—΄ε·²εˆ ι™€γ€‚'; + $lang['strtablespacedroppedbad'] = 'θ‘¨η©Ίι—΄εˆ ι™€ε€±θ΄₯。'; + $lang['strtablespacealtered'] = 'θ‘¨η©Ίι—΄ε·²ε˜ζ›΄γ€‚'; + $lang['strtablespacealteredbad'] = 'θ‘¨η©Ίι—΄ε˜ζ›΄ε€±θ΄₯。'; + + // Miscellaneous + $lang['strtopbar'] = '%s 枢于 %s:%s - ζ‚¨ζ˜― "%s"'; + $lang['strtimefmt'] = 'jS M, Y g:iA'; + $lang['strhelp'] = 'εΈεŠ©'; + $lang['strhelpicon'] = '?'; + $lang['strhelppagebrowser'] = 'εΈεŠ©ι‘΅ι’桏览'; + $lang['strselecthelppage'] = '选择一δΈͺεΈεŠ©ι‘΅ι’'; + $lang['strinvalidhelppage'] = 'ζ— ζ•ˆηš„εΈεŠ©ι‘΅ι’。'; + $lang['strlogintitle'] = 'η™»ε…₯ %s'; + $lang['strlogoutmsg'] = '注销 %s'; + $lang['strloading'] = 'εŠ θ½½δΈ­γ€‚γ€‚γ€‚'; + $lang['strerrorloading'] = 'εŠ θ½½ι”™θ――'; + $lang['strclicktoreload'] = 'η‚Ήε‡»ι‡ζ–°εŠ θ½½'; + + // Autovacuum + $lang['strautovacuum'] = 'θ‡ͺεŠ¨ζΈ…η†(Autovacuum)'; + $lang['strturnedon'] = '打开'; + $lang['strturnedoff'] = 'ε…³ι—­'; + $lang['strenabled'] = 'ζœ‰ζ•ˆ'; + $lang['strnovacuumconf'] = 'ζ²‘ζœ‰θ‡ͺεŠ¨ζΈ…η†ι…η½γ€‚'; + $lang['strvacuumbasethreshold'] = 'ζΈ…η†εŸΊζœ¬δΈ΄η•Œε€Ό'; + $lang['strvacuumscalefactor'] = '清理捒η—η³»ζ•°'; + $lang['stranalybasethreshold'] = 'εˆ†ζžεŸΊζœ¬δΈ΄η•Œε€Ό'; + $lang['stranalyzescalefactor'] = 'εˆ†ζžζ’η—η³»ζ•°'; + $lang['strvacuumcostdelay'] = 'ζΈ…η†ζˆζœ¬ε»ΆθΏŸ'; + $lang['strvacuumcostlimit'] = 'ζΈ…η†ζˆζœ¬ι™εˆΆ'; + $lang['strvacuumpertable'] = 'ζ­€θ‘¨ηš„θ‡ͺεŠ¨ζΈ…η†ι…η½'; + $lang['straddvacuumtable'] = '为歀葨咞加θ‡ͺεŠ¨ζΈ…η†ι…η½'; + $lang['streditvacuumtable'] = '编辑葨 %s ηš„θ‡ͺεŠ¨ζΈ…η†ι…η½'; + $lang['strdelvacuumtable'] = 'εˆ ι™€θ‘¨ %s ηš„θ‡ͺεŠ¨ζΈ…η†ι…η½?'; + $lang['strvacuumtablereset'] = '还原葨 %s ηš„θ‡ͺεŠ¨ζΈ…η†ι…η½δΈΊι»˜θ€ε€Ό'; + $lang['strdelvacuumtablefail'] = 'ζ— ζ³•εˆ ι™€θ‘¨ %s ηš„θ‡ͺεŠ¨ζΈ…η†ι…η½'; + $lang['strsetvacuumtablesaved'] = '已保存葨 %s ηš„θ‡ͺεŠ¨ζΈ…η†ι…η½'; + $lang['strsetvacuumtablefail'] = '葨 %s ηš„θ‡ͺεŠ¨ζΈ…η†ι…η½ε€±θ΄₯'; + $lang['strspecifydelvacuumtable'] = 'θ―·ζŒ‡εšδ½ εΈŒζœ›η§»ι™€θ‡ͺεŠ¨ζΈ…η†ι…η½ηš„葨。'; + $lang['strspecifyeditvacuumtable'] = 'θ―·ζŒ‡εšδ½ εΈŒζœ›ηΌ–θΎ‘θ‡ͺεŠ¨ζΈ…η†ι…η½ηš„葨。'; + $lang['strnotdefaultinred'] = '非默θ€ε€Όθ’«ζ ‡ζ³¨δΈΊηΊ’色。'; + + // Table-level Locks + $lang['strlocks'] = '锁'; + $lang['strtransaction'] = 'δΊ‹εŠ‘ID'; + $lang['strvirtualtransaction'] = 'θ™šζ‹ŸδΊ‹εŠ‘ID'; + $lang['strprocessid'] = '进程ID'; + $lang['strmode'] = '锁εšζ¨‘式'; + $lang['strislockheld'] = 'ζ‹₯ζœ‰ι”?'; + + // Prepared transactions + $lang['strpreparedxacts'] = 'ε·²ε‡†ε€‡δΊ‹εŠ‘'; + $lang['strxactid'] = 'δΊ‹εŠ‘ID'; + $lang['strgid'] = 'ε…¨εŸŸID'; + + // Fulltext search + $lang['strfulltext'] = 'ε…¨ζ–‡ζ£€η΄’'; + $lang['strftsconfig'] = '全文检紒配η½'; + $lang['strftsconfigs'] = '配η½'; + $lang['strftscreateconfig'] = 'εˆ›ε»Ί 全文检紒配η½'; + $lang['strftscreatedict'] = 'εˆ›ε»Ίε­—ε…Έ'; + $lang['strftscreatedicttemplate'] = 'εˆ›ε»Ίε­—ε…Έζ¨‘ζΏ'; + $lang['strftscreateparser'] = 'εˆ›ε»Ίεˆ†ζžε™¨'; + $lang['strftsnoconfigs'] = 'ζ²‘ζœ‰ζ‰Ύεˆ°ε…¨ζ–‡ζ£€η΄’ι…η½γ€‚'; + $lang['strftsconfigdropped'] = '全文检紒配η½ε·²η§»ι™€γ€‚'; + $lang['strftsconfigdroppedbad'] = '全文检紒移陀倱θ΄₯。'; + $lang['strconfdropftsconfig'] = 'η‘εšθ¦η§»ι™€ε…¨ζ–‡ζ£€η΄’ζ£€η΄’ι…η½ "%s"吗?'; + $lang['strconfdropftsdict'] = 'η‘εšθ¦η§»ι™€ε…¨ζ–‡ζ£€η΄’ε­—ε…Έ "%s"吗?'; + $lang['strconfdropftsmapping'] = 'η‘εšθ¦ε°†ζ˜ ε°„ "%s" δ»Žε…¨ζ–‡ζ£€η΄’ι…η½ "%s"中移陀吗?'; + $lang['strftstemplate'] = '樑板'; + $lang['strftsparser'] = 'εˆ†ζžε™¨'; + $lang['strftsconfigneedsname'] = 'εΏ…ι‘»ζŒ‡εšε…¨ζ–‡ζ£€η΄’配η½εη§°γ€‚'; + $lang['strftsconfigcreated'] = '全文检紒配η½ε·²εˆ›ε»Ί'; + $lang['strftsconfigcreatedbad'] = '全文检紒配η½εˆ›ε»Ίε€±θ΄₯。'; + $lang['strftsmapping'] = 'ζ˜ ε°„'; + $lang['strftsdicts'] = 'ε­—ε…Έ'; + $lang['strftsdict'] = 'ε­—ε…Έ'; + $lang['strftsemptymap'] = 'η©Ίηš„ε…¨ζ–‡ζ£€η΄’ι…η½ζ˜ ε°„。'; + $lang['strftsconfigaltered'] = 'ε…¨ζ–‡ζ£€η΄’ε·²ε˜ζ›΄γ€‚'; + $lang['strftsconfigalteredbad'] = 'ε…¨ζ–‡ζ£€η΄’ε˜ζ›΄ε€±θ΄₯。'; + $lang['strftsconfigmap'] = '全文检紒配η½ζ˜ ε°„'; + $lang['strftsparsers'] = 'ε…¨ζ–‡ζ£€η΄’εˆ†ζžε™¨'; + $lang['strftsnoparsers'] = 'ζ— ζœ‰ζ•ˆηš„ε…¨ζ–‡ζ£€η΄’εˆ†ζžε™¨γ€‚'; + $lang['strftsnodicts'] = 'ζ— ζœ‰ζ•ˆηš„ε…¨ζ–‡ζ£€η΄’ε­—ε…Έγ€‚'; + $lang['strftsdictcreated'] = 'ε…¨ζ–‡ζ£€η΄’ε­—ε…Έε·²εˆ›ε»Ί'; + $lang['strftsdictcreatedbad'] = 'ε…¨ζ–‡ζ£€η΄’ε­—ε…Έεˆ›ε»Ίε€±θ΄₯。'; + $lang['strftslexize'] = 'Lexize'; + $lang['strftsinit'] = 'εˆε§‹εŒ–'; + $lang['strftsoptionsvalues'] = 'ι€‰ι‘Ήε’Œε€Ό'; + $lang['strftsdictneedsname'] = 'εΏ…ι‘»ζŒ‡εšε…¨ζ–‡ζ£€η΄’字典名称。'; + $lang['strftsdictdropped'] = '全文检紒字典已移陀。'; + $lang['strftsdictdroppedbad'] = '全文检紒字典移陀倱θ΄₯。'; + $lang['strftsdictaltered'] = 'ε…¨ζ–‡ζ£€η΄’ε­—ε…Έε·²ε˜ζ›΄γ€‚'; + $lang['strftsdictalteredbad'] = 'ε…¨ζ–‡ζ£€η΄’ε­—ε…Έε˜ζ›΄ε€±θ΄₯。'; + $lang['strftsaddmapping'] = 'ζ·»εŠ ζ˜ ε°„'; + $lang['strftsspecifymappingtodrop'] = 'εΏ…ι‘»ζœ€ε°‘ζŒ‡εšδΈ€δΈͺζ˜ ε°„ζ₯移陀'; + $lang['strftsspecifyconfigtoalter'] = 'εΏ…ι‘»ζŒ‡εšδΈ€δΈͺ全文检紒配η½ζ₯ε˜ζ›΄'; + $lang['strftsmappingdropped'] = 'ε…¨ζ–‡ζ£€η΄’ζ˜ ε°„ε·²εˆ ι™€γ€‚'; + $lang['strftsmappingdroppedbad'] = 'ε…¨ζ–‡ζ£€η΄’ζ˜ ε°„η§»ι™€ε€±θ΄₯。'; + $lang['strftsnodictionaries'] = 'ζŸ₯无字典。'; + $lang['strftsmappingaltered'] = 'ε…¨ζ–‡ζ£€η΄’ζ˜ ε°„ε·²ε˜ζ›΄γ€‚'; + $lang['strftsmappingalteredbad'] = 'ε…¨ζ–‡ζ£€η΄’ζ˜ ε°„ε˜ζ›΄ε€±θ΄₯。'; + $lang['strftsmappingadded'] = 'ε…¨ζ–‡ζ£€η΄’ζ˜ ε°„ε·²ζ·»εŠ γ€‚'; + $lang['strftsmappingaddedbad'] = 'ε…¨ζ–‡ζ£€η΄’ζ˜ ε°„ζ·»εŠ ε€±θ΄₯。'; + $lang['strftstabconfigs'] = '配η½'; + $lang['strftstabdicts'] = 'ε­—ε…Έ'; + $lang['strftstabparsers'] = 'εˆ†ζžε™¨'; + $lang['strftscantparsercopy'] = 'δΈθƒ½εœ¨εˆ›ε»Ίε…¨ζ–‡ζ£€η΄’ι…η½ζ—ΆζŒ‡εšεˆ†ζžε™¨ε’Œζ¨‘板。'; + + //Plugins + $lang['strpluginnotfound'] = 'ι”™θ――οΌšζ²‘ζœ‰ζ‰Ύεˆ°\'%s\'插仢。请检ζŸ₯θ―₯ζ’δ»Άζ˜―ε¦εœ¨plugins/η›ε½•δΈ‹οΌŒζˆ–ζ’δ»Άζ˜―ε¦εŒ…ε«plugin.phpγ€‚ζ³¨ζ„ζ’δ»Άεε€§ε°ε†™ζ•ζ„Ÿγ€‚'; + $lang['stractionnotfound'] = 'ι”™θ――οΌšεŠ¨δ½œ\'%s\'δΈεœ¨ζ’δ»Ά\'%s\'δΈ­οΌŒζˆ–ζ²‘ζœ‰θ’«ζŒ‡εšδΈΊεˆζ³•ηš„εŠ¨δ½œγ€‚'; + $lang['strhooknotfound'] = 'ι”™θ――οΌšθΏžζŽ₯\'%s\'不可用.'; +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/chinese-utf8-zh_TW.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/chinese-utf8-zh_TW.php new file mode 100644 index 00000000..4514584c --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/chinese-utf8-zh_TW.php @@ -0,0 +1,863 @@ +'; + $lang['strfirst'] = '<< ζœ€ε‰δΈ€ζ­₯'; + $lang['strlast'] = 'ζœ€εΎŒδΈ€ζ­₯ >>'; + $lang['strfailed'] = 'ε€±ζ•—'; + $lang['strcreate'] = 'ε»Ίη«‹'; + $lang['strcreated'] = 'ε·²ε»Ίη«‹'; + $lang['strcomment'] = '註釋'; + $lang['strlength'] = 'ι•·εΊ¦'; + $lang['strdefault'] = '預設值'; + $lang['stralter'] = 'δΏζ”Ή'; + $lang['strok'] = 'η’Ίεš'; + $lang['strcancel'] = 'ε–ζΆˆ'; + $lang['strac'] = 'ε•Ÿη”¨θ‡ͺε‹•εŒζˆ'; + $lang['strsave'] = 'ε„²ε­˜'; + $lang['strreset'] = '重設'; + $lang['strinsert'] = '插ε…₯'; + $lang['strselect'] = '選取'; + $lang['strdelete'] = 'εˆͺ陀'; + $lang['strupdate'] = 'ζ›΄ζ–°'; + $lang['strreferences'] = '參照'; + $lang['stryes'] = '是'; + $lang['strno'] = '否'; + $lang['strtrue'] = '真(TRUE)'; + $lang['strfalse'] = '假(FALSE)'; + $lang['stredit'] = 'η·¨θΌ―'; + $lang['strcolumn'] = '欄位'; + $lang['strcolumns'] = '欄位'; + $lang['strrows'] = 'θ³‡ζ–™εˆ—'; + $lang['strrowsaff'] = 'θ³‡ζ–™εˆ—ε—ε½±ιŸΏγ€‚'; + $lang['strobjects'] = '物仢'; + $lang['strback'] = 'θΏ”ε›ž'; + $lang['strqueryresults'] = 'ζŸ₯詒硐果'; + $lang['strshow'] = 'ι‘―η€Ί'; + $lang['strempty'] = 'ζΈ…η©Ί'; + $lang['strlanguage'] = 'θͺžθ¨€'; + $lang['strencoding'] = 'ε­—ε…ƒη·¨η’Ό'; + $lang['strunique'] = 'ε”―δΈ€ε€Ό'; + $lang['strprimary'] = '主鍡(PK)'; + $lang['strexport'] = 'εŒ―ε‡Ί'; + $lang['strimport'] = '匯ε…₯'; + $lang['strallowednulls'] = '允許空字串'; + $lang['strbackslashn'] = '\N'; + $lang['stremptystring'] = 'η©Ί ε­—δΈ²/欄位'; + $lang['strsql'] = 'SQL'; + $lang['stradmin'] = 'η‘理'; + $lang['strvacuum'] = '清理(Vacuum)'; + $lang['stranalyze'] = 'εˆ†ζž'; + $lang['strclusterindex'] = '叒集'; + $lang['strclustered'] = '已叒集?'; + $lang['strreindex'] = '重建紒引'; + $lang['strrun'] = '執葌'; + $lang['stradd'] = 'ζ–°ε’ž'; + $lang['strevent'] = 'δΊ‹δ»Ά'; + $lang['strwhere'] = '撝仢'; + $lang['strinstead'] = '已蒫取代'; + $lang['strwhen'] = 'η•Ά'; + $lang['strformat'] = '格式'; + $lang['strdata'] = '資料'; + $lang['strconfirm'] = 'η’Ίθͺ'; + $lang['strexpression'] = '葨達式'; + $lang['strellipsis'] = '...'; + $lang['strseparator'] = ': '; + $lang['strexpand'] = '展開'; + $lang['strcollapse'] = 'ζ‘Ίη–Š'; + $lang['strfind'] = 'ε°‹ζ‰Ύ'; + $lang['stroptions'] = '選項'; + $lang['strrefresh'] = '重新整理'; + $lang['strdownload'] = 'δΈ‹θΌ‰'; + $lang['strdownloadgzipped'] = 'δ»₯ gzip 壓ηΈδΈ¦δΈ‹θΌ‰'; + $lang['strinfo'] = 'θ³‡θ¨Š'; + $lang['stroids'] = 'OIDs'; + $lang['stradvanced'] = 'ι€²ιšŽ'; + $lang['strvariables'] = 'θŠζ•Έ'; + $lang['strprocess'] = '進程'; + $lang['strprocesses'] = '進程'; + $lang['strsetting'] = 'θ¨­εš'; + $lang['streditsql'] = 'η·¨θΌ― SQL'; + $lang['strruntime'] = 'ηΈ½ε…±εŸ·θ‘Œζ™‚ι–“: %s ms'; + $lang['strpaginate'] = 'εˆ†ι ι‘―η€Ίη΅ζžœ'; + $lang['struploadscript'] = 'ζˆ–ζ˜―δΈŠε‚³δΈ€ε€‹ SQL 稿本ζͺ”: '; + $lang['strstarttime'] = 'ε•Ÿε‹•ζ™‚ι–“'; + $lang['strfile'] = 'ζͺ”ζ‘ˆ'; + $lang['strfileimported'] = 'ζͺ”ζ‘ˆε·²εŒ―ε…₯。'; + $lang['strtrycred'] = 'δ½Ώη”¨ι€™δΊ›ζ†‘θ­‰η΅¦ε…¨ιƒ¨δΌΊζœε™¨'; + $lang['stractionsonmultiplelines'] = 'ε‹•δ½œεœ¨ε€šε€‹θ‘Œεˆ—δΈŠ'; + $lang['strcheckall'] = 'ζͺ’ζŸ₯全部'; + $lang['struncheckall'] = '不ζͺ’ζŸ₯全部'; + $lang['strcluster'] = '叒集'; + + // User-supplied SQL history + $lang['strhistory'] = '歷程'; + $lang['strnohistory'] = '焑歷程。'; + $lang['strclearhistory'] = '清空歷程'; + $lang['strdelhistory'] = 'εΎžζ­·η¨‹εˆͺ陀'; + $lang['strconfdelhistory'] = 'η’Ίε―¦θ¦εΎžζ­·η¨‹εˆͺι™€ε—Ž ?'; + $lang['strconfclearhistory'] = 'η’Ίε―¦θ¦ζΈ…η©Ίζ­·η¨‹ε—Ž ?'; + $lang['strnodatabaseselected'] = '請選擇一個資料庫。'; + + // Database sizes + $lang['strsize'] = 'εΉι‡'; + $lang['strbytes'] = '位元硄'; + $lang['strkb'] = 'kB'; + $lang['strmb'] = 'MB'; + $lang['strgb'] = 'GB'; + $lang['strtb'] = 'TB'; + + // Error handling + $lang['strnoframes'] = 'ι€™ε€‹ζ‡‰η”¨ζœ€ε₯½δ»₯δΈ€ε€‹θƒ½ε•Ÿη”¨ζ‘†ζžΆι (frame)ηš„η€θ¦½ε™¨ι‹δ½œοΌŒδ½†δΉŸθƒ½ε€ θ’«δ½Ώη”¨εœ¨ζ²’ζœ‰ζ‘†ζžΆι δΈ‹ζŽ₯ηΉΌι‹δ½œοΌŒθ«‹ζŒ‰δΈ‹ι’ηš„ι€£η΅γ€‚'; + $lang['strnoframeslink'] = 'δ½Ώη”¨δΈεŒ…ζ‹¬ζ‘†ζžΆι (frame)'; + $lang['strbadconfig'] = 'ζ‚¨ηš„ config.inc.php ζ˜―ιŽζ™‚ηš„γ€‚ζ‚¨ε°‡ιœ€θ¦εΎžζ–°ηš„ config.inc.php-dist 重建εƒγ€‚'; + $lang['strnotloaded'] = 'ζ‚¨ηš„ PHP η’°ε’ƒζœͺε‰θ£ PostgreSQL εΏ…θ¦ηš„ζ”―ζŒγ€‚ζ‚¨εΏ…ιœ€ι‡ζ–°η·¨θ­― PHP 使用 --with-pgsql 硄態選項。'; + $lang['strpostgresqlversionnotsupported'] = 'η‰ˆζœ¬ηš„ PostgreSQL ζœͺθ’«ζ”―ζŒγ€‚θ«‹ε‡η΄šη‰ˆζœ¬εˆ° %s ζˆ–ζ˜―ζ›΄ι«˜θ€…γ€‚'; + $lang['strbadschema'] = 'η„‘ζ•ˆηš„ζžΆζ§‹ζ¨‘εΌθ’«ζŒ‡εšγ€‚'; + $lang['strbadencoding'] = 'εœ¨θ³‡ζ–™εΊ«δΈ­θ¨­εšε’ζˆΆη«―ε­—ε…ƒη·¨η’Όε€±ζ•—γ€‚'; + $lang['strsqlerror'] = 'SQL 錯θͺ€: '; + $lang['strinstatement'] = 'εœ¨ε€ε‘Šε…§: '; + $lang['strinvalidparam'] = 'η„‘ζ•ˆηš„η¨Ώζœ¬θŠζ•Έγ€‚'; + $lang['strnodata'] = 'ζ‰ΎδΈεˆ°θ³‡ζ–™εˆ—γ€‚'; + $lang['strnoobjects'] = 'ζ‰ΎδΈεˆ°η‰©δ»Άγ€‚'; + $lang['strrownotunique'] = 'θ©²θ³‡ζ–™εˆ—η„‘ε”―δΈ€η΄„ζŸγ€‚'; + $lang['strnouploads'] = 'δΈŠε‚³ζͺ”ζ‘ˆεŠŸθƒ½ζ˜―ε·²εœη”¨γ€‚'; + $lang['strimporterror'] = '匯ε…₯錯θͺ€γ€‚'; + $lang['strimporterror-fileformat'] = '匯ε…₯錯θͺ€: θ‡ͺε‹•θ­˜εˆ₯ζͺ”ζ‘ˆζ ΌεΌε·²ε€±ζ•—γ€‚'; + $lang['strimporterrorline'] = '匯ε…₯錯θͺ€η™Όη”Ÿεœ¨η¬¬ %s θ‘Œγ€‚'; + $lang['strimporterrorline-badcolumnnum'] = '匯ε…₯錯θͺ€η™Όη”Ÿεœ¨η¬¬ %s 葌: θ©²θ‘ŒδΈε…·ε‚™ζ­£η’Ίηš„ζ¬„δ½η·¨θ™Ÿγ€‚'; + $lang['strimporterror-uploadedfile'] = '匯ε…₯錯θͺ€: ζͺ”ζ‘ˆη„‘ζ³•θ’«δΈŠε‚³εˆ°ι€™δΌΊζœε™¨'; + $lang['strcannotdumponwindows'] = 'θ€‡ι›œηš„θ³‡ζ–™θ‘¨θˆ‡ζžΆζ§‹ζ¨‘εΌεη¨±θ½‰ε„²εœ¨ Windows 是ζœͺθ’«ζ”―ζŒηš„γ€‚'; + $lang['strinvalidserverparam'] = 'θ©¦εœ–η”¨η„‘ζ•ˆηš„δΌΊζœε™¨εƒζ•Έι€£η΅, ε―θƒ½ζœ‰δΊΊζ­£θ©¦εœ–ζ”»ζ“Šζ‚¨ηš„η³»η΅±γ€‚'; + $lang['strnoserversupplied'] = 'ζ²’ζœ‰ιΈζ“‡θ³‡ζ–™εΊ«!'; + + // Tables + $lang['strtable'] = '資料葨'; + $lang['strtables'] = '資料葨'; + $lang['strshowalltables'] = '鑯瀺全部資料葨'; + $lang['strnotables'] = 'ζ‰ΎδΈεˆ°θ³‡ζ–™θ‘¨γ€‚'; + $lang['strnotable'] = 'ζ‰ΎδΈεˆ°δ»»δ½•θ³‡ζ–™θ‘¨γ€‚'; + $lang['strcreatetable'] = '建立新資料葨'; + $lang['strtablename'] = '資料葨名'; + $lang['strtableneedsname'] = 'ζ‚¨εΏ…ιœ€η‚Ίζ‚¨ηš„θ³‡ζ–™θ‘¨ε‘½εγ€‚'; + $lang['strtableneedsfield'] = 'ζ‚¨θ‡³ε°‘ζ‡‰ζŒ‡εšδΈ€ε€‹ζ¬„位。'; + $lang['strtableneedscols'] = 'ζ‚¨εΏ…ιœ€ζŒ‡εšδΈ€ε€‹εˆζ³•ηš„欄位數量。'; + $lang['strtablecreated'] = '資料葨已建立。'; + $lang['strtablecreatedbad'] = 'ε»Ίη«‹θ³‡ζ–™θ‘¨δ½œζ₯­ε·²ε€±ζ•—。'; + $lang['strconfdroptable'] = '您璺εšθ¦η§»ι™€θ³‡ζ–™θ‘¨ "%s"?'; + $lang['strtabledropped'] = '資料葨已移陀。'; + $lang['strtabledroppedbad'] = '資料葨移陀已倱敗。'; + $lang['strconfemptytable'] = '您璺εšθ¦ζΈ…空資料葨 "%s"?'; + $lang['strtableemptied'] = '資料葨已清空。'; + $lang['strtableemptiedbad'] = '資料葨清空已倱敗。'; + $lang['strinsertrow'] = '插ε…₯θ³‡ζ–™εˆ—'; + $lang['strrowinserted'] = 'θ³‡ζ–™εˆ—ε·²ζ’ε…₯。'; + $lang['strrowinsertedbad'] = 'θ³‡ζ–™εˆ—ζ’ε…₯已倱敗。'; + $lang['strrowduplicate'] = 'θ³‡ζ–™εˆ—ζ’ε…₯ε€±ζ•—, θ©¦εœ–εšθ€‡θ£½ε“ζ’ε…₯。'; + $lang['streditrow'] = 'η·¨θΌ―θ³‡ζ–™εˆ—'; + $lang['strrowupdated'] = 'θ³‡ζ–™εˆ—ε·²ζ›΄ζ–°γ€‚'; + $lang['strrowupdatedbad'] = 'θ³‡ζ–™εˆ—ζ›΄ζ–°ε·²ε€±ζ•—γ€‚'; + $lang['strdeleterow'] = 'εˆͺι™€θ³‡ζ–™εˆ—'; + $lang['strconfdeleterow'] = '您璺εšθ¦εˆͺι™€ι€™δΊ›θ³‡ζ–™εˆ—??'; + $lang['strrowdeleted'] = 'θ³‡ζ–™εˆ—ε·²εˆͺ陀。'; + $lang['strrowdeletedbad'] = 'θ³‡ζ–™εˆ—εˆͺ陀已倱敗。'; + $lang['strinsertandrepeat'] = '插ε…₯θˆ‡ι‡δ½œ'; + $lang['strnumcols'] = '欄位數量'; + $lang['strcolneedsname'] = 'ζ‚¨εΏ…ιœ€η‚Ίι€™ε€‹ζ¬„δ½η‰ΉεšδΈ€ε€‹εη¨±'; + $lang['strselectallfields'] = '選擇全部欄位'; + $lang['strselectneedscol'] = 'ζ‚¨εΏ…ιœ€θ‡³ε°‘ι‘―η€ΊδΈ€θ³‡ζ–™εˆ—γ€‚'; + $lang['strselectunary'] = '一元運η—ε­δΈθƒ½ζœ‰ε€Όγ€‚'; + $lang['straltercolumn'] = 'δΏζ”Ήθ³‡ζ–™εˆ—'; + $lang['strcolumnaltered'] = 'θ³‡ζ–™εˆ—ε·²δΏζ”Ήγ€‚'; + $lang['strcolumnalteredbad'] = 'θ³‡ζ–™εˆ—δΏζ”Ήε·²ε€±ζ•—。'; + $lang['strconfdropcolumn'] = '您璺εšθ¦η§»ι™€ζ¬„位 "%s" εΎžθ³‡ζ–™θ‘¨ "%s"?'; + $lang['strcolumndropped'] = '欄位已移陀。'; + $lang['strcolumndroppedbad'] = '欄位移陀已倱敗。'; + $lang['straddcolumn'] = 'ζ–°ε’žζ¬„δ½'; + $lang['strcolumnadded'] = 'ζ¬„δ½ε·²ζ–°ε’žγ€‚'; + $lang['strcolumnaddedbad'] = 'ζ¬„δ½ζ–°ε’žε·²ε€±ζ•—γ€‚'; + $lang['strcascade'] = '附屬串聯(CASCADE)'; + $lang['strtablealtered'] = '資料葨已δΏζ”Ήγ€‚'; + $lang['strtablealteredbad'] = '資料葨δΏζ”Ήε·²ε€±ζ•—。'; + $lang['strdataonly'] = 'εͺζœ‰θ³‡ζ–™'; + $lang['strstructureonly'] = 'εͺζœ‰η΅ζ§‹'; + $lang['strstructureanddata'] = 'η΅ζ§‹ε’Œθ³‡ζ–™'; + $lang['strtabbed'] = 'ε›Ίεš(Tabbed)'; + $lang['strauto'] = 'θ‡ͺε‹•'; + $lang['strconfvacuumtable'] = '您璺εšε°‡θ¦ζΈ…理(vacuum) "%s" ε—Ž?'; + $lang['strconfanalyzetable'] = 'η’Ίεšθ¦εˆ†ζž "%s" ε—Ž?'; + $lang['strestimatedrowcount'] = 'ε·²δΌ°η—ηš„θ³‡ζ–™εˆ—θ¨ˆζ•Έ'; + $lang['strestimatedrowcount'] = 'δΌ°θ¨ˆηš„θ³‡ζ–™εˆ—ζ•Έ'; + $lang['strspecifytabletoanalyze'] = 'εΏ…ι ˆθ‡³ε°‘ιΈζ“‡δΈ€ε€‹θ³‡ζ–™θ‘¨δΎ†εˆ†ζž'; + $lang['strspecifytabletoempty'] = 'εΏ…ι ˆθ‡³ε°‘ιΈζ“‡δΈ€ε€‹θ³‡ζ–™θ‘¨δΎ†ζΈ…η©Ί'; + $lang['strspecifytabletodrop'] = 'εΏ…ι ˆθ‡³ε°‘ιΈζ“‡δΈ€ε€‹θ³‡ζ–™θ‘¨δΎ†η§»ι™€'; + $lang['strspecifytabletovacuum'] = 'εΏ…ι ˆθ‡³ε°‘ιΈζ“‡δΈ€ε€‹θ³‡ζ–™θ‘¨δΎ†ζΈ…η†(vacuum)'; + + // Columns + $lang['strcolprop'] = '欄位屬性'; + $lang['strnotableprovided'] = 'ζ²’ζœ‰ζŒ‡εšθ³‡ζ–™θ‘¨!'; + + // Users + $lang['struser'] = '使用者'; + $lang['strusers'] = '使用者'; + $lang['strusername'] = '使用者名稱'; + $lang['strpassword'] = 'ε―†η’Ό'; + $lang['strsuper'] = 'θΆ…η΄šδ½Ώη”¨θ€…?'; + $lang['strcreatedb'] = '能建立資料庫?'; + $lang['strexpires'] = 'ε€±ζ•ˆι€ΎζœŸ'; + $lang['strsessiondefaults'] = 'Session 預設'; + $lang['strnousers'] = 'ζ‰ΎδΈεˆ°ζ­€δ½Ώη”¨θ€…γ€‚'; + $lang['struserupdated'] = '使用者已更新。'; + $lang['struserupdatedbad'] = '使用者更新已倱敗。'; + $lang['strshowallusers'] = 'ι‘―η€Ίζ‰€ζœ‰δ½Ώη”¨θ€…'; + $lang['strcreateuser'] = '建立新使用者'; + $lang['struserneedsname'] = 'ζ‚¨εΏ…ιœ€η‚Ίζ‚¨ηš„δ½Ώη”¨θ€…ε‘½εγ€‚'; + $lang['strusercreated'] = '使用者已建立。'; + $lang['strusercreatedbad'] = '使用者建立已倱敗。'; + $lang['strconfdropuser'] = '您璺εšζ‚¨θ¦η§»ι™€ι€™ε€‹δ½Ώη”¨θ€… "%s"?'; + $lang['struserdropped'] = '使用者已移陀。'; + $lang['struserdroppedbad'] = '使用者移陀已倱敗。'; + $lang['straccount'] = '帳戢'; + $lang['strchangepassword'] = 'θŠζ›΄ε―†η’Ό'; + $lang['strpasswordchanged'] = 'ε―†η’Όε·²θŠζ›΄γ€‚'; + $lang['strpasswordchangedbad'] = 'ε―†η’ΌθŠζ›΄ε·²ε€±ζ•—。'; + $lang['strpasswordshort'] = 'ε―†η’Όε€ͺη°‘ηŸ­γ€‚'; + $lang['strpasswordconfirm'] = '所輸ε…₯ηš„η’Ίθͺε―†η’ΌδΈη¬¦γ€‚'; + + // Groups + $lang['strgroup'] = 'ηΎ€η΅„'; + $lang['strgroups'] = 'ηΎ€η΅„'; + $lang['strshowallgroups'] = '鑯瀺全部羀硄'; + $lang['strnogroup'] = 'ζ‰ΎδΈεˆ°ηΎ€η΅„γ€‚'; + $lang['strnogroups'] = 'ζ‰ΎδΈεˆ°δ»»δ½•ηΎ€η΅„γ€‚'; + $lang['strcreategroup'] = 'ε»Ίη«‹ηΎ€η΅„'; + $lang['strgroupneedsname'] = 'ζ‚¨εΏ…ιœ€η‚Ίζ‚¨ηš„ηΎ€η΅„ε‘½εγ€‚'; + $lang['strgroupcreated'] = '羀硄已建立。'; + $lang['strgroupcreatedbad'] = '羀硄建立已倱敗。'; + $lang['strconfdropgroup'] = '您璺εšζ‚¨θ¦η§»ι™€ι€™ε€‹ηΎ€η΅„ "%s"?'; + $lang['strgroupdropped'] = '羀硄已移陀。'; + $lang['strgroupdroppedbad'] = '羀硄移陀已倱敗。'; + $lang['strmembers'] = 'ζˆε“‘'; + $lang['strmemberof'] = 'ζˆε“‘ε±¬ζ–Ό'; + $lang['stradminmembers'] = 'η‘η†ε“‘ζˆε“‘'; + $lang['straddmember'] = 'ε’žεŠ ζˆε“‘'; + $lang['strmemberadded'] = 'ζˆε“‘ε·²εŠ ε…₯。'; + $lang['strmemberaddedbad'] = 'ζˆε“‘εŠ ε…₯已倱敗。'; + $lang['strdropmember'] = 'η§»ι™€ζˆε“‘'; + $lang['strconfdropmember'] = '您璺εšζ‚¨θ¦η§»ι™€ι€™ε€‹ζˆε“‘ "%s" εΎžι€™ε€‹ηΎ€η΅„ "%s"?'; + $lang['strmemberdropped'] = 'ζˆε“‘ε·²η§»ι™€γ€‚'; + $lang['strmemberdroppedbad'] = 'ζˆε“‘η§»ι™€ε·²ε€±ζ•—γ€‚'; + + // Roles + $lang['strrole'] = '角色'; + $lang['strroles'] = '角色'; + $lang['strshowallroles'] = '鑯瀺全部角色'; + $lang['strnoroles'] = 'ζ‰ΎδΈεˆ°δ»»δ½•θ§’θ‰²γ€‚'; + $lang['strinheritsprivs'] = 'ηΉΌζ‰Ώη‰Ήζ¬Š?'; + $lang['strcreaterole'] = '建立角色'; + $lang['strcancreaterole'] = '能建立角色?'; + $lang['strrolecreated'] = '角色已建立。'; + $lang['strrolecreatedbad'] = '角色建立已倱敗。'; + $lang['stralterrole'] = 'δΏζ”Ήθ§’色'; + $lang['strrolealtered'] = '角色蒫δΏζ”Ήγ€‚'; + $lang['strrolealteredbad'] = '角色δΏζ”Ήε·²ε€±ζ•—。'; + $lang['strcanlogin'] = '可δ»₯η™»ε…₯?'; + $lang['strconnlimit'] = 'ι€£η·šι™εˆΆ'; + $lang['strdroprole'] = '移陀角色'; + $lang['strconfdroprole'] = '您璺εšζ‚¨θ¦η§»ι™€ι€™ε€‹θ§’色 "%s"?'; + $lang['strroledropped'] = '角色已移陀。'; + $lang['strroledroppedbad'] = '角色移陀已倱敗。'; + $lang['strnolimit'] = 'δΈι™εˆΆ'; + $lang['strnever'] = '從末'; + $lang['strroleneedsname'] = 'ζ‚¨εΏ…ιœ€η‚Ίι€™ε€‹θ§’θ‰²ε‘½εγ€‚'; + + // Privileges + $lang['strprivilege'] = 'η‰Ήζ¬Š'; + $lang['strprivileges'] = 'η‰Ήζ¬Š'; + $lang['strnoprivileges'] = 'ι€™ε€‹η‰©δ»Άζœ‰ι θ¨­ηš„ζ“ζœ‰δΊΊη‰Ήζ¬Šγ€‚'; + $lang['strgrant'] = '賦予'; + $lang['strrevoke'] = 'ζ’€ε›ž'; + $lang['strgranted'] = 'η‰Ήζ¬Šε·²θŠζ›΄γ€‚'; + $lang['strgrantfailed'] = 'η‰Ήζ¬ŠθŠζ›΄ε€±ζ•—。'; + $lang['strgrantbad'] = 'ζ‚¨εΏ…ιœ€θ‡³ε°‘εœ¨δΈ€εδ½Ώη”¨θ€…ζˆ–ηΎ€η΅„δΈ­ζŒ‡εšθ‡³ε°‘δΈ€ι …η‰Ήζ¬Šγ€‚'; + $lang['strgrantor'] = 'ζŽˆζ¬Šθ€…'; + $lang['strasterisk'] = '*'; + + // Databases + $lang['strdatabase'] = '資料庫'; + $lang['strdatabases'] = '資料庫'; + $lang['strshowalldatabases'] = '鑯瀺全部資料庫'; + $lang['strnodatabases'] = 'ζ‰ΎδΈεˆ°δ»»δ½•θ³‡ζ–™εΊ«γ€‚'; + $lang['strcreatedatabase'] = '建立資料庫'; + $lang['strdatabasename'] = '資料庫名稱'; + $lang['strdatabaseneedsname'] = 'ζ‚¨εΏ…ιœ€η‚Ίζ‚¨ηš„θ³‡ζ–™εΊ«η΅¦δΈ€ε€‹εη¨±γ€‚'; + $lang['strdatabasecreated'] = '資料庫已建立。'; + $lang['strdatabasecreatedbad'] = '資料庫建立倱敗。'; + $lang['strconfdropdatabase'] = '您璺εšζ‚¨θ¦η§»ι™€ι€™ε€‹θ³‡ζ–™εΊ« "%s"?'; + $lang['strdatabasedropped'] = '資料庫已移陀。'; + $lang['strdatabasedroppedbad'] = '資料庫移陀倱敗。'; + $lang['strentersql'] = 'εœ¨δΈ‹ζ–ΉθΌΈε…₯ SQL δΎ†εŸ·θ‘Œ: '; + $lang['strsqlexecuted'] = 'SQL ε·²εŸ·θ‘Œγ€‚'; + $lang['strvacuumgood'] = '清理εŒζˆγ€‚'; + $lang['strvacuumbad'] = '清理倱敗。'; + $lang['stranalyzegood'] = 'εˆ†ζžεŒζˆγ€‚'; + $lang['stranalyzebad'] = 'εˆ†ζžε€±ζ•—γ€‚'; + $lang['strreindexgood'] = '重建紒引εŒζˆγ€‚'; + $lang['strreindexbad'] = '重建紒引倱敗。'; + $lang['strfull'] = '全部性'; + $lang['strfreeze'] = '凍硐'; + $lang['strforce'] = '強刢'; + $lang['strsignalsent'] = 'θ¨Šθ™Ÿε‚³ιžγ€‚'; + $lang['strsignalsentbad'] = 'ε‚³ιžθ¨Šθ™Ÿε€±ζ•—γ€‚'; + $lang['strallobjects'] = '全部物仢'; + $lang['strdatabasealtered'] = '資料庫已δΏζ”Ήγ€‚'; + $lang['strdatabasealteredbad'] = '資料庫δΏζ”Ήε·²ε€±ζ•—。'; + $lang['strspecifydatabasetodrop'] = 'εΏ…ι ˆθ‡³ε°‘ζŒ‡εšδΈ€ε€‹θ³‡ζ–™εΊ«δΎ†η§»ι™€'; + + // Views + $lang['strview'] = '視觀葨'; + $lang['strviews'] = '視觀葨'; + $lang['strshowallviews'] = '鑯瀺全部視觀葨'; + $lang['strnoview'] = 'ζ‰ΎδΈεˆ°θ¦–θ§€θ‘¨γ€‚'; + $lang['strnoviews'] = 'ζ‰ΎδΈεˆ°δ»»δ½•θ¦–θ§€θ‘¨γ€‚'; + $lang['strcreateview'] = '建立視觀葨'; + $lang['strviewname'] = '視觀葨名稱'; + $lang['strviewneedsname'] = 'ζ‚¨εΏ…ιœ€η‚Ίζ‚¨ηš„θ¦–θ§€θ‘¨η΅¦δΈ€ε€‹εη¨±γ€‚'; + $lang['strviewneedsdef'] = 'ζ‚¨εΏ…ιœ€η‚Ίδ½ ηš„θ¦–θ§€θ‘¨η΅¦δΈ€ε€‹εšηΎ©γ€‚'; + $lang['strviewneedsfields'] = 'ζ‚¨εΏ…ιœ€εœ¨ζ‚¨ηš„θ¦–θ§€θ‘¨δΈ­ιΈζ“‡η΅¦ι€™ε€‹ζ¬„δ½γ€‚'; + $lang['strviewcreated'] = '視觀葨已建立。'; + $lang['strviewcreatedbad'] = '視觀葨建立已倱敗。'; + $lang['strconfdropview'] = '您璺εšζ‚¨θ¦η§»ι™€ι€™ε€‹θ¦–觀葨 "%s" ε—Ž?'; + $lang['strviewdropped'] = '視觀葨已移陀。'; + $lang['strviewdroppedbad'] = '視觀葨移陀已倱敗。'; + $lang['strviewlink'] = '連硐鍡(Linking keys)'; + $lang['strviewconditions'] = 'ι™„εŠ ζ‘δ»Ά'; + $lang['strviewconditions'] = 'ι™„εŠ ηš„ζ’δ»Άι™εˆΆ'; + $lang['strcreateviewwiz'] = 'ε»Ίη«‹θ¦–θ§€θ‘¨η²Ύιˆ'; + $lang['strrenamedupfields'] = 'ι‡ζ–°ε‘½εθ€‡θ£½ηš„ε­—δΈ²'; + $lang['strdropdupfields'] = 'η§»ι™€θ€‡εˆΆηš„ε­—δΈ²'; + $lang['strerrordupfields'] = 'θ€‡θ£½ε­—δΈ²ζ™‚η™Όη”ŸιŒ―θͺ€'; + $lang['strviewupdated'] = '視觀葨已更新。'; + $lang['strviewupdatedbad'] = '視觀葨更新已倱敗。'; + $lang['strspecifyviewtodrop'] = 'εΏ…ι‘»θ‡³ε°‘ζŒ‡εšδΈ€δΈͺ视图ζ₯移陀'; + + // Sequences + $lang['strsequence'] = 'εΊεˆ—ζ•Έ'; + $lang['strsequences'] = 'εΊεˆ—ζ•Έ'; + $lang['strshowallsequences'] = 'ι‘―η€Ίε…¨ιƒ¨εΊεˆ—ζ•Έ'; + $lang['strnosequence'] = 'ζ‰ΎδΈεˆ°εΊεˆ—ζ•Έγ€‚'; + $lang['strnosequences'] = 'ζ‰ΎδΈεˆ°δ»»δ½•εΊεˆ—ζ•Έγ€‚'; + $lang['strcreatesequence'] = 'ε»Ίη«‹εΊεˆ—ζ•Έ'; + $lang['strlastvalue'] = 'ζœ€εΎŒε€Ό'; + $lang['strincrementby'] = 'ιžε’žι‡'; + $lang['strstartvalue'] = 'εˆε§‹ε€Ό'; + $lang['strmaxvalue'] = 'ζœ€ε€§ε€Ό'; + $lang['strminvalue'] = 'ζœ€ε°ε€Ό'; + $lang['strcachevalue'] = '快取值'; + $lang['strlogcount'] = 'ζ—₯θͺŒθ¨ˆζ•Έ'; + $lang['striscycled'] = '可εΎͺη’°?'; + $lang['striscalled'] = 'ε°‡εœ¨θΏ”ε›žδΈ‹δΈ€ε€‹ε€Όε‰ιžε’žζœ€εΎŒηš„ε€Ό(is_called)ε—ŽοΌŸ'; + $lang['strsequenceneedsname'] = 'ζ‚¨εΏ…ιœ€η‚Ίζ‚¨ηš„εΊεˆ—ζ•Έη΅¦δΈ€ε€‹εη¨±γ€‚'; + $lang['strsequencecreated'] = 'εΊεˆ—ζ•Έε·²ε»Ίη«‹γ€‚'; + $lang['strsequencecreatedbad'] = 'εΊεˆ—ζ•Έε»Ίη«‹ε€±ζ•—γ€‚'; + $lang['strconfdropsequence'] = '您璺εšζ‚¨θ¦η§»ι™€ι€™ε€‹εΊεˆ—ζ•Έ "%s"?'; + $lang['strsequencedropped'] = 'εΊεˆ—ζ•Έε·²η§»ι™€γ€‚'; + $lang['strsequencedroppedbad'] = 'εΊεˆ—ζ•Έη§»ι™€ε·²ε€±ζ•—γ€‚'; + $lang['strsequencereset'] = 'εΊεˆ—ζ•Έι‡η½γ€‚'; + $lang['strsequenceresetbad'] = 'εΊεˆ—ζ•Έι‡η½ε·²ε€±ζ•—。'; + $lang['straltersequence'] = 'δΏζ”ΉεΊεˆ—ζ•Έ'; + $lang['strsequencealtered'] = 'εΊεˆ—ζ•Έε·²δΏζ”Ήγ€‚'; + $lang['strsequencealteredbad'] = 'εΊεˆ—ζ•ΈδΏζ”Ήε·²ε€±ζ•—。'; + $lang['strsetval'] = 'θ¨­εšεΊεˆ—ζ•Έε€Ό'; + $lang['strsequencesetval'] = 'εΊεˆ—ζ•Έε€Όε·²θ¨­εšγ€‚'; + $lang['strsequencesetvalbad'] = 'εΊεˆ—ζ•Έε€Όθ¨­εšε·²ε€±ζ•—。'; + $lang['strnextval'] = 'ιžε’žι‡'; + $lang['strsequencenextval'] = 'εΊεˆ—ζ•Έε·²ιžε’žγ€‚'; + $lang['strsequencenextvalbad'] = 'εΊεˆ—ζ•Έε·²ιžε’žε€±ζ•—γ€‚'; + $lang['strspecifysequencetodrop'] = 'εΏ…ι ˆθ‡³ε°‘ζŒ‡εšδΈ€ε€‹εΊεˆ—ζ•ΈδΎ†εˆͺ陀'; + + // Indexes + $lang['strindex'] = 'η΄’εΌ•'; + $lang['strindexes'] = 'η΄’εΌ•'; + $lang['strindexname'] = '紒引名稱'; + $lang['strshowallindexes'] = '鑯瀺全部紒引'; + $lang['strnoindex'] = 'ζ‰ΎδΈεˆ°η΄’εΌ•γ€‚'; + $lang['strnoindexes'] = 'ζ‰ΎδΈεˆ°δ»»δ½•η΄’εΌ•γ€‚'; + $lang['strcreateindex'] = 'ε»Ίη«‹η΄’εΌ•'; + $lang['strtabname'] = '資料葨名稱'; + $lang['strcolumnname'] = '欄位名稱'; + $lang['strindexneedsname'] = 'ζ‚¨εΏ…ιœ€η‚Ίζ‚¨ηš„η΄’εΌ•η΅¦δΈ€ε€‹εη¨±γ€‚'; + $lang['strindexneedscols'] = 'η΄’εΌ•θ¦ζ±‚δΈ€ε€‹ζœ‰ζ•ˆζ¬„δ½ζ•Έι‡γ€‚'; + $lang['strindexcreated'] = 'η΄’εΌ•ε·²ε»Ίη«‹'; + $lang['strindexcreatedbad'] = '紒引建立倱敗。'; + $lang['strconfdropindex'] = '您璺εšζ‚¨θ¦η§»ι™€ι€™ε€‹η΄’εΌ• "%s" ε—Ž?'; + $lang['strindexdropped'] = '紒引已移陀。'; + $lang['strindexdroppedbad'] = '紒引移陀倱敗。'; + $lang['strkeyname'] = '鍡名'; + $lang['struniquekey'] = '唯一鍡'; + $lang['strprimarykey'] = '主鍡(pkey)'; + $lang['strindextype'] = 'η΄’εΌ•ι‘žεž‹'; + $lang['strtablecolumnlist'] = '資料葨欄位'; + $lang['strindexcolumnlist'] = '紒引欄位'; + $lang['strconfcluster'] = '您璺εšζ‚¨θ¦ε’ι›†εŒ– "%s" ε—Ž?'; + $lang['strclusteredgood'] = '叒集εŒζˆγ€‚'; + $lang['strclusteredbad'] = '叒集已倱敗。'; + + // Rules + $lang['strrules'] = '規則'; + $lang['strrule'] = '規則'; + $lang['strshowallrules'] = '鑯瀺全部規則'; + $lang['strnorule'] = 'ζ‰ΎδΈεˆ°θ¦ε‰‡γ€‚'; + $lang['strnorules'] = 'ζ‰ΎδΈεˆ°δ»»δ½•θ¦ε‰‡γ€‚'; + $lang['strcreaterule'] = '建立規則'; + $lang['strrulename'] = '規則名稱'; + $lang['strruleneedsname'] = 'ζ‚¨εΏ…ιœ€η‚Ίζ‚¨ηš„θ¦ε‰‡η΅¦δΈ€ε€‹εη¨±γ€‚'; + $lang['strrulecreated'] = '規則已建立。'; + $lang['strrulecreatedbad'] = '規則建立已倱敗。'; + $lang['strconfdroprule'] = '您璺εšζ‚¨θ¦η§»ι™€ι€™ε€‹θ¦ε‰‡ "%s" 在 "%s"δΈŠε—Ž?'; + $lang['strruledropped'] = '規則規則已移陀。'; + $lang['strruledroppedbad'] = '規則移陀已倱敗。'; + + // Constraints + $lang['strconstraint'] = 'η΄„ζŸι™εˆΆ'; + $lang['strconstraints'] = 'η΄„ζŸι™εˆΆ'; + $lang['strshowallconstraints'] = 'ι‘―η€Ίε…¨ιƒ¨η΄„ζŸι™εˆΆ'; + $lang['strnoconstraints'] = 'ζ‰ΎδΈεˆ°δ»»δ½•η΄„ζŸι™εˆΆγ€‚'; + $lang['strcreateconstraint'] = 'ε»Ίη«‹η΄„ζŸι™εˆΆ'; + $lang['strconstraintcreated'] = 'η΄„ζŸι™εˆΆε·²ε»Ίη«‹γ€‚'; + $lang['strconstraintcreatedbad'] = 'η΄„ζŸι™εˆΆε»Ίη«‹ε·²ε€±ζ•—γ€‚'; + $lang['strconfdropconstraint'] = '您璺εšζ‚¨θ¦η§»ι™€ι€™η΄„ζŸι™εˆΆ "%s" 在 "%s" δΈŠε—Ž?'; + $lang['strconstraintdropped'] = 'η΄„ζŸι™εˆΆε·²η§»ι™€γ€‚'; + $lang['strconstraintdroppedbad'] = 'η΄„ζŸι™εˆΆη§»ι™€ε·²ε€±ζ•—γ€‚'; + $lang['straddcheck'] = 'ε’žεŠ η΄„ζŸζͺ’ζŸ₯(Check)'; + $lang['strcheckneedsdefinition'] = 'η΄„ζŸζͺ’ζŸ₯(Check)ι™εˆΆιœ€θ¦εšηΎ©γ€‚'; + $lang['strcheckadded'] = 'η΄„ζŸζͺ’ζŸ₯ι™εˆΆε·²ε’žεŠ γ€‚'; + $lang['strcheckaddedbad'] = 'ε’žεŠ η΄„ζŸζͺ’ζŸ₯ι™εˆΆε·²ε€±ζ•—γ€‚'; + $lang['straddpk'] = '咞加主鍡(pkey)'; + $lang['strpkneedscols'] = '主鍡(pkey)θ¦ζ±‚ζœ€ε°‘δΈ€ε€‹ζ¬„δ½γ€‚'; + $lang['strpkadded'] = '主鍡(pkey)ε·²ε’žεŠ γ€‚'; + $lang['strpkaddedbad'] = '咞加主鍡(pkey)已倱敗。'; + $lang['stradduniq'] = 'ε’žεŠ ε”―δΈ€η΄„ζŸι™εˆΆ'; + $lang['struniqneedscols'] = 'ε”―δΈ€η΄„ζŸι™εˆΆθ¦ζ±‚ζœ€ε°‘δΈ€ε€‹ζ¬„δ½γ€‚'; + $lang['struniqadded'] = 'ε”―δΈ€η΄„ζŸι™εˆΆε·²ε’žεŠ γ€‚'; + $lang['struniqaddedbad'] = 'ε’žεŠ ε”―δΈ€η΄„ζŸι™εˆΆε·²ε€±ζ•—γ€‚'; + $lang['straddfk'] = 'ε’žεŠ ε€–ιƒ¨ι΅(fkey)'; + $lang['strfkneedscols'] = '倖部鍡(fkey)θ¦ζ±‚ζœ€ε°‘δΈ€ε€‹ζ¬„δ½γ€‚'; + $lang['strfkneedstarget'] = '倖部鍡(fkey)要求一個資料葨。'; + $lang['strfkadded'] = '倖部鍡(fkey)ε·²ε’žεŠ γ€‚'; + $lang['strfkaddedbad'] = 'ε’žεŠ ε€–ιƒ¨ι΅(fkey)已倱敗。'; + $lang['strfktarget'] = 'η›ζ¨™θ³‡ζ–™θ‘¨'; + $lang['strfkcolumnlist'] = '鍡欄位'; + $lang['strondelete'] = 'ON DELETE'; + $lang['stronupdate'] = 'ON UPDATE'; + + // Functions + $lang['strfunction'] = '函數'; + $lang['strfunctions'] = '函數'; + $lang['strshowallfunctions'] = '鑯瀺全部函數'; + $lang['strnofunction'] = 'ζ‰ΎδΈεˆ°ε‡½ζ•Έγ€‚'; + $lang['strnofunctions'] = 'ζ‰ΎδΈεˆ°δ»»δ½•ε‡½ζ•Έγ€‚'; + $lang['strcreateplfunction'] = 'ε»Ίη«‹ SQL/PL 函數'; + $lang['strcreateinternalfunction'] = '建立內部函數'; + $lang['strcreatecfunction'] = 'ε»Ίη«‹ C 函數'; + $lang['strfunctionname'] = '函數名稱'; + $lang['strreturns'] = 'ιžε›ž'; + $lang['strproglanguage'] = '程序θͺžθ¨€'; + $lang['strfunctionneedsname'] = 'ζ‚¨εΏ…ιœ€η‚Ίζ‚¨ηš„ε‡½ζ•Έη΅¦δΈ€ε€‹εη¨±γ€‚'; + $lang['strfunctionneedsdef'] = 'ζ‚¨εΏ…ιœ€η‚Ίζ‚¨ηš„ε‡½ζ•Έη΅¦δΈ€ε€‹εšηΎ©γ€‚'; + $lang['strfunctioncreated'] = '函數已建立。'; + $lang['strfunctioncreatedbad'] = '函數建立已倱敗。'; + $lang['strconfdropfunction'] = '您璺εšζ‚¨θ¦η§»ι™€ι€™ε€‹ε‡½ζ•Έ "%s"?'; + $lang['strfunctiondropped'] = '函數已移陀。'; + $lang['strfunctiondroppedbad'] = '函數移陀已倱敗。'; + $lang['strfunctionupdated'] = '函數已更新。'; + $lang['strfunctionupdatedbad'] = '函數更新已倱敗。'; + $lang['strobjectfile'] = '物仢ζͺ”ζ‘ˆ'; + $lang['strlinksymbol'] = 'ι€£η΅η‰©δ»Άζ¨™θ¨˜'; + $lang['strarguments'] = 'εΌ•ζ•Έ'; + $lang['strargmode'] = '方式'; + $lang['strargtype'] = 'ι‘žεž‹'; + $lang['strargadd'] = 'ε’žεŠ δ½œθ€…εΌ•ζ•Έ'; + $lang['strargremove'] = '移陀這個引數'; + $lang['strargnoargs'] = '這個函數將不能ε·₯δ½œδ»»δ½•εΌ•ζ•Έγ€‚'; + $lang['strargenableargs'] = 'ε•Ÿη”¨εΌ•ζ•Έε·²θ’«ε‚³ιžεˆ°ι€™ε€‹ε‡½ζ•Έγ€‚'; + $lang['strargnorowabove'] = 'ιœ€θ¦θ³‡ζ–™εˆ—εœ¨ι€™θ³‡ζ–™εˆ—δΉ‹δΈŠγ€‚'; + $lang['strargnorowbelow'] = 'ιœ€θ¦θ³‡ζ–™εˆ—εœ¨ι€™θ³‡ζ–™εˆ—δΉ‹ε‰γ€‚'; + $lang['strargraise'] = 'ε‘δΈŠη§»γ€‚'; + $lang['strarglower'] = '向下移。'; + $lang['strargremoveconfirm'] = '您璺εšδ½ θ¦η§»ι™€ι€™ε€‹εΌ•ζ•Έ? ι€™ε€‹δ½œζ₯­ζœͺ能εŒζˆγ€‚'; + $lang['strfunctioncosting'] = 'ε‡½ζ•Έζˆζœ¬'; + $lang['strresultrows'] = 'η»“ζžœι›†θ³‡ζ–™θ‘Œζ•Έ'; + $lang['strexecutioncost'] = '執葌成本'; + $lang['strspecifyfunctiontodrop'] = 'εΏ…ι ˆθ‡³ε°‘ζŒ‡εšδΈ€ε€‹ε‡½ζ•ΈδΎ†εˆͺ陀'; + + // Triggers + $lang['strtrigger'] = '觸發器'; + $lang['strtriggers'] = '觸發器'; + $lang['strshowalltriggers'] = '鑯瀺全部觸發器'; + $lang['strnotrigger'] = 'ζ‰ΎδΈεˆ°θ§Έη™Όε™¨γ€‚'; + $lang['strnotriggers'] = 'ζ‰ΎδΈεˆ°δ»»δ½•θ§Έη™Όε™¨γ€‚'; + $lang['strcreatetrigger'] = '建立觸發器'; + $lang['strtriggerneedsname'] = 'ζ‚¨εΏ…ιœ€η‚Ίζ‚¨ηš„θ§Έη™Όε™¨ζ˜Žη’ΊζŒ‡εšδΈ€ε€‹εη¨±γ€‚'; + $lang['strtriggerneedsfunc'] = 'ζ‚¨εΏ…ιœ€η‚Ίζ‚¨ηš„θ§Έη™Όε™¨ζ˜Žη’ΊζŒ‡εšδΈ€ε€‹ε‡½ζ•Έγ€‚'; + $lang['strtriggercreated'] = '觸發器已建立。'; + $lang['strtriggercreatedbad'] = '觸發器建立已倱敗。'; + $lang['strconfdroptrigger'] = '您璺εšζ‚¨θ¦η§»ι™€ι€™ε€‹θ§Έη™Όε™¨ "%s" on "%s"?'; + $lang['strconfenabletrigger'] = '您璺εšζ‚¨θ¦ε•Ÿη”¨ι€™ε€‹θ§Έη™Όε™¨θ§Έη™Όε™¨ "%s" 在 "%s" 上?'; + $lang['strconfdisabletrigger'] = '您璺εšζ‚¨θ¦εœη”¨ι€™ε€‹θ§Έη™Όε™¨θ§Έη™Όε™¨ "%s" on "%s" 上?'; + $lang['strtriggerdropped'] = '觸發器已移陀。'; + $lang['strtriggerdroppedbad'] = '觸發器移陀已倱敗。'; + $lang['strtriggerenabled'] = 'θ§Έη™Όε™¨ε•Ÿη”¨γ€‚'; + $lang['strtriggerenabledbad'] = 'θ§Έη™Όε™¨ε•Ÿη”¨ε·²ε€±ζ•—γ€‚'; + $lang['strtriggerdisabled'] = 'θ§Έη™Όε™¨εœη”¨γ€‚'; + $lang['strtriggerdisabledbad'] = 'θ§Έη™Όε™¨εœη”¨ε·²ε€±ζ•—γ€‚'; + $lang['strtriggeraltered'] = '觸發器已δΏζ”Ήγ€‚'; + $lang['strtriggeralteredbad'] = '觸發器δΏζ”Ήε·²ε€±ζ•—。'; + $lang['strforeach'] = '硦每個'; + + // Types + $lang['strtype'] = 'ι‘žεž‹'; + $lang['strtypes'] = 'ι‘žεž‹'; + $lang['strshowalltypes'] = 'ι‘―η€Ίε…¨ιƒ¨ι‘žεž‹'; + $lang['strnotype'] = 'ζ‰ΎδΈεˆ°ι‘žεž‹γ€‚'; + $lang['strnotypes'] = 'ζ‰ΎδΈεˆ°δ»»δ½•ι‘žεž‹γ€‚'; + $lang['strcreatetype'] = 'ε»Ίη«‹ι‘žεž‹'; + $lang['strcreatecomptype'] = 'ε»Ίη«‹εˆζˆι‘žεž‹'; + $lang['strcreateenumtype'] = 'ε»Ίη«‹εˆ—θˆ‰ι‘žεž‹'; + $lang['strtypeneedsfield'] = 'ζ‚¨εΏ…ι ˆζ˜Žη’ΊζŒ‡εšζœ€ε°‘一個欄位。'; + $lang['strtypeneedsvalue'] = 'ζ‚¨εΏ…ι ˆζ˜Žη’ΊζŒ‡εšζœ€ε°‘一個值。'; + $lang['strtypeneedscols'] = 'ζ‚¨εΏ…ι ˆζ˜Žη’ΊζŒ‡εšζœ‰ζ•ˆηš„欄位數。'; + $lang['strtypeneedsvals'] = 'ζ‚¨εΏ…ι ˆζ˜Žη’ΊζŒ‡εšδΈ€ε€‹ζœ‰ζ•ˆηš„欄位數。'; + $lang['strinputfn'] = 'θΌΈε…₯ι‘žεž‹'; + $lang['stroutputfn'] = 'θΌΈε‡Ίι‘žεž‹'; + $lang['strpassbyval'] = 'δ»₯值傳送?'; + $lang['stralignment'] = 'εˆ—ιšŠη΅„εˆ'; + $lang['strelement'] = 'ε…ƒη΄ '; + $lang['strdelimiter'] = 'εˆ†ιš”η¬¦θ™Ÿ'; + $lang['strstorage'] = '儲藏所'; + $lang['strfield'] = '欄位'; + $lang['strvalue'] = 'ε€Ό'; + $lang['strnumfields'] = '欄位數. '; + $lang['strnumvalues'] = 'ε€Όζ•Έ'; + $lang['strtypeneedsname'] = 'ζ‚¨εΏ…ιœ€η‚Ίζ‚¨ηš„ι‘žεž‹η΅¦δΈ€ε€‹εη¨±γ€‚'; + $lang['strtypeneedslen'] = 'ζ‚¨εΏ…ιœ€η‚Ίζ‚¨ηš„ι‘žεž‹η΅¦δΈ€ε€‹ι•·εΊ¦γ€‚'; + $lang['strtypecreated'] = 'ι‘žεž‹ε·²ε»Ίη«‹'; + $lang['strtypecreatedbad'] = 'ι‘žεž‹ε»Ίη«‹ε·²ε€±ζ•—γ€‚'; + $lang['strconfdroptype'] = '您璺εšζ‚¨θ¦η§»ι™€ι€™ε€‹ι‘žεž‹ "%s" ε—Ž?'; + $lang['strtypedropped'] = 'ι‘žεž‹ε·²η§»ι™€γ€‚'; + $lang['strtypedroppedbad'] = 'ι‘žεž‹η§»ι™€ε·²ε€±ζ•—γ€‚'; + $lang['strflavor'] = 'ι’¨ζ Ό(Flavor)'; + $lang['strbasetype'] = '基瀎'; + $lang['strcompositetype'] = '合成'; + $lang['strpseudotype'] = '偽(Pseudo)'; + $lang['strenum'] = 'Enum'; + $lang['strenumvalues'] = 'εˆ—θˆ‰ι‘žεž‹'; + + // Schemas + $lang['strschema'] = 'ζžΆζ§‹ζ¨‘εΌ'; + $lang['strschemas'] = 'ζžΆζ§‹ζ¨‘εΌ'; + $lang['strshowallschemas'] = 'ι‘―η€Ίε…¨ιƒ¨ζžΆζ§‹ζ¨‘εΌ'; + $lang['strnoschema'] = 'ζ‰ΎδΈεˆ°ζžΆζ§‹ζ¨‘εΌγ€‚'; + $lang['strnoschemas'] = 'ζ‰ΎδΈεˆ°δ»»δ½•ζžΆζ§‹ζ¨‘εΌγ€‚'; + $lang['strcreateschema'] = 'ε»Ίη«‹ζžΆζ§‹ζ¨‘εΌ'; + $lang['strschemaname'] = 'ζžΆζ§‹ζ¨‘εΌεη¨±'; + $lang['strschemaneedsname'] = 'ζ‚¨εΏ…ιœ€η‚Ίζ‚¨ηš„ζžΆζ§‹ζ¨‘εΌη΅¦δΈ€ε€‹εη¨±γ€‚'; + $lang['strschemacreated'] = 'ζžΆζ§‹ζ¨‘εΌε·²ε»Ίη«‹'; + $lang['strschemacreatedbad'] = 'ζžΆζ§‹ζ¨‘εΌε»Ίη«‹ε·²ε€±ζ•—γ€‚'; + $lang['strconfdropschema'] = '您璺εšζ‚¨θ¦η§»ι™€ι€™ε€‹ζžΆζ§‹ζ¨‘式 "%s" ε—Ž?'; + $lang['strschemadropped'] = 'ζžΆζ§‹ζ¨‘εΌε·²η§»ι™€γ€‚'; + $lang['strschemadroppedbad'] = 'ζžΆζ§‹ζ¨‘εΌη§»ι™€ε€±ζ•—γ€‚'; + $lang['strschemaaltered'] = 'ζžΆζ§‹ζ¨‘εΌε·²δΏζ”Ήγ€‚'; + $lang['strschemaalteredbad'] = 'ζžΆζ§‹ζ¨‘εΌδΏζ”Ήε·²ε€±ζ•—。'; + $lang['strsearchpath'] = 'ζžΆζ§‹ζ¨‘εΌζœε°‹θ·―εΎ‘'; + $lang['strspecifyschematodrop'] = 'ζ‚¨εΏ…ι ˆθ‡³ε°‘ζŒ‡εšδΈ€ε€‹ζžΆζ§‹ζ¨‘式來εˆͺ陀'; + + // Reports + + // Domains + $lang['strdomain'] = 'ε…±εŒε€ΌεŸŸ'; + $lang['strdomains'] = 'ε…±εŒε€ΌεŸŸ'; + $lang['strshowalldomains'] = 'ι‘―η€Ίε…¨ιƒ¨ε…±εŒε€ΌεŸŸ'; + $lang['strnodomains'] = 'ζ‰ΎδΈεˆ°δ»»δ½•ε…±εŒε€ΌεŸŸγ€‚'; + $lang['strcreatedomain'] = 'ε»Ίη«‹ε…±εŒε€ΌεŸŸ'; + $lang['strdomaindropped'] = 'ε…±εŒε€ΌεŸŸε·²η§»ι™€γ€‚'; + $lang['strdomaindroppedbad'] = 'ε…±εŒε€ΌεŸŸη§»ι™€ε·²ε€±ζ•—γ€‚'; + $lang['strconfdropdomain'] = '您璺εšζ‚¨θ¦η§»ι™€ι€™ε€‹ε…±εŒε€ΌεŸŸ "%s"?'; + $lang['strdomainneedsname'] = 'ζ‚¨εΏ…ιœ€η‚Ίζ‚¨ηš„ε…±εŒε€ΌεŸŸη΅¦δΈ€ε€‹εη¨±γ€‚γ€‚'; + $lang['strdomaincreated'] = 'ε…±εŒε€ΌεŸŸε·²ε»Ίη«‹γ€‚'; + $lang['strdomaincreatedbad'] = 'ε…±εŒε€ΌεŸŸε»Ίη«‹ε·²ε€±ζ•—γ€‚'; + $lang['strdomainaltered'] = 'ε…±εŒε€ΌεŸŸε·²δΏζ”Ήγ€‚'; + $lang['strdomainalteredbad'] = 'ε…±εŒε€ΌεŸŸδΏζ”Ήε·²ε€±ζ•—。'; + + // Operators + $lang['stroperator'] = '運η—子'; + $lang['stroperators'] = '運η—子'; + $lang['strshowalloperators'] = '鑯瀺全部運η—子'; + $lang['strnooperator'] = 'ζ‰ΎδΈεˆ°ι‹η—子。'; + $lang['strnooperators'] = 'ζ‰ΎδΈεˆ°δ»»δ½•ι‹η—子。'; + $lang['strcreateoperator'] = '建立運η—子'; + $lang['strleftarg'] = 'ε·¦εΌ•ζ•Έι‘žεž‹'; + $lang['strrightarg'] = 'ε³εΌ•ζ•Έι‘žεž‹'; + $lang['strcommutator'] = '轉換器'; + $lang['strnegator'] = '否εšε™¨'; + $lang['strrestrict'] = 'ι™εˆΆ'; + $lang['strjoin'] = '硐合'; + $lang['strhashes'] = 'ι›œζΉŠ(Hashes)'; + $lang['strmerges'] = '合佡'; + $lang['strleftsort'] = 'ε·¦ζŽ’εΊ'; + $lang['strrightsort'] = 'ε³ζŽ’εΊ'; + $lang['strlessthan'] = '小於'; + $lang['strgreaterthan'] = '倧於'; + $lang['stroperatorneedsname'] = 'ζ‚¨εΏ…ιœ€η‚Ίζ‚¨ηš„ι‹η—子硦一個名稱。'; + $lang['stroperatorcreated'] = '運η—子已建立'; + $lang['stroperatorcreatedbad'] = '運η—子建立已倱敗。'; + $lang['strconfdropoperator'] = '您璺εšζ‚¨θ¦η§»ι™€ι€™ε€‹ι‹η—子 "%s" ε—Ž?'; + $lang['stroperatordropped'] = '運η—子已移陀。'; + $lang['stroperatordroppedbad'] = '運η—子移陀已倱敗。'; + + // Casts + $lang['strcasts'] = 'ι‘žεž‹θ½‰ζ›'; + $lang['strnocasts'] = 'ζ‰ΎδΈεˆ°δ»»δ½•ι‘žεž‹θ½‰ζ›γ€‚'; + $lang['strsourcetype'] = 'δΎ†ζΊι‘žεž‹'; + $lang['strtargettype'] = 'η›ζ¨™ι‘žεž‹'; + $lang['strimplicit'] = '隱含'; + $lang['strinassignment'] = 'εœ¨ζŒ‡ζ΄ΎδΈ­'; + $lang['strbinarycompat'] = '(δΊŒι€²εˆΆη’Όη›ΈεΉ)'; + + // Conversions + $lang['strconversions'] = '編璼轉換'; + $lang['strnoconversions'] = 'ζ‰ΎδΈεˆ°δ»»δ½•η·¨η’Όθ½‰ζ›γ€‚'; + $lang['strsourceencoding'] = '來源編璼'; + $lang['strtargetencoding'] = 'η›ζ¨™η·¨η’Ό'; + + // Languages + $lang['strlanguages'] = '程序θͺžθ¨€'; + $lang['strnolanguages'] = 'ζ‰ΎδΈεˆ°δ»»δ½•η¨‹εΊθͺžθ¨€γ€‚'; + $lang['strtrusted'] = 'θ’«δΏ‘δ»»ηš„'; + + // Info + $lang['strnoinfo'] = 'η„‘θ³‡θ¨Šε―η”¨γ€‚'; + $lang['strreferringtables'] = '參照中資料葨'; + $lang['strparenttables'] = 'ηˆΆθ³‡ζ–™θ‘¨'; + $lang['strchildtables'] = '子資料葨'; + + // Aggregates + $lang['straggregate'] = 'θšι›†ε‡½ζ•Έ'; + $lang['straggregates'] = 'θšι›†ε‡½ζ•Έ'; + $lang['strnoaggregates'] = 'ζ‰ΎδΈεˆ°δ»»δ½•θšι›†ε‡½ζ•Έγ€‚'; + $lang['stralltypes'] = '(ε…¨ιƒ¨ι‘žεž‹)'; + $lang['strcreateaggregate'] = 'ε»Ίη«‹θšι›†ε‡½ζ•Έ'; + $lang['straggrbasetype'] = 'θΌΈε…₯θ³‡ζ–™ι‘žεž‹'; + $lang['straggrsfunc'] = 'η‹€ζ…‹ιŽζΈ‘ε‡½ζ•Έ'; + $lang['straggrstype'] = 'η‹€ζ…‹ι‘žεž‹'; + $lang['straggrffunc'] = 'ζœ€η΅‚ε‡½ζ•Έ'; + $lang['straggrinitcond'] = 'ζœ€εˆζ’δ»Ά'; + $lang['straggrsortop'] = 'ζŽ’εΊι‹η—子'; + $lang['strconfdropaggregate'] = '您璺εšζ‚¨θ¦η§»ι™€ι€™ε€‹θšι›†ε‡½ζ•Έ "%s" ε—Ž?'; + $lang['straggregatedropped'] = 'θšι›†ε‡½ζ•Έε·²η§»ι™€γ€‚'; + $lang['straggregatedroppedbad'] = 'θšι›†ε‡½ζ•Έη§»ι™€ε·²ε€±ζ•—γ€‚'; + $lang['straggraltered'] = 'θšι›†ε‡½ζ•Έε·²δΏζ”Ήγ€‚'; + $lang['straggralteredbad'] = 'θšι›†ε‡½ζ•ΈδΏζ”Ήε·²ε€±ζ•—。'; + $lang['straggrneedsname'] = 'ζ‚¨εΏ…ιœ€ε…·ι«”ζŒ‡εšδΈ€ε€‹εη¨±η΅¦ι€™ε€‹θšι›†ε‡½ζ•Έγ€‚'; + $lang['straggrneedsbasetype'] = 'ζ‚¨εΏ…ιœ€ε…·ι«”ζŒ‡εšι€™θšι›†ε‡½ζ•Έηš„ι€²ε…₯θ³‡ζ–™ι‘žεž‹γ€‚'; + $lang['straggrneedssfunc'] = 'ζ‚¨εΏ…ιœ€ε…·ι«”ζŒ‡εšι€™ι€™θšι›†ε‡½ζ•Έηš„η‹€ζ…‹ιŽζΈ‘函數名稱。'; + $lang['straggrneedsstype'] = 'ζ‚¨εΏ…ιœ€ε…·ι«”ζŒ‡εšι€™θšι›†ε‡½ζ•ΈηΎ€η‹€ζ…‹ε€Όηš„θ³‡ζ–™ι‘žεž‹'; + $lang['straggrcreated'] = 'θšι›†ε‡½ζ•Έε·²ε»Ίη«‹γ€‚'; + $lang['straggrcreatedbad'] = 'θšι›†ε‡½ζ•Έε»Ίη«‹ε·²ε€±ζ•—γ€‚'; + $lang['straggrshowall'] = 'ι‘―η€Ίε…¨ιƒ¨θšι›†ε‡½ζ•Έ'; + + // Operator Classes + $lang['stropclasses'] = '運η—ε­ι‘žεˆ₯'; + $lang['strnoopclasses'] = 'ζ‰ΎδΈεˆ°δ»»δ½•ι‹η—ε­ι‘žεˆ₯。'; + $lang['straccessmethod'] = 'ε­˜ε–ζ–Ήζ³•'; + + // Stats and performance + $lang['strrowperf'] = 'θ³‡ζ–™εˆ—ζ€§θƒ½'; + $lang['strioperf'] = 'I/O 性能'; + $lang['stridxrowperf'] = 'η΄’εΌ•θ³‡ζ–™εˆ—ζ€§θƒ½'; + $lang['stridxioperf'] = 'η΄’εΌ• I/O 性能'; + $lang['strpercent'] = '%'; + $lang['strsequential'] = '順序性'; + $lang['strscan'] = 'ζŽƒζ'; + $lang['strread'] = 'θ€ε–'; + $lang['strfetch'] = '取得'; + $lang['strheap'] = 'ε †η–Š'; + $lang['strtoast'] = 'TOAST'; + $lang['strtoastindex'] = 'TOAST η΄’εΌ•'; + $lang['strcache'] = '快取'; + $lang['strdisk'] = '磁璟'; + $lang['strrows2'] = 'θ³‡ζ–™εˆ—'; + + // Tablespaces + $lang['strtablespace'] = '葨空間'; + $lang['strtablespaces'] = '葨空間'; + $lang['strshowalltablespaces'] = '鑯瀺全部葨空間'; + $lang['strnotablespaces'] = 'ζ‰ΎδΈεˆ°δ»»δ½•θ‘¨η©Ίι–“γ€‚'; + $lang['strcreatetablespace'] = '建立葨空間'; + $lang['strlocation'] = 'ζ‰€εœ¨δ½η½'; + $lang['strtablespaceneedsname'] = 'ζ‚¨εΏ…ιœ€η‚Ίζ‚¨ηš„θ‘¨η©Ίι–“η΅¦δΈ€ε€‹εη¨±γ€‚'; + $lang['strtablespaceneedsloc'] = 'ζ‚¨εΏ…ιœ€η΅¦δΈ€ε€‹η›ιŒ„倾來建立葨空間。'; + $lang['strtablespacecreated'] = '葨空間已建立。'; + $lang['strtablespacecreatedbad'] = '葨空間建立已倱敗。'; + $lang['strconfdroptablespace'] = '您璺εšζ‚¨θ¦η§»ι™€ι€™ε€‹θ‘¨η©Ίι–“ "%s"?'; + $lang['strtablespacedropped'] = '葨空間已移陀。'; + $lang['strtablespacedroppedbad'] = '葨空間移陀已倱敗。'; + $lang['strtablespacealtered'] = '葨空間已δΏζ”Ήγ€‚'; + $lang['strtablespacealteredbad'] = '葨空間δΏζ”Ήε·²ε€±ζ•—。'; + + // Miscellaneous + $lang['strtopbar'] = '%s ι‹δ½œζ–Ό %s: %s -- ζ‚¨ζ˜―ε·²η™»ε…₯ηš„δ½Ώη”¨θ€… "%s"'; + $lang['strtimefmt'] = 'jS M, Y g: iA'; + $lang['strhelp'] = 'θͺͺ明'; + $lang['strhelpicon'] = '?'; + $lang['strhelppagebrowser'] = 'θͺͺζ˜Žι η€θ¦½ε™¨'; + $lang['strselecthelppage'] = '選擇一個θͺͺ明頁'; + $lang['strinvalidhelppage'] = 'η„‘ζ•ˆθͺͺζ˜Žι γ€‚'; + $lang['strlogintitle'] = 'η™»ε…₯到 %s'; + $lang['strlogoutmsg'] = 'η™»ε‡Ί %s'; + $lang['strloading'] = 'θΌ‰ε…₯δΈ­...'; + $lang['strerrorloading'] = 'θΌ‰ε…₯中錯θͺ€'; + $lang['strclicktoreload'] = 'ι»žζ“Šεˆ°ι‡ζ–°θΌ‰ε…₯'; + + // Autovacuum + $lang['strautovacuum'] = 'θ‡ͺ動清理(Autovacuum)'; + $lang['strturnedon'] = '已轉動 - ι–‹ε•Ÿ'; + $lang['strturnedoff'] = '已轉動 - ι—œι–‰'; + $lang['strenabled'] = 'ε•Ÿη”¨'; + $lang['strvacuumbasethreshold'] = 'Vacuum εŸΊζœ¬ι–€ζͺ»'; + $lang['strvacuumscalefactor'] = 'Vacuum 換η—δΏ‚ζ•Έ'; + $lang['stranalybasethreshold'] = 'Analyze εŸΊζœ¬ι–€ζͺ»'; + $lang['stranalyzescalefactor'] = 'Analyze 換η—δΏ‚ζ•Έ'; + $lang['strvacuumcostdelay'] = 'Vacuum 成本廢遲'; + $lang['strvacuumcostlimit'] = 'Vacuum ζˆζœ¬ι™εˆΆ'; + + // Table-level Locks + $lang['strlocks'] = 'ιŽ–εš'; + $lang['strtransaction'] = 'δΊ‹ε‹™δΊ€ζ˜“ ID'; + $lang['strvirtualtransaction'] = 'θ™›ζ“¬δΊ‹ε‹™δΊ€ζ˜“ ID'; + $lang['strprocessid'] = '進程 ID'; + $lang['strmode'] = 'ιŽ–εšζ¨‘式'; + $lang['strislockheld'] = 'ζ˜―ιŽ–εšεŸ·(held)?'; + + // Prepared transactions + $lang['strpreparedxacts'] = 'ε·²ζΊ–ε‚™δΊ‹ε‹™δΊ€ζ˜“'; + $lang['strxactid'] = 'δΊ‹ε‹™δΊ€ζ˜“ ID'; + $lang['strgid'] = 'Global ID'; + + // Fulltext search + $lang['strfulltext'] = 'ε…¨ζ–‡ζͺ’η΄’'; + $lang['strftsconfig'] = 'ε…¨ζ–‡ζͺ’η΄’η΅„ζ…‹'; + $lang['strftsconfigs'] = 'η΅„ζ…‹'; + $lang['strftscreateconfig'] = 'ζ–°ε»Ίε…¨ζ–‡ζͺ’η΄’η΅„ζ…‹'; + $lang['strftscreatedict'] = 'ζ–°ε»Ίε­—ε…Έ'; + $lang['strftscreatedicttemplate'] = '新建字典樑板'; + $lang['strftscreateparser'] = 'ζ–°ε»Ίεˆ†ζžε™¨'; + $lang['strftsnoconfigs'] = 'ζ²’ζœ‰ζ‰Ύεˆ°ε…¨ζ–‡ζͺ’紒硄態。'; + $lang['strftsconfigdropped'] = 'ε…¨ζ–‡ζͺ’紒硄態已移陀。'; + $lang['strftsconfigdroppedbad'] = 'ε…¨ζ–‡ζͺ’紒移陀倱敗。'; + $lang['strconfdropftsconfig'] = 'η’Ίεšθ¦η§»ι™€ε…¨ζ–‡ζͺ’η΄’ζͺ’η΄’η΅„ζ…‹ "%s" ε—Ž?'; + $lang['strconfdropftsdict'] = 'η’Ίεšθ¦η§»ι™€ε…¨ζ–‡ζͺ’η΄’ε­—ε…Έ "%s" ε—Ž?'; + $lang['strconfdropftsmapping'] = 'η’Ίεšθ¦ε°‡ζ˜ ε°„ "%s" εΎžε…¨ζ–‡ζͺ’η΄’η΅„ζ…‹ "%s" δΈ­η§»ι™€ε—Ž?'; + $lang['strftstemplate'] = '樑板'; + $lang['strftsparser'] = 'εˆ†ζžε™¨'; + $lang['strftsconfigneedsname'] = 'εΏ…ι ˆζŒ‡εšε…¨ζ–‡ζͺ’紒硄態名稱。'; + $lang['strftsconfigcreated'] = 'ε…¨ζ–‡ζͺ’紒硄態已剡建'; + $lang['strftsconfigcreatedbad'] = 'ε…¨ζ–‡ζͺ’紒硄態剡建倱敗。'; + $lang['strftsmapping'] = 'ζ˜ ε°„'; + $lang['strftsdicts'] = 'ε­—ε…Έ'; + $lang['strftsdict'] = 'ε­—ε…Έ'; + $lang['strftsemptymap'] = 'η©Ίηš„ε…¨ζ–‡ζͺ’η΄’η΅„ζ…‹ζ˜ ε°„γ€‚'; + $lang['strftswithmap'] = 'ι™„εΈΆζ˜ ε°„οΌˆWith mapοΌ‰'; + $lang['strftsmakedefault'] = 'η‚Ίζœ¬εœ°εŒ–δ½œζˆι»˜θͺε€Ό'; + $lang['strftsconfigaltered'] = 'ε…¨ζ–‡ζͺ’η΄’ε·²δΏζ”Ήγ€‚'; + $lang['strftsconfigalteredbad'] = 'ε…¨ζ–‡ζͺ’η΄’δΏζ”Ήε€±ζ•—。'; + $lang['strftsconfigmap'] = 'ε…¨ζ–‡ζͺ’η΄’η΅„ζ…‹ζ˜ ε°„'; + $lang['strftsparsers'] = 'ε…¨ζ–‡ζͺ’η΄’εˆ†ζžε™¨'; + $lang['strftsnoparsers'] = 'η„‘ζœ‰ζ•ˆηš„ε…¨ζ–‡ζͺ’η΄’εˆ†ζžε™¨γ€‚'; + $lang['strftsnodicts'] = 'η„‘ζœ‰ζ•ˆηš„ε…¨ζ–‡ζͺ’紒字典。'; + $lang['strftsdictcreated'] = 'ε…¨ζ–‡ζͺ’紒字典已剡建'; + $lang['strftsdictcreatedbad'] = 'ε…¨ζ–‡ζͺ’紒字典剡建倱敗。'; + $lang['strftslexize'] = 'θ©žε½™'; + $lang['strftsinit'] = 'εˆε§‹εŒ–'; + $lang['strftsoptionsvalues'] = 'ιΈι …ε’Œε€Ό'; + $lang['strftsdictneedsname'] = 'εΏ…ι ˆζŒ‡εšε…¨ζ–‡ζͺ’紒字典名稱。'; + $lang['strftsdictdropped'] = 'ε…¨ζ–‡ζͺ’紒字典已移陀。'; + $lang['strftsdictdroppedbad'] = 'ε…¨ζ–‡ζͺ’紒字典移陀倱敗。'; + $lang['strftsdictaltered'] = 'ε…¨ζ–‡ζͺ’η΄’ε­—ε…Έε·²δΏζ”Ήγ€‚'; + $lang['strftsdictalteredbad'] = 'ε…¨ζ–‡ζͺ’η΄’ε­—ε…ΈδΏζ”Ήε€±ζ•—。'; + $lang['strftsaddmapping'] = 'ε’žεŠ ζ˜ ε°„'; + $lang['strftsspecifymappingtodrop'] = 'εΏ…ι ˆζœ€ε°‘ζŒ‡εšδΈ€ε€‹ζ˜ ε°„來移陀'; + $lang['strftsspecifyconfigtoalter'] = 'εΏ…ι ˆζŒ‡εšδΈ€ε€‹ε…¨ζ–‡ζͺ’紒配η½δΎ†δΏζ”Ή'; + $lang['strftsmappingdropped'] = 'ε…¨ζ–‡ζͺ’η΄’ζ˜ ε°„ε·²εˆͺ陀。'; + $lang['strftsmappingdroppedbad'] = 'ε…¨ζ–‡ζͺ’η΄’ζ˜ ε°„η§»ι™€ε€±ζ•—γ€‚'; + $lang['strftsnodictionaries'] = 'ζŸ₯焑字典。'; + $lang['strftsmappingaltered'] = 'ε…¨ζ–‡ζͺ’η΄’ζ˜ ε°„ε·²δΏζ”Ήγ€‚'; + $lang['strftsmappingalteredbad'] = 'ε…¨ζ–‡ζͺ’η΄’ζ˜ ε°„δΏζ”Ήε€±ζ•—。'; + $lang['strftsmappingadded'] = 'ε…¨ζ–‡ζͺ’η΄’ζ˜ ε°„ε·²ε’žεŠ γ€‚'; + $lang['strftsmappingaddedbad'] = 'ε…¨ζ–‡ζͺ’η΄’ζ˜ ε°„ε’žεŠ ε€±ζ•—γ€‚'; + $lang['strftstabconfigs'] = 'η΅„ζ…‹'; + $lang['strftstabdicts'] = 'ε­—ε…Έ'; + $lang['strftstabparsers'] = 'εˆ†ζžε™¨'; + $lang['strftsaddmapping'] = 'ε’žεŠ ζ˜ ε°„'; + $lang['strftsspecifymappingtodrop'] = 'εΏ…ι‘»ζœ€ε°‘ζŒ‡εšδΈ€δΈͺζ˜ ε°„ζ₯移陀'; + $lang['strftsspecifyconfigtoalter'] = 'εΏ…ι‘»ζŒ‡εšδΈ€δΈͺε…¨ζ–‡ζ£€η΄’η΅„ζ…‹ζ₯δΏζ”Ή'; + $lang['strftsmappingdropped'] = 'ε…¨ζ–‡ζ£€η΄’ζ˜ ε°„ε·²εˆ ι™€γ€‚'; + $lang['strftsmappingdroppedbad'] = 'ε…¨ζ–‡ζ£€η΄’ζ˜ ε°„η§»ι™€ε€±θ΄₯。'; + $lang['strftsnodictionaries'] = 'ζŸ₯无字典。'; + $lang['strftsmappingaltered'] = 'ε…¨ζ–‡ζ£€η΄’ζ˜ ε°„ε·²δΏζ”Ήγ€‚'; + $lang['strftsmappingalteredbad'] = 'ε…¨ζ–‡ζ£€η΄’ζ˜ ε°„δΏζ”Ήε€±θ΄₯。'; + $lang['strftsmappingadded'] = 'ε…¨ζ–‡ζ£€η΄’ζ˜ ε°„ε·²ε’žεŠ γ€‚'; + $lang['strftsmappingaddedbad'] = 'ε…¨ζ–‡ζ£€η΄’ζ˜ ε°„ε’žεŠ ε€±θ΄₯。'; + $lang['strftsmappingdropped'] = 'ε…¨ζ–‡ζ£€η΄’ζ˜ ε°„ε·²εˆ ι™€γ€‚'; + $lang['strftsmappingdroppedbad'] = 'ε…¨ζ–‡ζ£€η΄’ζ˜ ε°„η§»ι™€ε€±θ΄₯。'; + $lang['strftstabconfigs'] = 'η΅„ζ…‹'; + $lang['strftstabdicts'] = 'ε­—ε…Έ'; + $lang['strftstabparsers'] = 'εˆ†ζžε™¨'; +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/czech.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/czech.php new file mode 100644 index 00000000..c8f79866 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/czech.php @@ -0,0 +1,897 @@ +'; + $lang['strfirst'] = '<< PrvnΓ­'; + $lang['strlast'] = 'PoslednΓ­ >>'; + $lang['strfailed'] = 'NezdaΕ™ilo se'; + $lang['strcreate'] = 'VytvoΕ™it'; + $lang['strcreated'] = 'VytvoΕ™eno'; + $lang['strcomment'] = 'KomentΓ‘Ε™'; + $lang['strlength'] = 'DΓ©lka'; + $lang['strdefault'] = 'VΓ½chozΓ­'; + $lang['stralter'] = 'ZmΔ›nit'; + $lang['strok'] = 'OK'; + $lang['strcancel'] = 'Storno'; + $lang['strkill'] = 'ZabΓ­t'; + $lang['strac'] = 'Povolit automatickΓ© dokončenΓ­'; + $lang['strsave'] = 'UloΕΎit'; + $lang['strreset'] = 'Resetovat'; + $lang['strrestart'] = 'Restartovat'; + $lang['strinsert'] = 'VloΕΎit'; + $lang['strselect'] = 'Vybrat'; + $lang['strdelete'] = 'Smazat'; + $lang['strupdate'] = 'Aktualizovat'; + $lang['strreferences'] = 'Odkazy'; + $lang['stryes'] = 'Ano'; + $lang['strno'] = 'Ne'; + $lang['strtrue'] = 'PRAVDA'; + $lang['strfalse'] = 'NEPRAVDA'; + $lang['stredit'] = 'Upravit'; + $lang['strcolumn'] = 'Sloupec'; + $lang['strcolumns'] = 'Sloupce'; + $lang['strrows'] = 'Ε™Γ‘dkΕ―'; + $lang['strrowsaff'] = 'Ε™Γ‘dkΕ― zmΔ›nΔ›no.'; + $lang['strobjects'] = 'objektΕ―'; + $lang['strback'] = 'ZpΔ›t'; + $lang['strqueryresults'] = 'VΓ½sledky dotazu'; + $lang['strshow'] = 'Zobrazit'; + $lang['strempty'] = 'VyprΓ‘zdnit'; + $lang['strlanguage'] = 'Jazyk'; + $lang['strencoding'] = 'KΓ³dovΓ‘nΓ­'; + $lang['strvalue'] = 'Hodnota'; + $lang['strunique'] = 'JedinečnΓ½'; + $lang['strprimary'] = 'PrimΓ‘rnΓ­'; + $lang['strexport'] = 'Export'; + $lang['strimport'] = 'Import'; + $lang['strallowednulls'] = 'PovolenΓ© nulovΓ© znaky'; + $lang['strbackslashn'] = '\n'; + $lang['stremptystring'] = 'PrΓ‘zdnΓ© Ε™etΔ›zce/pole'; + $lang['strsql'] = 'SQL'; + $lang['stradmin'] = 'SprΓ‘va'; + $lang['strvacuum'] = 'Uklidit'; + $lang['stranalyze'] = 'Analyzovat'; + $lang['strclusterindex'] = 'PΕ™eskupit'; + $lang['strclustered'] = 'PΕ™eskupeno?'; + $lang['strreindex'] = 'PΕ™eindexovat'; + $lang['strexecute'] = 'ProvΓ©st'; + $lang['stradd'] = 'PΕ™idat'; + $lang['strevent'] = 'UdΓ‘lost'; + $lang['strwhere'] = 'Kde'; + $lang['strinstead'] = 'MΓ­sto pΕ―vodnΓ­ho'; + $lang['strwhen'] = 'Kdy'; + $lang['strformat'] = 'FormΓ‘t'; + $lang['strdata'] = 'Data'; + $lang['strconfirm'] = 'PotvrzenΓ­'; + $lang['strexpression'] = 'VΓ½raz'; + $lang['strellipsis'] = '…'; + $lang['strseparator'] = ': '; + $lang['strexpand'] = 'Rozbalit'; + $lang['strcollapse'] = 'Sbalit'; + $lang['strfind'] = 'Hledat'; + $lang['stroptions'] = 'Volby'; + $lang['strrefresh'] = 'Občerstvit'; + $lang['strdownload'] = 'StΓ‘hnout'; + $lang['strdownloadgzipped'] = 'StΓ‘hnout komprimovanΓ© pomocΓ­ gzip'; + $lang['strinfo'] = 'Informace'; + $lang['stroids'] = 'OID'; + $lang['stradvanced'] = 'PokročilΓ©'; + $lang['strvariables'] = 'PromΔ›nnΓ©'; + $lang['strprocess'] = 'Proces'; + $lang['strprocesses'] = 'Procesy'; + $lang['strsetting'] = 'NastavenΓ­'; + $lang['streditsql'] = 'Upravit SQL'; + $lang['strruntime'] = 'CelkovΓ‘ doba bΔ›hu: %s ms'; + $lang['strpaginate'] = 'StrΓ‘nkovat vΓ½sledky'; + $lang['struploadscript'] = 'nebo nahrajte skript SQL:'; + $lang['strstarttime'] = 'Čas spuΕ‘tΔ›nΓ­'; + $lang['strfile'] = 'Soubor'; + $lang['strfileimported'] = 'Soubor byl importovΓ‘n.'; + $lang['strtrycred'] = 'PouΕΎΓ­t tato provΔ›Ε™enΓ­ pro vΕ‘echny servery'; + $lang['strconfdropcred'] = 'OdpojenΓ­m se z bezpečnostnΓ­ch dΕ―vodΕ― smaΕΎou vaΕ‘e sdΓ­lenΓ© pΕ™ipojovacΓ­ informace. Opravdu se chcete odpojit?'; + $lang['stractionsonmultiplelines'] = 'Akce pro vΓ­c Ε™Γ‘dkΕ―'; + $lang['strselectall'] = 'Vybrat vΕ‘e'; + $lang['strunselectall'] = 'ZruΕ‘it vΓ½bΔ›r'; + $lang['strlocale'] = 'MΓ­stnΓ­ nastavenΓ­'; + $lang['strcollation'] = 'ŘazenΓ­'; + $lang['strctype'] = 'Typ znaku'; + $lang['strdefaultvalues'] = 'VΓ½chozΓ­ hodnoty'; + $lang['strnewvalues'] = 'NovΓ© hodnoty'; + $lang['strstart'] = 'Spustit'; + $lang['strstop'] = 'Zastavit'; + $lang['strgotoppage'] = 'zpΔ›t nahoru'; + $lang['strtheme'] = 'Motiv'; + $lang['strcluster'] = 'Klastr'; + + // Admin + $lang['stradminondatabase'] = 'NΓ‘sledujΓ­cΓ­ ΓΊlohy sprΓ‘vy pouΕΎΓ­t na celou databΓ‘zi %s.'; + $lang['stradminontable'] = 'NΓ‘sledujΓ­cΓ­ ΓΊlohy sprΓ‘vy pouΕΎΓ­t na tabulku %s.'; + + // User-supplied SQL history + $lang['strhistory'] = 'Historie'; + $lang['strnohistory'] = 'Bez historie.'; + $lang['strclearhistory'] = 'Smazat historii'; + $lang['strdelhistory'] = 'Odebrat z historie'; + $lang['strconfdelhistory'] = 'Opravdu tento poΕΎadavek odebrat z historie?'; + $lang['strconfclearhistory'] = 'SkutečnΔ› smazat historii?'; + $lang['strnodatabaseselected'] = 'Zvolte prosΓ­m databΓ‘zi.'; + + // Database sizes + $lang['strnoaccess'] = 'Bez pΕ™Γ­stupu'; + $lang['strsize'] = 'Velikost'; + $lang['strbytes'] = 'B'; + $lang['strkb'] = 'kB'; + $lang['strmb'] = 'MB'; + $lang['strgb'] = 'GB'; + $lang['strtb'] = 'TB'; + + // Error handling + $lang['strnoframes'] = 'Tato aplikace pracuje nejlΓ©pe, pokud jsou v prohlΓ­ΕΎeči povolenΓ© rΓ‘my. MΕ―ΕΎe ale pracovat i bez rΓ‘mΕ―, stačí kliknout na nΓ‘sledujΓ­cΓ­ odkaz.'; + $lang['strnoframeslink'] = 'PouΕΎΓ­t bez rΓ‘mΕ―'; + $lang['strbadconfig'] = 'VΓ‘Ε‘ config.inc.php je zastaralΓ½. PotΕ™ebujete jej vygenerovat znovu z novΓ©ho config.inc.php-dist.'; + $lang['strnotloaded'] = 'VaΕ‘e instalace PHP nepodporuje PostgreSQL. PotΕ™ebujete znovu pΕ™eloΕΎit PHP s pouΕΎitΓ­m volby --with-pgsql.'; + $lang['strpostgresqlversionnotsupported'] = 'Verze PostgreSQL nenΓ­ podporovanΓ‘. PΕ™ejdΔ›te prosΓ­m na verzi %s nebo novΔ›jΕ‘Γ­.'; + $lang['strbadschema'] = 'ZadΓ‘no neplatnΓ© schΓ©ma.'; + $lang['strbadencoding'] = 'NezdaΕ™ilo se nastavit kΓ³dovΓ‘nΓ­ klienta v databΓ‘zi.'; + $lang['strsqlerror'] = 'Chyba SQL:'; + $lang['strinstatement'] = 'Ve vΓ½razu:'; + $lang['strinvalidparam'] = 'NeplatnΓ© parametry skriptu.'; + $lang['strnodata'] = 'Nenalezen ΕΎΓ‘dnΓ½ Ε™Γ‘dek.'; + $lang['strnoobjects'] = 'Nenalezen ΕΎΓ‘dnΓ½ objekt.'; + $lang['strrownotunique'] = 'Pro tento Ε™Γ‘dek neexistuje jedinečnΓ½ identifikΓ‘tor.'; + $lang['strnouploads'] = 'Je zakΓ‘zanΓ© nahrΓ‘vΓ‘nΓ­ souborΕ―.'; + $lang['strimporterror'] = 'Chyba pΕ™i importu.'; + $lang['strimporterror-fileformat'] = 'Chyba pΕ™i importu: NezdaΕ™ilo se automaticky zjistit formΓ‘t souboru.'; + $lang['strimporterrorline'] = 'Chyba pΕ™i importu na Ε™Γ‘dku %s.'; + $lang['strimporterrorline-badcolumnnum'] = 'Chyba pΕ™i importu na Ε™Γ‘dku %s: ŘÑdek nemΓ‘ sprΓ‘vnΓ½ počet sloupcΕ―.'; + $lang['strimporterror-uploadedfile'] = 'Chyba pΕ™i importu: Soubor nelze nahrΓ‘t na server'; + $lang['strcannotdumponwindows'] = 'Ve Windows nenΓ­ podporovanΓ½ vΓ½pis nΓ‘zvΕ― komplexnΓ­ch tabulek a schΓ©mat.'; + $lang['strinvalidserverparam'] = 'Pokus o pΕ™ipojenΓ­ s neplatnΓ½mi parametry serveru, moΕΎnΓ‘ se nΔ›kdo snaΕΎΓ­ neoprΓ‘vnΔ›nΔ› napojit do vaΕ‘eho systΓ©mu.'; + $lang['strnoserversupplied'] = 'NenΓ­ nabΓ­zen ΕΎΓ‘dnΓ½ server!'; + $lang['strbadpgdumppath'] = 'Chyba pΕ™i exportu: NezdaΕ™ilo se spustit pg_dump (s cestou danou ve vaΕ‘em conf/config.inc.php: %s). Opravte prosΓ­m cestu ve svΓ©m nastavenΓ­ a zkuste to znovu.'; + $lang['strbadpgdumpallpath'] = 'Chyba pΕ™i exportu: NezdaΕ™ilo se spustit pg_dumpall (s cestou danou ve vaΕ‘em conf/config.inc.php: %s). Opravte prosΓ­m cestu ve svΓ©m nastavenΓ­ a zkuste to znovu.'; + $lang['strconnectionfail'] = 'Nelze se pΕ™ipojit k serveru.'; + + // Tables + $lang['strtable'] = 'Tabulka'; + $lang['strtables'] = 'Tabulky'; + $lang['strshowalltables'] = 'Zobrazit vΕ‘echny tabulky'; + $lang['strnotables'] = 'Nenalezeny ΕΎΓ‘dnΓ© tabulky.'; + $lang['strnotable'] = 'Nenalezena ΕΎΓ‘dnΓ‘ tabulka.'; + $lang['strcreatetable'] = 'VytvoΕ™it tabulku'; + $lang['strcreatetablelike'] = 'VytvoΕ™it tabulku podle'; + $lang['strcreatetablelikeparent'] = 'ZdrojovΓ‘ tabulka'; + $lang['strcreatelikewithdefaults'] = 'VčetnΔ› vΓ½chozΓ­ch'; + $lang['strcreatelikewithconstraints'] = 'VčetnΔ› omezenΓ­'; + $lang['strcreatelikewithindexes'] = 'VčetnΔ› indexΕ―'; + $lang['strtablename'] = 'NΓ‘zev tabulky'; + $lang['strtableneedsname'] = 'MusΓ­te zadat nΓ‘zev pro tabulku.'; + $lang['strtablelikeneedslike'] = 'MusΓ­te zvolit, z kterΓ© tabulky se budou vlastnosti kopΓ­rovat.'; + $lang['strtableneedsfield'] = 'MusΓ­te zadat nejmΓ©nΔ› jedno pole.'; + $lang['strtableneedscols'] = 'MusΓ­te zadat platnΓ½ počet sloupcΕ―.'; + $lang['strtablecreated'] = 'Tabulka byla vytvoΕ™ena.'; + $lang['strtablecreatedbad'] = 'NezdaΕ™ilo se vytvoΕ™it tabulku.'; + $lang['strconfdroptable'] = 'Opravdu chcete odstranit tabulku β€ž%sβ€œ?'; + $lang['strtabledropped'] = 'Tabulka byla odstranΔ›na.'; + $lang['strtabledroppedbad'] = 'NezdaΕ™ilo se odstranit tabulku.'; + $lang['strconfemptytable'] = 'Opravdu chcete vyprΓ‘zdnit tabulku β€ž%sβ€œ?'; + $lang['strtableemptied'] = 'Tabulka byla vyprΓ‘zdnΔ›na.'; + $lang['strtableemptiedbad'] = 'NezdaΕ™ilo se vyprΓ‘zdnit tabulku.'; + $lang['strinsertrow'] = 'VloΕΎit Ε™Γ‘dek'; + $lang['strrowinserted'] = 'ŘÑdek byl vloΕΎen.'; + $lang['strrowinsertedbad'] = 'NezdaΕ™ilo se vloΕΎit Ε™Γ‘dek.'; + $lang['strnofkref'] = 'CizΓ­mu klíči %s neodpovΓ­dΓ‘ ΕΎΓ‘dnΓ‘ hodnota.'; + $lang['strrowduplicate'] = 'NezdaΕ™ilo se vloΕΎenΓ­ Ε™Γ‘dku, pokus o duplicitnΓ­ vloΕΎenΓ­.'; + $lang['streditrow'] = 'Upravit Ε™Γ‘dek'; + $lang['strrowupdated'] = 'ŘÑdek byl aktualizovΓ‘n.'; + $lang['strrowupdatedbad'] = 'NezdaΕ™ilo se aktualizovat Ε™Γ‘dek.'; + $lang['strdeleterow'] = 'Smazat Ε™Γ‘dek'; + $lang['strconfdeleterow'] = 'Opravdu chcete smazat tento Ε™Γ‘dek?'; + $lang['strrowdeleted'] = 'ŘÑdek byl smazΓ‘n.'; + $lang['strrowdeletedbad'] = 'NezdaΕ™ilo se smazat Ε™Γ‘dek.'; + $lang['strinsertandrepeat'] = 'VloΕΎi a opakovat'; + $lang['strnumcols'] = 'Počet sloupcΕ―'; + $lang['strcolneedsname'] = 'MusΓ­te zadat nΓ‘zev pro sloupec'; + $lang['strselectallfields'] = 'Vybrat vΕ‘echna pole'; + $lang['strselectneedscol'] = 'MusΓ­te zvolit alespoň jeden sloupec, kterΓ½ se mΓ‘ zobrazit.'; + $lang['strselectunary'] = 'UnΓ‘rnΓ­ operΓ‘tory nemohou mΓ­t hodnoty.'; + $lang['strcolumnaltered'] = 'ZmΔ›ny v sloupci byly provedeny.'; + $lang['strcolumnalteredbad'] = 'NezdaΕ™ilo se provΓ©st zmΔ›ny v sloupci.'; + $lang['strconfdropcolumn'] = 'Opravdu chcete odstranit sloupec β€ž%sβ€œ z tabulky β€ž%sβ€œ?'; + $lang['strcolumndropped'] = 'Sloupec byl odstranΔ›n.'; + $lang['strcolumndroppedbad'] = 'NezdaΕ™ilo se odstranit sloupec.'; + $lang['straddcolumn'] = 'PΕ™idat sloupec'; + $lang['strcolumnadded'] = 'Sloupec byl pΕ™idΓ‘n.'; + $lang['strcolumnaddedbad'] = 'NezdaΕ™ilo se pΕ™idat sloupec.'; + $lang['strcascade'] = 'KaskΓ‘dovitΔ›'; + $lang['strtablealtered'] = 'ZmΔ›ny v tabulce byly provedeny.'; + $lang['strtablealteredbad'] = 'NezdaΕ™ilo se provΓ©st zmΔ›ny v tabulce.'; + $lang['strdataonly'] = 'Pouze data'; + $lang['strstructureonly'] = 'Pouze strukturu'; + $lang['strstructureanddata'] = 'Strukturu a data'; + $lang['strtabbed'] = 'S tabulΓ‘tory'; + $lang['strauto'] = 'Automaticky'; + $lang['strconfvacuumtable'] = 'Opravdu chcete provΓ©st ΓΊklid β€ž%sβ€œ?'; + $lang['strconfanalyzetable'] = 'Opravdu chcete analyzovat β€ž%sβ€œ?'; + $lang['strconfreindextable'] = 'Opravdu chcete pΕ™eindexovat β€ž%sβ€œ?'; + $lang['strconfclustertable'] = 'Opravdu chcete pΕ™eskupit "%s"?'; + $lang['strestimatedrowcount'] = 'OdhadnutΓ½ počet Ε™Γ‘dkΕ―'; + $lang['strspecifytabletoanalyze'] = 'Pokud chcete analyzovat tabulky, tak musΓ­te nejmΓ©nΔ› jednu vybrat.'; + $lang['strspecifytabletoempty'] = 'Pokud chcete vyprΓ‘zdnit tabulky, tak musΓ­te nejmΓ©nΔ› jednu vybrat.'; + $lang['strspecifytabletodrop'] = 'Pokud chcete odstranit tabulky, tak musΓ­te nejmΓ©nΔ› jednu vybrat.'; + $lang['strspecifytabletovacuum'] = 'Pokud chcete provΓ©st ΓΊklid tabulek, tak musΓ­te nejmΓ©nΔ› jednu vybrat.'; + $lang['strspecifytabletoreindex'] = 'Pokud chcete pΕ™eindexovat tabulku, tak musΓ­te nejmΓ©nΔ› jednu vybrat.'; + $lang['strspecifytabletocluster'] = 'Pokud chcete pΕ™eskupit tabulku, tak musΓ­te nejmΓ©nΔ› jednu vybrat.'; + $lang['strnofieldsforinsert'] = 'NemΕ―ΕΎete vloΕΎit Ε™Γ‘dek do tabulky, kterΓ‘ nemΓ‘ ΕΎΓ‘dnΓ© sloupce.'; + + // Columns + $lang['strcolprop'] = 'Vlastnosti sloupce'; + $lang['strnotableprovided'] = 'NenΓ­ k dispozici ΕΎΓ‘dnΓ‘ tabulka!'; + + // Users + $lang['struser'] = 'UΕΎivatel'; + $lang['strusers'] = 'UΕΎivatelΓ©'; + $lang['strusername'] = 'JmΓ©no uΕΎivatele'; + $lang['strpassword'] = 'Heslo'; + $lang['strsuper'] = 'SuperuΕΎivatel?'; + $lang['strcreatedb'] = 'VytvΓ‘Ε™et DB?'; + $lang['strexpires'] = 'ZtratΓ­ platnost'; + $lang['strsessiondefaults'] = 'VΓ½chozΓ­ hodnoty sezenΓ­'; + $lang['strnousers'] = 'Nenalezeni ΕΎΓ‘dnΓ­ uΕΎivatelΓ©.'; + $lang['struserupdated'] = 'UΕΎivatel byl aktualizovΓ‘n'; + $lang['struserupdatedbad'] = 'NezdaΕ™ilo se aktualizovat uΕΎivatele.'; + $lang['strshowallusers'] = 'Zobrazit vΕ‘echny uΕΎivatele'; + $lang['strcreateuser'] = 'VytvoΕ™it uΕΎivatele'; + $lang['struserneedsname'] = 'MusΓ­te zadat jmΓ©no uΕΎivatele.'; + $lang['strusercreated'] = 'UΕΎivatel byl vytvoΕ™en.'; + $lang['strusercreatedbad'] = 'NezdaΕ™ilo se vytvoΕ™it uΕΎivatele.'; + $lang['strconfdropuser'] = 'Opravdu chcete odstranit uΕΎivatele β€ž%sβ€œ?'; + $lang['struserdropped'] = 'UΕΎivatel byl odstranΔ›n.'; + $lang['struserdroppedbad'] = 'NezdaΕ™ilo se odstranit uΕΎivatele.'; + $lang['straccount'] = 'Účet'; + $lang['strchangepassword'] = 'ZmΔ›nit heslo'; + $lang['strpasswordchanged'] = 'Heslo bylo zmΔ›nΔ›no.'; + $lang['strpasswordchangedbad'] = 'NezdaΕ™ilo se zmΔ›nit heslo.'; + $lang['strpasswordshort'] = 'Heslo je pΕ™Γ­liΕ‘ krΓ‘tkΓ©.'; + $lang['strpasswordconfirm'] = 'Heslo a jeho potvrzenΓ­ nejsou shodnΓ©.'; + + // Groups + $lang['strgroup'] = 'Skupina'; + $lang['strgroups'] = 'Skupiny'; + $lang['strshowallgroups'] = 'Zobrazit vΕ‘echny skupiny'; + $lang['strnogroup'] = 'Skupina nebyla nalezena.'; + $lang['strnogroups'] = 'Nebyly nalezeny ΕΎΓ‘dnΓ© skupiny.'; + $lang['strcreategroup'] = 'VytvoΕ™it skupinu'; + $lang['strgroupneedsname'] = 'MusΓ­te zadat nΓ‘zev pro skupinu.'; + $lang['strgroupcreated'] = 'Skupina byly vytvoΕ™ena.'; + $lang['strgroupcreatedbad'] = 'NezdaΕ™ilo se vytvoΕ™it skupinu.'; + $lang['strconfdropgroup'] = 'Opravdu chcete odstranit skupinu β€ž%sβ€œ?'; + $lang['strgroupdropped'] = 'Skupiny byla odstranΔ›na.'; + $lang['strgroupdroppedbad'] = 'NezdaΕ™ilo se odstranit skupinu.'; + $lang['strmembers'] = 'ČlenovΓ©'; + $lang['strmemberof'] = 'Členem v'; + $lang['stradminmembers'] = 'ČlenovΓ© sprΓ‘vci'; + $lang['straddmember'] = 'PΕ™idat člena'; + $lang['strmemberadded'] = 'Člen byl pΕ™idΓ‘n.'; + $lang['strmemberaddedbad'] = 'NezdaΕ™ilo se pΕ™idat člena.'; + $lang['strdropmember'] = 'Odebrat člena'; + $lang['strconfdropmember'] = 'Opravdu chcete odebrat člena β€ž%sβ€œ ze skupiny β€ž%sβ€œ?'; + $lang['strmemberdropped'] = 'Člen byl odebrΓ‘n.'; + $lang['strmemberdroppedbad'] = 'NezdaΕ™ilo se odebrat člena.'; + + // Roles + $lang['strrole'] = 'Role'; + $lang['strroles'] = 'Role'; + $lang['strshowallroles'] = 'Zobrazit vΕ‘echny role'; + $lang['strnoroles'] = 'Nenalezena ΕΎΓ‘dnΓ‘ role.'; + $lang['strinheritsprivs'] = 'DΔ›dit oprΓ‘vnΔ›nΓ­?'; + $lang['strcreaterole'] = 'VytvoΕ™it roli'; + $lang['strcancreaterole'] = 'VytvΓ‘Ε™et role?'; + $lang['strrolecreated'] = 'Role byl vytvoΕ™ena.'; + $lang['strrolecreatedbad'] = 'NezdaΕ™ilo se vytvoΕ™it roli.'; + $lang['strrolealtered'] = 'ZmΔ›ny v roli byly provedeny.'; + $lang['strrolealteredbad'] = 'NezdaΕ™ilo se provΓ©st zmΔ›ny v roli.'; + $lang['strcanlogin'] = 'PΕ™ihlaΕ‘ovat se?'; + $lang['strconnlimit'] = 'OmezenΓ­ pΕ™ipojenΓ­'; + $lang['strdroprole'] = 'Odstranit roli'; + $lang['strconfdroprole'] = 'Opravdu chcete odstranit roli β€ž%sβ€œ?'; + $lang['strroledropped'] = 'Role byla odstranΔ›na.'; + $lang['strroledroppedbad'] = 'NezdaΕ™ilo se odstranit roli.'; + $lang['strnolimit'] = 'Bez omezenΓ­'; + $lang['strnever'] = 'Nikdy'; + $lang['strroleneedsname'] = 'MusΓ­te zadat nΓ‘zev pro roli.'; + + // Privileges + $lang['strprivilege'] = 'OprΓ‘vnΔ›nΓ­'; + $lang['strprivileges'] = 'OprΓ‘vnΔ›nΓ­'; + $lang['strnoprivileges'] = 'Tento objekt mΓ‘ oprΓ‘vnΔ›nΓ­ vΓ½chozΓ­ho vlastnΓ­ka.'; + $lang['strgrant'] = 'PΕ™idΔ›lit'; + $lang['strrevoke'] = 'OdepΕ™Γ­t'; + $lang['strgranted'] = 'OprΓ‘vnΔ›nΓ­ byla zmΔ›nΔ›na.'; + $lang['strgrantfailed'] = 'NezdaΕ™ilo se zmΔ›nit oprΓ‘vnΔ›nΓ­.'; + $lang['strgrantbad'] = 'MusΓ­te zvolit nejmΓ©nΔ› jednoho uΕΎivatele nebo skupinu a nejmΓ©nΔ› jedno oprΓ‘vnΔ›nΓ­.'; + $lang['strgrantor'] = 'PΕ™idΔ›lil'; + $lang['strasterisk'] = '*'; + + // Databases + $lang['strdatabase'] = 'DatabΓ‘ze'; + $lang['strdatabases'] = 'DatabΓ‘ze'; + $lang['strshowalldatabases'] = 'Zobrazit vΕ‘echny databΓ‘ze'; + $lang['strnodatabases'] = 'Ε½Γ‘dnΓ© databΓ‘ze nenalezeny.'; + $lang['strcreatedatabase'] = 'VytvoΕ™it databΓ‘zi'; + $lang['strdatabasename'] = 'NΓ‘zev databΓ‘ze'; + $lang['strdatabaseneedsname'] = 'MusΓ­te zadat nΓ‘zev pro databΓ‘zi.'; + $lang['strdatabasecreated'] = 'DatabΓ‘ze byla vytvoΕ™ena.'; + $lang['strdatabasecreatedbad'] = 'NezdaΕ™ilo se vytvoΕ™it databΓ‘zi.'; + $lang['strconfdropdatabase'] = 'Opravdu chcete odstranit databΓ‘zi β€ž%sβ€œ?'; + $lang['strdatabasedropped'] = 'DatabΓ‘ze byla odstranΔ›na.'; + $lang['strdatabasedroppedbad'] = 'NezdaΕ™ilo se odstranit databΓ‘zi.'; + $lang['strentersql'] = 'Zadejte dotaz SQL, kterΓ½ chcete provΓ©st:'; + $lang['strsqlexecuted'] = 'Dotaz SQL byl proveden.'; + $lang['strvacuumgood'] = 'Úklid byl dokončen.'; + $lang['strvacuumbad'] = 'Úklid se nezdaΕ™il.'; + $lang['stranalyzegood'] = 'AnalΓ½za byla dokončena.'; + $lang['stranalyzebad'] = 'AnalΓ½za se nezdaΕ™ila.'; + $lang['strreindexgood'] = 'PΕ™eindexace byla dokončena.'; + $lang['strreindexbad'] = 'PΕ™eindexace se nezdaΕ™ila.'; + $lang['strfull'] = 'ÚplnΓ½'; + $lang['strfreeze'] = 'Zmrazit'; + $lang['strforce'] = 'Vynutit'; + $lang['strsignalsent'] = 'SignΓ‘l byl odeslΓ‘n.'; + $lang['strsignalsentbad'] = 'SignΓ‘l se nezdaΕ™ilo odeslat.'; + $lang['strallobjects'] = 'VΕ‘echny objekty'; + $lang['strdatabasealtered'] = 'ZmΔ›ny v databΓ‘zi byly provedeny.'; + $lang['strdatabasealteredbad'] = 'NezdaΕ™ilo se provΓ©st zmΔ›ny v databΓ‘zi.'; + $lang['strspecifydatabasetodrop'] = 'Pokud chcete odstranit databΓ‘ze, tak musΓ­te nejmΓ©nΔ› jednu vybrat.'; + $lang['strtemplatedb'] = 'Ε ablona'; + $lang['strconfanalyzedatabase'] = 'Opravdu chcete analyzovat vΕ‘echny tabulky v databΓ‘zi β€ž%sβ€œ?'; + $lang['strconfvacuumdatabase'] = 'Opravdu chcete uklidit vΕ‘echny tabulky v databΓ‘zi β€ž%sβ€œ?'; + $lang['strconfreindexdatabase'] = 'Opravdu chcete pΕ™eindexovat vΕ‘echny tabulky v databΓ‘zi β€ž%sβ€œ?'; + $lang['strconfclusterdatabase'] = 'Opravdu chcete pΕ™eskupit vΕ‘echny tabulky v databΓ‘zi β€ž%sβ€œ?'; + + // Views + $lang['strview'] = 'Pohled'; + $lang['strviews'] = 'Pohledy'; + $lang['strshowallviews'] = 'Zobrazit vΕ‘echny pohledy'; + $lang['strnoview'] = 'Nenalezen ΕΎΓ‘dnΓ½ pohled.'; + $lang['strnoviews'] = 'Nenalezeny ΕΎΓ‘dnΓ© pohledy.'; + $lang['strcreateview'] = 'VytvoΕ™it pohled'; + $lang['strviewname'] = 'NΓ‘zev pohledu'; + $lang['strviewneedsname'] = 'MusΓ­te zadat nΓ‘zev pro pohled.'; + $lang['strviewneedsdef'] = 'MusΓ­te zadat definici pro pohled.'; + $lang['strviewneedsfields'] = 'MusΓ­te zvolit, kterΓ© sloupce chcete v pohledu mΓ­t.'; + $lang['strviewcreated'] = 'Pohled vytvoΕ™en.'; + $lang['strviewcreatedbad'] = 'Pohled se nezdaΕ™ilo vytvoΕ™it.'; + $lang['strconfdropview'] = 'Opravdu chcete odstranit pohled β€ž%sβ€œ?'; + $lang['strviewdropped'] = 'Pohled byl odstranΔ›n.'; + $lang['strviewdroppedbad'] = 'Pohled se nezdaΕ™ilo odstranit.'; + $lang['strviewupdated'] = 'Pohled byl aktualizovΓ‘n.'; + $lang['strviewupdatedbad'] = 'Pohled se nezdaΕ™ilo aktualizovat.'; + $lang['strviewlink'] = 'PropojovacΓ­ klíče'; + $lang['strviewconditions'] = 'DoplňujΓ­cΓ­ podmΓ­nky'; + $lang['strcreateviewwiz'] = 'VytvoΕ™it pohled pomocΓ­ prΕ―vodce'; + $lang['strrenamedupfields'] = 'DuplicitnΓ­ pole pΕ™ejmenovat'; + $lang['strdropdupfields'] = 'DuplicitnΓ­ pole odstranit'; + $lang['strerrordupfields'] = 'V pΕ™Γ­padΔ› duplicitnΓ­ch polΓ­ ohlΓ‘sit chybu'; + $lang['strviewaltered'] = 'ZmΔ›ny v pohledu byly provedeny.'; + $lang['strviewalteredbad'] = 'NezdaΕ™ilo se provΓ©st zmΔ›ny v pohledu.'; + $lang['strspecifyviewtodrop'] = 'Pokud chcete odstranit pohledy, tak musΓ­te nejmΓ©nΔ› jeden vybrat.'; + + // Sequences + $lang['strsequence'] = 'Sekvence'; + $lang['strsequences'] = 'Sekvence'; + $lang['strshowallsequences'] = 'Zobrazit vΕ‘echny sekvence'; + $lang['strnosequence'] = 'Nenalezena ΕΎΓ‘dnΓ‘ sekvence.'; + $lang['strnosequences'] = 'Nenalezeny ΕΎΓ‘dnΓ© sekvence.'; + $lang['strcreatesequence'] = 'VytvoΕ™it sekvenci'; + $lang['strlastvalue'] = 'PoslednΓ­ hodnota'; + $lang['strincrementby'] = 'PΕ™Γ­rΕ―stek'; + $lang['strstartvalue'] = 'PočÑtečnΓ­ hodnota'; + $lang['strrestartvalue'] = 'NovΓ‘ počÑtečnΓ­ hodnota'; + $lang['strmaxvalue'] = 'Max. hodnota'; + $lang['strminvalue'] = 'Min. hodnota'; + $lang['strcachevalue'] = 'PΕ™ipraveno dopΕ™edu'; + $lang['strlogcount'] = 'DostupnΓ½ch hodnot bez zΓ‘pisu (log_cnt)'; + $lang['strcancycle'] = 'Cyklicky?'; + $lang['striscalled'] = 'ZvΓ½Ε‘it pΕ™ed vrΓ‘cenΓ­m nΓ‘sledujΓ­cΓ­ (is_called)?'; + $lang['strsequenceneedsname'] = 'MusΓ­te zadat nΓ‘zev pro sekvenci.'; + $lang['strsequencecreated'] = 'Sekvence byla vytvoΕ™ena.'; + $lang['strsequencecreatedbad'] = 'NezdaΕ™ilo se vytvoΕ™it sekvenci.'; + $lang['strconfdropsequence'] = 'Opravdu chcete odstranit sekvenci β€ž%sβ€œ?'; + $lang['strsequencedropped'] = 'Sekvence byla odstranΔ›na.'; + $lang['strsequencedroppedbad'] = 'NezdaΕ™ilo se odstranit sekvenci.'; + $lang['strsequencerestart'] = 'Sekvence nastavena na novou počÑtečnΓ­ hodnotu.'; + $lang['strsequencerestartbad'] = 'NezdaΕ™ilo se nastavit novou počÑtečnΓ­ hodnotu sekvence.'; + $lang['strsequencereset'] = 'Sekvence byla nastavena na počÑtečnΓ­ hodnotu.'; + $lang['strsequenceresetbad'] = 'NezdaΕ™ilo se nastavit počÑtečnΓ­ hodnotu sekvence.'; + $lang['strsequencealtered'] = 'ZmΔ›ny v sekvenci byly provedeny.'; + $lang['strsequencealteredbad'] = 'NezdaΕ™ilo se provΓ©st zmΔ›ny v sekvenci.'; + $lang['strsetval'] = 'Nastavit hodnotu'; + $lang['strsequencesetval'] = 'Hodnota sekvence byla nastavena.'; + $lang['strsequencesetvalbad'] = 'NezdaΕ™ilo se zmΔ›nit hodnotu sekvence.'; + $lang['strnextval'] = 'ZvΓ½Ε‘it hodnotu'; + $lang['strsequencenextval'] = 'Hodnota sekvence byla zvΓ½Ε‘ena.'; + $lang['strsequencenextvalbad'] = 'NezdaΕ™ilo se zvΓ½Ε‘it hodnotu sekvence.'; + $lang['strspecifysequencetodrop'] = 'Pokud chcete odstranit sekvence, tak musΓ­te nejmΓ©nΔ› jednu vybrat.'; + + // Indexes + $lang['strindex'] = 'Index'; + $lang['strindexes'] = 'Indexy'; + $lang['strindexname'] = 'NΓ‘zev indexu'; + $lang['strshowallindexes'] = 'Zobrazit vΕ‘echny indexy'; + $lang['strnoindex'] = 'Nenalezen ΕΎΓ‘dnΓ½ index.'; + $lang['strnoindexes'] = 'Nenalezeny ΕΎΓ‘dnΓ© indexy.'; + $lang['strcreateindex'] = 'VytvoΕ™it index'; + $lang['strtabname'] = 'NΓ‘zev tabulky'; + $lang['strcolumnname'] = 'NΓ‘zev sloupce'; + $lang['strindexneedsname'] = 'MusΓ­te zadat nΓ‘zev pro index.'; + $lang['strindexneedscols'] = 'Index musΓ­ obsahovat nejmΓ©nΔ› jeden sloupec.'; + $lang['strindexcreated'] = 'Index byl vytvoΕ™en.'; + $lang['strindexcreatedbad'] = 'NezdaΕ™ilo se vytvoΕ™it index.'; + $lang['strconfdropindex'] = 'Opravdu chcete odstranit index β€ž%sβ€œ?'; + $lang['strindexdropped'] = 'Index byl odstranΔ›n.'; + $lang['strindexdroppedbad'] = 'NezdaΕ™ilo se odstranit index.'; + $lang['strkeyname'] = 'NΓ‘zev klíče'; + $lang['struniquekey'] = 'JedinečnΓ½ klíč'; + $lang['strprimarykey'] = 'PrimΓ‘rnΓ­ klíč'; + $lang['strindextype'] = 'Typ indexu'; + $lang['strtablecolumnlist'] = 'Sloupce v tabulce'; + $lang['strindexcolumnlist'] = 'Sloupce v indexu'; + $lang['strclusteredgood'] = 'PΕ™eskupenΓ­ dokončeno.'; + $lang['strclusteredbad'] = 'PΕ™eskupenΓ­ se nezdaΕ™ilo.'; + $lang['strconcurrently'] = 'SoubΔ›ΕΎnΔ›'; + $lang['strnoclusteravailable'] = 'Tabulka nenΓ­ pΕ™eskupena podle indexu.'; + + // Rules + $lang['strrules'] = 'Pravidla'; + $lang['strrule'] = 'Pravidlo'; + $lang['strshowallrules'] = 'Zobrazit vΕ‘echna pravidla'; + $lang['strnorule'] = 'Nenalezeno ΕΎΓ‘dnΓ© pravidlo.'; + $lang['strnorules'] = 'Nenalezena ΕΎΓ‘dnΓ‘ pravidla.'; + $lang['strcreaterule'] = 'VytvoΕ™it pravidlo'; + $lang['strrulename'] = 'NΓ‘zev pravidla'; + $lang['strruleneedsname'] = 'MusΓ­te zadat nΓ‘zev pro pravidlo.'; + $lang['strrulecreated'] = 'Pravidlo bylo vytvoΕ™eno.'; + $lang['strrulecreatedbad'] = 'NezdaΕ™ilo se vytvoΕ™it pravidlo.'; + $lang['strconfdroprule'] = 'Opravdu chcete odstranit pravidlo β€ž%sβ€œ na β€ž%sβ€œ?'; + $lang['strruledropped'] = 'Pravidlo bylo odstranΔ›no.'; + $lang['strruledroppedbad'] = 'NezdaΕ™ilo se odstranit pravidlo.'; + + // Constraints + $lang['strconstraint'] = 'OmezenΓ­'; + $lang['strconstraints'] = 'OmezenΓ­'; + $lang['strshowallconstraints'] = 'Zobrazit vΕ‘echna omezenΓ­'; + $lang['strnoconstraints'] = 'Nenalezena ΕΎΓ‘dnΓ‘ omezenΓ­.'; + $lang['strcreateconstraint'] = 'VytvoΕ™it omezenΓ­'; + $lang['strconstraintcreated'] = 'OmezenΓ­ bylo vytvoΕ™eno.'; + $lang['strconstraintcreatedbad'] = 'NezdaΕ™ilo se vytvoΕ™it omezenΓ­.'; + $lang['strconfdropconstraint'] = 'Opravdu chcete odstranit omezenΓ­ β€ž%sβ€œ na β€ž%sβ€œ?'; + $lang['strconstraintdropped'] = 'OmezenΓ­ bylo odstranΔ›no.'; + $lang['strconstraintdroppedbad'] = 'NezdaΕ™ilo se odstranit omezenΓ­.'; + $lang['straddcheck'] = 'PΕ™idat kontrolu'; + $lang['strcheckneedsdefinition'] = 'MusΓ­te zadat definici kontroly.'; + $lang['strcheckadded'] = 'Kontrola byla pΕ™idΓ‘na.'; + $lang['strcheckaddedbad'] = 'NezdaΕ™ilo se pΕ™idat kontrolu.'; + $lang['straddpk'] = 'PΕ™idat primΓ‘rnΓ­ klíč'; + $lang['strpkneedscols'] = 'PrimΓ‘rnΓ­ klíč musΓ­ obsahovat nejmΓ©nΔ› jeden sloupec.'; + $lang['strpkadded'] = 'PrimΓ‘rnΓ­ klíč byl pΕ™idΓ‘n.'; + $lang['strpkaddedbad'] = 'NezdaΕ™ilo se pΕ™idat primΓ‘rnΓ­ klíč.'; + $lang['stradduniq'] = 'PΕ™idat jedinečnΓ½ klíč'; + $lang['struniqneedscols'] = 'JedinečnΓ½ klíč musΓ­ obsahovat nejmΓ©nΔ› jeden sloupec.'; + $lang['struniqadded'] = 'JedinečnΓ½ klíč byl pΕ™idΓ‘n.'; + $lang['struniqaddedbad'] = 'NezdaΕ™ilo se pΕ™idat jedinečnΓ½ klíč.'; + $lang['straddfk'] = 'PΕ™idat cizΓ­ klíč'; + $lang['strfkneedscols'] = 'CizΓ­ klíč musΓ­ obsahovat nejmΓ©nΔ› jeden sloupec.'; + $lang['strfkneedstarget'] = 'MusΓ­te zadat cΓ­lovou tabulku, na kterou se cizΓ­ klíč odkazuje.'; + $lang['strfkadded'] = 'CizΓ­ klíč byl pΕ™idΓ‘n.'; + $lang['strfkaddedbad'] = 'NezdaΕ™ilo se pΕ™idat cizΓ­ klíč.'; + $lang['strfktarget'] = 'CΓ­lovΓ‘ tabulka'; + $lang['strfkcolumnlist'] = 'Sloupce v klíči'; + $lang['strondelete'] = 'ON DELETE'; + $lang['stronupdate'] = 'ON UPDATE'; + + // Functions + $lang['strfunction'] = 'Funkce'; + $lang['strfunctions'] = 'Funkce'; + $lang['strshowallfunctions'] = 'Zobrazit vΕ‘echny funkce'; + $lang['strnofunction'] = 'Nenalezena ΕΎΓ‘dnΓ‘ funkce.'; + $lang['strnofunctions'] = 'Nenalezeny ΕΎΓ‘dnΓ© funkce.'; + $lang['strcreateplfunction'] = 'VytvoΕ™it funkci SQL/PL'; + $lang['strcreateinternalfunction'] = 'VytvoΕ™it internΓ­ funkci'; + $lang['strcreatecfunction'] = 'VytvoΕ™it funkci C'; + $lang['strfunctionname'] = 'NΓ‘zev funkce'; + $lang['strreturns'] = 'VracΓ­'; + $lang['strproglanguage'] = 'ProgramovacΓ­ jazyk'; + $lang['strfunctionneedsname'] = 'MusΓ­te zadat nΓ‘zev pro funkci.'; + $lang['strfunctionneedsdef'] = 'MusΓ­te zadat definici pro funkci.'; + $lang['strfunctioncreated'] = 'Funkce byl vytvoΕ™ena.'; + $lang['strfunctioncreatedbad'] = 'NezdaΕ™ilo se vytvoΕ™it funkci.'; + $lang['strconfdropfunction'] = 'Opravdu chcete odstranit funkci β€ž%sβ€œ?'; + $lang['strfunctiondropped'] = 'Funkce byla odstranΔ›na.'; + $lang['strfunctiondroppedbad'] = 'NezdaΕ™ilo se odstranit funkci.'; + $lang['strfunctionupdated'] = 'Funkce byla aktualizovΓ‘na.'; + $lang['strfunctionupdatedbad'] = 'NezdaΕ™ilo se aktualizovat funkci.'; + $lang['strobjectfile'] = 'Soubor s objektem'; + $lang['strlinksymbol'] = 'NapojenΓ½ symbol'; + $lang['strarguments'] = 'Argumenty'; + $lang['strargmode'] = 'ReΕΎim'; + $lang['strargtype'] = 'Typ'; + $lang['strargadd'] = 'PΕ™idat dalΕ‘Γ­ argument'; + $lang['strargremove'] = 'Odebrat tento argument'; + $lang['strargnoargs'] = 'Tato funkce nepΕ™ebΓ­rΓ‘ ΕΎΓ‘dnΓ© argumenty.'; + $lang['strargenableargs'] = 'Povolit argumentΕ―m prΕ―chod do tΓ©to funkce.'; + $lang['strargnorowabove'] = 'Nad tΓ­mto Ε™Γ‘dkem jiΕΎ ΕΎΓ‘dnΓ½ nenΓ­.'; + $lang['strargnorowbelow'] = 'Pod tΓ­mto Ε™Γ‘dkem jiΕΎ ΕΎΓ‘dnΓ½ nenΓ­.'; + $lang['strargraise'] = 'PΕ™esunout vΓ½Ε‘e.'; + $lang['strarglower'] = 'PΕ™esunout nΓ­ΕΎe.'; + $lang['strargremoveconfirm'] = 'Opravdu chcete odebrat tento argument? Operaci nelze vrΓ‘tit zpΔ›t.'; + $lang['strfunctioncosting'] = 'Cena funkcΓ­'; + $lang['strresultrows'] = 'Počet Ε™Γ‘dkΕ―'; + $lang['strexecutioncost'] = 'Cena provΓ‘dΔ›nΓ­'; + $lang['strspecifyfunctiontodrop'] = 'Pokud chcete odstranit funkce, tak musΓ­te nejmΓ©nΔ› jednu vybrat.'; + + // Triggers + $lang['strtrigger'] = 'Trigger'; + $lang['strtriggers'] = 'Triggery'; + $lang['strshowalltriggers'] = 'Zobrazit vΕ‘echny triggery'; + $lang['strnotrigger'] = 'Nenalezen ΕΎΓ‘dnΓ½ trigger.'; + $lang['strnotriggers'] = 'Nenalezeny ΕΎΓ‘dnΓ© triggery.'; + $lang['strcreatetrigger'] = 'VytvoΕ™it trigger'; + $lang['strtriggerneedsname'] = 'MusΓ­te zadat nΓ‘zev pro trigger.'; + $lang['strtriggerneedsfunc'] = 'MusΓ­te zvolit funkci pro trigger.'; + $lang['strtriggercreated'] = 'Trigger byl vytvoΕ™en.'; + $lang['strtriggercreatedbad'] = 'NezdaΕ™ilo se vytvoΕ™it trigger.'; + $lang['strconfdroptrigger'] = 'Opravdu chcete odstranit trigger β€ž%sβ€œ v β€ž%sβ€œ?'; + $lang['strconfenabletrigger'] = 'Opravdu chcete povolit trigger β€ž%sβ€œ v β€ž%sβ€œ?'; + $lang['strconfdisabletrigger'] = 'Opravdu chcete zakΓ‘zat trigger β€ž%sβ€œ v β€ž%sβ€œ?'; + $lang['strtriggerdropped'] = 'Trigger byl odstranΔ›n.'; + $lang['strtriggerdroppedbad'] = 'NezdaΕ™ilo se odstranit trigger.'; + $lang['strtriggerenabled'] = 'Trigger byl povolen.'; + $lang['strtriggerenabledbad'] = 'NezdaΕ™ilo se povolit trigger.'; + $lang['strtriggerdisabled'] = 'Trigger byl zakΓ‘zΓ‘n.'; + $lang['strtriggerdisabledbad'] = 'NezdaΕ™ilo se zakΓ‘zat trigger.'; + $lang['strtriggeraltered'] = 'ZmΔ›ny v triggeru byly provedeny.'; + $lang['strtriggeralteredbad'] = 'NezdaΕ™ilo se provΓ©st zmΔ›ny v triggeru.'; + $lang['strforeach'] = 'Pro kaΕΎdΓ½'; + + // Types + $lang['strtype'] = 'Typ'; + $lang['strtypes'] = 'Typy'; + $lang['strshowalltypes'] = 'Zobrazit vΕ‘echny typy'; + $lang['strnotype'] = 'Nenalezen ΕΎΓ‘dnΓ½ typ.'; + $lang['strnotypes'] = 'Nenalezeny ΕΎΓ‘dnΓ© typy.'; + $lang['strcreatetype'] = 'VytvoΕ™it externΓ­ typ'; + $lang['strcreatecomptype'] = 'VytvoΕ™it sloΕΎenΓ½ typ'; + $lang['strcreateenumtype'] = 'VytvoΕ™it výčtovΓ½ typ'; + $lang['strtypeneedsfield'] = 'MusΓ­te zadat nejmΓ©nΔ› jedno pole.'; + $lang['strtypeneedsvalue'] = 'MusΓ­te zadat nejmΓ©nΔ› jednu hodnotu.'; + $lang['strtypeneedscols'] = 'MusΓ­te zadat platnΓ½ počet polΓ­.'; + $lang['strtypeneedsvals'] = 'MusΓ­te zadat platnΓ½ počet hodnot.'; + $lang['strinputfn'] = 'VstupnΓ­ funkce'; + $lang['stroutputfn'] = 'VΓ½stupnΓ­ funkce'; + $lang['strpassbyval'] = 'PΕ™edΓ‘vanΓ½ hodnotou?'; + $lang['stralignment'] = 'ZarovnΓ‘nΓ­'; + $lang['strelement'] = 'Prvek'; + $lang['strdelimiter'] = 'OddΔ›lovač'; + $lang['strstorage'] = 'UloΕΎenΓ­'; + $lang['strfield'] = 'Pole'; + $lang['strnumfields'] = 'Počet polΓ­'; + $lang['strnumvalues'] = 'Počet hodnot'; + $lang['strtypeneedsname'] = 'MusΓ­te zadat nΓ‘zev pro typ.'; + $lang['strtypeneedslen'] = 'MusΓ­te zadat dΓ©lku pro typ.'; + $lang['strtypecreated'] = 'Typ byl vytvoΕ™en.'; + $lang['strtypecreatedbad'] = 'NezdaΕ™ilo se vytvoΕ™it typ.'; + $lang['strconfdroptype'] = 'Opravdu chcete odstranit typ β€ž%sβ€œ?'; + $lang['strtypedropped'] = 'Typ byl odstranΔ›n.'; + $lang['strtypedroppedbad'] = 'NezdaΕ™ilo se odstranit typ.'; + $lang['strflavor'] = 'Druh'; + $lang['strbasetype'] = 'ZΓ‘kladnΓ­'; + $lang['strcompositetype'] = 'SloΕΎenΓ½'; + $lang['strpseudotype'] = 'Pseudo'; + $lang['strenum'] = 'VýčtovΓ½'; + $lang['strenumvalues'] = 'VýčtovΓ© hodnoty'; + + // Schemas + $lang['strschema'] = 'SchΓ©ma'; + $lang['strschemas'] = 'SchΓ©mata'; + $lang['strshowallschemas'] = 'Zobrazit vΕ‘echna schΓ©mata'; + $lang['strnoschema'] = 'Nebylo nalezeno ΕΎΓ‘dnΓ© schΓ©ma.'; + $lang['strnoschemas'] = 'Nebyla nalezena ΕΎΓ‘dnΓ‘ schΓ©mata.'; + $lang['strcreateschema'] = 'VytvoΕ™it schΓ©ma'; + $lang['strschemaname'] = 'NΓ‘zev schΓ©matu'; + $lang['strschemaneedsname'] = 'MusΓ­te zadat nΓ‘zev pro schΓ©ma.'; + $lang['strschemacreated'] = 'SchΓ©ma bylo vytvoΕ™eno.'; + $lang['strschemacreatedbad'] = 'NezdaΕ™ilo se vytvoΕ™it schΓ©ma.'; + $lang['strconfdropschema'] = 'Opravdu chcete odstranit schΓ©ma β€ž%sβ€œ?'; + $lang['strschemadropped'] = 'SchΓ©ma bylo odstranΔ›no.'; + $lang['strschemadroppedbad'] = 'NezdaΕ™ilo se odstranit schΓ©ma.'; + $lang['strschemaaltered'] = 'ZmΔ›ny ve schΓ©matu byly provedeny.'; + $lang['strschemaalteredbad'] = 'NezdaΕ™ilo se provΓ©st zmΔ›ny ve schΓ©matu.'; + $lang['strsearchpath'] = 'ProhledΓ‘vanΓ‘ schΓ©mata'; + $lang['strspecifyschematodrop'] = 'Pokud chcete odstranit schΓ©mata, tak musΓ­te nejmΓ©nΔ› jedno vybrat.'; + + // Reports + + // Domains + $lang['strdomain'] = 'DomΓ©na'; + $lang['strdomains'] = 'DomΓ©ny'; + $lang['strshowalldomains'] = 'Zobrazit vΕ‘echny domΓ©ny'; + $lang['strnodomains'] = 'Nebyly nalezeny ΕΎΓ‘dnΓ© domΓ©ny.'; + $lang['strcreatedomain'] = 'VytvoΕ™it domΓ©nu'; + $lang['strdomaindropped'] = 'DomΓ©na byla odstranΔ›na.'; + $lang['strdomaindroppedbad'] = 'NezdaΕ™ilo se odstranit domΓ©nu.'; + $lang['strconfdropdomain'] = 'Opravdu chcete odstranit domΓ©nu β€ž%sβ€œ?'; + $lang['strdomainneedsname'] = 'MusΓ­te zadat nΓ‘zev pro domΓ©nu.'; + $lang['strdomaincreated'] = 'DomΓ©na byla vytvoΕ™ena.'; + $lang['strdomaincreatedbad'] = 'NezdaΕ™ilo se vytvoΕ™it domΓ©nu.'; + $lang['strdomainaltered'] = 'ZmΔ›ny v domΓ©nΔ› byly provedeny.'; + $lang['strdomainalteredbad'] = 'NezdaΕ™ilo se provΓ©st zmΔ›ny v domΓ©nΔ›.'; + + // Operators + $lang['stroperator'] = 'OperΓ‘tor'; + $lang['stroperators'] = 'OperΓ‘tory'; + $lang['strshowalloperators'] = 'Zobrazit vΕ‘echny operΓ‘tory'; + $lang['strnooperator'] = 'Nebyl nalezen ΕΎΓ‘dnΓ½ operΓ‘tor.'; + $lang['strnooperators'] = 'Nebyly nalezeny ΕΎΓ‘dnΓ© operΓ‘tory.'; + $lang['strcreateoperator'] = 'VytvoΕ™it operΓ‘tor'; + $lang['strleftarg'] = 'LevΓ½ operand'; + $lang['strrightarg'] = 'PravΓ½ operand'; + $lang['strcommutator'] = 'KomutΓ‘tor'; + $lang['strnegator'] = 'NegΓ‘tor'; + $lang['strrestrict'] = 'OmezenΓ­'; + $lang['strjoin'] = 'PropojenΓ­'; + $lang['strhashes'] = 'HeΕ‘e'; + $lang['strmerges'] = 'SlučovΓ‘nΓ­'; + $lang['strleftsort'] = 'LevΓ© Ε™azenΓ­'; + $lang['strrightsort'] = 'PravΓ© Ε™azenΓ­'; + $lang['strlessthan'] = 'OperΓ‘tor <'; + $lang['strgreaterthan'] = 'OperΓ‘tor >'; + $lang['stroperatorneedsname'] = 'MusΓ­te zadat nΓ‘zev pro operΓ‘tor.'; + $lang['stroperatorcreated'] = 'OperΓ‘tor byl vytvoΕ™en.'; + $lang['stroperatorcreatedbad'] = 'NezdaΕ™ilo se vytvoΕ™it operΓ‘tor.'; + $lang['strconfdropoperator'] = 'Opravdu chcete odstranit operΓ‘tor β€ž%sβ€œ?'; + $lang['stroperatordropped'] = 'OperΓ‘tor byl odstranΔ›n.'; + $lang['stroperatordroppedbad'] = 'NezdaΕ™ilo se odstranit operΓ‘tor.'; + + // Casts + $lang['strcasts'] = 'PΕ™etypovΓ‘nΓ­'; + $lang['strnocasts'] = 'Nenalezena ΕΎΓ‘dnΓ‘ pΕ™etypovΓ‘nΓ­.'; + $lang['strsourcetype'] = 'ZdrojovΓ½ typ'; + $lang['strtargettype'] = 'CΓ­lovΓ½ typ'; + $lang['strimplicit'] = 'ImplicitnΓ­'; + $lang['strinassignment'] = 'V pΕ™iΕ™azenΓ­'; + $lang['strbinarycompat'] = '(BinΓ‘rnΔ› zamΔ›nitelnΓ©)'; + + // Conversions + $lang['strconversions'] = 'Konverze'; + $lang['strnoconversions'] = 'Nenalezeny ΕΎΓ‘dnΓ© konverze.'; + $lang['strsourceencoding'] = 'ZdrojovΓ© kΓ³dovΓ‘nΓ­'; + $lang['strtargetencoding'] = 'CΓ­lovΓ© kΓ³dovΓ‘nΓ­'; + + // Languages + $lang['strlanguages'] = 'Jazyky'; + $lang['strnolanguages'] = 'Nenalezeny ΕΎΓ‘dnΓ© jazyky.'; + $lang['strtrusted'] = 'DΕ―vΔ›ryhodnΓ½'; + + // Info + $lang['strnoinfo'] = 'Nejsou dostupnΓ© ΕΎΓ‘dnΓ© informace.'; + $lang['strreferringtables'] = 'OdkazujΓ­cΓ­ tabulky'; + $lang['strparenttables'] = 'RodičovskΓ© tabulky'; + $lang['strchildtables'] = 'DceΕ™inΓ© tabulky'; + + // Aggregates + $lang['straggregate'] = 'AgregačnΓ­ funkce'; + $lang['straggregates'] = 'AgregačnΓ­ funkce'; + $lang['strnoaggregates'] = 'Nebyly nalezeny ΕΎΓ‘dnΓ© agregačnΓ­ funkce.'; + $lang['stralltypes'] = '(VΕ‘echny typy)'; + $lang['strcreateaggregate'] = 'VytvoΕ™it agregačnΓ­ funkci'; + $lang['straggrbasetype'] = 'Typ vstupnΓ­ch dat'; + $lang['straggrsfunc'] = 'Funkce stavovΓ©ho pΕ™echodu'; + $lang['straggrstype'] = 'DatovΓ½ typ stavovΓ© hodnoty'; + $lang['straggrffunc'] = 'FinΓ‘lnΓ­ funkce'; + $lang['straggrinitcond'] = 'PočÑtečnΓ­ podmΓ­nka'; + $lang['straggrsortop'] = 'OperΓ‘tor Ε™azenΓ­'; + $lang['strconfdropaggregate'] = 'Opravdu chcete odstranit agregačnΓ­ funkci β€ž%sβ€œ?'; + $lang['straggregatedropped'] = 'AgregačnΓ­ funkce byla odstranΔ›na.'; + $lang['straggregatedroppedbad'] = 'NezdaΕ™ilo se odstranit agregačnΓ­ funkci.'; + $lang['straggraltered'] = 'ZmΔ›ny v agregačnΓ­ funkci byly provedeny.'; + $lang['straggralteredbad'] = 'NezdaΕ™ilo se provΓ©st zmΔ›ny v agregačnΓ­ funkci.'; + $lang['straggrneedsname'] = 'MusΓ­te zadat nΓ‘zev pro agregačnΓ­ funkci.'; + $lang['straggrneedsbasetype'] = 'MusΓ­te zadat typ vstupnΓ­ch dat pro agregačnΓ­ funkci.'; + $lang['straggrneedssfunc'] = 'MusΓ­te zadat nΓ‘zev funkce stavovΓ©ho pΕ™echodu pro agregačnΓ­ funkci.'; + $lang['straggrneedsstype'] = 'MusΓ­te zadat datovΓ½ typ stavovΓ© hodnoty pro agregačnΓ­ funkci.'; + $lang['straggrcreated'] = 'AgregačnΓ­ funkce byla vytvoΕ™ena.'; + $lang['straggrcreatedbad'] = 'NezdaΕ™ilo se vytvoΕ™it agregačnΓ­ funkci.'; + $lang['straggrshowall'] = 'Zobrazit vΕ‘echny agregačnΓ­ funkce'; + + // Operator Classes + $lang['stropclasses'] = 'TΕ™Γ­dy operΓ‘torΕ―'; + $lang['strnoopclasses'] = 'Nebely nalezeny ΕΎΓ‘dnΓ© tΕ™Γ­dy operΓ‘torΕ―.'; + $lang['straccessmethod'] = 'Metoda pΕ™Γ­stupu'; + + // Stats and performance + $lang['strrowperf'] = 'Souhrn Ε™Γ‘dkovΓ½ch operacΓ­'; + $lang['strioperf'] = 'Souhrn V/V operacΓ­'; + $lang['stridxrowperf'] = 'Souhrn IndexovΓ½ch Ε™Γ‘dkovΓ½ch operacΓ­'; + $lang['stridxioperf'] = 'Souhrn IndexovΓ½ch V/V operacΓ­'; + $lang['strpercent'] = '%'; + $lang['strsequential'] = 'SekvenčnΔ›'; + $lang['strscan'] = 'ProhledΓ‘no'; + $lang['strread'] = 'Čteno'; + $lang['strfetch'] = 'Načteno'; + $lang['strheap'] = 'Hromada'; + $lang['strtoast'] = 'TOAST'; + $lang['strtoastindex'] = 'TOAST Index'; + $lang['strcache'] = 'MezipamΔ›Ε₯'; + $lang['strdisk'] = 'Disk'; + $lang['strrows2'] = 'ŘÑdkΕ―'; + + // Tablespaces + $lang['strtablespace'] = 'Prostor tabulek'; + $lang['strtablespaces'] = 'Prostory tabulek'; + $lang['strshowalltablespaces'] = 'Zobrazit vΕ‘echny prostory tabulek'; + $lang['strnotablespaces'] = 'Nebyly nalezeny ΕΎΓ‘dnΓ© prostory tabulek.'; + $lang['strcreatetablespace'] = 'VytvoΕ™it prostor tabulek'; + $lang['strlocation'] = 'UmΓ­stΔ›nΓ­'; + $lang['strtablespaceneedsname'] = 'MusΓ­te zadat nΓ‘zev pro prostor tabulek.'; + $lang['strtablespaceneedsloc'] = 'MusΓ­te zadat sloΕΎku, ve kterΓ© se mΓ‘ prostor tabulek vytvoΕ™it.'; + $lang['strtablespacecreated'] = 'Prostor tabulek byl vytvoΕ™en.'; + $lang['strtablespacecreatedbad'] = 'NezdaΕ™ilo se vytvoΕ™it prostor tabulek.'; + $lang['strconfdroptablespace'] = 'Opravdu chcete odstranit prostor tabulek β€ž%sβ€œ?'; + $lang['strtablespacedropped'] = 'Prostor tabulek byl odstranΔ›n.'; + $lang['strtablespacedroppedbad'] = 'NezdaΕ™ilo se odstranit prostor tabulek.'; + $lang['strtablespacealtered'] = 'ZmΔ›ny v prostoru tabulek byly provedeny.'; + $lang['strtablespacealteredbad'] = 'NezdaΕ™ilo se provΓ©st zmΔ›ny v prostoru tabulek.'; + + // Miscellaneous + $lang['strtopbar'] = '%s bΔ›ΕΎΓ­cΓ­ na %s:%s -- Jste pΕ™ihlΓ‘Ε‘enΓ½ jako uΕΎivatel β€ž%sβ€œ'; + $lang['strtimefmt'] = 'j. M Y G:i'; + $lang['strhelp'] = 'NΓ‘povΔ›da'; + $lang['strhelpicon'] = '?'; + $lang['strhelppagebrowser'] = 'VΓ½bΔ›r strΓ‘nky s nΓ‘povΔ›dou'; + $lang['strselecthelppage'] = 'Zvolte strΓ‘nku s nΓ‘povΔ›dou'; + $lang['strinvalidhelppage'] = 'NeplatnΓ‘ strΓ‘nka s nΓ‘povΔ›dou.'; + $lang['strlogintitle'] = 'PΕ™ihlΓ‘Ε‘enΓ­ k %s'; + $lang['strlogoutmsg'] = 'OdhlΓ‘Ε‘enΓ­ od %s'; + $lang['strloading'] = 'NačítΓ‘ se…'; + $lang['strerrorloading'] = 'Chyba pΕ™i načítΓ‘nΓ­'; + $lang['strclicktoreload'] = 'KliknΔ›te pro opΔ›tovnΓ© načtenΓ­'; + + // Autovacuum + $lang['strautovacuum'] = 'AutomatickΓ½ ΓΊklid'; + $lang['strturnedon'] = 'Zapnuto'; + $lang['strturnedoff'] = 'Vypnuto'; + $lang['strenabled'] = 'Povoleno'; + $lang['strnovacuumconf'] = 'Nebylo nalezeno ΕΎΓ‘dnΓ© nastavenΓ­ automatickΓ©ho ΓΊklidu.'; + $lang['strvacuumbasethreshold'] = 'VACUUM - zΓ‘kladnΓ­ prΓ‘h'; + $lang['strvacuumscalefactor'] = 'VACUUM - Ε‘kΓ‘lovacΓ­ faktor'; + $lang['stranalybasethreshold'] = 'ANALYZE - zΓ‘kladnΓ­ prΓ‘h'; + $lang['stranalyzescalefactor'] = 'ANALYZE - Ε‘kΓ‘lovacΓ­ faktor'; + $lang['strvacuumcostdelay'] = 'VACUUM - dΓ©lka pΕ™estΓ‘vky'; + $lang['strvacuumcostlimit'] = 'VACUUM - cenovΓ½ limit'; + $lang['strvacuumpertable'] = 'NastavenΓ­ automatickΓ©ho uklidu jednotlivΓ½ch tabulek'; + $lang['straddvacuumtable'] = 'PΕ™idat nastavenΓ­ automatickΓ©ho ΓΊklidu pro tabulku'; + $lang['streditvacuumtable'] = 'Upravit nastavenΓ­ automatickΓ©ho ΓΊklidu pro tabulku %s'; + $lang['strdelvacuumtable'] = 'Smazat nastavenΓ­ automatickΓ©ho ΓΊklidu pro tabulku %s ?'; + $lang['strvacuumtablereset'] = 'Autovacuum setup for table %s reset to default values'; + $lang['strdelvacuumtablefail'] = 'NezdaΕ™ilo se odebrat nastavenΓ­ automatickΓ©ho ΓΊklidu pro tabulku %s'; + $lang['strsetvacuumtablesaved'] = 'NastavenΓ­ automatickΓ©ho ΓΊklidu pro tabulku %s bylo uloΕΎeno.'; + $lang['strsetvacuumtablefail'] = 'NezdaΕ™ilo se nastavenΓ­ automatickΓ©ho ΓΊklidu pro tabulku %s.'; + $lang['strspecifydelvacuumtable'] = 'MusΓ­te zadat tabulku, ze kterΓ© chcete odebrat parametry automatickΓ©ho ΓΊklidu.'; + $lang['strspecifyeditvacuumtable'] = 'MusΓ­te zadat tabulku, ze kterΓ© chcete upravit parametry automatickΓ©ho ΓΊklidu.'; + $lang['strnotdefaultinred'] = 'V účtu nejsou ΕΎΓ‘dnΓ© vΓ½chozΓ­ hodnoty.'; + + // Table-level Locks + $lang['strlocks'] = 'ZΓ‘mky'; + $lang['strtransaction'] = 'ID transakce'; + $lang['strvirtualtransaction'] = 'ID virtuΓ‘lnΓ­ transakce'; + $lang['strprocessid'] = 'ID procesu'; + $lang['strmode'] = 'ReΕΎim zΓ‘mku'; + $lang['strislockheld'] = 'Je zΓ‘mek drΕΎenΓ½?'; + + // Prepared transactions + $lang['strpreparedxacts'] = 'PΕ™ipravenΓ© transakce'; + $lang['strxactid'] = 'TransakčnΓ­ ID'; + $lang['strgid'] = 'GlobΓ‘lnΓ­ ID'; + + // Fulltext search + $lang['strfulltext'] = 'PlnΔ› textovΓ© vyhledΓ‘vΓ‘nΓ­'; + $lang['strftsconfig'] = 'NastavenΓ­ FTS'; + $lang['strftsconfigs'] = 'NastavenΓ­'; + $lang['strftscreateconfig'] = 'VytvoΕ™it nastavenΓ­ FTS'; + $lang['strftscreatedict'] = 'VytvoΕ™it slovnΓ­k'; + $lang['strftscreatedicttemplate'] = 'VytvoΕ™it Ε‘ablonu slovnΓ­ku'; + $lang['strftscreateparser'] = 'VytvoΕ™it analyzΓ‘tor'; + $lang['strftsnoconfigs'] = 'Nebylo nalezeno ΕΎΓ‘dnΓ© nastavenΓ­ FTS.'; + $lang['strftsconfigdropped'] = 'NastavenΓ­ FTS bylo odstranΔ›no.'; + $lang['strftsconfigdroppedbad'] = 'NezdaΕ™ilo se odstranit nastavenΓ­ FTS.'; + $lang['strconfdropftsconfig'] = 'Opravdu chcete odstranit nastavenΓ­ FTS β€ž%sβ€œ?'; + $lang['strconfdropftsdict'] = 'Opravdu chcete odstranit slovnΓ­k FTS β€ž%sβ€œ?'; + $lang['strconfdropftsmapping'] = 'Opravdu chcete odstranit mapovΓ‘nΓ­ β€ž%sβ€œ nastavenΓ­ FTS β€ž%sβ€œ?'; + $lang['strftstemplate'] = 'Ε ablona'; + $lang['strftsparser'] = 'AnalyzΓ‘tor'; + $lang['strftsconfigneedsname'] = 'MusΓ­te zadat nΓ‘zev pro nastavenΓ­ FTS.'; + $lang['strftsconfigcreated'] = 'NastavenΓ­ FTS bylo vytvoΕ™eno.'; + $lang['strftsconfigcreatedbad'] = 'NezdaΕ™ilo se vytvoΕ™it nastavenΓ­ FTS.'; + $lang['strftsmapping'] = 'MapovΓ‘nΓ­'; + $lang['strftsdicts'] = 'SlovnΓ­ky'; + $lang['strftsdict'] = 'SlovnΓ­k'; + $lang['strftsemptymap'] = 'VyprΓ‘zdnit mapu nastavenΓ­ FTS.'; + $lang['strftsconfigaltered'] = 'Byly provedeny zmΔ›ny nastavenΓ­ FTS.'; + $lang['strftsconfigalteredbad'] = 'NezdaΕ™ilo se provΓ©st zmΔ›ny nastavenΓ­ FTS.'; + $lang['strftsconfigmap'] = 'Mapa nastavenΓ­ FTS'; + $lang['strftsparsers'] = 'AnalyzΓ‘tory FTS'; + $lang['strftsnoparsers'] = 'Nejsou dostupnΓ© ΕΎΓ‘dnΓ© analyzΓ‘tory FTS.'; + $lang['strftsnodicts'] = 'Nejsou dostupnΓ© ΕΎΓ‘dnΓ© slovnΓ­ky FTS.'; + $lang['strftsdictcreated'] = 'SlovnΓ­k FTS byl vytvoΕ™en.'; + $lang['strftsdictcreatedbad'] = 'NezdaΕ™ilo se vytvoΕ™it slovnΓ­k FTS.'; + $lang['strftslexize'] = 'LexikΓ‘lnΓ­ funkce'; + $lang['strftsinit'] = 'InicializačnΓ­ funkce'; + $lang['strftsoptionsvalues'] = 'Volby a hodnoty'; + $lang['strftsdictneedsname'] = 'MusΓ­te zadat nΓ‘zev pro slovnΓ­k FTS.'; + $lang['strftsdictdropped'] = 'SlovnΓ­k FTS byl odstranΔ›n.'; + $lang['strftsdictdroppedbad'] = 'NezdaΕ™ilo se odstranit slovnΓ­k FTS.'; + $lang['strftsdictaltered'] = 'Byly provedeny zmΔ›ny slovnΓ­ku FTS.'; + $lang['strftsdictalteredbad'] = 'NezdaΕ™ilo se provΓ©st zmΔ›ny slovnΓ­ku FTS.'; + $lang['strftsaddmapping'] = 'PΕ™idat novΓ© mapovΓ‘nΓ­'; + $lang['strftsspecifymappingtodrop'] = 'Pokud chcete odstranit mapovΓ‘nΓ­, tak musΓ­te nejmΓ©nΔ› jedno vybrat.'; + $lang['strftsspecifyconfigtoalter'] = 'MusΓ­te vybrat, kterΓ© nastavenΓ­ FTS chcete zmΔ›nit.'; + $lang['strftsmappingdropped'] = 'MapovΓ‘nΓ­ FTS bylo odstranΔ›no.'; + $lang['strftsmappingdroppedbad'] = 'NezdaΕ™ilo se odstranit mapovΓ‘nΓ­ FTS.'; + $lang['strftsnodictionaries'] = 'Nebyly nalezeny ΕΎΓ‘dnΓ© slovnΓ­ky.'; + $lang['strftsmappingaltered'] = 'Byly provedeny zmΔ›ny mapovΓ‘nΓ­ FTS.'; + $lang['strftsmappingalteredbad'] = 'NezdaΕ™ilo se provΓ©st zmΔ›ny mapovΓ‘nΓ­ FTS.'; + $lang['strftsmappingadded'] = 'MapovΓ‘nΓ­ FTS bylo pΕ™idΓ‘no.'; + $lang['strftsmappingaddedbad'] = 'NezdaΕ™ilo se pΕ™idat mapovΓ‘nΓ­ FTS.'; + $lang['strftstabconfigs'] = 'NastavenΓ­'; + $lang['strftstabdicts'] = 'SlovnΓ­ky'; + $lang['strftstabparsers'] = 'AnalyzΓ‘tory'; + $lang['strftscantparsercopy'] = 'PΕ™i vytvΓ‘Ε™enΓ­ nastavenΓ­ textovΓ©ho vyhledΓ‘vΓ‘nΓ­ nemΕ―ΕΎete narΓ‘z zadat analyzΓ‘tor i Ε‘ablonu.'; +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/danish.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/danish.php new file mode 100644 index 00000000..52527332 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/danish.php @@ -0,0 +1,617 @@ + + */ + + // Language and character set + $lang['applang'] = 'Danish'; + $lang['applocale'] = 'da-DK'; + $lang['applangdir'] = 'ltr'; + + // Welcome + $lang['strintro'] = 'Velkommen til phpPgAdmin.'; + $lang['strppahome'] = 'phpPgAdmins Hjemmeside'; + $lang['strpgsqlhome'] = 'PostgreSQLs Hjemmeside'; + $lang['strpgsqlhome_url'] = 'http://www.postgresql.org/'; + $lang['strlocaldocs'] = 'PostgreSQL Dokumentation (lokalt)'; + $lang['strreportbug'] = 'Rapporter fejl'; + $lang['strviewfaq'] = 'Ofte stillede spΓΈrgsmΓ₯l'; + $lang['strviewfaq_url'] = 'http://phppgadmin.sourceforge.net/doku.php?id=faq'; + + // Basic strings + $lang['strlogin'] = 'Login'; + $lang['strloginfailed'] = 'Login mislykkedes'; + $lang['strlogindisallowed'] = 'Login forbudt'; + $lang['strserver'] = 'Server'; + $lang['strlogout'] = 'Log ud'; + $lang['strowner'] = 'Ejer'; + $lang['straction'] = 'Handling'; + $lang['stractions'] = 'Handlinger'; + $lang['strname'] = 'Navn'; + $lang['strdefinition'] = 'Definition'; + $lang['strproperties'] = 'Egenskaber'; + $lang['strbrowse'] = 'Bladre'; + $lang['strdrop'] = 'Fjern'; + $lang['strdropped'] = 'Fjernet'; + $lang['strnull'] = 'Ingenting'; + $lang['strnotnull'] = 'Ikke ingenting'; + $lang['strfirst'] = '<< FΓΈrste'; + $lang['strlast'] = 'Sidste >>'; + $lang['strprev'] = 'ForgΓ₯ende'; + $lang['strfailed'] = 'Mislykkedes'; + $lang['strnext'] = 'NΓ¦ste'; + $lang['strcreate'] = 'Opret'; + $lang['strcreated'] = 'Oprettet'; + $lang['strcomment'] = 'Kommentar'; + $lang['strlength'] = 'LΓ¦ngde'; + $lang['strdefault'] = 'StandardvΓ¦rdi'; + $lang['stralter'] = 'Γ†ndre'; + $lang['strok'] = 'OK'; + $lang['strcancel'] = 'Fortryd'; + $lang['strsave'] = 'Gem'; + $lang['strreset'] = 'Nulstil'; + $lang['strinsert'] = 'IndsΓ¦t'; + $lang['strselect'] = 'VΓ¦lg'; + $lang['strdelete'] = 'Slet'; + $lang['strupdate'] = 'Opdater'; + $lang['strreferences'] = 'Referencer'; + $lang['stryes'] = 'Ja'; + $lang['strno'] = 'Nej'; + $lang['strtrue'] = 'Sand'; + $lang['strfalse'] = 'Falsk'; + $lang['stredit'] = 'Redigere'; + $lang['strcolumn'] = 'Kolonne'; + $lang['strcolumns'] = 'Kolonner'; + $lang['strrows'] = 'RΓ¦kke(r)'; + $lang['strrowsaff'] = 'RΓ¦kke(r) berΓΈrt.'; + $lang['strobjects'] = 'Objekt'; + $lang['strexample'] = 'f.eks.'; + $lang['strback'] = 'Tilbage'; + $lang['strqueryresults'] = 'SΓΈgeresultat'; + $lang['strshow'] = 'Vise'; + $lang['strempty'] = 'TΓΈm'; + $lang['strlanguage'] = 'Sprog'; + $lang['strencoding'] = 'Kodning'; + $lang['strvalue'] = 'VΓ¦rdi'; + $lang['strunique'] = 'Unik'; + $lang['strprimary'] = 'PrimΓ¦r'; + $lang['strexport'] = 'Eksportere'; + $lang['strimport'] = 'Importere'; + $lang['strsql'] = 'SQL'; + $lang['strgo'] = 'UdfΓΈr'; + $lang['stradmin'] = 'Admin'; + $lang['strvacuum'] = 'Ryd op'; + $lang['stranalyze'] = 'Analysere'; + $lang['strclusterindex'] = 'Klynge'; + $lang['strclustered'] = 'Klynget?'; + $lang['strreindex'] = 'Genindekser'; + $lang['strrun'] = 'UdfΓΈr'; + $lang['stradd'] = 'TilfΓΈj'; + $lang['strevent'] = 'HΓ¦ndelse'; + $lang['strwhere'] = 'Hvor'; + $lang['strinstead'] = 'GΓΈr i stedet'; + $lang['strwhen'] = 'NΓ₯r'; + $lang['strformat'] = 'Format'; + $lang['strdata'] = 'Data'; + $lang['strconfirm'] = 'BekrΓ¦ft'; + $lang['strexpression'] = 'Udtryk'; + $lang['strellipsis'] = '...'; + $lang['strseparator'] = ': '; + $lang['strexpand'] = 'Udvid'; + $lang['strcollapse'] = 'Klap sammen'; + $lang['strexplain'] = 'Forklar'; + $lang['strexplainanalyze'] = 'Forklar analyze'; + $lang['strfind'] = 'SΓΈg'; + $lang['stroptions'] = 'Alternativ'; + $lang['strrefresh'] = 'Opdater'; + $lang['strdownload'] = 'Download'; + $lang['strdownloadgzipped'] = 'Download komprimeret som gzip'; + $lang['strinfo'] = 'Info'; + $lang['stroids'] = 'OIDΒ΄er'; + $lang['stradvanced'] = 'Avanceret'; + $lang['strvariables'] = 'Variable'; + $lang['strprocess'] = 'Proces'; + $lang['strprocesses'] = 'Processer'; + $lang['strsetting'] = 'Indstilling'; + $lang['streditsql'] = 'Rediger SQL'; + $lang['strruntime'] = 'Total runtime: %s ms'; + $lang['strpaginate'] = 'Paginere resultater'; + $lang['struploadscript'] = 'eller upload et SQL script:'; + $lang['strstarttime'] = 'Starttid'; + $lang['strfile'] = 'Fil'; + $lang['strfileimported'] = 'Fil importeret.'; + $lang['strparameters'] = 'Parametrer'; + + // Error handling + $lang['strnotloaded'] = 'Du har ikke ikke indlagt korrekt databaseunderstΓΈttelse i din PHP-installation.'; + $lang['strbadconfig'] = 'Din config.inc.php er ikke opdateret. Du er nΓΈdt til at genetablere den fra den nye config.inc.php-dist.'; + $lang['strbadencoding'] = 'Det lykkedes ikke at sΓ¦tte klientkodning i databasen.'; + $lang['strbadSchema'] = 'Forkert Skema angivet.'; + $lang['strinstatement'] = 'I pΓ₯standen:'; + $lang['strsqlerror'] = 'SQL fejl:'; + $lang['strinvalidparam'] = 'Ugyldig scriptparam.'; + $lang['strnodata'] = 'Ingen rΓ¦kker fundet.'; + $lang['strnoobjects'] = 'Ingen objekter fundet.'; + $lang['strrownotunique'] = 'Denne rΓ¦kke har ingen unik nΓΈgle.'; + + // Tables + $lang['strtable'] = 'Tabel'; + $lang['strtables'] = 'Tabeller'; + $lang['strshowalltables'] = 'Vis alle tabeller'; + $lang['strnotables'] = 'Fandt ingen tabeller.'; + $lang['strnotable'] = 'Fandt ingen tabel.'; + $lang['strcreatetable'] = 'Opret tabel'; + $lang['strtablename'] = 'Tabelnavn'; + $lang['strtableneedsname'] = 'Tabel skal have et navn.'; + $lang['strtableneedsfield'] = 'Der skal mindst vΓ¦re et felt.'; + $lang['strtableneedscols'] = 'tabeller krΓ¦ver et tilladeligt antal kolonner.'; + $lang['strtablecreated'] = 'Tabel oprettet.'; + $lang['strtablecreatedbad'] = 'Tabeloprettelse mislykkedes.'; + $lang['strconfdroptable'] = 'Er du sikker pΓ₯ at du vil fjerne tabellen "%s"?'; + $lang['strtabledropped'] = 'Tabel fjernet.'; + $lang['strinsertrow'] = 'IndsΓ¦t rΓ¦kke'; + $lang['strtabledroppedbad'] = 'Det lykkedes ikke at fjerne tabellen.'; + $lang['strrowinserted'] = 'RΓ¦kke indsat.'; + $lang['strconfemptytable'] = 'Er du sikker pΓ₯ at du vil tΓΈmme tabellen "%s"?'; + $lang['strrowupdated'] = 'RΓ¦kke opdateret.'; + $lang['strrowinsertedbad'] = 'Det lykkedes ikke indsΓ¦tte rΓ¦kke.'; + $lang['strtableemptied'] = 'Tabellen tΓΈmt.'; + $lang['strrowupdatedbad'] = 'Opdatering af rΓ¦kke mislykkedes.'; + $lang['streditrow'] = 'Rediger rΓ¦kke'; + $lang['strrowdeleted'] = 'RΓ¦kke slettet.'; + $lang['strrowdeletedbad'] = 'Sletning af rΓ¦kke mislykkedes.'; + $lang['strfield'] = 'Felt'; + $lang['strconfdeleterow'] = 'Er du sikker pΓ₯ at du vil slette denne rΓ¦kke?'; + $lang['strnumfields'] = 'Antal felter'; + $lang['strsaveandrepeat'] = 'Gem & FortsΓ¦t'; + $lang['strtableemptiedbad'] = 'Det lykkedes ikke at tΓΈmme tabellen'; + $lang['strdeleterow'] = 'Slet rΓ¦kke'; + $lang['strfields'] = 'Felt'; + $lang['strfieldneedsname'] = 'Feltet skal have et navn'; + $lang['strcolumndropped'] = 'Kolonne fjernet.'; + $lang['strselectallfields'] = 'VΓ¦lg alle felter'; + $lang['strselectneedscol'] = 'Der skal vΓ¦lges mindst een kolonne'; + $lang['strselectunary'] = 'Unary operander kan ikke have vΓ¦rdien.'; + $lang['strcolumnaltered'] = 'Kolonne Γ¦ndret.'; + $lang['straltercolumn'] = 'Γ†ndre kolonne'; + $lang['strcolumnalteredbad'] = 'Det lykkes ikke at Γ¦ndre kolonne.'; + $lang['strconfdropcolumn'] = 'Er du sikker pΓ₯ at du vil fjerne kolonne "%s" fra tabel "%s"?'; + $lang['strcolumndroppedbad'] = 'Det lykkedes ikke at fjerne kolonne.'; + $lang['straddcolumn'] = 'TilfΓΈj kolonne'; + $lang['strcolumnadded'] = 'Kolonne tifΓΈjet.'; + $lang['strcolumnaddedbad'] = 'Det lykkedes ikke at tilfΓΈje kolonne.'; + $lang['strcascade'] = 'KASKAD'; + $lang['strdataonly'] = 'Udelukkende data'; + $lang['strtablealtered'] = 'Tabel Γ¦ndret.'; + $lang['strtablealteredbad'] = 'Det lykkedes ikke at Γ¦ndre tabel.'; + $lang['strestimatedrowcount'] = 'AnslΓ₯et antal rΓ¦kker'; + + // Users + $lang['struser'] = 'Bruger'; + $lang['strusers'] = 'Brugere'; + $lang['strusername'] = 'Brugernavn'; + $lang['strpassword'] = 'Password'; + $lang['strsuper'] = 'Superbruger?'; + $lang['strcreatedb'] = 'Opret database?'; + $lang['strexpires'] = 'UdlΓΈber'; + $lang['strsessiondefaults'] = 'Sessionsindstillinger'; + $lang['strnewname'] = 'Nyt navn'; + $lang['strnousers'] = 'Der blev ikke fundet nogen brugere.'; + $lang['strrename'] = 'OmdΓΈb'; + $lang['struserrenamed'] = 'Brugernavn Γ¦ndret.'; + $lang['struserrenamedbad'] = 'Det lykkedes ikke at omdΓΈbe bruger.'; + $lang['struserupdated'] = 'Bruger opdateret.'; + $lang['struserupdatedbad'] = 'Opdatering af bruger mislykkedes.'; + $lang['strshowallusers'] = 'Vis alle brugere'; + $lang['strcreateuser'] = 'Opret bruger'; + $lang['struserneedsname'] = 'Bruger behΓΈver et navn.'; + $lang['strconfdropuser'] = 'Er du sikker pΓ₯ at du vil slette brugeren "%s"?'; + $lang['strusercreated'] = 'Bruger oprettet.'; + $lang['strusercreatedbad'] = 'Oprettelse af bruger mislykkedes.'; + $lang['struserdropped'] = 'Bruger slettet.'; + $lang['struserdroppedbad'] = 'Sletning af bruger mislykkedes.'; + $lang['straccount'] = 'Konto'; + $lang['strchangepassword'] = 'Γ†ndre password'; + $lang['strpasswordchanged'] = 'Password Γ¦ndret.'; + $lang['strpasswordchangedbad'] = 'Γ†ndring af password mislykkedes.'; + $lang['strpasswordshort'] = 'Password er for kort.'; + $lang['strpasswordconfirm'] = 'Password er forskellig fra bekrΓ¦ftelsen.'; + + // Groups + $lang['strgroup'] = 'Gruppe'; + $lang['strgroups'] = 'Grupper'; + $lang['strnogroup'] = 'Gruppe blev ikke fundet.'; + $lang['strnogroups'] = 'Ingen grupper blev fundet.'; + $lang['strcreategroup'] = 'Opret gruppe'; + $lang['strshowallgroups'] = 'Vis alle grupper'; + $lang['strgroupneedsname'] = 'Gruppen skal have et navn.'; + $lang['strgroupcreated'] = 'Gruppe oprettet.'; + $lang['strgroupdropped'] = 'Gruppe slettet.'; + $lang['strgroupcreatedbad'] = 'Oprettelse af gruppe mislykkedes.'; + $lang['strconfdropgroup'] = 'Er du sikker pΓ₯ at du vil slette gruppe "%s"?'; + $lang['strgrant'] = 'Tildel'; + $lang['strgranted'] = 'Privilegier Γ¦ndret.'; + $lang['strgroupdroppedbad'] = 'Det lykkedes ikke at fjerne gruppe.'; + $lang['straddmember'] = 'TilfΓΈj medlem'; + $lang['strmemberadded'] = 'Medlem tilfΓΈjet.'; + $lang['strmemberaddedbad'] = 'Det lykkedes ikke at tilfΓΈje medlem.'; + $lang['strdropmember'] = 'Fjern medlem'; + $lang['strconfdropmember'] = 'Er du sikker pΓ₯ at du vil fjerne medlem "%s" fra gruppen "%s"?'; + $lang['strmemberdropped'] = 'Medlem fjernet.'; + $lang['strmemberdroppedbad'] = 'Det lykkedes ikke at fjerne medlem.'; + + // Privileges + $lang['strprivilege'] = 'Rettighed'; + $lang['strprivileges'] = 'Rettigheder'; + $lang['strnoprivileges'] = 'Dette objekt har standard ejerrettigheder.'; + $lang['strmembers'] = 'Medlemmer'; + $lang['strrevoke'] = 'Inddrag'; + $lang['strgrantbad'] = 'Du skal angive mindst en bruger eller gruppe og mindst et privilegie.'; + $lang['strgrantfailed'] = 'Γ†ndring af rettigheder mislykkedes.'; + $lang['stralterprivs'] = 'Γ†ndre rettigheder'; + $lang['strdatabase'] = 'Database'; + $lang['strdatabasedropped'] = 'Database fjernet.'; + $lang['strdatabases'] = 'Databaser'; + $lang['strentersql'] = 'Indtast SQL til eksekvering :'; + $lang['strgrantor'] = 'Tilladelsesudsteder'; + $lang['strasterisk'] = '*'; + + // Databases + $lang['strdatabase'] = 'Database'; + $lang['strdatabases'] = 'Databaser'; + $lang['strshowalldatabases'] = 'Vis alle databaser'; + $lang['strnodatabase'] = 'Database blev ikke fundet.'; + $lang['strnodatabases'] = 'Der blev ikke fundet nogen databaser.'; + $lang['strcreatedatabase'] = 'Opret database'; + $lang['strdatabasename'] = 'Databasenavn'; + $lang['strdatabaseneedsname'] = 'Databasen skal have et navn.'; + $lang['strdatabasecreated'] = 'Database oprettet.'; + $lang['strdatabasecreatedbad'] = 'Oprettelse af database mislykkedes.'; + $lang['strconfdropdatabase'] = 'Er du sikker pΓ₯ at du vil fjerne database "%s"?'; + $lang['strdatabasedroppedbad'] = 'Fjernelse af database mislykkedes.'; + $lang['strentersql'] = 'Enter the SQL to execute below:'; + $lang['strsqlexecuted'] = 'SQL-kommando udfΓΈrt.'; + $lang['strvacuumgood'] = 'Vacuum udfΓΈrt.'; + $lang['strvacuumbad'] = 'Vacuum mislykkedes.'; + $lang['stranalyzegood'] = 'Analysen lykkedes.'; + $lang['stranalyzebad'] = 'Analysen mislykkedes.'; + $lang['strreindexgood'] = 'Reindeksering komplet.'; + $lang['strreindexbad'] = 'Reindeksering slog fejl.'; + $lang['strfull'] = 'Fuld'; + $lang['strfreeze'] = 'Fastfrys'; + $lang['strforce'] = 'Force'; + $lang['strsignalsent'] = 'Signal sendt.'; + $lang['strsignalsentbad'] = 'Afsendelse af signal mislykkedes.'; + $lang['strallobjects'] = 'Alle objekter'; + $lang['strstructureonly'] = 'Kun struktur'; + $lang['strstructureanddata'] = 'Struktur og data'; + + // Views + $lang['strview'] = 'View'; + $lang['strviews'] = 'Views'; + $lang['strshowallviews'] = 'Vis alle views'; + $lang['strnoview'] = 'Ingen view blev fundet.'; + $lang['strnoviews'] = 'Ingen views blev fundet.'; + $lang['strcreateview'] = 'Opret view'; + $lang['strviewname'] = 'Navn pΓ₯ view'; + $lang['strviewneedsname'] = 'View skal have et navn.'; + $lang['strviewneedsdef'] = 'Du skal angive en defintion for view.'; + $lang['strviewcreated'] = 'View oprettet.'; + $lang['strviewcreatedbad'] = 'Oprettelse af View mislykkedes.'; + $lang['strconfdropview'] = 'Er du sikker pΓ₯ at du vil fjerne view "%s"?'; + $lang['strviewdropped'] = 'View fjernet.'; + $lang['strviewdroppedbad'] = 'Fjernelse af view mislykkedes.'; + $lang['strviewupdated'] = 'View opdateret.'; + $lang['strviewupdatedbad'] = 'Opdatering af view mislykkedes.'; + $lang['strviewlink'] = 'Linking Keys'; + $lang['strviewconditions'] = 'Yderligere vilkΓ₯r'; + $lang['strcreateviewwiz'] = 'Opret view med hjΓ¦lp af wizard'; + + // Sequences + $lang['strsequence'] = 'Sekvens'; + $lang['strsequences'] = 'Sekvenser'; + $lang['strshowallsequences'] = 'Vis alle sekvenser'; + $lang['strnosequence'] = 'Sekvens blev ikke fundet.'; + $lang['strnosequences'] = 'Ingen sekvenser blev fundet.'; + $lang['strcreatesequence'] = 'Opret sekvens'; + $lang['strlastvalue'] = 'Seneste vΓ¦rdi'; + $lang['strincrementby'] = 'Øg med'; + $lang['strstartvalue'] = 'StartvΓ¦rdi'; + $lang['strmaxvalue'] = 'StΓΈrste vΓ¦rdi'; + $lang['strminvalue'] = 'Mindste vΓ¦rdi'; + $lang['strcachevalue'] = 'Cachens vΓ¦rdi'; + $lang['strlogcount'] = 'Log count'; + $lang['striscycled'] = 'Is cycled?'; + $lang['strsequenceneedsname'] = 'Sekvens skal have et navn.'; + $lang['strsequencecreated'] = 'Sekvens oprettet.'; + $lang['strsequencecreatedbad'] = 'Oprettelse af sekvens mislykkedes.'; + $lang['strconfdropsequence'] = 'Er du sikker pΓ₯ at du vil fjerne sekvensen "%s"?'; + $lang['strsequencedropped'] = 'Sekvensen fjernet.'; + $lang['strsequencedroppedbad'] = 'Fjernelse af sekvens mislykkedes.'; + + // Indexes + $lang['strindex'] = 'Indeks'; + $lang['strindexes'] = 'Indekser'; + $lang['strindexname'] = 'Indeksnavn'; + $lang['strshowallindexes'] = 'Vis alle indeks'; + $lang['strnoindex'] = 'Ingen indeks blev fundet.'; + $lang['strsequencereset'] = 'Nulstil sekvens.'; + $lang['strsequenceresetbad'] = 'Nulstilling af sekvens mislykkedes.'; + $lang['strnoindexes'] = 'Ingen indeks blev fundet.'; + $lang['strcreateindex'] = 'Opret indeks'; + $lang['strindexname'] = 'Indeksnavn'; + $lang['strtabname'] = 'Tabelnavn'; + $lang['strcolumnname'] = 'Kolonnenavn'; + $lang['strindexneedsname'] = 'Indeks skal have et navn'; + $lang['strindexneedscols'] = 'Indeks krΓ¦veret gyldigt antal kolonner.'; + $lang['strindexcreated'] = 'Indeks oprettet'; + $lang['strindexcreatedbad'] = 'Oprettelse af indeks mislykkedes.'; + $lang['strconfdropindex'] = 'Er du sikker pΓ₯ at du vil fjerne indeks "%s"?'; + $lang['strindexdropped'] = 'Indeks fjernet.'; + $lang['strindexdroppedbad'] = 'Det lykkedes ikke at fjerne indeks.'; + $lang['strkeyname'] = 'NΓΈglebetegnelse'; + $lang['struniquekey'] = 'Unik nΓΈgle'; + $lang['strprimarykey'] = 'PrimΓ¦rnΓΈgle'; + $lang['strindextype'] = 'Indekstype'; + $lang['strindexname'] = 'Indeksnavn'; + $lang['strtablecolumnlist'] = 'Tabelkolonner'; + $lang['strindexcolumnlist'] = 'Indekskolonner'; + $lang['strconfcluster'] = 'Are you sure you want to cluster "%s"?'; + $lang['strclusteredgood'] = 'Cluster complete.'; + $lang['strclusteredbad'] = 'Cluster failed.'; + + // Rules + $lang['strrules'] = 'Regler'; + $lang['strrule'] = 'Regel'; + $lang['strshowallrules'] = 'Vis alle regler'; + $lang['strnorule'] = 'Regel blev ikke fundet.'; + $lang['strnorules'] = 'Ingen regler blev fundet.'; + $lang['strcreaterule'] = 'Opret regel'; + $lang['strrulename'] = 'Regelnavn'; + $lang['strruleneedsname'] = 'Regel skal have et navn.'; + $lang['strrulecreated'] = 'Regel oprettet.'; + $lang['strrulecreatedbad'] = 'Oprettelse af regel mislykkedes.'; + $lang['strconfdroprule'] = 'Er du sikker pΓ₯ at du fjerne regel "%s" for "%s"?'; + $lang['strruledropped'] = 'Regel fjernet.'; + $lang['strruledroppedbad'] = 'Det lykkedes ikke at fjerne regel.'; + + // Constraints + $lang['strconstraints'] = 'AfgrΓ¦nsninger'; + $lang['strshowallconstraints'] = 'Vis alle afgrΓ¦nsninger'; + $lang['strnoconstraints'] = 'Der blev ikke fundet nogen afgrΓ¦nsninger.'; + $lang['strcreateconstraint'] = 'Opret afgrΓ¦nsning'; + $lang['strconstraintcreated'] = 'AfgrΓ¦nsning oprettet.'; + $lang['strconstraintcreatedbad'] = 'Det lykkedes ikke at oprette afgrΓ¦nsning.'; + $lang['strconfdropconstraint'] = 'Er du sikker pΓ₯ at du vil fjerne afgrΓ¦nsning "%s" for "%s"?'; + $lang['strconstraintdropped'] = 'AfgrΓ¦nsning fjernet.'; + $lang['strconstraintdroppedbad'] = 'Det lykkedes ikke at fjerne afgrΓ¦nsning.'; + $lang['straddcheck'] = 'TilfΓΈj check'; + $lang['strcheckneedsdefinition'] = 'Check afgrΓ¦nsning skal defineres.'; + $lang['strcheckadded'] = 'Check tilfΓΈjet.'; + $lang['strcheckaddedbad'] = 'Det lykkedes ikke at tilfΓΈje check.'; + $lang['straddpk'] = 'TilfΓΈj primΓ¦rnΓΈgle'; + $lang['strpkneedscols'] = 'PrimΓ¦rnΓΈgle krΓ¦ver mindst en kolonne.'; + $lang['strpkadded'] = 'PrimΓ¦rnΓΈgle tilfΓΈjet.'; + $lang['strpkaddedbad'] = 'TilfΓΈjelse af primΓ¦rnΓΈgle mislykkedes.'; + $lang['stradduniq'] = 'TilfΓΈj unik nΓΈgle'; + $lang['struniqneedscols'] = 'Unik nΓΈgle krΓ¦ver mindst een kolonne.'; + $lang['struniqadded'] = 'Unik nΓΈgle tilfΓΈjet.'; + $lang['struniqaddedbad'] = 'TilfΓΈjelse af unik nΓΈgle mislykkedes.'; + $lang['straddfk'] = 'TilfΓΈj ekstern nΓΈgle'; + $lang['strfkneedscols'] = 'Ekstern nΓΈgle krΓ¦ver mindst een kolonne.'; + $lang['strfkneedstarget'] = 'Ekstern nΓΈgle krΓ¦ver en mΓ₯ltabel.'; + $lang['strfkadded'] = 'Ekstern nΓΈgle tilfΓΈjet.'; + $lang['strfkaddedbad'] = 'TilfΓΈjelse af ekstern nΓΈgle mislykkedes.'; + $lang['strfktarget'] = 'MΓ₯ltabel'; + $lang['strfkcolumnlist'] = 'Kolonner i nΓΈgle'; + $lang['strondelete'] = 'VED SLETNING'; + $lang['stronupdate'] = 'VED OPDATERING'; + + // Functions + $lang['strfunction'] = 'Funktion'; + $lang['strfunctions'] = 'Funktioner'; + $lang['strshowallfunctions'] = 'Vis alle funktioner'; + $lang['strnofunction'] = 'Hittade ingen funktion.'; + $lang['strnofunctions'] = 'Hittade inga funktioner.'; + $lang['strcreatefunction'] = 'Opret funktion'; + $lang['strcreateplfunction'] = 'Opret SQL/PL funktion'; + $lang['strcreateinternalfunction'] = 'Opret intern funktion'; + $lang['strcreatecfunction'] = 'Opret C funktion'; + $lang['strfunctionname'] = 'Funktionsnavn'; + $lang['strreturns'] = 'Tilbage'; + $lang['strarguments'] = 'Argumenter'; + $lang['strfunctionneedsname'] = 'Funktionen skal have et navn.'; + $lang['strfunctionneedsdef'] = 'Funktionen skal defineres.'; + $lang['strfunctioncreated'] = 'Funktion oprettet.'; + $lang['strfunctioncreatedbad'] = 'Oprettelse af funktion mislykkedes.'; + $lang['strconfdropfunction'] = 'Er du sikker pΓ₯ at du vil slette funktionen "%s"?'; + $lang['strproglanguage'] = 'Programmeringssprog'; + $lang['strfunctiondropped'] = 'Funktionen fjernet.'; + $lang['strfunctiondroppedbad'] = 'Fjernelse af funktionen mislykkedes.'; + $lang['strfunctionupdated'] = 'Funktion opdateret.'; + $lang['strfunctionupdatedbad'] = 'Opdatering af funktion mislykkedes.'; + + // Triggers + $lang['strtrigger'] = 'Trigger'; + $lang['strtriggers'] = 'Triggere'; + $lang['strshowalltriggers'] = 'Vis alle triggere'; + $lang['strnotrigger'] = 'Hittede ingen trigger.'; + $lang['strnotriggers'] = 'Hittede ingen trigger.'; + $lang['strcreatetrigger'] = 'Opret trigger'; + $lang['strtriggerneedsname'] = 'Trigger skal have et navn.'; + $lang['strtriggerneedsfunc'] = 'Du skal specificere en funktion for trigger.'; + $lang['strtriggercreated'] = 'Trigger oprettet.'; + $lang['strtriggerdropped'] = 'Trigger fjernet.'; + $lang['strtriggercreatedbad'] = 'Det lykkedes ikke at oprette trigger.'; + $lang['strconfdroptrigger'] = 'Er du sikker pΓ₯ at du vil fjerne trigger "%s" pΓ₯ "%s"?'; + $lang['strtriggerdroppedbad'] = 'Det lykkedes ikke at fjerne trigger.'; + + + + $lang['strstorage'] = 'Lagring'; + $lang['strtriggeraltered'] = 'Trigger Γ¦ndret.'; + $lang['strtriggeralteredbad'] = 'Det lykkedes ikke at Γ¦ndre trigger.'; + + // Types + $lang['strtype'] = 'Type'; + $lang['strtypes'] = 'Typer'; + $lang['strshowalltypes'] = 'Vis alle typer'; + $lang['strnotype'] = 'Typen blev ikke fundet.'; + $lang['strnotypes'] = 'Ingen typer fundet.'; + + $lang['strtypeneedslen'] = 'Du skal angive typens lΓ¦ngde.'; + + $lang['strcreatetype'] = 'Opret type'; + $lang['strtypename'] = 'Navn pΓ₯ typen'; + $lang['strinputfn'] = 'Input funktion'; + $lang['stroutputfn'] = 'Output funktion'; + $lang['strpassbyval'] = 'Passed by val?'; + $lang['stralignment'] = 'Justering'; + $lang['strelement'] = 'Element'; + $lang['strdelimiter'] = 'BegrΓ¦nser'; + $lang['strtypeneedsname'] = 'Typen skal have et navn.'; + $lang['strtypecreated'] = 'Type oprettet'; + $lang['strtypecreatedbad'] = 'Det lykkedes ikke at oprette type.'; + $lang['strconfdroptype'] = 'Er du sikker pΓ₯ at du vil fjerne typen "%s"?'; + $lang['strtypedropped'] = 'Typen fjernet.'; + $lang['strtypedroppedbad'] = 'Det lykkedes ikke at fjerne typen.'; + + // Schemas + $lang['strschema'] = 'Skema'; + $lang['strschemas'] = 'Skemaer'; + $lang['strshowallschemas'] = 'Vis alle skemaer'; + $lang['strnoschema'] = 'Der blev ikke fundet noget skema.'; + $lang['strnoschemas'] = 'Der blev ikke fundet nogen skemaer.'; + $lang['strcreateschema'] = 'Opret skema'; + $lang['strschemaname'] = 'Skemanavn'; + $lang['strschemaneedsname'] = 'Skema skal have et navn.'; + $lang['strschemacreated'] = 'Skema oprettet'; + $lang['strschemacreatedbad'] = 'Det lykkedes ikke at oprette skema.'; + $lang['strconfdropschema'] = 'Er du sikker pΓ₯, at du vil fjerne skemaet "%s"?'; + $lang['strschemadropped'] = 'Skema fjernet.'; + $lang['strschemadroppedbad'] = 'Det lykkedes ikka at fjerne skema.'; + + // Reports + $lang['strtopbar'] = '%s kΓΈrer pΓ₯ %s:%s -- Du er logged ind som bruger "%s"'; + $lang['strtimefmt'] = 'jS M, Y g:iA'; + + // Domains + $lang['strdomain'] = 'DomΓ¦ne'; + $lang['strdomains'] = 'DomΓ¦ner'; + $lang['strshowalldomains'] = 'Vis alle domΓ¦ner'; + $lang['strnodomains'] = 'Ingen domΓ¦ner blev fundet.'; + $lang['strcreatedomain'] = 'Opret domΓ¦ne'; + $lang['strdomaindropped'] = 'DomΓ¦ne fjernet.'; + $lang['strdomaindroppedbad'] = 'Det lykkedes ikke at fjerne domΓ¦ne.'; + $lang['strconfdropdomain'] = 'Er du sikker pΓ₯ at du vil fjerne domΓ¦net "%s"?'; + $lang['strdomainneedsname'] = 'Du skal indtaste et domΓ¦nenavn.'; + $lang['strdomaincreated'] = 'DomΓ¦ne oprettet.'; + $lang['strdomaincreatedbad'] = 'Det lykkedes ikke at oprette et domΓ¦ne.'; + $lang['strdomainaltered'] = 'DomΓ¦ne Γ¦ndret.'; + $lang['strdomainalteredbad'] = 'Det lykkedes ikke at Γ¦ndre domΓ¦ne.'; + + // Operators + $lang['stroperator'] = 'Operator'; + $lang['stroperators'] = 'Operatorer'; + $lang['strshowalloperators'] = 'Vis alle operatorer'; + $lang['strnooperator'] = 'Operator blev ikke.'; + $lang['strnooperators'] = 'Der blev ikke fundet nogen operatorer.'; + $lang['strcreateoperator'] = 'Opret operator'; + $lang['strleftarg'] = 'Left Arg Type'; + $lang['strrightarg'] = 'Right Arg Type'; + $lang['strcommutator'] = 'Commutator'; + $lang['strnegator'] = 'Negator'; + $lang['strrestrict'] = 'Restrict'; + $lang['strjoin'] = 'Join'; + $lang['strhashes'] = 'Hashes'; + $lang['strmerges'] = 'Merges'; + $lang['strleftsort'] = 'Left sort'; + $lang['strrightsort'] = 'Right sort'; + $lang['strlessthan'] = 'Less than'; + $lang['strgreaterthan'] = 'Greater than'; + $lang['stroperatorneedsname'] = 'Operator skal have et navn.'; + $lang['stroperatorcreated'] = 'Operator oprettet'; + $lang['stroperatorcreatedbad'] = 'Oprettelse af operator mislykkedes.'; + $lang['strconfdropoperator'] = 'Er du sikker pΓ₯, at du vil fjerne operator "%s"?'; + $lang['stroperatordropped'] = 'Operator fjernet.'; + $lang['stroperatordroppedbad'] = 'Fjernelse af operator mislykkedes.'; + + // Casts + $lang['strcasts'] = 'Typekonverteringer'; + $lang['strnocasts'] = 'Ingen typekonverteringer fundet.'; + $lang['strsourcetype'] = 'Kildetype'; + $lang['strtargettype'] = 'MΓ₯ltype'; + $lang['strimplicit'] = 'Implicit'; + $lang['strinassignment'] = 'Tildelt i'; + $lang['strbinarycompat'] = '(BinΓ¦rt kompatibel)'; + + // Conversions + $lang['strconversions'] = 'Konverteringer'; + $lang['strnoconversions'] = 'Ingen konverteringer fundet.'; + $lang['strsourceencoding'] = 'Kildekodning'; + $lang['strtargetencoding'] = 'MΓ₯lkodning'; + + // Languages + $lang['strlanguages'] = 'Sprog'; + $lang['strnolanguages'] = 'Der blev ikke fundet noget sprog.'; + $lang['strtrusted'] = 'PΓ₯lidelig(e)'; + + // Info + $lang['strnoinfo'] = 'Ingen tilgΓ¦ngelig information.'; + $lang['strreferringtables'] = 'Refererende tabeller'; + $lang['strparenttables'] = 'Overordnede tabeller'; + $lang['strchildtables'] = 'Underordnede tabeller'; + + // Aggregates + $lang['straggregates'] = 'SammenlΓ¦gninger'; + $lang['strnoaggregates'] = 'Ingen sammenlΓ¦gninger fundet.'; + $lang['stralltypes'] = '(Alle typer)'; + + // Operator Classes + $lang['stropclasses'] = 'Operatorklasser'; + $lang['strnoopclasses'] = 'Ingen Operatorklasser fundet.'; + $lang['straccessmethod'] = 'Tilgangsmetode'; + + // Stats and performance + $lang['strrowperf'] = 'Row Performance'; + $lang['strioperf'] = 'I/O Performance'; + $lang['stridxrowperf'] = 'Index Row Performance'; + $lang['stridxioperf'] = 'Index I/O Performance'; + $lang['strpercent'] = '%'; + $lang['strsequential'] = 'Sequential'; + $lang['strscan'] = 'Scan'; + $lang['strread'] = 'Read'; + $lang['strfetch'] = 'Fetch'; + $lang['strheap'] = 'Heap'; + $lang['strtoast'] = 'TOAST'; + $lang['strtoastindex'] = 'TOAST Index'; + $lang['strcache'] = 'Cache'; + $lang['strdisk'] = 'Disk'; + $lang['strrows2'] = 'Rows'; + + // Tablespaces + $lang['strtablespace'] = 'TabelomrΓ₯de'; + $lang['strtablespaces'] = 'TabelomrΓ₯der'; + $lang['strshowalltablespaces'] = 'Vis alle tabelomrΓ₯der'; + $lang['strnotablespaces'] = 'Ingen tabelomrΓ₯der fundet.'; + $lang['strcreatetablespace'] = 'Opret tabelomrΓ₯der'; + $lang['strlocation'] = 'Location'; + $lang['strtablespaceneedsname'] = 'TabelomrΓ₯det skal have et navn.'; + $lang['strtablespaceneedsloc'] = 'Du skal angive hvilken mappe tabelomrΓ₯det skal oprettes i.'; + $lang['strtablespacecreated'] = 'TabelomrΓ₯de oprettet.'; + $lang['strtablespacecreatedbad'] = 'Oprettelse af tabelomrΓ₯de lykkedes ikke.'; + $lang['strconfdroptablespace'] = 'Er du sikker pΓ₯, at du vil fjerne tabelomrΓ₯de "%s"?'; + $lang['strtablespacedropped'] = 'TabelomrΓ₯de fjernet.'; + $lang['strtablespacedroppedbad'] = 'Fjernelse af tabelomrΓ₯de lykkedes ikke.'; + $lang['strtablespacealtered'] = 'TabelomrΓ₯de Γ¦ndret.'; + $lang['strtablespacealteredbad'] = 'Γ†ndring af tabelomrΓ₯de lykkedes ikke.'; + + // Miscellaneous + $lang['strtopbar'] = '%s KΓΈrer pΓ₯ %s:%s -- Du er logged ind som bruger "%s", %s'; + $lang['strtimefmt'] = 'jS M, Y g:iA'; + $lang['strhelp'] = 'HjΓ¦lp'; + $lang['strhelpicon'] = '?'; + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/dutch.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/dutch.php new file mode 100644 index 00000000..998b94c3 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/dutch.php @@ -0,0 +1,467 @@ +>'; + $lang['strexplain'] = 'Verklaring'; + $lang['strfind'] = 'Zoek'; + $lang['stroptions'] = 'Opties'; + $lang['strrefresh'] = 'Ververs'; + $lang['strdownload'] = 'Download'; + $lang['strrownotunique'] = 'Geen unieke identifier voor deze rij.'; + $lang['strselectallfields'] = 'Selecteer alle velden'; + $lang['strtablealtered'] = 'Tabel gewijzigd.'; + $lang['strtablealteredbad'] = 'Tabel wijzigen mislukt.'; + $lang['strcreateuser'] = 'CreΓ«er gebruiker'; + $lang['strusercreatedbad'] = 'Gebruiker creΓ«ren mislukt.'; + $lang['straddmember'] = 'Voeg groepslid toe'; + $lang['strmemberadded'] = 'Groepslid toegevoegd.'; + $lang['strmemberaddedbad'] = 'Toevoegen groepslid mislukt.'; + $lang['strdropmember'] = 'Verwijder groepslid'; + $lang['strconfdropmember'] = 'Weet u zeker dat u "%s" uit groep "%s" wilt verwijderen?'; + $lang['strmemberdropped'] = 'Groepslid verwijderd.'; + $lang['strmemberdroppedbad'] = 'Verwijderen van groepslid mislukt.'; + $lang['strgrantor'] = 'Grantor'; + $lang['strasterisk'] = '*'; + $lang['strsequencereset'] = 'Sequence reset.'; + $lang['strsequenceresetbad'] = 'Sequence reset mislukt.'; + $lang['strproglanguage'] = 'Programmeertaal'; + $lang['strtriggeraltered'] = 'Trigger gewijzigd.'; + $lang['strtriggeralteredbad'] = 'Trigger wijziging mislukt.'; + $lang['strdomain'] = 'Domein'; + $lang['strdomains'] = 'Domeinen'; + $lang['strshowalldomains'] = 'Toon alle domeinen'; + $lang['strnodomains'] = 'Geen domeinen gevonden.'; + $lang['strcreatedomain'] = 'CreΓ«er domein'; + $lang['strdomaindropped'] = 'Domein verwijderd.'; + $lang['strdomaindroppedbad'] = 'Verwijderen van domein mislukt.'; + $lang['strconfdropdomain'] = 'Weet u zeker dat u het domein "%s" wilt verwijderen?'; + $lang['strdomainneedsname'] = 'U dient een naam op te geven voor uw domein.'; + $lang['strdomaincreated'] = 'Domein gecreΓ«erd.'; + $lang['strdomaincreatedbad'] = 'Domeincreatie mislukt.'; + $lang['strdomainaltered'] = 'Domein gewijzigd.'; + $lang['strdomainalteredbad'] = 'Wijzigen van het domein mislukt.'; + $lang['stroperator'] = 'Operator'; + $lang['strshowalloperators'] = 'Toon alle operators'; + $lang['strnooperator'] = 'Geen operator gevonden.'; + $lang['strnooperators'] = 'Geen operators gevonden.'; + $lang['strcreateoperator'] = 'CreΓ«er operator'; + $lang['stroperatorname'] = 'Naam van de operator'; + $lang['strleftarg'] = 'Linkerargument type'; + $lang['strrightarg'] = 'Rechterargument type'; + $lang['stroperatorneedsname'] = 'U dient een naam op te geven voor uw operator.'; + $lang['stroperatorcreated'] = 'Operator gecreΓ«erd'; + $lang['stroperatorcreatedbad'] = 'Operator creatie mislukt.'; + $lang['strconfdropoperator'] = 'Weet u zeker dat u de operator "%s" wilt verwijderen?'; + $lang['stroperatordropped'] = 'Operator verwijderd.'; + $lang['stroperatordroppedbad'] = 'Verwijderen van de operator mislukt.'; + $lang['strhelp'] = 'Help'; + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/english.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/english.php new file mode 100644 index 00000000..c232a752 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/english.php @@ -0,0 +1,905 @@ +'; + $lang['strfirst'] = '<< First'; + $lang['strlast'] = 'Last >>'; + $lang['strfailed'] = 'Failed'; + $lang['strcreate'] = 'Create'; + $lang['strcreated'] = 'Created'; + $lang['strcomment'] = 'Comment'; + $lang['strlength'] = 'Length'; + $lang['strdefault'] = 'Default'; + $lang['stralter'] = 'Alter'; + $lang['strok'] = 'OK'; + $lang['strcancel'] = 'Cancel'; + $lang['strkill'] = 'Kill'; + $lang['strac'] = 'Enable AutoComplete'; + $lang['strsave'] = 'Save'; + $lang['strreset'] = 'Reset'; + $lang['strrestart'] = 'Restart'; + $lang['strinsert'] = 'Insert'; + $lang['strselect'] = 'Select'; + $lang['strdelete'] = 'Delete'; + $lang['strupdate'] = 'Update'; + $lang['strreferences'] = 'References'; + $lang['stryes'] = 'Yes'; + $lang['strno'] = 'No'; + $lang['strtrue'] = 'TRUE'; + $lang['strfalse'] = 'FALSE'; + $lang['stredit'] = 'Edit'; + $lang['strcolumn'] = 'Column'; + $lang['strcolumns'] = 'Columns'; + $lang['strrows'] = 'row(s)'; + $lang['strrowsaff'] = 'row(s) affected.'; + $lang['strobjects'] = 'object(s)'; + $lang['strback'] = 'Back'; + $lang['strqueryresults'] = 'Query Results'; + $lang['strshow'] = 'Show'; + $lang['strempty'] = 'Empty'; + $lang['strlanguage'] = 'Language'; + $lang['strencoding'] = 'Encoding'; + $lang['strvalue'] = 'Value'; + $lang['strunique'] = 'Unique'; + $lang['strprimary'] = 'Primary'; + $lang['strexport'] = 'Export'; + $lang['strimport'] = 'Import'; + $lang['strallowednulls'] = 'Allowed NULL characters'; + $lang['strbackslashn'] = '\N'; + $lang['stremptystring'] = 'Empty string/field'; + $lang['strsql'] = 'SQL'; + $lang['stradmin'] = 'Admin'; + $lang['strvacuum'] = 'Vacuum'; + $lang['stranalyze'] = 'Analyze'; + $lang['strclusterindex'] = 'Cluster'; + $lang['strclustered'] = 'Clustered?'; + $lang['strreindex'] = 'Reindex'; + $lang['strexecute'] = 'Execute'; + $lang['stradd'] = 'Add'; + $lang['strevent'] = 'Event'; + $lang['strwhere'] = 'Where'; + $lang['strinstead'] = 'Do Instead'; + $lang['strwhen'] = 'When'; + $lang['strformat'] = 'Format'; + $lang['strdata'] = 'Data'; + $lang['strconfirm'] = 'Confirm'; + $lang['strexpression'] = 'Expression'; + $lang['strellipsis'] = '...'; + $lang['strseparator'] = ': '; + $lang['strexpand'] = 'Expand'; + $lang['strcollapse'] = 'Collapse'; + $lang['strfind'] = 'Find'; + $lang['stroptions'] = 'Options'; + $lang['strrefresh'] = 'Refresh'; + $lang['strdownload'] = 'Download'; + $lang['strdownloadgzipped'] = 'Download compressed with gzip'; + $lang['strinfo'] = 'Info'; + $lang['stroids'] = 'OIDs'; + $lang['stradvanced'] = 'Advanced'; + $lang['strvariables'] = 'Variables'; + $lang['strprocess'] = 'Process'; + $lang['strprocesses'] = 'Processes'; + $lang['strblocked'] = 'Blocked'; + $lang['strsetting'] = 'Setting'; + $lang['streditsql'] = 'Edit SQL'; + $lang['strruntime'] = 'Total runtime: %s ms'; + $lang['strpaginate'] = 'Paginate results'; + $lang['struploadscript'] = 'or upload an SQL script:'; + $lang['strstarttime'] = 'Start Time'; + $lang['strfile'] = 'File'; + $lang['strfileimported'] = 'File imported.'; + $lang['strtrycred'] = 'Use these credentials for all servers'; + $lang['strconfdropcred'] = 'For security reason, disconnecting will destroy your shared login information. Are you sure you want to disconnect ?'; + $lang['stractionsonmultiplelines'] = 'Actions on multiple lines'; + $lang['strselectall'] = 'Select all'; + $lang['strunselectall'] = 'Unselect all'; + $lang['strlocale'] = 'Locale'; + $lang['strcollation'] = 'Collation'; + $lang['strctype'] = 'Character Type'; + $lang['strdefaultvalues'] = 'Default values'; + $lang['strnewvalues'] = 'New values'; + $lang['strstart'] = 'Start'; + $lang['strstop'] = 'Stop'; + $lang['strgotoppage'] = 'back to top'; + $lang['strtheme'] = 'Theme'; + $lang['strcluster'] = 'Cluster'; + + // Admin + $lang['stradminondatabase'] = 'The following administrative tasks apply on the whole %s database.'; + $lang['stradminontable'] = 'The following administrative tasks apply on the table %s.'; + + // User-supplied SQL history + $lang['strhistory'] = 'History'; + $lang['strnohistory'] = 'No history.'; + $lang['strclearhistory'] = 'Clear history'; + $lang['strdelhistory'] = 'Delete from history'; + $lang['strconfdelhistory'] = 'Really remove this request from history?'; + $lang['strconfclearhistory'] = 'Really clear history?'; + $lang['strnodatabaseselected'] = 'Please, select a database.'; + + // Database sizes + $lang['strnoaccess'] = 'No Access'; + $lang['strsize'] = 'Size'; + $lang['strbytes'] = 'bytes'; + $lang['strkb'] = 'kB'; + $lang['strmb'] = 'MB'; + $lang['strgb'] = 'GB'; + $lang['strtb'] = 'TB'; + + // Error handling + $lang['strnoframes'] = 'This application works best with a frames-enabled browser, but can be used without frames by following the link below.'; + $lang['strnoframeslink'] = 'Use without frames'; + $lang['strbadconfig'] = 'Your config.inc.php is out of date. You will need to regenerate it from the new config.inc.php-dist.'; + $lang['strnotloaded'] = 'Your PHP installation does not support PostgreSQL. You need to recompile PHP using the --with-pgsql configure option.'; + $lang['strpostgresqlversionnotsupported'] = 'Version of PostgreSQL not supported. Please upgrade to version %s or later.'; + $lang['strbadschema'] = 'Invalid schema specified.'; + $lang['strbadencoding'] = 'Failed to set client encoding in database.'; + $lang['strsqlerror'] = 'SQL error:'; + $lang['strinstatement'] = 'In statement:'; + $lang['strinvalidparam'] = 'Invalid script parameters.'; + $lang['strnodata'] = 'No rows found.'; + $lang['strnoobjects'] = 'No objects found.'; + $lang['strrownotunique'] = 'No unique identifier for this row.'; + $lang['strnouploads'] = 'File uploads are disabled.'; + $lang['strimporterror'] = 'Import error.'; + $lang['strimporterror-fileformat'] = 'Import error: Failed to automatically determine the file format.'; + $lang['strimporterrorline'] = 'Import error on line %s.'; + $lang['strimporterrorline-badcolumnnum'] = 'Import error on line %s: Line does not possess the correct number of columns.'; + $lang['strimporterror-uploadedfile'] = 'Import error: File could not be uploaded to the server'; + $lang['strcannotdumponwindows'] = 'Dumping of complex table and schema names on Windows is not supported.'; + $lang['strinvalidserverparam'] = 'Attempt to connect with invalid server parameter, possibly someone is trying to hack your system.'; + $lang['strnoserversupplied'] = 'No server supplied!'; + $lang['strbadpgdumppath'] = 'Export error: Failed to execute pg_dump (given path in your conf/config.inc.php : %s). Please, fix this path in your configuration and relog.'; + $lang['strbadpgdumpallpath'] = 'Export error: Failed to execute pg_dumpall (given path in your conf/config.inc.php : %s). Please, fix this path in your configuration and relog.'; + $lang['strconnectionfail'] = 'Can not connect to server.'; + + // Tables + $lang['strtable'] = 'Table'; + $lang['strtables'] = 'Tables'; + $lang['strshowalltables'] = 'Show all tables'; + $lang['strnotables'] = 'No tables found.'; + $lang['strnotable'] = 'No table found.'; + $lang['strcreatetable'] = 'Create table'; + $lang['strcreatetablelike'] = 'Create table like'; + $lang['strcreatetablelikeparent'] = 'Source table'; + $lang['strcreatelikewithdefaults'] = 'INCLUDE DEFAULTS'; + $lang['strcreatelikewithconstraints'] = 'INCLUDE CONSTRAINTS'; + $lang['strcreatelikewithindexes'] = 'INCLUDE INDEXES'; + $lang['strtablename'] = 'Table name'; + $lang['strtableneedsname'] = 'You must give a name for your table.'; + $lang['strtablelikeneedslike'] = 'You must give a table to copy properties from.'; + $lang['strtableneedsfield'] = 'You must specify at least one field.'; + $lang['strtableneedscols'] = 'You must specify a valid number of columns.'; + $lang['strtablecreated'] = 'Table created.'; + $lang['strtablecreatedbad'] = 'Table creation failed.'; + $lang['strconfdroptable'] = 'Are you sure you want to drop the table "%s"?'; + $lang['strtabledropped'] = 'Table dropped.'; + $lang['strtabledroppedbad'] = 'Table drop failed.'; + $lang['strconfemptytable'] = 'Are you sure you want to empty the table "%s"?'; + $lang['strtableemptied'] = 'Table emptied.'; + $lang['strtableemptiedbad'] = 'Table empty failed.'; + $lang['strinsertrow'] = 'Insert row'; + $lang['strrowinserted'] = 'Row inserted.'; + $lang['strrowinsertedbad'] = 'Row insert failed.'; + $lang['strnofkref'] = 'There is no matching value in the foreign key %s.'; + $lang['strrowduplicate'] = 'Row insert failed, attempted to do duplicate insert.'; + $lang['streditrow'] = 'Edit row'; + $lang['strrowupdated'] = 'Row updated.'; + $lang['strrowupdatedbad'] = 'Row update failed.'; + $lang['strdeleterow'] = 'Delete Row'; + $lang['strconfdeleterow'] = 'Are you sure you want to delete this row?'; + $lang['strrowdeleted'] = 'Row deleted.'; + $lang['strrowdeletedbad'] = 'Row deletion failed.'; + $lang['strinsertandrepeat'] = 'Insert & Repeat'; + $lang['strnumcols'] = 'Number of columns'; + $lang['strcolneedsname'] = 'You must specify a name for the column'; + $lang['strselectallfields'] = 'Select all fields'; + $lang['strselectneedscol'] = 'You must show at least one column.'; + $lang['strselectunary'] = 'Unary operators cannot have values.'; + $lang['strcolumnaltered'] = 'Column altered.'; + $lang['strcolumnalteredbad'] = 'Column alteration failed.'; + $lang['strconfdropcolumn'] = 'Are you sure you want to drop column "%s" from table "%s"?'; + $lang['strcolumndropped'] = 'Column dropped.'; + $lang['strcolumndroppedbad'] = 'Column drop failed.'; + $lang['straddcolumn'] = 'Add column'; + $lang['strcolumnadded'] = 'Column added.'; + $lang['strcolumnaddedbad'] = 'Column add failed.'; + $lang['strcascade'] = 'CASCADE'; + $lang['strtablealtered'] = 'Table altered.'; + $lang['strtablealteredbad'] = 'Table alteration failed.'; + $lang['strdataonly'] = 'Data only'; + $lang['strstructureonly'] = 'Structure only'; + $lang['strstructureanddata'] = 'Structure and data'; + $lang['strtabbed'] = 'Tabbed'; + $lang['strauto'] = 'Auto'; + $lang['strconfvacuumtable'] = 'Are you sure you want to vacuum "%s"?'; + $lang['strconfanalyzetable'] = 'Are you sure you want to analyze "%s"?'; + $lang['strconfreindextable'] = 'Are you sure you want to reindex "%s"?'; + $lang['strconfclustertable'] = 'Are you sure you want to cluster "%s"?'; + $lang['strestimatedrowcount'] = 'Estimated row count'; + $lang['strspecifytabletoanalyze'] = 'You must specify at least one table to analyze.'; + $lang['strspecifytabletoempty'] = 'You must specify at least one table to empty.'; + $lang['strspecifytabletodrop'] = 'You must specify at least one table to drop.'; + $lang['strspecifytabletovacuum'] = 'You must specify at least one table to vacuum.'; + $lang['strspecifytabletoreindex'] = 'You must specify at least one table to reindex.'; + $lang['strspecifytabletocluster'] = 'You must specify at least one table to cluster.'; + $lang['strnofieldsforinsert'] = 'You cannot insert a row into a table with no column.'; + + // Columns + $lang['strcolprop'] = 'Column properties'; + $lang['strnotableprovided'] = 'No table provided!'; + + // Users + $lang['struser'] = 'User'; + $lang['strusers'] = 'Users'; + $lang['strusername'] = 'Username'; + $lang['strpassword'] = 'Password'; + $lang['strsuper'] = 'Superuser?'; + $lang['strcreatedb'] = 'Create DB?'; + $lang['strexpires'] = 'Expires'; + $lang['strsessiondefaults'] = 'Session defaults'; + $lang['strnousers'] = 'No users found.'; + $lang['struserupdated'] = 'User updated.'; + $lang['struserupdatedbad'] = 'User update failed.'; + $lang['strshowallusers'] = 'Show all users'; + $lang['strcreateuser'] = 'Create user'; + $lang['struserneedsname'] = 'You must give a name for your user.'; + $lang['strusercreated'] = 'User created.'; + $lang['strusercreatedbad'] = 'Failed to create user.'; + $lang['strconfdropuser'] = 'Are you sure you want to drop the user "%s"?'; + $lang['struserdropped'] = 'User dropped.'; + $lang['struserdroppedbad'] = 'Failed to drop user.'; + $lang['straccount'] = 'Account'; + $lang['strchangepassword'] = 'Change password'; + $lang['strpasswordchanged'] = 'Password changed.'; + $lang['strpasswordchangedbad'] = 'Failed to change password.'; + $lang['strpasswordshort'] = 'Password is too short.'; + $lang['strpasswordconfirm'] = 'Password does not match confirmation.'; + + // Groups + $lang['strgroup'] = 'Group'; + $lang['strgroups'] = 'Groups'; + $lang['strgroupgroups'] = 'Groups in group "%s"'; + $lang['strshowallgroups'] = 'Show all groups'; + $lang['strnogroup'] = 'Group not found.'; + $lang['strnogroups'] = 'No groups found.'; + $lang['strcreategroup'] = 'Create group'; + $lang['strgroupneedsname'] = 'You must give a name for your group.'; + $lang['strgroupcreated'] = 'Group created.'; + $lang['strgroupcreatedbad'] = 'Group creation failed.'; + $lang['strconfdropgroup'] = 'Are you sure you want to drop the group "%s"?'; + $lang['strgroupdropped'] = 'Group dropped.'; + $lang['strgroupdroppedbad'] = 'Group drop failed.'; + $lang['strmembers'] = 'Members'; + $lang['strmemberof'] = 'Member of'; + $lang['stradminmembers'] = 'Admin members'; + $lang['straddmember'] = 'Add member'; + $lang['strmemberadded'] = 'Member added.'; + $lang['strmemberaddedbad'] = 'Member add failed.'; + $lang['strdropmember'] = 'Drop member'; + $lang['strconfdropmember'] = 'Are you sure you want to drop the member "%s" from the group "%s"?'; + $lang['strmemberdropped'] = 'Member dropped.'; + $lang['strmemberdroppedbad'] = 'Member drop failed.'; + + // Roles + $lang['strrole'] = 'Role'; + $lang['strroles'] = 'Roles'; + $lang['strshowallroles'] = 'Show all roles'; + $lang['strnoroles'] = 'No roles found.'; + $lang['strinheritsprivs'] = 'Inherits privileges?'; + $lang['strcreaterole'] = 'Create role'; + $lang['strcancreaterole'] = 'Can create role?'; + $lang['strrolecreated'] = 'Role created.'; + $lang['strrolecreatedbad'] = 'Create role failed.'; + $lang['strrolealtered'] = 'Role altered.'; + $lang['strrolealteredbad'] = 'Role alter failed.'; + $lang['strcanlogin'] = 'Can login?'; + $lang['strconnlimit'] = 'Connection limit'; + $lang['strdroprole'] = 'Drop role'; + $lang['strconfdroprole'] = 'Are you sure you want to drop the role "%s"?'; + $lang['strroledropped'] = 'Role dropped.'; + $lang['strroledroppedbad'] = 'Role drop failed.'; + $lang['strnolimit'] = 'No limit'; + $lang['strnever'] = 'Never'; + $lang['strroleneedsname'] = 'You must give a name for the role.'; + + // Privileges + $lang['strprivilege'] = 'Privilege'; + $lang['strprivileges'] = 'Privileges'; + $lang['strnoprivileges'] = 'This object has default owner privileges.'; + $lang['strgrant'] = 'Grant'; + $lang['strrevoke'] = 'Revoke'; + $lang['strgranted'] = 'Privileges changed.'; + $lang['strgrantfailed'] = 'Failed to change privileges.'; + $lang['strgrantbad'] = 'You must specify at least one user or group and at least one privilege.'; + $lang['strgrantor'] = 'Grantor'; + $lang['strasterisk'] = '*'; + + // Databases + $lang['strdatabase'] = 'Database'; + $lang['strdatabases'] = 'Databases'; + $lang['strshowalldatabases'] = 'Show all databases'; + $lang['strnodatabases'] = 'No databases found.'; + $lang['strcreatedatabase'] = 'Create database'; + $lang['strdatabasename'] = 'Database name'; + $lang['strdatabaseneedsname'] = 'You must give a name for your database.'; + $lang['strdatabasecreated'] = 'Database created.'; + $lang['strdatabasecreatedbad'] = 'Database creation failed.'; + $lang['strconfdropdatabase'] = 'Are you sure you want to drop the database "%s"?'; + $lang['strdatabasedropped'] = 'Database dropped.'; + $lang['strdatabasedroppedbad'] = 'Database drop failed.'; + $lang['strentersql'] = 'Enter the SQL to execute below:'; + $lang['strsqlexecuted'] = 'SQL executed.'; + $lang['strvacuumgood'] = 'Vacuum complete.'; + $lang['strvacuumbad'] = 'Vacuum failed.'; + $lang['stranalyzegood'] = 'Analyze complete.'; + $lang['stranalyzebad'] = 'Analyze failed.'; + $lang['strreindexgood'] = 'Reindex complete.'; + $lang['strreindexbad'] = 'Reindex failed.'; + $lang['strfull'] = 'Full'; + $lang['strfreeze'] = 'Freeze'; + $lang['strforce'] = 'Force'; + $lang['strsignalsent'] = 'Signal sent.'; + $lang['strsignalsentbad'] = 'Sending signal failed.'; + $lang['strallobjects'] = 'All objects'; + $lang['strdatabasealtered'] = 'Database altered.'; + $lang['strdatabasealteredbad'] = 'Database alter failed.'; + $lang['strspecifydatabasetodrop'] = 'You must specify at least one database to drop.'; + $lang['strtemplatedb'] = 'Template'; + $lang['strconfanalyzedatabase'] = 'Are you sure you want to analyze all tables in database "%s"?'; + $lang['strconfvacuumdatabase'] = 'Are you sure you want to vacuum all tables in database "%s"?'; + $lang['strconfreindexdatabase'] = 'Are you sure you want to reindex all tables in database "%s"?'; + $lang['strconfclusterdatabase'] = 'Are you sure you want to cluster all tables in database "%s"?'; + + // Views + $lang['strview'] = 'View'; + $lang['strviews'] = 'Views'; + $lang['strshowallviews'] = 'Show all views'; + $lang['strnoview'] = 'No view found.'; + $lang['strnoviews'] = 'No views found.'; + $lang['strcreateview'] = 'Create view'; + $lang['strviewname'] = 'View name'; + $lang['strviewneedsname'] = 'You must give a name for your view.'; + $lang['strviewneedsdef'] = 'You must give a definition for your view.'; + $lang['strviewneedsfields'] = 'You must give the columns you want selected in your view.'; + $lang['strviewcreated'] = 'View created.'; + $lang['strviewcreatedbad'] = 'View creation failed.'; + $lang['strconfdropview'] = 'Are you sure you want to drop the view "%s"?'; + $lang['strviewdropped'] = 'View dropped.'; + $lang['strviewdroppedbad'] = 'View drop failed.'; + $lang['strviewupdated'] = 'View updated.'; + $lang['strviewupdatedbad'] = 'View update failed.'; + $lang['strviewlink'] = 'Linking keys'; + $lang['strviewconditions'] = 'Additional conditions'; + $lang['strcreateviewwiz'] = 'Create view with wizard'; + $lang['strrenamedupfields'] = 'Rename duplicate fields'; + $lang['strdropdupfields'] = 'Drop duplicate fields'; + $lang['strerrordupfields'] = 'Error on duplicate fields'; + $lang['strviewaltered'] = 'View altered.'; + $lang['strviewalteredbad'] = 'View alteration failed.'; + $lang['strspecifyviewtodrop'] = 'You must specify at least one view to drop.'; + + // Sequences + $lang['strsequence'] = 'Sequence'; + $lang['strsequences'] = 'Sequences'; + $lang['strshowallsequences'] = 'Show all sequences'; + $lang['strnosequence'] = 'No sequence found.'; + $lang['strnosequences'] = 'No sequences found.'; + $lang['strcreatesequence'] = 'Create sequence'; + $lang['strlastvalue'] = 'Last value'; + $lang['strincrementby'] = 'Increment by'; + $lang['strstartvalue'] = 'Start value'; + $lang['strrestartvalue'] = 'Restart value'; + $lang['strmaxvalue'] = 'Max value'; + $lang['strminvalue'] = 'Min value'; + $lang['strcachevalue'] = 'Cache value'; + $lang['strlogcount'] = 'Log count'; + $lang['strcancycle'] = 'Can cycle?'; + $lang['striscalled'] = 'Will increment last value before returning next value (is_called)?'; + $lang['strsequenceneedsname'] = 'You must specify a name for your sequence.'; + $lang['strsequencecreated'] = 'Sequence created.'; + $lang['strsequencecreatedbad'] = 'Sequence creation failed.'; + $lang['strconfdropsequence'] = 'Are you sure you want to drop sequence "%s"?'; + $lang['strsequencedropped'] = 'Sequence dropped.'; + $lang['strsequencedroppedbad'] = 'Sequence drop failed.'; + $lang['strsequencerestart'] = 'Sequence restarted.'; + $lang['strsequencerestartbad'] = 'Sequence restart failed.'; + $lang['strsequencereset'] = 'Sequence reset.'; + $lang['strsequenceresetbad'] = 'Sequence reset failed.'; + $lang['strsequencealtered'] = 'Sequence altered.'; + $lang['strsequencealteredbad'] = 'Sequence alteration failed.'; + $lang['strsetval'] = 'Set value'; + $lang['strsequencesetval'] = 'Sequence value set.'; + $lang['strsequencesetvalbad'] = 'Sequence value set failed.'; + $lang['strnextval'] = 'Increment value'; + $lang['strsequencenextval'] = 'Sequence incremented.'; + $lang['strsequencenextvalbad'] = 'Sequence increment failed.'; + $lang['strspecifysequencetodrop'] = 'You must specify at least one sequence to drop.'; + + // Indexes + $lang['strindex'] = 'Index'; + $lang['strindexes'] = 'Indexes'; + $lang['strindexname'] = 'Index name'; + $lang['strshowallindexes'] = 'Show all indexes'; + $lang['strnoindex'] = 'No index found.'; + $lang['strnoindexes'] = 'No indexes found.'; + $lang['strcreateindex'] = 'Create index'; + $lang['strtabname'] = 'Tab name'; + $lang['strcolumnname'] = 'Column name'; + $lang['strindexneedsname'] = 'You must give a name for your index.'; + $lang['strindexneedscols'] = 'Indexes require a valid number of columns.'; + $lang['strindexcreated'] = 'Index created.'; + $lang['strindexcreatedbad'] = 'Index creation failed.'; + $lang['strconfdropindex'] = 'Are you sure you want to drop the index "%s"?'; + $lang['strindexdropped'] = 'Index dropped.'; + $lang['strindexdroppedbad'] = 'Index drop failed.'; + $lang['strkeyname'] = 'Key name'; + $lang['struniquekey'] = 'Unique key'; + $lang['strprimarykey'] = 'Primary key'; + $lang['strindextype'] = 'Type of index'; + $lang['strtablecolumnlist'] = 'Columns in table'; + $lang['strindexcolumnlist'] = 'Columns in index'; + $lang['strconfcluster'] = 'Are you sure you want to cluster on "%s"?'; + $lang['strclusteredgood'] = 'Cluster complete.'; + $lang['strclusteredbad'] = 'Cluster failed.'; + $lang['strconcurrently'] = 'Concurrently'; + $lang['strnoclusteravailable'] = 'Table not clustered on an index.'; + + // Rules + $lang['strrules'] = 'Rules'; + $lang['strrule'] = 'Rule'; + $lang['strshowallrules'] = 'Show all rules'; + $lang['strnorule'] = 'No rule found.'; + $lang['strnorules'] = 'No rules found.'; + $lang['strcreaterule'] = 'Create rule'; + $lang['strrulename'] = 'Rule name'; + $lang['strruleneedsname'] = 'You must specify a name for your rule.'; + $lang['strrulecreated'] = 'Rule created.'; + $lang['strrulecreatedbad'] = 'Rule creation failed.'; + $lang['strconfdroprule'] = 'Are you sure you want to drop the rule "%s" on "%s"?'; + $lang['strruledropped'] = 'Rule dropped.'; + $lang['strruledroppedbad'] = 'Rule drop failed.'; + + // Constraints + $lang['strconstraint'] = 'Constraint'; + $lang['strconstraints'] = 'Constraints'; + $lang['strshowallconstraints'] = 'Show all constraints'; + $lang['strnoconstraints'] = 'No constraints found.'; + $lang['strcreateconstraint'] = 'Create constraint'; + $lang['strconstraintcreated'] = 'Constraint created.'; + $lang['strconstraintcreatedbad'] = 'Constraint creation failed.'; + $lang['strconfdropconstraint'] = 'Are you sure you want to drop the constraint "%s" on "%s"?'; + $lang['strconstraintdropped'] = 'Constraint dropped.'; + $lang['strconstraintdroppedbad'] = 'Constraint drop failed.'; + $lang['straddcheck'] = 'Add check'; + $lang['strcheckneedsdefinition'] = 'Check constraint needs a definition.'; + $lang['strcheckadded'] = 'Check constraint added.'; + $lang['strcheckaddedbad'] = 'Failed to add check constraint.'; + $lang['straddpk'] = 'Add primary key'; + $lang['strpkneedscols'] = 'Primary key requires at least one column.'; + $lang['strpkadded'] = 'Primary key added.'; + $lang['strpkaddedbad'] = 'Failed to add primary key.'; + $lang['stradduniq'] = 'Add unique key'; + $lang['struniqneedscols'] = 'Unique key requires at least one column.'; + $lang['struniqadded'] = 'Unique key added.'; + $lang['struniqaddedbad'] = 'Failed to add unique key.'; + $lang['straddfk'] = 'Add foreign key'; + $lang['strfkneedscols'] = 'Foreign key requires at least one column.'; + $lang['strfkneedstarget'] = 'Foreign key requires a target table.'; + $lang['strfkadded'] = 'Foreign key added.'; + $lang['strfkaddedbad'] = 'Failed to add foreign key.'; + $lang['strfktarget'] = 'Target table'; + $lang['strfkcolumnlist'] = 'Columns in key'; + $lang['strondelete'] = 'ON DELETE'; + $lang['stronupdate'] = 'ON UPDATE'; + + // Functions + $lang['strfunction'] = 'Function'; + $lang['strfunctions'] = 'Functions'; + $lang['strshowallfunctions'] = 'Show all functions'; + $lang['strnofunction'] = 'No function found.'; + $lang['strnofunctions'] = 'No functions found.'; + $lang['strcreateplfunction'] = 'Create SQL/PL function'; + $lang['strcreateinternalfunction'] = 'Create internal function'; + $lang['strcreatecfunction'] = 'Create C function'; + $lang['strfunctionname'] = 'Function name'; + $lang['strreturns'] = 'Returns'; + $lang['strproglanguage'] = 'Programming language'; + $lang['strfunctionneedsname'] = 'You must give a name for your function.'; + $lang['strfunctionneedsdef'] = 'You must give a definition for your function.'; + $lang['strfunctioncreated'] = 'Function created.'; + $lang['strfunctioncreatedbad'] = 'Function creation failed.'; + $lang['strconfdropfunction'] = 'Are you sure you want to drop the function "%s"?'; + $lang['strfunctiondropped'] = 'Function dropped.'; + $lang['strfunctiondroppedbad'] = 'Function drop failed.'; + $lang['strfunctionupdated'] = 'Function updated.'; + $lang['strfunctionupdatedbad'] = 'Function update failed.'; + $lang['strobjectfile'] = 'Object File'; + $lang['strlinksymbol'] = 'Link Symbol'; + $lang['strarguments'] = 'Arguments'; + $lang['strargmode'] = 'Mode'; + $lang['strargtype'] = 'Type'; + $lang['strargadd'] = 'Add another argument'; + $lang['strargremove'] = 'Remove this argument'; + $lang['strargnoargs'] = 'This function will not take any arguments.'; + $lang['strargenableargs'] = 'Enable arguments being passed to this function.'; + $lang['strargnorowabove'] = 'There needs to be a row above this row.'; + $lang['strargnorowbelow'] = 'There needs to be a row below this row.'; + $lang['strargraise'] = 'Move up.'; + $lang['strarglower'] = 'Move down.'; + $lang['strargremoveconfirm'] = 'Are you sure you want to remove this argument? This CANNOT be undone.'; + $lang['strfunctioncosting'] = 'Function Costing'; + $lang['strresultrows'] = 'Result Rows'; + $lang['strexecutioncost'] = 'Execution Cost'; + $lang['strspecifyfunctiontodrop'] = 'You must specify at least one function to drop.'; + + // Triggers + $lang['strtrigger'] = 'Trigger'; + $lang['strtriggers'] = 'Triggers'; + $lang['strshowalltriggers'] = 'Show all triggers'; + $lang['strnotrigger'] = 'No trigger found.'; + $lang['strnotriggers'] = 'No triggers found.'; + $lang['strcreatetrigger'] = 'Create trigger'; + $lang['strtriggerneedsname'] = 'You must specify a name for your trigger.'; + $lang['strtriggerneedsfunc'] = 'You must specify a function for your trigger.'; + $lang['strtriggercreated'] = 'Trigger created.'; + $lang['strtriggercreatedbad'] = 'Trigger creation failed.'; + $lang['strconfdroptrigger'] = 'Are you sure you want to drop the trigger "%s" on "%s"?'; + $lang['strconfenabletrigger'] = 'Are you sure you want to enable the trigger "%s" on "%s"?'; + $lang['strconfdisabletrigger'] = 'Are you sure you want to disable the trigger "%s" on "%s"?'; + $lang['strtriggerdropped'] = 'Trigger dropped.'; + $lang['strtriggerdroppedbad'] = 'Trigger drop failed.'; + $lang['strtriggerenabled'] = 'Trigger enabled.'; + $lang['strtriggerenabledbad'] = 'Trigger enable failed.'; + $lang['strtriggerdisabled'] = 'Trigger disabled.'; + $lang['strtriggerdisabledbad'] = 'Trigger disable failed.'; + $lang['strtriggeraltered'] = 'Trigger altered.'; + $lang['strtriggeralteredbad'] = 'Trigger alteration failed.'; + $lang['strforeach'] = 'For each'; + + // Types + $lang['strtype'] = 'Type'; + $lang['strtypes'] = 'Types'; + $lang['strshowalltypes'] = 'Show all types'; + $lang['strnotype'] = 'No type found.'; + $lang['strnotypes'] = 'No types found.'; + $lang['strcreatetype'] = 'Create type'; + $lang['strcreatecomptype'] = 'Create composite type'; + $lang['strcreateenumtype'] = 'Create enum type'; + $lang['strtypeneedsfield'] = 'You must specify at least one field.'; + $lang['strtypeneedsvalue'] = 'You must specify at least one value.'; + $lang['strtypeneedscols'] = 'You must specify a valid number of fields.'; + $lang['strtypeneedsvals'] = 'You must specify a valid number of values.'; + $lang['strinputfn'] = 'Input function'; + $lang['stroutputfn'] = 'Output function'; + $lang['strpassbyval'] = 'Passed by val?'; + $lang['stralignment'] = 'Alignment'; + $lang['strelement'] = 'Element'; + $lang['strdelimiter'] = 'Delimiter'; + $lang['strstorage'] = 'Storage'; + $lang['strfield'] = 'Field'; + $lang['strnumfields'] = 'Num. of fields'; + $lang['strnumvalues'] = 'Num. of values'; + $lang['strtypeneedsname'] = 'You must give a name for your type.'; + $lang['strtypeneedslen'] = 'You must give a length for your type.'; + $lang['strtypecreated'] = 'Type created.'; + $lang['strtypecreatedbad'] = 'Type creation failed.'; + $lang['strconfdroptype'] = 'Are you sure you want to drop the type "%s"?'; + $lang['strtypedropped'] = 'Type dropped.'; + $lang['strtypedroppedbad'] = 'Type drop failed.'; + $lang['strflavor'] = 'Flavor'; + $lang['strbasetype'] = 'Base'; + $lang['strcompositetype'] = 'Composite'; + $lang['strpseudotype'] = 'Pseudo'; + $lang['strenum'] = 'Enum'; + $lang['strenumvalues'] = 'Enum values'; + + // Schemas + $lang['strschema'] = 'Schema'; + $lang['strschemas'] = 'Schemas'; + $lang['strshowallschemas'] = 'Show all schemas'; + $lang['strnoschema'] = 'No schema found.'; + $lang['strnoschemas'] = 'No schemas found.'; + $lang['strcreateschema'] = 'Create schema'; + $lang['strschemaname'] = 'Schema name'; + $lang['strschemaneedsname'] = 'You must give a name for your schema.'; + $lang['strschemacreated'] = 'Schema created.'; + $lang['strschemacreatedbad'] = 'Schema creation failed.'; + $lang['strconfdropschema'] = 'Are you sure you want to drop the schema "%s"?'; + $lang['strschemadropped'] = 'Schema dropped.'; + $lang['strschemadroppedbad'] = 'Schema drop failed.'; + $lang['strschemaaltered'] = 'Schema altered.'; + $lang['strschemaalteredbad'] = 'Schema alteration failed.'; + $lang['strsearchpath'] = 'Schema search path'; + $lang['strspecifyschematodrop'] = 'You must specify at least one schema to drop.'; + + // Reports + + // Domains + $lang['strdomain'] = 'Domain'; + $lang['strdomains'] = 'Domains'; + $lang['strshowalldomains'] = 'Show all domains'; + $lang['strnodomains'] = 'No domains found.'; + $lang['strcreatedomain'] = 'Create domain'; + $lang['strdomaindropped'] = 'Domain dropped.'; + $lang['strdomaindroppedbad'] = 'Domain drop failed.'; + $lang['strconfdropdomain'] = 'Are you sure you want to drop the domain "%s"?'; + $lang['strdomainneedsname'] = 'You must give a name for your domain.'; + $lang['strdomaincreated'] = 'Domain created.'; + $lang['strdomaincreatedbad'] = 'Domain creation failed.'; + $lang['strdomainaltered'] = 'Domain altered.'; + $lang['strdomainalteredbad'] = 'Domain alteration failed.'; + + // Operators + $lang['stroperator'] = 'Operator'; + $lang['stroperators'] = 'Operators'; + $lang['strshowalloperators'] = 'Show all operators'; + $lang['strnooperator'] = 'No operator found.'; + $lang['strnooperators'] = 'No operators found.'; + $lang['strcreateoperator'] = 'Create operator'; + $lang['strleftarg'] = 'Left Arg Type'; + $lang['strrightarg'] = 'Right Arg Type'; + $lang['strcommutator'] = 'Commutator'; + $lang['strnegator'] = 'Negator'; + $lang['strrestrict'] = 'Restrict'; + $lang['strjoin'] = 'Join'; + $lang['strhashes'] = 'Hashes'; + $lang['strmerges'] = 'Merges'; + $lang['strleftsort'] = 'Left sort'; + $lang['strrightsort'] = 'Right sort'; + $lang['strlessthan'] = 'Less than'; + $lang['strgreaterthan'] = 'Greater than'; + $lang['stroperatorneedsname'] = 'You must give a name for your operator.'; + $lang['stroperatorcreated'] = 'Operator created.'; + $lang['stroperatorcreatedbad'] = 'Operator creation failed.'; + $lang['strconfdropoperator'] = 'Are you sure you want to drop the operator "%s"?'; + $lang['stroperatordropped'] = 'Operator dropped.'; + $lang['stroperatordroppedbad'] = 'Operator drop failed.'; + + // Casts + $lang['strcasts'] = 'Casts'; + $lang['strnocasts'] = 'No casts found.'; + $lang['strsourcetype'] = 'Source type'; + $lang['strtargettype'] = 'Target type'; + $lang['strimplicit'] = 'Implicit'; + $lang['strinassignment'] = 'In assignment'; + $lang['strbinarycompat'] = '(Binary compatible)'; + + // Conversions + $lang['strconversions'] = 'Conversions'; + $lang['strnoconversions'] = 'No conversions found.'; + $lang['strsourceencoding'] = 'Source encoding'; + $lang['strtargetencoding'] = 'Target encoding'; + + // Languages + $lang['strlanguages'] = 'Languages'; + $lang['strnolanguages'] = 'No languages found.'; + $lang['strtrusted'] = 'Trusted'; + + // Info + $lang['strnoinfo'] = 'No information available.'; + $lang['strreferringtables'] = 'Referring tables'; + $lang['strparenttables'] = 'Parent tables'; + $lang['strchildtables'] = 'Child tables'; + + // Aggregates + $lang['straggregate'] = 'Aggregate'; + $lang['straggregates'] = 'Aggregates'; + $lang['strnoaggregates'] = 'No aggregates found.'; + $lang['stralltypes'] = '(All types)'; + $lang['strcreateaggregate'] = 'Create aggregate'; + $lang['straggrbasetype'] = 'Input data type'; + $lang['straggrsfunc'] = 'State transition function'; + $lang['straggrstype'] = 'Data type for state value'; + $lang['straggrffunc'] = 'Final function'; + $lang['straggrinitcond'] = 'Initial condition'; + $lang['straggrsortop'] = 'Sort operator'; + $lang['strconfdropaggregate'] = 'Are you sure you want to drop the aggregate "%s"?'; + $lang['straggregatedropped'] = 'Aggregate dropped.'; + $lang['straggregatedroppedbad'] = 'Aggregate drop failed.'; + $lang['straggraltered'] = 'Aggregate altered.'; + $lang['straggralteredbad'] = 'Aggregate alteration failed.'; + $lang['straggrneedsname'] = 'You must specify a name for the aggregate.'; + $lang['straggrneedsbasetype'] = 'You must specify the input data type for the aggregate.'; + $lang['straggrneedssfunc'] = 'You must specify the name of the state transition function for the aggregate.'; + $lang['straggrneedsstype'] = 'You must specify the data type for the aggregate\'s state value.'; + $lang['straggrcreated'] = 'Aggregate created.'; + $lang['straggrcreatedbad'] = 'Aggregate creation failed.'; + $lang['straggrshowall'] = 'Show all aggregates'; + + // Operator Classes + $lang['stropclasses'] = 'Op Classes'; + $lang['strnoopclasses'] = 'No operator classes found.'; + $lang['straccessmethod'] = 'Access method'; + + // Stats and performance + $lang['strrowperf'] = 'Row Performance'; + $lang['strioperf'] = 'I/O Performance'; + $lang['stridxrowperf'] = 'Index Row Performance'; + $lang['stridxioperf'] = 'Index I/O Performance'; + $lang['strpercent'] = '%'; + $lang['strsequential'] = 'Sequential'; + $lang['strscan'] = 'Scan'; + $lang['strread'] = 'Read'; + $lang['strfetch'] = 'Fetch'; + $lang['strheap'] = 'Heap'; + $lang['strtoast'] = 'TOAST'; + $lang['strtoastindex'] = 'TOAST Index'; + $lang['strcache'] = 'Cache'; + $lang['strdisk'] = 'Disk'; + $lang['strrows2'] = 'Rows'; + + // Tablespaces + $lang['strtablespace'] = 'Tablespace'; + $lang['strtablespaces'] = 'Tablespaces'; + $lang['strshowalltablespaces'] = 'Show all tablespaces'; + $lang['strnotablespaces'] = 'No tablespaces found.'; + $lang['strcreatetablespace'] = 'Create tablespace'; + $lang['strlocation'] = 'Location'; + $lang['strtablespaceneedsname'] = 'You must give a name for your tablespace.'; + $lang['strtablespaceneedsloc'] = 'You must give a directory in which to create the tablespace.'; + $lang['strtablespacecreated'] = 'Tablespace created.'; + $lang['strtablespacecreatedbad'] = 'Tablespace creation failed.'; + $lang['strconfdroptablespace'] = 'Are you sure you want to drop the tablespace "%s"?'; + $lang['strtablespacedropped'] = 'Tablespace dropped.'; + $lang['strtablespacedroppedbad'] = 'Tablespace drop failed.'; + $lang['strtablespacealtered'] = 'Tablespace altered.'; + $lang['strtablespacealteredbad'] = 'Tablespace alteration failed.'; + + // Miscellaneous + $lang['strtopbar'] = '%s running on %s:%s -- You are logged in as user "%s"'; + $lang['strtimefmt'] = 'jS M, Y g:iA'; + $lang['strhelp'] = 'Help'; + $lang['strhelpicon'] = '?'; + $lang['strhelppagebrowser'] = 'Help page browser'; + $lang['strselecthelppage'] = 'Select a help page'; + $lang['strinvalidhelppage'] = 'Invalid help page.'; + $lang['strlogintitle'] = 'Login to %s'; + $lang['strlogoutmsg'] = 'Logged out of %s'; + $lang['strloading'] = 'Loading...'; + $lang['strerrorloading'] = 'Error Loading'; + $lang['strclicktoreload'] = 'Click to reload'; + + // Autovacuum + $lang['strautovacuum'] = 'Autovacuum'; + $lang['strturnedon'] = 'Turned On'; + $lang['strturnedoff'] = 'Turned Off'; + $lang['strenabled'] = 'Enabled'; + $lang['strnovacuumconf'] = 'No autovacuum configuration found.'; + $lang['strvacuumbasethreshold'] = 'Vacuum Base Threshold'; + $lang['strvacuumscalefactor'] = 'Vacuum Scale Factor'; + $lang['stranalybasethreshold'] = 'Analyze Base Threshold'; + $lang['stranalyzescalefactor'] = 'Analyze Scale Factor'; + $lang['strvacuumcostdelay'] = 'Vacuum Cost Delay'; + $lang['strvacuumcostlimit'] = 'Vacuum Cost Limit'; + $lang['strvacuumpertable'] = 'Autovacuum setup per table'; + $lang['straddvacuumtable'] = 'Add autovacuum setup for a table'; + $lang['streditvacuumtable'] = 'Edit autovacuum setup for table %s'; + $lang['strdelvacuumtable'] = 'Delete autovacuum setup for table %s ?'; + $lang['strvacuumtablereset'] = 'Autovacuum setup for table %s reset to default values'; + $lang['strdelvacuumtablefail'] = 'Fail to remove the autovacuum setup for table %s'; + $lang['strsetvacuumtablesaved'] = 'Autovacuum setup for table %s saved.'; + $lang['strsetvacuumtablefail'] = 'Autovacuum setup for table %s failed.'; + $lang['strspecifydelvacuumtable'] = 'You must specify the table you want remove the autovacuum parameters from.'; + $lang['strspecifyeditvacuumtable'] = 'You must specify the table you want to edit the autovacuum parameters from.'; + $lang['strnotdefaultinred'] = 'Not default values are in red.'; + + // Table-level Locks + $lang['strlocks'] = 'Locks'; + $lang['strtransaction'] = 'Transaction ID'; + $lang['strvirtualtransaction'] = 'Virtual Transaction ID'; + $lang['strprocessid'] = 'Process ID'; + $lang['strmode'] = 'Lock mode'; + $lang['strislockheld'] = 'Is lock held?'; + + // Prepared transactions + $lang['strpreparedxacts'] = 'Prepared transactions'; + $lang['strxactid'] = 'Transaction ID'; + $lang['strgid'] = 'Global ID'; + + // Fulltext search + $lang['strfulltext'] = 'Full Text Search'; + $lang['strftsconfig'] = 'FTS configuration'; + $lang['strftsconfigs'] = 'Configurations'; + $lang['strftscreateconfig'] = 'Create FTS configuration'; + $lang['strftscreatedict'] = 'Create dictionary'; + $lang['strftscreatedicttemplate'] = 'Create dictionary template'; + $lang['strftscreateparser'] = 'Create parser'; + $lang['strftsnoconfigs'] = 'No FTS configuration found.'; + $lang['strftsconfigdropped'] = 'FTS configuration dropped.'; + $lang['strftsconfigdroppedbad'] = 'FTS configuration drop failed.'; + $lang['strconfdropftsconfig'] = 'Are you sure you want to drop the FTS configuration "%s"?'; + $lang['strconfdropftsdict'] = 'Are you sure you want to drop the FTS dictionary "%s"?'; + $lang['strconfdropftsmapping'] = 'Are you sure you want to drop mapping "%s" of FTS configuration "%s"?'; + $lang['strftstemplate'] = 'Template'; + $lang['strftsparser'] = 'Parser'; + $lang['strftsconfigneedsname'] = 'You must give a name for your FTS configuration.'; + $lang['strftsconfigcreated'] = 'FTS configuration created.'; + $lang['strftsconfigcreatedbad'] = 'FTS configuration creation failed.'; + $lang['strftsmapping'] = 'Mapping'; + $lang['strftsdicts'] = 'Dictionaries'; + $lang['strftsdict'] = 'Dictionary'; + $lang['strftsemptymap'] = 'Empty FTS configuration map.'; + $lang['strftsconfigaltered'] = 'FTS configuration altered.'; + $lang['strftsconfigalteredbad'] = 'FTS configuration alter failed.'; + $lang['strftsconfigmap'] = 'FTS configuration map'; + $lang['strftsparsers'] = 'FTS parsers'; + $lang['strftsnoparsers'] = 'No FTS parsers available.'; + $lang['strftsnodicts'] = 'No FTS dictionaries available.'; + $lang['strftsdictcreated'] = 'FTS dictionary created.'; + $lang['strftsdictcreatedbad'] = 'FTS dictionary creation failed.'; + $lang['strftslexize'] = 'Lexize'; + $lang['strftsinit'] = 'Init'; + $lang['strftsoptionsvalues'] = 'Options and values'; + $lang['strftsdictneedsname'] = 'You must give a name for your FTS dictionary.'; + $lang['strftsdictdropped'] = 'FTS dictionary dropped.'; + $lang['strftsdictdroppedbad'] = 'FTS dictionary drop failed.'; + $lang['strftsdictaltered'] = 'FTS dictionary altered.'; + $lang['strftsdictalteredbad'] = 'FTS dictionary alter failed.'; + $lang['strftsaddmapping'] = 'Add new mapping'; + $lang['strftsspecifymappingtodrop'] = 'You must specify at least one mapping to drop.'; + $lang['strftsspecifyconfigtoalter'] = 'You must specify a FTS configuration to alter'; + $lang['strftsmappingdropped'] = 'FTS mapping dropped.'; + $lang['strftsmappingdroppedbad'] = 'FTS mapping drop failed.'; + $lang['strftsnodictionaries'] = 'No dictionaries found.'; + $lang['strftsmappingaltered'] = 'FTS mapping altered.'; + $lang['strftsmappingalteredbad'] = 'FTS mapping alter failed.'; + $lang['strftsmappingadded'] = 'FTS mapping added.'; + $lang['strftsmappingaddedbad'] = 'FTS mapping add failed.'; + $lang['strftstabconfigs'] = 'Configurations'; + $lang['strftstabdicts'] = 'Dictionaries'; + $lang['strftstabparsers'] = 'Parsers'; + $lang['strftscantparsercopy'] = 'Can\'t specify both parser and template during text search configuration creation.'; + + //Plugins + $lang['strpluginnotfound'] = 'Error: plugin \'%s\' not found. Check if this plugin exists in the plugins/ directory, or if this plugins has a plugin.php file. Plugin\'s names are case sensitive'; + $lang['stractionnotfound'] = 'Error: action \'%s\' not found in the \'%s\' plugin, or it was not specified as an action.'; + $lang['strhooknotfound'] = 'Error: hook \'%s\' is not avaliable.'; +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/french.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/french.php new file mode 100644 index 00000000..09ff57ad --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/french.php @@ -0,0 +1,899 @@ +>'; + $lang['strfailed'] = 'Γ‰chec'; + $lang['strcreate'] = 'CrΓ©er'; + $lang['strcreated'] = 'Créé'; + $lang['strcomment'] = 'Commentaire'; + $lang['strlength'] = 'Longueur'; + $lang['strdefault'] = 'DΓ©faut'; + $lang['stralter'] = 'Modifier'; + $lang['strok'] = 'OK'; + $lang['strcancel'] = 'Annuler'; + $lang['strkill'] = 'Tuer'; + $lang['strac'] = 'Activer la complΓ©tion automatique'; + $lang['strsave'] = 'Sauvegarder'; + $lang['strreset'] = 'RΓ©initialiser'; + $lang['strrestart'] = 'RedΓ©marrer'; + $lang['strinsert'] = 'InsΓ©rer'; + $lang['strselect'] = 'SΓ©lectionner'; + $lang['strdelete'] = 'Effacer'; + $lang['strupdate'] = 'Modifier'; + $lang['strreferences'] = 'RΓ©fΓ©rences'; + $lang['stryes'] = 'Oui'; + $lang['strno'] = 'Non'; + $lang['strtrue'] = 'TRUE'; + $lang['strfalse'] = 'FALSE'; + $lang['stredit'] = 'Γ‰diter'; + $lang['strcolumn'] = 'Colonne'; + $lang['strcolumns'] = 'Colonnes'; + $lang['strrows'] = 'ligne(s)'; + $lang['strrowsaff'] = 'ligne(s) affectΓ©e(s).'; + $lang['strobjects'] = 'objet(s)'; + $lang['strback'] = 'Retour'; + $lang['strqueryresults'] = 'RΓ©sultats de la requΓͺte'; + $lang['strshow'] = 'Voir'; + $lang['strempty'] = 'Vider'; + $lang['strlanguage'] = 'Langage'; + $lang['strencoding'] = 'Codage'; + $lang['strvalue'] = 'Valeur'; + $lang['strunique'] = 'Unique'; + $lang['strprimary'] = 'Primaire'; + $lang['strexport'] = 'Exporter'; + $lang['strimport'] = 'Importer'; + $lang['strallowednulls'] = 'Autoriser les caractΓ¨res NULL'; + $lang['strbackslashn'] = '\N'; + $lang['stremptystring'] = 'ChaΓne/champ vide'; + $lang['strsql'] = 'SQL'; + $lang['stradmin'] = 'Admin'; + $lang['strvacuum'] = 'Vacuum'; + $lang['stranalyze'] = 'Analyze'; + $lang['strclusterindex'] = 'Cluster'; + $lang['strclustered'] = 'En Cluster ?'; + $lang['strreindex'] = 'Reindex'; + $lang['strexecute'] = 'Lancer'; + $lang['stradd'] = 'Ajouter'; + $lang['strevent'] = 'Γ‰vΓ©nement'; + $lang['strwhere'] = 'OΓΉ'; + $lang['strinstead'] = 'Faire Γ  la place'; + $lang['strwhen'] = 'Quand'; + $lang['strformat'] = 'Format'; + $lang['strdata'] = 'DonnΓ©e'; + $lang['strconfirm'] = 'Confirmer'; + $lang['strexpression'] = 'Expression'; + $lang['strellipsis'] = '...'; + $lang['strseparator'] = ' :'; + $lang['strexpand'] = 'Γ‰tendre'; + $lang['strcollapse'] = 'RΓ©duire'; + $lang['strfind'] = 'Rechercher'; + $lang['stroptions'] = 'Options'; + $lang['strrefresh'] = 'Rafraichir'; + $lang['strdownload'] = 'TΓ©lΓ©charger'; + $lang['strdownloadgzipped'] = 'TΓ©lΓ©charger avec compression gzip'; + $lang['strinfo'] = 'Info'; + $lang['stroids'] = 'OID'; + $lang['stradvanced'] = 'AvancΓ©'; + $lang['strvariables'] = 'Variables'; + $lang['strprocess'] = 'Processus'; + $lang['strprocesses'] = 'Processus'; + $lang['strsetting'] = 'ParamΓ©trage'; + $lang['streditsql'] = 'Γ‰diter SQL'; + $lang['strruntime'] = 'Temps d\'exΓ©cution total : %s ms'; + $lang['strpaginate'] = 'Paginer les rΓ©sultats'; + $lang['struploadscript'] = 'ou importer un script SQL :'; + $lang['strstarttime'] = 'Heure de dΓ©but'; + $lang['strfile'] = 'Fichier'; + $lang['strfileimported'] = 'Fichier importΓ©.'; + $lang['strtrycred'] = 'Utilisez ces identifiants pour tous les serveurs'; + $lang['strconfdropcred'] = 'For security reason, disconnecting will destroy your shared login information. Are you sure you want to disconnect ?'; + $lang['strconfdropcred'] = 'Par mesure de sΓ©curitΓ©, la dΓ©connexion supprimera le partage de vos identifiants pour tous les serveurs. Êtes-vous certain de vouloir vous dΓ©connecter ?'; + $lang['stractionsonmultiplelines'] = 'Actions sur plusieurs lignes'; + $lang['strselectall'] = 'SΓ©lectionner tout'; + $lang['strunselectall'] = 'DesΓ©lectionner tout'; + $lang['strlocale'] = 'Locale'; + $lang['strcollation'] = 'Tri'; + $lang['strctype'] = 'Type de cartactΓ¨re'; + $lang['strdefaultvalues'] = 'Valeurs par dΓ©faut'; + $lang['strnewvalues'] = 'Nouvelles valeurs'; + $lang['strstart'] = 'DΓ©marrer'; + $lang['strstop'] = 'ArrΓͺter'; + $lang['strgotoppage'] = 'Haut de la page'; + $lang['strtheme'] = 'ThΓ¨me'; + + // Admin + $lang['stradminondatabase'] = 'Les actions d\'administration suivantes s\'appliquent Γ  l\'ensemble de la base de donnΓ©e %s.'; + $lang['stradminontable'] = 'Les actions d\'administration suivantes s\'appliquent Γ  la table %s.'; + + // User-supplied SQL history + $lang['strhistory'] = 'Historique'; + $lang['strnohistory'] = 'Pas d\'historique.'; + $lang['strclearhistory'] = 'Γ‰ffacer l\'historique'; + $lang['strdelhistory'] = 'Supprimer de l\'historique'; + $lang['strconfdelhistory'] = 'Voulez-vous vraiment supprimer cette requΓͺte de l\'historique ?'; + $lang['strconfclearhistory'] = 'Voulez-vous vraiment Γ©ffacer l\'historique ?'; + $lang['strnodatabaseselected'] = 'Veuillez sΓ©lectionner une base de donnΓ©es.'; + + // Database Sizes + $lang['strnoaccess'] = 'Pas d\'AccΓ¨s'; + $lang['strsize'] = 'Taille'; + $lang['strbytes'] = 'octets'; + $lang['strkb'] = ' Ko'; + $lang['strmb'] = ' Mo'; + $lang['strgb'] = ' Go'; + $lang['strtb'] = ' To'; + + // Error handling + $lang['strnoframes'] = 'Cette application fonctionne mieux avec un navigateur pouvant afficher des frames mais peut Γͺtre utilisΓ©e sans frames en suivant les liens ci-dessous.'; + $lang['strnoframeslink'] = 'Utiliser sans frames'; + $lang['strbadconfig'] = 'Le fichier de configuration config.inc.php est obsolΓ¨te. Vous avez besoin de le regΓ©nΓ©rer Γ  partir de config.inc.php-dist.'; + $lang['strnotloaded'] = 'Vous n\'avez pas compilΓ© correctement le support de la base de donnΓ©es dans votre installation de PHP.'; + $lang['strpostgresqlversionnotsupported'] = 'Cette version de PostgreSQL n\'est pas supportΓ©e. Merci de mettre Γ  jour PHP Γ  la version %s ou ultΓ©rieure.'; + $lang['strbadschema'] = 'SchΓ©ma spΓ©cifiΓ© invalide.'; + $lang['strbadencoding'] = 'Impossible de spΓ©cifier l\'encodage de la base de donnΓ©es.'; + $lang['strsqlerror'] = 'Erreur SQL :'; + $lang['strinstatement'] = 'Dans l\'instruction :'; + $lang['strinvalidparam'] = 'ParamΓ¨tres de script invalides.'; + $lang['strnodata'] = 'Pas de rΓ©sultats.'; + $lang['strnoobjects'] = 'Aucun objet trouvΓ©.'; + $lang['strrownotunique'] = 'Pas d\'identifiant unique pour cette ligne.'; + $lang['strnouploads'] = 'Importation de fichiers dΓ©sactivΓ©e.'; + $lang['strimporterror'] = 'Erreur d\'importation.'; + $lang['strimporterror-fileformat'] = 'Erreur d\'importation : Γ©chec lors de la dΓ©termination automatique du format de fichier.'; + $lang['strimporterrorline'] = 'Erreur d\'importation Γ  la ligne %s.'; + $lang['strimporterrorline-badcolumnnum'] = 'Erreur d\'importation sur la ligne %s : la ligne ne possΓ¨de pas le bon nombre de colonnes.'; + $lang['strimporterror-uploadedfile'] = 'Erreur d\'importation : le fichier n\'a pas pΓ» Γͺtre rΓ©cupΓ©rΓ© sur le serveur.'; + $lang['strcannotdumponwindows'] = 'La sauvegarde de table complexe et des noms de schΓ©mas n\'est pas supportΓ© sur Windows.'; + $lang['strinvalidserverparam'] = 'Tentative de connexion avec un serveur invalide, il est possible que quelqu\'un essai de pirater votre systΓ¨me.'; + $lang['strnoserversupplied'] = 'Aucun serveur fournis !'; + $lang['strbadpgdumppath'] = 'Erreur d\'export : n\'a pu exΓ©cuter pg_dump (chemin indiquΓ© dans votre conf/config.inc.php : %s). Merci de corriger le chemin dans votre configuration et de vous reconnecter.'; + $lang['strbadpgdumpallpath'] = 'Erreur d\'export : n\'a pu exΓ©cuter pg_dumpall (chemin indiquΓ© dans votre conf/config.inc.php : %s). Merci de corriger le chemin dans votre configuration et de vous reconnecter.'; + $lang['strconnectionfail'] = 'Connexion au serveur Γ©chouΓ©e.'; + + // Tables + $lang['strtable'] = 'Table'; + $lang['strtables'] = 'Tables'; + $lang['strshowalltables'] = 'Voir toutes les tables'; + $lang['strnotables'] = 'Aucune table trouvΓ©e.'; + $lang['strnotable'] = 'Aucune table trouvΓ©e.'; + $lang['strcreatetable'] = 'CrΓ©er une table'; + $lang['strcreatetablelike'] = 'CrΓ©er une table d\'aprΓ¨s une table existante'; + $lang['strcreatetablelikeparent'] = 'Table modΓ¨le'; + $lang['strcreatelikewithdefaults'] = 'inclure les valeurs par dΓ©faut.'; + $lang['strcreatelikewithconstraints'] = 'inclure les contraintes.'; + $lang['strcreatelikewithindexes'] = 'inclure les indexes.'; + $lang['strtablename'] = 'Nom de la table'; + $lang['strtableneedsname'] = 'Vous devez donner un nom pour votre table.'; + $lang['strtablelikeneedslike'] = 'Vous devez prΓ©ciser une table modΓ¨le.'; + $lang['strtableneedsfield'] = 'Vous devez spΓ©cifier au moins un champ.'; + $lang['strtableneedscols'] = 'Vous devez indiquer un nombre valide de colonnes.'; + $lang['strtablecreated'] = 'Table créée.'; + $lang['strtablecreatedbad'] = 'Γ‰chec de la crΓ©ation de table.'; + $lang['strconfdroptable'] = 'Êtes-vous sur de vouloir supprimer la table Β« %s Β» ?'; + $lang['strtabledropped'] = 'Table supprimΓ©e.'; + $lang['strtabledroppedbad'] = 'Γ‰chec lors de la suppression de table.'; + $lang['strconfemptytable'] = 'Êtes-vous sΓ»r de vouloir vider la table Β« %s Β» ?'; + $lang['strtableemptied'] = 'Table vide.'; + $lang['strtableemptiedbad'] = 'Γ‰chec du vidage de la table.'; + $lang['strinsertrow'] = 'InsΓ©rer un enregistrement.'; + $lang['strrowinserted'] = 'Enregistrement insΓ©rΓ©.'; + $lang['strrowinsertedbad'] = 'Γ‰chec lors de l\'insertion d\'un enregistrement.'; + $lang['strnofkref'] = 'Aucune valeur correspondate pour la clΓ© Γ©trangΓ¨re %s.'; + $lang['strrowduplicate'] = 'Γ‰chec lors de l\'insertion d\'un enregistrement, a tentΓ© de faire une insertion dupliquΓ©e.'; + $lang['streditrow'] = 'Γ‰diter l\'enregistrement.'; + $lang['strrowupdated'] = 'Enregistrement mis Γ  jour.'; + $lang['strrowupdatedbad'] = 'Γ‰chec de mise Γ  jour de l\'enregistrement.'; + $lang['strdeleterow'] = 'Effacer l\'enregistrement'; + $lang['strconfdeleterow'] = 'Êtes-vous sΓ»r de vouloir supprimer cet enregistrement ?'; + $lang['strrowdeleted'] = 'Enregistrement supprimΓ©.'; + $lang['strrowdeletedbad'] = 'Γ‰chec lors de la suppression de l\'enregistrement.'; + $lang['strinsertandrepeat'] = 'InsΓ©rer et rΓ©pΓ©ter'; + $lang['strnumcols'] = 'Nombre de colonnes'; + $lang['strcolneedsname'] = 'Vous devez spΓ©cifier un nom pour la colonne'; + $lang['strselectallfields'] = 'SΓ©lectionner tous les champs'; + $lang['strselectneedscol'] = 'Vous devez sΓ©lectionner au moins une colonne.'; + $lang['strselectunary'] = 'Les opΓ©rateurs unaires ne peuvent avoir de valeurs.'; + $lang['strcolumnaltered'] = 'Colonne modifiΓ©e.'; + $lang['strcolumnalteredbad'] = 'Γ‰chec lors de la modification de la colonne.'; + $lang['strconfdropcolumn'] = 'Êtes-vous sΓ»r de vouloir supprimer la colonne Β« %s Β» de la table Β« %s Β» ?'; + $lang['strcolumndropped'] = 'Colonne supprimΓ©e.'; + $lang['strcolumndroppedbad'] = 'Γ‰chec lors de la suppression de la colonne.'; + $lang['straddcolumn'] = 'Ajouter une colonne'; + $lang['strcolumnadded'] = 'Colonne ajoutΓ©e.'; + $lang['strcolumnaddedbad'] = 'Γ‰chec lors de l\'ajout de la colonne.'; + $lang['strcascade'] = 'CASCADE'; + $lang['strtablealtered'] = 'Table modifiΓ©e.'; + $lang['strtablealteredbad'] = 'Γ‰chec lors de la modification de la table.'; + $lang['strdataonly'] = 'DonnΓ©es seulement'; + $lang['strstructureonly'] = 'Structure seulement'; + $lang['strstructureanddata'] = 'Structure et donnΓ©es'; + $lang['strtabbed'] = 'TabulΓ©'; + $lang['strauto'] = 'Auto'; + $lang['strconfvacuumtable'] = 'Êtes-vous sΓ»r de vouloir faire un vacuum de Β« %s Β» ?'; + $lang['strconfanalyzetable'] = 'Êtes-vous sΓ»r de vouloir Γ©ffectuer un ANALYZE sur Β« %s Β» ?'; + $lang['strconfreindextable'] = 'Êtes-vous sΓ»r de vouloir rΓ©indexer Β« %s Β» ?'; + $lang['strconfclustertable'] = 'Êtes-vous sΓ»r de vouloir lancer un CLUSTER sur Β«%s Β» ?'; + $lang['strestimatedrowcount'] = 'Nombre d\'enregistrements estimΓ©s'; + $lang['strspecifytabletoanalyze'] = 'Vous devez spΓ©cifier au moins une table Γ  analyzer'; + $lang['strspecifytabletoempty'] = 'Vous devez spΓ©cifier au moins une table Γ  vider'; + $lang['strspecifytabletodrop'] = 'Vous devez spΓ©cifier au moins une table Γ  supprimer'; + $lang['strspecifytabletovacuum'] = 'Vous devez spΓ©cifier au moins une table sur laquelle Γ©ffectuer le vacuum'; + $lang['strspecifytabletoreindex'] = 'Vous devez spΓ©cifier au moins une table Γ  rΓ©indexer.'; + $lang['strspecifytabletocluster'] = 'Vous devez spΓ©cifier au moins une table sur laquelle Γ©ffectuer la commande CLUSTER.'; + $lang['strnofieldsforinsert'] = 'Vous ne pouvez insΓ©rer de donnΓ©es dans une table sans champs.'; + + // Columns + $lang['strcolprop'] = 'PropriΓ©tΓ©s de la Colonne'; + $lang['strnotableprovided'] = 'Aucune table fournie !'; + + // Users + $lang['struser'] = 'Utilisateur'; + $lang['strusers'] = 'Utilisateurs'; + $lang['strusername'] = 'Utilisateur'; + $lang['strpassword'] = 'Mot de passe'; + $lang['strsuper'] = 'Super utilisateur ?'; + $lang['strcreatedb'] = 'CrΓ©er base de donnΓ©es ?'; + $lang['strexpires'] = 'Expiration'; + $lang['strsessiondefaults'] = 'Session par dΓ©faut'; + $lang['strnousers'] = 'Aucun utilisateur trouvΓ©.'; + $lang['struserupdated'] = 'Utilisateur mis Γ  jour.'; + $lang['struserupdatedbad'] = 'Γ‰chec lors de la mise Γ  jour de l\'utilisateur.'; + $lang['strshowallusers'] = 'Voir tous les utilisateurs'; + $lang['strcreateuser'] = 'CrΓ©er un utilisateur'; + $lang['struserneedsname'] = 'Vous devez donner un nom pour votre utilisateur.'; + $lang['strusercreated'] = 'Utilisateur créé.'; + $lang['strusercreatedbad'] = 'Γ‰chec lors de la crΓ©ation de l\'utilisateur.'; + $lang['strconfdropuser'] = 'Êtes-vous sΓ»r de vouloir supprimer l\'utilisateur Β« %s Β» ?'; + $lang['struserdropped'] = 'Utilisateur supprimΓ©.'; + $lang['struserdroppedbad'] = 'Γ‰chec lors de la suppression de l\'utilisateur.'; + $lang['straccount'] = 'Comptes'; + $lang['strchangepassword'] = 'Modifier le mot de passe'; + $lang['strpasswordchanged'] = 'Mot de passe modifiΓ©.'; + $lang['strpasswordchangedbad'] = 'Γ‰chec lors de la modification du mot de passe.'; + $lang['strpasswordshort'] = 'Le mot de passe est trop court.'; + $lang['strpasswordconfirm'] = 'Le mot de passe de confirmation est diffΓ©rent.'; + + // Groups + $lang['strgroup'] = 'Groupe'; + $lang['strgroups'] = 'Groupes'; + $lang['strgroupgroups'] = 'Groupes du groupe "%s"'; + $lang['strshowallgroups'] = 'Afficher tous les groupes'; + $lang['strnogroup'] = 'Groupe introuvable.'; + $lang['strnogroups'] = 'Aucun groupe trouvΓ©.'; + $lang['strcreategroup'] = 'CrΓ©er un groupe'; + $lang['strgroupneedsname'] = 'Vous devez indiquer un nom pour votre groupe.'; + $lang['strgroupcreated'] = 'Groupe créé.'; + $lang['strgroupcreatedbad'] = 'Γ‰chec lors de la crΓ©ation du groupe.'; + $lang['strconfdropgroup'] = 'Êtes-vous sΓ»r de vouloir supprimer le groupe Β« %s Β» ?'; + $lang['strgroupdropped'] = 'Groupe supprimΓ©.'; + $lang['strgroupdroppedbad'] = 'Γ‰chec lors de la suppression du groupe.'; + $lang['strmembers'] = 'Membres'; + $lang['strmemberof'] = 'Membre de'; + $lang['stradminmembers'] = 'Membres admin'; + $lang['straddmember'] = 'Ajouter un membre'; + $lang['strmemberadded'] = 'Membre ajoutΓ©.'; + $lang['strmemberaddedbad'] = 'Γ‰chec lors de l\'ajout du membre.'; + $lang['strdropmember'] = 'Supprimer un membre'; + $lang['strconfdropmember'] = 'Êtes-vous sΓ»r de vouloir supprimer le membre Β« %s Β» du groupe Β« %s Β» ?'; + $lang['strmemberdropped'] = 'Membre supprimΓ©.'; + $lang['strmemberdroppedbad'] = 'Γ‰chec lors de la suppression du membre.'; + + // Roles + $lang['strrole'] = 'RΓ΄le'; + $lang['strroles'] = 'RΓ΄les'; + $lang['strshowallroles'] = 'Afficher tous les rΓ΄les'; + $lang['strnoroles'] = 'Aucun rΓ΄le trouvΓ©.'; + $lang['strinheritsprivs'] = 'HΓ©rite des droits ?'; + $lang['strcreaterole'] = 'CrΓ©er un rΓ΄le'; + $lang['strcancreaterole'] = 'Peut crΓ©er un rΓ΄le ?'; + $lang['strrolecreated'] = 'RΓ΄le créé.'; + $lang['strrolecreatedbad'] = 'Γ‰chec lors de la crΓ©ation du rΓ΄le.'; + $lang['strrolealtered'] = 'RΓ΄le modifiΓ©.'; + $lang['strrolealteredbad'] = 'Γ‰chec lors de la modification du rΓ΄le.'; + $lang['strcanlogin'] = 'Peut se connecter ?'; + $lang['strconnlimit'] = 'Limite de connexion'; + $lang['strdroprole'] = 'Supprimer un rΓ΄le'; + $lang['strconfdroprole'] = 'Êtes-vous sΓ»r de vouloir supprimer le rΓ΄le Β« %s Β» ?'; + $lang['strroledropped'] = 'RΓ΄le supprimΓ©.'; + $lang['strroledroppedbad'] = 'Γ‰chec lors de la suppression du rΓ΄le.'; + $lang['strnolimit'] = 'Aucune limite'; + $lang['strnever'] = 'Jamais'; + $lang['strroleneedsname'] = 'Vous devez donner un nom Γ  ce rΓ΄le.'; + + // Privileges + $lang['strprivilege'] = 'Droit'; + $lang['strprivileges'] = 'Droits'; + $lang['strnoprivileges'] = 'Cet objet possΓ¨de les droits par dΓ©fault.'; + $lang['strgrant'] = 'Accorder (GRANT)'; + $lang['strrevoke'] = 'RΓ©voquer (REVOKE)'; + $lang['strgranted'] = 'Droits accordΓ©s.'; + $lang['strgrantfailed'] = 'Γ‰chec lors de l\'octroi des droits.'; + $lang['strgrantbad'] = 'Vous devez spΓ©cifier au moins un utilisateur ou groupe et au moins un droit.'; + $lang['strgrantor'] = 'Grantor'; + $lang['strasterisk'] = '*'; + + // Databases + $lang['strdatabase'] = 'Base de donnΓ©es'; + $lang['strdatabases'] = 'Bases de donnΓ©es'; + $lang['strshowalldatabases'] = 'Voir toutes les bases de donnΓ©es'; + $lang['strnodatabases'] = 'Aucune base de donnΓ©es trouvΓ©e.'; + $lang['strcreatedatabase'] = 'CrΓ©er une base de donnΓ©es'; + $lang['strdatabasename'] = 'Nom de la base de donnΓ©es'; + $lang['strdatabaseneedsname'] = 'Vous devez donner un nom pour votre base de donnΓ©es.'; + $lang['strdatabasecreated'] = 'Base de donnΓ©es créée.'; + $lang['strdatabasecreatedbad'] = 'Γ‰chec lors de la crΓ©ation de la base de donnΓ©es.'; + $lang['strconfdropdatabase'] = 'Êtes-vous sΓ»r de vouloir supprimer la base de donnΓ©es Β« %s Β» ?'; + $lang['strdatabasedropped'] = 'Base de donnΓ©es supprimΓ©e.'; + $lang['strdatabasedroppedbad'] = 'Γ‰chec lors de la suppression de la base de donnΓ©es.'; + $lang['strentersql'] = 'Veuillez saisir ci-dessous la requΓͺte SQL Γ  exΓ©cuter :'; + $lang['strsqlexecuted'] = 'RequΓͺte SQL exΓ©cutΓ©e.'; + $lang['strvacuumgood'] = 'Vacuum exΓ©cutΓ©.'; + $lang['strvacuumbad'] = 'Γ‰chec du Vacuum.'; + $lang['stranalyzegood'] = 'Analyse effectuΓ©e.'; + $lang['stranalyzebad'] = 'Γ‰chec de l\'analyse.'; + $lang['strreindexgood'] = 'RΓ©indexation exΓ©cutΓ©e.'; + $lang['strreindexbad'] = 'Γ‰chec de la rΓ©indexation.'; + $lang['strfull'] = 'IntΓ©gral (FULL)'; + $lang['strfreeze'] = 'Freeze'; + $lang['strforce'] = 'Forcer'; + $lang['strsignalsent'] = 'Signal envoyΓ©.'; + $lang['strsignalsentbad'] = 'Γ‰chec lors de l\'envoi du signal.'; + $lang['strallobjects'] = 'Tous les objets'; + $lang['strdatabasealtered'] = 'Base de donnΓ©es modifiΓ©e.'; + $lang['strdatabasealteredbad'] = 'Γ‰chec lors de la modification de la base de donnΓ©es.'; + $lang['strspecifydatabasetodrop'] = 'Vous devez spΓ©cifier au moins une base de donnΓ©es Γ  supprimer'; + $lang['strtemplatedb'] = 'ModΓ¨le'; + $lang['strconfanalyzedatabase'] = 'Êtes vous sΓ»r de vouloir Γ©ffectuer un ANALYZE sur toutes les tables de la base de donnΓ©es Β« %s Β» ?'; + $lang['strconfvacuumdatabase'] = 'Êtes vous sΓ»r de vouloir Γ©ffectuer un VACUUM sur toutes les tables de la base de donnΓ©es Β« %s Β» ?'; + $lang['strconfreindexdatabase'] = 'Êtes vous sΓ»r de vouloir rΓ©indexer toutes les tables de la base de donnΓ©es Β« %s Β» ?'; + $lang['strconfclusterdatabase'] = 'Êtes vous sΓ»r de vouloir Γ©ffectuer un CLUSTER sur toutes les tables de la base de donnΓ©es Β« %s Β» ?'; + + // Views + $lang['strview'] = 'Vue'; + $lang['strviews'] = 'Vues'; + $lang['strshowallviews'] = 'Voir toutes les vues'; + $lang['strnoview'] = 'Aucne vue trouvΓ©e.'; + $lang['strnoviews'] = 'Aucune vue trouvΓ©e.'; + $lang['strcreateview'] = 'CrΓ©er une vue'; + $lang['strviewname'] = 'Nom de la vue'; + $lang['strviewneedsname'] = 'Vous devez indiquer un nom pour votre vue.'; + $lang['strviewneedsdef'] = 'Vous devez indiquer une dΓ©finition pour votre vue.'; + $lang['strviewneedsfields'] = 'Vous devez prΓ©ciser les colonnes que vous voulez sΓ©lectionner dans votre vue.'; + $lang['strviewcreated'] = 'Vue créée.'; + $lang['strviewcreatedbad'] = 'Γ‰chec lors de la crΓ©ation de la vue.'; + $lang['strconfdropview'] = 'Êtes-vous sΓ»r de vouloir supprimer la vue Β« %s Β» ?'; + $lang['strviewdropped'] = 'Vue supprimΓ©e.'; + $lang['strviewdroppedbad'] = 'Γ‰chec lors de la suppression de la vue.'; + $lang['strviewupdated'] = 'Vue mise Γ  jour.'; + $lang['strviewupdatedbad'] = 'Γ‰chec lors de la mise Γ  jour de la vue.'; + $lang['strviewlink'] = 'ClΓ©s liΓ©es'; + $lang['strviewconditions'] = 'Conditions supplΓ©mentaires'; + $lang['strcreateviewwiz'] = 'CrΓ©er une vue avec l\'assistant'; + $lang['strrenamedupfields'] = 'Renommer les champs dupliquΓ©s'; + $lang['strdropdupfields'] = 'Ignorer les champs dupliquΓ©s'; + $lang['strerrordupfields'] = 'Erreur en cas de champs dupliquΓ©s'; + $lang['strviewaltered'] = 'Vue modifiΓ©e.'; + $lang['strviewalteredbad'] = 'Γ‰chec lors de la modification de la vue.'; + $lang['strspecifyviewtodrop'] = 'Vous devez spΓ©cifier au moins une vue Γ  supprimer.'; + + // Sequences + $lang['strsequence'] = 'SΓ©quence'; + $lang['strsequences'] = 'SΓ©quences'; + $lang['strshowallsequences'] = 'Voir toutes les sΓ©quences'; + $lang['strnosequence'] = 'Aucune sΓ©quence trouvΓ©e.'; + $lang['strnosequences'] = 'Aucune sΓ©quence trouvΓ©e.'; + $lang['strcreatesequence'] = 'CrΓ©er une sΓ©quence'; + $lang['strlastvalue'] = 'DerniΓ¨re valeur'; + $lang['strincrementby'] = 'IncrΓ©menter par '; + $lang['strstartvalue'] = 'Valeur de dΓ©part'; + $lang['strrestartvalue'] = 'Valeur de redΓ©marrage'; + $lang['strmaxvalue'] = 'Valeur maximale'; + $lang['strminvalue'] = 'Valeur minimale'; + $lang['strcachevalue'] = 'Valeur de cache'; + $lang['strlogcount'] = 'Comptage'; + $lang['strcancycle'] = 'Peut boucler?'; + $lang['striscalled'] = 'IncrΓ©mentera la derniΓ¨re valeur avant de retourner la prochaine valeur (is_called) ?'; + $lang['strsequenceneedsname'] = 'Vous devez spΓ©cifier un nom pour votre sΓ©quence.'; + $lang['strsequencecreated'] = 'SΓ©quence créée.'; + $lang['strsequencecreatedbad'] = 'Γ‰chec lors de la crΓ©ation de la sΓ©quence.'; + $lang['strconfdropsequence'] = 'Êtes-vous sΓ»r de vouloir supprimer la sΓ©quence Β« %s Β» ?'; + $lang['strsequencedropped'] = 'SΓ©quence supprimΓ©e.'; + $lang['strsequencedroppedbad'] = 'Γ‰chec lors de la suppression de la sΓ©quence.'; + $lang['strsequencerestart'] = 'SΓ©quence redΓ©marrΓ©e.'; + $lang['strsequencerestartbad'] = 'Γ‰chec tu redΓ©marrage de la sΓ©quence.'; + $lang['strsequencereset'] = 'SΓ©quence initialisΓ©e.'; + $lang['strsequenceresetbad'] = 'Γ‰chec lors de l\'initialisation de la sΓ©quence.'; + $lang['strsequencealtered'] = 'SΓ©quence modifiΓ©e.'; + $lang['strsequencealteredbad'] = 'Γ‰chec lors de la modification de la sΓ©quence.'; + $lang['strsetval'] = 'Initialiser Γ  une valeur'; + $lang['strsequencesetval'] = 'SΓ©quence initialisΓ©e.'; + $lang['strsequencesetvalbad'] = 'Γ‰chec lors de l\'initialisation de la sΓ©quence.'; + $lang['strnextval'] = 'IncrΓ©menter la valeur'; + $lang['strsequencenextval'] = 'SΓ©quence incrΓ©mentΓ©e.'; + $lang['strsequencenextvalbad'] = 'Γ‰chec lors de l\'incrΓ©mentation de la valeur.'; + $lang['strspecifysequencetodrop'] = 'Vous devez spΓ©cifier au moins une sΓ©quence Γ  supprimer.'; + + // Indexes + $lang['strindex'] = 'Index'; + $lang['strindexes'] = 'Index'; + $lang['strindexname'] = 'Nom de l\'index'; + $lang['strshowallindexes'] = 'Voir tous les index'; + $lang['strnoindex'] = 'Aucun index trouvΓ©.'; + $lang['strnoindexes'] = 'Aucun index trouvΓ©.'; + $lang['strcreateindex'] = 'CrΓ©er un index'; + $lang['strtabname'] = 'Nom de la table'; + $lang['strcolumnname'] = 'Nom de la colonne'; + $lang['strindexneedsname'] = 'Vous devez indiquer un nom pour votre index'; + $lang['strindexneedscols'] = 'Vous devez indiquer un nombre valide de colonnes.'; + $lang['strindexcreated'] = 'Index créé'; + $lang['strindexcreatedbad'] = 'Γ‰chec lors de la crΓ©ation de l\'index.'; + $lang['strconfdropindex'] = 'Êtes-vous sΓ»r de vouloir supprimer l\'index Β« %s Β» ?'; + $lang['strindexdropped'] = 'Index supprimΓ©.'; + $lang['strindexdroppedbad'] = 'Γ‰chec lors de la suppression de l\'index.'; + $lang['strkeyname'] = 'Nom de la clΓ©'; + $lang['struniquekey'] = 'ClΓ© unique'; + $lang['strprimarykey'] = 'ClΓ© primaire'; + $lang['strindextype'] = 'Type d\'index'; + $lang['strtablecolumnlist'] = 'Liste des colonnes'; + $lang['strindexcolumnlist'] = 'Liste des colonnes dans l\'index'; + $lang['strclusteredgood'] = 'Cluster effectuΓ©.'; + $lang['strclusteredbad'] = 'Γ‰chec du cluster.'; + $lang['strconcurrently'] = 'En parallΓ¨le'; + $lang['strnoclusteravailable'] = 'La table n\'est pas encore ordonnΓ©e selon un index.'; + $lang['strcluster'] = 'Cluster'; + + // Rules + $lang['strrules'] = 'RΓ¨gles'; + $lang['strrule'] = 'RΓ¨gle'; + $lang['strshowallrules'] = 'Voir toutes les rΓ¨gles'; + $lang['strnorule'] = 'Aucune rΓ¨gle trouvΓ©e.'; + $lang['strnorules'] = 'Aucune rΓ¨gle trouvΓ©e.'; + $lang['strcreaterule'] = 'CrΓ©er une rΓ¨gle'; + $lang['strrulename'] = 'Nom de la rΓ¨gle'; + $lang['strruleneedsname'] = 'Vous devez indiquer un nom pour votre rΓ¨gle.'; + $lang['strrulecreated'] = 'RΓ¨gle créée.'; + $lang['strrulecreatedbad'] = 'Γ‰chec lors de la crΓ©ation de la rΓ¨gle.'; + $lang['strconfdroprule'] = 'Êtes-vous sΓ»r de vouloir supprimer la rΓ¨gle Β« %s Β» sur Β« %s Β» ?'; + $lang['strruledropped'] = 'RΓ¨gle supprimΓ©e.'; + $lang['strruledroppedbad'] = 'Γ‰chec lors de la suppression de la rΓ¨gle.'; + + // Constraints + $lang['strconstraint'] = 'Contrainte'; + $lang['strconstraints'] = 'Contraintes'; + $lang['strshowallconstraints'] = 'Voir toutes les contraintes'; + $lang['strnoconstraints'] = 'Aucune contrainte trouvΓ©e.'; + $lang['strcreateconstraint'] = 'CrΓ©er une contrainte'; + $lang['strconstraintcreated'] = 'CrΓ©ation d\'une contrainte.'; + $lang['strconstraintcreatedbad'] = 'Γ‰chec lors de la crΓ©ation de la contrainte.'; + $lang['strconfdropconstraint'] = 'Êtes-vous sΓ»r de vouloir supprimer la contrainte Β« %s Β» sur Β« %s Β» ?'; + $lang['strconstraintdropped'] = 'Contrainte supprimΓ©e.'; + $lang['strconstraintdroppedbad'] = 'Γ‰chec lors de la suppression de la contrainte.'; + $lang['straddcheck'] = 'Ajouter une contrainte'; + $lang['strcheckneedsdefinition'] = 'La contrainte a besoin d\'une dΓ©finition.'; + $lang['strcheckadded'] = 'Contrainte ajoutΓ©e.'; + $lang['strcheckaddedbad'] = 'Γ‰chec lors de l\'ajout d\'une contrainte de vΓ©rification (CHECK).'; + $lang['straddpk'] = 'Ajouter une clΓ© primaire'; + $lang['strpkneedscols'] = 'La clΓ© primaire nΓ©cessite au moins une colonne.'; + $lang['strpkadded'] = 'ClΓ© primaire ajoutΓ©e.'; + $lang['strpkaddedbad'] = 'Γ‰chec lors de l\'ajout de la clΓ© primaire.'; + $lang['stradduniq'] = 'Ajouter une clΓ© unique'; + $lang['struniqneedscols'] = 'Une clΓ© unique nΓ©cessite au moins une colonne.'; + $lang['struniqadded'] = 'La clΓ© unique a Γ©tΓ© ajoutΓ©e.'; + $lang['struniqaddedbad'] = 'Γ‰chec lors de la crΓ©ation de la clΓ© unique.'; + $lang['straddfk'] = 'Ajouter une clΓ© Γ©trangΓ¨re'; + $lang['strfkneedscols'] = 'Une clΓ© Γ©trangΓ¨re nΓ©cessite au moins une colonne.'; + $lang['strfkneedstarget'] = 'Une clΓ© Γ©trangΓ¨re nΓ©cessite une table cible.'; + $lang['strfkadded'] = 'La clΓ© Γ©trangΓ¨re a Γ©tΓ© ajoutΓ©e.'; + $lang['strfkaddedbad'] = 'Γ‰chec lors de la crΓ©ation de la clΓ© Γ©trangΓ¨re.'; + $lang['strfktarget'] = 'Table cible'; + $lang['strfkcolumnlist'] = 'Liste des colonnes de la clΓ©'; + $lang['strondelete'] = 'ON DELETE'; + $lang['stronupdate'] = 'ON UPDATE'; + + // Functions + $lang['strfunction'] = 'Fonction'; + $lang['strfunctions'] = 'Fonctions'; + $lang['strshowallfunctions'] = 'Voir toutes les fonctions'; + $lang['strnofunction'] = 'Aucune fonction trouvΓ©e.'; + $lang['strnofunctions'] = 'Aucune fonction trouvΓ©e.'; + $lang['strcreateplfunction'] = 'CrΓ©er une fonction PL/SQL'; + $lang['strcreateinternalfunction'] = 'CrΓ©er une fonction interne'; + $lang['strcreatecfunction'] = 'CrΓ©er une fonction C'; + $lang['strfunctionname'] = 'Nom de la fonction'; + $lang['strreturns'] = 'Valeur de sortie'; + $lang['strproglanguage'] = 'Langage'; + $lang['strfunctionneedsname'] = 'Vous devez indiquer un nom pour votre fonction.'; + $lang['strfunctionneedsdef'] = 'Vous devez indiquer une dΓ©finition pour votre fonction.'; + $lang['strfunctioncreated'] = 'Fonction créée.'; + $lang['strfunctioncreatedbad'] = 'Γ‰chec lors de la crΓ©ation de la fonction.'; + $lang['strconfdropfunction'] = 'Êtes-vous sΓ»r de vouloir supprimer la fonction Β« %s Β» ?'; + $lang['strfunctiondropped'] = 'Fonction supprimΓ©e.'; + $lang['strfunctiondroppedbad'] = 'Γ‰chec lors de la suppression de la fonction.'; + $lang['strfunctionupdated'] = 'Fonction mise Γ  jour.'; + $lang['strfunctionupdatedbad'] = 'Γ‰chec lors de la mise Γ  jour de la fonction.'; + $lang['strobjectfile'] = 'Fichier objet'; + $lang['strlinksymbol'] = 'Symbole lien'; + $lang['strarguments'] = 'Arguments'; + $lang['strargmode'] = 'Mode'; + $lang['strargtype'] = 'Type'; + $lang['strargadd'] = 'Ajouter un autre argument'; + $lang['strargremove'] = 'Supprimer cet argument'; + $lang['strargnoargs'] = 'Cet fonction ne prend pas d\'arguments.'; + $lang['strargenableargs'] = 'Active les arguments passΓ©s Γ  cette fonction.'; + $lang['strargnorowabove'] = 'Il doit y avoir une ligne au-dessus de cette ligne.'; + $lang['strargnorowbelow'] = 'Il doit y avoir une ligne en-dessous de cette ligne.'; + $lang['strargraise'] = 'Monter.'; + $lang['strarglower'] = 'Descendre.'; + $lang['strargremoveconfirm'] = 'Êtes-vous sΓ»r de vouloir supprimer cet argument ? cette opΓ©ration ne peut pas Γͺtre annulΓ©e.'; + $lang['strfunctioncosting'] = 'CoΓ»t de la function'; + $lang['strresultrows'] = 'Lignes de rΓ©sultat'; + $lang['strexecutioncost'] = 'CoΓ»t d\'exΓ©cution'; + $lang['strspecifyfunctiontodrop'] = 'Vous devez spΓ©cifier au moins une fonction Γ  supprimer.'; + + // Triggers + $lang['strtrigger'] = 'Trigger'; + $lang['strtriggers'] = 'Triggers'; + $lang['strshowalltriggers'] = 'Voir tous les triggers'; + $lang['strnotrigger'] = 'Aucun trigger trouvΓ©.'; + $lang['strnotriggers'] = 'Aucun trigger trouvΓ©.'; + $lang['strcreatetrigger'] = 'CrΓ©er un trigger'; + $lang['strtriggerneedsname'] = 'Vous devez indiquer un nom pour votre trigger.'; + $lang['strtriggerneedsfunc'] = 'Vous devez indiquer une fonction pour votre trigger.'; + $lang['strtriggercreated'] = 'Trigger créé.'; + $lang['strtriggercreatedbad'] = 'Γ‰chec lors de la crΓ©ation du trigger.'; + $lang['strconfdroptrigger'] = 'Êtes-vous sΓ»r de vouloir supprimer le trigger Β« %s Β» sur Β« %s Β» ?'; + $lang['strconfenabletrigger'] = 'Êtes-vous sΓ»r de vouloir activer le trigger Β« %s Β» sur Β« %sΒ» ?'; + $lang['strconfdisabletrigger'] = 'Êtes-vous sΓ»r de vouloir dΓ©sactiver le trigger Β« %s Β» sur Β« %sΒ» ?'; + $lang['strtriggerdropped'] = 'Trigger supprimΓ©.'; + $lang['strtriggerdroppedbad'] = 'Γ‰chec lors de la suppression du trigger.'; + $lang['strtriggerenabled'] = 'Trigger activΓ©.'; + $lang['strtriggerenabledbad'] = 'Γ‰chec lors de l\'activation du trigger.'; + $lang['strtriggerdisabled'] = 'Trigger dΓ©sactivΓ©.'; + $lang['strtriggerdisabledbad'] = 'Γ‰chec lors de la dΓ©sactivation du trigger.'; + $lang['strtriggeraltered'] = 'Trigger modifiΓ©.'; + $lang['strtriggeralteredbad'] = 'Γ‰chec lors de la modification du trigger.'; + $lang['strforeach'] = 'Pour chaque'; + + // Types + $lang['strtype'] = 'Type'; + $lang['strtypes'] = 'Types'; + $lang['strshowalltypes'] = 'Voir tous les types'; + $lang['strnotype'] = 'Aucun type trouvΓ©.'; + $lang['strnotypes'] = 'Aucun type trouvΓ©.'; + $lang['strcreatetype'] = 'CrΓ©er un type'; + $lang['strcreatecomptype'] = 'CrΓ©er un type composΓ©'; + $lang['strcreateenumtype'] = 'CrΓ©er un type enum'; + $lang['strtypeneedsfield'] = 'Vous devez spΓ©cifier au moins un champ.'; + $lang['strtypeneedsvalue'] = 'Vous devez spΓ©cifier au moins une valeur.'; + $lang['strtypeneedscols'] = 'Vous devez spΓ©cifier un nombre valide de champs.'; + $lang['strtypeneedsvals'] = 'Vous devez spΓ©cifier un nombre valide de valeurs.'; + $lang['strinputfn'] = 'Fonction d\'entrΓ©e'; + $lang['stroutputfn'] = 'Fonction de sortie'; + $lang['strpassbyval'] = 'PassΓ©e par valeur ?'; + $lang['stralignment'] = 'Alignement'; + $lang['strelement'] = 'Γ‰lΓ©ment'; + $lang['strdelimiter'] = 'DΓ©limiteur'; + $lang['strstorage'] = 'Stockage'; + $lang['strfield'] = 'Champ'; + $lang['strnumfields'] = 'Nombre de champs'; + $lang['strnumvalues'] = 'Nombre de valeurs'; + $lang['strtypeneedsname'] = 'Vous devez indiquer un nom pour votre type.'; + $lang['strtypeneedslen'] = 'Vous devez indiquer une longueur pour votre type.'; + $lang['strtypecreated'] = 'Type créé'; + $lang['strtypecreatedbad'] = 'Γ‰chec lors de la crΓ©ation du type.'; + $lang['strconfdroptype'] = 'Êtes-vous sΓ»r de vouloir supprimer le type Β« %s Β» ?'; + $lang['strtypedropped'] = 'Type supprimΓ©.'; + $lang['strtypedroppedbad'] = 'Γ‰chec lors de la suppression du type.'; + $lang['strflavor'] = 'Genre'; + $lang['strbasetype'] = 'Base'; + $lang['strcompositetype'] = 'Composite'; + $lang['strpseudotype'] = 'Pseudo'; + $lang['strenum'] = 'Enum'; + $lang['strenumvalues'] = 'Valeurs de l\'enum'; + + // Schemas + $lang['strschema'] = 'SchΓ©ma'; + $lang['strschemas'] = 'SchΓ©mas'; + $lang['strshowallschemas'] = 'Voir tous les schΓ©mas'; + $lang['strnoschema'] = 'Aucun schΓ©ma trouvΓ©.'; + $lang['strnoschemas'] = 'Aucun schΓ©ma trouvΓ©.'; + $lang['strcreateschema'] = 'CrΓ©er un schΓ©ma'; + $lang['strschemaname'] = 'Nom du schΓ©ma'; + $lang['strschemaneedsname'] = 'Vous devez indiquer un nom pour votre schΓ©ma.'; + $lang['strschemacreated'] = 'SchΓ©ma créé'; + $lang['strschemacreatedbad'] = 'Γ‰chec lors de la crΓ©ation du schΓ©ma.'; + $lang['strconfdropschema'] = 'Êtes-vous sΓ»r de vouloir supprimer le schΓ©ma Β« %s Β» ?'; + $lang['strschemadropped'] = 'SchΓ©ma supprimΓ©.'; + $lang['strschemadroppedbad'] = 'Γ‰chec lors de la suppression du schΓ©ma.'; + $lang['strschemaaltered'] = 'Schema modifiΓ©.'; + $lang['strschemaalteredbad'] = 'Γ‰chec lors de la modification du schΓ©ma.'; + $lang['strsearchpath'] = 'Chemin de recherche du schΓ©ma'; + $lang['strspecifyschematodrop'] = 'Vous devez spΓ©cifier au moins un schΓ©ma Γ  supprimer.'; + + // Reports + + // Domains + $lang['strdomain'] = 'Domaine'; + $lang['strdomains'] = 'Domaines'; + $lang['strshowalldomains'] = 'Voir tous les domaines'; + $lang['strnodomains'] = 'Pas de domaine trouvΓ©.'; + $lang['strcreatedomain'] = 'CrΓ©er un domaine'; + $lang['strdomaindropped'] = 'Domaine supprimΓ©.'; + $lang['strdomaindroppedbad'] = 'Γ‰chec lors de la suppression.'; + $lang['strconfdropdomain'] = 'Êtes-vous sur de vouloir supprimer le domaine Β« %s Β» ?'; + $lang['strdomainneedsname'] = 'Vous devez donner un nom pour votre domaine.'; + $lang['strdomaincreated'] = 'Domaine créé.'; + $lang['strdomaincreatedbad'] = 'Γ‰chec lors de la crΓ©ation du domaine.'; + $lang['strdomainaltered'] = 'Domaine modifiΓ©.'; + $lang['strdomainalteredbad'] = 'Γ‰chec lors de la modification du domaine.'; + + // Operators + $lang['stroperator'] = 'OpΓ©rateur'; + $lang['stroperators'] = 'OpΓ©rateurs'; + $lang['strshowalloperators'] = 'Voir tous les opΓ©rateurs'; + $lang['strnooperator'] = 'Pas d\'opΓ©rateur trouvΓ©.'; + $lang['strnooperators'] = 'Pas d\'opΓ©rateur trouvΓ©.'; + $lang['strcreateoperator'] = 'CrΓ©er un opΓ©rateur'; + $lang['strleftarg'] = 'Type de l\'argument de gauche'; + $lang['strrightarg'] = 'Type de l\'argument de droite'; + $lang['strcommutator'] = 'Commutateur'; + $lang['strnegator'] = 'NΓ©gation'; + $lang['strrestrict'] = 'Restriction'; + $lang['strjoin'] = 'Jointure'; + $lang['strhashes'] = 'Hachages'; + $lang['strmerges'] = 'Assemblages'; + $lang['strleftsort'] = 'Tri gauche'; + $lang['strrightsort'] = 'Tri droite'; + $lang['strlessthan'] = 'Plus petit que'; + $lang['strgreaterthan'] = 'Plus grand que'; + $lang['stroperatorneedsname'] = 'Vous devez donner un nom pour votre opΓ©rateur.'; + $lang['stroperatorcreated'] = 'OpΓ©rateur créé'; + $lang['stroperatorcreatedbad'] = 'Γ‰chec lors de la crΓ©ation de l\'opΓ©rateur.'; + $lang['strconfdropoperator'] = 'Êtes-vous sur de vouloir supprimer l\'opΓ©rateur Β« %s Β» ?'; + $lang['stroperatordropped'] = 'OpΓ©rateur supprimΓ©.'; + $lang['stroperatordroppedbad'] = 'Γ‰chec lors de la suppression de l\'opΓ©rateur.'; + + // Casts + $lang['strcasts'] = 'Conversions'; + $lang['strnocasts'] = 'Aucune conversion trouvΓ©e.'; + $lang['strsourcetype'] = 'Type source'; + $lang['strtargettype'] = 'Type cible'; + $lang['strimplicit'] = 'Implicite'; + $lang['strinassignment'] = 'En affectation'; + $lang['strbinarycompat'] = '(binaire compatible)'; + + // Conversions + $lang['strconversions'] = 'Conversions'; + $lang['strnoconversions'] = 'Aucune conversion trouvΓ©e.'; + $lang['strsourceencoding'] = 'Codage source'; + $lang['strtargetencoding'] = 'Codage cible'; + + // Languages + $lang['strlanguages'] = 'Langages'; + $lang['strnolanguages'] = 'Pas de langage trouvΓ©.'; + $lang['strtrusted'] = 'De confiance'; + + // Info + $lang['strnoinfo'] = 'Pas d\'information disponible.'; + $lang['strreferringtables'] = 'Tables rΓ©fΓ©rentes'; + $lang['strparenttables'] = 'Tables parents'; + $lang['strchildtables'] = 'Tables enfants'; + + // Aggregates + $lang['straggregate'] = 'AgrΓ©gat'; + $lang['straggregates'] = 'AgrΓ©gats'; + $lang['strnoaggregates'] = 'Aucun agrΓ©gat trouvΓ©.'; + $lang['stralltypes'] = '(tous les types)'; + $lang['strcreateaggregate'] = 'CrΓ©er un agrΓ©gat'; + $lang['straggrbasetype'] = 'Type de donnΓ©es en entrΓ©e'; + $lang['straggrsfunc'] = 'Fonction de transition de l\'Γ©tat'; + $lang['straggrstype'] = 'Type de la valeur de transition'; + $lang['straggrffunc'] = 'Fonction finale'; + $lang['straggrinitcond'] = 'Condition initiale'; + $lang['straggrsortop'] = 'OpΓ©rateur de tri'; + $lang['strconfdropaggregate'] = 'Êtes-vous sΓ»r de vouloir supprimer l\'agrΓ©gat Β« %s Β»?'; + $lang['straggregatedropped'] = 'AgrΓ©gat supprimΓ©.'; + $lang['straggregatedroppedbad'] = 'Γ‰chec lors de la suppression de l\'agrΓ©gat.'; + $lang['straggraltered'] = 'AgrΓ©gat modifiΓ©.'; + $lang['straggralteredbad'] = 'Γ‰chec lors de la modification de l\'agrΓ©gat.'; + $lang['straggrneedsname'] = 'Vous devez indiquer un nom pour l\'agrΓ©gat'; + $lang['straggrneedsbasetype'] = 'Vous devez indiquer le type de donnΓ©es en entrΓ©e pour l\'agrΓ©gat'; + $lang['straggrneedssfunc'] = 'Vous devez indiquer le nom de la fonction de transition de l\'agrΓ©gat'; + $lang['straggrneedsstype'] = 'Vous devez indiquer le type de donnΓ©e pour la valeur d\'Γ©tat pour l\'agrΓ©gat'; + $lang['straggrcreated'] = 'AgrΓ©gat créé.'; + $lang['straggrcreatedbad'] = 'Γ‰chec lors de la crΓ©ation de l\'agrΓ©gat.'; + $lang['straggrshowall'] = 'Afficher tous les agrΓ©gats'; + + // Operator Classes + $lang['stropclasses'] = 'Classes d\'opΓ©rateur'; + $lang['strnoopclasses'] = 'Aucune classe d\'opΓ©rateur trouvΓ©e.'; + $lang['straccessmethod'] = 'MΓ©thode d\'accΓ¨s'; + + // Stats and performance + $lang['strrowperf'] = 'Performance des enregistrements'; + $lang['strioperf'] = 'Performance en entrΓ©e/sortie'; + $lang['stridxrowperf'] = 'Performance des index'; + $lang['stridxioperf'] = 'Performance des index en entrΓ©es/sortie'; + $lang['strpercent'] = '%'; + $lang['strsequential'] = 'SΓ©quentiel'; + $lang['strscan'] = 'Parcours'; + $lang['strread'] = 'Lecture'; + $lang['strfetch'] = 'RΓ©cupΓ©ration'; + $lang['strheap'] = 'En-tΓͺte'; + $lang['strtoast'] = 'TOAST'; + $lang['strtoastindex'] = 'Index TOAST'; + $lang['strcache'] = 'Cache'; + $lang['strdisk'] = 'Disque'; + $lang['strrows2'] = 'Enregistrements'; + + // Tablespaces + $lang['strtablespace'] = 'Tablespace'; + $lang['strtablespaces'] = 'Tablespaces'; + $lang['strshowalltablespaces'] = 'Voir tous les tablespaces'; + $lang['strnotablespaces'] = 'Aucun tablespace trouvΓ©.'; + $lang['strcreatetablespace'] = 'CrΓ©er un tablespace'; + $lang['strlocation'] = 'Emplacement'; + $lang['strtablespaceneedsname'] = 'Vous devez donner un nom Γ  votre tablespace.'; + $lang['strtablespaceneedsloc'] = 'Vous devez prΓ©ciser un rΓ©pertoire dans lequel sera créé le tablespace.'; + $lang['strtablespacecreated'] = 'Tablespace créé.'; + $lang['strtablespacecreatedbad'] = 'Γ‰chec lors de la crΓ©ation du tablespace.'; + $lang['strconfdroptablespace'] = 'Êtes-vous sΓ»r de vouloir supprimer le tablespace Β« %s Β» ?'; + $lang['strtablespacedropped'] = 'Tablespace supprimΓ©.'; + $lang['strtablespacedroppedbad'] = 'Γ‰chec lors de la suppression du tablespace.'; + $lang['strtablespacealtered'] = 'Tablespace modifiΓ©.'; + $lang['strtablespacealteredbad'] = 'Γ‰chec lors de la modification du tablespace.'; + + // Miscellaneous + $lang['strtopbar'] = '%s lancΓ© sur %s:%s -- Vous Γͺtes connectΓ© avec le profil Β« %s Β»'; + $lang['strtimefmt'] = 'j M Y, H:i'; + $lang['strhelp'] = 'Aide'; + $lang['strhelpicon'] = '?'; + $lang['strhelppagebrowser'] = 'Navigateur pour l\'aide'; + $lang['strselecthelppage'] = 'SΓ©lectionner une page d\'aide'; + $lang['strinvalidhelppage'] = 'Page d\'aide invalide.'; + $lang['strlogintitle'] = 'Se connecter Γ  %s'; + $lang['strlogoutmsg'] = 'DΓ©connectΓ© de %s'; + $lang['strloading'] = 'Chargement...'; + $lang['strerrorloading'] = 'Erreur lors du chargement'; + $lang['strclicktoreload'] = 'Cliquer pour recharger'; + + //Autovacuum + $lang['strautovacuum'] = 'Autovacuum'; + $lang['strturnedon'] = 'ActivΓ©'; + $lang['strturnedoff'] = 'DΓ©sactivΓ©'; + $lang['strenabled'] = 'activΓ©'; + $lang['strnovacuumconf'] = 'Aucune configuration autovacuum trouvΓ©e.'; + $lang['strvacuumbasethreshold'] = 'Limite de base pour le Vacuum'; + $lang['strvacuumscalefactor'] = 'Facteur d\'Γ©chelle pour le Vacuum'; + $lang['stranalybasethreshold'] = 'Limite de base pour le Analyze'; + $lang['stranalyzescalefactor'] = 'Facteur d\'Γ©chelle pour le Analyze'; + $lang['strvacuumcostdelay'] = 'DΓ©lai du coΓ»t du Vacuum'; + $lang['strvacuumcostlimit'] = 'Limite du coΓ»t du Vacuum'; + $lang['strvacuumpertable'] = 'Configuration autovacuum par table'; + $lang['straddvacuumtable'] = 'Configurer autovacuum pour cette table'; + $lang['streditvacuumtable'] = 'Modifier la configuration autovacuum pour la table Β« %s Β»'; + $lang['strdelvacuumtable'] = 'Supprimer la configuration autovacuum pour la table Β« %s Β» ?'; + $lang['strvacuumtablereset'] = 'Configuration autovacuum par dΓ©faut pour la table Β« %s Β».'; + $lang['strdelvacuumtablefail'] = 'Γ‰chec lors de la suppression de la configuration autovacuumpour la table Β« %s Β»'; + $lang['strsetvacuumtablesaved'] = 'Configuration autovacuum pour la table Β« %s Β» enregistrΓ©e.'; + $lang['strsetvacuumtablefail'] = 'Γ‰chec de la configuration autovacuum pour la table Β« %s Β».'; + $lang['strspecifydelvacuumtable'] = 'Vous devez spΓ©cifier la table oΓΉ supprimer les paramΓ¨tres autovacuum.'; + $lang['strspecifyeditvacuumtable'] = 'Vous devez spΓ©cifier la table oΓΉ Γ©diter les paramΓ¨tres autovacuum.'; + $lang['strnotdefaultinred'] = 'Valeurs diffΓ©rentes de celles par dΓ©faut en rouge.'; + + //Table-level Locks + $lang['strlocks'] = 'Verrous'; + $lang['strtransaction'] = 'ID de transaction'; + $lang['strvirtualtransaction'] = 'ID Virtuel de Transaction'; + $lang['strprocessid'] = 'ID du processus'; + $lang['strmode'] = 'Mode du verrou'; + $lang['strislockheld'] = 'Verrou dΓ©tenu ?'; + + // Prepared transactions + $lang['strpreparedxacts'] = 'Transactions prΓ©parΓ©es'; + $lang['strxactid'] = 'ID de transaction'; + $lang['strgid'] = 'ID global'; + + // Fulltext search + $lang['strfulltext'] = 'Recherche textuelle'; + $lang['strftsconfig'] = 'Configuration FTS'; + $lang['strftsconfigs'] = 'Configurations'; + $lang['strftscreateconfig'] = 'CrΓ©er une configuration FTS'; + $lang['strftscreatedict'] = 'CrΓ©er un dictionnaire'; + $lang['strftscreatedicttemplate'] = 'CrΓ©er un modΓ¨le de dictionnaire'; + $lang['strftscreateparser'] = 'CrΓ©er un analyseur syntaxique'; + $lang['strftsnoconfigs'] = 'Aucune configuration FTS trouvΓ©e.'; + $lang['strftsconfigdropped'] = 'Configuration FTS supprimΓ©e.'; + $lang['strftsconfigdroppedbad'] = 'Γ‰chec lors de la suppression de la configuration FTS.'; + $lang['strconfdropftsconfig'] = 'Êtes-vous sΓ»r de vouloir supprimer la configuration FTS Β« %s Β» ?'; + $lang['strconfdropftsdict'] = 'Êtes-vous sΓ»r de vouloir supprimer le dictionnaire FTS Β« %s Β» ?'; + $lang['strconfdropftsmapping'] = 'Êtes-vous sΓ»r de vouloir supprimer le mapping Β« %s Β» de la configuration FTS Β« %s Β» ?'; + $lang['strftstemplate'] = 'ModΓ¨le'; + $lang['strftsparser'] = 'Analyseur syntaxique'; + $lang['strftsconfigneedsname'] = 'Vous devez donner un nom pour votre configuration FTS.'; + $lang['strftsconfigcreated'] = 'Configuration FTS créée'; + $lang['strftsconfigcreatedbad'] = 'Γ‰chec lors de la crΓ©ation de la configuration FTS.'; + $lang['strftsmapping'] = 'Type de jeton'; + $lang['strftsdicts'] = 'Dictionaires'; + $lang['strftsdict'] = 'Dictionaire'; + $lang['strftsemptymap'] = 'Aucune liaisons configurΓ©e.'; + $lang['strftsconfigaltered'] = 'Configuration FTS modifiΓ©e.'; + $lang['strftsconfigalteredbad'] = 'Γ‰chec lors de l\'Γ©dition de la configuration FTS.'; + $lang['strftsconfigmap'] = 'Configuration des liaisons type de jeton / dictionnaires'; + $lang['strftsparsers'] = 'Analyseurs syntaxique FTS'; + $lang['strftsnoparsers'] = 'Aucun analyseur syntaxique FTS disponnible.'; + $lang['strftsnodicts'] = 'Aucun dictionnaire FTS disponible.'; + $lang['strftsdictcreated'] = 'Dictionnaire FTS créé'; + $lang['strftsdictcreatedbad'] = 'Γ‰chec lors de la crΓ©ation du dictionnaire FTS.'; + $lang['strftslexize'] = 'Lexize'; + $lang['strftsinit'] = 'Init'; + $lang['strftsoptionsvalues'] = 'Options et Valeurs'; + $lang['strftsdictneedsname'] = 'Vous devez donner un nom pour votre dictionnaire FTS.'; + $lang['strftsdictdropped'] = 'Dictionnaire FTS supprimΓ©.'; + $lang['strftsdictdroppedbad'] = 'Γ‰chec lors de la suppression du dictionnaire FTS.'; + $lang['strftsdictaltered'] = 'Dictionnaire FTS modifiΓ©.'; + $lang['strftsdictalteredbad'] = 'Γ‰chec lors de l\'Γ©dition du dictionnaire FTS.'; + $lang['strftsaddmapping'] = 'Ajouter une nouvelle liaison'; + $lang['strftsspecifymappingtodrop'] = 'Vous devez spΓ©cifier au moins une liaison Γ  suppimer.'; + $lang['strftsspecifyconfigtoalter'] = 'Vous devez spΓ©cifier une configuration FTS Γ  modifier'; + $lang['strftsmappingdropped'] = 'Laison supprimΓ©e.'; + $lang['strftsmappingdroppedbad'] = 'Γ‰chec lors de la suppression de la liaison.'; + $lang['strftsnodictionaries'] = 'Aucun dictionnaire trouvΓ©.'; + $lang['strftsmappingaltered'] = 'Liaison modifiΓ©e.'; + $lang['strftsmappingalteredbad'] = 'Γ‰chec lors de la modification de la liaison.'; + $lang['strftsmappingadded'] = 'Liaison ajoutΓ©e.'; + $lang['strftsmappingaddedbad'] = 'Γ‰chec lors de la suppression de la liaison.'; + $lang['strftstabconfigs'] = 'Configurations'; + $lang['strftstabdicts'] = 'Dictionaires'; + $lang['strftstabparsers'] = 'Analyseurs syntaxique'; + $lang['strftscantparsercopy'] = 'Vous ne pouvez spΓ©cifier en mΓͺme temps un modΓ¨le et un analyseur lors de la crΓ©ation d\'une configuration FTS.'; +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/galician.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/galician.php new file mode 100644 index 00000000..9ee7a059 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/galician.php @@ -0,0 +1,909 @@ + + * Proxecto Trasno, . + * + * + * Comentarios sobre a traduciΓ³n: + * - Escolleuse Β«eliminarΒ» como traduciΓ³n para β€œdrop”, e Β«borrarΒ» como traduciΓ³n para + * β€œdelete”. + * - FixΓ©ronse certas escollas de vocabulario: β€œvacuum” β†’ Β«purgaciΓ³nΒ» (aconsellada por + * Leandro Regueiro), β€œcluster” β†’ Β«contentradoΒ». + * + */ + + // Language and character set + $lang['applang'] = 'Galego'; + $lang['applocale'] = 'gl-ES'; + $lang['applangdir'] = 'ltr'; + + // Welcome + $lang['strintro'] = 'Benvida ou benvido ao phpPgAdmin.'; + $lang['strppahome'] = 'Sitio web do phpPgAdmin'; + $lang['strpgsqlhome'] = 'Sitio web de PostgreSQL'; + $lang['strpgsqlhome_url'] = 'http://www.postgresql.org/'; + $lang['strlocaldocs'] = 'DocumentaciΓ³n de PostgreSQL (local)'; + $lang['strreportbug'] = 'Informar dun erro'; + $lang['strviewfaq'] = 'Ver as preguntas mΓ‘is frecuentes en liΓ±a'; + $lang['strviewfaq_url'] = 'http://phppgadmin.sourceforge.net/doku.php?id=faq'; + + // Basic strings + $lang['strlogin'] = 'Identificarse'; + $lang['strloginfailed'] = 'Non se puido levar a cabo a identificaciΓ³n.'; + $lang['strlogindisallowed'] = 'A identificaciΓ³n estΓ‘ desactivada por motivos de seguridade.'; + $lang['strserver'] = 'Servidor'; + $lang['strservers'] = 'Servidores'; + $lang['strgroupservers'] = 'Servidores no grupo Β«%sΒ»'; + $lang['strallservers'] = 'Todos os servidores'; + $lang['strintroduction'] = 'IntroduciΓ³n'; + $lang['strhost'] = 'Enderezo IP'; + $lang['strport'] = 'Porto'; + $lang['strlogout'] = 'SaΓ­r'; + $lang['strowner'] = 'Propietario'; + $lang['straction'] = 'AcciΓ³n'; + $lang['stractions'] = 'AcciΓ³ns'; + $lang['strname'] = 'Nome'; + $lang['strdefinition'] = 'DefiniciΓ³n'; + $lang['strproperties'] = 'Propiedades'; + $lang['strbrowse'] = 'Navegar'; + $lang['strenable'] = 'Activar'; + $lang['strdisable'] = 'Desactivar'; + $lang['strdrop'] = 'Eliminar'; + $lang['strdropped'] = 'Eliminada'; + $lang['strnull'] = 'Nulo'; + $lang['strnotnull'] = 'Non nulo'; + $lang['strprev'] = '< Anterior'; + $lang['strnext'] = 'Seguinte >'; + $lang['strfirst'] = 'Β« Principio'; + $lang['strlast'] = 'Final Β»'; + $lang['strfailed'] = 'Fallou'; + $lang['strcreate'] = 'Crear'; + $lang['strcreated'] = 'Creada'; + $lang['strcomment'] = 'Comentario'; + $lang['strlength'] = 'Lonxitude'; + $lang['strdefault'] = 'Predeterminado'; + $lang['stralter'] = 'Cambiar'; + $lang['strok'] = 'Aceptar'; + $lang['strcancel'] = 'Cancelar'; + $lang['strkill'] = 'Matar'; + $lang['strac'] = 'Activar o completado automΓ‘tico'; + $lang['strsave'] = 'Gardar'; + $lang['strreset'] = 'Restablecer'; + $lang['strrestart'] = 'Reiniciar'; + $lang['strinsert'] = 'Inserir'; + $lang['strselect'] = 'Seleccionar'; + $lang['strdelete'] = 'Borrar'; + $lang['strupdate'] = 'Actualizar'; + $lang['strreferences'] = 'Fai referencia a'; + $lang['stryes'] = 'Si'; + $lang['strno'] = 'Non'; + $lang['strtrue'] = 'CERTO'; + $lang['strfalse'] = 'FALSO'; + $lang['stredit'] = 'Editar'; + $lang['strcolumn'] = 'Columna'; + $lang['strcolumns'] = 'Columnas'; + $lang['strrows'] = 'fila(s)'; + $lang['strrowsaff'] = 'fila(s) afectadas.'; + $lang['strobjects'] = 'obxecto(s)'; + $lang['strback'] = 'Volver'; + $lang['strqueryresults'] = 'Resultados da consulta'; + $lang['strshow'] = 'Amosar'; + $lang['strempty'] = 'Baleiro'; + $lang['strlanguage'] = 'Lingua'; + $lang['strencoding'] = 'CodificaciΓ³n'; + $lang['strvalue'] = 'Valor'; + $lang['strunique'] = 'Único'; + $lang['strprimary'] = 'Primaria'; + $lang['strexport'] = 'Exportar'; + $lang['strimport'] = 'Importar'; + $lang['strallowednulls'] = 'Permitir valores nulos'; + $lang['strbackslashn'] = '\N'; + $lang['stremptystring'] = 'Cadea ou campo baleiro'; + $lang['strsql'] = 'SQL'; + $lang['stradmin'] = 'AdministraciΓ³n'; + $lang['strvacuum'] = 'Purgar'; + $lang['stranalyze'] = 'Analizar'; + $lang['strclusterindex'] = 'Concentrar'; + $lang['strclustered'] = 'Concentrada?'; + $lang['strreindex'] = 'Indexar'; + $lang['strexecute'] = 'Executar'; + $lang['stradd'] = 'Engadir'; + $lang['strevent'] = 'Evento'; + $lang['strwhere'] = 'Onde'; + $lang['strinstead'] = 'En vez de iso'; + $lang['strwhen'] = 'Cando'; + $lang['strformat'] = 'Formato'; + $lang['strdata'] = 'Datos'; + $lang['strconfirm'] = 'Confirmar'; + $lang['strexpression'] = 'ExpresiΓ³n'; + $lang['strellipsis'] = '...'; + $lang['strseparator'] = ': '; + $lang['strexpand'] = 'Expandir'; + $lang['strcollapse'] = 'Colapsar'; + $lang['strfind'] = 'Buscar'; + $lang['stroptions'] = 'OpciΓ³ns'; + $lang['strrefresh'] = 'Actualizar'; + $lang['strdownload'] = 'Descargar'; + $lang['strdownloadgzipped'] = 'Descargar comprimida con gzip'; + $lang['strinfo'] = 'Info'; + $lang['stroids'] = 'OIDs'; + $lang['stradvanced'] = 'Avanzado'; + $lang['strvariables'] = 'Variables'; + $lang['strprocess'] = 'Proceso'; + $lang['strprocesses'] = 'Procesos'; + $lang['strsetting'] = 'ConfiguraciΓ³n'; + $lang['streditsql'] = 'Editar SQL'; + $lang['strruntime'] = 'Tempo total funcionando: %s ms'; + $lang['strpaginate'] = 'Amosar os resultados por pΓ‘xinas'; + $lang['struploadscript'] = 'ou cargue un guiΓ³n en SQL:'; + $lang['strstarttime'] = 'Hora de inicio'; + $lang['strfile'] = 'Ficheiro'; + $lang['strfileimported'] = 'Importouse o ficheiro.'; + $lang['strtrycred'] = 'Utilizar estas credenciais para todos os servidores'; + $lang['strconfdropcred'] = 'Por motivos de seguridade, ao desconectarse destruirase a informaciΓ³n compartida sobre a sΓΊa identidade. EstΓ‘ seguro de que quere desconectarse?'; + $lang['stractionsonmultiplelines'] = 'AcciΓ³ns en varias liΓ±as'; + $lang['strselectall'] = 'Marcar todo'; + $lang['strunselectall'] = 'Desmarcar todo'; + $lang['strlocale'] = 'ConfiguraciΓ³n rexional'; + $lang['strcollation'] = 'RecompilaciΓ³n'; + $lang['strctype'] = 'Tipo de carΓ‘cter'; + $lang['strdefaultvalues'] = 'Valores predeterminados'; + $lang['strnewvalues'] = 'Valores novos'; + $lang['strstart'] = 'Iniciar'; + $lang['strstop'] = 'Deter'; + $lang['strgotoppage'] = 'Volver arriba'; + $lang['strtheme'] = 'Tema visual'; + $lang['strcluster'] = 'Concentrador'; + + // Admin + $lang['stradminondatabase'] = 'As seguintes tarefas administrativas realizaranse en toda a base de datos Β«%sΒ».'; + $lang['stradminontable'] = 'As seguintes tarefas administrativas realizaranse na tΓ‘boa Β«%sΒ».'; + + // User-supplied SQL history + $lang['strhistory'] = 'Historial'; + $lang['strnohistory'] = 'Sen historial.'; + $lang['strclearhistory'] = 'Borrar o historial'; + $lang['strdelhistory'] = 'Borrar do historial'; + $lang['strconfdelhistory'] = 'Seguro que quere borrar esta solicitude do historial?'; + $lang['strconfclearhistory'] = 'Seguro que quere borrar o historial?'; + $lang['strnodatabaseselected'] = 'Escolla unha base de datos.'; + + // Database sizes + $lang['strnoaccess'] = 'Sen acceso'; + $lang['strsize'] = 'TamaΓ±o'; + $lang['strbytes'] = 'bytes'; + $lang['strkb'] = 'kiB'; + $lang['strmb'] = 'MiB'; + $lang['strgb'] = 'GiB'; + $lang['strtb'] = 'TiB'; + + // Error handling + $lang['strnoframes'] = 'Este aplicativo funciona mellor nos navegadores que permiten o uso de marcos, pero pode usalo sen eles premendo na ligazΓ³n que hai mΓ‘is abaixo.'; + $lang['strnoframeslink'] = 'Utilizar sen marcos'; + $lang['strbadconfig'] = 'O seu ficheiro de configuraciΓ³n Β«config.inc.phpΒ» estΓ‘ obsoleto. TerΓ‘ que volvelo crear a partires do novo ficheiro Β«config.inc.php-distΒ».'; + $lang['strnotloaded'] = 'A sΓΊa instalaciΓ³n de PHP non estΓ‘ preparada para utilizar PostgreSQL. TerΓ‘ que compilar PHP de novo utilizando a opciΓ³n de configuraciΓ³n Β«--with-pgsqlΒ».'; + $lang['strpostgresqlversionnotsupported'] = 'Este aplicativo non Γ© compatible coa versiΓ³n de PostgreSQL que estΓ‘ a usar. ActualΓ­ceo Γ‘ versiΓ³n %s ou outra versiΓ³n posterior.'; + $lang['strbadschema'] = 'O esquema especificado non era correcto.'; + $lang['strbadencoding'] = 'Non se deu establecida a codificaciΓ³n do cliente na base de datos.'; + $lang['strsqlerror'] = 'Erro de SQL:'; + $lang['strinstatement'] = 'Na instruciΓ³n:'; + $lang['strinvalidparam'] = 'Os parΓ‘metros fornecidos ao guiΓ³n non son correctos.'; + $lang['strnodata'] = 'Non se atopou fila algunha.'; + $lang['strnoobjects'] = 'Non se atopou obxecto algΓΊn.'; + $lang['strrownotunique'] = 'Esta fila non ten ningΓΊn identificador ΓΊnico.'; + $lang['strnouploads'] = 'A carga de ficheiros estΓ‘ desactivada.'; + $lang['strimporterror'] = 'Produciuse un erro ao importar.'; + $lang['strimporterror-fileformat'] = 'Produciuse un erro ao importar: non se puido determinar de maneira automΓ‘tica o formato do ficheiro.'; + $lang['strimporterrorline'] = 'Produciuse un erro ao importar, na liΓ±a %s.'; + $lang['strimporterrorline-badcolumnnum'] = 'Produciuse un erro ao importar, na liΓ±a %s: a liΓ±a non ten unha cantidade de columnas axeitada.'; + $lang['strimporterror-uploadedfile'] = 'Produciuse un erro ao importar: non se puido cargar o ficheiro no servidor.'; + $lang['strcannotdumponwindows'] = 'O envorcado de tΓ‘boas complexas e mais nomes de esquemas non pode efectuarse en sistemas Microsoft Windows.'; + $lang['strinvalidserverparam'] = 'Produciuse un intento de conexiΓ³n cun servidor non permitido como parΓ‘metro, Γ© posible que alguΓ©n estea intentando atacar o seu sistema.'; + $lang['strnoserversupplied'] = 'Non se forneceu ningΓΊn servidor!'; + $lang['strbadpgdumppath'] = 'Produciuse un erro ao exportar: non se conseguiu executar pg_dump (a ruta indicada no seu ficheiro Β«conf/config.inc.phpΒ» Γ© Β«%sΒ»). Cambie a ruta no ficheiro de configuraciΓ³n e volva intentalo.'; + $lang['strbadpgdumpallpath'] = 'Produciuse un erro ao exportar: non se conseguiu executar pg_dumpall (a ruta indicada no seu ficheiro Β«conf/config.inc.phpΒ» Γ© Β«%sΒ»). Cambie a ruta no ficheiro de configuraciΓ³n e volva intentalo.'; + $lang['strconnectionfail'] = 'Non se puido establecer a conexiΓ³n co servidor.'; + + // Tables + $lang['strtable'] = 'TΓ‘boa'; + $lang['strtables'] = 'TΓ‘boas'; + $lang['strshowalltables'] = 'Amosar todas as tΓ‘boas'; + $lang['strnotables'] = 'Non se atopou tΓ‘boa algunha.'; + $lang['strnotable'] = 'Non se atopou tΓ‘boa algunha.'; + $lang['strcreatetable'] = 'Crear unha tΓ‘boa'; + $lang['strcreatetablelike'] = 'Crear unha tΓ‘boa coma'; + $lang['strcreatetablelikeparent'] = 'TΓ‘boa orixinal'; + $lang['strcreatelikewithdefaults'] = 'INCLUÍR OS VALORES PREDETERMINADOS'; + $lang['strcreatelikewithconstraints'] = 'INCLUÍR AS RESTRICIΓ“NS'; + $lang['strcreatelikewithindexes'] = 'INCLUÍR OS ÍNDICES'; + $lang['strtablename'] = 'Nome da tΓ‘boa'; + $lang['strtableneedsname'] = 'Debe fornecer un nome para a tΓ‘boa.'; + $lang['strtablelikeneedslike'] = 'Debe fornecer unha tΓ‘boa Γ‘ que copiarlle as propiedades.'; + $lang['strtableneedsfield'] = 'Debe indicar polo menos un campo.'; + $lang['strtableneedscols'] = 'Debe indicar un nΓΊmero de columnas correcto.'; + $lang['strtablecreated'] = 'Creouse a tΓ‘boa.'; + $lang['strtablecreatedbad'] = 'Non se conseguiu crear a tΓ‘boa.'; + $lang['strconfdroptable'] = 'EstΓ‘ seguro de que quere eliminar a tΓ‘boa Β«%sΒ»?'; + $lang['strtabledropped'] = 'Eliminouse a tΓ‘boa.'; + $lang['strtabledroppedbad'] = 'Non se conseguiu eliminar a tΓ‘boa.'; + $lang['strconfemptytable'] = 'EstΓ‘ seguro de que quere baleirar a tΓ‘boa Β«%sΒ»?'; + $lang['strtableemptied'] = 'Baleirouse a tΓ‘boa.'; + $lang['strtableemptiedbad'] = 'Non se conseguiu baleirar a tΓ‘boa.'; + $lang['strinsertrow'] = 'Inserir unha fila'; + $lang['strrowinserted'] = 'Inseriuse unha fila.'; + $lang['strrowinsertedbad'] = 'Non se conseguiu inserir a fila.'; + $lang['strnofkref'] = 'Non existe ningΓΊn valor que coincida na clave externa Β«%sΒ».'; + $lang['strrowduplicate'] = 'Non se conseguiu inserir a fila, intentouse facer unha inxecciΓ³n duplicada.'; + $lang['streditrow'] = 'Modificar a fila'; + $lang['strrowupdated'] = 'Actualizouse a fila.'; + $lang['strrowupdatedbad'] = 'Non se conseguiu actualizar a fila.'; + $lang['strdeleterow'] = 'Borrar a fila'; + $lang['strconfdeleterow'] = 'EstΓ‘ seguro de que quere borrar esta fila?'; + $lang['strrowdeleted'] = 'Borrouse a fila.'; + $lang['strrowdeletedbad'] = 'Non se conseguiu borrar a fila.'; + $lang['strinsertandrepeat'] = 'Inserir e repetir'; + $lang['strnumcols'] = 'NΓΊmero de columnas'; + $lang['strcolneedsname'] = 'Debe especificar un nome para a columna'; + $lang['strselectallfields'] = 'Marcar todos os campos'; + $lang['strselectneedscol'] = 'Debe amosar polo menos unha columna.'; + $lang['strselectunary'] = 'Os operadores dun sΓ³ operando non poden ter valores.'; + $lang['strcolumnaltered'] = 'Modificouse a columna.'; + $lang['strcolumnalteredbad'] = 'Non se conseguiu modificar a columna.'; + $lang['strconfdropcolumn'] = 'EstΓ‘ seguro de que quere eliminar a columna Β«%sΒ» da tΓ‘boa Β«%sΒ»?'; + $lang['strcolumndropped'] = 'Eliminouse a columna.'; + $lang['strcolumndroppedbad'] = 'Non se conseguiu eliminar a columna.'; + $lang['straddcolumn'] = 'Engadir unha columna'; + $lang['strcolumnadded'] = 'Engadiuse a columna.'; + $lang['strcolumnaddedbad'] = 'Non se conseguiu engadir a columna.'; + $lang['strcascade'] = 'EN CASCADA'; + $lang['strtablealtered'] = 'Modificouse a tΓ‘boa.'; + $lang['strtablealteredbad'] = 'Non se conseguiu modificar a tΓ‘boa.'; + $lang['strdataonly'] = 'SΓ³ datos'; + $lang['strstructureonly'] = 'SΓ³ estrutura'; + $lang['strstructureanddata'] = 'Estrutura e datos'; + $lang['strtabbed'] = 'Tabulado'; + $lang['strauto'] = 'Detectar'; + $lang['strconfvacuumtable'] = 'EstΓ‘ seguro de que quere purgar Β«%sΒ»?'; + $lang['strconfanalyzetable'] = 'EstΓ‘ seguro de que quere analizar Β«%sΒ»?'; + $lang['strconfreindextable'] = 'EstΓ‘ seguro de que quere indexar Β«%sΒ»?'; + $lang['strconfclustertable'] = 'EstΓ‘ seguro de que quere concentrar Β«%sΒ»?'; + $lang['strestimatedrowcount'] = 'NΓΊmero estimado de filas'; + $lang['strspecifytabletoanalyze'] = 'Debe especificar polo menos unha tΓ‘boa a analizar.'; + $lang['strspecifytabletoempty'] = 'Debe especificar polo menos unha tΓ‘boa a baleirar.'; + $lang['strspecifytabletodrop'] = 'Debe especificar polo menos unha tΓ‘boa a eliminar.'; + $lang['strspecifytabletovacuum'] = 'Debe especificar polo menos unha tΓ‘boa a purgar.'; + $lang['strspecifytabletoreindex'] = 'Debe especificar polo menos unha tΓ‘boa a indexar.'; + $lang['strspecifytabletocluster'] = 'Debe especificar polo menos unha tΓ‘boa a concentrar.'; + $lang['strnofieldsforinsert'] = 'Non pode inserir filas nunha tΓ‘boa sen columnas.'; + + // Columns + $lang['strcolprop'] = 'Propiedades da columna'; + $lang['strnotableprovided'] = 'Non se forneceu ningunha tΓ‘boa!'; + + // Users + $lang['struser'] = 'Usuario'; + $lang['strusers'] = 'Usuarios'; + $lang['strusername'] = 'Nome'; + $lang['strpassword'] = 'Contrasinal'; + $lang['strsuper'] = 'Administrador?'; + $lang['strcreatedb'] = 'Crear bases de datos?'; + $lang['strexpires'] = 'Caducidade'; + $lang['strsessiondefaults'] = 'Valores predeterminados da sesiΓ³n'; + $lang['strnousers'] = 'Non se atopou ningΓΊn usuario.'; + $lang['struserupdated'] = 'Actualizouse o usuario.'; + $lang['struserupdatedbad'] = 'Non se conseguiu actualizar o usuario.'; + $lang['strshowallusers'] = 'Listar todos os usuarios'; + $lang['strcreateuser'] = 'Crear un usuario'; + $lang['struserneedsname'] = 'Debe fornecer un nome para o usuario.'; + $lang['strusercreated'] = 'Creouse o usuario.'; + $lang['strusercreatedbad'] = 'Non se conseguiu crear o usuario.'; + $lang['strconfdropuser'] = 'EstΓ‘ seguro de que quere eliminar o usuario Β«%sΒ»?'; + $lang['struserdropped'] = 'Eliminouse o usuario.'; + $lang['struserdroppedbad'] = 'Non se conseguiu eliminar o usuario.'; + $lang['straccount'] = 'Conta'; + $lang['strchangepassword'] = 'Cambiar de contrasinal'; + $lang['strpasswordchanged'] = 'Cambiouse o contrasinal.'; + $lang['strpasswordchangedbad'] = 'Non se conseguiu cambiar o contrasinal.'; + $lang['strpasswordshort'] = 'O contrasinal Γ© curto de mΓ‘is.'; + $lang['strpasswordconfirm'] = 'Os contrasinais introducidos son distintos.'; + + // Groups + $lang['strgroup'] = 'Grupo'; + $lang['strgroups'] = 'Grupos'; + $lang['strshowallgroups'] = 'Amosar todos os grupos'; + $lang['strnogroup'] = 'Non se atopou o grupo.'; + $lang['strnogroups'] = 'Non se atopou grupo algΓΊn.'; + $lang['strcreategroup'] = 'Crear un grupo'; + $lang['strgroupneedsname'] = 'Debe fornecer un nome para o grupo.'; + $lang['strgroupcreated'] = 'Creouse o grupo.'; + $lang['strgroupcreatedbad'] = 'Non se conseguiu crear o grupo.'; + $lang['strconfdropgroup'] = 'estΓ‘ seguro de que quere eliminar o grupo Β«%sΒ»?'; + $lang['strgroupdropped'] = 'Eliminouse o grupo.'; + $lang['strgroupdroppedbad'] = 'Non se conseguiu eliminar o grupo.'; + $lang['strmembers'] = 'Membros'; + $lang['strmemberof'] = 'Membros de'; + $lang['stradminmembers'] = 'Membros administradores'; + $lang['straddmember'] = 'Engadir un membro'; + $lang['strmemberadded'] = 'Engadiuse o membro.'; + $lang['strmemberaddedbad'] = 'Non se conseguiu engadir o membro.'; + $lang['strdropmember'] = 'Eliminar o membro'; + $lang['strconfdropmember'] = 'EstΓ‘ seguro de que quere eliminar o membro Β«%sΒ» do grupo Β«%sΒ»?'; + $lang['strmemberdropped'] = 'Eliminouse o membro.'; + $lang['strmemberdroppedbad'] = 'Non se conseguiu eliminar o membro.'; + + // Roles + $lang['strrole'] = 'Rol'; + $lang['strroles'] = 'Roles'; + $lang['strshowallroles'] = 'Amosar todos os roles'; + $lang['strnoroles'] = 'Non se atopou rol algΓΊn.'; + $lang['strinheritsprivs'] = 'Herdar os privilexios?'; + $lang['strcreaterole'] = 'Crear un rol'; + $lang['strcancreaterole'] = 'Pode crear roles?'; + $lang['strrolecreated'] = 'Creouse o rol.'; + $lang['strrolecreatedbad'] = 'Non se conseguiu crear o rol.'; + $lang['strrolealtered'] = 'Modificouse o rol.'; + $lang['strrolealteredbad'] = 'Non se conseguiu modificar o rol.'; + $lang['strcanlogin'] = 'Pode identificarse?'; + $lang['strconnlimit'] = 'LΓ­mite da conexiΓ³n'; + $lang['strdroprole'] = 'Eliminar o rol'; + $lang['strconfdroprole'] = 'EstΓ‘ seguro de que quere eliminar o rol Β«%sΒ»?'; + $lang['strroledropped'] = 'Eliminouse o rol.'; + $lang['strroledroppedbad'] = 'Non se conseguiu eliminar o rol.'; + $lang['strnolimit'] = 'Sen lΓ­mite'; + $lang['strnever'] = 'Nunca'; + $lang['strroleneedsname'] = 'Ten que darlle un nome ao rol.'; + + // Privileges + $lang['strprivilege'] = 'Privilexio'; + $lang['strprivileges'] = 'Privilexios'; + $lang['strnoprivileges'] = 'Este obxecto ten os privilexios predeterminados do propietario.'; + $lang['strgrant'] = 'Conceder'; + $lang['strrevoke'] = 'Revogar'; + $lang['strgranted'] = 'CambiΓ‘ronse os privilexios.'; + $lang['strgrantfailed'] = 'Non se conseguiu cambiar os privilexios.'; + $lang['strgrantbad'] = 'Ten que especificar polo menos un usuario ou grupo e un privilexio.'; + $lang['strgrantor'] = 'Autor da concesiΓ³n'; + $lang['strasterisk'] = '*'; + + // Databases + $lang['strdatabase'] = 'Base de datos'; + $lang['strdatabases'] = 'Bases de datos'; + $lang['strshowalldatabases'] = 'Amosar todas as bases de datos'; + $lang['strnodatabases'] = 'Non se atopou base de datos algunha.'; + $lang['strcreatedatabase'] = 'Crear unha base de datos'; + $lang['strdatabasename'] = 'Nome da base de datos'; + $lang['strdatabaseneedsname'] = 'Debe darlle un nome Γ‘ base de datos.'; + $lang['strdatabasecreated'] = 'Creouse a base de datos.'; + $lang['strdatabasecreatedbad'] = 'Non se conseguiu crear a base de datos.'; + $lang['strconfdropdatabase'] = 'EstΓ‘ seguro de que quere eliminar a base de datos Β«%sΒ»?'; + $lang['strdatabasedropped'] = 'Eliminouse a base de datos.'; + $lang['strdatabasedroppedbad'] = 'Non se conseguiu eliminar a base de datos.'; + $lang['strentersql'] = 'Introduza a continuaciΓ³n as instruciΓ³ns SQL a executar:'; + $lang['strsqlexecuted'] = 'ExecutΓ‘ronse as instruciΓ³ns SQL.'; + $lang['strvacuumgood'] = 'Completouse a purgaciΓ³n.'; + $lang['strvacuumbad'] = 'Non se conseguiu efectuar a purgaciΓ³n.'; + $lang['stranalyzegood'] = 'Completouse a anΓ‘lise.'; + $lang['stranalyzebad'] = 'Non se conseguiu completar a anΓ‘lise.'; + $lang['strreindexgood'] = 'Completouse o indexado.'; + $lang['strreindexbad'] = 'Non se conseguiu completar o indexado.'; + $lang['strfull'] = 'Completo'; + $lang['strfreeze'] = 'Agresivo'; + $lang['strforce'] = 'Forzar'; + $lang['strsignalsent'] = 'Enviouse o sinal.'; + $lang['strsignalsentbad'] = 'Non se conseguiu enviar o sinal.'; + $lang['strallobjects'] = 'Todos os obxectos'; + $lang['strdatabasealtered'] = 'Modificouse a base de datos.'; + $lang['strdatabasealteredbad'] = 'Non se conseguiu modificar a base de datos.'; + $lang['strspecifydatabasetodrop'] = 'Debe especificar polo menos unha base de datos a eliminar.'; + $lang['strtemplatedb'] = 'Modelo'; + $lang['strconfanalyzedatabase'] = 'EstΓ‘ seguro de que quere analizar todas as tΓ‘boas da base de datos Β«%sΒ»?'; + $lang['strconfvacuumdatabase'] = 'EstΓ‘ seguro de que quere purgar todas as tΓ‘boas da base de datos Β«%sΒ»?'; + $lang['strconfreindexdatabase'] = 'EstΓ‘ seguro de que quere indexar todas as tΓ‘boas da base de datos Β«%sΒ»?'; + $lang['strconfclusterdatabase'] = 'EstΓ‘ seguro de que quere concentrar todas as tΓ‘boas da base de datos Β«%sΒ»?'; + + // Views + $lang['strview'] = 'Vista'; + $lang['strviews'] = 'Vistas'; + $lang['strshowallviews'] = 'Listar todas as vistas'; + $lang['strnoview'] = 'Non se atopou vista algunha.'; + $lang['strnoviews'] = 'Non se atopou vista algunha.'; + $lang['strcreateview'] = 'Crear unha vista'; + $lang['strviewname'] = 'Nome da vista'; + $lang['strviewneedsname'] = 'Debe fornecer un nome para a vista.'; + $lang['strviewneedsdef'] = 'Debe fornecer unha descriciΓ³n da vista.'; + $lang['strviewneedsfields'] = 'Debe indicar que columnas quere ter na vista.'; + $lang['strviewcreated'] = 'Creouse a vista.'; + $lang['strviewcreatedbad'] = 'Non se conseguiu crear a vista.'; + $lang['strconfdropview'] = 'EstΓ‘ seguro de que quere eliminar a vista Β«%sΒ»?'; + $lang['strviewdropped'] = 'Eliminouse a vista.'; + $lang['strviewdroppedbad'] = 'Non se conseguiu eliminar a vista.'; + $lang['strviewupdated'] = 'Actualizouse a vista.'; + $lang['strviewupdatedbad'] = 'Non se conseguiu actualizar a vista.'; + $lang['strviewlink'] = 'UniΓ³n de claves'; + $lang['strviewconditions'] = 'CondiciΓ³ns adicionais'; + $lang['strcreateviewwiz'] = 'Crear unha vista co asistente'; + $lang['strrenamedupfields'] = 'Renomear os campos duplicados'; + $lang['strdropdupfields'] = 'Eliminar os campos duplicados'; + $lang['strerrordupfields'] = 'Non permitir que haxa campos duplicados'; + $lang['strviewaltered'] = 'Modificouse a vista.'; + $lang['strviewalteredbad'] = 'Non se conseguiu modificar a vista.'; + $lang['strspecifyviewtodrop'] = 'Debe especificar polo menos unha vista a borrar.'; + + // Sequences + $lang['strsequence'] = 'Secuencia'; + $lang['strsequences'] = 'Secuencias'; + $lang['strshowallsequences'] = 'Amosar todas as secuencias'; + $lang['strnosequence'] = 'Non se atopou secuencia algunha.'; + $lang['strnosequences'] = 'Non se atopou secuencia algunha.'; + $lang['strcreatesequence'] = 'Crear unha secuencia'; + $lang['strlastvalue'] = 'Último valor'; + $lang['strincrementby'] = 'Aumentar en'; + $lang['strstartvalue'] = 'Valor inicial'; + $lang['strrestartvalue'] = 'Valor do reinicio'; + $lang['strmaxvalue'] = 'Valor mΓ‘ximo'; + $lang['strminvalue'] = 'Valor mΓ­nimo'; + $lang['strcachevalue'] = 'Valor da cachΓ©'; + $lang['strlogcount'] = 'Conta de rexistros'; + $lang['strcancycle'] = 'Pode repetirse?'; + $lang['striscalled'] = 'AumentarΓ‘ o ΓΊltimo valor antes de devolver o seguinte (is_called)?'; + $lang['strsequenceneedsname'] = 'Debe fornecer un nome para a secuencia.'; + $lang['strsequencecreated'] = 'Creouse a secuencia.'; + $lang['strsequencecreatedbad'] = 'Non se conseguiu crear a secuencia.'; + $lang['strconfdropsequence'] = 'EstΓ‘ seguro de que quere eliminar a secuencia Β«%sΒ»?'; + $lang['strsequencedropped'] = 'Eliminouse a secuencia.'; + $lang['strsequencedroppedbad'] = 'Non se conseguiu eliminar a secuencia.'; + $lang['strsequencerestart'] = 'Reiniciouse a secuencia.'; + $lang['strsequencerestartbad'] = 'Non se conseguiu reiniciar a secuencia.'; + $lang['strsequencereset'] = 'Restableceuse a secuencia.'; + $lang['strsequenceresetbad'] = 'Non se conseguiu restablecer a secuencia.'; + $lang['strsequencealtered'] = 'Modificouse a secuencia.'; + $lang['strsequencealteredbad'] = 'Non se conseguiu modificar a secuencia.'; + $lang['strsetval'] = 'Establecer o valor'; + $lang['strsequencesetval'] = 'Estableceuse o valor da secuencia.'; + $lang['strsequencesetvalbad'] = 'Non se conseguiu establecer o valor da secuencia.'; + $lang['strnextval'] = 'Aumentar o valor'; + $lang['strsequencenextval'] = 'Aumentouse o valor da secuencia.'; + $lang['strsequencenextvalbad'] = 'Non se conseguiu aumentar o valor da secuencia.'; + $lang['strspecifysequencetodrop'] = 'Debe especificar polo menos unha secuencia a eliminar.'; + + // Indexes + $lang['strindex'] = 'Índice'; + $lang['strindexes'] = 'Índices'; + $lang['strindexname'] = 'Nome do Γ­ndice'; + $lang['strshowallindexes'] = 'Listar todos os Γ­ndices'; + $lang['strnoindex'] = 'Non se atopou Γ­ndice algΓΊn.'; + $lang['strnoindexes'] = 'Non se atopou Γ­ndice algΓΊn.'; + $lang['strcreateindex'] = 'Crear un Γ­ndice'; + $lang['strtabname'] = 'Nome da lapela'; + $lang['strcolumnname'] = 'Nome da columna'; + $lang['strindexneedsname'] = 'Debe fornecer un nome para o Γ­ndice.'; + $lang['strindexneedscols'] = 'Os Γ­ndices teΓ±en que ter un nΓΊmero de columnas correcto.'; + $lang['strindexcreated'] = 'Creouse o Γ­ndice.'; + $lang['strindexcreatedbad'] = 'Non se conseguiu crear o Γ­ndice.'; + $lang['strconfdropindex'] = 'EstΓ‘ seguro de que quere eliminar o Γ­ndice Β«%sΒ»?'; + $lang['strindexdropped'] = 'Eliminouse o Γ­ndice.'; + $lang['strindexdroppedbad'] = 'Non se conseguiu eliminar o Γ­ndice.'; + $lang['strkeyname'] = 'Nome da clave'; + $lang['struniquekey'] = 'Clave ΓΊnica'; + $lang['strprimarykey'] = 'Clave primaria'; + $lang['strindextype'] = 'Tipo de Γ­ndice'; + $lang['strtablecolumnlist'] = 'Columnas na tΓ‘boa'; + $lang['strindexcolumnlist'] = 'Columnas no Γ­ndice'; + $lang['strconfcluster'] = 'EstΓ‘ seguro de que quere concentrar Β«%sΒ»?'; + $lang['strclusteredgood'] = 'Completouse o concentrado.'; + $lang['strclusteredbad'] = 'Non se conseguiu completar o concentrado.'; + $lang['strconcurrently'] = 'Simultaneamente'; + $lang['strnoclusteravailable'] = 'A tΓ‘boa non estΓ‘ concentrada nun Γ­ndice.'; + + // Rules + $lang['strrules'] = 'Regras'; + $lang['strrule'] = 'Regra'; + $lang['strshowallrules'] = 'Listar todas as regras'; + $lang['strnorule'] = 'Non se atopou regra algunha.'; + $lang['strnorules'] = 'Non se atopou regra algunha.'; + $lang['strcreaterule'] = 'Crear unha regra'; + $lang['strrulename'] = 'Nome da regra'; + $lang['strruleneedsname'] = 'Debe fornecer un nome para a regra.'; + $lang['strrulecreated'] = 'Creouse a regra.'; + $lang['strrulecreatedbad'] = 'Non se conseguiu crear a regra.'; + $lang['strconfdroprule'] = 'EstΓ‘ seguro de que quere eliminar a regra Β«%sΒ» en Β«%sΒ»?'; + $lang['strruledropped'] = 'Eliminouse a regra.'; + $lang['strruledroppedbad'] = 'Non se conseguiu eliminar a regra.'; + + // Constraints + $lang['strconstraint'] = 'RestriciΓ³n'; + $lang['strconstraints'] = 'RestriciΓ³ns'; + $lang['strshowallconstraints'] = 'Listar todas as restriciΓ³ns'; + $lang['strnoconstraints'] = 'Non se atopou restriciΓ³n algunha.'; + $lang['strcreateconstraint'] = 'Crear unha restriciΓ³n'; + $lang['strconstraintcreated'] = 'Creouse a restriciΓ³n.'; + $lang['strconstraintcreatedbad'] = 'Non se conseguiu crear a restriciΓ³n.'; + $lang['strconfdropconstraint'] = 'EstΓ‘ seguro de que quere eliminar a restriciΓ³n Β«%sΒ» en Β«%sΒ»?'; + $lang['strconstraintdropped'] = 'Eliminouse a restriciΓ³n.'; + $lang['strconstraintdroppedbad'] = 'Non se conseguiu eliminar a restriciΓ³n.'; + $lang['straddcheck'] = 'Engadir unha comprobaciΓ³n'; + $lang['strcheckneedsdefinition'] = 'A comprobaciΓ³n necesita unha definiciΓ³n.'; + $lang['strcheckadded'] = 'Engadiuse a comprobaciΓ³n.'; + $lang['strcheckaddedbad'] = 'Non se conseguiu engadir a comprobaciΓ³n.'; + $lang['straddpk'] = 'Engadir unha clave primaria'; + $lang['strpkneedscols'] = 'A clave primaria necesita polo menos unha columna.'; + $lang['strpkadded'] = 'Engadiuse a clave primaria.'; + $lang['strpkaddedbad'] = 'Non se conseguiu engadir a clave primaria.'; + $lang['stradduniq'] = 'Engadir unha clave ΓΊnica'; + $lang['struniqneedscols'] = 'A clave ΓΊnica necesita polo menos unha columna.'; + $lang['struniqadded'] = 'Engadiuse a clave ΓΊnica.'; + $lang['struniqaddedbad'] = 'Non se conseguiu engadir a clave ΓΊnica.'; + $lang['straddfk'] = 'Engadir unha clave externa'; + $lang['strfkneedscols'] = 'A clave externa necesita polo menos unha columna.'; + $lang['strfkneedstarget'] = 'A clave externa necesita unha tΓ‘boa externa.'; + $lang['strfkadded'] = 'Engadiuse a clave externa.'; + $lang['strfkaddedbad'] = 'Non se conseguiu engadir a clave externa.'; + $lang['strfktarget'] = 'TΓ‘boa externa'; + $lang['strfkcolumnlist'] = 'Columnas na clave'; + $lang['strondelete'] = 'AO ACTUALIZAR'; // Sei que son instruciΓ³ns cando se usa SQL, pero na + $lang['stronupdate'] = 'AO BORRAR'; // interface parΓ©ceme mellor traducilos. + + // Functions + $lang['strfunction'] = 'FunciΓ³n'; + $lang['strfunctions'] = 'FunciΓ³ns'; + $lang['strshowallfunctions'] = 'Listar todas as funciΓ³ns'; + $lang['strnofunction'] = 'Non se atopou funciΓ³n algunha.'; + $lang['strnofunctions'] = 'Non se atopou funciΓ³n algunha.'; + $lang['strcreateplfunction'] = 'Crear unha funciΓ³n SQL/PL'; + $lang['strcreateinternalfunction'] = 'Crear unha funciΓ³n interna'; + $lang['strcreatecfunction'] = 'Crear unha funciΓ³n en C'; + $lang['strfunctionname'] = 'Nome da funciΓ³n'; + $lang['strreturns'] = 'Devolve'; + $lang['strproglanguage'] = 'Linguaxe de programaciΓ³n'; + $lang['strfunctionneedsname'] = 'Debe fornecer un nome para a funciΓ³n.'; + $lang['strfunctionneedsdef'] = 'Debe fornecer unha definiciΓ³n para a funciΓ³n.'; + $lang['strfunctioncreated'] = 'Creouse a funciΓ³n.'; + $lang['strfunctioncreatedbad'] = 'Non se conseguiu crear a funciΓ³n.'; + $lang['strconfdropfunction'] = 'EstΓ‘ seguro de que quere eliminar a funciΓ³n Β«%sΒ»?'; + $lang['strfunctiondropped'] = 'Eliminouse a funciΓ³n.'; + $lang['strfunctiondroppedbad'] = 'Non se conseguiu eliminar a funciΓ³n.'; + $lang['strfunctionupdated'] = 'Actualizouse a funciΓ³n.'; + $lang['strfunctionupdatedbad'] = 'Non se conseguiu actualizar a funciΓ³n.'; + $lang['strobjectfile'] = 'Ficheiro de obxecto'; + $lang['strlinksymbol'] = 'SΓ­mbolo da ligazΓ³n'; + $lang['strarguments'] = 'Argumentos'; + $lang['strargmode'] = 'Modo'; + $lang['strargtype'] = 'Tipo'; + $lang['strargadd'] = 'Engadir outro argumento'; + $lang['strargremove'] = 'Borrar este argumento'; + $lang['strargnoargs'] = 'Esta funciΓ³n non recibirΓ‘ argumento ningΓΊn.'; + $lang['strargenableargs'] = 'Permitir que se lle fornezan argumentos Γ‘ funciΓ³n.'; + $lang['strargnorowabove'] = 'Ten que haber unha fila antes desta.'; + $lang['strargnorowbelow'] = 'Ten que haber unha fila despois desta.'; + $lang['strargraise'] = 'Subir.'; + $lang['strarglower'] = 'Baixar.'; + $lang['strargremoveconfirm'] = 'EstΓ‘ seguro de que quere borrar este argumento? Esta acciΓ³n non se pode desfacer.'; + $lang['strfunctioncosting'] = 'Custo da funciΓ³n'; + $lang['strresultrows'] = 'Filas resultantes'; + $lang['strexecutioncost'] = 'Custo de execuciΓ³n'; + $lang['strspecifyfunctiontodrop'] = 'Debe especificar polo menos unha funciΓ³n a eliminar.'; + + // Triggers + $lang['strtrigger'] = 'Disparador'; + $lang['strtriggers'] = 'Disparadores'; + $lang['strshowalltriggers'] = 'Listar todos os disparadores'; + $lang['strnotrigger'] = 'Non se atopor disparador algΓΊn.'; + $lang['strnotriggers'] = 'Non se atopor disparador algΓΊn.'; + $lang['strcreatetrigger'] = 'Crear un disparador'; + $lang['strtriggerneedsname'] = 'Debe fornecer un nome para o disparador.'; + $lang['strtriggerneedsfunc'] = 'Debe especificar unha funciΓ³n para o disparador.'; + $lang['strtriggercreated'] = 'Creouse o disparador.'; + $lang['strtriggercreatedbad'] = 'Non se conseguiu crear o disparador.'; + $lang['strconfdroptrigger'] = 'EstΓ‘ seguro de que quere eliminar o disparador Β«%sΒ» en Β«%sΒ»?'; + $lang['strconfenabletrigger'] = 'EstΓ‘ seguro de que quere activar o disparador Β«%sΒ» en Β«%sΒ»?'; + $lang['strconfdisabletrigger'] = 'EstΓ‘ seguro de que quere desactivar o disparador Β«%sΒ» en Β«%sΒ»?'; + $lang['strtriggerdropped'] = 'Eliminouse o disparador.'; + $lang['strtriggerdroppedbad'] = 'Non se conseguiu eliminar o disparador.'; + $lang['strtriggerenabled'] = 'Activouse o disparador.'; + $lang['strtriggerenabledbad'] = 'Non se conseguiu activar o disparador.'; + $lang['strtriggerdisabled'] = 'Desactivouse o disparador.'; + $lang['strtriggerdisabledbad'] = 'Non se conseguiu desactivar o disparador.'; + $lang['strtriggeraltered'] = 'Modificouse o disparador.'; + $lang['strtriggeralteredbad'] = 'Non se conseguiu modificar o disparador.'; + $lang['strforeach'] = 'Por cada'; // Β«For each [row or instruction]Β» + + // Types + $lang['strtype'] = 'Tipo'; + $lang['strtypes'] = 'Tipos'; + $lang['strshowalltypes'] = 'Listar todos os tipos'; + $lang['strnotype'] = 'Non se atopou tipo algΓΊn.'; + $lang['strnotypes'] = 'Non se atopou tipo algΓΊn.'; + $lang['strcreatetype'] = 'Crear un tipo'; + $lang['strcreatecomptype'] = 'Crear un tipo composto'; + $lang['strcreateenumtype'] = 'Crear un tipo de enumeraciΓ³n'; + $lang['strtypeneedsfield'] = 'Debe especificar polo menos un campo.'; + $lang['strtypeneedsvalue'] = 'Debe especificar polo menos un valor.'; + $lang['strtypeneedscols'] = 'Debe especificar un nΓΊmero correcto de campos.'; + $lang['strtypeneedsvals'] = 'Debe especificar un nΓΊmero correcto de valores.'; + $lang['strinputfn'] = 'FunciΓ³n de entrada'; + $lang['stroutputfn'] = 'FunciΓ³n de saΓ­da'; + $lang['strpassbyval'] = 'Pasado por valor?'; + $lang['stralignment'] = 'AliΓ±aciΓ³n'; + $lang['strelement'] = 'Elemento'; + $lang['strdelimiter'] = 'Delimitador'; + $lang['strstorage'] = 'Almacenamento'; + $lang['strfield'] = 'Campo'; + $lang['strnumfields'] = 'Cantidade de campos'; + $lang['strnumvalues'] = 'Cantidade de valores'; + $lang['strtypeneedsname'] = 'Debe fornecer un nome para o tipo.'; + $lang['strtypeneedslen'] = 'Debe fornecer unha lonxitude para o tipo.'; + $lang['strtypecreated'] = 'Creouse o tipo.'; + $lang['strtypecreatedbad'] = 'Non se conseguiu crear o tipo.'; + $lang['strconfdroptype'] = 'EstΓ‘ seguro de que quere eliminar o tipo Β«%sΒ»?'; + $lang['strtypedropped'] = 'Eliminouse o tipo.'; + $lang['strtypedroppedbad'] = 'Non se conseguiu eliminar o tipo.'; + $lang['strflavor'] = 'Subtipo'; + $lang['strbasetype'] = 'Base'; + $lang['strcompositetype'] = 'Composto'; + $lang['strpseudotype'] = 'Pseudo'; + $lang['strenum'] = 'EnumeraciΓ³n'; + $lang['strenumvalues'] = 'Valores da enumeraciΓ³n'; + + // Schemas + $lang['strschema'] = 'Esquema'; + $lang['strschemas'] = 'Esquemas'; + $lang['strshowallschemas'] = 'Listar todos os esquemas'; + $lang['strnoschema'] = 'Non se atopou esquema algΓΊn.'; + $lang['strnoschemas'] = 'Non se atopou esquema algΓΊn.'; + $lang['strcreateschema'] = 'Crear un esquema'; + $lang['strschemaname'] = 'Nome do esquema'; + $lang['strschemaneedsname'] = 'Debe fornecer un nome para o esquema.'; + $lang['strschemacreated'] = 'Creouse o esquema.'; + $lang['strschemacreatedbad'] = 'Non se conseguiu crear o esquema.'; + $lang['strconfdropschema'] = 'EstΓ‘ seguro de que quere eliminar o esquema Β«%sΒ»?'; + $lang['strschemadropped'] = 'Eliminouse o esquema.'; + $lang['strschemadroppedbad'] = 'Non se conseguiu eliminar o esquema.'; + $lang['strschemaaltered'] = 'Modificouse o esquema.'; + $lang['strschemaalteredbad'] = 'Non se conseguiu modificar o esquema.'; + $lang['strsearchpath'] = 'Ruta de busca do esquema'; + $lang['strspecifyschematodrop'] = 'Debe especificar polo menos un esquema a eliminar.'; + + // Reports + + // Domains + $lang['strdomain'] = 'Dominio'; + $lang['strdomains'] = 'Dominios'; + $lang['strshowalldomains'] = 'Listar todos os dominios'; + $lang['strnodomains'] = 'Non se atopou dominio algΓΊn.'; + $lang['strcreatedomain'] = 'Crear un dominio'; + $lang['strdomaindropped'] = 'Eliminouse o dominio.'; + $lang['strdomaindroppedbad'] = 'Non se conseguiu eliminar o dominio.'; + $lang['strconfdropdomain'] = 'EstΓ‘ seguro de que quere eliminar o dominio Β«%sΒ»?'; + $lang['strdomainneedsname'] = 'Debe fornecer un nome para o dominio.'; + $lang['strdomaincreated'] = 'Creouse o dominio.'; + $lang['strdomaincreatedbad'] = 'Non se conseguiu crear o dominio.'; + $lang['strdomainaltered'] = 'Modificouse o dominio.'; + $lang['strdomainalteredbad'] = 'Non se conseguiu modificar o dominio.'; + + // Operators + $lang['stroperator'] = 'Operador'; + $lang['stroperators'] = 'Operadores'; + $lang['strshowalloperators'] = 'Listar todos os operadores'; + $lang['strnooperator'] = 'Non se atopou operador algΓΊn.'; + $lang['strnooperators'] = 'Non se atopou operador algΓΊn.'; + $lang['strcreateoperator'] = 'Crear un operador'; + $lang['strleftarg'] = 'Tipo do argumento esquerdo'; + $lang['strrightarg'] = 'Tipo do argumento dereito'; + $lang['strcommutator'] = 'Conmutador'; + $lang['strnegator'] = 'NegaciΓ³n'; + $lang['strrestrict'] = 'Restrinxir'; + $lang['strjoin'] = 'Unir'; + $lang['strhashes'] = 'Hashes'; // Non sei como traducilo. + $lang['strmerges'] = 'Mesturas'; + $lang['strleftsort'] = 'Ordenar pola esquerda'; + $lang['strrightsort'] = 'Ordenar pola dereita'; + $lang['strlessthan'] = 'Menor que'; + $lang['strgreaterthan'] = 'Maior que'; + $lang['stroperatorneedsname'] = 'Debe fornecer un nome para o operador.'; + $lang['stroperatorcreated'] = 'Creouse o operador.'; + $lang['stroperatorcreatedbad'] = 'Non se conseguiu crear o operador.'; + $lang['strconfdropoperator'] = 'EstΓ‘ seguro de que quere eliminar o operador Β«%sΒ»?'; + $lang['stroperatordropped'] = 'Eliminouse o operador.'; + $lang['stroperatordroppedbad'] = 'Non se conseguiu eliminar o operador.'; + + // Casts + $lang['strcasts'] = 'Molde'; + $lang['strnocasts'] = 'Non se atopou molde algΓΊn.'; + $lang['strsourcetype'] = 'Tipo orixe'; + $lang['strtargettype'] = 'Tipo obxectivo'; + $lang['strimplicit'] = 'ImplΓ­cito'; + $lang['strinassignment'] = 'Na asignaciΓ³n'; + $lang['strbinarycompat'] = '(Compatible a nivel binario)'; + + // Conversions + $lang['strconversions'] = 'ConversiΓ³ns'; + $lang['strnoconversions'] = 'Non se atopou conversiΓ³n algunha.'; + $lang['strsourceencoding'] = 'CodificaciΓ³n orixinal'; + $lang['strtargetencoding'] = 'CodificaciΓ³n obxectivo'; + + // Languages + $lang['strlanguages'] = 'Linguas'; + $lang['strnolanguages'] = 'Non se atopou lingua algunha.'; + $lang['strtrusted'] = 'De confianza'; + + // Info + $lang['strnoinfo'] = 'Non hai informaciΓ³n dispoΓ±ible.'; + $lang['strreferringtables'] = 'TΓ‘boas que fan referencia a esta'; + $lang['strparenttables'] = 'TΓ‘boas superiores'; + $lang['strchildtables'] = 'TΓ‘boas subordinadas'; + + // Aggregates + $lang['straggregate'] = 'Conxunto'; + $lang['straggregates'] = 'Conxuntos'; + $lang['strnoaggregates'] = 'Non se atopou conxunto algΓΊn.'; + $lang['stralltypes'] = '(Todos os tipos)'; + $lang['strcreateaggregate'] = 'Crear un conxunto'; + $lang['straggrbasetype'] = 'Tipo de dato de entrada'; + $lang['straggrsfunc'] = 'FunciΓ³n de cambio de estado'; + $lang['straggrstype'] = 'Tipo de dato para o valor do estado'; + $lang['straggrffunc'] = 'FunciΓ³n final'; + $lang['straggrinitcond'] = 'CondiciΓ³n inicial'; + $lang['straggrsortop'] = 'Operador de orde'; + $lang['strconfdropaggregate'] = 'EstΓ‘ seguro de que quere eliminar o conxunto Β«%sΒ»?'; + $lang['straggregatedropped'] = 'Eliminouse o conxunto.'; + $lang['straggregatedroppedbad'] = 'Non se conseguiu eliminar o conxunto.'; + $lang['straggraltered'] = 'Modificouse o conxunto.'; + $lang['straggralteredbad'] = 'Non se conseguiu eliminar o conxunto.'; + $lang['straggrneedsname'] = 'Debe fornecer un nome para o conxunto.'; + $lang['straggrneedsbasetype'] = 'Debe fornecer un tipo de dato de entrada para o conxunto.'; + $lang['straggrneedssfunc'] = 'Debe fornecer o nome da funciΓ³n de cambio de estado para o conxunto.'; + $lang['straggrneedsstype'] = 'Debe fornecer un tipo de dato para o valor do estado do conxunto.'; + $lang['straggrcreated'] = 'Creouse o conxunto.'; + $lang['straggrcreatedbad'] = 'Non se conseguiu crear o conxunto.'; + $lang['straggrshowall'] = 'Listar todos os conxuntos'; + + // Operator Classes + $lang['stropclasses'] = 'Clases de operador'; + $lang['strnoopclasses'] = 'Non se atopor clase de operador algunha.'; + $lang['straccessmethod'] = 'MΓ©todo de acceso'; + + // Stats and performance + $lang['strrowperf'] = 'Rendemento das filas'; + $lang['strioperf'] = 'Rendemento da entrada e saΓ­da'; + $lang['stridxrowperf'] = 'Rendemento das filas do Γ­ndice'; + $lang['stridxioperf'] = 'Rendemento da entrada e saΓ­da do Γ­ndice'; + $lang['strpercent'] = '%'; + $lang['strsequential'] = 'Secuencial'; + $lang['strscan'] = 'Explorar'; + $lang['strread'] = 'Ler'; + $lang['strfetch'] = 'Obter'; + $lang['strheap'] = 'Pila'; + $lang['strtoast'] = 'TOAST'; // Non traduzo por se son siglas, que non o teΓ±o claro. + $lang['strtoastindex'] = 'Índice TOAST'; + $lang['strcache'] = 'CachΓ©'; + $lang['strdisk'] = 'Disco'; + $lang['strrows2'] = 'Filas'; + + // Tablespaces + $lang['strtablespace'] = 'Alias de ruta'; + $lang['strtablespaces'] = 'Alias de ruta'; + $lang['strshowalltablespaces'] = 'Listar todos os alias de ruta'; + $lang['strnotablespaces'] = 'Non se atopou alias de ruta algΓΊn.'; + $lang['strcreatetablespace'] = 'Crear un alias de ruta'; + $lang['strlocation'] = 'Lugar'; + $lang['strtablespaceneedsname'] = 'Debe fornecer un nome para o alias de ruta.'; + $lang['strtablespaceneedsloc'] = 'Debe fornecer unha ruta para a que crear o alias.'; + $lang['strtablespacecreated'] = 'Creouse o alias de ruta.'; + $lang['strtablespacecreatedbad'] = 'non se conseguiu crear o alias de ruta.'; + $lang['strconfdroptablespace'] = 'EstΓ‘ seguro de que quere borrar o alias de ruta Β«%sΒ»?'; + $lang['strtablespacedropped'] = 'Eliminouse o alias de ruta.'; + $lang['strtablespacedroppedbad'] = 'Non se conseguiu eliminar o alias de ruta.'; + $lang['strtablespacealtered'] = 'Modificouse o alias de ruta.'; + $lang['strtablespacealteredbad'] = 'Non se conseguiu modificar o alias de ruta.'; + + // Miscellaneous + $lang['strtopbar'] = '%s, executΓ‘ndose no enderezo %s:%s. EstΓ‘ identificado coma Β«%sΒ».'; + $lang['strtimefmt'] = 'd/m/Y, G:i:s'; + $lang['strhelp'] = 'Axuda'; + $lang['strhelpicon'] = '?'; + $lang['strhelppagebrowser'] = 'Navegador das pΓ‘xinas de axuda'; + $lang['strselecthelppage'] = 'Escolla unha pΓ‘xina de axuda'; + $lang['strinvalidhelppage'] = 'PΓ‘xina de axuda incorrecta.'; + $lang['strlogintitle'] = 'Identificarse en %s'; + $lang['strlogoutmsg'] = 'SaΓ­u de %s'; + $lang['strloading'] = 'Cargando...'; + $lang['strerrorloading'] = 'Produciuse un erro durante o proceso de carga'; + $lang['strclicktoreload'] = 'Prema aquΓ­ para recargar'; + + // Autovacuum + $lang['strautovacuum'] = 'PurgaciΓ³n automΓ‘tica'; + $lang['strturnedon'] = 'Acendido'; + $lang['strturnedoff'] = 'Apagado'; + $lang['strenabled'] = 'Activado'; + $lang['strnovacuumconf'] = 'Non se atopou ningunha configuraciΓ³n para purgaciΓ³ns automΓ‘ticas.'; + $lang['strvacuumbasethreshold'] = 'LΓ­mite da base da purgaciΓ³n'; + $lang['strvacuumscalefactor'] = 'Factores de escala da purgaciΓ³n'; + $lang['stranalybasethreshold'] = 'LΓ­mite da base da anΓ‘lise'; + $lang['stranalyzescalefactor'] = 'Factores de escala da anΓ‘lise'; + $lang['strvacuumcostdelay'] = 'Atraso do custo da purgaciΓ³n'; + $lang['strvacuumcostlimit'] = 'Custo lΓ­mite da purgaciΓ³n'; + $lang['strvacuumpertable'] = 'ConfiguraciΓ³n da purgaciΓ³n automΓ‘tica por tΓ‘boa'; + $lang['straddvacuumtable'] = 'Engadir unha configuraciΓ³n de purgaciΓ³n automΓ‘tica dunha tΓ‘boa'; + $lang['streditvacuumtable'] = 'Modificar a configuraciΓ³n de purgaciΓ³n automΓ‘tica da tΓ‘boa Β«%sΒ»'; + $lang['strdelvacuumtable'] = 'EstΓ‘ seguro de que quere eliminar a configuraciΓ³n de purgaciΓ³n automΓ‘tica da tΓ‘boa Β«%sΒ»?'; + $lang['strvacuumtablereset'] = 'A configuraciΓ³n de purgaciΓ³n automΓ‘tica da tΓ‘boa Β«%sΒ» restableceuse aos seus valores predeterminados'; + $lang['strdelvacuumtablefail'] = 'Non se conseguiu eliminar a configuraciΓ³n de purgaciΓ³n automΓ‘tica da tΓ‘boa Β«%sΒ»'; + $lang['strsetvacuumtablesaved'] = 'Gardouse a configuraciΓ³n de purgaciΓ³n automΓ‘tica da tΓ‘boa Β«%sΒ».'; + $lang['strsetvacuumtablefail'] = 'Non se conseguiu gardar a configuraciΓ³n de purgaciΓ³n automΓ‘tica da tΓ‘boa Β«%sΒ».'; + $lang['strspecifydelvacuumtable'] = 'Debe especificar unha tΓ‘boa da que borrar os parΓ‘metros de purgaciΓ³n.'; + $lang['strspecifyeditvacuumtable'] = 'Debe especificar unha tΓ‘boa na que modificar os parΓ‘metros de purgaciΓ³n.'; + $lang['strnotdefaultinred'] = 'Os valores que non sexan os predeterminados estΓ‘n en cor vermella.'; + + // Table-level Locks + $lang['strlocks'] = 'Bloqueos'; + $lang['strtransaction'] = 'Identificador da transacciΓ³n'; + $lang['strvirtualtransaction'] = 'Identificador da transacciΓ³n virtual'; + $lang['strprocessid'] = 'Identificador do proceso'; + $lang['strmode'] = 'Modo de bloqueo'; + $lang['strislockheld'] = 'EstΓ‘ activo o bloqueo?'; + + // Prepared transactions + $lang['strpreparedxacts'] = 'TransacciΓ³ns preparadas'; + $lang['strxactid'] = 'Identificador da transacciΓ³n'; + $lang['strgid'] = 'Identificador global'; + + // Fulltext search + $lang['strfulltext'] = 'Busca de texto completa'; + $lang['strftsconfig'] = 'ConfiguraciΓ³n de BTC'; + $lang['strftsconfigs'] = 'ConfiguraciΓ³ns'; + $lang['strftscreateconfig'] = 'Crear unha configuraciΓ³n de BTC'; + $lang['strftscreatedict'] = 'Crear un dicionario'; + $lang['strftscreatedicttemplate'] = 'Crear un modelo de dicionario'; + $lang['strftscreateparser'] = 'Crear un analizador'; + $lang['strftsnoconfigs'] = 'Non se atopou configuraciΓ³n de BTC algunha.'; + $lang['strftsconfigdropped'] = 'Eliminouse a configuraciΓ³n de BTC.'; + $lang['strftsconfigdroppedbad'] = 'Non se conseguiu eliminar a configuraciΓ³n de BTC.'; + $lang['strconfdropftsconfig'] = 'EstΓ‘ seguro de que quere eliminar a configuraciΓ³n de BTC Β«%sΒ»?'; + $lang['strconfdropftsdict'] = 'EstΓ‘ seguro de que quere eliminar o dicionario de BTC Β«%sΒ»?'; + $lang['strconfdropftsmapping'] = 'EstΓ‘ seguro de que quere eliminar a aplicaciΓ³n Β«%sΒ» da configuraciΓ³n de BTC Β«%sΒ»?'; + $lang['strftstemplate'] = 'Modelo'; + $lang['strftsparser'] = 'Analizador'; + $lang['strftsconfigneedsname'] = 'Debe fornecer un nome para a configuraciΓ³n de BTC.'; + $lang['strftsconfigcreated'] = 'Creouse a configuraciΓ³n de BTC.'; + $lang['strftsconfigcreatedbad'] = 'non se conseguiu crear a configuraciΓ³n de BTC.'; + $lang['strftsmapping'] = 'AplicaciΓ³n'; + $lang['strftsdicts'] = 'Dicionarios'; + $lang['strftsdict'] = 'Dicionario'; + $lang['strftsemptymap'] = 'AplicaciΓ³n da configuraciΓ³n de BTC baleira.'; + $lang['strftsconfigaltered'] = 'Modificouse a configuraciΓ³n de BTC.'; + $lang['strftsconfigalteredbad'] = 'Non se conseguiu modificar a configuraciΓ³n de BTC.'; + $lang['strftsconfigmap'] = 'AplicaciΓ³n da configuraciΓ³n de BTC'; + $lang['strftsparsers'] = 'Analizadores de BTC'; + $lang['strftsnoparsers'] = 'Non hai ningΓΊn analizador de BTC dispoΓ±ible.'; + $lang['strftsnodicts'] = 'Non hai ningΓΊn dicionario de BTC dispoΓ±ible.'; + $lang['strftsdictcreated'] = 'Creouse o dicionario de BTC.'; + $lang['strftsdictcreatedbad'] = 'Non se conseguiu crear o dicionario de BTC.'; + $lang['strftslexize'] = 'AnΓ‘lise lΓ©xica'; + $lang['strftsinit'] = 'Comezo'; + $lang['strftsoptionsvalues'] = 'OpciΓ³ns e valores'; + $lang['strftsdictneedsname'] = 'Debe fornecer un nome para o dicionario de BTC.'; + $lang['strftsdictdropped'] = 'Eliminouse o dicionario de BTC.'; + $lang['strftsdictdroppedbad'] = 'Non se conseguiu eliminar o dicionario de BTC.'; + $lang['strftsdictaltered'] = 'Modificouse o dicionario de BTC.'; + $lang['strftsdictalteredbad'] = 'Non se conseguiu modifica o dicionario de BTC.'; + $lang['strftsaddmapping'] = 'Engadir unha nova aplicaciΓ³n'; + $lang['strftsspecifymappingtodrop'] = 'Debe especificar polo menos unha aplicaciΓ³n a eliminar.'; + $lang['strftsspecifyconfigtoalter'] = 'Debe especificar polo menos unha configuraciΓ³n de BTC a modificar'; + $lang['strftsmappingdropped'] = 'Eliminouse a aplicaciΓ³n de BTC.'; + $lang['strftsmappingdroppedbad'] = 'Non se conseguiu eliminar a aplicaciΓ³n de BTC.'; + $lang['strftsnodictionaries'] = 'Non se atopou dicionario algΓΊn.'; + $lang['strftsmappingaltered'] = 'Modificouse a aplicaciΓ³n de BTC.'; + $lang['strftsmappingalteredbad'] = 'Non se conseguiu modificar a aplicaciΓ³n de BTC.'; + $lang['strftsmappingadded'] = 'Engadiuse a aplicaciΓ³n de BTC.'; + $lang['strftsmappingaddedbad'] = 'Non se conseguiu engadir a aplicaciΓ³n de BTC.'; + $lang['strftstabconfigs'] = 'ConfiguraciΓ³ns'; + $lang['strftstabdicts'] = 'Dicionarios'; + $lang['strftstabparsers'] = 'Analizadores'; + $lang['strftscantparsercopy'] = 'Non se pode especificar tanto un analizador coma un modelo durante a creaciΓ³n dunha configuraciΓ³n de busca de texto.'; +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/german.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/german.php new file mode 100644 index 00000000..a1a0a449 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/german.php @@ -0,0 +1,852 @@ + + * + * $Id: german.php,v 1.30 2008/02/18 23:06:51 ioguix Exp $ + */ + + // Language and character set + $lang['applang'] = 'Deutsch'; + $lang['applocale'] = 'de-DE'; + $lang['applangdir'] = 'ltr'; + + // Welcome + $lang['strintro'] = 'Willkommen bei phpPgAdmin.'; + $lang['strppahome'] = 'phpPgAdmin Homepage'; + $lang['strpgsqlhome'] = 'PostgreSQL Homepage'; + $lang['strpgsqlhome_url'] = 'http://www.postgresql.org/'; + $lang['strlocaldocs'] = 'PostgreSQL Dokumentation (lokal)'; + $lang['strreportbug'] = 'Fehler melden'; + $lang['strviewfaq'] = 'Online-FAQ ansehen'; + $lang['strviewfaq_url'] = 'http://phppgadmin.sourceforge.net/doku.php?id=faq'; + + // Basic strings + $lang['strlogin'] = 'Anmelden'; + $lang['strloginfailed'] = 'Anmeldung fehlgeschlagen'; + $lang['strlogindisallowed'] = 'Anmeldung aus SicherheitsgrΓΌnden verweigert.'; + $lang['strserver'] = 'Server'; + $lang['strservers'] = 'Server'; + $lang['strintroduction'] = 'EinfΓΌhrung'; + $lang['strhost'] = 'Host'; + $lang['strport'] = 'Port'; + $lang['strlogout'] = 'Abmelden'; + $lang['strowner'] = 'Besitzer'; + $lang['straction'] = 'Aktion'; + $lang['stractions'] = 'Aktionen'; + $lang['strname'] = 'Name'; + $lang['strdefinition'] = 'Definition'; + $lang['strproperties'] = 'Eigenschaften'; + $lang['strbrowse'] = 'Durchsuchen'; + $lang['strenable'] = 'Einschalten'; + $lang['strdisable'] = 'Ausschalten'; + $lang['strdrop'] = 'LΓΆschen'; + $lang['strdropped'] = 'GelΓΆscht'; + $lang['strnull'] = 'Null'; + $lang['strnotnull'] = 'Nicht Null'; + $lang['strprev'] = '< ZurΓΌck'; + $lang['strnext'] = 'Weiter >'; + $lang['strfirst'] = '<< Anfang'; + $lang['strlast'] = 'Ende >>'; + $lang['strfailed'] = 'Fehlgeschlagen'; + $lang['strcreate'] = 'Erstellen'; + $lang['strcreated'] = 'Erstellt'; + $lang['strcomment'] = 'Kommentar'; + $lang['strlength'] = 'LΓ€nge'; + $lang['strdefault'] = 'Standardwert'; + $lang['stralter'] = 'Γ„ndern'; + $lang['strok'] = 'OK'; + $lang['strcancel'] = 'Abbrechen'; + $lang['strac'] = 'Automatische VervollstΓ€ndigung einschalten'; + $lang['strsave'] = 'Speichern'; + $lang['strreset'] = 'ZurΓΌcksetzen'; + $lang['strinsert'] = 'EinfΓΌgen'; + $lang['strselect'] = 'Abfrage'; + $lang['strdelete'] = 'LΓΆschen'; + $lang['strupdate'] = 'Γ„ndern'; + $lang['strreferences'] = 'Verweise'; + $lang['stryes'] = 'Ja'; + $lang['strno'] = 'Nein'; + $lang['strtrue'] = 'WAHR'; + $lang['strfalse'] = 'FALSCH'; + $lang['stredit'] = 'Bearbeiten'; + $lang['strcolumn'] = 'Spalte'; + $lang['strcolumns'] = 'Spalten'; + $lang['strrows'] = 'DatensΓ€tze'; + $lang['strrowsaff'] = 'DatensΓ€tze betroffen.'; + $lang['strobjects'] = 'Objekt(e)'; + $lang['strback'] = 'ZurΓΌck'; + $lang['strqueryresults'] = 'Abfrageergebnis'; + $lang['strshow'] = 'Anzeigen'; + $lang['strempty'] = 'Leeren'; + $lang['strlanguage'] = 'Sprache'; + $lang['strencoding'] = 'Zeichenkodierung'; + $lang['strvalue'] = 'Wert'; + $lang['strunique'] = 'Eindeutig'; + $lang['strprimary'] = 'PrimΓ€r'; + $lang['strexport'] = 'Exportieren'; + $lang['strimport'] = 'Importieren'; + $lang['strallowednulls'] = 'NULL-Zeichen erlaubt'; + $lang['strbackslashn'] = '\N'; + $lang['stremptystring'] = 'Leere Zeichenkette / Leere Spalte'; + $lang['strsql'] = 'SQL'; + $lang['stradmin'] = 'Admin'; + $lang['strvacuum'] = 'Bereinigen'; + $lang['stranalyze'] = 'Analysieren'; + $lang['strclusterindex'] = 'Cluster'; + $lang['strclustered'] = 'Geclustert?'; + $lang['strreindex'] = 'Reindexieren'; + $lang['strexecute'] = 'AusfΓΌhren'; + $lang['stradd'] = 'HinzufΓΌgen'; + $lang['strevent'] = 'Ereignis'; + $lang['strwhere'] = 'Bedingung'; + $lang['strinstead'] = 'Tu stattdessen'; + $lang['strwhen'] = 'Wann'; + $lang['strformat'] = 'Format'; + $lang['strdata'] = 'Daten'; + $lang['strconfirm'] = 'BestΓ€tigen'; + $lang['strexpression'] = 'Ausdruck'; + $lang['strellipsis'] = '...'; + $lang['strseparator'] = ': '; + $lang['strexpand'] = 'Aufklappen'; + $lang['strcollapse'] = 'Zuklappen'; + $lang['strfind'] = 'Suchen'; + $lang['stroptions'] = 'Optionen'; + $lang['strrefresh'] = 'Aktualisieren'; + $lang['strdownload'] = 'Herunterladen'; + $lang['strdownloadgzipped'] = 'gzip-komprimiert herunterladen'; + $lang['strinfo'] = 'Info'; + $lang['stroids'] = 'OIDs'; + $lang['stradvanced'] = 'Erweitert'; + $lang['strvariables'] = 'Variable'; + $lang['strprocess'] = 'Prozess'; + $lang['strprocesses'] = 'Prozesse'; + $lang['strsetting'] = 'Einstellung'; + $lang['streditsql'] = 'SQL bearbeiten'; + $lang['strruntime'] = 'Laufzeit gesamt: %s ms'; + $lang['strpaginate'] = 'Ergebnisse seitenweise anzeigen'; + $lang['struploadscript'] = 'oder laden Sie ein SQL-Script hoch:'; + $lang['strstarttime'] = 'Beginnzeitpunkt'; + $lang['strfile'] = 'Datei'; + $lang['strfileimported'] = 'Datei importiert.'; + $lang['strtrycred'] = 'Diese Anmeldedaten fΓΌr alle Server verwenden'; + $lang['strconfdropcred'] = 'Aus SicherheitsgrΓΌnden werden gemeinsamme Anmeldedaten beim Abmelden gelΓΆscht. Sind Sie sicher, dass sie sich abmelden wollen?'; + $lang['stractionsonmultiplelines'] = 'Mehrzeilige Aktionen'; + $lang['strselectall'] = 'Alle auswΓ€hlen'; + $lang['strunselectall'] = 'Alle abwΓ€hlen'; + $lang['strlocale'] = 'Spracheinstellung'; + $lang['strcluster'] = 'Cluster'; + + // User-supplied SQL history + $lang['strhistory'] = 'Befehlsspeicher'; + $lang['strnohistory'] = 'Kein Befehlsspeicher.'; + $lang['strclearhistory'] = 'Befehlsspeicher lΓΆschen'; + $lang['strdelhistory'] = 'Aus dem Befehlsspeicher lΓΆschen'; + $lang['strconfdelhistory'] = 'Diese Abfrage wirklich aus dem Befehlsspeicher lΓΆschen?'; + $lang['strconfclearhistory'] = 'Befehlsspeicher wirklich lΓΆschen?'; + $lang['strnodatabaseselected'] = 'Bitte wΓ€hlen Sie eine Datenbank aus.'; + + // Database sizes + $lang['strsize'] = 'Grâße'; + $lang['strbytes'] = 'Bytes'; + $lang['strkb'] = 'kB'; + $lang['strmb'] = 'MB'; + $lang['strgb'] = 'GB'; + $lang['strtb'] = 'TB'; + + // Error handling + $lang['strnoframes'] = 'Diese Anwendung funktioniert am besten mit einem Browser, der Frames beherrscht, kann aber mit dem untenstehenden Link auch ohne Frames verwendet werden.'; + $lang['strnoframeslink'] = 'Ohne Frames arbeiten'; + $lang['strbadconfig'] = 'Ihre config.inc.php ist nicht aktuell. Sie mΓΌssen sie aus der config.inc.php-dist neu erzeugen.'; + $lang['strnotloaded'] = 'Ihre PHP-Installation unterstΓΌtzt PostgreSQL nicht. Sie mΓΌssen PHP unter Verwendung der Konfigurationsoption --with-pgsql neu kompilieren.'; + $lang['strpostgresqlversionnotsupported'] = 'Ihre PostgreSQL-Version wird nicht unterstΓΌtzt. Bitte stellen Sie Ihre Datenbank auf Version %s oder eine neuere Version um.'; + $lang['strbadschema'] = 'UngΓΌltiges Schema angegeben.'; + $lang['strbadencoding'] = 'Kann die Client-Zeichenkodierung nicht in der Datenbank setzen.'; + $lang['strsqlerror'] = 'SQL-Fehler:'; + $lang['strinstatement'] = 'In der Anweisung:'; + $lang['strinvalidparam'] = 'UnzulΓ€ssige Script-Parameter.'; + $lang['strnodata'] = 'Keine DatensΓ€tze gefunden.'; + $lang['strnoobjects'] = 'Keine Objekte gefunden.'; + $lang['strrownotunique'] = 'Dieser Datensatz hat keine eindeutige Spalte.'; + $lang['strnouploads'] = 'Das Hochladen von Dateien ist ausgeschaltet.'; + $lang['strimporterror'] = 'Importfehler.'; + $lang['strimporterror-fileformat'] = 'Importfehler: Dateiformat konnte nicht automatisch bestimmt werden.'; + $lang['strimporterrorline'] = 'Importfehler in Zeile %s.'; + $lang['strimporterrorline-badcolumnnum'] = 'Importfehler in Zeile %s: die Zeile hat nicht die richtige Anzahl von Spalten.'; + $lang['strimporterror-uploadedfile'] = 'Importfehler: die Datei konnte nicht auf den Server geladen werden'; + $lang['strcannotdumponwindows'] = 'Das Ablegen von komplizierten Tabellen- und Schemanamen wird auf Windows nicht unterstΓΌtzt.'; + $lang['strinvalidserverparam'] = 'Es wurde versucht, mit einem ungΓΌltigen Server-Parameter eine Verbindung herzustellen. MΓΆglicherweise versucht jemand, in Ihr System einzubrechen.'; + $lang['strnoserversupplied'] = 'Kein Server angegeben!'; + + // Tables + $lang['strtable'] = 'Tabelle'; + $lang['strtables'] = 'Tabellen'; + $lang['strshowalltables'] = 'Alle Tabellen anzeigen'; + $lang['strnotables'] = 'Keine Tabellen gefunden.'; + $lang['strnotable'] = 'Keine Tabelle gefunden.'; + $lang['strcreatetable'] = 'Neue Tabelle erstellen'; + $lang['strcreatetablelike'] = 'Neue Tabelle als Kopie einer bestehenden anlegen'; + $lang['strcreatetablelikeparent'] = 'UrsprΓΌngliche Tabelle'; + $lang['strcreatelikewithdefaults'] = 'DEFAULT-Werte mitkopieren'; + $lang['strcreatelikewithconstraints'] = 'Constraints mitkopieren'; + $lang['strcreatelikewithindexes'] = 'Indizes mitkopieren'; + $lang['strtablename'] = 'Tabellenname'; + $lang['strtableneedsname'] = 'Sie mΓΌssen fΓΌr die Tabelle einen Namen angeben.'; + $lang['strtablelikeneedslike'] = 'Sie mΓΌssen eine Tabelle angeben, deren Spaltendefinitionen kopiert werden sollen.'; + $lang['strtableneedsfield'] = 'Sie mΓΌssen mindestens eine Spalte angeben.'; + $lang['strtableneedscols'] = 'Sie mΓΌssen eine zulΓ€ssige Anzahl von Spalten angeben.'; + $lang['strtablecreated'] = 'Tabelle erstellt.'; + $lang['strtablecreatedbad'] = 'Erstellen der Tabelle fehlgeschlagen.'; + $lang['strconfdroptable'] = 'Sind Sie sicher, dass Sie die Tabelle "%s" lΓΆschen mΓΆchten?'; + $lang['strtabledropped'] = 'Tabelle gelΓΆscht.'; + $lang['strtabledroppedbad'] = 'LΓΆschen der Tabelle fehlgeschlagen.'; + $lang['strconfemptytable'] = 'Sind Sie sicher, dass Sie den Inhalt der Tabelle "%s" lΓΆschen mΓΆchten?'; + $lang['strtableemptied'] = 'Tabelleninhalt gelΓΆscht.'; + $lang['strtableemptiedbad'] = 'LΓΆschen des Tabelleninhaltes fehlgeschlagen.'; + $lang['strinsertrow'] = 'Datensatz einfΓΌgen'; + $lang['strrowinserted'] = 'Datensatz eingefΓΌgt.'; + $lang['strrowinsertedbad'] = 'EinfΓΌgen des Datensatzes fehlgeschlagen.'; + $lang['strrowduplicate'] = 'EinfΓΌgen des Datensatzes fehlgeschlagen: es wurde versucht, ein Duplikat einzufΓΌgen.'; + $lang['streditrow'] = 'Datensatz bearbeiten'; + $lang['strrowupdated'] = 'Datensatz geΓ€ndert.'; + $lang['strrowupdatedbad'] = 'Γ„ndern des Datensatzes fehlgeschlagen.'; + $lang['strdeleterow'] = 'Datensatz lΓΆschen'; + $lang['strconfdeleterow'] = 'Sind Sie sicher, dass Sie diesen Datensatz lΓΆschen mΓΆchten?'; + $lang['strrowdeleted'] = 'Datensatz gelΓΆscht.'; + $lang['strrowdeletedbad'] = 'LΓΆschen des Datensatzes fehlgeschlagen.'; + $lang['strinsertandrepeat'] = 'EinfΓΌgen und Wiederholen'; + $lang['strnumcols'] = 'Anzahl der Spalten'; + $lang['strcolneedsname'] = 'Sie mΓΌssen einen Namen fΓΌr die Spalte angeben'; + $lang['strselectallfields'] = 'Alle Felder auswΓ€hlen'; + $lang['strselectneedscol'] = 'Sie mΓΌssen mindestens eine Spalte anzeigen lassen.'; + $lang['strselectunary'] = 'UnΓ€re Operatoren kΓΆnnen keine Werte haben.'; + $lang['strcolumnaltered'] = 'Spalte geΓ€ndert.'; + $lang['strcolumnalteredbad'] = 'Γ„ndern der Spalte fehlgeschlagen.'; + $lang['strconfdropcolumn'] = 'Sind Sie sicher, dass Sie die Spalte "%s" aus der Tabelle "%s" lΓΆschen mΓΆchten?'; + $lang['strcolumndropped'] = 'Spalte gelΓΆscht.'; + $lang['strcolumndroppedbad'] = 'LΓΆschen der Spalte fehlgschlagen.'; + $lang['straddcolumn'] = 'Spalte hinzufΓΌgen'; + $lang['strcolumnadded'] = 'Spalte hinzugefΓΌgt.'; + $lang['strcolumnaddedbad'] = 'HinzufΓΌgen der Spalte fehlgeschlagen.'; + $lang['strcascade'] = 'CASCADE'; + $lang['strtablealtered'] = 'Tabelle geΓ€ndert.'; + $lang['strtablealteredbad'] = 'Γ„ndern der Tabelle fehlgeschlagen.'; + $lang['strdataonly'] = 'Nur die Daten'; + $lang['strstructureonly'] = 'Nur die Struktur'; + $lang['strstructureanddata'] = 'Struktur und Daten'; + $lang['strtabbed'] = 'Mit Tabluatoren'; + $lang['strauto'] = 'Automatisch'; + $lang['strconfvacuumtable'] = 'Sind sie sicher, dass Sie VACUUM auf "%s" ausfΓΌhren wollen?'; + $lang['strconfanalyzetable'] = 'Sind sie sicher, dass Sie ANALYZE auf "%s" ausfΓΌhren wollen?'; + $lang['strestimatedrowcount'] = 'GeschΓ€tzte Anzahl von DatensΓ€tzen'; + $lang['strspecifytabletoanalyze'] = 'Sie mΓΌssen mindestens eine Tabelle angeben, die analysiert werden soll.'; + $lang['strspecifytabletoempty'] = 'Sie mΓΌssen mindestens eine Tabelle angeben, deren Inhalt gelΓΆscht werden soll.'; + $lang['strspecifytabletodrop'] = 'Sie mΓΌssen mindestens eine Tabelle angeben, die gelΓΆscht werden soll.'; + $lang['strspecifytabletovacuum'] = 'Sie mΓΌssen mindestens eine Tabelle angeben, die bereinigt werden soll.'; + + // Columns + $lang['strcolprop'] = 'Spalteneigenschaften'; + $lang['strnotableprovided'] = 'Keine Tabelle angegeben!'; + + // Users + $lang['struser'] = 'Benutzer'; + $lang['strusers'] = 'Benutzer'; + $lang['strusername'] = 'Benutzername'; + $lang['strpassword'] = 'Passwort'; + $lang['strsuper'] = 'Superuser?'; + $lang['strcreatedb'] = 'Datenbank erstellen?'; + $lang['strexpires'] = 'GΓΌltig bis'; + $lang['strsessiondefaults'] = 'Standardwerte fΓΌr Datenbanksitzungen'; + $lang['strnousers'] = 'Keine Benutzer gefunden.'; + $lang['struserupdated'] = 'Benutzer geΓ€ndert.'; + $lang['struserupdatedbad'] = 'Γ„ndern des Benutzers fehlgeschlagen.'; + $lang['strshowallusers'] = 'Alle Benutzer anzeigen'; + $lang['strcreateuser'] = 'Benutzer anlegen'; + $lang['struserneedsname'] = 'Sie mΓΌssen einen Namen fΓΌr den Benutzer angeben.'; + $lang['strusercreated'] = 'Benutzer angelegt.'; + $lang['strusercreatedbad'] = 'Anlegen des Benutzers fehlgeschlagen.'; + $lang['strconfdropuser'] = 'Sind Sie sicher, dass Sie den Benutzer "%s" lΓΆschen mΓΆchten?'; + $lang['struserdropped'] = 'Benutzer gelΓΆscht.'; + $lang['struserdroppedbad'] = 'LΓΆschen des Benutzers fehlgeschlagen.'; + $lang['straccount'] = 'Benutzerkonto'; + $lang['strchangepassword'] = 'Passwort Γ€ndern'; + $lang['strpasswordchanged'] = 'Passwort geΓ€ndert.'; + $lang['strpasswordchangedbad'] = 'Γ„ndern des Passwortes fehlgeschlagen.'; + $lang['strpasswordshort'] = 'Passwort ist zu kurz.'; + $lang['strpasswordconfirm'] = 'Passwort und PasswortbestΓ€tigung stimmen nicht ΓΌberein.'; + + // Groups + $lang['strgroup'] = 'Gruppe'; + $lang['strgroups'] = 'Gruppen'; + $lang['strshowallgroups'] = 'Alle Gruppen anzeigen'; + $lang['strnogroup'] = 'Gruppe nicht gefunden.'; + $lang['strnogroups'] = 'Keine Gruppe gefunden.'; + $lang['strcreategroup'] = 'Gruppe anlegen'; + $lang['strgroupneedsname'] = 'Sie mΓΌssen fΓΌr die Gruppe einen Namen angeben.'; + $lang['strgroupcreated'] = 'Gruppe angelegt.'; + $lang['strgroupcreatedbad'] = 'Anlegen der Gruppe fehlgeschlagen.'; + $lang['strconfdropgroup'] = 'Sind Sie sicher, dass Sie die Gruppe "%s" lΓΆschen mΓΆchten?'; + $lang['strgroupdropped'] = 'Gruppe gelΓΆscht.'; + $lang['strgroupdroppedbad'] = 'LΓΆschen der Gruppe fehlgeschlagen.'; + $lang['strmembers'] = 'Mitglieder'; + $lang['strmemberof'] = 'Mitglied von'; + $lang['stradminmembers'] = 'Administrative Mitglieder'; + $lang['straddmember'] = 'Mitglied hinzufΓΌgen'; + $lang['strmemberadded'] = 'Mitglied hinzugefΓΌgt.'; + $lang['strmemberaddedbad'] = 'HinzufΓΌgen des Mitglieds fehlgeschlagen.'; + $lang['strdropmember'] = 'Mitglied lΓΆschen'; + $lang['strconfdropmember'] = 'Sind Sie sicher, dass Sie das Mitglied "%s" aus der Gruppe "%s" lΓΆschen wollen?'; + $lang['strmemberdropped'] = 'Mitglied gelΓΆscht.'; + $lang['strmemberdroppedbad'] = 'LΓΆschen des Mitglieds fehlgeschlagen.'; + + // Roles + $lang['strrole'] = 'Rolle'; + $lang['strroles'] = 'Rollen'; + $lang['strshowallroles'] = 'Alle Rollen anzeigen'; + $lang['strnoroles'] = 'Keine Rollen gefunden.'; + $lang['strinheritsprivs'] = 'Rechte vererben?'; + $lang['strcreaterole'] = 'Rolle anlegen'; + $lang['strcancreaterole'] = 'Darf Rollen anlegen?'; + $lang['strrolecreated'] = 'Rolle angelegt.'; + $lang['strrolecreatedbad'] = 'Anlegen der Rolle fehlgeschlagen.'; + $lang['strrolealtered'] = 'Rolle geΓ€ndert.'; + $lang['strrolealteredbad'] = 'Γ„ndern der Rolle fehlgeschlagen.'; + $lang['strcanlogin'] = 'Darf sich anmelden?'; + $lang['strconnlimit'] = 'Maximalzahl an Datenbankverbindungen'; + $lang['strdroprole'] = 'Rolle lΓΆschen'; + $lang['strconfdroprole'] = 'Sind Sie sicher, dass Sie die Rolle "%s" lΓΆschen mΓΆchten?'; + $lang['strroledropped'] = 'Rolle gelΓΆscht.'; + $lang['strroledroppedbad'] = 'LΓΆschen der Rolle fehlgeschlagen.'; + $lang['strnolimit'] = 'UnbeschrΓ€nkt'; + $lang['strnever'] = 'Nie'; + $lang['strroleneedsname'] = 'Sie mΓΌssen fΓΌr die Rolle einen Namen angeben.'; + + // Privileges + $lang['strprivilege'] = 'Recht'; + $lang['strprivileges'] = 'Rechte'; + $lang['strnoprivileges'] = 'FΓΌr dieses Objekt gelten die Standard-EigentΓΌmerrechte.'; + $lang['strgrant'] = 'Rechte erteilen'; + $lang['strrevoke'] = 'Rechte entziehen'; + $lang['strgranted'] = 'Rechte geΓ€ndert.'; + $lang['strgrantfailed'] = 'Γ„ndern der Rechte fehlgeschlagen.'; + $lang['strgrantbad'] = 'Sie mΓΌssen mindestens einen Benutzer oder eine Gruppe und mindestens ein Recht angeben.'; + $lang['strgrantor'] = 'Recht vergeben von'; + $lang['strasterisk'] = '*'; + + // Databases + $lang['strdatabase'] = 'Datenbank'; + $lang['strdatabases'] = 'Datenbanken'; + $lang['strshowalldatabases'] = 'Alle Datenbanken anzeigen'; + $lang['strnodatabases'] = 'Keine Datenbanken gefunden.'; + $lang['strcreatedatabase'] = 'Datenbank erstellen'; + $lang['strdatabasename'] = 'Datenbankname'; + $lang['strdatabaseneedsname'] = 'Sie mΓΌssen fΓΌr die Datenbank einen Namen angeben.'; + $lang['strdatabasecreated'] = 'Datenbank erstellt.'; + $lang['strdatabasecreatedbad'] = 'Erstellen der Datenbank fehlgeschlagen.'; + $lang['strconfdropdatabase'] = 'Sind Sie sicher, dass Sie die Datenbank "%s" lΓΆschen mΓΆchten?'; + $lang['strdatabasedropped'] = 'Datenbank gelΓΆscht.'; + $lang['strdatabasedroppedbad'] = 'LΓΆschen der Datenbank fehlgeschlagen.'; + $lang['strentersql'] = 'AuszufΓΌhrende SQL-Anweisungen hier eingeben:'; + $lang['strsqlexecuted'] = 'SQL-Anweisungen ausgefΓΌhrt.'; + $lang['strvacuumgood'] = 'Tabellenbereinigung abgeschlossen.'; + $lang['strvacuumbad'] = 'Tabellenbereinigung fehlgeschlagen.'; + $lang['stranalyzegood'] = 'Analyse abgeschlossen.'; + $lang['stranalyzebad'] = 'Analyse fehlgeschlagen.'; + $lang['strreindexgood'] = 'Neuindexierung abgeschlossen.'; + $lang['strreindexbad'] = 'Neuindexierung fehlgeschlagen.'; + $lang['strfull'] = 'Mit Reorganisation'; + $lang['strfreeze'] = 'Aggressives "Einfrieren"'; + $lang['strforce'] = 'Erzwingen'; + $lang['strsignalsent'] = 'Signal gesendet.'; + $lang['strsignalsentbad'] = 'Senden des Signales fehlgeschlagen.'; + $lang['strallobjects'] = 'Alle Objekte'; + $lang['strdatabasealtered'] = 'Datenbank geΓ€ndert.'; + $lang['strdatabasealteredbad'] = 'Γ„ndern der Datenbank fehlgeschlagen.'; + $lang['strspecifydatabasetodrop'] = 'Sie mΓΌssen mindestens eine Datenbank angeben, die gelΓΆscht werden soll.'; + + // Views + $lang['strview'] = 'Sicht'; + $lang['strviews'] = 'Sichten'; + $lang['strshowallviews'] = 'Alle Sichten anzeigen'; + $lang['strnoview'] = 'Keine Sicht gefunden.'; + $lang['strnoviews'] = 'Keine Sichten gefunden.'; + $lang['strcreateview'] = 'Sicht erstellen'; + $lang['strviewname'] = 'Name der Sicht'; + $lang['strviewneedsname'] = 'Sie mΓΌssen fΓΌr die Sicht einen Namen angeben.'; + $lang['strviewneedsdef'] = 'Sie mΓΌssen fΓΌr die Sicht eine Definition angeben.'; + $lang['strviewneedsfields'] = 'Sie mΓΌssen die Spalten angeben, die sie in der Sicht haben wollen.'; + $lang['strviewcreated'] = 'Sicht erstellt.'; + $lang['strviewcreatedbad'] = 'Erstellen der Sicht fehlgeschlagen.'; + $lang['strconfdropview'] = 'Sind Sie sicher, dass Sie die Sicht "%s" lΓΆschen mΓΆchten?'; + $lang['strviewdropped'] = 'Sicht gelΓΆscht.'; + $lang['strviewdroppedbad'] = 'LΓΆschen der Sicht fehlgeschlagen.'; + $lang['strviewupdated'] = 'Sicht geΓ€ndert.'; + $lang['strviewupdatedbad'] = 'Γ„ndern der Sicht fehlgeschlagen.'; + $lang['strviewlink'] = 'Verbindende SchlΓΌssel'; + $lang['strviewconditions'] = 'ZusΓ€tzliche Bedingungen'; + $lang['strcreateviewwiz'] = 'Sicht mit dem Assistenten erstellen'; + $lang['strrenamedupfields'] = 'Doppelte Spalten umbenennen'; + $lang['strdropdupfields'] = 'Doppelte Spalten entfernen'; + $lang['strerrordupfields'] = 'Fehler bei den doppelten Spalten'; + $lang['strviewaltered'] = 'Sicht geΓ€ndert.'; + $lang['strviewalteredbad'] = 'Γ„ndern der Sicht fehlgeschlagen.'; + $lang['strspecifyviewtodrop'] = 'Sie mΓΌssen mindestens eine Sicht angeben, die gelΓΆscht werden soll.'; + + // Sequences + $lang['strsequence'] = 'Sequenz'; + $lang['strsequences'] = 'Sequenzen'; + $lang['strshowallsequences'] = 'Alle Sequenzen anzeigen'; + $lang['strnosequence'] = 'Keine Sequenz gefunden.'; + $lang['strnosequences'] = 'Keine Sequenzen gefunden.'; + $lang['strcreatesequence'] = 'Sequenz erstellen'; + $lang['strlastvalue'] = 'Letzter Wert'; + $lang['strincrementby'] = 'ErhΓΆhen um'; + $lang['strstartvalue'] = 'Startwert'; + $lang['strmaxvalue'] = 'Maximalwert'; + $lang['strminvalue'] = 'Minimalwert'; + $lang['strcachevalue'] = 'Anzahl Werte im Cache'; + $lang['strlogcount'] = 'WAL-ZΓ€hler (log_cnt)'; + $lang['strcancycle'] = 'Zyklisch?'; + $lang['striscalled'] = 'Wird erhΓΆht werden, wenn der nΓ€chste Wert angefordert wird (is_called)?'; + $lang['strsequenceneedsname'] = 'Sie mΓΌssen fΓΌr die Sequenz einen Namen angeben.'; + $lang['strsequencecreated'] = 'Sequenz erstellt.'; + $lang['strsequencecreatedbad'] = 'Erstellen der Sequenz fehlgeschlagen.'; + $lang['strconfdropsequence'] = 'Sind Sie sicher, dass die die Sequenz "%s" lΓΆschen mΓΆchten?'; + $lang['strsequencedropped'] = 'Sequenz gelΓΆscht.'; + $lang['strsequencedroppedbad'] = 'LΓΆschen der Sequenz fehlgeschlagen.'; + $lang['strsequencereset'] = 'Sequenz zurΓΌckgesetzt.'; + $lang['strsequenceresetbad'] = 'RΓΌcksetzen der Sequenz fehlgeschlagen.'; + $lang['strsequencealtered'] = 'Sequenz geΓ€ndert.'; + $lang['strsequencealteredbad'] = 'Γ„ndern der Sequenz fehlgeschlagen.'; + $lang['strsetval'] = 'Wert setzen'; + $lang['strsequencesetval'] = 'Sequenzwert gesetzt.'; + $lang['strsequencesetvalbad'] = 'Setzen des Sequenzwertes fehlgeschlagen.'; + $lang['strnextval'] = 'Wert erhΓΆhen'; + $lang['strsequencenextval'] = 'Sequenzwert erhΓΆht.'; + $lang['strsequencenextvalbad'] = 'ErhΓΆhen des Sequenzwertes fehlgeschlagen.'; + $lang['strspecifysequencetodrop'] = 'Sie mΓΌssen mindestens eine Sequenz angeben, die gelΓΆscht werden soll.'; + + // Indexes + $lang['strindex'] = 'Index'; + $lang['strindexes'] = 'Indizes'; + $lang['strindexname'] = 'Indexname'; + $lang['strshowallindexes'] = 'Alle Indizes anzeigen'; + $lang['strnoindex'] = 'Kein Index gefunden.'; + $lang['strnoindexes'] = 'Keine Indizes gefunden.'; + $lang['strcreateindex'] = 'Index erstellen'; + $lang['strtabname'] = 'Tabellenname'; + $lang['strcolumnname'] = 'Spaltenname'; + $lang['strindexneedsname'] = 'Sie mΓΌssen fΓΌr den Index einen Namen angeben.'; + $lang['strindexneedscols'] = 'Sie mΓΌssen eine zulΓ€ssige Anzahl an Spalten angeben.'; + $lang['strindexcreated'] = 'Index erstellt.'; + $lang['strindexcreatedbad'] = 'Erstellen des Index fehlgeschlagen.'; + $lang['strconfdropindex'] = 'Sind Sie sicher, dass sie den Index "%s" lΓΆschen mΓΆchten?'; + $lang['strindexdropped'] = 'Index gelΓΆscht.'; + $lang['strindexdroppedbad'] = 'LΓΆschen des Index fehlgeschlagen.'; + $lang['strkeyname'] = 'SchlΓΌsselname'; + $lang['struniquekey'] = 'Eindeutiger SchlΓΌssel'; + $lang['strprimarykey'] = 'PrimΓ€rerschlΓΌssel'; + $lang['strindextype'] = 'Typ des Index'; + $lang['strtablecolumnlist'] = 'Spalten in der Tabelle'; + $lang['strindexcolumnlist'] = 'Spalten im Index'; + $lang['strconfcluster'] = 'Sind Sie sicher, dass Sie "%s" clustern wollen?'; + $lang['strclusteredgood'] = 'Clustern abgeschlossen.'; + $lang['strclusteredbad'] = 'Clustern fehlgeschlagen.'; + + // Rules + $lang['strrules'] = 'Regeln'; + $lang['strrule'] = 'Regel'; + $lang['strshowallrules'] = 'Alle Regeln anzeigen'; + $lang['strnorule'] = 'Keine Regel gefunden.'; + $lang['strnorules'] = 'Keine Regeln gefunden.'; + $lang['strcreaterule'] = 'Regel erstellen'; + $lang['strrulename'] = 'Regelname'; + $lang['strruleneedsname'] = 'Sie mΓΌssen fΓΌr die Regel einen Namen angeben.'; + $lang['strrulecreated'] = 'Regel erstellt.'; + $lang['strrulecreatedbad'] = 'Erstellen der Regel fehlgeschlagen.'; + $lang['strconfdroprule'] = 'Sind Sie sicher, dass Sie die Regel "%s" in der Tabelle "%s" lΓΆschen mΓΆchten?'; + $lang['strruledropped'] = 'Regel gelΓΆscht.'; + $lang['strruledroppedbad'] = 'LΓΆschen der Regel fehlgeschlagen.'; + + // Constraints + $lang['strconstraint'] = 'Constraint'; + $lang['strconstraints'] = 'Constraints'; + $lang['strshowallconstraints'] = 'Alle Constraints anzeigen'; + $lang['strnoconstraints'] = 'Keine Constraints gefunden.'; + $lang['strcreateconstraint'] = 'Constraint erstellen'; + $lang['strconstraintcreated'] = 'Constraint erstellt.'; + $lang['strconstraintcreatedbad'] = 'Erstellen des Constraints fehlgeschlagen.'; + $lang['strconfdropconstraint'] = 'Sind Sie sicher, dass Sie den Constraint "%s" in der Tabelle "%s" lΓΆschen mΓΆchten?'; + $lang['strconstraintdropped'] = 'Constraint gelΓΆscht.'; + $lang['strconstraintdroppedbad'] = 'LΓΆschen des Constraints fehlgeschlagen.'; + $lang['straddcheck'] = 'Check-Constraint hinzufΓΌgen'; + $lang['strcheckneedsdefinition'] = 'Ein Check-Constraint braucht eine Definition.'; + $lang['strcheckadded'] = 'Check-Constraint hinzugefΓΌgt.'; + $lang['strcheckaddedbad'] = 'HinzufΓΌgen des Check-Constraints fehlgeschlagen.'; + $lang['straddpk'] = 'PrimΓ€rschlΓΌssel hinzufΓΌgen'; + $lang['strpkneedscols'] = 'Ein PrimΓ€rschlΓΌssel benΓΆtigt mindestens eine Spalte.'; + $lang['strpkadded'] = 'PrimΓ€rschlΓΌssel hinzugefΓΌgt.'; + $lang['strpkaddedbad'] = 'HinzufΓΌgen des PrimΓ€rschlΓΌssels fehlgeschlagen.'; + $lang['stradduniq'] = 'Eindeutigen SchlΓΌssel hinzufΓΌgen'; + $lang['struniqneedscols'] = 'Ein eindeutiger SchlΓΌssel benΓΆtigt mindestens eine Spalte.'; + $lang['struniqadded'] = 'Eindeutiger SchlΓΌssel hinzugefΓΌgt.'; + $lang['struniqaddedbad'] = 'HinzufΓΌgen eines eindeutigen SchlΓΌssels fehlgeschlagen.'; + $lang['straddfk'] = 'FremdschlΓΌssel hinzufΓΌgen'; + $lang['strfkneedscols'] = 'Ein FremdschlΓΌssel benΓΆtigt mindestens eine Spalte.'; + $lang['strfkneedstarget'] = 'Ein FremdschlΓΌssel benΓΆtigt eine Zieltabelle.'; + $lang['strfkadded'] = 'FremdschlΓΌssel hinzugefΓΌgt.'; + $lang['strfkaddedbad'] = 'HinzufΓΌgen eines FremdschlΓΌssels fehlgeschlagen.'; + $lang['strfktarget'] = 'Zieltabelle'; + $lang['strfkcolumnlist'] = 'Spalten im SchlΓΌssel'; + $lang['strondelete'] = 'ON DELETE'; + $lang['stronupdate'] = 'ON UPDATE'; + + // Functions + $lang['strfunction'] = 'Funktion'; + $lang['strfunctions'] = 'Funktionen'; + $lang['strshowallfunctions'] = 'Alle Funktionen anzeigen'; + $lang['strnofunction'] = 'Keine Funktion gefunden.'; + $lang['strnofunctions'] = 'Keine Funktionen gefunden.'; + $lang['strcreateplfunction'] = 'SQL/PL-Funktion erstellen'; + $lang['strcreateinternalfunction'] = 'Interne Funktion erstellen'; + $lang['strcreatecfunction'] = 'C-Funktion erstellen'; + $lang['strfunctionname'] = 'Funktionsname'; + $lang['strreturns'] = 'RΓΌckgabetyp'; + $lang['strproglanguage'] = 'Programmiersprache'; + $lang['strfunctionneedsname'] = 'Sie mΓΌssen fΓΌr die Funktion einen Namen angeben.'; + $lang['strfunctionneedsdef'] = 'Sie mΓΌssen fΓΌr die Funktion eine Definition angeben.'; + $lang['strfunctioncreated'] = 'Funktion erstellt.'; + $lang['strfunctioncreatedbad'] = 'Erstellen der Funktion fehlgeschlagen.'; + $lang['strconfdropfunction'] = 'Sind Sie sicher, dass sie die Funktion "%s" lΓΆschen mΓΆchten?'; + $lang['strfunctiondropped'] = 'Funktion gelΓΆscht.'; + $lang['strfunctiondroppedbad'] = 'LΓΆschen der Funktion fehlgeschlagen.'; + $lang['strfunctionupdated'] = 'Funktion geΓ€ndert.'; + $lang['strfunctionupdatedbad'] = 'Γ„ndern der Funktion fehlgeschlagen.'; + $lang['strobjectfile'] = 'Objektdatei'; + $lang['strlinksymbol'] = 'Link-Symbol'; + $lang['strarguments'] = 'Funktionsargumente'; + $lang['strargmode'] = 'Richtung'; + $lang['strargtype'] = 'Datentyp'; + $lang['strargadd'] = 'Weiteres Argument hinzufΓΌgen'; + $lang['strargremove'] = 'Dieses Argument entfernen'; + $lang['strargnoargs'] = 'Diese Funktion kann nur ohne Argumente aufgerufen werden.'; + $lang['strargenableargs'] = 'Diese Funktion kann mit Argumenten aufgerufen werden.'; + $lang['strargnorowabove'] = 'Oberhalb dieser Spalte muss eine weitere Spalte sein.'; + $lang['strargnorowbelow'] = 'Unterhalb dieser Spalte muss eine weitere Spalte sein.'; + $lang['strargraise'] = 'Hinaufschieben.'; + $lang['strarglower'] = 'Hinunterschieben.'; + $lang['strargremoveconfirm'] = 'Sind Sie sicher, dass Sie dieses Argument entfernen wollen? Das kann nicht rΓΌckgΓ€ngig gemacht werden.'; + $lang['strfunctioncosting'] = 'AusfΓΌhrungskosten'; + $lang['strresultrows'] = 'GeschΓ€tzte Anzahl der Ergebniszeilen'; + $lang['strexecutioncost'] = 'GeschΓ€tzte AusfΓΌhrungskosten'; + $lang['strspecifyfunctiontodrop'] = 'Sie mΓΌssen mindestens eine Funktion angeben, die gelΓΆscht werden soll.'; + + // Triggers + $lang['strtrigger'] = 'Trigger'; + $lang['strtriggers'] = 'Trigger'; + $lang['strshowalltriggers'] = 'Alle Trigger anzeigen'; + $lang['strnotrigger'] = 'Kein Trigger gefunden.'; + $lang['strnotriggers'] = 'Keine Trigger gefunden.'; + $lang['strcreatetrigger'] = 'Trigger erstellen'; + $lang['strtriggerneedsname'] = 'Sie mΓΌssen fΓΌr den Trigger einen Namen angeben.'; + $lang['strtriggerneedsfunc'] = 'Sie mΓΌssen fΓΌr den Trigger eine Funktion angeben.'; + $lang['strtriggercreated'] = 'Trigger erstellt.'; + $lang['strtriggercreatedbad'] = 'Erstellen des Triggers fehlgeschlagen.'; + $lang['strconfdroptrigger'] = 'Sind Sie sicher, dass Sie den Trigger "%s" auf der Tabelle "%s" lΓΆschen mΓΆchten?'; + $lang['strconfenabletrigger'] = 'Sind Sie sicher, dass Sie den Trigger "%s" auf der Tabelle "%s" aktivieren mΓΆchten?'; + $lang['strconfdisabletrigger'] = 'Sind Sie sicher, dass Sie den Trigger "%s" auf der Tabelle "%s" deaktivieren mΓΆchten?'; + $lang['strtriggerdropped'] = 'Trigger gelΓΆscht.'; + $lang['strtriggerdroppedbad'] = 'LΓΆschen des Triggers fehlgeschlagen.'; + $lang['strtriggerenabled'] = 'Trigger aktiviert.'; + $lang['strtriggerenabledbad'] = 'Aktivieren des Triggers fehlgeschlagen.'; + $lang['strtriggerdisabled'] = 'Trigger deaktiviert.'; + $lang['strtriggerdisabledbad'] = 'Deaktivieren des Triggers fehlgeschlagen.'; + $lang['strtriggeraltered'] = 'Trigger geΓ€ndert.'; + $lang['strtriggeralteredbad'] = 'Γ„ndern des Triggers fehlgeschlagen.'; + $lang['strforeach'] = 'FΓΌr alle'; + + // Types + $lang['strtype'] = 'Datentyp'; + $lang['strtypes'] = 'Datentypen'; + $lang['strshowalltypes'] = 'Alle Datentypen anzeigen'; + $lang['strnotype'] = 'Kein Datentyp gefunden.'; + $lang['strnotypes'] = 'Keine Datentypen gefunden.'; + $lang['strcreatetype'] = 'Datentyp erstellen'; + $lang['strcreatecomptype'] = 'Zusammengesetzten Typ erstellen'; + $lang['strcreateenumtype'] = 'AufzΓ€hlungstyp erstellen'; + $lang['strtypeneedsfield'] = 'Sie mΓΌssen mindestens ein Feld angeben.'; + $lang['strtypeneedsvalue'] = 'Sie mΓΌssen mindestens einen Wert angeben.'; + $lang['strtypeneedscols'] = 'Sie mΓΌssen eine gΓΌltige Anzahl von Spalten angeben.'; + $lang['strtypeneedsvals'] = 'Sie mΓΌssen eine gΓΌltige Anzahl von Werten angeben.'; + $lang['strinputfn'] = 'Eingabefunktion'; + $lang['stroutputfn'] = 'Ausgabefunktion'; + $lang['strpassbyval'] = 'Übergabe "by value"?'; + $lang['stralignment'] = 'Alignment'; + $lang['strelement'] = 'Element'; + $lang['strdelimiter'] = 'Trennzeichen'; + $lang['strstorage'] = 'Speicherung'; + $lang['strfield'] = 'Spalte'; + $lang['strnumfields'] = 'Anzahl Spalten'; + $lang['strnumvalues'] = 'Anzahl Werte'; + $lang['strtypeneedsname'] = 'Sie mΓΌssen einen Namen fΓΌr den Datentyp angeben.'; + $lang['strtypeneedslen'] = 'Sie mΓΌssen eine LΓ€nge fΓΌr den Datentyp angeben.'; + $lang['strtypecreated'] = 'Datentyp erstellt.'; + $lang['strtypecreatedbad'] = 'Erstellen des Datentypen fehlgeschlagen.'; + $lang['strconfdroptype'] = 'Sind Sie sicher, dass Sie den Datentyp "%s" lΓΆschen mΓΆchten?'; + $lang['strtypedropped'] = 'Datentyp gelΓΆscht.'; + $lang['strtypedroppedbad'] = 'LΓΆschen des Datentyps fehlgeschlagen.'; + $lang['strflavor'] = 'Art'; + $lang['strbasetype'] = 'Basis-Typ'; + $lang['strcompositetype'] = 'Zusammengesetzt'; + $lang['strpseudotype'] = 'Pseudo'; + $lang['strenum'] = 'AufzΓ€hlend'; + $lang['strenumvalues'] = 'Wert'; + + // Schemas + $lang['strschema'] = 'Schema'; + $lang['strschemas'] = 'Schemata'; + $lang['strshowallschemas'] = 'Alle Schemata anzeigen'; + $lang['strnoschema'] = 'Kein Schema gefunden.'; + $lang['strnoschemas'] = 'Keine Schemata gefunden.'; + $lang['strcreateschema'] = 'Schema erstellen'; + $lang['strschemaname'] = 'Name des Schema'; + $lang['strschemaneedsname'] = 'Sie mΓΌssen fΓΌr das Schema einen Namen angeben.'; + $lang['strschemacreated'] = 'Schema erstellt.'; + $lang['strschemacreatedbad'] = 'Erstellen des Schemas fehlgeschlagen.'; + $lang['strconfdropschema'] = 'Sind Sie sicher, dass sie das Schema "%s" lΓΆschen mΓΆchten?'; + $lang['strschemadropped'] = 'Schema gelΓΆscht.'; + $lang['strschemadroppedbad'] = 'LΓΆschen des Schemas fehlgeschlagen'; + $lang['strschemaaltered'] = 'Schema geΓ€ndert.'; + $lang['strschemaalteredbad'] = 'Γ„ndern des Schemas fehlgeschlagen.'; + $lang['strsearchpath'] = 'Schemasuchpfad'; + $lang['strspecifyschematodrop'] = 'Sie mΓΌssen mindestens ein Schema angeben, das gelΓΆscht werden soll.'; + + // Reports + + // Domains + $lang['strdomain'] = 'DomΓ€ne'; + $lang['strdomains'] = 'DomΓ€nen'; + $lang['strshowalldomains'] = 'Alle DomΓ€nen anzeigen'; + $lang['strnodomains'] = 'Keine DomΓ€nen gefunden.'; + $lang['strcreatedomain'] = 'DomΓ€ne erstellen'; + $lang['strdomaindropped'] = 'DomΓ€ne gelΓΆscht.'; + $lang['strdomaindroppedbad'] = 'LΓΆschen der DomΓ€ne fehlgeschlagen.'; + $lang['strconfdropdomain'] = 'Sind Sie sicher, dass Sie die DomΓ€ne "%s" lΓΆschen wollen?'; + $lang['strdomainneedsname'] = 'Sie mΓΌssen einen Namen fΓΌr die DomΓ€ne angeben.'; + $lang['strdomaincreated'] = 'DomΓ€ne erstellt.'; + $lang['strdomaincreatedbad'] = 'Erstellen der DomΓ€ne fehlgeschlagen.'; + $lang['strdomainaltered'] = 'DomΓ€ne geΓ€ndert.'; + $lang['strdomainalteredbad'] = 'Γ„ndern der DomΓ€ne fehlgeschlagen.'; + + // Operators + $lang['stroperator'] = 'Operator'; + $lang['stroperators'] = 'Operatoren'; + $lang['strshowalloperators'] = 'Alle Operatoren anzeigen'; + $lang['strnooperator'] = 'Kein Operator gefunden.'; + $lang['strnooperators'] = 'Keine Operatoren gefunden.'; + $lang['strcreateoperator'] = 'Operator erstellen'; + $lang['strleftarg'] = 'Typ des linken Arguments'; + $lang['strrightarg'] = 'Typ des rechter Arguments'; + $lang['strcommutator'] = 'Kommutator'; + $lang['strnegator'] = 'Negator'; + $lang['strrestrict'] = 'Funktion zur SchΓ€tzung der Restriktions-SelektivitΓ€t'; + $lang['strjoin'] = 'Funktion zur SchΓ€tzung der Join-SelektivitΓ€t'; + $lang['strhashes'] = 'UnterstΓΌtzt Hash-Joins'; + $lang['strmerges'] = 'UnterstΓΌtzt Merge-Joins'; + $lang['strleftsort'] = 'Kleiner-Operator zum Sortieren der linken Seite'; + $lang['strrightsort'] = 'Kleiner-Operator zum Sortieren der rechten Seite'; + $lang['strlessthan'] = 'Kleiner-Operator'; + $lang['strgreaterthan'] = 'Grâßer-Operator'; + $lang['stroperatorneedsname'] = 'Sie mΓΌssen einen Namen fΓΌr den Operator angeben.'; + $lang['stroperatorcreated'] = 'Operator erstellt.'; + $lang['stroperatorcreatedbad'] = 'Erstellen des Operators fehlgeschlagen.'; + $lang['strconfdropoperator'] = 'Sind Sie sicher, dass Sie den Operator "%s" lΓΆschen wollen?'; + $lang['stroperatordropped'] = 'Operator gelΓΆscht.'; + $lang['stroperatordroppedbad'] = 'LΓΆschen des Operators fehlgeschlagen.'; + + // Casts + $lang['strcasts'] = 'Typumwandlungen'; + $lang['strnocasts'] = 'Keine Typumwandlungen gefunden.'; + $lang['strsourcetype'] = 'Ursprungs-Datentyp'; + $lang['strtargettype'] = 'Ziel-Datentyp'; + $lang['strimplicit'] = 'Implizit'; + $lang['strinassignment'] = 'Bei Zuweisungen'; + $lang['strbinarycompat'] = '(BinΓ€rkompatibel)'; + + // Conversions + $lang['strconversions'] = 'Konvertierungen'; + $lang['strnoconversions'] = 'Keine Konvertierungen gefunden.'; + $lang['strsourceencoding'] = 'Ursprungs-Zeichenkodierung'; + $lang['strtargetencoding'] = 'Ziel-Zeichenkodierung'; + + // Languages + $lang['strlanguages'] = 'Programmiersprachen'; + $lang['strnolanguages'] = 'Keine Sprachen gefunden.'; + $lang['strtrusted'] = 'VertrauenswΓΌrdig'; + + // Info + $lang['strnoinfo'] = 'Keine Informationen vorhanden.'; + $lang['strreferringtables'] = 'Tabellen, die mit FremdschlΓΌsseln auf diese Tabelle verweisen'; + $lang['strparenttables'] = 'Elterntabellen'; + $lang['strchildtables'] = 'Kindtabellen'; + + // Aggregates + $lang['straggregate'] = 'Aggregatsfunktion'; + $lang['straggregates'] = 'Aggregatsfunktionen'; + $lang['strnoaggregates'] = 'Keine Aggregatsfunktionen gefunden.'; + $lang['stralltypes'] = '(Alle Typen)'; + $lang['strcreateaggregate'] = 'Aggregatsfunktion erstellen'; + $lang['straggrbasetype'] = 'Eingabedatentyp'; + $lang['straggrsfunc'] = 'ZustandsΓΌbergangsfunktion'; + $lang['straggrstype'] = 'Datentyp fΓΌr den Zustandswert'; + $lang['straggrffunc'] = 'Ergebnisfunktion'; + $lang['straggrinitcond'] = 'Zustandswert zu Beginn'; + $lang['straggrsortop'] = 'Operator fΓΌr Sortierung'; + $lang['strconfdropaggregate'] = 'Sind Sie sicher, dass Sie die Aggregatsfunktion "%s" lΓΆschen wollen?'; + $lang['straggregatedropped'] = 'Aggregatsfunktion gelΓΆscht.'; + $lang['straggregatedroppedbad'] = 'LΓΆschen der Aggregatsfunktion fehlgeschlagen.'; + $lang['straggraltered'] = 'Aggregatsfunktion geΓ€ndert.'; + $lang['straggralteredbad'] = 'Γ„ndern der Aggregatsfunktion fehlgeschlagen.'; + $lang['straggrneedsname'] = 'Sie mΓΌssen einen Namen fΓΌr die Aggregatsfunktion angeben.'; + $lang['straggrneedsbasetype'] = 'Sie mΓΌssen den Eingabedatentyp fΓΌr die Aggregatsfunktion angeben.'; + $lang['straggrneedssfunc'] = 'Sie mΓΌssen den Namen der ZustandsΓΌbergangsfunktion fΓΌr die Aggregatsfunktion angeben.'; + $lang['straggrneedsstype'] = 'Sie mΓΌssen den Datentyp fΓΌr den Zustandswert der Aggregatsfunktion angeben.'; + $lang['straggrcreated'] = 'Aggregatsfunktion erstellt.'; + $lang['straggrcreatedbad'] = 'Erstellen der Aggregatsfunktion fehlgeschlagen.'; + $lang['straggrshowall'] = 'Alle Aggregatsfunktionen anzeigen'; + + // Operator Classes + $lang['stropclasses'] = 'Operatorklassen'; + $lang['strnoopclasses'] = 'Keine Operatorklassen gefunden.'; + $lang['straccessmethod'] = 'Zugriffsmethode'; + + // Stats and performance + $lang['strrowperf'] = 'Zeilen-Performance'; + $lang['strioperf'] = 'E/A Performance'; + $lang['stridxrowperf'] = 'Index-Zeilen-Performance'; + $lang['stridxioperf'] = 'Index-E/A-Performance'; + $lang['strpercent'] = '%'; + $lang['strsequential'] = 'Sequentiell'; + $lang['strscan'] = 'Durchsuchen'; + $lang['strread'] = 'Lesen'; + $lang['strfetch'] = 'Holen'; + $lang['strheap'] = 'Heap'; + $lang['strtoast'] = 'TOAST'; + $lang['strtoastindex'] = 'TOAST-Index'; + $lang['strcache'] = 'Zwischenspeicher'; + $lang['strdisk'] = 'Festplatte'; + $lang['strrows2'] = 'Zeilen'; + + // Tablespaces + $lang['strtablespace'] = 'Tablespace'; + $lang['strtablespaces'] = 'Tablespaces'; + $lang['strshowalltablespaces'] = 'Alle Tablespaces anzeigen'; + $lang['strnotablespaces'] = 'Keine Tablespaces gefunden.'; + $lang['strcreatetablespace'] = 'Tablespace erstellen'; + $lang['strlocation'] = 'Pfad'; + $lang['strtablespaceneedsname'] = 'Sie mΓΌssen einen Namen fΓΌr den Tablespace angeben.'; + $lang['strtablespaceneedsloc'] = 'Sie mΓΌssen ein Verzeichnis angeben, in dem Sie den Tablespace erstellen mΓΆchten.'; + $lang['strtablespacecreated'] = 'Tablespace erstellt.'; + $lang['strtablespacecreatedbad'] = 'Erstellen des Tablespace fehlgeschlagen.'; + $lang['strconfdroptablespace'] = 'Sind Sie sicher, dass Sie den Tablespace "%s" lΓΆschen wollen?'; + $lang['strtablespacedropped'] = 'Tablespace gelΓΆscht.'; + $lang['strtablespacedroppedbad'] = 'LΓΆschen des Tablespace fehlgeschlagen.'; + $lang['strtablespacealtered'] = 'Tablespace geΓ€ndert.'; + $lang['strtablespacealteredbad'] = 'Γ„ndern des Tablespace fehlgeschlagen.'; + + // Miscellaneous + $lang['strtopbar'] = '%s lΓ€uft auf %s:%s -- Sie sind als "%s" angemeldet'; + $lang['strtimefmt'] = 'D, j. n. Y, G:i'; + $lang['strhelp'] = 'Hilfe'; + $lang['strhelpicon'] = '?'; + $lang['strhelppagebrowser'] = 'Browser fΓΌr Hilfeseiten'; + $lang['strselecthelppage'] = 'Hilfeseite auswΓ€hlen'; + $lang['strinvalidhelppage'] = 'UngΓΌltige Hilfeseite.'; + $lang['strlogintitle'] = 'Bei %s anmelden'; + $lang['strlogoutmsg'] = 'Von %s abgemeldet'; + $lang['strloading'] = 'Lade...'; + $lang['strerrorloading'] = 'Fehler beim Laden'; + $lang['strclicktoreload'] = 'Klicken Sie zum Neuladen'; + + // Autovacuum + $lang['strautovacuum'] = 'Autovacuum'; + $lang['strturnedon'] = 'Eingeschaltet'; + $lang['strturnedoff'] = 'Ausgeschaltet'; + $lang['strenabled'] = 'Aktiviert'; + $lang['strvacuumbasethreshold'] = 'Autovacuum-Schwellwert'; + $lang['strvacuumscalefactor'] = 'Autovacuum-Skalierungsfaktor'; + $lang['stranalybasethreshold'] = 'Analyze-Schwellwert'; + $lang['stranalyzescalefactor'] = 'Analyze-Skalierungsfaktor'; + $lang['strvacuumcostdelay'] = 'Pause nach Erreichen des Autovacuum-Kostenlimits'; + $lang['strvacuumcostlimit'] = 'Autovacuum-Kostenlimits'; + + // Table-level Locks + $lang['strlocks'] = 'Sperren'; + $lang['strtransaction'] = 'Transaktions-ID'; + $lang['strvirtualtransaction'] = 'Virtuelle Transaktions-ID'; + $lang['strprocessid'] = 'Prozess-ID'; + $lang['strmode'] = 'Art der Sperre'; + $lang['strislockheld'] = 'Sperre gewΓ€hrt?'; + + // Prepared transactions + $lang['strpreparedxacts'] = 'Vorbereitete verteilte Transaktionen'; + $lang['strxactid'] = 'Transaktions-ID'; + $lang['strgid'] = 'Globale ID'; + + // Fulltext search + $lang['strfulltext'] = 'Volltextsuche'; + $lang['strftsconfig'] = 'Volltextsuch-Konfiguration'; + $lang['strftsconfigs'] = 'Konfigurationen'; + $lang['strftscreateconfig'] = 'Volltextsuch-Konfiguration erstellen'; + $lang['strftscreatedict'] = 'WΓΆrterbuch erstellen'; + $lang['strftscreatedicttemplate'] = 'WΓΆrterbuch-Blaupause erstellen'; + $lang['strftscreateparser'] = 'Parser erstellen'; + $lang['strftsnoconfigs'] = 'Keine Volltextsuch-Konfigurationen gefunden.'; + $lang['strftsconfigdropped'] = 'Volltextsuch-Konfiguration gelΓΆscht.'; + $lang['strftsconfigdroppedbad'] = 'LΓΆschen der Volltextsuch-Konfiguration fehlgeschlagen.'; + $lang['strconfdropftsconfig'] = 'Sind Sie sicher, dass Sie die Volltextsuch-Konfiguration "%s" lΓΆschen mΓΆchten?'; + $lang['strconfdropftsdict'] = 'Sind Sie sicher, dass Sie das WΓΆrterbuch "%s" lΓΆschen mΓΆchten?'; + $lang['strconfdropftsmapping'] = 'Sind Sie sicher, dass Sie die Zuordnung "%s" der Volltextsuch-Konfiguration "%s" lΓΆschen mΓΆchten?'; + $lang['strftstemplate'] = 'Blaupause'; + $lang['strftsparser'] = 'Parser'; + $lang['strftsconfigneedsname'] = 'Sie mΓΌssen fΓΌr die Volltextsuch-Konfiguration einen Namen angeben.'; + $lang['strftsconfigcreated'] = 'Volltextsuch-Konfiguration erstellt.'; + $lang['strftsconfigcreatedbad'] = 'Erstellen der Volltextsuch-Konfiguration fehlgeschlagen.'; + $lang['strftsmapping'] = 'Zuordnung'; + $lang['strftsdicts'] = 'WΓΆrterbΓΌcher'; + $lang['strftsdict'] = 'WΓΆrterbuch'; + $lang['strftsemptymap'] = 'Leere Zuordnung fΓΌr Volltextsuch-Konfiguration.'; + $lang['strftswithmap'] = 'Mit Zuordnung'; + $lang['strftsmakedefault'] = 'Als Standardwert fΓΌr die angegebene Spracheinstellung festlegen'; + $lang['strftsconfigaltered'] = 'Volltextsuch-Konfiguration geΓ€ndert.'; + $lang['strftsconfigalteredbad'] = 'Γ„ndern der Volltextsuch-Konfiguration fehlgeschlagen.'; + $lang['strftsconfigmap'] = 'Zuordnung fΓΌr Volltextsuch-Konfiguration'; + $lang['strftsparsers'] = 'Parsers fΓΌr Volltextsuch-Konfiguration'; + $lang['strftsnoparsers'] = 'Keine Parsers fΓΌr Volltextsuch-Konfiguration vorhanden'; + $lang['strftsnodicts'] = 'Keine WΓΆrterbΓΌcher fΓΌr die Volltextsuche vorhanden.'; + $lang['strftsdictcreated'] = 'WΓΆrterbuch fΓΌr die Volltextsuche erstellt.'; + $lang['strftsdictcreatedbad'] = 'Erstellen des WΓΆrterbuches fΓΌr die Volltextsuche fehlgeschlagen.'; + $lang['strftslexize'] = 'Funktion zum Zerlegen in Lexeme'; + $lang['strftsinit'] = 'Initialisierungsfunktion'; + $lang['strftsoptionsvalues'] = 'Optionen und Werte'; + $lang['strftsdictneedsname'] = 'Sie mΓΌssen fΓΌr das Volltextsuch-WΓΆrterbuch einen Namen angeben.'; + $lang['strftsdictdropped'] = 'WΓΆrterbuches fΓΌr die Volltextsuche gelΓΆscht.'; + $lang['strftsdictdroppedbad'] = 'LΓΆschen des WΓΆrterbuches fΓΌr die Volltextsuche fehlgeschlagen.'; + $lang['strftsdictaltered'] = 'WΓΆrterbuches fΓΌr die Volltextsuche geΓ€ndert.'; + $lang['strftsdictalteredbad'] = 'Γ„ndern des WΓΆrterbuches fΓΌr die Volltextsuche fehlgeschlagen.'; + $lang['strftsaddmapping'] = 'Neue Zuordnung hinzufΓΌgen'; + $lang['strftsspecifymappingtodrop'] = 'Sie mΓΌssen mindestens eine Zuordnung angeben, die gelΓΆscht werden soll.'; + $lang['strftsspecifyconfigtoalter'] = 'Sie mΓΌssen eine Volltextsuch-Konfiguration angeben, die geΓ€ndert werden soll'; + $lang['strftsmappingdropped'] = 'Volltextsuch-Zuordnung gelΓΆscht.'; + $lang['strftsmappingdroppedbad'] = 'LΓΆschen der Volltextsuch-Zuordnung fehlgeschlagen.'; + $lang['strftsnodictionaries'] = 'Keine WΓΆrterbΓΌcher gefunden.'; + $lang['strftsmappingaltered'] = 'Volltextsuch-Zuordnung geΓ€ndert.'; + $lang['strftsmappingalteredbad'] = 'Γ„ndern der Volltextsuch-Zuordnung fehlgeschlagen.'; + $lang['strftsmappingadded'] = 'Volltextsuch-Zuordnung hinzugefΓΌgt.'; + $lang['strftsmappingaddedbad'] = 'HinzufΓΌgen der Volltextsuch-Zuordnung fehlgeschlagen.'; + $lang['strftstabconfigs'] = 'Volltextsuch-Konfigurationen'; + $lang['strftstabdicts'] = 'WΓΆrterbΓΌcher'; + $lang['strftstabparsers'] = 'Parser'; +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/greek.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/greek.php new file mode 100644 index 00000000..89f8f9e6 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/greek.php @@ -0,0 +1,744 @@ +'; + $lang['strfirst'] = '<< Ξ ΟΟŽΟ„Ξ·'; + $lang['strlast'] = '΀ΡλΡυταία >>'; + $lang['strfailed'] = 'ΑπέτυχΡ'; + $lang['strcreate'] = 'Δημιουργία'; + $lang['strcreated'] = 'ΔημιουργΞΞΈΞ·ΞΊΞ΅'; + $lang['strcomment'] = 'Ξ£Ο‡ΟŒΞ»ΞΉΞΏ'; + $lang['strlength'] = 'ΜΞΞΊΞΏΟ‚'; + $lang['strdefault'] = 'ΑρχικΠτιμΞ'; + $lang['stralter'] = '΀ροποποίηση'; + $lang['strok'] = 'ΕντάξΡι'; + $lang['strcancel'] = 'Ακυρο'; + $lang['strac'] = 'ΕνΡργοποίηση Ξ‘Ο…Ο„ΟŒΞΌΞ±Ο„Ξ·Ο‚ ΣυμπλΞρωσης (AutoComplete)'; + $lang['strsave'] = 'ΑποθΞκΡυση'; + $lang['strreset'] = 'ΞšΞ±ΞΈΞ±ΟΞΉΟƒΞΌΟŒΟ‚'; + $lang['strinsert'] = 'ΕισαγωγΞ'; + $lang['strselect'] = 'ΕπιλογΞ'; + $lang['strdelete'] = 'ΔιαγραφΞ'; + $lang['strupdate'] = 'Ενημέρωση'; + $lang['strreferences'] = 'ΣχέσΡις'; + $lang['stryes'] = 'Ναι'; + $lang['strno'] = 'ΞŸΟ‡ΞΉ'; + $lang['strtrue'] = 'Ξ‘Ξ›Ξ—Ξ˜Ξ•Ξ£'; + $lang['strfalse'] = 'ΨΕΞ₯ΔΕΣ'; + $lang['stredit'] = 'ΠροσαρμογΞ'; + $lang['strcolumn'] = 'ΣτΞλη'; + $lang['strcolumns'] = 'ΣτΞλΡς'; + $lang['strrows'] = 'γραμμές'; + $lang['strrowsaff'] = 'γραμμές ΡπηρΡάστηκαν.'; + $lang['strobjects'] = 'αντικΡίμΡνα'; + $lang['strback'] = 'Πίσω'; + $lang['strqueryresults'] = 'ΑποτΡλέσματα ΕρωτΞματος'; + $lang['strshow'] = 'Εμφάνιση'; + $lang['strempty'] = 'ΑδΡιασμα'; + $lang['strlanguage'] = 'Ξ“Ξ»ΟŽΟƒΟƒΞ±'; + $lang['strencoding'] = 'ΞšΟ‰Ξ΄ΞΉΞΊΞΏΟ€ΞΏΞ―Ξ·ΟƒΞ·'; + $lang['strvalue'] = '΀ιμΞ'; + $lang['strunique'] = 'Μοναδικό'; + $lang['strprimary'] = 'ΠρωτΡύον'; + $lang['strexport'] = 'ΕξαγωγΞ'; + $lang['strimport'] = 'ΕισαγωγΞ'; + $lang['strallowednulls'] = 'Ξ•Ο€ΞΉΟ„ΟΞ΅Ο€ΟŒΞΌΞ΅Ξ½ΞΏΞΉ κΡνοί χαρακτΞρΡς'; + $lang['strbackslashn'] = '\N'; + $lang['strnull'] = 'κΡνό'; + $lang['stremptystring'] = 'κΡνΠσυμβολοσΡιρά/κΡνό πΡδίο'; + $lang['strsql'] = 'SQL'; + $lang['stradmin'] = 'ΔιαχΡίριση'; + $lang['strvacuum'] = 'Εκκένωση'; + $lang['stranalyze'] = 'Ανάλυση'; + $lang['strclusterindex'] = 'ΞŸΞΌΞ±Ξ΄ΞΏΟ€ΞΏΞ―Ξ·ΟƒΞ·'; + $lang['strclustered'] = 'ΞŸΞΌΞ±Ξ΄ΞΏΟ€ΞΏΞΉΞ·ΞΌΞ­Ξ½ΞΏ'; + $lang['strreindex'] = 'Ανανέωση ΕυρΡτηρίου'; + $lang['stradd'] = 'ΠροσθΞΞΊΞ·'; + $lang['strevent'] = 'ΕνέργΡια'; + $lang['strwhere'] = 'ΞŸΟ€ΞΏΟ…'; + $lang['strinstead'] = 'Αντί Ξ½Ξ±'; + $lang['strwhen'] = 'Ξ ΟŒΟ„Ξ΅'; + $lang['strformat'] = 'ΞœΞΏΟΟ†Ξ Ξ΄Ξ΅Ξ΄ΞΏΞΌΞ­Ξ½Ο‰Ξ½'; + $lang['strdata'] = 'ΔΡδομένα'; + $lang['strconfirm'] = 'ΕπιβΡβαίωση'; + $lang['strexpression'] = 'Εκφραση'; + $lang['strellipsis'] = '...'; + $lang['strseparator'] = ': '; + $lang['strexpand'] = 'Ανάπτυξη'; + $lang['strcollapse'] = 'Σύμπτυξη'; + $lang['strfind'] = 'Ανα΢Ξτηση'; + $lang['stroptions'] = 'Επιλογές'; + $lang['strrefresh'] = 'Ανανέωση'; + $lang['strdownload'] = 'ΞšΞ±Ο„Ξ±Ο†ΟŒΟΟ„Ο‰ΟƒΞ·'; + $lang['strdownloadgzipped'] = 'ΣυμπίΡση κατά gzip'; + $lang['strinfo'] = 'ΠληροφορίΡς'; + $lang['stroids'] = 'OIDs'; + $lang['stradvanced'] = 'Προχωρημένα'; + $lang['strvariables'] = 'ΞœΞ΅Ο„Ξ±Ξ²Ξ»Ξ·Ο„Ξ­Ο‚'; + $lang['strprocess'] = 'ΔιΡργασία'; + $lang['strprocesses'] = 'ΔιΡργασίΡς'; + $lang['strsetting'] = '΀ιμΞ'; + $lang['streditsql'] = 'ΕπΡξΡργασία SQL'; + $lang['strruntime'] = 'Ξ£Ο…Ξ½ΞΏΞ»ΞΉΞΊΟŒΟ‚ Ο‡ΟΟŒΞ½ΞΏΟ‚ ΡκτέλΡσης: %s ms'; + $lang['strpaginate'] = 'ΣΡλιδοποίηση'; + $lang['struploadscript'] = 'ΠανΡβάστΡ σΡνάριο (script) SQL:'; + $lang['strstarttime'] = 'Ωρα Εναρξης'; + $lang['strfile'] = 'ΑρχΡίο'; + $lang['strfileimported'] = 'ΑρχΡίο ΡισΞχθη.'; + $lang['strtrycred'] = 'ΧρΞση Ξ±Ο…Ο„ΟŽΞ½ των διαπιστΡυτηρίων Ξ³ΞΉΞ± ΟŒΞ»ΞΏΟ…Ο‚ τους διακομιστές'; + $lang['strexecute'] = 'ΕκτέλΡση'; + + // Database Sizes + $lang['strsize'] = 'ΞœΞ­Ξ³Ξ΅ΞΈΞΏΟ‚'; + $lang['strbytes'] = 'bytes'; + $lang['strkb'] = 'KB'; + $lang['strmb'] = 'MB'; + $lang['strgb'] = 'GB'; + $lang['strtb'] = 'TB'; + + // Error handling + $lang['strnoframes'] = '΀ο phpPgAdmin λΡιτουργΡί καλύτΡρα ΞΌΞ΅ προγράμματα πλοΞγησης που υποστηρί΢ουν πλαίσια (frames). Εαν ΡπιθυμΡίτΡ Ξ½Ξ± συνΡχίσΡτΡ ακολουθΞστΡ την παρακάτω σύνδΡση.'; + $lang['strnoframeslink'] = 'ΧρΞση χωρίς πλαίσια'; + $lang['strbadconfig'] = '΀ο αρχΡίο config.inc.php Ρίναι Ο€Ξ±Ξ»ΞΉΟŒ. ΕπαναδημιουργΞστΡ το Ο‡ΟΞ·ΟƒΞΉΞΌΞΏΟ€ΞΏΞΉΟŽΞ½Ο„Ξ±Ο‚ το config.inc.php-dist.'; + $lang['strnotloaded'] = 'Ξ— τρέχουσα Ργκατάσταση της PHP δΡν υποστηρί΢Ρι PostgreSQL. ΕγκαταστΞστΡ την πάλι ΞΌΞ΅ την ΡπιλογΠ--with-pgsql (compilation option).'; + $lang['strpostgresqlversionnotsupported'] = 'Ξ— τρέχουσα έκδοση της PostgreSQL δΡν υποστηρί΢Ρται Ξ±Ο€ΟŒ το phpPgAdmin. Παρακαλώ αναβαθμίστΡ στην έκδοση %s Ξ Ξ½Ξ΅ΟŒΟ„Ξ΅ΟΞ·.'; + $lang['strbadschema'] = '΀ο σχΞΞΌΞ± που δηλώθηκΡ δΡν Ρίναι έγκυρο.'; + $lang['strbadencoding'] = 'Αποτυχία ορισμού κωδικοποίησης στη βάση δΡδομένων.'; + $lang['strsqlerror'] = 'Σφάλμα στην SQL:'; + $lang['strinstatement'] = 'Στη Ξ΄Ξλωση:'; + $lang['strinvalidparam'] = 'Λάθος παράμΡτροι.'; + $lang['strnodata'] = 'ΔΡ βρέθηκαν γραμμές.'; + $lang['strnoobjects'] = 'ΔΡ βρέθηκαν αντικΡίμΡνα.'; + $lang['strrownotunique'] = 'ΔΡ βρέθηκΡ μοναδικό κλΡιδί στη γραμμΞ.'; + $lang['strnouploads'] = 'Ξ— αποστολΠαρχΡίων Ρίναι απΡνΡργοποιημένη.'; + $lang['strimporterror'] = 'Σφάλμα κατά την ΡισαγωγΞ.'; + $lang['strimporterror-fileformat'] = 'Σφάλμα κατά την ΡισαγωγΞ: απέτυχΡ Ξ· Ξ±Ο…Ο„ΟŒΞΌΞ±Ο„Ξ· Ξ±Ξ½Ξ±Ξ³Ξ½ΟŽΟΞΉΟƒΞ· του τύπου του αρχΡίου.'; + $lang['strimporterrorline'] = 'Σφάλμα κατά την ΡισαγωγΠτης γραμμΞΟ‚ %s.'; + $lang['strimporterrorline-badcolumnnum'] = 'Σφάλμα κατά την ΡισαγωγΠτης γραμμΞΟ‚ %s: δΡν πΡριέχΡι το ΟƒΟ‰ΟƒΟ„ΟŒ αριθμό ΟƒΟ„Ξ·Ξ»ΟŽΞ½.'; + $lang['strimporterror-uploadedfile'] = 'Σφάλμα κατά την ΡισαγωγΞ: αποτυχία αποστολΞΟ‚ στο διακομιστΞ.'; + $lang['strcannotdumponwindows'] = 'Ξ— αποτύπωση (dumping) πΡρίπλοκων πινάκων ΞΊΞ±ΞΉ σχημάτων (schemas) δΡν υποστηρί΢Ρται στα Windows.'; + + // Tables + $lang['strtable'] = 'Ξ Ξ―Ξ½Ξ±ΞΊΞ±Ο‚'; + $lang['strtables'] = 'ΠίνακΡς'; + $lang['strshowalltables'] = 'Εμφάνιση ΟŒΞ»Ο‰Ξ½ των πινάκων'; + $lang['strnotables'] = 'ΔΡν βρέθηκαν πίνακΡς.'; + $lang['strnotable'] = 'ΔΡ βρέθηκΡ πίνακας.'; + $lang['strcreatetable'] = 'Δημιουργία πίνακα'; + $lang['strtablename'] = 'Ονομα πίνακα'; + $lang['strtableneedsname'] = 'ΠρέπΡι Ξ½Ξ± ΡισάγΡτΡ το όνομα του πίνακα.'; + $lang['strtableneedsfield'] = 'ΠρέπΡι Ξ½Ξ± ΡισάγΡτΡ τουλάχιστον Ξ­Ξ½Ξ± πΡδίο.'; + $lang['strtableneedscols'] = 'ΠρέπΡι Ξ½Ξ± ΡισάγΡτΡ έγκυρο αριθμό ΟƒΟ„Ξ·Ξ»ΟŽΞ½.'; + $lang['strtablecreated'] = 'Ο πίνακας δημιουργΞΞΈΞ·ΞΊΞ΅.'; + $lang['strtablecreatedbad'] = 'Ξ— δημιουργία του πίνακα απέτυχΡ.'; + $lang['strconfdroptable'] = 'ΔιαγραφΠτου πίνακα "%s"?'; + $lang['strtabledropped'] = 'Ο πίνακας διαγράφηκΡ.'; + $lang['strtabledroppedbad'] = 'Ξ— διαγραφΠτου πίνακα απέτυχΡ.'; + $lang['strconfemptytable'] = 'ΔιαγραφΠτων πΡριΡχομένων του πίνακα "%s"?'; + $lang['strtableemptied'] = '΀α Ο€Ξ΅ΟΞΉΞ΅Ο‡ΟŒΞΌΞ΅Ξ½Ξ± του πίνακα διαγράφηκαν.'; + $lang['strtableemptiedbad'] = 'Ξ— διαγραφΠτων πΡριΡχομένων του πίνακα απέτυχΡ.'; + $lang['strinsertrow'] = 'ΕισαγωγΠγραμμΞΟ‚'; + $lang['strrowinserted'] = 'Ξ— γραμμΠΡισΞχθη.'; + $lang['strrowinsertedbad'] = 'H ΡισαγωγΠτης γραμμΞΟ‚ απέτυχΡ.'; + $lang['strrowduplicate'] = 'H ΡισαγωγΠτης γραμμΞΟ‚ απέτυχΡ, διπλΠΡγγραφΞ.'; + $lang['streditrow'] = 'ΕπΡξΡργασία γραμμΞΟ‚'; + $lang['strrowupdated'] = 'Ξ— γραμμΠΡνημΡρώθηκΡ.'; + $lang['strrowupdatedbad'] = 'Ξ— Ρνημέρωση της γραμμΞΟ‚ απέτυχΡ.'; + $lang['strdeleterow'] = 'ΔιαγραφΠγραμμΞΟ‚'; + $lang['strconfdeleterow'] = 'ΔιαγραφΠτης γραμμΞΟ‚?'; + $lang['strrowdeleted'] = 'Ξ— γραμμΠδιαγράφηκΡ.'; + $lang['strrowdeletedbad'] = 'Ξ— διαγραφΠτης γραμμΞΟ‚ απέτυχΡ.'; + $lang['strinsertandrepeat'] = 'ΕισαγωγΠκαι Ξ΅Ο€Ξ±Ξ½Ξ¬Ξ»Ξ·ΟˆΞ·'; + $lang['strnumcols'] = 'Ξ‘ΟΞΉΞΈΞΌΟŒΟ‚ ΟƒΟ„Ξ·Ξ»ΟŽΞ½'; + $lang['strcolneedsname'] = 'ΠρέπΡι Ξ½Ξ± ορίσΡτΡ το όνομα της στΞλης'; + $lang['strselectallfields'] = 'Ξ•Ο€ΞΉΞ»ΞΏΞ³Ξ ΟŒΞ»Ο‰Ξ½ των πΡδίων'; + $lang['strselectneedscol'] = 'ΠρέπΡι Ξ½Ξ± ΡμφανιστΡί τουλάχιστον ΞΌΞ―Ξ± στΞλη.'; + $lang['strselectunary'] = 'Οι μονοτΡλΡίς τΡλΡστές (unary operators) δΡν πρέπΡι Ξ½Ξ± έχουν τιμές.'; + $lang['strcolumnaltered'] = 'Ξ— στΞλη τροποποιΞΞΈΞ·ΞΊΞ΅.'; + $lang['strcolumnalteredbad'] = 'Ξ— τροποποίηση της στΞλης απέτυχΡ.'; + $lang['strconfdropcolumn'] = 'ΔιαγραφΠστΞλης "%s" Ξ±Ο€ΟŒ τον πίνακα "%s"?'; + $lang['strcolumndropped'] = 'Ξ— στΞλη διαγράφηκΡ.'; + $lang['strcolumndroppedbad'] = 'Ξ— διαγραφΠτης στΞλης απέτυχΡ.'; + $lang['straddcolumn'] = 'ΕισαγωγΠστΞλης'; + $lang['strcolumnadded'] = 'Ξ— στΞλη ΡισΞχθη.'; + $lang['strcolumnaddedbad'] = 'Ξ— ΡισαγωγΠτης στΞλης απέτυχΡ.'; + $lang['strcascade'] = 'Ξ”Ξ™Ξ‘Ξ€Ξ‘ΞžΞ—'; + $lang['strtablealtered'] = 'Ο πίνακας τροποποιΞΞΈΞ·ΞΊΞ΅.'; + $lang['strtablealteredbad'] = 'Ξ— τροποποίηση του πίνακα απέτυχΡ.'; + $lang['strdataonly'] = 'Μόνο τα δΡδομένα'; + $lang['strstructureonly'] = 'Μόνο τη δομΞ'; + $lang['strstructureanddata'] = 'ΔομΠκαι δΡδομένα'; + $lang['strtabbed'] = 'ΜΡ στηλοθέτΡς'; + $lang['strauto'] = 'Ξ‘Ο…Ο„ΟŒΞΌΞ±Ο„Ξ±'; + $lang['strconfvacuumtable'] = 'Να ΡκκΡνωθΡί ΞΏ πίνακας "%s"?'; + $lang['strestimatedrowcount'] = 'Ξ•ΞΊΟ„ΞΉΞΌΟŽΞΌΞ΅Ξ½ΞΏΟ‚ Ξ±ΟΞΉΞΈΞΌΟŒΟ‚ γραμμών'; + + // Columns + $lang['strcolprop'] = 'Ξ™Ξ΄ΞΉΟŒΟ„Ξ·Ο„Ξ΅Ο‚ ΣτΞλης'; + + // Users + $lang['struser'] = 'ΧρΞστη'; + $lang['strusers'] = 'ΧρΞστΡς'; + $lang['strusername'] = 'Ονομα χρΞστη'; + $lang['strpassword'] = 'ΞšΟ‰Ξ΄ΞΉΞΊΟŒΟ‚ χρΞστη'; + $lang['strsuper'] = 'Ξ₯πΡρχρΞστης?'; + $lang['strcreatedb'] = 'Δημιουργία βάσης?'; + $lang['strexpires'] = 'Ξ›ΞΞΎΞ·'; + $lang['strsessiondefaults'] = 'Εξ ορισμού παράμΡτροι συνΡδρίας'; + $lang['strnousers'] = 'ΔΡ βρέθηκαν χρΞστΡς.'; + $lang['struserupdated'] = 'Ο Ξ»ΞΏΞ³Ξ±ΟΞΉΞ±ΟƒΞΌΟŒΟ‚ χρΞστη ΡνημΡρώθηκΡ.'; + $lang['struserupdatedbad'] = 'Ξ— Ρνημέρωση του χρΞστη απέτυχΡ.'; + $lang['strshowallusers'] = 'Εμφάνιση ΟŒΞ»Ο‰Ξ½ των Ο‡ΟΞ·ΟƒΟ„ΟŽΞ½'; + $lang['strcreateuser'] = 'Δημιουργία χρΞστη'; + $lang['struserneedsname'] = 'ΠρέπΡι Ξ½Ξ± ΡισάγΡτΡ όνομα χρΞστη.'; + $lang['strusercreated'] = 'Ο χρΞστης δημιουργΞΞΈΞ·ΞΊΞ΅.'; + $lang['strusercreatedbad'] = 'Ξ— δημιουργία του χρΞστη απέτυχΡ.'; + $lang['strconfdropuser'] = 'ΔιαγραφΠτου χρΞστη "%s"?'; + $lang['struserdropped'] = 'Ο χρΞστης διαγράφηκΡ.'; + $lang['struserdroppedbad'] = 'Ξ— διαγραφΠτου χρΞστη απέτυχΡ.'; + $lang['straccount'] = 'Ξ›ΞΏΞ³Ξ±ΟΞΉΞ±ΟƒΞΌΟŒΟ‚'; + $lang['strchangepassword'] = 'ΑλλαγΠκωδικού'; + $lang['strpasswordchanged'] = 'Ο ΞΊΟ‰Ξ΄ΞΉΞΊΟŒΟ‚ αλλάχθηκΡ.'; + $lang['strpasswordchangedbad'] = 'Ξ— αλλαγΠτου κωδικού απέτυχΡ.'; + $lang['strpasswordshort'] = 'Ο ΞΊΟ‰Ξ΄ΞΉΞΊΟŒΟ‚ έχΡι πολύ μικρό ΞΌΞΞΊΞΏΟ‚.'; + $lang['strpasswordconfirm'] = 'Σφάλμα στην ΡπιβΡβαίωση του κωδικού.'; + + // Groups + $lang['strgroup'] = 'Ομάδα'; + $lang['strgroups'] = 'ΞŸΞΌΞ¬Ξ΄Ξ΅Ο‚'; + $lang['strnogroup'] = 'Ξ— ομάδα δΡ βρέθηκΡ.'; + $lang['strnogroups'] = 'ΔΡ βρέθηκαν ομάδΡς.'; + $lang['strcreategroup'] = 'Δημιουργία ομάδας'; + $lang['strshowallgroups'] = 'Εμφάνιση ΟŒΞ»Ο‰Ξ½ των ομάδων'; + $lang['strgroupneedsname'] = 'ΠρέπΡι Ξ½Ξ± Ξ΄ΟŽΟƒΞ΅Ο„Ξ΅ όνομα στην ομάδα.'; + $lang['strgroupcreated'] = 'Ξ— ομάδα δημιουργΞΞΈΞ·ΞΊΞ΅.'; + $lang['strgroupcreatedbad'] = 'Ξ— δημιουργία ομάδας απέτυχΡ.'; + $lang['strconfdropgroup'] = 'ΔιαγραφΠτης ομάδας "%s"?'; + $lang['strgroupdropped'] = 'Ξ— ομάδα διαγράφηκΡ.'; + $lang['strgroupdroppedbad'] = 'Ξ— διαγραφΠτης ομάδας απέτυχΡ.'; + $lang['strmembers'] = 'Μέλη'; + $lang['strmemberof'] = 'ΞœΞ­Ξ»ΞΏΟ‚ της ομάδας'; + $lang['stradminmembers'] = 'Μέλη της ομάδας Ξ΄ΞΉΞ±Ο‡Ξ΅ΞΉΟΞΉΟƒΟ„ΟŽΞ½'; + $lang['straddmember'] = 'ΠροσθΞΞΊΞ· μέλους'; + $lang['strmemberadded'] = '΀ο μέλος προστέθηκΡ στην ομάδα.'; + $lang['strmemberaddedbad'] = 'Ξ— προσθΞΞΊΞ· του μέλους απέτυχΡ.'; + $lang['strdropmember'] = 'ΔιαγραφΠμέλους'; + $lang['strconfdropmember'] = 'ΔιαγραφΠτου μέλους "%s" Ξ±Ο€ΟŒ την ομάδα "%s"?'; + $lang['strmemberdropped'] = '΀ο μέλος διαγράφηκΡ.'; + $lang['strmemberdroppedbad'] = 'Ξ— διαγραφΠτου μέλους απέτυχΡ.'; + + // Roles + $lang['strrole'] = 'Ξ‘ΟŒΞ»ΞΏΟ‚'; + $lang['strroles'] = 'Αόλοι'; + $lang['strshowallroles'] = 'Εμφάνιση ΟŒΞ»Ο‰Ξ½ των ΟΟŒΞ»Ο‰Ξ½'; + $lang['strinheritsprivs'] = 'ΚληρονομΡί Ο€ΟΞΏΞ½ΟŒΞΌΞΉΞ±?'; + $lang['strcreaterole'] = 'Δημιουργία ΟΟŒΞ»ΞΏΟ…'; + $lang['strcancreaterole'] = 'Δημιουργία ΟΟŒΞ»ΞΏΟ…?'; + $lang['strrolecreated'] = 'Ο ΟΟŒΞ»ΞΏΟ‚ δημιουργΞΞΈΞ·ΞΊΞ΅.'; + $lang['strrolecreatedbad'] = 'Ξ— δημιουργία του ΟΟŒΞ»ΞΏΟ… απέτυχΡ.'; + $lang['strcanlogin'] = 'ΕπιτρέπΡται Ξ· σύνδΡση?'; + $lang['strconnlimit'] = 'Οριο συνδέσΡων'; + $lang['strdroprole'] = 'Ξ”ΞΉΞ±Ξ³ΟΞ±Ο†Ξ ΟΟŒΞ»ΞΏΟ…'; + $lang['strconfdroprole'] = 'ΔιαγραφΠτου ΟΟŒΞ»ΞΏΟ… "%s"?'; + $lang['strroledropped'] = 'Ο ΟΟŒΞ»ΞΏΟ‚ διαγράφηκΡ.'; + $lang['strroledroppedbad'] = 'Ξ— διαγραφΠτου ΟΟŒΞ»ΞΏΟ… απέτυχΡ.'; + $lang['strnoroles'] = 'ΔΡ βρέθηκαν ρόλοι.'; + $lang['strnolimit'] = 'Κανένα όριο'; + $lang['strnever'] = 'Ποτέ'; + $lang['strroleneedsname'] = 'ΠρέπΡι Ξ½Ξ± Ξ΄ΟŽΟƒΞ΅Ο„Ξ΅ όνομα στο ρόλο.'; + + // Privileges + $lang['strprivilege'] = 'Προνόμιο'; + $lang['strprivileges'] = 'Προνόμια'; + $lang['strnoprivileges'] = 'Ξ‘Ο…Ο„ΟŒ το αντικΡίμΡνο έχΡι τα Ρξ ορισμού Ο€ΟΞΏΞ½ΟŒΞΌΞΉΞ±.'; + $lang['strgrant'] = 'ΠαροχΞ'; + $lang['strrevoke'] = 'Ανάκληση'; + $lang['strgranted'] = '΀α Ο€ΟΞΏΞ½ΟŒΞΌΞΉΞ± αλλάχθηκαν.'; + $lang['strgrantfailed'] = 'Αποτυχία αλλαγΞΟ‚ προνομίων.'; + $lang['strgrantbad'] = 'ΠρέπΡι Ξ½Ξ± ορίσΡτΡ τουλάχιστον Ξ­Ξ½Ξ± χρΞστη Πομάδα ΞΊΞ±ΞΉ τουλάχιστον Ξ­Ξ½Ξ± Ο€ΟΞΏΞ½ΟŒΞΌΞΉΞΏ.'; + $lang['strgrantor'] = 'ΕκχωρητΞΟ‚'; + $lang['strasterisk'] = '*'; + + // Databases + $lang['strdatabase'] = 'Βάση'; + $lang['strdatabases'] = 'ΒάσΡις'; + $lang['strshowalldatabases'] = 'Εμφάνιση ΟŒΞ»Ο‰Ξ½ των βάσΡων'; + $lang['strnodatabases'] = 'ΔΡ βρέθηκαν βάσΡις.'; + $lang['strcreatedatabase'] = 'Δημιουργία βάσης'; + $lang['strdatabasename'] = 'Ονομα βάσης'; + $lang['strdatabaseneedsname'] = 'ΠρέπΡι Ξ½Ξ± Ξ΄ΟŽΟƒΞ΅Ο„Ξ΅ όνομα βάσης.'; + $lang['strdatabasecreated'] = 'Ξ— βάση δημιουργΞΞΈΞ·ΞΊΞ΅.'; + $lang['strdatabasecreatedbad'] = 'Ξ— δημιουργία της βάσης απέτυχΡ.'; + $lang['strconfdropdatabase'] = 'ΔιαγραφΠτης βάσης "%s"?'; + $lang['strdatabasedropped'] = 'Ξ— βάση διαγράφηκΡ.'; + $lang['strdatabasedroppedbad'] = 'Ξ— δημιουργία της βάσης απέτυχΡ.'; + $lang['strentersql'] = 'ΕισάγΡτΡ SQL προς ΡκτέλΡση:'; + $lang['strsqlexecuted'] = 'H SQL ΡκτΡλέστηκΡ.'; + $lang['strvacuumgood'] = 'Ξ— Ρκκένωση ολοκληρώθηκΡ.'; + $lang['strvacuumbad'] = 'Ξ— Ρκκένωση απέτυχΡ.'; + $lang['stranalyzegood'] = 'Ξ— ανάλυση ολοκληρώθηκΡ.'; + $lang['stranalyzebad'] = 'Ξ— ανάλυση απέτυχΡ.'; + $lang['strreindexgood'] = 'Ξ— Ξ΅Ο€Ξ±Ξ½Ξ±Ξ΄Ξ΅ΞΉΞΊΟ„ΞΏΞ΄ΟŒΟ„Ξ·ΟƒΞ· ολοκληρώθηκΡ.'; + $lang['strreindexbad'] = 'Ξ— Ξ΅Ο€Ξ±Ξ½Ξ±Ξ΄Ξ΅ΞΉΞΊΟ„ΞΏΞ΄ΟŒΟ„Ξ·ΟƒΞ· απέτυχΡ.'; + $lang['strfull'] = 'Ολα'; + $lang['strfreeze'] = 'Πάγωμα'; + $lang['strforce'] = 'Ξ₯ποχρΡωτικά'; + $lang['strsignalsent'] = '΀ο ΟƒΞΞΌΞ± Ρστάλη.'; + $lang['strsignalsentbad'] = 'Ξ— αποστολΠτου ΟƒΞματος απέτυχΡ.'; + $lang['strallobjects'] = 'Ολα τα αντικΡίμΡνα'; + $lang['strdatabasealtered'] = 'Ξ— βάση τροποποιΞΞΈΞ·ΞΊΞ΅.'; + $lang['strdatabasealteredbad'] = 'Ξ— τροποποίηση της βάσης απέτυχΡ.'; + + // Views + $lang['strview'] = 'Οψη'; + $lang['strviews'] = 'ΞŸΟˆΞ΅ΞΉΟ‚'; + $lang['strshowallviews'] = 'Εμφάνιση ΟŒΞ»Ο‰Ξ½ των ΟŒΟˆΞ΅Ο‰Ξ½'; + $lang['strnoview'] = 'ΔΡ βρέθηκΡ όψη.'; + $lang['strnoviews'] = 'ΔΡ βρέθηκαν ΟŒΟˆΞ΅ΞΉΟ‚.'; + $lang['strcreateview'] = 'Δημιουργία ΟŒΟˆΞ·Ο‚'; + $lang['strviewname'] = 'Ονομα ΟŒΟˆΞ·Ο‚'; + $lang['strviewneedsname'] = 'ΠρέπΡι Ξ½Ξ± Ξ΄ΟŽΟƒΞ΅Ο„Ξ΅ όνομα στην όψη.'; + $lang['strviewneedsdef'] = 'ΠρέπΡι Ξ½Ξ± Ξ΄ΟŽΟƒΞ΅Ο„Ξ΅ τον ΞΏΟΞΉΟƒΞΌΟŒ της ΟŒΟˆΞ·Ο‚.'; + $lang['strviewneedsfields'] = 'ΠρέπΡι Ξ½Ξ± Ξ΄ΟŽΟƒΞ΅Ο„Ξ΅ τις στΞλΡς της ΟŒΟˆΞ·Ο‚.'; + $lang['strviewcreated'] = 'Ξ— όψη δημιουργΞΞΈΞ·ΞΊΞ΅.'; + $lang['strviewcreatedbad'] = 'Ξ— δημιουργία της ΟŒΟˆΞ·Ο‚ απέτυχΡ.'; + $lang['strconfdropview'] = 'ΔιαγραφΠτης ΟŒΟˆΞ·Ο‚ "%s"?'; + $lang['strviewdropped'] = 'Ξ— όψη διαγράφηκΡ.'; + $lang['strviewdroppedbad'] = 'Ξ— διαγραφΠτης ΟŒΟˆΞ·Ο‚ απέτυχΡ.'; + $lang['strviewupdated'] = 'Ξ— όψη ΡνημΡρώθηκΡ.'; + $lang['strviewupdatedbad'] = 'Ξ— Ρνημέρωση της ΟŒΟˆΞ·Ο‚ απέτυχΡ.'; + $lang['strviewlink'] = 'Σύ΢Ρυξη κλΡιδιών'; + $lang['strviewconditions'] = 'Ξ ΟΟŒΟƒΞΈΞ΅Ο„Ξ΅Ο‚ συνθΞκΡς'; + $lang['strcreateviewwiz'] = 'Δημιουργία ΟŒΟˆΞ·Ο‚ ΞΌΞ΅ βοηθό'; + + // Sequences + $lang['strsequence'] = 'Ακολουθία'; + $lang['strsequences'] = 'ΑκολουθίΡς'; + $lang['strshowallsequences'] = 'Εμφάνιση ΟŒΞ»Ο‰Ξ½ των Ξ±ΞΊΞΏΞ»ΞΏΟ…ΞΈΞΉΟŽΞ½'; + $lang['strnosequence'] = 'ΔΡ βρέθηκΡ ακολουθία.'; + $lang['strnosequences'] = 'ΔΡ βρέθηκαν ακολουθίΡς.'; + $lang['strcreatesequence'] = 'Δημιουργία ακολουθίας'; + $lang['strlastvalue'] = '΀ΡλΡυταία τιμΞ'; + $lang['strincrementby'] = 'Προσαύξηση κατά'; + $lang['strstartvalue'] = '΀ιμΠΡκκίνησης'; + $lang['strmaxvalue'] = 'ΞœΞ­Ξ³ΞΉΟƒΟ„Ξ· τιμΞ'; + $lang['strminvalue'] = 'Ελάχιστη τιμΞ'; + $lang['strcachevalue'] = 'Ξ‘ΟΞΉΞΈΞΌΟŒΟ‚ Ξ΅Ξ³Ξ³ΟΞ±Ο†ΟŽΞ½ στην κρυφΠμνΞΞΌΞ· (cache)'; + $lang['strlogcount'] = 'ΞšΞ±Ο„Ξ±Ξ³ΟΞ±Ο†Ξ'; + $lang['strcancycle'] = 'Να μηδΡνί΢Ρται?'; + $lang['striscalled'] = 'ΕχΡι κληθΡί?'; + $lang['strsequenceneedsname'] = 'ΠρέπΡι Ξ½Ξ± Ξ΄ΟŽΟƒΞ΅Ο„Ξ΅ όνομα Ξ³ΞΉΞ± την ακολουθία.'; + $lang['strsequencecreated'] = 'Ξ— ακολουθία δημιουργΞΞΈΞ·ΞΊΞ΅.'; + $lang['strsequencecreatedbad'] = 'Ξ— δημιουργία της ακολουθίας απέτυχΡ.'; + $lang['strconfdropsequence'] = 'Να διαγραφΡί Ξ· ακολουθία "%s"?'; + $lang['strsequencedropped'] = 'Ξ— ακολουθία διαγράφηκΡ.'; + $lang['strsequencedroppedbad'] = 'Ξ— διαγραφΠτης ακολουθίας απέτυχΡ.'; + $lang['strsequencereset'] = 'Ξ— ακολουθία ΡπανΡκκινΞΞΈΞ·ΞΊΞ΅.'; + $lang['strsequenceresetbad'] = 'Ξ— ΡπανΡκκίνηση της ακολουθίας απέτυχΡ.'; + $lang['strsequencealtered'] = 'Ξ— ακολουθία τροποποιΞΞΈΞ·ΞΊΞ΅.'; + $lang['strsequencealteredbad'] = 'Ξ— τροποποίηση της ακολουθίας απέτυχΡ.'; + $lang['strsetval'] = 'ΑλλαγΠτιμΞΟ‚'; + $lang['strsequencesetval'] = 'Ξ— τιμΠτης ακολουθίας ορίσθηκΡ.'; + $lang['strsequencesetvalbad'] = 'ΑπέτυχΡ ΞΏ ΞΏΟΞΉΟƒΞΌΟŒΟ‚ τιμΞΟ‚ της ακολουθίας.'; + $lang['strnextval'] = 'Προσαύξηση'; + $lang['strsequencenextval'] = 'Ξ— ακολουθία προσαυξΞΞΈΞ·ΞΊΞ΅.'; + $lang['strsequencenextvalbad'] = 'Ξ— προσαύξηση της ακολουθίας απέτυχΡ.'; + + // Indexes + $lang['strindex'] = 'ΕυρΡτΞριο'; + $lang['strindexes'] = 'ΕυρΡτΞρια'; + $lang['strindexname'] = 'Ονομα ΡυρΡτηρίου'; + $lang['strshowallindexes'] = 'Εμφάνιση ΟŒΞ»Ο‰Ξ½ των ΡυρΡτηρίων'; + $lang['strnoindex'] = 'ΔΡ βρέθηκΡ ΡυρΡτΞριο.'; + $lang['strnoindexes'] = 'ΔΡ βρέθηκαν ΡυρΡτΞρια.'; + $lang['strcreateindex'] = 'Δημιουργία ΡυρΡτηρίου'; + $lang['strtabname'] = 'Ονομα καρτέλας'; + $lang['strcolumnname'] = 'Ονομα στΞλης'; + $lang['strindexneedsname'] = 'ΠρέπΡι Ξ½Ξ± Ξ΄ΟŽΟƒΞ΅Ο„Ξ΅ όνομα στο ΡυρΡτΞριο.'; + $lang['strindexneedscols'] = '΀α ΡυρΡτΞρια απαιτούν Ξ­Ξ½Ξ±Ξ½ έγκυρο αριθμό ΟƒΟ„Ξ·Ξ»ΟŽΞ½.'; + $lang['strindexcreated'] = '΀ο ΡυρΡτΞριο δημιουργΞΞΈΞ·ΞΊΞ΅.'; + $lang['strindexcreatedbad'] = 'Ξ— δημιουργία του ΡυρΡτηρίου απέτυχΡ.'; + $lang['strconfdropindex'] = 'Να διαγραφΡί το ΡυρΡτΞριο "%s"?'; + $lang['strindexdropped'] = '΀ο ΡυρΡτΞριο διαγράφηκΡ.'; + $lang['strindexdroppedbad'] = 'Ξ— διαγραφΠτου ΡυρΡτηρίου απέτυχΡ.'; + $lang['strkeyname'] = 'Ονομα κλΡιδιού'; + $lang['struniquekey'] = 'Μοναδικό κλΡιδί'; + $lang['strprimarykey'] = 'ΠρωτΡύον κλΡιδί'; + $lang['strindextype'] = '΀ύπος ΡυρΡτηρίου'; + $lang['strtablecolumnlist'] = 'ΣτΞλΡς πίνακα'; + $lang['strindexcolumnlist'] = 'ΣτΞλΡς ΡυρΡτηρίου'; + $lang['strconfcluster'] = 'Να ομαδοποιηθούν τα "%s"?'; + $lang['strclusteredgood'] = 'Ξ— ομαδοποίηση ολοκληρώθηκΡ.'; + $lang['strclusteredbad'] = 'Ξ— ομαδοποίηση απέτυχΡ.'; + $lang['strcluster'] = 'Συστοιχία'; + + // Rules + $lang['strrules'] = 'ΞšΞ±Ξ½ΟŒΞ½Ξ΅Ο‚'; + $lang['strrule'] = 'ΞšΞ±Ξ½ΟŒΞ½Ξ±Ο‚'; + $lang['strshowallrules'] = 'Εμφάνιση ΟŒΞ»Ο‰Ξ½ των ΞΊΞ±Ξ½ΟŒΞ½Ο‰Ξ½'; + $lang['strnorule'] = 'ΔΡ βρέθηκΡ ΞΊΞ±Ξ½ΟŒΞ½Ξ±Ο‚.'; + $lang['strnorules'] = 'ΔΡ βρέθηκαν ΞΊΞ±Ξ½ΟŒΞ½Ξ΅Ο‚.'; + $lang['strcreaterule'] = 'Δημιουργία κανόνα'; + $lang['strrulename'] = 'Ονομα κανόνα'; + $lang['strruleneedsname'] = 'ΠρέπΡι Ξ½Ξ± Ξ΄ΟŽΟƒΞ΅Ο„Ξ΅ όνομα στον κανόνα.'; + $lang['strrulecreated'] = 'Ο ΞΊΞ±Ξ½ΟŒΞ½Ξ±Ο‚ δημιουργΞΞΈΞ·ΞΊΞ΅.'; + $lang['strrulecreatedbad'] = 'Ξ— δημιουργία του κανόνα απέτυχΡ.'; + $lang['strconfdroprule'] = 'Να διαγραφΡί ΞΏ ΞΊΞ±Ξ½ΟŒΞ½Ξ±Ο‚ "%s" στον "%s"?'; + $lang['strruledropped'] = 'Ο ΞΊΞ±Ξ½ΟŒΞ½Ξ±Ο‚ διαγράφηκΡ.'; + $lang['strruledroppedbad'] = 'Ξ— διαγραφΠτου κανόνα απέτυχΡ.'; + + // Constraints + $lang['strconstraint'] = 'Ξ Ξ΅ΟΞΉΞΏΟΞΉΟƒΞΌΟŒΟ‚'; + $lang['strconstraints'] = 'ΠΡριορισμοί'; + $lang['strshowallconstraints'] = 'Εμφάνιση ΟŒΞ»Ο‰Ξ½ των Ο€Ξ΅ΟΞΉΞΏΟΞΉΟƒΞΌΟŽΞ½'; + $lang['strnoconstraints'] = 'ΔΡ βρέθηκαν πΡριορισμοί.'; + $lang['strcreateconstraint'] = 'Δημιουργία πΡριορισμού'; + $lang['strconstraintcreated'] = 'Ο Ο€Ξ΅ΟΞΉΞΏΟΞΉΟƒΞΌΟŒΟ‚ δημιουργΞΞΈΞ·ΞΊΞ΅.'; + $lang['strconstraintcreatedbad'] = 'Ξ— δημιουργία του πΡριορισμού απέτυχΡ.'; + $lang['strconfdropconstraint'] = 'Να διαγραφΡί ΞΏ Ο€Ξ΅ΟΞΉΞΏΟΞΉΟƒΞΌΟŒΟ‚ "%s" στον "%s"?'; + $lang['strconstraintdropped'] = 'Ο Ο€Ξ΅ΟΞΉΞΏΟΞΉΟƒΞΌΟŒΟ‚ διαγράφηκΡ.'; + $lang['strconstraintdroppedbad'] = 'Ξ— διαγραφΠτου πΡριορισμού απέτυχΡ.'; + $lang['straddcheck'] = 'ΠροσθΞΞΊΞ· Ρλέγχου'; + $lang['strcheckneedsdefinition'] = 'ΠρέπΡι Ξ½Ξ± οριστΡί ΞΏ έλΡγχος.'; + $lang['strcheckadded'] = 'Ο έλΡγχος προστέθηκΡ.'; + $lang['strcheckaddedbad'] = 'Ξ— προσθΞΞΊΞ· Ρλέγχου απέτυχΡ.'; + $lang['straddpk'] = 'ΠροσθΞΞΊΞ· πρωτΡύοντος κλΡιδιού'; + $lang['strpkneedscols'] = '΀ο πρωτΡύον κλΡιδί χρΡιά΢Ρται τουλάχιστον ΞΌΞ―Ξ± στΞλη.'; + $lang['strpkadded'] = '΀ο πρωτΡύον κλΡιδί προστέθηκΡ.'; + $lang['strpkaddedbad'] = 'Αποτυχία προσθΞΞΊΞ·Ο‚ πρωτΡύοντος κλΡιδιού.'; + $lang['stradduniq'] = 'ΠροσθΞΞΊΞ· μοναδικού κλΡιδιού'; + $lang['struniqneedscols'] = '΀ο μοναδικό κλΡιδί χρΡιά΢Ρται τουλάχιστον ΞΌΞ―Ξ± στΞλη.'; + $lang['struniqadded'] = '΀ο μοναδικό κλΡιδί προστέθηκΡ.'; + $lang['struniqaddedbad'] = 'Αποτυχία προσθΞΞΊΞ·Ο‚ μοναδικού κλΡιδιού.'; + $lang['straddfk'] = 'ΠροσθΞση ΞΎΞ­Ξ½ΞΏΟ… κλΡιδιού'; + $lang['strfkneedscols'] = '΀ο ΞΎΞ­Ξ½ΞΏ κλΡιδί χρΡιά΢Ρται τουλάχιστον ΞΌΞ―Ξ± στΞλη.'; + $lang['strfkneedstarget'] = '΀ο ΞΎΞ­Ξ½ΞΏ κλΡιδί χρΡιά΢Ρται Ξ­Ξ½Ξ± αποδέκτη πίνακα.'; + $lang['strfkadded'] = '΀ο ΞΎΞ­Ξ½ΞΏ κλΡιδί προστέθηκΡ.'; + $lang['strfkaddedbad'] = 'Αποτυχία προσθΞΞΊΞ·Ο‚ ΞΎΞ­Ξ½ΞΏΟ… κλΡιδιού.'; + $lang['strfktarget'] = 'Αποδέκτης πίνακας'; + $lang['strfkcolumnlist'] = 'ΣτΞλΡς στο κλΡιδί'; + $lang['strondelete'] = 'ΞšΞ‘Ξ€Ξ‘ ΀Η ΔΙΑΓΑΑΦΗ'; + $lang['stronupdate'] = 'ΞšΞ‘Ξ€Ξ‘ ΀ΗΝ Ξ•ΞΞ—ΞœΞ•Ξ‘Ξ©Ξ£Ξ—'; + + // Functions + $lang['strfunction'] = 'Συνάρτηση'; + $lang['strfunctions'] = 'ΣυναρτΞσΡις'; + $lang['strshowallfunctions'] = 'Εμφάνιση ΟŒΞ»Ο‰Ξ½ των συναρτΞσΡων'; + $lang['strnofunction'] = 'ΔΡ βρέθηκΡ συνάρτηση.'; + $lang['strnofunctions'] = 'ΔΡ βρέθηκαν συναρτΞσΡις.'; + $lang['strcreateplfunction'] = 'Δημιουργία συνάρτησης σΡ SQL/PL'; + $lang['strcreateinternalfunction'] = 'Δημιουργία ΡσωτΡρικΞΟ‚ συνάρτησης'; + $lang['strcreatecfunction'] = 'Δημιουργία συνάρτησης σΡ C'; + $lang['strfunctionname'] = 'Ονομα συνάρτησης'; + $lang['strreturns'] = 'ΕπιστρέφΡι'; + $lang['strproglanguage'] = 'Ξ“Ξ»ΟŽΟƒΟƒΞ± προγραμματισμού'; + $lang['strfunctionneedsname'] = 'ΠρέπΡι Ξ½Ξ± Ξ΄ΟŽΟƒΞ΅Ο„Ξ΅ όνομα στη συνάρτηση.'; + $lang['strfunctionneedsdef'] = 'ΠρέπΡι Ξ½Ξ± Ξ΄ΟŽΟƒΞ΅Ο„Ξ΅ ΞΏΟΞΉΟƒΞΌΟŒ στη συνάρτηση.'; + $lang['strfunctioncreated'] = 'Ξ— συνάρτηση δημιουργΞΞΈΞ·ΞΊΞ΅.'; + $lang['strfunctioncreatedbad'] = 'Ξ— δημιουργία της συνάρτησης απέτυχΡ.'; + $lang['strconfdropfunction'] = 'Να διαγραφΡί Ξ· συνάρτηση "%s"?'; + $lang['strfunctiondropped'] = 'Ξ— συνάρτηση διαγράφηκΡ.'; + $lang['strfunctiondroppedbad'] = 'Ξ— διαγραφΠτης συνάρτησης απέτυχΡ.'; + $lang['strfunctionupdated'] = 'Ξ— συνάρτηση ΡνημΡρώθηκΡ.'; + $lang['strfunctionupdatedbad'] = 'Ξ— Ρνημέρωση της συνάρτησης απέτυχΡ.'; + $lang['strobjectfile'] = 'ΑρχΡίο αντικΡιμένου'; + $lang['strlinksymbol'] = 'Ονομα συνάρτησης στον πηγαίο κώδικα'; + $lang['strarguments'] = 'ΞŸΟΞ―ΟƒΞΌΞ±Ο„Ξ±'; + $lang['strargmode'] = 'Είδος'; + $lang['strargtype'] = '΀ύπος'; + $lang['strargadd'] = 'Επιπλέον ΟŒΟΞΉΟƒΞΌΞ±'; + $lang['strargremove'] = 'ΔιαγραφΠορίσματος'; + $lang['strargnoargs'] = 'ΑυτΠη συνάρτηση δΡν έχΡι ορίσματα.'; + $lang['strargenableargs'] = 'ΕνΡργοποίηση ορισμάτων που τροφοδοτούν τη συνάρτηση.'; + $lang['strargnorowabove'] = 'ΔΡν υπάρχΡι γραμμΠπάνω Ξ±Ο€ΟŒ Ξ±Ο…Ο„ΞΞ½.'; + $lang['strargnorowbelow'] = 'ΔΡν υπάρχΡι γραμμΠκάτω Ξ±Ο€ΟŒ Ξ±Ο…Ο„ΞΞ½.'; + $lang['strargraise'] = 'ΞœΞ΅Ο„Ξ±ΞΊΞ―Ξ½Ξ·ΟƒΞ· πάνω.'; + $lang['strarglower'] = 'ΞœΞ΅Ο„Ξ±ΞΊΞ―Ξ½Ξ·ΟƒΞ· κάτω.'; + $lang['strargremoveconfirm'] = 'Να διαγραφΡί το ΟŒΟΞΉΟƒΞΌΞ±; Ξ— ΡνέργΡια Ρίναι ΞœΞ— Ξ‘ΞΞ‘Ξ£Ξ€Ξ‘Ξ•Ξ¨Ξ™ΞœΞ—.'; + + + // Triggers + $lang['strtrigger'] = 'Εναυσμα'; + $lang['strtriggers'] = 'Εναύσματα'; + $lang['strshowalltriggers'] = 'Εμφάνιση ΟŒΞ»Ο‰Ξ½ των Ρναυσμάτων'; + $lang['strnotrigger'] = 'ΔΡ βρέθηκΡ έναυσμα.'; + $lang['strnotriggers'] = 'ΔΡ βρέθηκαν Ρναύσματα.'; + $lang['strcreatetrigger'] = 'Δημιουργία Ρναύσματος'; + $lang['strtriggerneedsname'] = 'ΠρέπΡι Ξ½Ξ± Ξ΄ΟŽΟƒΞ΅Ο„Ξ΅ όνομα στο έναυσμα.'; + $lang['strtriggerneedsfunc'] = '΀ο έναυσμα πρέπΡι Ξ½Ξ± αντιστοιχΡί σΡ ΞΌΞ―Ξ± συνάρτηση.'; + $lang['strtriggercreated'] = '΀ο έναυσμα δημιουργΞΞΈΞ·ΞΊΞ΅.'; + $lang['strtriggercreatedbad'] = 'Ξ— δημιουργία του Ρναύσματος απέτυχΡ.'; + $lang['strconfdroptrigger'] = 'Να διαγραφΡί το έναυσμα "%s" στον "%s"?'; + $lang['strconfenabletrigger'] = 'Να ΡνΡργοποιηθΡί το έναυσμα "%s" στον "%s"?'; + $lang['strconfdisabletrigger'] = 'Να απΡνΡργοποιηθΡί το έναυσμα "%s" στον "%s"?'; + $lang['strtriggerdropped'] = '΀ο έναυσμα διαγράφηκΡ.'; + $lang['strtriggerdroppedbad'] = 'Ξ— διαγραφΠτου Ρναύσματος απέτυχΡ.'; + $lang['strtriggerenabled'] = '΀ο έναυσμα ΡνΡργοποιΞΞΈΞ·ΞΊΞ΅.'; + $lang['strtriggerenabledbad'] = 'Ξ— ΡνΡργοποίηση του Ρναύσματος απέτυχΡ.'; + $lang['strtriggerdisabled'] = '΀ο έναυσμα απΡνΡργοποιΞΞΈΞ·ΞΊΞ΅.'; + $lang['strtriggerdisabledbad'] = 'Ξ— απΡνΡργοποίηση απέτυχΡ.'; + $lang['strtriggeraltered'] = '΀ο έναυσμα τροποποιΞΞΈΞ·ΞΊΞ΅.'; + $lang['strtriggeralteredbad'] = 'Ξ— τροποποίηση του Ρναύσματος απέτυχΡ.'; + $lang['strforeach'] = 'Για κάθΡ'; + + // Types + $lang['strtype'] = '΀ύπος'; + $lang['strtypes'] = '΀ύποι'; + $lang['strshowalltypes'] = 'Εμφάνιση ΟŒΞ»Ο‰Ξ½ των τύπων'; + $lang['strnotype'] = 'ΔΡ βρέθηκΡ τύπος.'; + $lang['strnotypes'] = 'ΔΡ βρέθηκαν τύποι.'; + $lang['strcreatetype'] = 'Δημιουργία τύπου'; + $lang['strcreatecomptype'] = 'Δημιουργία σύνθΡτου τύπου'; + $lang['strtypeneedsfield'] = 'ΠρέπΡι Ξ½Ξ± ορίσΡτΡ τουλάχιστον Ξ­Ξ½Ξ± πΡδίο.'; + $lang['strtypeneedscols'] = 'ΠρέπΡι Ξ½Ξ± ορίσΡτΡ Ξ­Ξ½Ξ±Ξ½ έγκυρο αριθμό πΡδίων.'; + $lang['strinputfn'] = 'Συνάρτηση Ξ΅ΞΉΟƒΟŒΞ΄ΞΏΟ…'; + $lang['stroutputfn'] = 'Συνάρτηση Ξ΅ΞΎΟŒΞ΄ΞΏΟ…'; + $lang['strpassbyval'] = 'Να μΡταφέρΡται Ξ· μΡταβλητΞ?'; + $lang['stralignment'] = 'Στοίχιση'; + $lang['strelement'] = 'ΣτοιχΡίο'; + $lang['strdelimiter'] = 'ΔιαχωριστΞΟ‚'; + $lang['strstorage'] = 'ΑποθΞκΡυση'; + $lang['strfield'] = 'ΠΡδίο'; + $lang['strnumfields'] = 'Ξ‘ΟΞΉΞΈΞΌΟŒΟ‚ πΡδίων'; + $lang['strtypeneedsname'] = 'ΠρέπΡι Ξ½Ξ± Ξ΄ΟŽΟƒΞ΅Ο„Ξ΅ όνομα στον τύπο.'; + $lang['strtypeneedslen'] = 'ΠρέπΡι Ξ½Ξ± ορίσΡτΡ το ΞΌΞΞΊΞΏΟ‚ του τύπου.'; + $lang['strtypecreated'] = 'Ο τύπος δημιουργΞΞΈΞ·ΞΊΞ΅.'; + $lang['strtypecreatedbad'] = 'Ξ— δημιουργία του τύπου απέτυχΡ.'; + $lang['strconfdroptype'] = 'Να διαγραφΡί ΞΏ τύπος "%s"?'; + $lang['strtypedropped'] = 'Ο τύπος διαγράφηκΡ.'; + $lang['strtypedroppedbad'] = 'Ξ— διαγραφΠτου τύπου απέτυχΡ.'; + $lang['strflavor'] = 'Εντύπωση'; + $lang['strbasetype'] = 'Βάση'; + $lang['strcompositetype'] = 'ΣύνθΡση'; + $lang['strpseudotype'] = 'ΨΡύδο'; + + // Schemas + $lang['strschema'] = 'ΣχΞΞΌΞ±'; + $lang['strschemas'] = 'ΣχΞματα'; + $lang['strshowallschemas'] = 'Εμφάνιση ΟŒΞ»Ο‰Ξ½ των σχημάτων'; + $lang['strnoschema'] = 'ΔΡ βρέθηκΡ σχΞΞΌΞ±.'; + $lang['strnoschemas'] = 'ΔΡ βρέθηκαν σχΞματα.'; + $lang['strcreateschema'] = 'Δημιουργία σχΞματος'; + $lang['strschemaname'] = 'Ονομα σχΞματος'; + $lang['strschemaneedsname'] = 'ΠρέπΡι Ξ½Ξ± Ξ΄ΟŽΟƒΞ΅Ο„Ξ΅ όνομα στο σχΞΞΌΞ±.'; + $lang['strschemacreated'] = '΀ο σχΞΞΌΞ± δημιουργΞΞΈΞ·ΞΊΞ΅'; + $lang['strschemacreatedbad'] = 'Ξ— δημιουργία του σχΞματος απέτυχΡ.'; + $lang['strconfdropschema'] = 'Να διαγραφΡί το σχΞΞΌΞ± "%s"?'; + $lang['strschemadropped'] = '΀ο σχΞΞΌΞ± διαγράφηκΡ.'; + $lang['strschemadroppedbad'] = 'Ξ— διαγραφΠτου σχΞματος απέτυχΡ.'; + $lang['strschemaaltered'] = '΀ο σχΞΞΌΞ± τροποποιΞΞΈΞ·ΞΊΞ΅.'; + $lang['strschemaalteredbad'] = 'Ξ— τροποποίηση του σχΞματος απέτυχΡ.'; + $lang['strsearchpath'] = 'ΠορΡία Ξ±Ξ½Ξ±ΞΆΞτησης σχΞματος'; + + // Reports + + // Domains + $lang['strdomain'] = '΀ομέας'; + $lang['strdomains'] = '΀ομΡίς'; + $lang['strshowalldomains'] = 'Εμφάνιση ΟŒΞ»Ο‰Ξ½ των τομέων'; + $lang['strnodomains'] = 'ΔΡ βρέθηκαν τομΡίς.'; + $lang['strcreatedomain'] = 'Δημιουργία τομέα'; + $lang['strdomaindropped'] = 'Ο τομέας διαγράφηκΡ.'; + $lang['strdomaindroppedbad'] = 'Ξ— διαγραφΠτου τομέα απέτυχΡ.'; + $lang['strconfdropdomain'] = 'Να διαγραφΡί ΞΏ τομέας "%s"?'; + $lang['strdomainneedsname'] = 'ΠρέπΡι Ξ½Ξ± Ξ΄ΟŽΟƒΞ΅Ο„Ξ΅ όνομα στον τομέα.'; + $lang['strdomaincreated'] = 'Ο τομέας δημιουργΞΞΈΞ·ΞΊΞ΅.'; + $lang['strdomaincreatedbad'] = 'Ξ— δημιουργία του τομέα απέτυχΡ.'; + $lang['strdomainaltered'] = 'Ο τομέας τροποποιΞΞΈΞ·ΞΊΞ΅.'; + $lang['strdomainalteredbad'] = 'Ξ— τροποποίηση του τομέα απέτυχΡ.'; + + // Operators + $lang['stroperator'] = '΀ΡλΡστΞΟ‚'; + $lang['stroperators'] = '΀ΡλΡστές'; + $lang['strshowalloperators'] = 'Εμφάνιση ΟŒΞ»Ο‰Ξ½ των Ο„Ξ΅Ξ»Ξ΅ΟƒΟ„ΟŽΞ½'; + $lang['strnooperator'] = 'ΔΡ βρέθηκΡ τΡλΡστΞΟ‚.'; + $lang['strnooperators'] = 'ΔΡ βρέθηκαν τΡλΡστές.'; + $lang['strcreateoperator'] = 'Δημιουργία τΡλΡστΞ'; + $lang['strleftarg'] = 'Είδος αριστΡρΞΟ‚ παραμέτρου'; + $lang['strrightarg'] = 'Είδος δΡξιάς παραμέτρου'; + $lang['strcommutator'] = 'ΑντιμΡτάθΡση'; + $lang['strnegator'] = 'Αρνηση'; + $lang['strrestrict'] = 'Ξ Ξ΅ΟΞΉΞΏΟΞΉΟƒΞΌΟŒΟ‚'; + $lang['strjoin'] = 'Σύ΢Ρυξη'; + $lang['strhashes'] = 'ΞšΞ±Ο„Ξ¬Ο„ΞΌΞ·ΟƒΞ·'; + $lang['strmerges'] = 'Ενωση'; + $lang['strleftsort'] = 'Ξ‘ΟΞΉΟƒΟ„Ξ΅ΟΞ Ο„Ξ±ΞΎΞΉΞ½ΟŒΞΌΞ·ΟƒΞ·'; + $lang['strrightsort'] = 'ΔΡξιά Ο„Ξ±ΞΎΞΉΞ½ΟŒΞΌΞ·ΟƒΞ·'; + $lang['strlessthan'] = 'ΞœΞΉΞΊΟΟŒΟ„Ξ΅ΟΞΏ Ξ±Ο€ΟŒ'; + $lang['strgreaterthan'] = 'ΞœΞ΅Ξ³Ξ±Ξ»ΟΟ„Ξ΅ΟΞΏ Ξ±Ο€ΟŒ'; + $lang['stroperatorneedsname'] = 'ΠρέπΡι Ξ½Ξ± Ξ΄ΟŽΟƒΞ΅Ο„Ξ΅ όνομα στον τΡλΡστΞ.'; + $lang['stroperatorcreated'] = 'Ο τΡλΡστΞΟ‚ δημιουργΞΞΈΞ·ΞΊΞ΅'; + $lang['stroperatorcreatedbad'] = 'Ξ— δημιουργία του τΡλΡστΠαπέτυχΡ.'; + $lang['strconfdropoperator'] = 'Να διαγραφΡί ΞΏ τΡλΡστΞΟ‚ "%s"?'; + $lang['stroperatordropped'] = 'Ο τΡλΡστΞΟ‚ διαγράφηκΡ.'; + $lang['stroperatordroppedbad'] = 'Ξ— διαγραφΠτου τΡλΡστΠαπέτυχΡ.'; + + // Casts + $lang['strcasts'] = 'ΞœΞ΅Ο„Ξ±Ο„ΟΞΏΟ€Ξ Ο„ΟΟ€ΞΏΟ…'; + $lang['strnocasts'] = 'ΔΡ βρέθηκαν μΡτατροπές τύπου.'; + $lang['strsourcetype'] = '΀ύπος Ξ΅ΞΉΟƒΟŒΞ΄ΞΏΟ…'; + $lang['strtargettype'] = '΀ύπος Ξ΅ΞΎΟŒΞ΄ΞΏΟ…'; + $lang['strimplicit'] = 'Ξ‘Ο€ΟŒΞ»Ο…Ο„Ξ·'; + $lang['strinassignment'] = 'ΣΡ ανάθΡση'; + $lang['strbinarycompat'] = '(Ξ”Ο…Ξ±Ξ΄ΞΉΞΊΞ ΟƒΟ…ΞΌΞ²Ξ±Ο„ΟŒΟ„Ξ·Ο„Ξ±)'; + + // Conversions + $lang['strconversions'] = 'ΞœΞ΅Ο„Ξ±Ο„ΟΞΏΟ€Ξ­Ο‚'; + $lang['strnoconversions'] = 'ΔΡ βρέθηκαν μΡτατροπές.'; + $lang['strsourceencoding'] = 'ΞšΟ‰Ξ΄ΞΉΞΊΞΏΟ€ΞΏΞ―Ξ·ΟƒΞ· Ξ΅ΞΉΟƒΟŒΞ΄ΞΏΟ…'; + $lang['strtargetencoding'] = 'ΞšΟ‰Ξ΄ΞΉΞΊΞΏΟ€ΞΏΞ―Ξ·ΟƒΞ· Ξ΅ΞΎΟŒΞ΄ΞΏΟ…'; + + // Languages + $lang['strlanguages'] = 'Ξ“Ξ»ΟŽΟƒΟƒΞ΅Ο‚'; + $lang['strnolanguages'] = 'ΔΡ βρέθηκαν Ξ³Ξ»ΟŽΟƒΟƒΞ΅Ο‚.'; + $lang['strtrusted'] = 'Ξ‘ΞΎΞΉΟŒΟ€ΞΉΟƒΟ„Ξ·'; + + // Info + $lang['strnoinfo'] = 'ΔΡ βρέθηκαν πληροφορίΡς.'; + $lang['strreferringtables'] = 'ΣχΡτικοί πίνακΡς'; + $lang['strparenttables'] = 'Γονικοί πίνακΡς'; + $lang['strchildtables'] = 'Ξ˜Ο…Ξ³Ξ±Ο„ΟΞΉΞΊΞΏΞ― πίνακΡς'; + + // Aggregates + $lang['straggregate'] = 'ΣυγκΡντρωτικΠσυνάρτηση'; + $lang['straggregates'] = 'ΣυγκΡντρωτικές συναρτΞσΡις'; + $lang['strnoaggregates'] = 'ΔΡ βρέθηκαν συγκΡντρωτικές συναρτΞσΡις'; + $lang['stralltypes'] = '(Ολοι ΞΏΞΉ τύποι)'; + $lang['strcreateaggregate'] = 'Δημιουργία συγκΡντρωτικΞΟ‚ συνάρτησης'; + $lang['straggrbasetype'] = 'ΞœΞΏΟΟ†Ξ Ξ΄Ξ΅Ξ΄ΞΏΞΌΞ­Ξ½Ο‰Ξ½ Ξ΅ΞΉΟƒΟŒΞ΄ΞΏΟ…'; + $lang['straggrsfunc'] = 'Συνάρτηση μΡταβολΞΟ‚ κατάστασης'; + $lang['straggrstype'] = 'ΞœΞΏΟΟ†Ξ Ξ΄Ξ΅Ξ΄ΞΏΞΌΞ­Ξ½Ο‰Ξ½ κατάστασης'; + $lang['straggrffunc'] = '΀ΡλικΠσυνάρτηση'; + $lang['straggrinitcond'] = 'ΑρχικΠσυνθΞΞΊΞ·'; + $lang['straggrsortop'] = '΀ΡλΡστΞΟ‚ Ο„Ξ±ΞΎΞΉΞ½ΟŒΞΌΞ·ΟƒΞ·Ο‚'; + $lang['strconfdropaggregate'] = 'Να διαγραφΡί Ξ· συγκΡντρωτικΠσυνάρτηση "%s"?'; + $lang['straggregatedropped'] = 'Ξ— συγκΡντρωτικΠσυνάρτηση διαγράφηκΡ.'; + $lang['straggregatedroppedbad'] = 'Ξ— διαγραφΠτης συγκΡντρωτικΞΟ‚ συνάρτησης απέτυχΡ.'; + $lang['straggraltered'] = 'Ξ— συγκΡντρωτικΠσυνάρτηση τροποποιΞΞΈΞ·ΞΊΞ΅.'; + $lang['straggralteredbad'] = 'Ξ— τροποποίηση της συγκΡντρωτικΞΟ‚ συνάρτησης απέτυχΡ.'; + $lang['straggrneedsname'] = 'ΠρέπΡι Ξ½Ξ± Ξ΄ΟŽΟƒΞ΅Ο„Ξ΅ όνομα στη συγκΡντρωτικΠσυνάρτηση.'; + $lang['straggrneedsbasetype'] = 'ΠρέπΡι Ξ½Ξ± Ξ΄ΟŽΟƒΞ΅Ο„Ξ΅ τη μορφΠδΡδομένων Ξ΅ΞΉΟƒΟŒΞ΄ΞΏΟ… της συγκΡντρωτικΞΟ‚ συνάρτησης'; + $lang['straggrneedssfunc'] = 'ΠρέπΡι Ξ½Ξ± Ξ΄ΟŽΟƒΞ΅Ο„Ξ΅ το όνομα της συνάρτησης μΡταβολΞΟ‚ κατάστασης'; + $lang['straggrneedsstype'] = 'ΠρέπΡι Ξ½Ξ± Ξ΄ΟŽΟƒΞ΅Ο„Ξ΅ τη μορφΠδΡδομένων της τιμΞΟ‚ κατάστασης'; + $lang['straggrcreated'] = 'Ξ— συγκΡντρωτικΠσυνάρτηση δημιουργΞΞΈΞ·ΞΊΞ΅.'; + $lang['straggrcreatedbad'] = 'Ξ— δημιουργία της συγκΡντρωτικΞΟ‚ συνάρτησης απέτυχΡ.'; + $lang['straggrshowall'] = 'Εμφάνιση ΟŒΞ»Ο‰Ξ½ των ΟƒΟ…Ξ³ΞΊΞ΅Ξ½Ο„ΟΟ‰Ο„ΞΉΞΊΟŽΞ½ συναρτΞσΡων'; + + // Operator Classes + $lang['stropclasses'] = 'ΞšΞ»Ξ¬ΟƒΞ΅ΞΉΟ‚ Ο„Ξ΅Ξ»Ξ΅ΟƒΟ„ΟŽΞ½'; + $lang['strnoopclasses'] = 'ΔΡ βρέθηκαν κλάσΡις Ο„Ξ΅Ξ»Ξ΅ΟƒΟ„ΟŽΞ½.'; + $lang['straccessmethod'] = 'ΞœΞ­ΞΈΞΏΞ΄ΞΏΟ‚ Ο€ΟΟŒΟƒΞ²Ξ±ΟƒΞ·Ο‚'; + + // Stats and performance + $lang['strrowperf'] = 'Ξ•Ο€ΞΉΞ΄ΟŒΟƒΞ΅ΞΉΟ‚ γραμμών'; + $lang['strioperf'] = 'Ξ•Ο€ΞΉΞ΄ΟŒΟƒΞ΅ΞΉΟ‚ Ξ•ΞΉΟƒΟŒΞ΄ΞΏΟ…/Ξ•ΞΎΟŒΞ΄ΞΏΟ…'; + $lang['stridxrowperf'] = 'Ξ•Ο€ΞΉΞ΄ΟŒΟƒΞ΅ΞΉΟ‚ γραμμών ΡυρΡτηρίου'; + $lang['stridxioperf'] = 'Ξ•Ο€ΞΉΞ΄ΟŒΟƒΞ΅ΞΉΟ‚ Ξ•ΞΉΟƒΟŒΞ΄ΞΏΟ…/Ξ•ΞΎΟŒΞ΄ΞΏΟ… ΡυρΡτηρίου'; + $lang['strpercent'] = '%'; + $lang['strsequential'] = 'Αλληλουχία'; + $lang['strscan'] = 'Σάρωση'; + $lang['strread'] = 'Ανάγνωση'; + $lang['strfetch'] = 'Ξ‘Ο€ΟŒΞ΄ΞΏΟƒΞ·'; + $lang['strheap'] = 'Ξ£Ο‰ΟΟŒΟ‚'; + $lang['strtoast'] = 'TOAST'; + $lang['strtoastindex'] = 'ΕυρΡτΞριο TOAST'; + $lang['strcache'] = 'ΞšΟΟ…Ο†Ξ ΞΌΞ½ΞΞΌΞ·'; + $lang['strdisk'] = 'Δίσκος'; + $lang['strrows2'] = 'Γραμμές'; + + // Tablespaces + $lang['strtablespace'] = '΀οποθΡσία πίνακα'; + $lang['strtablespaces'] = '΀οποθΡσίΡς πινάκων'; + $lang['strshowalltablespaces'] = 'Εμφάνιση ΟŒΞ»Ο‰Ξ½ των Ο„ΞΏΟ€ΞΏΞΈΞ΅ΟƒΞΉΟŽΞ½'; + $lang['strnotablespaces'] = 'ΔΡ βρέθηκαν τοποθΡσίΡς πινάκων.'; + $lang['strcreatetablespace'] = 'Δημιουργία τοποθΡσίας πίνακα'; + $lang['strlocation'] = '΀οποθΡσία'; + $lang['strtablespaceneedsname'] = 'ΠρέπΡι Ξ½Ξ± Ξ΄ΟŽΟƒΞ΅Ο„Ξ΅ όνομα στην τοποθΡσία.'; + $lang['strtablespaceneedsloc'] = 'ΠρέπΡι Ξ½Ξ± Ξ΄ΟŽΟƒΞ΅Ο„Ξ΅ την ακριβΠθέση του ΞΊΞ±Ο„Ξ±Ξ»ΟŒΞ³ΞΏΟ… ΟŒΟ€ΞΏΟ… ΞΈΞ± δημιουργηθΡί ΞΏ πίνακας.'; + $lang['strtablespacecreated'] = 'Ξ— τοποθΡσία δημιουργΞΞΈΞ·ΞΊΞ΅.'; + $lang['strtablespacecreatedbad'] = 'Ξ— δημιουργία της τοποθΡσίας απέτυχΡ.'; + $lang['strconfdroptablespace'] = 'Να διαγραφΡί Ξ· τοποθΡσία "%s"?'; + $lang['strtablespacedropped'] = 'Ξ— τοποθΡσία διαγράφηκΡ.'; + $lang['strtablespacedroppedbad'] = 'Ξ— διαγραφΠτης τοποθΡσίας απέτυχΡ.'; + $lang['strtablespacealtered'] = 'Ξ— τοποθΡσία τροποποιΞΞΈΞ·ΞΊΞ΅.'; + $lang['strtablespacealteredbad'] = 'Ξ— τροποποίηση της τοποθΡσίας απέτυχΡ.'; + + // Miscellaneous + $lang['strtopbar'] = '%s στο %s:%s -- ΕίστΡ συνδΡδΡμένος ως "%s"'; + $lang['strtimefmt'] = 'jS M, Y g:iA'; + $lang['strhelp'] = 'Ξ’ΞΏΞθΡια'; + $lang['strhelpicon'] = '?'; + $lang['strlogintitle'] = 'ΣύνδΡση ΞΌΞ΅ %s'; + $lang['strlogoutmsg'] = 'ΑποσύνδΡση Ξ±Ο€ΟŒ %s'; + $lang['strloading'] = 'Ξ¦ΟŒΟΟ„Ο‰ΟƒΞ·...'; + $lang['strerrorloading'] = 'Σφάλμα στη Ο†ΟŒΟΟ„Ο‰ΟƒΞ·'; + $lang['strclicktoreload'] = 'Να ξαναφορτωθΡί'; + + // Autovacuum + $lang['strautovacuum'] = 'Ξ‘Ο…Ο„ΟŒΞΌΞ±Ο„Ξ· Ρκκένωση'; + $lang['strturnedon'] = 'ΑνοιχτΞ'; + $lang['strturnedoff'] = 'ΞšΞ»Ξ΅ΞΉΟƒΟ„Ξ'; + $lang['strenabled'] = 'ΕνΡργοποιημένη'; + $lang['strvacuumbasethreshold'] = 'Βάση κατωφλίου Ρκκένωσης'; + $lang['strvacuumscalefactor'] = 'ΣυντΡλΡστΞΟ‚ κλίμακας Ρκκένωσης'; + $lang['stranalybasethreshold'] = 'Ανάλυση βάσης κατωφλίου'; + $lang['stranalyzescalefactor'] = 'Ανάλυση συντΡλΡστΠκλίμακας'; + $lang['strvacuumcostdelay'] = 'ΞšΞ±ΞΈΟ…ΟƒΟ„Ξ­ΟΞ·ΟƒΞ· ΞΊΟŒΟƒΟ„ΞΏΟ…Ο‚ Ρκκένωσης'; + $lang['strvacuumcostlimit'] = 'Οριο ΞΊΟŒΟƒΟ„ΞΏΟ…Ο‚ Ρκκένωσης'; + + // Table-level Locks + $lang['strlocks'] = 'ΞšΞ»Ξ΅ΞΉΞ΄ΟŽΞΌΞ±Ο„Ξ±'; + $lang['strtransaction'] = 'Ξ€Ξ±Ο…Ο„ΟŒΟ„Ξ·Ο„Ξ± συναλλαγΞΟ‚'; + $lang['strprocessid'] = 'Ξ€Ξ±Ο…Ο„ΟŒΟ„Ξ·Ο„Ξ± διΡργασίας'; + $lang['strmode'] = 'Ξ€ΟΟŒΟ€ΞΏΟ‚ ΞΊΞ»Ξ΅ΞΉΞ΄ΟŽΞΌΞ±Ο„ΞΏΟ‚'; + $lang['strislockheld'] = 'ΔιατηρΡίται το κλΡίδωμα?'; + + // Prepared transactions + $lang['strpreparedxacts'] = 'ΕτοιμΡς συναλλαγές'; + $lang['strxactid'] = 'Ξ€Ξ±Ο…Ο„ΟŒΟ„Ξ·Ο„Ξ±'; + $lang['strgid'] = 'Ξ“Ξ΅Ξ½ΞΉΞΊΞ Ο„Ξ±Ο…Ο„ΟŒΟ„Ξ·Ο„Ξ±'; +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/hebrew.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/hebrew.php new file mode 100644 index 00000000..5b9aea39 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/hebrew.php @@ -0,0 +1,615 @@ + + * + * $Id: hebrew.php,v 1.4 2007/04/24 11:42:07 soranzo Exp $ + */ + + // Language and character set + $lang['applang'] = 'Hebrew'; + $lang['applocale'] = 'he-IL'; + $lang['applangdir'] = 'rtl'; + + // Welcome + $lang['strintro'] = 'ברוכים הבאים ל phpPgAdmin.'; + $lang['strppahome'] = 'Χ’ΧžΧ•Χ“ Χ”Χ‘Χ™Χͺ של phpPgAdmin.'; + $lang['strpgsqlhome'] = 'Χ’ΧžΧ•Χ“ Χ”Χ‘Χ™Χͺ של PostgreSQL.'; + $lang['strpgsqlhome_url'] = 'http://www.postgresql.org/'; + $lang['strlocaldocs'] = 'ΧͺΧ™Χ’Χ•Χ“ PostgreSQL (ΧžΧ§Χ•ΧžΧ™)'; + $lang['strreportbug'] = 'Χ“Χ•Χ•Χ— גל באג'; + $lang['strviewfaq'] = 'Χ¦Χ€Χ” Χ‘ FAQ ΧžΧ§Χ•Χ•ΧŸ'; + $lang['strviewfaq_url'] = 'http://phppgadmin.sourceforge.net/doku.php?id=faq'; + + // Basic strings + $lang['strlogin'] = 'Χ”ΧͺΧ—Χ‘Χ¨Χ•Χͺ'; + $lang['strloginfailed'] = 'Χ”ΧͺΧ—Χ‘Χ¨Χ•Χͺ Χ Χ›Χ©ΧœΧ”'; + $lang['strlogindisallowed'] = 'Χ”ΧͺΧ—Χ‘Χ¨Χ•Χͺ ΧžΧ‘Χ•Χ˜ΧœΧͺ Χ‘Χ©Χœ Χ‘Χ’Χ™Χ•Χͺ ΧΧ‘Χ˜Χ—Χ”.'; + $lang['strserver'] = 'Χ©Χ¨Χͺ'; + $lang['strlogout'] = 'Χ”ΧͺΧ ΧͺΧ§Χ•Χͺ'; + $lang['strowner'] = 'Χ‘Χ’Χœ'; + $lang['straction'] = 'Χ€Χ’Χ•ΧœΧ”'; + $lang['stractions'] = 'Χ€Χ’Χ•ΧœΧ•Χͺ'; + $lang['strname'] = 'שם'; + $lang['strdefinition'] = 'Χ”Χ’Χ“Χ¨Χ”'; + $lang['strproperties'] = 'Χ”Χ’Χ“Χ€Χ•Χͺ'; + $lang['strbrowse'] = 'Χ“Χ€Χ“Χ£'; + $lang['strdrop'] = 'ΧžΧ—Χ§'; + $lang['strdropped'] = 'Χ ΧžΧ—Χ§'; + $lang['strnull'] = 'Null'; + $lang['strnotnull'] = 'לא null'; + $lang['strprev'] = 'קודם <'; + $lang['strnext'] = '> הבאה'; + $lang['strfirst'] = 'Χ¨ΧΧ©Χ•ΧŸ <<'; + $lang['strlast'] = '>> ΧΧ—Χ¨Χ•ΧŸ'; + $lang['strfailed'] = 'Χ Χ›Χ©Χœ'; + $lang['strcreate'] = 'Χ¦Χ•Χ¨'; + $lang['strcreated'] = 'Χ Χ•Χ¦Χ¨'; + $lang['strcomment'] = 'Χ”Χ’Χ¨Χ”'; + $lang['strlength'] = 'ΧΧ•Χ¨Χš'; + $lang['strdefault'] = 'Χ‘Χ¨Χ™Χ¨Χͺ ΧžΧ—Χ“Χœ'; + $lang['stralter'] = 'Χ’Χ¨Χ•Χš'; + $lang['strok'] = 'OK'; + $lang['strcancel'] = 'Χ‘Χ˜Χœ'; + $lang['strsave'] = 'Χ©ΧžΧ•Χ¨'; + $lang['strreset'] = 'Χ©Χ—Χ–Χ¨'; + $lang['strinsert'] = 'Χ”Χ›Χ Χ‘'; + $lang['strselect'] = 'Χ‘Χ—Χ¨'; + $lang['strdelete'] = 'ΧžΧ—Χ§'; + $lang['strupdate'] = 'Χ’Χ“Χ›ΧŸ'; + $lang['strreferences'] = 'Χͺיגודים'; + $lang['stryes'] = 'Χ›ΧŸ'; + $lang['strno'] = 'לא'; + $lang['strtrue'] = 'אמΧͺ'; + $lang['strfalse'] = 'Χ©Χ§Χ¨'; + $lang['stredit'] = 'Χ’Χ¨Χ•Χš'; + $lang['strcolumns'] = 'Χ’ΧžΧ•Χ“Χ•Χͺ'; + $lang['strrows'] = 'Χ©Χ•Χ¨Χ•Χͺ'; + $lang['strrowsaff'] = 'Χ©Χ•Χ¨Χ•Χͺ ΧžΧ•Χ©Χ€Χ’Χ•Χͺ'; + $lang['strobjects'] = 'Χ Χͺונים'; + $lang['strexample'] = 'Χ“Χ•Χ’ΧžΧ”.'; + $lang['strback'] = 'קודם'; + $lang['strqueryresults'] = 'ΧͺוצאוΧͺ Χ”Χ©ΧΧ™ΧœΧͺΧ”'; + $lang['strshow'] = 'הראה'; + $lang['strempty'] = 'Χ¨Χ•Χ§ΧŸ'; + $lang['strlanguage'] = 'Χ©Χ€Χ”'; + $lang['strencoding'] = 'Χ§Χ™Χ“Χ•Χ“'; + $lang['strvalue'] = 'גרך'; + $lang['strunique'] = 'ΧžΧ™Χ•Χ—Χ“'; + $lang['strprimary'] = 'ראשי'; + $lang['strexport'] = 'יצוא'; + $lang['strimport'] = 'יבוא'; + $lang['strsql'] = 'SQL'; + $lang['strgo'] = 'לך'; + $lang['stradmin'] = 'ΧžΧ Χ”Χœ'; + $lang['strvacuum'] = 'Χ¨Χ™Χ§'; + $lang['stranalyze'] = 'Χ ΧͺΧ—'; + $lang['strclusterindex'] = 'ΧΧ©Χ›Χ•Χœ'; + $lang['strclustered'] = 'ΧžΧΧ•Χ©Χ›Χœ?'; + $lang['strreindex'] = 'אנדקב ΧžΧ—Χ“Χ©'; + $lang['strrun'] = 'Χ”Χ¨Χ₯'; + $lang['stradd'] = 'Χ”Χ•Χ‘Χ£'; + $lang['strevent'] = 'אירוג'; + $lang['strwhere'] = 'אי׀ה'; + $lang['strinstead'] = 'ΧͺΧ’Χ©Χ” Χ‘ΧžΧ§Χ•Χ'; + $lang['strwhen'] = 'Χ›Χ©'; + $lang['strformat'] = 'Χ‘Χ•Χ’'; + $lang['strdata'] = 'ΧžΧ™Χ“Χ’'; + $lang['strconfirm'] = 'אשר'; + $lang['strexpression'] = 'Χ‘Χ™Χ˜Χ•Χ™'; + $lang['strellipsis'] = '...'; + $lang['strseparator'] = ': '; + $lang['strexpand'] = 'Χ”Χ¨Χ—Χ‘'; + $lang['strcollapse'] = 'צמצם'; + $lang['strexplain'] = 'Χ”Χ‘Χ‘Χ§'; + $lang['strexplainanalyze'] = 'Χ”Χ‘Χ‘Χ¨ Χ ΧͺΧ™Χ—Χ”'; + $lang['strfind'] = 'מצא'; + $lang['stroptions'] = 'א׀שרויוΧͺ'; + $lang['strrefresh'] = 'רגנן'; + $lang['strdownload'] = 'Χ”Χ•Χ¨Χ“'; + $lang['strdownloadgzipped'] = 'Χ”Χ•Χ¨Χ“ Χ“Χ—Χ•Χ‘ Χ‘ gzip'; + $lang['strinfo'] = 'ΧžΧ™Χ“Χ’'; + $lang['stroids'] = 'OIDs'; + $lang['stradvanced'] = 'מΧͺקדם'; + $lang['strvariables'] = 'משΧͺנים'; + $lang['strprocess'] = 'ΧͺΧ”ΧœΧ™Χš'; + $lang['strprocesses'] = 'ΧͺΧ”ΧœΧ™Χ›Χ™Χ'; + $lang['strsetting'] = 'Χ”Χ’Χ“Χ¨Χ•Χͺ'; + $lang['streditsql'] = 'Χ’Χ¨Χ•Χš SQL'; + $lang['strruntime'] = 'Χ–ΧžΧŸ-Χ¨Χ™Χ¦Χ” Χ›Χ•ΧœΧœ: %s ms'; + $lang['strpaginate'] = 'Paginate results'; + $lang['struploadscript'] = 'או Χ”Χ’ΧœΧ” ΧͺΧ‘Χ¨Χ™Χ˜ SQL:'; + $lang['strstarttime'] = 'Χ–ΧžΧŸ Χ”ΧͺΧ—ΧœΧ”'; + $lang['strfile'] = 'Χ§Χ•Χ‘Χ₯'; + $lang['strfileimported'] = 'Χ§Χ•Χ‘Χ₯ יובא'; + + // Error handling + $lang['strbadconfig'] = 'Χ§Χ•Χ‘Χ₯ Χ” config.inc.php שלך אינו ΧžΧ’Χ•Χ“Χ›ΧŸ. אΧͺΧ” ΧͺΧ™Χ¦Χ˜Χ¨Χš ΧœΧ™Χ¦Χ•Χ¨ אחד Χ—Χ“Χ© Χ™Χ•ΧͺΧ¨ ΧžΧ”Χ§Χ•Χ‘Χ₯ config.inc.php-dist Χ”Χ—Χ“Χ©'; + $lang['strnotloaded'] = 'Χ”ΧͺΧ§Χ Χͺ Χ” PHP שלך אינה ΧͺΧ•ΧžΧ›Χͺ Χ‘ PostgreSQL. אΧͺΧ” ΧͺΧ™Χ¦Χ˜Χ¨Χš ΧœΧ”Χ“Χ¨ אוΧͺΧ” ΧžΧ—Χ“Χ© אם Χ”Χ€Χ§Χ•Χ“Χ” --with-pqlsql Χ‘Χ–ΧžΧŸ Χ”Χ”Χ’Χ“Χ¨Χ”'; + $lang['strphpversionnotsupported'] = 'Χ’Χ™Χ¨Χ‘Χͺ Χ” PHP שלך אינה Χ Χ™ΧͺΧžΧ›Χͺ. אנא Χ’Χ“Χ›ΧŸ אוΧͺΧ” ΧœΧ’Χ™Χ¨Χ‘Χ” %s או Χ—Χ“Χ©Χ” Χ™Χ•ΧͺΧ¨.'; + $lang['strpostgresqlversionnotsupported'] = 'Χ’Χ’Χ¨Χ‘Χͺ Χ” PostgrSQL שלך אינה Χ Χ™ΧͺΧžΧ›Χͺ. אנא Χ’Χ“Χ›ΧŸ אוΧͺΧ” ΧœΧ’Χ™Χ¨Χ‘Χ” %s או Χ—Χ“Χ©Χ” Χ™Χ•ΧͺΧ¨.'; + $lang['strbadschema'] = 'Χͺרשים Χ©Χ’Χ•Χ™ Χ¦Χ•Χ™Χ™ΧŸ'; + $lang['strbadencoding'] = 'Χ Χ›Χ©Χœ Χ‘Χ”ΧͺאמΧͺ Χ§Χ™Χ“Χ•Χ“ משΧͺמש ΧœΧžΧ‘Χ“ Χ”Χ Χͺונים.'; + $lang['strsqlerror'] = 'שגיאΧͺ SQL:'; + $lang['strinstatement'] = 'Χ‘Χ”Χ¦Χ”Χ¨Χ”:'; + $lang['strinvalidparam'] = 'ΧžΧžΧ“Χ™ ΧͺΧ‘Χ¨Χ™Χ˜ Χ©Χ’Χ•Χ™.'; + $lang['strnodata'] = 'לא Χ ΧžΧ¦ΧΧ• Χ©Χ•Χ¨Χ•Χͺ.'; + $lang['strnoobjects'] = 'לא Χ ΧžΧ¦ΧΧ• Χ Χͺונים.'; + $lang['strrownotunique'] = 'No unique identifier for this row.'; + $lang['strnouploads'] = 'Χ”Χ’ΧœΧΧͺ קבצים Χ‘Χ•Χ˜ΧœΧ”.'; + $lang['strimporterror'] = 'שגיאΧͺ יבוא.'; + $lang['strimporterrorline'] = 'שגיאΧͺ יבוא Χ‘Χ©Χ•Χ¨Χ”: %s.'; + + // Tables + $lang['strtable'] = 'Χ˜Χ‘ΧœΧ”'; + $lang['strtables'] = 'Χ˜Χ‘ΧœΧΧ•Χͺ'; + $lang['strshowalltables'] = 'הראה אΧͺ Χ›Χœ Χ”Χ˜Χ‘ΧœΧΧ•Χͺ.'; + $lang['strnotables'] = 'לא Χ ΧžΧ¦ΧΧ• Χ˜Χ‘ΧœΧΧ•Χͺ.'; + $lang['strnotable'] = 'Χ˜Χ‘ΧœΧ” לא Χ ΧžΧ¦ΧΧ”.'; + $lang['strcreatetable'] = 'Χ¦Χ•Χ¨ Χ˜Χ‘ΧœΧ”'; + $lang['strtablename'] = 'שם Χ˜Χ‘ΧœΧ”'; + $lang['strtableneedsname'] = 'אΧͺΧ” Χ—Χ™Χ™Χ‘ לΧͺΧͺ שם ΧœΧ˜Χ‘ΧœΧ” שלך.'; + $lang['strtableneedsfield'] = 'אΧͺΧ” Χ—Χ™Χ™Χ‘ ΧœΧ¦Χ™Χ™ΧŸ ΧœΧ€Χ—Χ•Χͺ Χ©Χ“Χ” אחד.'; + $lang['strtableneedscols'] = 'אΧͺΧ” Χ—Χ™Χ™Χ‘ ΧœΧ¦Χ™Χ™ΧŸ מב׀ר ΧͺΧ§Χ™ΧŸ של Χ’ΧžΧ•Χ“Χ•Χͺ.'; + $lang['strtablecreated'] = 'Χ˜Χ‘ΧœΧ” Χ Χ•Χ¦Χ¨Χ”.'; + $lang['strtablecreatedbad'] = 'Χ™Χ¦Χ™Χ¨Χͺ Χ˜Χ‘ΧœΧ” Χ Χ›Χ©ΧœΧ”.'; + $lang['strconfdroptable'] = 'אΧͺΧ” Χ‘Χ˜Χ•Χ— Χ©Χ‘Χ¨Χ¦Χ•Χ Χš ΧœΧžΧ—Χ•Χ§ אΧͺ Χ”Χ˜Χ‘ΧœΧ” "%s"?'; + $lang['strtabledropped'] = 'Χ˜Χ‘ΧœΧ” Χ ΧžΧ—Χ§Χ”.'; + $lang['strtabledroppedbad'] = 'ΧžΧ—Χ™Χ§Χͺ Χ˜Χ‘ΧœΧ” Χ Χ›Χ©ΧœΧ”.'; + $lang['strconfemptytable'] = 'האם אΧͺΧ” Χ‘Χ˜Χ•Χ— Χ©Χ‘Χ¨Χ¦Χ•Χ Χš ΧœΧ¨Χ•Χ§ΧŸ אΧͺ Χ”Χ˜Χ‘ΧœΧ” "%s"?'; + $lang['strtableemptied'] = 'Χ˜Χ‘ΧœΧ” Χ¨Χ•Χ§Χ Χ”.'; + $lang['strtableemptiedbad'] = 'Χ¨Χ™Χ§Χ•ΧŸ Χ˜Χ‘ΧœΧ” Χ Χ›Χ©Χœ.'; + $lang['strinsertrow'] = 'Χ”Χ›Χ Χ‘ Χ©Χ“Χ”'; + $lang['strrowinserted'] = 'Χ©Χ“Χ” Χ”Χ•Χ›Χ Χ‘.'; + $lang['strrowinsertedbad'] = 'Χ”Χ›Χ Χ‘Χͺ Χ©Χ“Χ” Χ Χ›Χ©ΧœΧ”.'; + $lang['streditrow'] = 'Χ’Χ¨Χ•Χš Χ©Χ“Χ”'; + $lang['strrowupdated'] = 'Χ©Χ“Χ” Χ’Χ•Χ“Χ›ΧŸ.'; + $lang['strrowupdatedbad'] = 'Χ’Χ™Χ“Χ›Χ•ΧŸ Χ©Χ“Χ” Χ Χ›Χ©Χœ.'; + $lang['strdeleterow'] = 'ΧžΧ—Χ§ Χ©Χ“Χ”'; + $lang['strconfdeleterow'] = 'האם אΧͺΧ” Χ‘Χ˜Χ•Χ— Χ©Χ‘Χ¨Χ¦Χ•Χ Χš ΧœΧžΧ—Χ•Χ§ אΧͺ Χ”Χ©Χ“Χ” Χ”Χ–Χ”?'; + $lang['strrowdeleted'] = 'Χ©Χ“Χ” Χ ΧžΧ—Χ§.'; + $lang['strrowdeletedbad'] = 'ΧžΧ—Χ™Χ§Χͺ Χ©Χ“Χ” Χ Χ›Χ©Χœ.'; + $lang['strinsertandrepeat'] = 'Χ—Χ–Χ•Χ¨ &Χ”Χ›Χ Χ‘ '; + $lang['strfield'] = 'Χ©Χ“Χ”'; + $lang['strnumfields'] = 'מב׀ר Χ”Χ©Χ“Χ•Χͺ'; + $lang['strselectallfields'] = 'Χ‘Χ—Χ¨ אΧͺ Χ›Χœ Χ”Χ©Χ“Χ•Χͺ'; + $lang['strselectneedscol'] = 'אΧͺΧ” Χ—Χ™Χ™Χ‘ ΧœΧ”Χ¨ΧΧ•Χͺ ΧœΧ€Χ—Χ•Χͺ Χ©Χ“Χ” אחד'; + $lang['strselectunary'] = 'Unary operators cannot have values.'; + $lang['straltercolumn'] = 'Χ’Χ¨Χ•Χš Χ’ΧžΧ•Χ“Χ”'; + $lang['strcolumnaltered'] = 'Χ’ΧžΧ•Χ“Χ” Χ Χ’Χ¨Χ›Χ”'; + $lang['strcolumnalteredbad'] = 'Χ’Χ¨Χ™Χ›Χͺ Χ’ΧžΧ•Χ“Χ” Χ Χ›Χ©ΧœΧ”.'; + $lang['strconfdropcolumn'] = 'האם אΧͺΧ” Χ‘Χ˜Χ•Χ— Χ©Χ‘Χ¨Χ¦Χ•Χ Χš ΧœΧžΧ—Χ•Χ§ אΧͺ Χ”Χ’ΧžΧ•Χ“Χ” "%s" ΧžΧ”Χ˜Χ‘ΧœΧ” "%squot;?'; + $lang['strcolumndropped'] = 'Χ’ΧžΧ•Χ“Χ” Χ Χ—ΧžΧ§Χ”.'; + $lang['strcolumndroppedbad'] = 'ΧžΧ—Χ™Χ§Χͺ Χ’ΧžΧ•Χ“Χ” Χ Χ›Χ©ΧœΧ”.'; + $lang['straddcolumn'] = 'Χ”Χ•Χ‘Χ£ Χ’ΧžΧ•Χ“Χ”.'; + $lang['strcolumnadded'] = 'Χ’ΧžΧ•Χ“Χ” Χ Χ•Χ‘Χ€Χ”.'; + $lang['strcolumnaddedbad'] = 'Χ”Χ•Χ‘Χ€Χͺ Χ’ΧžΧ•Χ“Χ” Χ Χ›Χ©ΧœΧ”'; + $lang['strcascade'] = 'CASCADE'; + $lang['strtablealtered'] = 'Χ˜Χ‘ΧœΧ” Χ Χ’Χ¨Χ›Χ”.'; + $lang['strtablealteredbad'] = 'Χ’Χ¨Χ™Χ›Χͺ Χ˜Χ‘ΧœΧ” Χ Χ›Χ©ΧœΧ”.'; + $lang['strdataonly'] = 'ΧžΧ™Χ“Χ’ Χ‘ΧœΧ‘Χ“'; + $lang['strstructureonly'] = 'ΧžΧ‘Χ Χ” Χ‘Χ™ΧœΧ‘Χ“'; + $lang['strstructureanddata'] = 'ΧžΧ‘Χ Χ” Χ•Χ Χͺונים'; + $lang['strtabbed'] = 'ΧͺΧ•Χ™Χ™Χ§'; + $lang['strauto'] = 'ΧΧ•Χ˜Χ•ΧžΧ˜Χ™'; + + // Users + $lang['struser'] = 'משΧͺמש'; + $lang['strusers'] = 'משΧͺΧžΧ©Χ™Χ'; + $lang['strusername'] = 'שם משΧͺמש'; + $lang['strpassword'] = 'Χ‘Χ™Χ‘ΧžΧ”'; + $lang['strsuper'] = 'משΧͺמש גל?'; + $lang['strcreatedb'] = 'Χ™Χ¦Χ™Χ¨Χͺ Χ‘Χ‘Χ™Χ‘ Χ Χͺונים?'; + $lang['strexpires'] = 'Expires'; + $lang['strsessiondefaults'] = 'Χ”Χ€Χ’ΧœΧͺ Χ‘Χ¨Χ™Χ¨Χͺ ΧžΧ—Χ“Χœ'; + $lang['strnousers'] = 'לא Χ ΧžΧ¦ΧΧ• משΧͺΧžΧ©Χ™Χ'; + $lang['struserupdated'] = 'משΧͺמש Χ’Χ•Χ“Χ›ΧŸ.'; + $lang['struserupdatedbad'] = 'Χ’Χ“Χ›Χ•ΧŸ משΧͺמש Χ Χ›Χ©Χœ.'; + $lang['strshowallusers'] = 'הראה אΧͺ Χ›Χœ Χ”ΧžΧ©ΧͺΧžΧ©Χ™Χ.'; + $lang['strcreateuser'] = 'Χ¦Χ•Χ¨ משΧͺמש'; + $lang['struserneedsname'] = 'אΧͺΧ” Χ—Χ™Χ™Χ‘ לΧͺΧͺ שם למשΧͺמש שלך.'; + $lang['strusercreated'] = 'משΧͺמש Χ Χ•Χ¦Χ¨.'; + $lang['strusercreatedbad'] = 'Χ™Χ¦Χ™Χ¨Χͺ משΧͺמש Χ Χ›Χ©Χœ.'; + $lang['strconfdropuser'] = 'אΧͺΧ” Χ‘Χ˜Χ•Χ— Χ©Χ‘Χ¨Χ¦Χ•Χ Χš ΧœΧžΧ—Χ•Χ§ אΧͺ Χ”ΧžΧ©Χͺמש "%s"?'; + $lang['struserdropped'] = 'משΧͺמש Χ ΧžΧ—Χ§.'; + $lang['struserdroppedbad'] = 'ΧžΧ—Χ™Χ§Χͺ משΧͺמש Χ Χ›Χ©Χœ.'; + $lang['straccount'] = 'Χ—Χ©Χ‘Χ•ΧŸ'; + $lang['strchangepassword'] = 'Χ©Χ Χ” Χ‘Χ™Χ‘ΧžΧ”'; + $lang['strpasswordchanged'] = 'Χ‘Χ™Χ‘ΧžΧ” Χ©Χ•Χ ΧͺΧ”.'; + $lang['strpasswordchangedbad'] = 'Χ Χ›Χ©Χœ Χ‘Χ©Χ™Χ Χ•Χ™ Χ‘Χ™Χ‘ΧžΧ”.'; + $lang['strpasswordshort'] = 'Χ‘Χ™Χ‘ΧžΧ” Χ§Χ¦Χ¨Χ” ΧžΧ™Χ“Χ™.'; + $lang['strpasswordconfirm'] = 'Χ‘Χ™Χ‘ΧžΧ” אינה ΧͺΧ•ΧΧžΧͺ ΧœΧΧ™Χ©Χ•Χ¨Χ”.'; + + // Groups + $lang['strgroup'] = 'Χ§Χ‘Χ•Χ¦Χ”'; + $lang['strgroups'] = 'Χ§Χ‘Χ•Χ¦Χ•Χͺ'; + $lang['strnogroup'] = 'Χ§Χ‘Χ•Χ¦Χ” לא Χ ΧžΧ¦ΧΧ”.'; + $lang['strnogroups'] = 'לא Χ ΧžΧ¦ΧΧ• Χ§Χ‘Χ•Χ¦Χ•Χͺ.'; + $lang['strcreategroup'] = 'Χ¦Χ•Χ¨ Χ§Χ‘Χ•Χ¦Χ”'; + $lang['strshowallgroups'] = 'הראה אΧͺ Χ›Χœ Χ”Χ§Χ‘Χ•Χ¦Χ•Χͺ'; + $lang['strgroupneedsname'] = 'אΧͺΧ” Χ—Χ™Χ™Χ‘ לΧͺΧͺ שם ΧœΧ§Χ‘Χ•Χ¦Χ” שלך.'; + $lang['strgroupcreated'] = 'Χ§Χ‘Χ•Χ¦Χ” Χ Χ•Χ¦Χ¨Χ”.'; + $lang['strgroupcreatedbad'] = 'Χ™Χ¦Χ™Χ¨Χͺ Χ§Χ‘Χ•Χ¦Χ” Χ Χ›Χ©ΧœΧ”.'; + $lang['strconfdropgroup'] = 'האם אΧͺΧ” Χ‘Χ˜Χ•Χ— Χ©Χ‘Χ¨Χ¦Χ•Χ Χš ΧœΧžΧ—Χ•Χ§ אΧͺ Χ”Χ§Χ‘Χ•Χ¦Χ” "%s"?'; + $lang['strgroupdropped'] = 'Χ§Χ‘Χ•Χ¦Χ” Χ ΧžΧ—Χ§Χ”.'; + $lang['strgroupdroppedbad'] = 'ΧžΧ—Χ™Χ§Χͺ Χ§Χ‘Χ•Χ¦Χ” Χ Χ›Χ©ΧœΧ”.'; + $lang['strmembers'] = 'חברים'; + $lang['straddmember'] = 'Χ”Χ•Χ‘Χ£ Χ—Χ‘Χ¨'; + $lang['strmemberadded'] = 'Χ—Χ‘Χ¨ Χ Χ•Χ‘Χ£.'; + $lang['strmemberaddedbad'] = 'Χ”Χ•Χ‘Χ€Χͺ Χ—Χ‘Χ¨ Χ Χ›Χ©ΧœΧ”.'; + $lang['strdropmember'] = 'ΧžΧ—Χ§ Χ—Χ‘Χ¨.'; + $lang['strconfdropmember'] = 'באם אΧͺΧ” Χ‘Χ˜Χ•Χ— Χ©Χ‘Χ¨Χ¦Χ•Χ Χš ΧœΧžΧ—Χ•Χ§ אΧͺ Χ”Χ—Χ‘Χ¨ "%s" ΧžΧ”Χ§Χ‘Χ•Χ¦Χ” "%s"?'; + $lang['strmemberdropped'] = 'Χ—Χ‘Χ¨ Χ ΧžΧ—Χ§.'; + $lang['strmemberdroppedbad'] = 'ΧžΧ—Χ™Χ§Χͺ Χ—Χ‘Χ¨ Χ Χ›Χ©ΧœΧ”.'; + + // Privileges + $lang['strprivilege'] = 'Χ–Χ›Χ•Χͺ'; + $lang['strprivileges'] = 'Χ–Χ›Χ•Χ™Χ•Χͺ'; + $lang['strnoprivileges'] = 'לנΧͺΧ•ΧŸ Χ–Χ” Χ™Χ© Χ–Χ›Χ•Χ™Χ•Χͺ Χ‘Χ¨Χ™Χ¨Χͺ ΧžΧ—Χ“Χœ של Χ‘Χ’ΧœΧ™Χ.'; + $lang['strgrant'] = 'Grant'; + $lang['strrevoke'] = 'Revoke'; + $lang['strgranted'] = 'Χ–Χ›Χ•Χ™Χ•Χͺ Χ©Χ•Χ Χ•.'; + $lang['strgrantfailed'] = 'Χ©Χ™Χ Χ•Χ™ Χ–Χ›Χ•Χ™Χ•Χͺ Χ Χ›Χ©Χœ.'; + $lang['strgrantbad'] = 'אΧͺΧ” Χ—Χ™Χ™Χ‘ ΧœΧ¦Χ™Χ™ΧŸ ΧœΧ€Χ—Χ•Χͺ משΧͺמש אחד אם Χ§Χ‘Χ•Χ¦Χ” Χ‘Χ’ΧœΧ™ Χ–Χ›Χ•Χͺ.'; + $lang['strgrantor'] = 'Grantor'; + $lang['strasterisk'] = '*'; + + // Databases + $lang['strdatabase'] = 'Χ‘Χ‘Χ™Χ‘ Χ Χͺונים'; + $lang['strdatabases'] = 'Χ‘Χ‘Χ™Χ‘Χ™ Χ Χͺונים'; + $lang['strshowalldatabases'] = 'הראה אΧͺ Χ›Χœ Χ‘Χ‘Χ™Χ‘Χ™ Χ”Χ Χͺונים.'; + $lang['strnodatabase'] = 'Χ‘Χ‘Χ™Χ‘ Χ Χͺונים לא Χ ΧžΧ¦ΧΧ”.'; + $lang['strnodatabases'] = 'לא Χ ΧžΧ¦ΧΧ• Χ‘Χ‘Χ™Χ‘Χ™ Χ Χͺונים.'; + $lang['strcreatedatabase'] = 'Χ¦Χ•Χ¨ Χ‘Χ‘Χ™Χ‘ Χ Χͺונים.'; + $lang['strdatabasename'] = 'שם Χ‘Χ‘Χ™Χ‘ Χ”Χ Χͺונים'; + $lang['strdatabaseneedsname'] = 'אΧͺΧ” Χ—Χ™Χ™Χ‘ לΧͺΧͺ שם ΧœΧ‘Χ‘Χ™Χ‘ Χ”Χ Χͺונים שלך'; + $lang['strdatabasecreated'] = 'Χ‘Χ‘Χ™Χ‘ Χ Χͺונים Χ Χ•Χ¦Χ¨'; + $lang['strdatabasecreatedbad'] = 'Χ™Χ¦Χ™Χ¨Χͺ Χ‘Χ‘Χ™Χ‘ Χ Χͺונים Χ Χ›Χ©ΧœΧ”.'; + $lang['strconfdropdatabase'] = 'אΧͺΧ” Χ‘Χ˜Χ•Χ— Χ©Χ‘Χ¨Χ¦Χ•Χ Χš ΧœΧžΧ—Χ•Χ§ אΧͺ Χ‘Χ‘Χ™Χ‘ Χ”Χ Χͺונים "%s"?'; + $lang['strdatabasedropped'] = 'ΧžΧ‘Χ“ Χ Χͺונים Χ ΧžΧ—Χ§'; + $lang['strdatabasedroppedbad'] = 'ΧžΧ—Χ™Χ§Χͺ ΧžΧ‘Χ“ Χ”Χ Χͺונים Χ Χ›Χ©ΧœΧ”.'; + $lang['strentersql'] = 'Χ”Χ›Χ Χ‘ אΧͺ Χ” SQL כדאי ΧœΧ”Χ¨Χ™Χ₯ אוΧͺΧ• Χ€Χ”:'; + $lang['strsqlexecuted'] = 'SQL Χ”Χ•Χ¨Χ₯.'; + $lang['strvacuumgood'] = 'Χ¨Χ™Χ§ Χ”Χ•Χ©ΧœΧ.'; + $lang['strvacuumbad'] = 'Χ¨Χ™Χ§ Χ Χ›Χ©Χœ.'; + $lang['stranalyzegood'] = 'Χ Χ™ΧͺΧ•Χ— Χ”Χ•Χ©ΧœΧ.'; + $lang['stranalyzebad'] = 'Χ Χ™ΧͺΧ•Χ— Χ Χ›Χ©Χœ.'; + $lang['strreindexgood'] = 'אנידוקב ΧžΧ—Χ“Χ© Χ”Χ•Χ©ΧœΧ.'; + $lang['strreindexbad'] = 'אנידוקב ΧžΧ—Χ“Χ© Χ Χ›Χ©Χœ.'; + $lang['strfull'] = 'מלא'; + $lang['strfreeze'] = 'Freeze'; + $lang['strforce'] = 'Χ›Χ•Χ—'; + $lang['strsignalsent'] = 'Χ©ΧœΧ— אוΧͺ.'; + $lang['strsignalsentbad'] = 'Χ©ΧœΧ™Χ—Χͺ אוΧͺ Χ Χ›Χ©ΧœΧ”.'; + $lang['strallobjects'] = 'Χ›Χœ Χ”Χ’Χ¦ΧžΧ™Χ'; + + // Views + $lang['strview'] = 'Χ¦Χ€Χ™Χ™Χ”'; + $lang['strviews'] = 'Χ¦Χ€Χ™Χ•Χͺ'; + $lang['strshowallviews'] = 'הראה אΧͺ Χ›Χœ Χ”Χ¦Χ€Χ™Χ•Χͺ'; + $lang['strnoview'] = 'Χ¦Χ€Χ™Χ™Χ” לא Χ ΧžΧ¦ΧΧ”.'; + $lang['strnoviews'] = 'Χ¦Χ€Χ™Χ•Χͺ לא Χ ΧžΧ¦ΧΧ•.'; + $lang['strcreateview'] = 'Χ¦Χ•Χ¨ Χ¦Χ€Χ™Χ™Χ”'; + $lang['strviewname'] = 'שם Χ”Χ¦Χ€Χ™Χ™Χ”'; + $lang['strviewneedsname'] = 'אΧͺΧ” Χ—Χ™Χ™Χ‘ לΧͺΧͺ שם ΧœΧ¦Χ€Χ™Χ™Χ”'; + $lang['strviewneedsdef'] = 'אΧͺΧ” Χ—Χ™Χ™Χ‘ ΧœΧ¦Χ™Χ™ΧŸ Χ”Χ’Χ“Χ¨Χ” ΧœΧ¦Χ€Χ™Χ™Χ”.'; + $lang['strviewneedsfields'] = 'אΧͺΧ” Χ—Χ™Χ™Χ‘ לΧͺΧͺ אΧͺ Χ”Χ’ΧžΧ•Χ“Χ” אשר אΧͺΧ” Χ¨Χ•Χ¦Χ” ΧœΧ¦Χ€Χ™Χ™Χ”.'; + $lang['strviewcreated'] = 'Χ¦Χ€Χ™Χ™Χ” Χ Χ•Χ¦Χ¨Χ”.'; + $lang['strviewcreatedbad'] = 'Χ™Χ¦Χ™Χ¨Χͺ Χ¦Χ€Χ™Χ™Χ” Χ Χ›Χ©ΧœΧ”.'; + $lang['strconfdropview'] = 'האם אΧͺΧ” Χ‘Χ˜Χ•Χ— Χ©Χ‘Χ¨Χ¦Χ•Χ Χš ΧœΧžΧ—Χ•Χ§ אΧͺ Χ”Χ¦Χ€Χ™Χ™Χ” "%s"'; + $lang['strviewdropped'] = 'Χ¦Χ€Χ™Χ™Χ” Χ ΧžΧ—Χ§Χ”.'; + $lang['strviewdroppedbad'] = 'ΧžΧ—Χ™Χ§Χͺ Χ¦Χ€Χ™Χ™Χ” Χ Χ›Χ©ΧœΧ”.'; + $lang['strviewupdated'] = 'Χ¦Χ€Χ™Χ™Χ” Χ’Χ•Χ“Χ›Χ Χ”.'; + $lang['strviewupdatedbad'] = 'Χ’Χ“Χ›Χ•ΧŸ Χ¦Χ€Χ™Χ™Χ” Χ Χ›Χ©ΧœΧ”.'; + $lang['strviewlink'] = 'Χ§Χ™Χ©Χ•Χ¨Χ™ מ׀ΧͺΧ—'; + $lang['strviewconditions'] = 'Additional Conditions'; + $lang['strcreateviewwiz'] = 'Χ¦Χ•Χ¨ Χ¦Χ€Χ™Χ™Χ” Χ‘Χ’Χ–Χ¨Χͺ אשף.'; + + // Sequences + $lang['strsequence'] = 'Χ Χ•Χ‘Χ—Χ”'; + $lang['strsequences'] = 'נובחאוΧͺ'; + $lang['strshowallsequences'] = 'הראה אΧͺ Χ›Χœ הנובחאוΧͺ.'; + $lang['strnosequence'] = 'Χ Χ•Χ‘Χ—Χ” לא Χ ΧžΧ¦ΧΧ”.'; + $lang['strnosequences'] = 'לא Χ ΧžΧ¦ΧΧ• נובחאוΧͺ.'; + $lang['strcreatesequence'] = 'Χ¦Χ•Χ¨ Χ Χ•Χ‘Χ—Χ”'; + $lang['strlastvalue'] = 'גרך ΧΧ—Χ¨Χ•ΧŸ'; + $lang['strincrementby'] = 'Increment by'; + $lang['strstartvalue'] = 'גרך Χ”ΧͺΧ—ΧœΧ”'; + $lang['strmaxvalue'] = 'גרך ΧžΧ§Χ‘Χ™ΧžΧœΧ™'; + $lang['strminvalue'] = 'גרך ΧžΧ™Χ Χ™ΧžΧœΧ™'; + $lang['strcachevalue'] = 'גרך ΧžΧ˜ΧžΧ•ΧŸ'; + $lang['strlogcount'] = 'Χ‘Χ€Χ™Χ¨Χͺ Χ™Χ•ΧžΧŸ'; + $lang['striscycled'] = 'Is cycled?'; + $lang['strsequenceneedsname'] = 'אΧͺΧ” Χ—Χ™Χ™Χ‘ ΧœΧ¦Χ™Χ™ΧŸ שם ΧœΧ Χ•Χ‘Χ—Χ” שלך.'; + $lang['strsequencecreated'] = 'Χ Χ•Χ‘Χ—Χ” Χ Χ•Χ¦Χ¨Χ”.'; + $lang['strsequencecreatedbad'] = 'Χ™Χ¦Χ™Χ¨Χͺ Χ Χ•Χ‘Χ—Χ” Χ Χ›Χ©ΧœΧ”.'; + $lang['strconfdropsequence'] = 'האם אΧͺΧ” Χ‘Χ˜Χ•Χ— Χ©Χ‘Χ¨Χ¦Χ•Χ Χš ΧœΧžΧ—Χ•Χ§ אΧͺ Χ”Χ Χ•Χ‘Χ—Χ” "%s"?'; + $lang['strsequencedropped'] = 'Χ Χ•Χ‘Χ—Χ” Χ ΧžΧ—Χ§Χ”..'; + $lang['strsequencedroppedbad'] = 'Χ Χ—Χ™Χ§Χͺ Χ Χ•Χ‘Χ—Χ” Χ Χ›Χ©ΧœΧ”.'; + $lang['strsequencereset'] = 'Χ Χ•Χ‘Χ—Χ” אוΧͺΧ—ΧœΧ”.'; + $lang['strsequenceresetbad'] = 'איΧͺΧ—Χ•Χœ Χ Χ•Χ‘Χ—Χ” Χ Χ›Χ©ΧœΧ”.'; + + // Indexes + $lang['strindex'] = 'אינדקב'; + $lang['strindexes'] = 'אינדקבים'; + $lang['strindexname'] = 'שם האינדקב'; + $lang['strshowallindexes'] = 'Χ¦Χ€Χ” Χ‘Χ›Χœ האינדקבים'; + $lang['strnoindex'] = 'אינדקב לא Χ ΧžΧ¦ΧΧ”.'; + $lang['strnoindexes'] = 'לא Χ ΧžΧ¦ΧΧ• אינדקבים.'; + $lang['strcreateindex'] = 'Χ¦Χ•Χ¨ אינקדב.'; + $lang['strtabname'] = 'ΧͺΧ§Χ™Χ™Χ” אינקדב'; + $lang['strcolumnname'] = 'שם Χ”Χ’ΧžΧ•Χ“Χ”'; + $lang['strindexneedsname'] = 'אΧͺΧ” Χ—Χ™Χ™Χ‘ ΧœΧ¦Χ™Χ™ΧŸ שם ΧœΧΧ™Χ Χ“Χ§Χ‘.'; + $lang['strindexneedscols'] = 'אינדקבים דורשים מב׀ר ΧͺΧ§Χ™ΧŸ של Χ’ΧžΧ•Χ“Χ•Χͺ.'; + $lang['strindexcreated'] = 'אינדקב Χ Χ•Χ¦Χ¨.'; + $lang['strindexcreatedbad'] = 'Χ™Χ¦Χ™Χ¨Χͺ אינקדב Χ Χ›Χ©ΧœΧ”.'; + $lang['strconfdropindex'] = 'האם אΧͺΧ” Χ‘Χ˜Χ•Χ— Χ©Χ‘Χ¨Χ¦Χ•Χ Χœ ΧœΧžΧ—Χ•Χ§ אΧͺ האינקדב "%s"?'; + $lang['strindexdropped'] = 'אינדקב Χ ΧžΧ—Χ§.'; + $lang['strindexdroppedbad'] = 'ΧžΧ—Χ™Χ§Χͺ אינדקב Χ Χ›Χ©ΧœΧ”.'; + $lang['strkeyname'] = 'שם Χ”ΧžΧ€ΧͺΧ—'; + $lang['struniquekey'] = 'מםΧͺΧ— Χ™Χ—Χ•Χ“Χ™'; + $lang['strprimarykey'] = 'מ׀ΧͺΧ— ראשי'; + $lang['strindextype'] = 'Χ‘Χ•Χ’ האינדקב'; + $lang['strtablecolumnlist'] = 'Χ’ΧžΧ•Χ“Χ•Χͺ Χ‘Χ˜Χ‘ΧœΧ”'; + $lang['strindexcolumnlist'] = 'Χ’ΧžΧ•Χ“Χ•Χͺ באינדקב'; + $lang['strconfcluster'] = 'האם אΧͺΧ” Χ‘Χ˜Χ•Χ— Χ©Χ‘Χ¨Χ¦Χ•Χ Χš ΧœΧžΧ—Χ•Χ§ אΧͺ Χ”ΧΧ©Χ›Χ•Χœ "%s"?'; + $lang['strclusteredgood'] = 'ΧΧ©Χ›Χ•Χœ Χ”Χ•Χ©ΧœΧ.'; + $lang['strclusteredbad'] = 'ΧΧ©Χ›Χ•Χœ Χ Χ›Χ©Χœ.'; + + // Rules + $lang['strrules'] = 'חוקים'; + $lang['strrule'] = 'Χ—Χ•Χ§'; + $lang['strshowallrules'] = 'הראה אΧͺ Χ›Χœ החוקים'; + $lang['strnorule'] = 'Χ—Χ•Χ§ לא Χ ΧžΧ¦ΧΧ”.'; + $lang['strnorules'] = 'לא Χ ΧžΧ¦ΧΧ• חוקים.'; + $lang['strcreaterule'] = 'Χ¦Χ•Χ¨ Χ—Χ•Χ§'; + $lang['strrulename'] = 'שם Χ”Χ—Χ•Χ§'; + $lang['strruleneedsname'] = 'אΧͺΧ” Χ—Χ™Χ™Χ‘ ΧœΧ¦Χ™Χ™ΧŸ שם ΧœΧ—Χ•Χ§.'; + $lang['strrulecreated'] = 'Χ—Χ•Χ§ Χ Χ•Χ¦Χ¨.'; + $lang['strrulecreatedbad'] = 'Χ™Χ¦Χ™Χ¨Χͺ Χ—Χ•Χ§ Χ Χ›Χ©ΧœΧ”.'; + $lang['strconfdroprule'] = 'האם אΧͺΧ” Χ‘Χ˜Χ•Χ— Χ©Χ‘Χ¨Χ¦Χ•Χ Χš ΧœΧžΧ—Χ•Χ§ אΧͺ Χ”Χ—Χ•Χ§ "%s" מ "l%s"?'; + $lang['strruledropped'] = 'Χ—Χ•Χ§ Χ ΧžΧ—Χ§.'; + $lang['strruledroppedbad'] = 'ΧžΧ—Χ™Χ§Χͺ Χ—Χ•Χ§ Χ Χ›Χ©ΧœΧ”.'; + + // Constraints + $lang['strconstraints'] = 'ΧžΧ‘Χ Χ™Χ'; + $lang['strshowallconstraints'] = 'הראה אΧͺ Χ›Χœ Χ”ΧžΧ‘Χ Χ™Χ.'; + $lang['strnoconstraints'] = 'לא Χ ΧžΧ¦ΧΧ• ΧžΧ‘Χ Χ™Χ.'; + $lang['strcreateconstraint'] = 'Χ¦Χ•Χ¨ ΧžΧ‘Χ Χ”'; + $lang['strconstraintcreated'] = 'ΧžΧ‘Χ Χ” Χ Χ•Χ¦Χ¨.'; + $lang['strconstraintcreatedbad'] = 'Χ™Χ¦Χ™Χ¨Χͺ ΧžΧ‘Χ Χ” Χ Χ›Χ©ΧœΧ”.'; + $lang['strconfdropconstraint'] = 'האם אΧͺΧ” Χ‘Χ˜Χ•Χ— Χ©Χ‘Χ¨Χ¦Χ•Χ Χš ΧœΧžΧ—Χ•Χ§ אΧͺ Χ”Χ‘ΧžΧ Χ” "%s" מ "%s"?'; + $lang['strconstraintdropped'] = 'ΧžΧ‘Χ Χ” Χ ΧžΧ—Χ§.'; + $lang['strconstraintdroppedbad'] = 'ΧžΧ—Χ™Χ§Χͺ ΧžΧ‘Χ Χ” Χ Χ›Χ©ΧœΧ”.'; + $lang['straddcheck'] = 'Χ”Χ•Χ‘Χ£ Χ‘Χ“Χ™Χ§Χ”'; + $lang['strcheckneedsdefinition'] = 'Χ‘Χ“Χ™Χ§Χͺ ΧžΧ‘Χ Χ” Χ–Χ§Χ•Χ§Χ” ΧœΧ”Χ’Χ“Χ¨Χ”.'; + $lang['strcheckadded'] = 'Χ‘Χ“Χ™Χ§Χ” ΧžΧ‘Χ Χ” Χ Χ•Χ‘Χ€Χ”.'; + $lang['strcheckaddedbad'] = 'Χ‘Χ“Χ™Χ§Χͺ ΧžΧ‘Χ Χ” Χ Χ›Χ©ΧœΧ”.'; + $lang['straddpk'] = 'Χ”Χ•Χ‘Χ£ מ׀ΧͺΧ— ראשי'; + $lang['strpkneedscols'] = 'מ׀ΧͺΧ— ראשי Χ“Χ•Χ¨Χ© ΧœΧ€Χ—Χ•Χͺ Χ’ΧžΧ•Χ“Χ” אחΧͺ.'; + $lang['strpkadded'] = 'מ׀ΧͺΧ— ראשי Χ Χ•Χ‘Χ£.'; + $lang['strpkaddedbad'] = 'Χ”Χ•Χ‘Χ€Χͺ מ׀ΧͺΧ— ראשי Χ Χ›Χ©ΧœΧ”.'; + $lang['stradduniq'] = 'Χ”Χ•Χ‘Χ£ מ׀ΧͺΧ— ΧžΧ™Χ•Χ—Χ“.'; + $lang['struniqneedscols'] = 'מ׀ΧͺΧ— ΧžΧ™Χ•Χ—Χ“ Χ“Χ•Χ¨Χ© ΧœΧ€Χ—Χ•Χͺ Χ’ΧžΧ•Χ“Χ” אחΧͺ.'; + $lang['struniqadded'] = 'מ׀ΧͺΧ— ΧžΧ™Χ•Χ—Χ“ Χ Χ•Χ‘Χ£.'; + $lang['struniqaddedbad'] = 'Χ Χ•Χ‘Χ€Χͺ מ׀ΧͺΧ— ΧžΧ™Χ•Χ—Χ“ Χ Χ›Χ©ΧœΧ”.'; + $lang['straddfk'] = 'Χ”Χ•Χ‘Χ£ מ׀ΧͺΧ— Χ–Χ¨'; + $lang['strfkneedscols'] = 'מ׀ΧͺΧ— Χ–Χ¨ Χ“Χ•Χ¨Χ© ל׀ΧͺΧ•Χ— Χ’ΧžΧ•Χ“Χ” אחΧͺ.'; + $lang['strfkneedstarget'] = 'מ׀ΧͺΧ— Χ–Χ¨ Χ“Χ•Χ¨Χ© Χ˜Χ‘ΧœΧͺ ΧžΧ˜Χ¨Χ”.'; + $lang['strfkadded'] = 'מ׀ΧͺΧ— Χ–Χ¨ Χ Χ•Χ‘Χ£.'; + $lang['strfkaddedbad'] = 'Χ™Χ¦Χ™Χ¨Χͺ מ׀ΧͺΧ— Χ–Χ¨ Χ Χ›Χ©ΧœΧ”.'; + $lang['strfktarget'] = 'Χ˜Χ‘ΧœΧͺ ΧžΧ˜Χ¨Χ”'; + $lang['strfkcolumnlist'] = 'Χ’ΧžΧ•Χ“Χ•Χͺ Χ‘ΧžΧ€ΧͺΧ—'; + $lang['strondelete'] = 'DELETE Χ‘'; + $lang['stronupdate'] = 'UPDATE Χ‘'; + + // Functions + $lang['strfunction'] = 'Χ€Χ•Χ Χ§Χ¦Χ™Χ”'; + $lang['strfunctions'] = 'Χ€Χ•Χ Χ§Χ¦Χ™Χ•Χͺ'; + $lang['strshowallfunctions'] = 'הראה אΧͺ Χ›Χœ Χ”Χ€Χ•Χ Χ§Χ¦Χ™Χ•Χͺ'; + $lang['strnofunction'] = 'Χ€Χ•Χ Χ§Χ¦Χ™Χ” לא Χ ΧžΧ¦ΧΧ”.'; + $lang['strnofunctions'] = 'לא Χ ΧžΧ¦ΧΧ• Χ€Χ•Χ Χ§Χ¦Χ™Χ•Χͺ.'; + $lang['strcreateplfunction'] = 'Χ¦Χ•Χ¨ Χ€Χ•Χ Χ§Χ¦Χ™Χͺ SQL/PL'; + $lang['strcreateinternalfunction'] = 'Χ¦Χ•Χ¨ Χ€Χ•Χ Χ§Χ¦Χ™Χ” Χ€Χ Χ™ΧžΧ™Χͺ'; + $lang['strcreatecfunction'] = 'Χ¦Χ•Χ¨ Χ€Χ•Χ Χ§Χ¦Χ™Χͺ C'; + $lang['strfunctionname'] = 'שם Χ”Χ€Χ•Χ Χ§Χ¦Χ™Χ”'; + $lang['strreturns'] = 'Χ—Χ–Χ¨Χ•Χͺ'; + $lang['strarguments'] = 'ΧΧ¨Χ’Χ•ΧžΧ Χ˜Χ™Χ'; + $lang['strproglanguage'] = 'Χ©Χ€Χͺ ΧͺΧ™Χ›Χ Χ•Χͺ'; + $lang['strfunctionneedsname'] = 'אΧͺΧ” Χ—Χ™Χ™Χ‘ לΧͺΧͺ שם ΧœΧ€Χ•Χ Χ§Χ¦Χ™Χ” שלך.'; + $lang['strfunctionneedsdef'] = 'אΧͺΧ” Χ—Χ™Χ™Χ‘ ΧœΧ¦Χ™Χ™ΧŸ Χ”Χ’Χ“Χ¨Χ” ΧœΧ€Χ•Χ Χ§Χ¦Χ™Χ”.'; + $lang['strfunctioncreated'] = 'Χ€Χ•Χ Χ§Χ¦Χ™Χ™Χ” Χ Χ•Χ¦Χ¨Χ”.'; + $lang['strfunctioncreatedbad'] = 'Χ™Χ¦Χ™Χ¨Χͺ Χ€Χ•Χ Χ§Χ¦Χ™Χ™Χ” Χ Χ›Χ©ΧœΧ”.'; + $lang['strconfdropfunction'] = 'האם אΧͺΧ” Χ‘Χ˜Χ•Χ— Χ©Χ‘Χ¨Χ¦Χ•Χ Χš ΧœΧžΧ—Χ•Χ§ אΧͺ Χ”Χ€Χ•Χ Χ§Χ¦Χ™Χ™Χ” "%s"?'; + $lang['strfunctiondropped'] = 'Χ€Χ•Χ Χ§Χ¦Χ™Χ™Χ” Χ ΧžΧ—Χ§Χ”.'; + $lang['strfunctiondroppedbad'] = 'ΧžΧ—Χ™Χ§Χͺ Χ€Χ•Χ Χ§Χ¦Χ™Χ” Χ Χ›Χ©ΧœΧ”.'; + $lang['strfunctionupdated'] = 'Χ€Χ•Χ Χ§Χ¦Χ™Χ” Χ’Χ•Χ“Χ›Χ Χ”.'; + $lang['strfunctionupdatedbad'] = 'Χ’Χ“Χ›Χ•ΧŸ Χ€Χ•Χ Χ§Χ¦Χ™Χ” Χ Χ›Χ©Χœ.'; + $lang['strobjectfile'] = 'Χ§Χ•Χ‘Χ₯ ΧΧ•Χ‘Χ™Χ™Χ§Χ˜'; + $lang['strlinksymbol'] = 'Χ§Χ™Χ©Χ•Χ¨ Χ‘Χ™ΧžΧœΧ™'; + + // Triggers + $lang['strtrigger'] = 'Χ–Χ¨Χ–'; + $lang['strtriggers'] = 'זרזים'; + $lang['strshowalltriggers'] = 'הראה אΧͺ Χ›Χœ הזרזים'; + $lang['strnotrigger'] = 'Χ–Χ¨Χ– לא Χ Χ™ΧžΧ¦ΧΧ”.'; + $lang['strnotriggers'] = 'לא Χ Χ™ΧžΧ¦ΧΧ• זרזים.'; + $lang['strcreatetrigger'] = 'Χ¦Χ•Χ¨ Χ–Χ¨Χ–'; + $lang['strtriggerneedsname'] = 'אΧͺΧ” Χ—Χ™Χ™Χ‘ ΧœΧ¦Χ™Χ™ΧŸ שם ΧœΧ–Χ¨Χ–.'; + $lang['strtriggerneedsfunc'] = 'אΧͺΧ” Χ—Χ™Χ™Χ‘ ΧœΧ¦Χ™Χ™ΧŸ Χ€Χ•Χ Χ§Χ¦Χ™Χ” ΧœΧ–Χ¨Χ–.'; + $lang['strtriggercreated'] = 'Χ–Χ¨Χ– Χ Χ•Χ¦Χ¨.'; + $lang['strtriggercreatedbad'] = 'Χ™Χ¦Χ™Χ¨Χͺ Χ–Χ¨Χ– Χ Χ›Χ©ΧœΧ”.'; + $lang['strconfdroptrigger'] = 'האם אΧͺΧ” Χ‘Χ˜Χ•Χ— Χ©Χ‘Χ¨Χ¦Χ•Χ Χš ΧœΧžΧ—Χ•Χ§ אΧͺ Χ”Χ–Χ¨Χ– "%s" מ "%s"?'; + $lang['strtriggerdropped'] = 'Χ–Χ¨Χ– Χ ΧžΧ—Χ§.'; + $lang['strtriggerdroppedbad'] = 'ΧžΧ—Χ™Χ§Χͺ Χ–Χ¨Χ– Χ Χ›Χ©ΧœΧ”.'; + $lang['strtriggeraltered'] = 'Χ–Χ¨Χ– נגרך.'; + $lang['strtriggeralteredbad'] = 'Χ’Χ¨Χ™Χ›Χͺ Χ–Χ¨Χ– Χ Χ›Χ©ΧœΧ”.'; + + // Types + $lang['strtype'] = 'Χ‘Χ•Χ’'; + $lang['strtypes'] = 'בוגים'; + $lang['strshowalltypes'] = 'הראה אΧͺ Χ›Χœ הבוגים.'; + $lang['strnotype'] = 'Χ‘Χ•Χ’ לא Χ ΧžΧ¦ΧΧ”.'; + $lang['strnotypes'] = 'לא Χ ΧžΧ¦ΧΧ• בוגים.'; + $lang['strcreatetype'] = 'Χ¦Χ•Χ¨ Χ‘Χ•Χ’'; + $lang['strcreatecomptype'] = 'Create composite type'; + $lang['strtypeneedsfield'] = 'אΧͺΧ” Χ—Χ™Χ™Χ‘ ΧœΧ¦Χ™Χ™ΧŸ ΧœΧ€Χ—Χ•Χͺ Χ©Χ“Χ” אחד.'; + $lang['strtypeneedscols'] = 'אΧͺΧ” Χ—Χ™Χ™Χ‘ ΧœΧ¦Χ™Χ™ΧŸ מב׀ר ΧͺΧ§Χ™ΧŸ של Χ©Χ“Χ•Χͺ.'; + $lang['strtypename'] = 'שם Χ”Χ‘Χ•Χ’'; + $lang['strinputfn'] = 'Χ€Χ•Χ Χ§Χ¦Χ™Χͺ קלט'; + $lang['stroutputfn'] = 'Χ€Χ•Χ Χ§Χ¦Χ™Χͺ ׀לט'; + $lang['strpassbyval'] = 'Passed by val?'; + $lang['stralignment'] = 'Alignment'; + $lang['strelement'] = 'אלמנט'; + $lang['strdelimiter'] = 'Delimiter'; + $lang['strstorage'] = 'אחבנה'; + $lang['strtypeneedsname'] = 'אΧͺΧ” Χ—Χ™Χ™Χ‘ ΧœΧ¦Χ™Χ™ΧŸ שם ΧœΧ‘Χ•Χ’.'; + $lang['strtypeneedslen'] = 'אΧͺΧ” Χ—Χ™Χ™Χ‘ ΧœΧ¦Χ™Χ™ΧŸ ΧΧ•Χ¨Χš ΧœΧ‘Χ•Χ’.'; + $lang['strtypecreated'] = 'Χ‘Χ•Χ’ Χ Χ•Χ¦Χ¨.'; + $lang['strtypecreatedbad'] = 'Χ™Χ¦Χ™Χ¨Χͺ Χ‘Χ•Χ’ Χ Χ›Χ©ΧœΧ”.'; + $lang['strconfdroptype'] = 'האם אΧͺΧ” Χ‘Χ˜Χ•Χ— Χ©Χ‘Χ¨Χ¦Χ•Χ Χš ΧœΧžΧ—Χ•Χ§ אΧͺ Χ”Χ‘Χ•Χ’ "%s"?'; + $lang['strtypedropped'] = 'Χ‘Χ•Χ’ Χ ΧžΧ—Χ§.'; + $lang['strtypedroppedbad'] = 'ΧžΧ—Χ™Χ§Χͺ Χ‘Χ•Χ’ Χ Χ›Χ©ΧœΧ”.'; + $lang['strflavor'] = 'Flavor'; + $lang['strbasetype'] = 'Χ‘Χ‘Χ™Χ‘'; + $lang['strcompositetype'] = 'Composite'; + $lang['strpseudotype'] = '׀אבדו'; + + // Schemas + $lang['strschema'] = 'Χͺרשים'; + $lang['strschemas'] = 'ΧͺΧ¨Χ©ΧžΧ™Χ'; + $lang['strshowallschemas'] = 'הראה אΧͺ Χ›Χœ Χ”ΧͺΧ¨Χ©Χ™ΧžΧ™Χ'; + $lang['strnoschema'] = 'Χͺרשים לא Χ ΧžΧ¦ΧΧ”.'; + $lang['strnoschemas'] = 'לא Χ ΧžΧ¦ΧΧ• ΧͺΧ¨Χ©Χ™ΧžΧ™Χ.'; + $lang['strcreateschema'] = 'Χ¦Χ•Χ¨ Χͺרשים'; + $lang['strschemaname'] = 'שם Χ”Χͺרשים'; + $lang['strschemaneedsname'] = 'אΧͺΧ” Χ—Χ™Χ™Χ‘ ΧœΧ¦Χ™Χ™ΧŸ שם לΧͺרשים.'; + $lang['strschemacreated'] = 'Χͺרשים Χ Χ•Χ¦Χ¨'; + $lang['strschemacreatedbad'] = 'Χ™Χ¦Χ™Χ¨Χͺ Χͺרשים Χ Χ›Χ©ΧœΧ”.'; + $lang['strconfdropschema'] = 'האם אΧͺΧ” Χ‘Χ˜Χ•Χ— Χ©Χ‘Χ¨Χ¦Χ•Χ Χš ΧœΧžΧ—Χ•Χ§ אΧͺ Χ”Χͺרשים "?"?'; + $lang['strschemadropped'] = 'Χͺרשים Χ ΧžΧ—Χ§.'; + $lang['strschemadroppedbad'] = 'ΧžΧ—Χ™Χ§Χͺ Χͺרשים Χ Χ›Χ©ΧœΧ”.'; + $lang['strschemaaltered'] = 'Χͺרשים נגרך.'; + $lang['strschemaalteredbad'] = 'Χ’Χ¨Χ™Χ›Χͺ Χͺרשים Χ Χ›Χ©ΧœΧ”.'; + $lang['strsearchpath'] = 'Χ—Χ™Χ€Χ•Χ© ΧžΧ™Χ§Χ•Χ Χ”Χͺרשים.'; + + // Reports + + // Domains + $lang['strdomain'] = 'Χͺחום'; + $lang['strdomains'] = 'ΧͺΧ—Χ•ΧžΧ™Χ'; + $lang['strshowalldomains'] = 'הראה אΧͺ Χ›Χœ Χ”ΧͺΧ—Χ•ΧžΧ™Χ'; + $lang['strnodomains'] = 'לא Χ ΧžΧ¦ΧΧ• ΧͺΧ—Χ•ΧžΧ™Χ.'; + $lang['strcreatedomain'] = 'Χ¦Χ•Χ¨ Χͺחום'; + $lang['strdomaindropped'] = 'Χͺחום Χ ΧžΧ—Χ§.'; + $lang['strdomaindroppedbad'] = 'ΧžΧ—Χ™Χ§Χͺ Χͺחום Χ Χ›Χ©ΧœΧ”.'; + $lang['strconfdropdomain'] = 'האם אΧͺΧ” Χ‘Χ˜Χ•Χ— Χ©Χ‘Χ¨Χ¦Χ•Χ Χš ΧœΧžΧ—Χ•Χ§ אΧͺ Χ”Χͺחום "%s"?'; + $lang['strdomainneedsname'] = 'אΧͺΧ” Χ—Χ™Χ™Χ‘ ΧœΧ¦Χ™Χ™ΧŸ שם לΧͺחום שלך.'; + $lang['strdomaincreated'] = 'Χͺחום Χ Χ•Χ¦Χ¨.'; + $lang['strdomaincreatedbad'] = 'Χ™Χ¦Χ™Χ¨Χͺ Χͺחום Χ Χ›Χ©ΧœΧ”.'; + $lang['strdomainaltered'] = 'Χͺחום נגרך.'; + $lang['strdomainalteredbad'] = 'Χ’Χ¨Χ™Χ›Χͺ Χͺחום Χ Χ›Χ©ΧœΧ”.'; + + // Operators + $lang['stroperator'] = 'ΧžΧ€Χ’Χ™Χœ'; + $lang['stroperators'] = 'ΧžΧ€Χ’Χ™ΧœΧ™Χ'; + $lang['strshowalloperators'] = 'הראה אΧͺ Χ›Χœ Χ”ΧžΧ€Χ’Χ™ΧœΧ™Χ'; + $lang['strnooperator'] = 'ΧžΧ€Χ’Χ™Χœ לא Χ ΧžΧ¦ΧΧ”.'; + $lang['strnooperators'] = 'לא Χ ΧžΧ¦ΧΧ• ΧžΧ€Χ’Χ™ΧœΧ™Χ.'; + $lang['strcreateoperator'] = 'Χ¦Χ•Χ¨ ΧžΧ€Χ’Χ™Χœ'; + $lang['strleftarg'] = 'Χ‘Χ™Χ“Χ•Χ¨ Χ‘Χ•Χ’ לשמאל'; + $lang['strrightarg'] = 'Χ‘Χ™Χ“Χ•Χ¨ שמאל ΧœΧ™ΧžΧ™ΧŸ'; + $lang['strcommutator'] = 'Commutator'; + $lang['strnegator'] = 'Negator'; + $lang['strrestrict'] = 'Restrict'; + $lang['strjoin'] = 'Χ—Χ‘Χ¨'; + $lang['strhashes'] = 'Hashes'; + $lang['strmerges'] = 'Merges'; + $lang['strleftsort'] = 'Χ‘Χ™Χ“Χ•Χ¨ לשמאל'; + $lang['strrightsort'] = 'Χ‘Χ™Χ“Χ•Χ¨ ΧœΧ™ΧžΧ™ΧŸ'; + $lang['strlessthan'] = 'Χ€Χ—Χ•Χͺ מ'; + $lang['strgreaterthan'] = 'Χ’Χ“Χ•Χœ מ'; + $lang['stroperatorneedsname'] = 'אΧͺΧ” Χ—Χ™Χ™Χ‘ ΧœΧ¦Χ™Χ™ΧŸ שם ΧœΧžΧ€Χ’Χ™Χœ.'; + $lang['stroperatorcreated'] = 'ΧžΧ€Χ’Χ™Χœ Χ Χ•Χ¦Χ¨.'; + $lang['stroperatorcreatedbad'] = 'Χ™Χ¦Χ™Χ¨Χͺ ΧžΧ€Χ’Χ™Χœ Χ Χ›Χ©ΧœΧ”.'; + $lang['strconfdropoperator'] = 'האם אΧͺΧ” Χ‘Χ˜Χ•Χ— Χ©Χ‘Χ¨Χ¦Χ•Χ Χš ΧœΧžΧ—Χ•Χ§ אΧͺ Χ”ΧžΧ€Χ’Χ™Χœ "%s"?'; + $lang['stroperatordropped'] = 'ΧžΧ€Χ’Χ™Χœ Χ ΧžΧ—Χ§.'; + $lang['stroperatordroppedbad'] = 'ΧžΧ—Χ™Χ§Χͺ ΧžΧ€Χ’Χ™Χœ Χ Χ›Χ©ΧœΧ”.'; + + // Casts + $lang['strcasts'] = 'Casts'; + $lang['strnocasts'] = 'No casts found.'; + $lang['strsourcetype'] = 'Χ‘Χ•Χ’ Χ”ΧžΧ§Χ•Χ¨'; + $lang['strtargettype'] = 'Χ‘Χ•Χ’ Χ”ΧžΧ˜Χ¨Χ”'; + $lang['strimplicit'] = 'Implicit'; + $lang['strinassignment'] = 'In assignment'; + $lang['strbinarycompat'] = '(Binary compatible)'; + + // Conversions + $lang['strconversions'] = 'Χ”ΧžΧ¨Χ”'; + $lang['strnoconversions'] = 'לא Χ Χ™ΧžΧ¦ΧΧ” Χ”ΧžΧ¨Χ”.'; + $lang['strsourceencoding'] = 'Χ‘Χ•Χ’ Χ”Χ§Χ™Χ“Χ•Χ“ של Χ”ΧžΧ§Χ•Χ¨'; + $lang['strtargetencoding'] = 'Χ‘Χ•Χ’ Χ”Χ§Χ™Χ“Χ•Χ“ של Χ”ΧžΧ˜Χ¨Χ”'; + + // Languages + $lang['strlanguages'] = 'Χ©Χ€Χ•Χͺ'; + $lang['strnolanguages'] = 'לא Χ ΧžΧ¦ΧΧ• Χ©Χ€Χ•Χͺ'; + $lang['strtrusted'] = 'Trusted'; + + // Info + $lang['strnoinfo'] = 'ΧΧ™ΧŸ ΧžΧ™Χ“Χ’ Χ–ΧžΧ™ΧŸ.'; + $lang['strreferringtables'] = 'Referring tables'; + $lang['strparenttables'] = 'Parent tables'; + $lang['strchildtables'] = 'Child tables'; + + // Aggregates + $lang['straggregates'] = 'Aggregates'; + $lang['strnoaggregates'] = 'No aggregates found.'; + $lang['stralltypes'] = '(Χ›Χœ הבוגים)'; + + // Operator Classes + $lang['stropclasses'] = 'Op Classes'; + $lang['strnoopclasses'] = 'No operator classes found.'; + $lang['straccessmethod'] = 'Χ©Χ™Χ˜Χͺ Χ’Χ™Χ©Χ”'; + + // Stats and performance + $lang['strrowperf'] = 'ΧͺΧ€Χ§Χ•Χ“ Χ©Χ“Χ•Χͺ'; + $lang['strioperf'] = 'ΧͺΧ€Χ§Χ•Χ“ קלט/׀לט'; + $lang['stridxrowperf'] = 'ΧͺΧ€Χ§Χ•Χ“ אנדוקב Χ©Χ“Χ”'; + $lang['stridxioperf'] = 'ΧͺΧ€Χ§Χ•Χ“ אנדוקב קלט/׀לט'; + $lang['strpercent'] = '%'; + $lang['strsequential'] = 'Sequential'; + $lang['strscan'] = 'Χ—Χ™Χ€Χ•Χ©'; + $lang['strread'] = 'קרא'; + $lang['strfetch'] = 'Fetch'; + $lang['strheap'] = 'Heap'; + $lang['strtoast'] = 'TOAST'; + $lang['strtoastindex'] = 'TOAST Index'; + $lang['strcache'] = 'ΧžΧ˜ΧžΧ•ΧŸ'; + $lang['strdisk'] = 'Χ“Χ™Χ‘Χ§'; + $lang['strrows2'] = 'Χ©Χ•Χ¨Χ”'; + + // Tablespaces + $lang['strtablespace'] = 'ΧžΧ¨Χ—Χ‘Χ•ΧŸ'; + $lang['strtablespaces'] = 'ΧžΧ¨Χ—Χ‘Χ•Χ Χ™Χ'; + $lang['strshowalltablespaces'] = 'הראה אΧͺ Χ›Χœ Χ”ΧžΧ¨Χ—Χ‘Χ•Χ Χ™Χ'; + $lang['strnotablespaces'] = 'לא Χ ΧžΧ¦ΧΧ• ΧžΧ¨Χ—Χ‘Χ•Χ Χ™Χ.'; + $lang['strcreatetablespace'] = 'Χ¦Χ•Χ¨ ΧžΧ¨Χ—Χ‘Χ•ΧŸ'; + $lang['strlocation'] = 'ΧžΧ™Χ§Χ•Χ'; + $lang['strtablespaceneedsname'] = 'אΧͺΧ” Χ—Χ™Χ™Χ‘ ΧœΧ¦Χ™Χ™ΧŸ שם ΧœΧžΧ¨Χ—Χ‘Χ•ΧŸ.'; + $lang['strtablespaceneedsloc'] = 'אΧͺΧ” Χ—Χ™Χ™Χ‘ ΧœΧ¦Χ™Χ™ΧŸ ΧͺΧ™Χ§Χ™Χ” Χ©Χ‘Χ” Χ™Χ‘Χ¦Χ¨ Χ”ΧžΧ¨Χ—Χ‘Χ•ΧŸ.'; + $lang['strtablespacecreated'] = 'ΧžΧ¨Χ—Χ‘Χ•ΧŸ Χ Χ•Χ¦Χ¨.'; + $lang['strtablespacecreatedbad'] = 'Χ™Χ¦Χ™Χ¨Χͺ ΧžΧ¨Χ—Χ‘Χ•ΧŸ Χ Χ›Χ©ΧœΧ”.'; + $lang['strconfdroptablespace'] = 'האם אΧͺΧ” Χ‘Χ˜Χ•Χ— Χ©Χ‘Χ¨Χ¦Χ•Χ Χš ΧœΧžΧ—Χ•Χ§ אΧͺ Χ”ΧžΧ¨Χ—Χ‘Χ•ΧŸ "%s"?'; + $lang['strtablespacedropped'] = 'ΧžΧ¨Χ—Χ‘Χ•ΧŸ Χ ΧžΧ—Χ§.'; + $lang['strtablespacedroppedbad'] = 'ΧžΧ—Χ™Χ§Χͺ ΧžΧ¨Χ—Χ‘Χ•ΧŸ Χ Χ›Χ©ΧœΧ”.'; + $lang['strtablespacealtered'] = 'ΧžΧ¨Χ—Χ‘Χ•ΧŸ נגרך.'; + $lang['strtablespacealteredbad'] = 'Χ’Χ¨Χ™Χ›Χͺ ΧžΧ¨Χ—Χ‘Χ•ΧŸ ΧžΧ›Χ©ΧœΧ”.'; + + // Miscellaneous + $lang['strtopbar'] = '%s Χ¨Χ₯ גל %s:%s -- אΧͺΧ” ΧžΧ—Χ•Χ‘Χ¨ Χ›ΧžΧ©Χͺמש - "%s"'; + $lang['strtimefmt'] = 'jS M, Y g:iA'; + $lang['strhelp'] = 'Χ’Χ–Χ¨Χ”'; + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/hungarian.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/hungarian.php new file mode 100644 index 00000000..125109b9 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/hungarian.php @@ -0,0 +1,901 @@ + + * + * + */ + + // Language and character set + $lang['applang'] = 'Magyar'; + $lang['applocale'] = 'hu-HU'; + $lang['applangdir'] = 'ltr'; + + // Welcome + $lang['strintro'] = 'ÜdvΓΆzli a phpPgAdmin!'; + $lang['strppahome'] = 'A phpPgAdmin honlapja'; + $lang['strpgsqlhome'] = 'A PostgreSQL honlapja'; + $lang['strpgsqlhome_url'] = 'http://www.postgresql.org/'; + $lang['strlocaldocs'] = 'A PostgreSQL (helyi) dokumentΓ‘ciΓ³ja'; + $lang['strreportbug'] = 'HibajelentΓ©s feladΓ‘sa'; + $lang['strviewfaq'] = 'GYIK megtekintΓ©se'; + $lang['strviewfaq_url'] = 'http://phppgadmin.sourceforge.net/doku.php?id=faq'; + + // Basic strings + $lang['strlogin'] = 'BejelentkezΓ©s'; + $lang['strloginfailed'] = 'Nem sikerΓΌlt bejelentkezni'; + $lang['strlogindisallowed'] = 'BiztonsΓ‘gi okbΓ³l engedΓ©lyezettlen a bejelentkezΓ©s.'; + $lang['strserver'] = 'SzolgΓ‘lΓ³'; + $lang['strservers'] = 'SzolgΓ‘lΓ³k'; + $lang['strgroupservers'] = 'SzolgΓ‘lΓ³k β€ž%s” csoportban'; + $lang['strallservers'] = 'Minden szolgΓ‘lΓ³'; + $lang['strintroduction'] = 'BevezetΕ‘'; + $lang['strhost'] = 'Gazda'; + $lang['strport'] = 'Kapu'; + $lang['strlogout'] = 'KilΓ©pΓ©s'; + $lang['strowner'] = 'Tulajdonos'; + $lang['straction'] = 'MΕ±velet'; + $lang['stractions'] = 'MΕ±veletek'; + $lang['strname'] = 'NΓ©v'; + $lang['strdefinition'] = 'DefinΓ­ciΓ³'; + $lang['strproperties'] = 'TulajdonsΓ‘gok'; + $lang['strbrowse'] = 'TallΓ³z'; + $lang['strenable'] = 'Enged'; + $lang['strdisable'] = 'Tilt'; + $lang['strdrop'] = 'TΓΆrΓΆl'; + $lang['strdropped'] = 'TΓΆrlΓΆlve'; + $lang['strnull'] = 'Null'; + $lang['strnotnull'] = 'Not Null'; + $lang['strprev'] = '< ElΕ‘zΕ‘'; + $lang['strnext'] = 'KΓΆvetkezΕ‘ >'; + $lang['strfirst'] = '<< ElsΕ‘'; + $lang['strlast'] = 'UtolsΓ³ >>'; + $lang['strfailed'] = 'Sikertelen'; + $lang['strcreate'] = 'Teremt'; + $lang['strcreated'] = 'Megteremtve'; + $lang['strcomment'] = 'MegjegyzΓ©s'; + $lang['strlength'] = 'Hossz'; + $lang['strdefault'] = 'AlapΓ©rtelmezΓ©s'; + $lang['stralter'] = 'MΓ³dosΓ­t'; + $lang['strok'] = 'OK'; + $lang['strcancel'] = 'MΓ©gsem'; + $lang['strkill'] = 'Γ–l'; + $lang['strac'] = 'Γ–nmΕ±kΓΆdΕ‘ kiegΓ©szΓ­tΓ©s engedΓ©lyezΓ©se'; + $lang['strsave'] = 'Ment'; + $lang['strreset'] = 'Újra'; + $lang['strrestart'] = 'ÚjraindΓ­t'; + $lang['strinsert'] = 'BeszΓΊr'; + $lang['strselect'] = 'KivΓ‘laszt'; + $lang['strdelete'] = 'TΓΆrΓΆl'; + $lang['strupdate'] = 'IdΕ‘szerΕ±sΓ­t'; + $lang['strreferences'] = 'HivatkozΓ‘sok'; + $lang['stryes'] = 'Igen'; + $lang['strno'] = 'Nem'; + $lang['strtrue'] = 'IGAZ'; + $lang['strfalse'] = 'HAMIS'; + $lang['stredit'] = 'Szerkeszt'; + $lang['strcolumn'] = 'Oszlop'; + $lang['strcolumns'] = 'Oszlopok'; + $lang['strrows'] = 'sor'; + $lang['strrowsaff'] = 'sor Γ©rintett.'; + $lang['strobjects'] = 'objektum'; + $lang['strback'] = 'Vissza'; + $lang['strqueryresults'] = 'LekΓ©rdezΓ©s eredmΓ©nyei'; + $lang['strshow'] = 'MegjelenΓ­t'; + $lang['strempty'] = 'ÜrΓ­t'; + $lang['strlanguage'] = 'Nyelv'; + $lang['strencoding'] = 'KΓ³dolΓ‘s'; + $lang['strvalue'] = 'Γ‰rtΓ©k'; + $lang['strunique'] = 'egyedi'; + $lang['strprimary'] = 'ElsΕ‘dleges'; + $lang['strexport'] = 'Kivisz'; + $lang['strimport'] = 'Behoz'; + $lang['strallowednulls'] = 'EngedΓ©lyezett NULL betΕ±k'; + $lang['strbackslashn'] = '\N'; + $lang['stremptystring'] = 'Üres szΓΆveg/mezΕ‘'; + $lang['strsql'] = 'SQL'; + $lang['stradmin'] = 'Gazda'; + $lang['strvacuum'] = 'TakarΓ­t'; + $lang['stranalyze'] = 'Elemez'; + $lang['strclusterindex'] = 'FΓΌrtΓΆz'; + $lang['strclustered'] = 'FΓΌrtΓΆzve?'; + $lang['strreindex'] = 'Újraindexel'; + $lang['strexecute'] = 'VΓ©grehajt'; + $lang['stradd'] = 'BΕ‘vΓ­t'; + $lang['strevent'] = 'EsemΓ©ny'; + $lang['strwhere'] = 'Hol'; + $lang['strinstead'] = 'InkΓ‘bb'; + $lang['strwhen'] = 'Mikor'; + $lang['strformat'] = 'Alak'; + $lang['strdata'] = 'Adatok'; + $lang['strconfirm'] = 'MegerΕ‘sΓ­t'; + $lang['strexpression'] = 'KifejezΓ©s'; + $lang['strellipsis'] = '…'; + $lang['strseparator'] = ': '; + $lang['strexpand'] = 'Kinyit'; + $lang['strcollapse'] = 'Γ–sszecsuk'; + $lang['strfind'] = 'Keres'; + $lang['stroptions'] = 'RΓ©szletek'; + $lang['strrefresh'] = 'FrissΓ­t'; + $lang['strdownload'] = 'LetΓΆltΓ©s'; + $lang['strdownloadgzipped'] = 'Gzippel tΓΆmΓΆrΓ­tett letΓΆltΓ©s'; + $lang['strinfo'] = 'InfΓ³'; + $lang['stroids'] = 'OID-k'; + $lang['stradvanced'] = 'HaladΓ³'; + $lang['strvariables'] = 'VΓ‘ltozΓ³k'; + $lang['strprocess'] = 'Folyamat'; + $lang['strprocesses'] = 'Folyamatok'; + $lang['strsetting'] = 'BeΓ‘llΓ­tΓ‘s'; + $lang['streditsql'] = 'SQL-szerkesztΓ©s'; + $lang['strruntime'] = 'Teljes futΓ‘si idΕ‘: %s ms'; + $lang['strpaginate'] = 'Oldalakra tΓΆrdelΓ©s'; + $lang['struploadscript'] = 'vagy egy SQL-Γ­rΓ‘s feltΓΆltΓ©se:'; + $lang['strstarttime'] = 'KezdΓ©s ideje'; + $lang['strfile'] = 'FΓ‘jl'; + $lang['strfileimported'] = 'FΓ‘jl behozva.'; + $lang['strtrycred'] = 'HasznΓ‘lja minden kiszolgΓ‘lΓ³hoz e beΓ‘llΓ­tΓ‘sokat'; + $lang['strconfdropcred'] = 'BiztonsΓ‘g okΓ‘n a szΓ©tvΓ‘lΓ‘s megszΓΌnteti a megosztott bejelentkezΕ‘ adatait. Biztosan szΓ©t akar vΓ‘lni?'; + $lang['stractionsonmultiplelines'] = 'TΓΆbb soros mΕ±veletek'; + $lang['strselectall'] = 'Mindent kivΓ‘laszt'; + $lang['strunselectall'] = 'Semmit sem vΓ‘laszt ki'; + $lang['strlocale'] = 'HelyszΓ­n'; + $lang['strcollation'] = 'Γ–sszerakΓ‘s'; + $lang['strctype'] = 'BetΕ±tΓ­pus'; + $lang['strdefaultvalues'] = 'AlapΓ©rtΓ©kek'; + $lang['strnewvalues'] = 'Új Γ©rtΓ©kek'; + $lang['strstart'] = 'IndΓ­t'; + $lang['strstop'] = 'LeΓ‘llΓ­t'; + $lang['strgotoppage'] = 'vissza a tetejΓ©re'; + $lang['strtheme'] = 'TΓ©ma'; + $lang['strcluster'] = 'FΓΌrt'; + + // Admin + $lang['stradminondatabase'] = 'A kΓΆvetkezΕ‘ adminisztratΓ­v feladatok %s adatbΓ‘zis egΓ©szΓ©re vonatkoznak.'; + $lang['stradminontable'] = 'A kΓΆvetkezΕ‘ adminisztratΓ­v feladatok %s tΓ‘blΓ‘ra vonatkoznak.'; + + // User-supplied SQL history + $lang['strhistory'] = 'ElΕ‘zmΓ©nyek'; + $lang['strnohistory'] = 'Nincs elΕ‘zmΓ©ny.'; + $lang['strclearhistory'] = 'ElΕ‘zmΓ©nyeket tΓΆrΓΆl'; + $lang['strdelhistory'] = 'ElΕ‘zmΓ©nyekbΕ‘l tΓΆrΓΆl'; + $lang['strconfdelhistory'] = 'TΓ©nyleg tΓΆrΓΆli e kΓ©relmet az elΕ‘zmΓ©nyekbΕ‘l?'; + $lang['strconfclearhistory'] = 'TΓ©nyleg tΓΆrΓΆli az elΕ‘zmΓ©nyeket?'; + $lang['strnodatabaseselected'] = 'Ki kell vΓ‘lasztani az adatbΓ‘zist.'; + + // Database sizes + $lang['strnoaccess'] = 'Nincs hozzΓ‘fΓ©rΓ©s'; + $lang['strsize'] = 'MΓ©ret'; + $lang['strbytes'] = 'bΓ‘jt'; + $lang['strkb'] = 'kB'; + $lang['strmb'] = 'MB'; + $lang['strgb'] = 'GB'; + $lang['strtb'] = 'TB'; + + // Error handling + $lang['strnoframes'] = 'Ez alkalmazΓ‘s legjobban kereteket tΓ‘mogatΓ³ bΓΆngΓ©szΕ‘vel mΕ±kΓΆdik, de hasznΓ‘lhatΓ³ keretek nΓ©lkΓΌl is az alΓ‘bbi hivatkozΓ‘sra kattintva.'; + $lang['strnoframeslink'] = 'Keretek nΓ©lkΓΌli hasznΓ‘lat'; + $lang['strbadconfig'] = 'A config.inc.php elavult. Újra kell teremteni az ΓΊj config.inc.php-dist fΓ‘jlbΓ³l.'; + $lang['strnotloaded'] = 'Az ΓΆn PHP rendszere nem tΓ‘mogatja a PostgreSQL-t.'; + $lang['strpostgresqlversionnotsupported'] = 'A PostgreSQL e vΓ‘ltozata nem megfelelΕ‘. KΓ©rem telepΓ­tse a %s vΓ‘ltozatot, vagy ΓΊjabbat!'; + $lang['strbadschema'] = 'A megadott sΓ©ma Γ©rvΓ©nytelen.'; + $lang['strbadencoding'] = 'Az ΓΌgyfΓ©l oldali kΓ³dolΓ‘s beΓ‘llΓ­tΓ‘sa az adatbΓ‘zisban nem sikerΓΌlt.'; + $lang['strsqlerror'] = 'SQL hiba:'; + $lang['strinstatement'] = 'A kΓΆvetkezΕ‘ kifejezΓ©sben:'; + $lang['strinvalidparam'] = 'Γ‰rvΓ©nytelen paramΓ©terek.'; + $lang['strnodata'] = 'Nincsenek sorok.'; + $lang['strnoobjects'] = 'Nincsenek objektumok.'; + $lang['strrownotunique'] = 'Nincs egyedi azonosΓ­tΓ³ ehhez a sorhoz.'; + $lang['strnouploads'] = 'FΓ‘jl feltΓΆltΓ©se letiltva.'; + $lang['strimporterror'] = 'Behozatali hiba.'; + $lang['strimporterror-fileformat'] = 'Behozatali hiba: nem sikerΓΌlt automatikusan megΓ‘llapΓ­tani a fΓ‘jl formΓ‘tumΓ‘t.'; + $lang['strimporterrorline'] = 'Behozatali hiba a %s. sorban.'; + $lang['strimporterrorline-badcolumnnum'] = 'Behozatali hiba a(z) %s. szΓ‘mΓΊ sorban: A sor nem tartalmazza a megfelelΕ‘ szΓ‘mΓΊ sort.'; + $lang['strimporterror-uploadedfile'] = 'Behozatali hiba: A fΓ‘jlt nem sikerΓΌlt feltΓΌlteni a kiszolgΓ‘lΓ³ra.'; + $lang['strcannotdumponwindows'] = 'Γ–sszetett tΓ‘bla ΓΆmlesztΓ©se Γ©s sΓ©ma nevek Windows-on nem tΓ‘mogatottak.'; + $lang['strinvalidserverparam'] = 'Γ‰rvΓ©nytelen kiszolgΓ‘lΓ³ paramΓ©terrel prΓ³bΓ‘ltak csatlakozni. Lehet, hogy valaki betΓΆrni prΓ³bΓ‘l a rendszerbe.'; + $lang['strnoserversupplied'] = 'Nincs megadva kiszolgΓ‘lΓ³!'; + $lang['strbadpgdumppath'] = 'Kiviteli hiba: Elbukott a pg_dump vΓ©grehajtΓ‘sa (conf/config.inc.php fΓ‘jlban megadott ΓΆsvΓ©ny: %s). KΓ©rem, javΓ­tsa ki ezt a beΓ‘llΓ­tΓ‘sban, Γ©s ismΓ©teljen.'; + $lang['strbadpgdumpallpath'] = 'Kiviteli hiba: Elbukott a pg_dumpall vΓ©grehajtΓ‘sa (conf/config.inc.php fΓ‘jlban megadott ΓΆsvΓ©ny: %s). KΓ©rem, javΓ­tsa ki ezt a beΓ‘llΓ­tΓ‘sban, Γ©s ismΓ©teljen.'; + $lang['strconnectionfail'] = 'Nem csatlakozhatok a szolgΓ‘lΓ³hoz.'; + + // Tables + $lang['strtable'] = 'TΓ‘bla'; + $lang['strtables'] = 'TΓ‘blΓ‘k'; + $lang['strshowalltables'] = 'Minden tΓ‘bla megjelenΓ­tΓ©se'; + $lang['strnotables'] = 'Nincsenek tΓ‘blΓ‘k.'; + $lang['strnotable'] = 'Nincs tΓ‘bla.'; + $lang['strcreatetable'] = 'TΓ‘blΓ‘t teremt'; + $lang['strcreatetablelike'] = 'TΓ‘blΓ‘t teremt mint'; + $lang['strcreatetablelikeparent'] = 'ForrΓ‘s tΓ‘bla'; + $lang['strcreatelikewithdefaults'] = 'ALAPΓ‰RTELMEZΓ‰SEKKEL'; + $lang['strcreatelikewithconstraints'] = 'MEGSZORÍTÁSOKKAL'; + $lang['strcreatelikewithindexes'] = 'INDEXEKKEL'; + $lang['strtablename'] = 'TΓ‘bla neve'; + $lang['strtableneedsname'] = 'Meg kell adni a tΓ‘bla nevΓ©t.'; + $lang['strtablelikeneedslike'] = 'Meg kell adni a tΓ‘bla nevΓ©t, ahonnan tulajdonsΓ‘gokat lehet mΓ‘solni.'; + $lang['strtableneedsfield'] = 'LegalΓ‘bb egy oszlopot meg kell adni.'; + $lang['strtableneedscols'] = 'A tΓ‘blΓ‘nak Γ©rvΓ©nyes szΓ‘mΓΊ oszlop kell.'; + $lang['strtablecreated'] = 'A tΓ‘bla megteremtve.'; + $lang['strtablecreatedbad'] = 'Nem sikerΓΌlt tΓ‘blΓ‘t teremteni.'; + $lang['strconfdroptable'] = 'Biztosan tΓΆrΓΆlni kΓ­vΓ‘nja β€ž%s” tΓ‘blΓ‘t?'; + $lang['strtabledropped'] = 'A tΓ‘bla tΓΆrΓΆlve.'; + $lang['strtabledroppedbad'] = 'Nem sikerΓΌlt a tΓ‘blΓ‘t tΓΆrΓΆlni.'; + $lang['strconfemptytable'] = 'Biztosan ki akarja ΓΌrΓ­teni β€ž%s” tΓ‘blΓ‘t?'; + $lang['strtableemptied'] = 'A tΓ‘bla kiΓΌrΓ­tve.'; + $lang['strtableemptiedbad'] = 'Nem sikerΓΌlt a tΓ‘blΓ‘t kiΓΌrΓ­teni.'; + $lang['strinsertrow'] = 'Sor beszΓΊrΓ‘sa'; + $lang['strrowinserted'] = 'A sor beszΓΊrva.'; + $lang['strrowinsertedbad'] = 'Nem sikerΓΌlt a sort beszΓΊrni.'; + $lang['strnofkref'] = 'Nincs %s idegen kulcshoz illΕ‘ Γ©rtΓ©k.'; + $lang['strrowduplicate'] = 'Nem sikerΓΌlt sort beszΓΊrni. Dupla beszΓΊrΓ‘si kΓ­sΓ©rlet.'; + $lang['streditrow'] = 'Sor szerkesztΓ©se'; + $lang['strrowupdated'] = 'A sor idΕ‘szerΕ±sΓ­tve.'; + $lang['strrowupdatedbad'] = 'Nem sikerΓΌlt a sort idΕ‘szerΕ±sΓ­teni.'; + $lang['strdeleterow'] = 'Sor tΓΆrlΓ©se'; + $lang['strconfdeleterow'] = 'Biztosan tΓΆrΓΆlni kΓ­vΓ‘nja ezt a sort?'; + $lang['strrowdeleted'] = 'A sor tΓΆrΓΆlve.'; + $lang['strrowdeletedbad'] = 'Nem sikerΓΌlt a sort tΓΆrΓΆlni.'; + $lang['strinsertandrepeat'] = 'BeszΓΊrΓ‘s & IsmΓ©tlΓ©s'; + $lang['strnumcols'] = 'Oszlopok szΓ‘ma'; + $lang['strcolneedsname'] = 'Meg kell adnia az oszlop nevΓ©t'; + $lang['strselectallfields'] = 'Minden oszlop kijelΓΆlΓ©se'; + $lang['strselectneedscol'] = 'Ki kell vΓ‘lasztani egy oszlopot'; + $lang['strselectunary'] = 'EgyvΓ‘ltozΓ³s mΕ±veleteknek nem lehetnek Γ©rtΓ©kei'; + $lang['strcolumnaltered'] = 'Az oszlop megvΓ‘ltoztatva.'; + $lang['strcolumnalteredbad'] = 'Nem sikerΓΌlt az oszlopot megvΓ‘ltoztatni.'; + $lang['strconfdropcolumn'] = 'Biztosan tΓΆrΓΆlni kΓ­vΓ‘nja β€ž%s” oszlopot β€ž%s” tΓ‘blΓ‘bΓ³l?'; + $lang['strcolumndropped'] = 'Az oszlop tΓΆrΓΆlve.'; + $lang['strcolumndroppedbad'] = 'Nem sikerΓΌlt az oszlopot tΓΆrΓΆlni.'; + $lang['straddcolumn'] = 'Oszloppal bΕ‘vΓ­tΓ©s'; + $lang['strcolumnadded'] = 'Oszloppal bΕ‘vΓ­tve.'; + $lang['strcolumnaddedbad'] = 'Nem sikerΓΌlt az oszloppal bΕ‘vΓ­teni.'; + $lang['strcascade'] = 'ZUHATAG'; + $lang['strtablealtered'] = 'A tΓ‘bla megvΓ‘ltoztatva.'; + $lang['strtablealteredbad'] = 'Nem sikerΓΌlt a tΓ‘blΓ‘t megvΓ‘ltoztatni.'; + $lang['strdataonly'] = 'Csak adatok'; + $lang['strstructureonly'] = 'Csak struktΓΊra'; + $lang['strstructureanddata'] = 'StruktΓΊra Γ©s adatok'; + $lang['strtabbed'] = 'FΓΌles'; + $lang['strauto'] = 'AutΓ³'; + $lang['strconfvacuumtable'] = 'Biztosan ki akarja takarΓ­tani β€ž%s” tΓ‘blΓ‘t?'; + $lang['strconfanalyzetable'] = 'Biztosan elemezzΓΌk β€ž%s” tΓ‘blΓ‘t?'; + $lang['strconfreindextable'] = 'Biztosan ΓΊjra akarja indexelni β€ž%s” tΓ‘blΓ‘t?'; + $lang['strconfclustertable'] = 'Biztosan fΓΌrtΓΆzni akarja β€ž%s” tΓ‘blΓ‘t?'; + $lang['strestimatedrowcount'] = 'BecsΓΌlt sorok szΓ‘ma'; + $lang['strspecifytabletoanalyze'] = 'LegalΓ‘bb egy elemzendΕ‘ tΓ‘blΓ‘t meg kell adni.'; + $lang['strspecifytabletoempty'] = 'LegalΓ‘bb egy ΓΌrΓ­tendΕ‘ tΓ‘blΓ‘t meg kell adni.'; + $lang['strspecifytabletodrop'] = 'LegalΓ‘bb egy tΓΆrlendΕ‘ tΓ‘blΓ‘t meg kell adni.'; + $lang['strspecifytabletovacuum'] = 'LegalΓ‘bb egy takarΓ­tandΓ³ tΓ‘blΓ‘t meg kell adni.'; + $lang['strspecifytabletoreindex'] = 'LegalΓ‘bb egy indexelendΕ‘ tΓ‘blΓ‘t meg kell adni.'; + $lang['strspecifytabletocluster'] = 'LegalΓ‘bb egy fΓΌrtΓΆzendΕ‘ tΓ‘blΓ‘t meg kell adni.'; + $lang['strnofieldsforinsert'] = 'Oszloptalan tΓ‘blΓ‘ba nem szΓΊrhat be sort.'; + + // Columns + $lang['strcolprop'] = 'TΓ‘bla tulajdonsΓ‘gai'; + $lang['strnotableprovided'] = 'Nincs tΓ‘bla megadva!'; + + // Users + $lang['struser'] = 'HasznΓ‘lΓ³'; + $lang['strusers'] = 'HasznΓ‘lΓ³k'; + $lang['strusername'] = 'HasznΓ‘lΓ³ neve'; + $lang['strpassword'] = 'JelszΓ³'; + $lang['strsuper'] = 'Rendszergazda?'; + $lang['strcreatedb'] = 'LΓ©trehozhat AB-t?'; + $lang['strexpires'] = 'LejΓ‘r'; + $lang['strsessiondefaults'] = 'Munkamenet alapΓ©rtΓ©kei'; + $lang['strnousers'] = 'Nincsenek hasznΓ‘lΓ³k.'; + $lang['struserupdated'] = 'HasznΓ‘lΓ³ idΕ‘szerΕ±sΓ­tve.'; + $lang['struserupdatedbad'] = 'Nem sikerΓΌlt a hasznΓ‘lΓ³t idΕ‘szerΕ±sΓ­teni.'; + $lang['strshowallusers'] = 'Minden hasznΓ‘lΓ³ megjelenΓ­tΓ©se'; + $lang['strcreateuser'] = 'HasznΓ‘lΓ³ teremtΓ©se'; + $lang['struserneedsname'] = 'A hasznΓ‘lΓ³nak nevet kell adni.'; + $lang['strusercreated'] = 'A hasznΓ‘lΓ³ megteremtve.'; + $lang['strusercreatedbad'] = 'Nem sikerΓΌlt a hasznΓ‘lΓ³t megteremteni.'; + $lang['strconfdropuser'] = 'Biztosan tΓΆrΓΆlni akarja β€ž%s” hasznΓ‘lΓ³t?'; + $lang['struserdropped'] = 'A hasznΓ‘lΓ³ tΓΆrΓΆlve.'; + $lang['struserdroppedbad'] = 'Nem sikerΓΌlt a hasznΓ‘lΓ³t tΓΆrΓΆlni.'; + $lang['straccount'] = 'SzΓ‘mla'; + $lang['strchangepassword'] = 'JelszΓ³ megvΓ‘ltoztatΓ‘sa'; + $lang['strpasswordchanged'] = 'A jelszΓ³ megvΓ‘ltoztatva.'; + $lang['strpasswordchangedbad'] = 'Nem sikerΓΌlt a jelszΓ³t megvΓ‘ltoztatni.'; + $lang['strpasswordshort'] = 'A jelszΓ³ tΓΊl rΓΆvid.'; + $lang['strpasswordconfirm'] = 'A jelszΓ³ nem egyezik a megerΕ‘sΓ­tΓ©ssel.'; + + // Groups + $lang['strgroup'] = 'Csoport'; + $lang['strgroups'] = 'Csoportok'; + $lang['strshowallgroups'] = 'Minden csoportot megjelenΓ­t'; + $lang['strnogroup'] = 'Nincs csoport.'; + $lang['strnogroups'] = 'Nincsenek csoportok.'; + $lang['strcreategroup'] = 'Csoportot teremt'; + $lang['strgroupneedsname'] = 'A csoportnak nevet kell adni.'; + $lang['strgroupcreated'] = 'A csoport megteremtve.'; + $lang['strgroupcreatedbad'] = 'Nem sikerΓΌlt a csoportot megteremteni.'; + $lang['strconfdropgroup'] = 'Biztosan tΓΆrΓΆlni kΓ­vΓ‘nja β€ž%s” csoportot?'; + $lang['strgroupdropped'] = 'A csoport tΓΆrΓΆlve.'; + $lang['strgroupdroppedbad'] = 'Nem sikerΓΌlt a csoportot tΓΆrΓΆlni.'; + $lang['strmembers'] = 'Tagok'; + $lang['strmemberof'] = 'Tagja '; + $lang['stradminmembers'] = 'Admin tagok'; + $lang['straddmember'] = 'Tagot vesz fel'; + $lang['strmemberadded'] = 'Tag felvΓ©ve.'; + $lang['strmemberaddedbad'] = 'Nem sikerΓΌlt tagot felvenni.'; + $lang['strdropmember'] = 'Tag kicsapΓ‘sa'; + $lang['strconfdropmember'] = 'Biztosan ki akarja csapni β€ž%s” tagot β€ž%s” csoportbΓ³l?'; + $lang['strmemberdropped'] = 'A tag kicsapva.'; + $lang['strmemberdroppedbad'] = 'Nem sikerΓΌlt a tagot kicsapni.'; + + // Roles + $lang['strrole'] = 'Szerep'; + $lang['strroles'] = 'Szerepek'; + $lang['strshowallroles'] = 'Minden szerepet megjelenΓ­t'; + $lang['strnoroles'] = 'Nincs szerep.'; + $lang['strinheritsprivs'] = 'JogosultsΓ‘gokat ΓΆrΓΆkΓΆl?'; + $lang['strcreaterole'] = 'Szerepet teremt'; + $lang['strcancreaterole'] = 'Teremthet szerepet?'; + $lang['strrolecreated'] = 'Szerep megteremtve.'; + $lang['strrolecreatedbad'] = 'Nem sikerΓΌlt szerepet teremteni.'; + $lang['strrolealtered'] = 'Szerep megvΓ‘ltoztatva.'; + $lang['strrolealteredbad'] = 'Nem sikerΓΌlt szerepet vΓ‘ltoztatni.'; + $lang['strcanlogin'] = 'BelΓ©phet?'; + $lang['strconnlimit'] = 'Kapcsolat korlΓ‘tja'; + $lang['strdroprole'] = 'Szerepet tΓΆrΓΆl'; + $lang['strconfdroprole'] = 'Biztosan tΓΆrΓΆljΓΌk β€ž%s” szerepet?'; + $lang['strroledropped'] = 'Szerep tΓΆrΓΆlve.'; + $lang['strroledroppedbad'] = 'Nem sikerΓΌlt szerepet tΓΆrΓΆlni.'; + $lang['strnolimit'] = 'Nincs korlΓ‘t'; + $lang['strnever'] = 'Soha'; + $lang['strroleneedsname'] = 'Nevet kell adni a szerepnek.'; + + // Privileges + $lang['strprivilege'] = 'JogosultsΓ‘g'; + $lang['strprivileges'] = 'JogosultsΓ‘gok'; + $lang['strnoprivileges'] = 'Ez objektum alap-jogosultsΓ‘gokkal rendelkezik.'; + $lang['strgrant'] = 'FeljogosΓ­t'; + $lang['strrevoke'] = 'JogosultsΓ‘got megvon'; + $lang['strgranted'] = 'A jogosultsΓ‘gok megvΓ‘ltoztatva.'; + $lang['strgrantfailed'] = 'Nem sikerΓΌlt a jogosultsΓ‘gokat megvΓ‘ltoztatni.'; + $lang['strgrantbad'] = 'LegalΓ‘bb egy felhasznΓ‘lΓ³t Γ©s jogosultsΓ‘got ki kell vΓ‘lasztani.'; + $lang['strgrantor'] = 'JogosΓ­tΓ³'; + $lang['strasterisk'] = '*'; + + // Databases + $lang['strdatabase'] = 'AdatbΓ‘zis'; + $lang['strdatabases'] = 'AdatbΓ‘zisok'; + $lang['strshowalldatabases'] = 'Minden adatbΓ‘zist megjelenΓ­t'; + $lang['strnodatabases'] = 'Nincs adatbΓ‘zis.'; + $lang['strcreatedatabase'] = 'AdatbΓ‘zist teremt'; + $lang['strdatabasename'] = 'AdatbΓ‘zisnΓ©v'; + $lang['strdatabaseneedsname'] = 'Meg kell adni az adatbΓ‘zis nevΓ©t.'; + $lang['strdatabasecreated'] = 'Az adatbΓ‘zis megteremtve.'; + $lang['strdatabasecreatedbad'] = 'Nem sikerΓΌlt megteremteni az adatbΓ‘zist.'; + $lang['strconfdropdatabase'] = 'Biztosan tΓΆrΓΆlni akarja β€ž%s” adatbΓ‘zist?'; + $lang['strdatabasedropped'] = 'Az adatbΓ‘zis tΓΆrΓΆlve.'; + $lang['strdatabasedroppedbad'] = 'Nem sikerΓΌlt tΓΆrΓΆlni az adatbΓ‘zist.'; + $lang['strentersql'] = 'Írja be a vΓ©grehajtandΓ³ SQL-kifejezΓ©seket ide:'; + $lang['strsqlexecuted'] = 'Az SQL-kifejezΓ©sek vΓ©grehajtva.'; + $lang['strvacuumgood'] = 'A takarΓ­tΓ‘s kΓ©sz.'; + $lang['strvacuumbad'] = 'Nem sikerΓΌlt kitakarΓ­tani.'; + $lang['stranalyzegood'] = 'Az elemzΓ©s kΓ©sz.'; + $lang['stranalyzebad'] = 'Nem sikerΓΌlt kielemezni.'; + $lang['strreindexgood'] = 'ÚjraindexelΓ©s kΓ©sz.'; + $lang['strreindexbad'] = 'Nem sikerΓΌlt az ΓΊjraindexelΓ©s.'; + $lang['strfull'] = 'Teljes'; + $lang['strfreeze'] = 'Befagyaszt'; + $lang['strforce'] = 'KΓ©nyszerΓ­t'; + $lang['strsignalsent'] = 'JelzΓ©s elkΓΌldve.'; + $lang['strsignalsentbad'] = 'Nem sikerΓΌlt jelzΓ©st kΓΌldeni.'; + $lang['strallobjects'] = 'Minden objektum'; + $lang['strdatabasealtered'] = 'AdatbΓ‘zis megvΓ‘ltoztatva.'; + $lang['strdatabasealteredbad'] = 'Nem sikerΓΌlt az adatbΓ‘zist megvΓ‘ltoztatni.'; + $lang['strspecifydatabasetodrop'] = 'Meg kell adni a tΓΆrlendΕ‘ adatbΓ‘zist'; + $lang['strtemplatedb'] = 'Sablon'; + $lang['strconfanalyzedatabase'] = 'Biztosan elemezni akarja β€ž%s” adatbΓ‘zis minden tΓ‘blΓ‘jΓ‘t?'; + $lang['strconfvacuumdatabase'] = 'Biztosan takarΓ­tani akarja β€ž%s” adatbΓ‘zis minden tΓ‘blΓ‘jΓ‘t?'; + $lang['strconfreindexdatabase'] = 'Biztosan indexelni akarja β€ž%s” adatbΓ‘zis minden tΓ‘blΓ‘jΓ‘t?'; + $lang['strconfclusterdatabase'] = 'Biztosan fΓΌrtΓΆzni akarja β€ž%s” adatbΓ‘zis minden tΓ‘blΓ‘jΓ‘t?'; + + // Views + $lang['strview'] = 'NΓ©zet'; + $lang['strviews'] = 'NΓ©zetek'; + $lang['strshowallviews'] = 'Minden nΓ©zetet megjelenΓ­t'; + $lang['strnoview'] = 'Nincs nΓ©zet.'; + $lang['strnoviews'] = 'Nincsenek nΓ©zetek.'; + $lang['strcreateview'] = 'NΓ©zetet teremt'; + $lang['strviewname'] = 'NΓ©zetnΓ©v'; + $lang['strviewneedsname'] = 'Meg kell adni a nΓ©zetnevet.'; + $lang['strviewneedsdef'] = 'Meg kell adni a nΓ©zet definΓ­ciΓ³jΓ‘t.'; + $lang['strviewneedsfields'] = 'Meg kell adnia a oszlopokat, amiket ki akar jelΓΆlni a nΓ©zetben.'; + $lang['strviewcreated'] = 'A nΓ©zet megteremtve.'; + $lang['strviewcreatedbad'] = 'Nem sikerΓΌlt megteremteni a nΓ©zetet.'; + $lang['strconfdropview'] = 'Biztosan tΓΆrΓΆlni kΓ­vΓ‘nja β€ž%s” nΓ©zetet?'; + $lang['strviewdropped'] = 'A nΓ©zet tΓΆrΓΆlve.'; + $lang['strviewdroppedbad'] = 'Nem sikerΓΌlt tΓΆrΓΆlni a nΓ©zetet.'; + $lang['strviewupdated'] = 'A nΓ©zet idΕ‘szerΕ±sΓ­tve.'; + $lang['strviewupdatedbad'] = 'Nem sikerΓΌlt idΕ‘szerΕ±sΓ­teni a nΓ©zetet.'; + $lang['strviewlink'] = 'HivatkozΓ‘sok'; + $lang['strviewconditions'] = 'TovΓ‘bbi feltΓ©telek'; + $lang['strcreateviewwiz'] = 'NΓ©zetet teremt varΓ‘zslΓ³val'; + $lang['strrenamedupfields'] = 'MΓ‘solt mezΕ‘ket nevez Γ‘t'; + $lang['strdropdupfields'] = 'MΓ‘solt mezΕ‘ket tΓΆrΓΆl'; + $lang['strerrordupfields'] = 'Hiba a mΓ‘solt mezΕ‘kben'; + $lang['strviewaltered'] = 'NΓ©zet megvΓ‘ltoztatva.'; + $lang['strviewalteredbad'] = 'Nem sikerΓΌlt megvΓ‘ltoztatni a nΓ©zetet.'; + $lang['strspecifyviewtodrop'] = 'Meg kell adni a tΓΆrlendΕ‘ nΓ©zetet'; + + // Sequences + $lang['strsequence'] = 'Sorozat'; + $lang['strsequences'] = 'Sorozatok'; + $lang['strshowallsequences'] = 'Minden sorozatot megjelenΓ­t'; + $lang['strnosequence'] = 'Nincs sorozat.'; + $lang['strnosequences'] = 'Nincsenek sorozatok.'; + $lang['strcreatesequence'] = 'Sorozatot teremt'; + $lang['strlastvalue'] = 'UtolsΓ³ Γ©rtΓ©k'; + $lang['strincrementby'] = 'NΓΆvekmΓ©ny'; + $lang['strstartvalue'] = 'KezdΕ‘ Γ©rtΓ©k'; + $lang['strrestartvalue'] = 'ÚjrakezdΕ‘ Γ©rtΓ©k'; + $lang['strmaxvalue'] = 'FelsΕ‘ korlΓ‘t'; + $lang['strminvalue'] = 'AlsΓ³ korlΓ‘t'; + $lang['strcachevalue'] = 'GyorstΓ‘r Γ©rtΓ©ke'; + $lang['strlogcount'] = 'SzΓ‘mlΓ‘lΓ³'; + $lang['strcancycle'] = 'KΓΆrbejΓ‘rhat?'; + $lang['striscalled'] = 'NΓΆvekedjΓ©k mielΕ‘tt visszatΓ©r a kΓΆvetkezΕ‘ Γ©rtΓ©kkel (is_called)?'; + $lang['strsequenceneedsname'] = 'Meg kell adni a sorozatnevet.'; + $lang['strsequencecreated'] = 'A sorozat megteremtve.'; + $lang['strsequencecreatedbad'] = 'Nem sikerΓΌlt megteremteni a sorozatot.'; + $lang['strconfdropsequence'] = 'Biztosan tΓΆrΓΆlni kΓ­vΓ‘nja β€ž%s” sorozatot?'; + $lang['strsequencedropped'] = 'A sorozat tΓΆrΓΆlve.'; + $lang['strsequencedroppedbad'] = 'Nem sikerΓΌlt tΓΆrΓΆlni a sorozatot.'; + $lang['strsequencerestart'] = 'Sorozat ΓΊjrakezdve.'; + $lang['strsequencerestartbad'] = 'Nem sikerΓΌlt ΓΊjrakezdeni a sorozatot.'; + $lang['strsequencereset'] = 'Sorozat nullΓ‘zΓ‘sa.'; + $lang['strsequenceresetbad'] = 'Nem sikerΓΌlt nullΓ‘zni a sorozatot.'; + $lang['strsequencealtered'] = 'Sorozat megvΓ‘ltoztatva.'; + $lang['strsequencealteredbad'] = 'Nem sikerΓΌlt megvΓ‘ltoztatni a sorozatot.'; + $lang['strsetval'] = 'Γ‰rtΓ©ket ad'; + $lang['strsequencesetval'] = 'Γ‰rtΓ©k megadva.'; + $lang['strsequencesetvalbad'] = 'Nem sikerΓΌlt az Γ©rtΓ©kadΓ‘s.'; + $lang['strnextval'] = 'NΓΆvekmΓ©ny'; + $lang['strsequencenextval'] = 'Sorozat megnΓΆvelve.'; + $lang['strsequencenextvalbad'] = 'Nem sikerΓΌlt megnΓΆvelni a sorozatot.'; + $lang['strspecifysequencetodrop'] = 'Meg kell adnia a tΓΆrlendΕ‘ sorozatot'; + + // Indexes + $lang['strindex'] = 'Index'; + $lang['strindexes'] = 'Indexek'; + $lang['strindexname'] = 'IndexnΓ©v'; + $lang['strshowallindexes'] = 'Minden indexet megjelenΓ­t'; + $lang['strnoindex'] = 'Nincs index.'; + $lang['strnoindexes'] = 'Nincsenek indexek.'; + $lang['strcreateindex'] = 'Indexet teremt'; + $lang['strtabname'] = 'TΓ‘blanΓ©v'; + $lang['strcolumnname'] = 'OszlopnΓ©v'; + $lang['strindexneedsname'] = 'Meg kell adni az index nevΓ©t.'; + $lang['strindexneedscols'] = 'Meg kell adni az oszlopok (Γ©rvΓ©nyes) szΓ‘mΓ‘t.'; + $lang['strindexcreated'] = 'Az index megteremtve'; + $lang['strindexcreatedbad'] = 'Nem sikerΓΌlt megteremteni az indexet.'; + $lang['strconfdropindex'] = 'Biztosan tΓΆrΓΆlni kΓ­vΓ‘nja β€ž%s” indexet?'; + $lang['strindexdropped'] = 'Az index tΓΆrΓΆlve.'; + $lang['strindexdroppedbad'] = 'Nem sikerΓΌlt tΓΆrΓΆlni az indexet.'; + $lang['strkeyname'] = 'KulcsnΓ©v'; + $lang['struniquekey'] = 'Egyedi kulcs'; + $lang['strprimarykey'] = 'ElsΕ‘dleges kulcs'; + $lang['strindextype'] = 'IndextΓ­pus'; + $lang['strtablecolumnlist'] = 'A tΓ‘bla oszlopai'; + $lang['strindexcolumnlist'] = 'Az index oszlopai'; + $lang['strclusteredgood'] = 'FΓΌrtΓΆzΓ©s kΓ©sz.'; + $lang['strclusteredbad'] = 'Nem sikerΓΌlt fΓΌrtΓΆzni.'; + $lang['strconcurrently'] = 'Egyszerre'; + $lang['strnoclusteravailable'] = 'A tΓ‘bla nincs indexre fΓΌrtΓΆzve.'; + + // Rules + $lang['strrules'] = 'SzabΓ‘lyok'; + $lang['strrule'] = 'SzabΓ‘ly'; + $lang['strshowallrules'] = 'Minden szabΓ‘lyt megjelenΓ­t'; + $lang['strnorule'] = 'Nincs szabΓ‘ly.'; + $lang['strnorules'] = 'Nincsenek szabΓ‘lyok.'; + $lang['strcreaterule'] = 'SzabΓ‘lyt teremt'; + $lang['strrulename'] = 'SzabΓ‘lynΓ©v'; + $lang['strruleneedsname'] = 'Meg kell adni a szabΓ‘lynevet.'; + $lang['strrulecreated'] = 'A szabΓ‘ly megteremtve.'; + $lang['strrulecreatedbad'] = 'Nem sikerΓΌlt megteremteni a szabΓ‘lyt.'; + $lang['strconfdroprule'] = 'Biztosan tΓΆrΓΆlni kΓ­vΓ‘nja β€ž%s” szabΓ‘lyt β€ž%s” tΓ‘blΓ‘ban?'; + $lang['strruledropped'] = 'A szabΓ‘ly tΓΆrΓΆlve.'; + $lang['strruledroppedbad'] = 'Nem sikerΓΌlt tΓΆrΓΆlni a szabΓ‘lyt.'; + + // Constraints + $lang['strconstraint'] = 'MegszorΓ­tΓ‘s'; + $lang['strconstraints'] = 'MegszorΓ­tΓ‘sok'; + $lang['strshowallconstraints'] = 'Minden megszorΓ­tΓ‘st megjelenΓ­t'; + $lang['strnoconstraints'] = 'Nincsenek megszorΓ­tΓ‘sok.'; + $lang['strcreateconstraint'] = 'MegszorΓ­tΓ‘st teremt'; + $lang['strconstraintcreated'] = 'A megszorΓ­tΓ‘s megteremtve.'; + $lang['strconstraintcreatedbad'] = 'Nem sikerΓΌlt megteremteni a megszorΓ­tΓ‘st.'; + $lang['strconfdropconstraint'] = 'Biztosan tΓΆrΓΆlni kΓ­vΓ‘nja β€ž%s” megszorΓ­tΓ‘st β€ž%s” tΓ‘blΓ‘ban?'; + $lang['strconstraintdropped'] = 'A megszorΓ­tΓ‘s tΓΆrΓΆlve.'; + $lang['strconstraintdroppedbad'] = 'Nem sikerΓΌlt tΓΆrΓΆlni a megszorΓ­tΓ‘st.'; + $lang['straddcheck'] = 'EllenΕ‘rzΓ©st ad hozzΓ‘'; + $lang['strcheckneedsdefinition'] = 'Meg kell adni az ellenΕ‘rzΓ©s definΓ­ciΓ³jΓ‘t.'; + $lang['strcheckadded'] = 'Az ellenΕ‘rzΓ©s hozzΓ‘adva.'; + $lang['strcheckaddedbad'] = 'Nem sikerΓΌlt hozzΓ‘adni az ellenΕ‘rzΓ©st.'; + $lang['straddpk'] = 'ElsΕ‘dleges kulcsot ad hozzΓ‘'; + $lang['strpkneedscols'] = 'LegalΓ‘bb egy oszlopot meg kell adni elsΕ‘dleges kulcsnak.'; + $lang['strpkadded'] = 'ElsΕ‘dleges kulcs hozzΓ‘adva.'; + $lang['strpkaddedbad'] = 'Nem sikerΓΌlt hozzΓ‘adni az elsΕ‘dleges kulcsot.'; + $lang['stradduniq'] = 'Egyedi kulcsot ad hozzΓ‘'; + $lang['struniqneedscols'] = 'LegalΓ‘bb egy oszlopot meg kell adni egyedi kulcsnak.'; + $lang['struniqadded'] = 'Az egyedi kulcs hozzΓ‘adva.'; + $lang['struniqaddedbad'] = 'Nem sikerΓΌlt hozzΓ‘adni az egyedi kulcsot.'; + $lang['straddfk'] = 'KΓΌlsΕ‘ kulcsot ad hozzΓ‘'; + $lang['strfkneedscols'] = 'LegalΓ‘bb egy oszlopot meg kell adni kΓΌlsΕ‘ kulcsnak.'; + $lang['strfkneedstarget'] = 'Meg kell adni a cΓ©ltΓ‘blΓ‘t a kΓΌlsΕ‘ kulcsnak.'; + $lang['strfkadded'] = 'A kΓΌlsΕ‘ kulcs hozzΓ‘adva.'; + $lang['strfkaddedbad'] = 'Nem sikerΓΌlt hozzΓ‘adni a kΓΌlsΕ‘ kulcsot.'; + $lang['strfktarget'] = 'CΓ©ltΓ‘bla'; + $lang['strfkcolumnlist'] = 'Kulcsoszlopok'; + $lang['strondelete'] = 'TΓ–RLΓ‰SKOR'; + $lang['stronupdate'] = 'VÁLTOZTATÁSKOR'; + + // Functions + $lang['strfunction'] = 'FΓΌggvΓ©ny'; + $lang['strfunctions'] = 'FΓΌggvΓ©nyek'; + $lang['strshowallfunctions'] = 'Minden fΓΌggvΓ©nyt megjelenΓ­t'; + $lang['strnofunction'] = 'Nincs fΓΌggvΓ©ny.'; + $lang['strnofunctions'] = 'Nincsenek fΓΌggvΓ©nyek.'; + $lang['strcreateplfunction'] = 'SQL/PL fΓΌggvΓ©nyt teremt'; + $lang['strcreateinternalfunction'] = 'BelsΕ‘ fΓΌggvΓ©nyt teremt'; + $lang['strcreatecfunction'] = 'C fΓΌggvΓ©nyt teremt'; + $lang['strfunctionname'] = 'FΓΌggvΓ©nynΓ©v'; + $lang['strreturns'] = 'VisszatΓ©rΕ‘ Γ©rtΓ©k'; + $lang['strproglanguage'] = 'Programnyelv'; + $lang['strfunctionneedsname'] = 'Meg kell adni a fΓΌggvΓ©ny nevΓ©t.'; + $lang['strfunctionneedsdef'] = 'Meg kell adni a fΓΌggvΓ©ny definΓ­ciΓ³jΓ‘t.'; + $lang['strfunctioncreated'] = 'A fΓΌggvΓ©ny megteremtve.'; + $lang['strfunctioncreatedbad'] = 'Nem sikerΓΌlt megteremteni a fΓΌggvΓ©nyt.'; + $lang['strconfdropfunction'] = 'Biztosan tΓΆrΓΆlni kΓ­vΓ‘nja β€ž%s” fΓΌggvΓ©nyt?'; + $lang['strfunctiondropped'] = 'A fΓΌggvΓ©ny tΓΆrΓΆlve.'; + $lang['strfunctiondroppedbad'] = 'Nem sikerΓΌlt tΓΆrΓΆlni a fΓΌggvΓ©nyt.'; + $lang['strfunctionupdated'] = 'A fΓΌggvΓ©ny idΕ‘szerΕ±sΓ­tve.'; + $lang['strfunctionupdatedbad'] = 'Nem sikerΓΌlt a fΓΌggvΓ©nyt idΕ‘szerΕ±sΓ­teni.'; + $lang['strobjectfile'] = 'CΓ©lkΓ³d fΓ‘jl'; + $lang['strlinksymbol'] = 'SzerkesztΕ‘ szimbΓ³lum'; + $lang['strarguments'] = 'Argumentumok'; + $lang['strargmode'] = 'MΓ³d'; + $lang['strargtype'] = 'TΓ­pus'; + $lang['strargadd'] = 'MΓ‘s argumentumot ad hozzΓ‘'; + $lang['strargremove'] = 'Argumentumot tΓΆrΓΆl'; + $lang['strargnoargs'] = 'E fΓΌggvΓ©nynek nincsenek argumentumai.'; + $lang['strargenableargs'] = 'E fΓΌggvΓ©nynek Γ‘tadott argumentumok engedΓ©lyezΓ©se.'; + $lang['strargnorowabove'] = 'Egy sornak kell lennie e fΓΆlΓΆtt.'; + $lang['strargnorowbelow'] = 'Egy sornak kell lennie ez alatt.'; + $lang['strargraise'] = 'MozgΓ‘s fel.'; + $lang['strarglower'] = 'MozgΓ‘s le.'; + $lang['strargremoveconfirm'] = 'Biztosan tΓΆrΓΆljΓΌk ez argumentumot? Ez VISSZAVONHATATLAN.'; + $lang['strfunctioncosting'] = 'FΓΌggvΓ©ny kΓΆltsΓ©gei'; + $lang['strresultrows'] = 'EredmΓ©ny sorok'; + $lang['strexecutioncost'] = 'VΓ©grehajtΓ‘s kΓΆltsΓ©ge'; + $lang['strspecifyfunctiontodrop'] = 'LegalΓ‘bb egy tΓΆrlendΕ‘ fΓΌggvΓ©nyt meg kell adni'; + + // Triggers + $lang['strtrigger'] = 'Ravasz'; + $lang['strtriggers'] = 'Ravaszok'; + $lang['strshowalltriggers'] = 'Minden ravaszt megjelenΓ­t'; + $lang['strnotrigger'] = 'Nincs ravasz.'; + $lang['strnotriggers'] = 'Nincsenek ravaszok.'; + $lang['strcreatetrigger'] = 'Ravaszt teremt'; + $lang['strtriggerneedsname'] = 'Meg kell adni a ravasz nevΓ©t.'; + $lang['strtriggerneedsfunc'] = 'Meg kell adni egy fΓΌggvΓ©ny nevΓ©t a ravaszhoz.'; + $lang['strtriggercreated'] = 'Ravasz megteremtve.'; + $lang['strtriggercreatedbad'] = 'Nem sikerΓΌlt megteremteni a ravaszt.'; + $lang['strconfdroptrigger'] = 'Biztosan tΓΆrΓΆlni kΓ­vΓ‘nja β€ž%s” ravaszt β€ž%s” tΓ‘blΓ‘ban?'; + $lang['strconfenabletrigger'] = 'Biztosan engedΓ©lyezzΓΌk β€ž%s” ravaszt β€ž%s” elemre?'; + $lang['strconfdisabletrigger'] = 'Biztosan letiltsuk β€ž%s” ravaszt β€ž%s” elemre?'; + $lang['strtriggerdropped'] = 'Ravasz tΓΆrΓΆlve.'; + $lang['strtriggerdroppedbad'] = 'Nem sikerΓΌlt tΓΆrΓΆlni a ravaszt.'; + $lang['strtriggerenabled'] = 'Ravasz engedΓ©lyezve.'; + $lang['strtriggerenabledbad'] = 'Nem sikerΓΌlt a ravaszt engedΓ©lyezni.'; + $lang['strtriggerdisabled'] = 'Ravasz letiltva.'; + $lang['strtriggerdisabledbad'] = 'Nem sikerΓΌlt a ravaszt letiltani.'; + $lang['strtriggeraltered'] = 'Ravasz megvΓ‘ltoztatva.'; + $lang['strtriggeralteredbad'] = 'Nem sikerΓΌlt megvΓ‘ltoztatni a triggert.'; + $lang['strforeach'] = 'Mindegyik'; + + // Types + $lang['strtype'] = 'TΓ­pus'; + $lang['strtypes'] = 'TΓ­pusok'; + $lang['strshowalltypes'] = 'Minden tΓ­pust megjelenΓ­t'; + $lang['strnotype'] = 'Nincs tΓ­pus.'; + $lang['strnotypes'] = 'Nincsenek tΓ­pusok.'; + $lang['strcreatetype'] = 'TΓ­pust teremt'; + $lang['strcreatecomptype'] = 'Γ–sszetett tΓ­pust teremt'; + $lang['strcreateenumtype'] = 'FelsorolΓ‘s tΓ­pust teremt'; + $lang['strtypeneedsfield'] = 'LegalΓ‘bb egy oszlopot meg kell adnia.'; + $lang['strtypeneedsvalue'] = 'LegalΓ‘bb egy Γ©rtΓ©ket meg kell adni.'; + $lang['strtypeneedscols'] = 'Γ‰rvΓ©nyes oszlopszΓ‘mot kell megadnia.'; + $lang['strtypeneedsvals'] = 'Γ‰rvΓ©nyes Γ©rtΓ©kszΓ‘mot kell megadni.'; + $lang['strinputfn'] = 'Beviteli fΓΌggvΓ©ny'; + $lang['stroutputfn'] = 'Kiviteli fΓΌggvΓ©ny'; + $lang['strpassbyval'] = 'Γ‰rtΓ©k szerinti Γ‘tadΓ‘s?'; + $lang['stralignment'] = 'IgazΓ­t'; + $lang['strelement'] = 'Elem'; + $lang['strdelimiter'] = 'HatΓ‘rolΓ³'; + $lang['strstorage'] = 'TΓ‘r'; + $lang['strfield'] = 'Oszlop'; + $lang['strnumfields'] = 'Oszlopok szΓ‘ma'; + $lang['strnumvalues'] = 'Γ‰rtΓ©kek szΓ‘ma'; + $lang['strtypeneedsname'] = 'TΓ­pusnevet kell megadni.'; + $lang['strtypeneedslen'] = 'Meg kell adni a tΓ­pus hosszΓ‘t.'; + $lang['strtypecreated'] = 'TΓ­pus megteremtve'; + $lang['strtypecreatedbad'] = 'Nem sikerΓΌlt megteremteni a tΓ­pust.'; + $lang['strconfdroptype'] = 'Biztosan tΓΆrΓΆlni kΓ­vΓ‘nja β€ž%s” tΓ­pust?'; + $lang['strtypedropped'] = 'TΓ­pus tΓΆrΓΆlve.'; + $lang['strtypedroppedbad'] = 'Nem sikerΓΌlt tΓΆrΓΆlni a tΓ­pust.'; + $lang['strflavor'] = 'Fajta'; + $lang['strbasetype'] = 'Alap'; + $lang['strcompositetype'] = 'Γ–sszetett'; + $lang['strpseudotype'] = 'Ál'; + $lang['strenum'] = 'FelsorolΓ‘s'; + $lang['strenumvalues'] = 'FelsorolΓ‘s Γ©rtΓ©kei'; + + // Schemas + $lang['strschema'] = 'SΓ©ma'; + $lang['strschemas'] = 'SΓ©mΓ‘k'; + $lang['strshowallschemas'] = 'Minden sΓ©mΓ‘t megjelenΓ­t'; + $lang['strnoschema'] = 'Nincs sΓ©ma.'; + $lang['strnoschemas'] = 'Nincsenek sΓ©mΓ‘k.'; + $lang['strcreateschema'] = 'SΓ©mΓ‘t teremt'; + $lang['strschemaname'] = 'SΓ©manΓ©v'; + $lang['strschemaneedsname'] = 'Meg kell adni a sΓ©manevet.'; + $lang['strschemacreated'] = 'A sΓ©ma megteremtve'; + $lang['strschemacreatedbad'] = 'Nem sikerΓΌlt a sΓ©mΓ‘t megteremteni.'; + $lang['strconfdropschema'] = 'Biztosan tΓΆrΓΆlni kΓ­vΓ‘nja β€ž%s” sΓ©mΓ‘t?'; + $lang['strschemadropped'] = 'A sΓ©ma tΓΆrΓΆlve.'; + $lang['strschemadroppedbad'] = 'Nem sikerΓΌlt a sΓ©mΓ‘t tΓΆrΓΆlni.'; + $lang['strschemaaltered'] = 'SΓ©ma megvΓ‘ltoztatva.'; + $lang['strschemaalteredbad'] = 'Nem sikerΓΌlt a sΓ©mΓ‘t megvΓ‘ltoztatni.'; + $lang['strsearchpath'] = 'SΓ©ma keresΓ©si ΓΊtvonala'; + $lang['strspecifyschematodrop'] = 'Meg kell adni a tΓΆrlendΕ‘ sΓ©mΓ‘t'; + + // Reports + + // Domains + $lang['strdomain'] = 'TartomΓ‘ny'; + $lang['strdomains'] = 'TartomΓ‘nyok'; + $lang['strshowalldomains'] = 'Minden tartomΓ‘nyt megjelenΓ­t'; + $lang['strnodomains'] = 'Nincsnek tartomΓ‘nyok.'; + $lang['strcreatedomain'] = 'TartomΓ‘nyt teremt'; + $lang['strdomaindropped'] = 'A tartomΓ‘ny tΓΆrΓΆlve.'; + $lang['strdomaindroppedbad'] = 'Nem sikerΓΌlt tΓΆrΓΆlni a tartomΓ‘nyt.'; + $lang['strconfdropdomain'] = 'Biztosan tΓΆrΓΆlni kΓ­vΓ‘nja β€ž%s” tartomΓ‘nyt?'; + $lang['strdomainneedsname'] = 'Meg kell adni a tartomΓ‘nynevet.'; + $lang['strdomaincreated'] = 'A tartomΓ‘ny megteremtve.'; + $lang['strdomaincreatedbad'] = 'Nem sikerΓΌlt megteremteni a tartomΓ‘nyt.'; + $lang['strdomainaltered'] = 'A tartomΓ‘ny megvΓ‘ltoztatva.'; + $lang['strdomainalteredbad'] = 'Nem sikerΓΌlt megvΓ‘ltoztatni a tartomΓ‘nyt.'; + + // Operators + $lang['stroperator'] = 'OperΓ‘tor'; + $lang['stroperators'] = 'OperΓ‘torok'; + $lang['strshowalloperators'] = 'Minden operΓ‘tort megjelenΓ­t'; + $lang['strnooperator'] = 'Nincs operΓ‘tor.'; + $lang['strnooperators'] = 'Nincsenek operΓ‘torok.'; + $lang['strcreateoperator'] = 'OperΓ‘tort teremt'; + $lang['strleftarg'] = 'Bal arg tΓ­pus'; + $lang['strrightarg'] = 'Jobb arg tΓ­pus'; + $lang['strcommutator'] = 'KommutΓ‘tor'; + $lang['strnegator'] = 'TagadΓ³'; + $lang['strrestrict'] = 'MegszorΓ­tΓ‘s'; + $lang['strjoin'] = 'Γ–sszekapcsolΓ‘s'; + $lang['strhashes'] = 'HasΓ­t'; + $lang['strmerges'] = 'Γ–sszefΓ©sΓΌl'; + $lang['strleftsort'] = 'BalrendezΓ©s'; + $lang['strrightsort'] = 'JobbrendezΓ©s'; + $lang['strlessthan'] = 'Kisebb mint'; + $lang['strgreaterthan'] = 'Nagyobb mint'; + $lang['stroperatorneedsname'] = 'Meg kell adni az operΓ‘tornevet.'; + $lang['stroperatorcreated'] = 'Az operΓ‘tor megteremtve'; + $lang['stroperatorcreatedbad'] = 'Nem sikerΓΌlt megteremteni az operΓ‘tort.'; + $lang['strconfdropoperator'] = 'Biztosan tΓΆrΓΆlni kΓ­vΓ‘nja β€ž%s” operΓ‘tort?'; + $lang['stroperatordropped'] = 'Az operΓ‘tor tΓΆrΓΆlve.'; + $lang['stroperatordroppedbad'] = 'Nem sikerΓΌlt tΓΆrΓΆlni az operΓ‘tort.'; + + // Casts + $lang['strcasts'] = 'Kasztok'; + $lang['strnocasts'] = 'Nincsenek kasztok.'; + $lang['strsourcetype'] = 'ForrΓ‘stΓ­pus'; + $lang['strtargettype'] = 'CΓ©ltΓ­pus'; + $lang['strimplicit'] = 'Implicit'; + $lang['strinassignment'] = 'Γ‰rtΓ©kadΓ‘sban'; + $lang['strbinarycompat'] = '(BinΓ‘risan kompatibilis)'; + + // Conversions + $lang['strconversions'] = 'ÁtalakΓ­tΓ‘sok'; + $lang['strnoconversions'] = 'Nincsenek Γ‘talakΓ­tΓ‘sok.'; + $lang['strsourceencoding'] = 'ForrΓ‘skΓ³dolΓ‘s'; + $lang['strtargetencoding'] = 'CΓ©lkΓ³dolΓ‘s'; + + // Languages + $lang['strlanguages'] = 'Nyelvek'; + $lang['strnolanguages'] = 'Nincsenek nyelvek.'; + $lang['strtrusted'] = 'Hiteles'; + + // Info + $lang['strnoinfo'] = 'Nincs elΓ©rhetΕ‘ informΓ‘ciΓ³.'; + $lang['strreferringtables'] = 'KapcsolΓ³dΓ³ tΓ‘blΓ‘k'; + $lang['strparenttables'] = 'SzΓΌlΕ‘tΓ‘blΓ‘k'; + $lang['strchildtables'] = 'GyerektΓ‘blΓ‘k'; + + // Aggregates + $lang['straggregate'] = 'AggregΓ‘lΓ‘s'; + $lang['straggregates'] = 'AggregΓ‘lΓ‘sok'; + $lang['strnoaggregates'] = 'Nincsenek aggregΓ‘lΓ‘sok.'; + $lang['stralltypes'] = '(Minden tΓ­pus)'; + $lang['strcreateaggregate'] = 'AggregΓ‘lΓ‘st teremt'; + $lang['straggrbasetype'] = 'BemenΕ‘ adattΓ­pus'; + $lang['straggrsfunc'] = 'ÁllapotΓ‘tmeneti fΓΌggvΓ©ny'; + $lang['straggrstype'] = 'ÁllapotΓ©rtΓ©k adattΓ­pusa'; + $lang['straggrffunc'] = 'VΓ©gsΕ‘ fΓΌggvΓ©ny'; + $lang['straggrinitcond'] = 'KezdΕ‘ feltΓ©tel'; + $lang['straggrsortop'] = 'RendezΕ‘ mΕ±velet'; + $lang['strconfdropaggregate'] = 'Biztosan tΓΆrΓΆljΓΌk β€ž%s” aggregΓ‘lΓ‘st?'; + $lang['straggregatedropped'] = 'AggregΓ‘lΓ‘s tΓΆrΓΆlve.'; + $lang['straggregatedroppedbad'] = 'Nem sikerΓΌlt tΓΆrΓΆlni az aggregΓ‘lΓ‘st.'; + $lang['straggraltered'] = 'AggregΓ‘lΓ‘s megvΓ‘ltoztatva.'; + $lang['straggralteredbad'] = 'Nem sikerΓΌlt az aggregΓ‘lΓ‘st megvΓ‘ltoztatni.'; + $lang['straggrneedsname'] = 'Meg kell adni az aggregΓ‘lΓ‘s nevΓ©t.'; + $lang['straggrneedsbasetype'] = 'Meg kell adni az aggregΓ‘lΓ‘s bemenΕ‘ adattΓ­pusΓ‘t.'; + $lang['straggrneedssfunc'] = 'Meg kell adni az aggregΓ‘lΓ‘s Γ‘llapotΓ‘tmeneti fΓΌggvΓ©nyΓ©nek nevΓ©t.'; + $lang['straggrneedsstype'] = 'Meg kell adni az aggregΓ‘lΓ‘s Γ‘llapotΓ©rtΓ©kΓ©nek adattΓ­pusΓ‘t.'; + $lang['straggrcreated'] = 'AggregΓ‘lΓ‘s megteremtve.'; + $lang['straggrcreatedbad'] = 'Nem sikerΓΌlt megteremteni az aggregΓ‘lΓ‘st.'; + $lang['straggrshowall'] = 'Minden aggregΓ‘lΓ‘s megjelenΓ­tΓ©se'; + + // Operator Classes + $lang['stropclasses'] = 'OperΓ‘tor-osztΓ‘lyok'; + $lang['strnoopclasses'] = 'Nincsenek operΓ‘tor-osztΓ‘lyok.'; + $lang['straccessmethod'] = 'HozzΓ‘fΓ©rΓ©s mΓ³dja'; + + // Stats and performance + $lang['strrowperf'] = 'SorteljesΓ­tmΓ©ny'; + $lang['strioperf'] = 'I/O-teljesΓ­tmΓ©ny'; + $lang['stridxrowperf'] = 'Indexsor-teljesΓ­tmΓ©ny'; + $lang['stridxioperf'] = 'Index-I/O-teljesΓ­tmΓ©ny'; + $lang['strpercent'] = '%'; + $lang['strsequential'] = 'SzekvenciΓ‘lis'; + $lang['strscan'] = 'KeresΓ©s'; + $lang['strread'] = 'OlvasΓ‘s'; + $lang['strfetch'] = 'LehΓ­vΓ‘s'; + $lang['strheap'] = 'Kupac'; + $lang['strtoast'] = 'TOAST'; + $lang['strtoastindex'] = 'TOAST Index'; + $lang['strcache'] = 'GyorstΓ‘r'; + $lang['strdisk'] = 'Lemez'; + $lang['strrows2'] = 'Sorok'; + + // Tablespaces + $lang['strtablespace'] = 'TΓ‘blahely'; + $lang['strtablespaces'] = 'TΓ‘blahelyek'; + $lang['strshowalltablespaces'] = 'Minden tΓ‘blahelyet megjelenΓ­t'; + $lang['strnotablespaces'] = 'Nincsenek tΓ‘blahelyek.'; + $lang['strcreatetablespace'] = 'TΓ‘blahelyet teremt'; + $lang['strlocation'] = 'Hely'; + $lang['strtablespaceneedsname'] = 'Nevet kell adnia a tΓ‘blahelynek.'; + $lang['strtablespaceneedsloc'] = 'Meg kell adnia egy mappΓ‘t, ahol a tΓ‘blahelyet teremti.'; + $lang['strtablespacecreated'] = 'TΓ‘blahely teremtve.'; + $lang['strtablespacecreatedbad'] = 'Nem sikerΓΌlt tΓ‘blahelyet teremteni.'; + $lang['strconfdroptablespace'] = 'Biztosan ki akarja dobni β€ž%s” tΓ‘blahelyet?'; + $lang['strtablespacedropped'] = 'TΓ‘blahely kidobva.'; + $lang['strtablespacedroppedbad'] = 'Nem sikerΓΌlt kidobni a tΓ‘blahelyet.'; + $lang['strtablespacealtered'] = 'TΓ‘blahely megvΓ‘ltoztatva.'; + $lang['strtablespacealteredbad'] = 'Nem sikerΓΌlt megvΓ‘ltoztatni a tΓ‘blahelyet.'; + + // Miscellaneous + $lang['strtopbar'] = '%s fut %s:%s cΓ­men β€” Γ–n β€ž%s” nΓ©ven jelentkezett be.'; + $lang['strtimefmt'] = 'Y.m.d. H:i'; + $lang['strhelp'] = 'SΓΊgΓ³'; + $lang['strhelpicon'] = '?'; + $lang['strhelppagebrowser'] = 'SΓΊgΓ³lap bΓΆngΓ©szΕ‘'; + $lang['strselecthelppage'] = 'SΓΊgΓ³lapot vΓ‘laszt'; + $lang['strinvalidhelppage'] = 'Γ‰rvΓ©nytelen sΓΊgΓ³lap.'; + $lang['strlogintitle'] = 'BelΓ©pett %s helyre'; + $lang['strlogoutmsg'] = 'KilΓ©pett %s helyrΕ‘l'; + $lang['strloading'] = 'BetΓΆltΓΆk...'; + $lang['strerrorloading'] = 'BetΓΆltΓ©si hiba'; + $lang['strclicktoreload'] = 'Kattintson az ΓΊjratΓΆltΓ©shez'; + + // Autovacuum + $lang['strautovacuum'] = 'Γ–nmΕ±kΓΆdΕ‘ takarΓ­tΓ‘s'; + $lang['strturnedon'] = 'Bekapcsolva'; + $lang['strturnedoff'] = 'Kikapcsolva'; + $lang['strenabled'] = 'EngedΓ©lyezve'; + $lang['strnovacuumconf'] = 'Nem talΓ‘ltam ΓΆnmΕ±kΓΆdΕ‘ takarΓ­tΓ‘st beΓ‘llΓ­tva.'; + $lang['strvacuumbasethreshold'] = 'TakarΓ­tΓ‘s alap kΓΌszbΓ©rtΓ©ke'; + $lang['strvacuumscalefactor'] = 'TakarΓ­tΓ‘s mΓ©retezΕ‘ tΓ©nyezΕ‘je'; + $lang['stranalybasethreshold'] = 'Alap kΓΌszΓΆbΓ©rtΓ©ket elemez'; + $lang['stranalyzescalefactor'] = 'MΓ©retezΕ‘ tΓ©nyezΕ‘t elemez'; + $lang['strvacuumcostdelay'] = 'TakarΓ­tΓ‘s kΓΆltsΓ©gΓ©nek kΓ©sΓ©se'; + $lang['strvacuumcostlimit'] = 'TakarΓ­tΓ‘s kΓΆltsΓ©gΓ©nek korlΓ‘tja'; + $lang['strvacuumpertable'] = 'Γ–nmΕ±kΓΆdΕ‘ takarΓ­tΓ‘s beΓ‘llΓ­tΓ‘sa tΓ‘blΓ‘nkΓ©nt'; + $lang['straddvacuumtable'] = 'Γ–nmΕ±kΓΆdΕ‘ takarΓ­tΓ‘st Γ‘llΓ­t be egy tΓ‘blΓ‘ra'; + $lang['streditvacuumtable'] = 'Γ–nmΕ±kΓΆdΕ‘ takarΓ­tΓ‘st szerkeszt %s tΓ‘blΓ‘ra'; + $lang['strdelvacuumtable'] = 'TΓΆrli az ΓΆnmΕ±kΓΆdΕ‘ takarΓ­tΓ‘st %s tΓ‘blΓ‘rΓ³l?'; + $lang['strvacuumtablereset'] = 'Az ΓΆnmΕ±kΓΆdΕ‘ takarΓ­tΓ‘st %s tΓ‘blΓ‘ra visszaΓ‘llΓ­tja az alap Γ©rtΓ©kekre'; + $lang['strdelvacuumtablefail'] = 'Nem sikerΓΌlt tΓΆrΓΆlni az ΓΆnmΕ±kΓΆdΕ‘ takarΓ­tΓ‘st %s tΓ‘blΓ‘rΓ³l'; + $lang['strsetvacuumtablesaved'] = 'Γ–nmΕ±kΓΆdΕ‘ takarΓ­tΓ‘s %s tΓ‘blΓ‘ra mentve.'; + $lang['strsetvacuumtablefail'] = 'Γ–nmΕ±kΓΆdΕ‘ takarΓ­tΓ‘st %s tΓ‘blΓ‘ra nem sikerΓΌlt beΓ‘llΓ­tani.'; + $lang['strspecifydelvacuumtable'] = 'Meg kell adni a tΓ‘blΓ‘t, amirΕ‘l tΓΆrΓΆlni akarja az ΓΆnmΕ±kΓΆdΕ‘ takarΓ­tΓ‘s paramΓ©tereit.'; + $lang['strspecifyeditvacuumtable'] = 'Meg kell adni a tΓ‘blΓ‘t, amin szerkeszteni akarja az ΓΆnmΕ±kΓΆdΕ‘ takarΓ­tΓ‘s paramΓ©tereit.'; + $lang['strnotdefaultinred'] = 'A nem alap Γ©rtΓ©kek pirosak.'; + + // Table-level Locks + $lang['strlocks'] = 'ZΓ‘rak'; + $lang['strtransaction'] = 'TranzakciΓ³ AZ'; + $lang['strvirtualtransaction'] = 'LΓ‘tszΓ³lagos tranzakciΓ³ AZ'; + $lang['strprocessid'] = 'Folyamat AZ'; + $lang['strmode'] = 'ZΓ‘rmΓ³d'; + $lang['strislockheld'] = 'ZΓ‘r tartva?'; + + // Prepared transactions + $lang['strpreparedxacts'] = 'ElΕ‘kΓ©szΓ­tett tranzakciΓ³k'; + $lang['strxactid'] = 'TranzakciΓ³ AZ'; + $lang['strgid'] = 'GlobΓ‘lis AZ'; + + // Fulltext search + $lang['strfulltext'] = 'Teljes szΓΆvegben keres'; + $lang['strftsconfig'] = 'TSzK ΓΆsszeΓ‘llΓ­tΓ‘s'; + $lang['strftsconfigs'] = 'Γ–sszeΓ‘llΓ­tΓ‘sok'; + $lang['strftscreateconfig'] = 'TSzK ΓΆsszeΓ‘llΓ­tΓ‘st teremt'; + $lang['strftscreatedict'] = 'SzΓ³tΓ‘rt teremt'; + $lang['strftscreatedicttemplate'] = 'SzΓ³tΓ‘rsablont teremt'; + $lang['strftscreateparser'] = 'ElemzΕ‘t teremt'; + $lang['strftsnoconfigs'] = 'Nincs TSzK ΓΆsszeΓ‘llΓ­tΓ‘s.'; + $lang['strftsconfigdropped'] = 'TSzK ΓΆsszeΓ‘llΓ­tΓ‘s tΓΆrΓΆlve.'; + $lang['strftsconfigdroppedbad'] = 'Nem sikerΓΌlt tΓΆrΓΆlni a TSzK ΓΆsszeΓ‘llΓ­tΓ‘st.'; + $lang['strconfdropftsconfig'] = 'Biztosan tΓΆrΓΆljΓΌk β€ž%s” TSzK ΓΆsszeΓ‘llΓ­tΓ‘st?'; + $lang['strconfdropftsdict'] = 'Biztosan tΓΆrΓΆljΓΌk β€ž%s” TSzK szΓ³tΓ‘rt?'; + $lang['strconfdropftsmapping'] = 'Biztosan tΓΆrΓΆljΓΌk β€ž%s” hozzΓ‘rendelΓ©st β€ž%s” TSzK ΓΆsszeΓ‘llΓ­tΓ‘sbΓ³l?'; + $lang['strftstemplate'] = 'Sablon'; + $lang['strftsparser'] = 'ElemzΕ‘'; + $lang['strftsconfigneedsname'] = 'Meg kell adni a TSzK ΓΆsszeΓ‘llΓ­tΓ‘s nevΓ©t.'; + $lang['strftsconfigcreated'] = 'TSzK ΓΆsszeΓ‘llΓ­tΓ‘s megteremtve.'; + $lang['strftsconfigcreatedbad'] = 'Nem sikerΓΌlt megteremteni a TSzK ΓΆsszeΓ‘llΓ­tΓ‘st.'; + $lang['strftsmapping'] = 'HozzΓ‘rendel'; + $lang['strftsdicts'] = 'SzΓ³tΓ‘rak'; + $lang['strftsdict'] = 'SzΓ³tΓ‘r'; + $lang['strftsemptymap'] = 'Üres hozzΓ‘rendelΓ©s a TSzK ΓΆsszeΓ‘llΓ­tΓ‘sban.'; + $lang['strftsconfigaltered'] = 'TSzK ΓΆsszeΓ‘llΓ­tΓ‘s megvΓ‘ltoztatva.'; + $lang['strftsconfigalteredbad'] = 'Nem sikerΓΌlt a TSzK ΓΆsszeΓ‘llΓ­tΓ‘st megvΓ‘ltoztatni.'; + $lang['strftsconfigmap'] = 'TSzK ΓΆsszeΓ‘llΓ­tΓ‘s hozzΓ‘rendelΓ©se'; + $lang['strftsparsers'] = 'TSzK elemzΕ‘k'; + $lang['strftsnoparsers'] = 'Nincs TSzK elemzΕ‘.'; + $lang['strftsnodicts'] = 'Nincs TSzK szΓ³tΓ‘r.'; + $lang['strftsdictcreated'] = 'TSzK szΓ³tΓ‘r megteremtve.'; + $lang['strftsdictcreatedbad'] = 'Nem sikerΓΌlt a TSzK szΓ³tΓ‘rt megteremteni.'; + $lang['strftslexize'] = 'SzΓ³kincs'; + $lang['strftsinit'] = 'KezdΓ©s'; + $lang['strftsoptionsvalues'] = 'OpciΓ³k Γ©s Γ©rtΓ©kek'; + $lang['strftsdictneedsname'] = 'Meg kell adni a TSzK szΓ³tΓ‘r nevΓ©t.'; + $lang['strftsdictdropped'] = 'TSzK szΓ³tΓ‘r tΓΆrΓΆlve.'; + $lang['strftsdictdroppedbad'] = 'Nem sikerΓΌlt a TSzK szΓ³tΓ‘rt tΓΆrΓΆlni.'; + $lang['strftsdictaltered'] = 'TSzK szΓ³tΓ‘r megvΓ‘ltoztatva.'; + $lang['strftsdictalteredbad'] = 'Nem sikerΓΌlt a TSzK szΓ³tΓ‘rt megvΓ‘ltoztatni.'; + $lang['strftsaddmapping'] = 'Új hozzΓ‘rendelΓ©s hozzΓ‘adΓ‘sa'; + $lang['strftsspecifymappingtodrop'] = 'Meg kell adni legalΓ‘bb egy tΓΆrlendΕ‘ TSzK hozzΓ‘rendelΓ©st.'; + $lang['strftsspecifyconfigtoalter'] = 'Meg kell adni a megvΓ‘ltoztatandΓ³ TSzK ΓΆsszeΓ‘llΓ­tΓ‘st'; + $lang['strftsmappingdropped'] = 'TSzK hozzΓ‘rendelΓ©s tΓΆrΓΆlve.'; + $lang['strftsmappingdroppedbad'] = 'Nem sikerΓΌlt a TSzK hozzΓ‘rendelΓ©st tΓΆrΓΆlni.'; + $lang['strftsnodictionaries'] = 'Nincs szΓ³tΓ‘r.'; + $lang['strftsmappingaltered'] = 'TSzK hozzΓ‘rendelΓ©s megvΓ‘ltoztatva.'; + $lang['strftsmappingalteredbad'] = 'Nem sikerΓΌlt a TSzK hozzΓ‘rendelΓ©st megvΓ‘ltoztatni.'; + $lang['strftsmappingadded'] = 'TSzK hozzΓ‘rendelΓ©s hozzΓ‘adva.'; + $lang['strftsmappingaddedbad'] = 'Nem sikerΓΌlt hozzΓ‘adni a TSzK hozzΓ‘rendelΓ©shez.'; + $lang['strftsmappingdropped'] = 'TSzK hozzΓ‘rendelΓ©s tΓΆrΓΆlve.'; + $lang['strftsmappingdroppedbad'] = 'Nem sikerΓΌlt a TSzK hozzΓ‘rendelΓ©st tΓΆrΓΆlni.'; + $lang['strftstabconfigs'] = 'Γ–sszeΓ‘llΓ­tΓ‘sok'; + $lang['strftstabdicts'] = 'SzΓ³tΓ‘rak'; + $lang['strftstabparsers'] = 'ElemzΕ‘k'; + $lang['strftscantparsercopy'] = 'Nem Γ‘llΓ­that be egyΓΌtt elemzΕ‘t Γ©s sablont szΓΆvegkeresΕ‘ beΓ‘llΓ­tΓ‘s kΓΆzben.'; + + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/italian.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/italian.php new file mode 100644 index 00000000..3f2675a4 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/italian.php @@ -0,0 +1,720 @@ +'; + $lang['strfirst'] = '<< Primo'; + $lang['strlast'] = 'Ultimo >>'; + $lang['strfailed'] = 'Fallito'; + $lang['strcreate'] = 'Crea'; + $lang['strcreated'] = 'Creato'; + $lang['strcomment'] = 'Commento'; + $lang['strlength'] = 'Lunghezza'; + $lang['strdefault'] = 'Default'; + $lang['stralter'] = 'Modifica'; + $lang['strok'] = 'OK'; + $lang['strcancel'] = 'Annulla'; + $lang['strac'] = 'Abilita autocompletamento'; + $lang['strsave'] = 'Salva'; + $lang['strreset'] = 'Reset'; + $lang['strinsert'] = 'Inserisci'; + $lang['strselect'] = 'Seleziona'; + $lang['strdelete'] = 'Cancella'; + $lang['strupdate'] = 'Aggiorna'; + $lang['strreferences'] = 'Riferimenti'; + $lang['stryes'] = 'Si'; + $lang['strno'] = 'No'; + $lang['strtrue'] = 'TRUE'; + $lang['strfalse'] = 'FALSE'; + $lang['stredit'] = 'Modifica'; + $lang['strcolumn'] = 'Colonna'; + $lang['strcolumns'] = 'Colonne'; + $lang['strrows'] = 'riga(ghe)'; + $lang['strrowsaff'] = 'riga(ghe) interessata(e).'; + $lang['strobjects'] = 'oggetto(i)'; + $lang['strback'] = 'Indietro'; + $lang['strqueryresults'] = 'Risultato Query'; + $lang['strshow'] = 'Mostra'; + $lang['strempty'] = 'Svuota'; + $lang['strlanguage'] = 'Lingua'; + $lang['strencoding'] = 'Codifica'; + $lang['strvalue'] = 'Valore'; + $lang['strunique'] = 'Univoco'; + $lang['strprimary'] = 'Primaria'; + $lang['strexport'] = 'Esporta'; + $lang['strimport'] = 'Importa'; + $lang['strallowednulls'] = 'Caratteri NULL consentiti'; + $lang['strbackslashn'] = '\N'; + $lang['stremptystring'] = 'Stringa vuota'; + $lang['strsql'] = 'SQL'; + $lang['stradmin'] = 'Amministratore'; + $lang['strvacuum'] = 'Vacuum'; + $lang['stranalyze'] = 'Analizza'; + $lang['strclusterindex'] = 'Clusterizza'; + $lang['strclustered'] = 'Clusterizzato?'; + $lang['strreindex'] = 'Reindicizza'; + $lang['strexecute'] = 'Esegui'; + $lang['stradd'] = 'Aggiungi'; + $lang['strevent'] = 'Evento'; + $lang['strwhere'] = 'Condizione'; + $lang['strinstead'] = 'Invece fai'; + $lang['strwhen'] = 'Quando'; + $lang['strformat'] = 'Formato'; + $lang['strdata'] = 'Dati'; + $lang['strconfirm'] = 'Conferma'; + $lang['strexpression'] = 'Espressione'; + $lang['strellipsis'] = '...'; + $lang['strseparator'] = ': '; + $lang['strexpand'] = 'Espandi'; + $lang['strcollapse'] = 'Raccogli'; + $lang['strexplain'] = 'Explain'; + $lang['strexplainanalyze'] = 'Explain Analyze'; + $lang['strfind'] = 'Trova'; + $lang['stroptions'] = 'Opzioni'; + $lang['strrefresh'] = 'Ricarica'; + $lang['strdownload'] = 'Scarica'; + $lang['strdownloadgzipped'] = 'Scarica compresso con gzip'; + $lang['strinfo'] = 'Informazioni'; + $lang['stroids'] = 'OIDs'; + $lang['stradvanced'] = 'Avanzato'; + $lang['strvariables'] = 'Variabili'; + $lang['strprocess'] = 'Processo'; + $lang['strprocesses'] = 'Processi'; + $lang['strsetting'] = 'Valore'; + $lang['streditsql'] = 'Modifica SQL'; + $lang['strruntime'] = 'Tempo di esecuzione totale: %s ms'; + $lang['strpaginate'] = 'Dividi in pagine i risultati'; + $lang['struploadscript'] = 'oppure esegui l\'upload di uno script SQL:'; + $lang['strstarttime'] = 'Inizio'; + $lang['strfile'] = 'File'; + $lang['strfileimported'] = 'File importato.'; + $lang['strtrycred'] = 'Usa queste credenziali per tutti i server'; + $lang['stractionsonmultiplelines'] = 'Azioni su righe multiple'; + $lang['strselectall'] = 'Seleziona tutti'; + $lang['strunselectall'] = 'Deseleziona tutti'; + + // Database sizes - Dimensioni dei database + $lang['strsize'] = 'Dimensione'; + $lang['strbytes'] = 'byte'; + $lang['strkb'] = 'kB'; + $lang['strmb'] = 'MB'; + $lang['strgb'] = 'GB'; + $lang['strtb'] = 'TB'; + + // Error handling - Gestione degli errori + $lang['strnoframes'] = 'Questa applicazione funziona al meglio utilizzando un browser che supporti i frame, ma puΓ² essere usata senza frame seguendo il link sottostante.'; + $lang['strnoframeslink'] = 'Usa senza frame'; + $lang['strbadconfig'] = 'Il file config.inc.php Γ¨ obsoleto. È necessario rigenerarlo utilizzando il nuovo file config.inc.php-dist .'; + $lang['strnotloaded'] = 'La tua installazione di PHP non supporta PostgreSQL. È necessario ricompilare PHP usando l\'opzione di configurazione --with-pgsql .'; + $lang['strpostgresqlversionnotsupported'] = 'Versione di PostgreSQL non supportata. È necessario aggiornarlo alla versione %s o successiva.'; + $lang['strbadschema'] = 'Schema specificato non valido.'; + $lang['strbadencoding'] = 'Impostazione della codifica del client nel database fallito.'; + $lang['strsqlerror'] = 'Errore SQL:'; + $lang['strinstatement'] = 'Nel costrutto:'; + $lang['strinvalidparam'] = 'Parametri di script non validi.'; + $lang['strnodata'] = 'Nessuna riga trovata.'; + $lang['strnoobjects'] = 'Nessun oggetto trovato.'; + $lang['strrownotunique'] = 'Nessun identificatore univoco per questa riga.'; + $lang['strnouploads'] = 'L\'upload dei file Γ¨ disabilitato.'; + $lang['strimporterror'] = 'Errore durante l\'import.'; + $lang['strimporterror-fileformat'] = 'Errore durante l\'import: determinazione automatica del formato del file fallita.'; + $lang['strimporterrorline'] = 'Errore durante l\'import alla linea %s.'; + $lang['strimporterrorline-badcolumnnum'] = 'Errore durante l\'import alla linea %s: la linea non possiede il numero corretto di colonne.'; + $lang['strimporterror-uploadedfile'] = 'Errore durante l\'import: non Γ¨ stato possibile caricare il file sul server'; + $lang['strcannotdumponwindows'] = 'Il dump di nomi complessi di tabelle o schemi sotto Windows non Γ¨ supportato.'; + $lang['strinvalidserverparam'] = 'Tentativo di connessione al server con parametri non validi, Γ¨ possibile che qualcuno stia cercando di forzare il sistema.'; + + // Tables - Tabelle + $lang['strtable'] = 'Tabella'; + $lang['strtables'] = 'Tabelle'; + $lang['strshowalltables'] = 'Mostra tutte le tabelle'; + $lang['strnotables'] = 'Nessuna tabella trovata.'; + $lang['strnotable'] = 'Tabella non trovata.'; + $lang['strcreatetable'] = 'Crea tabella'; + $lang['strtablename'] = 'Nome tabella'; + $lang['strtableneedsname'] = 'È necessario specificare un nome per la tabella.'; + $lang['strtableneedsfield'] = 'È necessario specificare almeno un campo.'; + $lang['strtableneedscols'] = 'È necessario specificare un numero di colonne valido.'; + $lang['strtablecreated'] = 'Tabella creata.'; + $lang['strtablecreatedbad'] = 'Creazione della tabella fallita.'; + $lang['strconfdroptable'] = 'Eliminare la tabella "%s"?'; + $lang['strtabledropped'] = 'Tabella eliminata.'; + $lang['strtabledroppedbad'] = 'Eliminazione della tabella fallita.'; + $lang['strconfemptytable'] = 'Svuotare la tabella "%s"?'; + $lang['strtableemptied'] = 'Tabella svuotata.'; + $lang['strtableemptiedbad'] = 'Svuotamento della tabella fallito.'; + $lang['strinsertrow'] = 'Inserisci riga'; + $lang['strrowinserted'] = 'Riga inserita.'; + $lang['strrowinsertedbad'] = 'Inserimento della riga fallito.'; + $lang['strrowduplicate'] = 'Inserimento della riga fallito, tentativo di eseguire un inserimento duplicato.'; + $lang['streditrow'] = 'Modifica riga'; + $lang['strrowupdated'] = 'Riga aggiornata.'; + $lang['strrowupdatedbad'] = 'Aggiornamento della riga fallito.'; + $lang['strdeleterow'] = 'Cancella riga'; + $lang['strconfdeleterow'] = 'Cancellare questa riga?'; + $lang['strrowdeleted'] = 'Riga cancellata.'; + $lang['strrowdeletedbad'] = 'Cancellazione della riga fallita.'; + $lang['strinsertandrepeat'] = 'Inserisci e ripeti'; + $lang['strnumcols'] = 'Numero di colonne'; + $lang['strcolneedsname'] = 'È necessario specificare un nome per la colonna'; + $lang['strselectallfields'] = 'Seleziona tutti i campi'; + $lang['strselectneedscol'] = 'È necessario scegliere almeno una colonna.'; + $lang['strselectunary'] = 'Gli operatori unari non possono avere un valore.'; + $lang['strcolumnaltered'] = 'Colonna modificata.'; + $lang['strcolumnalteredbad'] = 'Modifica della colonna fallita.'; + $lang['strconfdropcolumn'] = 'Eliminare la colonna "%s" dalla tabella "%s"?'; + $lang['strcolumndropped'] = 'Colonna eliminata.'; + $lang['strcolumndroppedbad'] = 'Eliminazione della colonna fallita.'; + $lang['straddcolumn'] = 'Aggiungi colonna'; + $lang['strcolumnadded'] = 'Colonna aggiunta.'; + $lang['strcolumnaddedbad'] = 'Aggiunta della colonna fallita.'; + $lang['strcascade'] = 'CASCADE'; + $lang['strtablealtered'] = 'Tabella modificata.'; + $lang['strtablealteredbad'] = 'Modifica della tabella fallita.'; + $lang['strdataonly'] = 'Solo i dati'; + $lang['strstructureonly'] = 'Solo la struttura'; + $lang['strstructureanddata'] = 'Struttura e dati'; + $lang['strtabbed'] = 'Tabulato'; + $lang['strauto'] = 'Auto'; + $lang['strconfvacuumtable'] = 'Effettuare il vacuum su "%s"?'; + $lang['strestimatedrowcount'] = 'Numero stimato di righe'; + $lang['strspecifytabletoanalyze'] = 'È necessario specificare almeno una tabella da analizzare'; + + // Colonne - Columns + $lang['strcolprop'] = 'ProprietΓ  della colonna'; + + // Users - Utenti + $lang['struser'] = 'Utente'; + $lang['strusers'] = 'Utenti'; + $lang['strusername'] = 'Username'; + $lang['strpassword'] = 'Password'; + $lang['strsuper'] = 'Superuser?'; + $lang['strcreatedb'] = 'PuΓ² creare DB?'; + $lang['strexpires'] = 'Scadenza'; + $lang['strsessiondefaults'] = 'Defaults della sessione'; + $lang['strnousers'] = 'Nessun utente trovato'; + $lang['struserupdated'] = 'Utente aggiornato.'; + $lang['struserupdatedbad'] = 'Aggiornamento utente fallito.'; + $lang['strshowallusers'] = 'Mostra tutti gli utenti'; + $lang['strcreateuser'] = 'Crea utente'; + $lang['struserneedsname'] = 'È necessario specificare un nome per l\'utente.'; + $lang['strusercreated'] = 'Utente creato.'; + $lang['strusercreatedbad'] = 'Creazione dell\'utente fallita.'; + $lang['strconfdropuser'] = 'Eliminare l\'utente "%s"?'; + $lang['struserdropped'] = 'Utente eliminato.'; + $lang['struserdroppedbad'] = 'Eliminazione dell\'utente fallita.'; + $lang['straccount'] = 'Account'; + $lang['strchangepassword'] = 'Modifica password'; + $lang['strpasswordchanged'] = 'Password modificata.'; + $lang['strpasswordchangedbad'] = 'Modifica della password fallita.'; + $lang['strpasswordshort'] = 'La password Γ¨ troppo corta.'; + $lang['strpasswordconfirm'] = 'Le due password non coincidono.'; + + // Groups - Gruppi + $lang['strgroup'] = 'Gruppo'; + $lang['strgroups'] = 'Gruppi'; + $lang['strshowallgroups'] = 'Mostra tutti i gruppi'; + $lang['strnogroup'] = 'Gruppo non trovato.'; + $lang['strnogroups'] = 'Nessun gruppo trovato.'; + $lang['strcreategroup'] = 'Crea gruppo'; + $lang['strgroupneedsname'] = 'È necessario specificare un nome per il gruppo.'; + $lang['strgroupcreated'] = 'Gruppo creato.'; + $lang['strgroupcreatedbad'] = 'Creazione del gruppo fallita.'; + $lang['strconfdropgroup'] = 'Eliminare il gruppo "%s"?'; + $lang['strgroupdropped'] = 'Gruppo eliminato.'; + $lang['strgroupdroppedbad'] = 'Eliminazione del gruppo fallita.'; + $lang['strmembers'] = 'Membri'; + $lang['strmemberof'] = 'Membro di'; + $lang['stradminmembers'] = 'Membri amministratore'; + $lang['straddmember'] = 'Aggiungi membro'; + $lang['strmemberadded'] = 'Membro aggiunto.'; + $lang['strmemberaddedbad'] = 'Aggiunta del membro fallita.'; + $lang['strdropmember'] = 'Elimina membro'; + $lang['strconfdropmember'] = 'Eliminare il membro "%s" dal gruppo "%s"?'; + $lang['strmemberdropped'] = 'Membro eliminato.'; + $lang['strmemberdroppedbad'] = 'Eliminazione del membro fallita.'; + + // Ruoli - Roles + $lang['strrole'] = 'Ruolo'; + $lang['strroles'] = 'Ruoli'; + $lang['strshowallroles'] = 'Mostra tutti i ruoli'; + $lang['strnoroles'] = 'Nessun ruolo trovato.'; + $lang['strinheritsprivs'] = 'Eredita i privilegi?'; + $lang['strcreaterole'] = 'Crea ruolo'; + $lang['strcancreaterole'] = 'PuΓ² creare ruoli?'; + $lang['strrolecreated'] = 'Ruolo creato.'; + $lang['strrolecreatedbad'] = 'Creazione del ruolo fallita.'; + $lang['strrolealtered'] = 'Ruolo modificato.'; + $lang['strrolealteredbad'] = 'Modifica del ruolo fallita.'; + $lang['strcanlogin'] = 'PuΓ² effettuare login?'; + $lang['strconnlimit'] = 'Limite alle connessioni'; + $lang['strdroprole'] = 'Elimina ruolo'; + $lang['strconfdroprole'] = 'Eliminare il ruolo "%s"?'; + $lang['strroledropped'] = 'Ruolo eliminato.'; + $lang['strroledroppedbad'] = 'Eliminazione del ruolo fallita.'; + $lang['strnolimit'] = 'Nessun limite'; + $lang['strnever'] = 'Mai'; + $lang['strroleneedsname'] = 'È necessario specificare un nome per il ruolo.'; + + // Privileges - Privilegi + $lang['strprivilege'] = 'Privilegio'; + $lang['strprivileges'] = 'Privilegi'; + $lang['strnoprivileges'] = 'Questo oggetto di default ha i privilegi del proprietario.'; + $lang['strgrant'] = 'Concedi'; + $lang['strrevoke'] = 'Revoca'; + $lang['strgranted'] = 'Privilegi concessi.'; + $lang['strgrantfailed'] = 'Concessione dei privilegi fallita.'; + $lang['strgrantbad'] = 'È necessario specificare almeno un utente o gruppo ed almeno un privilegio.'; + $lang['strgrantor'] = 'Concedente'; + $lang['strasterisk'] = '*'; + + // Databases - Database + $lang['strdatabase'] = 'Database'; + $lang['strdatabases'] = 'Database'; + $lang['strshowalldatabases'] = 'Mostra tutti i database'; + $lang['strnodatabases'] = 'Nessun database trovato.'; + $lang['strcreatedatabase'] = 'Crea database'; + $lang['strdatabasename'] = 'Nome del database'; + $lang['strdatabaseneedsname'] = 'È necessario specificare un nome per il database.'; + $lang['strdatabasecreated'] = 'Database creato.'; + $lang['strdatabasecreatedbad'] = 'Creazione del database fallita.'; + $lang['strconfdropdatabase'] = 'Eliminare il database "%s"?'; + $lang['strdatabasedropped'] = 'Database eliminato.'; + $lang['strdatabasedroppedbad'] = 'Eliminazione del database fallita.'; + $lang['strentersql'] = 'Inserire la query SQL da eseguire qui sotto:'; + $lang['strsqlexecuted'] = 'SQL eseguito.'; + $lang['strvacuumgood'] = 'Vacuum completato.'; + $lang['strvacuumbad'] = 'Vacuum fallito.'; + $lang['stranalyzegood'] = 'Analyze completato.'; + $lang['stranalyzebad'] = 'Analyze fallito'; + $lang['strreindexgood'] = 'Reindicizzamento completato.'; + $lang['strreindexbad'] = 'Reindicizzamento fallito.'; + $lang['strfull'] = 'Completo'; + $lang['strfreeze'] = 'Freeze'; + $lang['strforce'] = 'Forza'; + $lang['strsignalsent'] = 'Segnale inviato.'; + $lang['strsignalsentbad'] = 'Invio del segnale fallito.'; + $lang['strallobjects'] = 'Tutti gli oggetti'; + $lang['strdatabasealtered'] = 'Database modificato.'; + $lang['strdatabasealteredbad'] = 'Modifica del database fallita.'; + + // Views - Viste + $lang['strview'] = 'Vista'; + $lang['strviews'] = 'Viste'; + $lang['strshowallviews'] = 'Mostra tutte le viste'; + $lang['strnoview'] = 'Vista non trovata.'; + $lang['strnoviews'] = 'Nessuna vista trovata.'; + $lang['strcreateview'] = 'Crea vista'; + $lang['strviewname'] = 'Nome vista'; + $lang['strviewneedsname'] = 'È necessario specificare un nome per la vista.'; + $lang['strviewneedsdef'] = 'È necessario specificare una definizione per la vista.'; + $lang['strviewneedsfields'] = 'È necessario specificare le colonne da selezionare nella vista.'; + $lang['strviewcreated'] = 'Vista creata.'; + $lang['strviewcreatedbad'] = 'Creazione della vista fallita.'; + $lang['strconfdropview'] = 'Eliminare la vista "%s"?'; + $lang['strviewdropped'] = 'Vista eliminata.'; + $lang['strviewdroppedbad'] = 'Eliminazione della vista fallita.'; + $lang['strviewupdated'] = 'Vista aggiornata.'; + $lang['strviewupdatedbad'] = 'Aggiornamento della vista fallito.'; + $lang['strviewlink'] = 'Chiavi collegate'; + $lang['strviewconditions'] = 'Condizioni aggiuntive'; + $lang['strcreateviewwiz'] = 'Crea vista tramite wizard'; + + // Sequences - Sequenze + $lang['strsequence'] = 'Sequenza'; + $lang['strsequences'] = 'Sequenze'; + $lang['strshowallsequences'] = 'Mostra tutte le sequenze'; + $lang['strnosequence'] = 'Sequenza non trovata.'; + $lang['strnosequences'] = 'Nessuna sequenza trovata.'; + $lang['strcreatesequence'] = 'Crea sequenza'; + $lang['strlastvalue'] = 'Ultimo valore'; + $lang['strincrementby'] = 'Incrementa di'; + $lang['strstartvalue'] = 'Valore iniziale'; + $lang['strmaxvalue'] = 'Valore massimo'; + $lang['strminvalue'] = 'Valore minimo'; + $lang['strcachevalue'] = 'Valori in cache'; + $lang['strcancycle'] = 'PuΓ² ricominciare?'; + $lang['striscalled'] = 'IncrementerΓ  l\'ultimo valore prima di ritornare il prossimo valore (is_called)?'; + $lang['strsequenceneedsname'] = 'È necessario specificare un nome per la sequenza.'; + $lang['strsequencecreated'] = 'Sequenza creata.'; + $lang['strsequencecreatedbad'] = 'Creazione della sequenza fallita.'; + $lang['strconfdropsequence'] = 'Eliminare la sequenza "%s"?'; + $lang['strsequencedropped'] = 'Sequenza eliminata.'; + $lang['strsequencedroppedbad'] = 'Eliminazione della sequenza fallita.'; + $lang['strsequencereset'] = 'Reset della sequenza effettuato.'; + $lang['strsequenceresetbad'] = 'Reset della sequenza fallito.'; + $lang['strsequencealtered'] = 'Sequenza modificata.'; + $lang['strsequencealteredbad'] = 'Modifica della sequenza fallita.'; + $lang['strsetval'] = 'Imposta valore'; + $lang['strsequencesetval'] = 'Valore della sequenza impostato.'; + $lang['strsequencesetvalbad'] = 'Impostazione del valore della sequenza fallito.'; + $lang['strnextval'] = 'Incrementa valore'; + $lang['strsequencenextval'] = 'Sequenza incrementata.'; + $lang['strsequencenextvalbad'] = 'Incremento della sequenza fallito.'; + + // Indexes - Indici + $lang['strindex'] = 'Indice'; + $lang['strindexes'] = 'Indici'; + $lang['strindexname'] = 'Nome dell\'indice'; + $lang['strshowallindexes'] = 'Mostra tutti gli indici'; + $lang['strnoindex'] = 'Indice non trovato.'; + $lang['strnoindexes'] = 'Nessun indice trovato.'; + $lang['strcreateindex'] = 'Crea Indice'; + $lang['strtabname'] = 'Nome del tab'; + $lang['strcolumnname'] = 'Nome della colonna'; + $lang['strindexneedsname'] = 'È necessario specificare un nome per l\'indice'; + $lang['strindexneedscols'] = 'Gli indici richiedono di un numero valido di colonne.'; + $lang['strindexcreated'] = 'Indice creato'; + $lang['strindexcreatedbad'] = 'Creazione indice fallita.'; + $lang['strconfdropindex'] = 'Eliminare l\'indice "%s"?'; + $lang['strindexdropped'] = 'Indice eliminato.'; + $lang['strindexdroppedbad'] = 'Eliminazione dell\'indice fallita.'; + $lang['strkeyname'] = 'Nome della chiave'; + $lang['struniquekey'] = 'Chiave Univoca'; + $lang['strprimarykey'] = 'Chiave Primaria'; + $lang['strindextype'] = 'Tipo di indice'; + $lang['strtablecolumnlist'] = 'Colonne nella tabella'; + $lang['strindexcolumnlist'] = 'Colonne nell\'indice'; + $lang['strconfcluster'] = 'Clusterizzare "%s"?'; + $lang['strclusteredgood'] = 'Clusterizzazione completata.'; + $lang['strclusteredbad'] = 'Clusterizzazione fallita.'; + $lang['strcluster'] = 'Cluster'; + + // Rules - Regole + $lang['strrules'] = 'Regole'; + $lang['strrule'] = 'Regola'; + $lang['strshowallrules'] = 'Mostra tutte le regole'; + $lang['strnorule'] = 'Regola non trovata.'; + $lang['strnorules'] = 'Nessuna regola trovata.'; + $lang['strcreaterule'] = 'Crea regola'; + $lang['strrulename'] = 'Nome della regola'; + $lang['strruleneedsname'] = 'È necessario specificare un nome per la regola.'; + $lang['strrulecreated'] = 'Regola creata.'; + $lang['strrulecreatedbad'] = 'Creazione della regola fallita.'; + $lang['strconfdroprule'] = 'Eliminare la regola "%s" su "%s"?'; + $lang['strruledropped'] = 'Regola eliminata.'; + $lang['strruledroppedbad'] = 'Eliminazione della regola fallita.'; + + // Constraints - Vincoli + $lang['strconstraint'] = 'Vincolo'; + $lang['strconstraints'] = 'Vincoli'; + $lang['strshowallconstraints'] = 'Mostra tutti i vincoli'; + $lang['strnoconstraints'] = 'Nessun vincolo trovato.'; + $lang['strcreateconstraint'] = 'Crea vincolo'; + $lang['strconstraintcreated'] = 'Vincolo creato.'; + $lang['strconstraintcreatedbad'] = 'Creazione del vincolo fallita.'; + $lang['strconfdropconstraint'] = 'Eliminare il vincolo "%s" su "%s"?'; + $lang['strconstraintdropped'] = 'Vincolo eliminato.'; + $lang['strconstraintdroppedbad'] = 'Eliminazione vincolo fallita.'; + $lang['straddcheck'] = 'Aggiungi un Check'; + $lang['strcheckneedsdefinition'] = 'Il vincolo Check necessita di una definizione.'; + $lang['strcheckadded'] = 'Vincolo Check aggiunto.'; + $lang['strcheckaddedbad'] = 'Inserimento del vincolo Check fallito.'; + $lang['straddpk'] = 'Aggiungi una chiave primaria'; + $lang['strpkneedscols'] = 'La chiave primaria richiede almeno una colonna.'; + $lang['strpkadded'] = 'Chiave primaria aggiunta.'; + $lang['strpkaddedbad'] = 'Aggiunta della chiave primaria fallita.'; + $lang['stradduniq'] = 'Aggiungi una chiave univoca'; + $lang['struniqneedscols'] = 'La chiave univoca richiede almeno una colonna.'; + $lang['struniqadded'] = 'Chiave univoca aggiunta.'; + $lang['struniqaddedbad'] = 'Aggiunta chiave univoca fallita.'; + $lang['straddfk'] = 'Aggiungi una chiave esterna'; + $lang['strfkneedscols'] = 'La chiave esterna richiede almeno una colonna.'; + $lang['strfkneedstarget'] = 'La chiave esterna richiede una tabella obiettivo.'; + $lang['strfkadded'] = 'Chiave esterna aggiunta.'; + $lang['strfkaddedbad'] = 'Aggiunta della chiave esterna fallita.'; + $lang['strfktarget'] = 'Tabella obiettivo'; + $lang['strfkcolumnlist'] = 'Colonne della chiave'; + $lang['strondelete'] = 'ON DELETE'; + $lang['stronupdate'] = 'ON UPDATE'; + + // Functions - Funzioni + $lang['strfunction'] = 'Funzione'; + $lang['strfunctions'] = 'Funzioni'; + $lang['strshowallfunctions'] = 'Mostra tutte le funzioni'; + $lang['strnofunction'] = 'Funzione non trovata.'; + $lang['strnofunctions'] = 'Nessuna funzione trovata.'; + $lang['strcreateplfunction'] = 'Crea funzione SQL/PL'; + $lang['strcreateinternalfunction'] = 'Crea funzione internal'; + $lang['strcreatecfunction'] = 'Crea funzione C'; + $lang['strfunctionname'] = 'Nome della funzione'; + $lang['strreturns'] = 'Restituisce'; + $lang['strproglanguage'] = 'Linguaggio di programmazione'; + $lang['strfunctionneedsname'] = 'È necessario specificare un nome per la funzione.'; + $lang['strfunctionneedsdef'] = 'È necessario specificare una definizione per la funzione.'; + $lang['strfunctioncreated'] = 'Funzione creata.'; + $lang['strfunctioncreatedbad'] = 'Creazione funzione fallita.'; + $lang['strconfdropfunction'] = 'Eliminare la funzione "%s"?'; + $lang['strfunctiondropped'] = 'Funzione eliminata.'; + $lang['strfunctiondroppedbad'] = 'Eliminazione della funzione fallita.'; + $lang['strfunctionupdated'] = 'Funzione aggiornata.'; + $lang['strfunctionupdatedbad'] = 'Aggiornamento della funzione fallito.'; + $lang['strobjectfile'] = 'File oggetto'; + $lang['strlinksymbol'] = 'Simbolo di collegamento'; + $lang['strarguments'] = 'Argomenti'; + + // Triggers - Trigger + $lang['strtrigger'] = 'Trigger'; + $lang['strtriggers'] = 'Trigger'; + $lang['strshowalltriggers'] = 'Mostra tutti i trigger'; + $lang['strnotrigger'] = 'Trigger non trovato.'; + $lang['strnotriggers'] = 'Nessun trigger trovato.'; + $lang['strcreatetrigger'] = 'Crea Trigger'; + $lang['strtriggerneedsname'] = 'È necessario specificare un nome per il trigger.'; + $lang['strtriggerneedsfunc'] = 'È necessario specificare una funzione per il trigger.'; + $lang['strtriggercreated'] = 'Trigger creato.'; + $lang['strtriggercreatedbad'] = 'Creazione del trigger fallita.'; + $lang['strconfdroptrigger'] = 'Eliminare il trigger "%s" su "%s"?'; + $lang['strtriggerdropped'] = 'Trigger eliminato.'; + $lang['strtriggerdroppedbad'] = 'Eliminazione del trigger fallita.'; + $lang['strtriggeraltered'] = 'Trigger modificato.'; + $lang['strtriggeralteredbad'] = 'Modifica del trigger fallita.'; + $lang['strforeach'] = 'Per ogni'; + + // Types - Tipi + $lang['strtype'] = 'Tipo'; + $lang['strtypes'] = 'Tipi'; + $lang['strshowalltypes'] = 'Mostra tutti i tipi'; + $lang['strnotype'] = 'Tipo non trovato.'; + $lang['strnotypes'] = 'Nessun tipo trovato.'; + $lang['strcreatetype'] = 'Crea Tipo'; + $lang['strcreatecomptype'] = 'Crea tipo composto'; + $lang['strtypeneedsfield'] = 'È necessario specificare almeno un campo.'; + $lang['strtypeneedscols'] = 'È necessario specificare un numero di campi valido.'; + $lang['strtypename'] = 'Nome Tipo'; + $lang['strinputfn'] = 'Funzione di input'; + $lang['stroutputfn'] = 'Funzione di output'; + $lang['strpassbyval'] = 'Passato per valore?'; + $lang['stralignment'] = 'Allineamento'; + $lang['strelement'] = 'Elemento'; + $lang['strdelimiter'] = 'Delimitatore'; + $lang['strstorage'] = 'Memorizzazione'; + $lang['strfield'] = 'Campo'; + $lang['strnumfields'] = 'Numero di campi'; + $lang['strtypeneedsname'] = 'È necessario specificare un nome per il tipo.'; + $lang['strtypeneedslen'] = 'È necessario specificare una lunghezza per il tipo.'; + $lang['strtypecreated'] = 'Tipo creato'; + $lang['strtypecreatedbad'] = 'Creazione del tipo fallita.'; + $lang['strconfdroptype'] = 'Eliminare il tipo "%s"?'; + $lang['strtypedropped'] = 'Tipo eliminato.'; + $lang['strtypedroppedbad'] = 'Eliminazione del tipo fallita.'; + $lang['strflavor'] = 'VarietΓ '; + $lang['strbasetype'] = 'Base'; + $lang['strcompositetype'] = 'Composto'; + $lang['strpseudotype'] = 'Pseudo-tipo'; + + // Schemas - Schemi + $lang['strschema'] = 'Schema'; + $lang['strschemas'] = 'Schemi'; + $lang['strshowallschemas'] = 'Mostra tutti gli schemi'; + $lang['strnoschema'] = 'Schema non trovato.'; + $lang['strnoschemas'] = 'Nessuno schema trovato.'; + $lang['strcreateschema'] = 'Crea schema'; + $lang['strschemaname'] = 'Nome dello schema'; + $lang['strschemaneedsname'] = 'È necessario specificare un nome per lo schema.'; + $lang['strschemacreated'] = 'Schema creato'; + $lang['strschemacreatedbad'] = 'Creazione dello schema fallita.'; + $lang['strconfdropschema'] = 'Eliminare lo schema "%s"?'; + $lang['strschemadropped'] = 'Schema eliminato.'; + $lang['strschemadroppedbad'] = 'Eliminazione dello schema fallita.'; + $lang['strschemaaltered'] = 'Schema modificato.'; + $lang['strschemaalteredbad'] = 'Modifica dello schema fallita.'; + $lang['strsearchpath'] = 'Ordine di ricerca dello schema'; + + // Reports - Rapporti + + // Domains - Domini + $lang['strdomain'] = 'Dominio'; + $lang['strdomains'] = 'Domini'; + $lang['strshowalldomains'] = 'Mostra tutti i domini'; + $lang['strnodomains'] = 'Nessun dominio trovato.'; + $lang['strcreatedomain'] = 'Crea dominio'; + $lang['strdomaindropped'] = 'Dominio eliminato.'; + $lang['strdomaindroppedbad'] = 'Eliminazione del dominio fallita.'; + $lang['strconfdropdomain'] = 'Eliminare il dominio "%s"?'; + $lang['strdomainneedsname'] = 'È necessario specificare un nome per il dominio.'; + $lang['strdomaincreated'] = 'Dominio creato.'; + $lang['strdomaincreatedbad'] = 'Creazione del dominio fallita.'; + $lang['strdomainaltered'] = 'Dominio modificato.'; + $lang['strdomainalteredbad'] = 'Modifica del dominio fallita.'; + + // Operators - Operatori + $lang['stroperator'] = 'Operatore'; + $lang['stroperators'] = 'Operatori'; + $lang['strshowalloperators'] = 'Mostra tutti gli operatori'; + $lang['strnooperator'] = 'Operatore non trovato.'; + $lang['strnooperators'] = 'Nessun operatore trovato.'; + $lang['strcreateoperator'] = 'Crea operatore'; + $lang['strleftarg'] = 'Tipo dell\'argomento di sinistra'; + $lang['strrightarg'] = 'Tipo dell\'argomento di destra'; + $lang['strcommutator'] = 'Commutatore'; + $lang['strnegator'] = 'Negator'; + $lang['strrestrict'] = 'Restrict'; + $lang['strjoin'] = 'Join'; + $lang['strhashes'] = 'Supporta hash join'; + $lang['strmerges'] = 'Supporta merge join'; + $lang['strleftsort'] = 'Ordinamento sinistro'; + $lang['strrightsort'] = 'Ordinamento destro'; + $lang['strlessthan'] = 'Minore'; + $lang['strgreaterthan'] = 'Maggiore'; + $lang['stroperatorneedsname'] = 'È necessario specificare un nome per l\'operatore.'; + $lang['stroperatorcreated'] = 'Operatore creato'; + $lang['stroperatorcreatedbad'] = 'Creazione dell\'operatore fallita.'; + $lang['strconfdropoperator'] = 'Eliminare l\'operatore "%s"?'; + $lang['stroperatordropped'] = 'Operatore eliminato.'; + $lang['stroperatordroppedbad'] = 'Eliminazione dell\'operatore fallita.'; + + // Casts - Cast + $lang['strcasts'] = 'Cast'; + $lang['strnocasts'] = 'Nessun cast trovato.'; + $lang['strsourcetype'] = 'Tipo sorgente'; + $lang['strtargettype'] = 'Tipo destinazione'; + $lang['strimplicit'] = 'Implicito'; + $lang['strinassignment'] = 'Negli assegnamenti'; + $lang['strbinarycompat'] = '(Compatibile in binario)'; + + // Conversions - Conversioni + $lang['strconversions'] = 'Conversioni'; + $lang['strnoconversions'] = 'Nessuna conversione trovata.'; + $lang['strsourceencoding'] = 'Codifica sorgente'; + $lang['strtargetencoding'] = 'Codifica destinazione'; + + // Languages - Linguaggi + $lang['strlanguages'] = 'Linguaggi'; + $lang['strnolanguages'] = 'Nessun linguaggio trovato.'; + $lang['strtrusted'] = 'Trusted'; + + // Info + $lang['strnoinfo'] = 'Nessuna informazione disponibile.'; + $lang['strreferringtables'] = 'Tabelle referenti'; + $lang['strparenttables'] = 'Tabella padre'; + $lang['strchildtables'] = 'Tabella figlia'; + + // Aggregates - Aggregati + $lang['straggregate'] = 'Aggregato'; + $lang['straggregates'] = 'Aggregati'; + $lang['strnoaggregates'] = 'Nessun aggregato trovato.'; + $lang['stralltypes'] = '(Tutti i tipi)'; + $lang['strcreateaggregate'] = 'Crea aggregato'; + $lang['straggrsfunc'] = 'Funzione di transizione di stato'; + $lang['straggrstype'] = 'Tipo di dato per il valore di stato'; + $lang['straggrffunc'] = 'Funzione finale'; + $lang['straggrinitcond'] = 'Condizione iniziale'; + $lang['straggrsortop'] = 'Operatore di ordinamento'; + $lang['strconfdropaggregate'] = 'Eliminare l\'aggregato "%s"?'; + $lang['straggregatedropped'] = 'Aggregato eliminato.'; + $lang['straggregatedroppedbad'] = 'Eliminazione dell\'aggregato fallita.'; + $lang['straggraltered'] = 'Aggregato modificato.'; + $lang['straggralteredbad'] = 'Modifica dell\'aggregato fallita.'; + $lang['straggrneedsname'] = 'È necessario specificare un nome per l\'aggregato.'; + $lang['straggrneedssfunc'] = 'È necessario specificare il nome della funzione di transizione di stato per l\'aggregato.'; + $lang['straggrneedsstype'] = 'È necessario specificare il tipo di dato per il valore di stato dell\'aggregato.'; + $lang['straggrcreated'] = 'Aggregato creato.'; + $lang['straggrcreatedbad'] = 'Creazione dell\'aggregato fallita.'; + $lang['straggrshowall'] = 'Mostra tutti gli aggregati'; + + // Operator classes - Classi di operatori + $lang['stropclasses'] = 'Classi di operatori'; + $lang['strnoopclasses'] = 'Nessuna classe di operatori trovata.'; + $lang['straccessmethod'] = 'Metodo di accesso'; + + // Stats and performance - Statistiche e performance + $lang['strrowperf'] = 'Performance sulle righe'; + $lang['strioperf'] = 'Performance sull\'I/O'; + $lang['stridxrowperf'] = 'Performance sulle righe per gli indici'; + $lang['stridxioperf'] = 'Performance sull\'I/O per gli indici'; + $lang['strpercent'] = '%'; + $lang['strsequential'] = 'Sequenziale'; + $lang['strscan'] = 'Scan'; + $lang['strread'] = 'Read'; + $lang['strfetch'] = 'Fetch'; + $lang['strheap'] = 'Heap'; + $lang['strtoast'] = 'TOAST'; + $lang['strtoastindex'] = 'TOAST Index'; + $lang['strcache'] = 'Cache'; + $lang['strdisk'] = 'Disco'; + $lang['strrows2'] = 'Righe'; + + // Tablespaces - Tablespace + $lang['strtablespace'] = 'Tablespace'; + $lang['strtablespaces'] = 'Tablespace'; + $lang['strshowalltablespaces'] = 'Mostra tutti i tablespace'; + $lang['strnotablespaces'] = 'Nessun tablespace trovato.'; + $lang['strcreatetablespace'] = 'Crea tablespace'; + $lang['strlocation'] = 'Directory'; + $lang['strtablespaceneedsname'] = 'È necessario specificare un nome per il tablespace.'; + $lang['strtablespaceneedsloc'] = 'È necessario specificare una directory in cui creare il tablespace.'; + $lang['strtablespacecreated'] = 'Tablespace creato.'; + $lang['strtablespacecreatedbad'] = 'Crezione del tablespace fallita.'; + $lang['strconfdroptablespace'] = 'Eliminare il tablespace "%s"?'; + $lang['strtablespacedropped'] = 'Tablespace eliminato.'; + $lang['strtablespacedroppedbad'] = 'Eliminazione del tablespace fallita.'; + $lang['strtablespacealtered'] = 'Tablespace modificato.'; + $lang['strtablespacealteredbad'] = 'Modifica del tablespace fallita.'; + + // Miscellaneous - Varie + $lang['strtopbar'] = '%s in esecuzione su %s:%s -- Utente "%s"'; + $lang['strtimefmt'] = 'j M Y - g:iA'; + $lang['strhelp'] = 'Aiuto'; + $lang['strhelpicon'] = '?'; + $lang['strhelppagebrowser'] = 'Browser delle pagine di aiuto'; + $lang['strselecthelppage'] = 'Seleziona una pagina di aiuto'; + $lang['strinvalidhelppage'] = 'Pagina di aiuto non valida.'; + $lang['strlogintitle'] = 'Login su %s'; + $lang['strlogoutmsg'] = 'Logout da %s effettuato'; + $lang['strloading'] = 'Caricamento...'; + $lang['strerrorloading'] = 'Errore nel caricamento di'; + $lang['strclicktoreload'] = 'Clicca per ricaricare'; + + // Autovacuum + $lang['strautovacuum'] = 'Vacuum automatico'; + + // Prepared transactions - Transazioni preparate + $lang['strpreparedxacts'] = 'Transazioni preparate'; + $lang['strxactid'] = 'ID della transazione'; + $lang['strgid'] = 'ID globale'; +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/japanese.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/japanese.php new file mode 100644 index 00000000..6c72f8ad --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/japanese.php @@ -0,0 +1,855 @@ +>'; + $lang['strfailed'] = 'ε€±ζ•—'; + $lang['strcreate'] = '作成'; + $lang['strcreated'] = 'δ½œζˆγ—γΎγ—γŸγ€‚'; + $lang['strcomment'] = 'γ‚³γƒ‘γƒ³γƒˆ'; + $lang['strlength'] = '長さ'; + $lang['strdefault'] = 'γƒ‡γƒ•γ‚©γƒ«γƒˆ'; + $lang['stralter'] = '倉更'; + $lang['strok'] = 'OK'; + $lang['strcancel'] = 'ε–γ‚ŠζΆˆγ—'; + $lang['strac'] = 'θ‡ͺε‹•θ£œεŒγ‚’ζœ‰εŠΉγ«γ™γ‚‹'; + $lang['strsave'] = '保存'; + $lang['strreset'] = 'γƒͺγ‚»γƒƒγƒˆ'; + $lang['strinsert'] = '挿ε…₯'; + $lang['strselect'] = '選択'; + $lang['strdelete'] = 'ε‰Šι™€'; + $lang['strupdate'] = 'ζ›΄ζ–°'; + $lang['strreferences'] = '参照'; + $lang['stryes'] = 'はい'; + $lang['strno'] = 'γ„γ„γˆ'; + $lang['strtrue'] = '真'; + $lang['strfalse'] = '偽'; + $lang['stredit'] = '編集'; + $lang['strcolumn'] = 'カラム'; + $lang['strcolumns'] = 'カラム'; + $lang['strrows'] = 'レコード'; + $lang['strrowsaff'] = 'ε½±ιŸΏγ‚’ε—γ‘γŸγƒ¬γ‚³γƒΌγƒ‰'; + $lang['strobjects'] = 'γ‚ͺγƒ–γ‚Έγ‚§γ‚―γƒˆ'; + $lang['strback'] = 'ζˆ»γ‚‹'; + $lang['strqueryresults'] = 'クエγƒͺ硐果'; + $lang['strshow'] = '葨瀺'; + $lang['strempty'] = '空にする'; + $lang['strlanguage'] = '言θͺž'; + $lang['strencoding'] = 'エンコード'; + $lang['strvalue'] = 'ε€€'; + $lang['strunique'] = 'ユニーク'; + $lang['strprimary'] = 'γƒ—γƒ©γ‚€γƒžγƒͺ'; + $lang['strexport'] = 'γ‚¨γ‚―γ‚ΉγƒγƒΌγƒˆ'; + $lang['strimport'] = 'γ‚€γƒ³γƒγƒΌγƒˆ'; + $lang['strallowednulls'] = 'NULL 文字を許可する'; + $lang['strbackslashn'] = '\N'; + $lang['stremptystring'] = 'η©Ίγζ–‡ε­—εˆ—/ι …η›'; + $lang['strsql'] = 'SQL'; + $lang['stradmin'] = 'η‘理'; + $lang['strvacuum'] = 'バキγƒ₯γƒΌγƒ '; + $lang['stranalyze'] = '解析'; + $lang['strclusterindex'] = 'クラスター'; +$lang['strclustered'] = 'Clustered?'; + $lang['strreindex'] = '再むンデックス'; + $lang['strexecute'] = 'εŸθ‘Œγ™γ‚‹'; + $lang['stradd'] = '追加'; + $lang['strevent'] = 'γ‚€γƒ™γƒ³γƒˆ'; + $lang['strwhere'] = 'Where'; + $lang['strinstead'] = '代葌'; + $lang['strwhen'] = 'When'; + $lang['strformat'] = 'γƒ•γ‚©γƒΌγƒžγƒƒγƒˆ'; + $lang['strdata'] = 'データ'; + $lang['strconfirm'] = 'η’Ίθͺ'; + $lang['strexpression'] = '評侑式'; + $lang['strellipsis'] = '...'; + $lang['strseparator'] = ': '; + $lang['strexpand'] = '展開'; + $lang['strcollapse'] = 'ι–‰γ˜γ‚‹'; + $lang['strfind'] = '怜紒'; + $lang['stroptions'] = 'γ‚ͺプション'; + $lang['strrefresh'] = '再葨瀺'; + $lang['strdownload'] = 'ダウンロード'; + $lang['strdownloadgzipped'] = 'gzip で圧ηΈγ—てダウンロード'; + $lang['strinfo'] = 'ζƒ…ε ±'; + $lang['stroids'] = 'OID '; + $lang['stradvanced'] = '高度γͺ'; + $lang['strvariables'] = '倉数'; + $lang['strprocess'] = 'γƒ—γƒ­γ‚»γ‚Ή'; + $lang['strprocesses'] = 'γƒ—γƒ­γ‚»γ‚Ή'; + $lang['strsetting'] = 'θ¨­εš'; + $lang['streditsql'] = 'SQL 編集'; + $lang['strruntime'] = '総εŸθ‘Œζ™‚ι–“: %s γƒŸγƒͺη§’'; + $lang['strpaginate'] = '硐果γγƒšγƒΌγ‚Έεˆ†ε‰²ε‡¦η†γ‚’θ‘Œγ†'; + $lang['struploadscript'] = 'または SQL γ‚Ήγ‚―γƒͺγƒ—γƒˆγ‚’γ‚’γƒƒγƒ—γƒ­γƒΌγƒ‰:'; + $lang['strstarttime'] = '開始時間'; + $lang['strfile'] = 'フゑむル'; + $lang['strfileimported'] = 'γƒ•γ‚‘γ‚€γƒ«γ‚’γ‚€γƒ³γƒγƒΌγƒˆγ—γΎγ—γŸγ€‚'; + $lang['strtrycred'] = 'すべてγγ‚΅γƒΌγƒγƒΌγ§γ“γζƒ…報を使う'; + $lang['stractionsonmultiplelines'] = 'θ€‡ζ•°θ‘Œγζ“δ½œ'; + $lang['strselectall'] = 'γ™γΉγ¦ιΈζŠžγ™γ‚‹'; + $lang['strunselectall'] = 'γ™γΉγ¦ιΈζŠžγ‚’θ§£ι™€γ™γ‚‹'; + $lang['strlocale'] = 'ロケール'; + + // User-supplied SQL history + $lang['strhistory'] = 'ε±₯ζ­΄'; + $lang['strnohistory'] = 'ε±₯ζ­΄γŒγ‚γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strclearhistory'] = 'ε±₯ζ­΄γ‚’ζΆˆεŽ»γ™γ‚‹γ™'; + $lang['strdelhistory'] = 'ε±₯ζ­΄γ‹γ‚‰ε‰Šι™€γ™γ‚‹'; + $lang['strconfdelhistory'] = 'ζœ¬ε½“γ«ε±₯歴からこγθ¦ζ±‚γ‚’ε‰Šι™€γ—γΎγ™γ‹?'; + $lang['strconfclearhistory'] = 'ζœ¬ε½“γ«ε±₯ζ­΄γ‚’ζΆˆεŽ»γ—γΎγ™γ‹?'; + $lang['strnodatabaseselected'] = 'γƒ‡γƒΌγ‚Ώγƒ™γƒΌγ‚Ήγ‚’ιΈζŠžγ—γ¦γγ γ•γ„γ€‚'; + + // Database Sizes + $lang['strsize'] = 'γ‚΅γ‚€γ‚Ί'; + $lang['strbytes'] = 'γƒγ‚€γƒˆ'; + $lang['strkb'] = 'kB'; + $lang['strmb'] = 'MB'; + $lang['strgb'] = 'GB'; + $lang['strtb'] = 'TB'; + + // Error handling + $lang['strnoframes'] = 'こγγ‚’γƒ—γƒͺγ‚±γƒΌγ‚·γƒ§γƒ³γ‚’δ½Ώη”¨γ™γ‚‹γŸγ‚γ«γ―γƒ•γƒ¬γƒΌγƒ γŒδ½Ώη”¨ε―θƒ½γͺγƒ–γƒ©γ‚¦γ‚ΆγƒΌγŒεΏ…θ¦γ§γ™γ€‚'; + $lang['strnoframeslink'] = 'フレームを陀倖して使う'; + $lang['strbadconfig'] = 'config.inc.php γŒζ—§εΌγ§γ™γ€‚ζ–°γ—γ„ config.inc.php-dist γ‹γ‚‰ε†δ½œζˆγ™γ‚‹εΏ…θ¦γŒγ‚γ‚ŠγΎγ™γ€‚'; + $lang['strnotloaded'] = 'γƒ‡γƒΌγ‚Ώγƒ™γƒΌγ‚Ήγ‚’γ‚΅γƒγƒΌγƒˆγ™γ‚‹γ‚ˆγ†γ« PHP γγ‚³γƒ³γƒ‘γ‚€γƒ«γƒ»γ‚€γƒ³γ‚ΉγƒˆγƒΌγƒ«γŒγ•γ‚Œγ¦γ„γΎγ›γ‚“γ€‚configure だ--with-pgsql γ‚ͺプションを用いて PHP γ‚’ε†γ‚³γƒ³γƒ‘γ‚€γƒ«γ™γ‚‹εΏ…θ¦γŒγ‚γ‚ŠγΎγ™γ€‚'; + $lang['strpostgresqlversionnotsupported'] = 'こγγƒγƒΌγ‚Έγƒ§γƒ³γ PostgreSQL γ―γ‚΅γƒγƒΌγƒˆγ—γ¦γ„γΎγ›γ‚“γ€‚γƒγƒΌγ‚Έγƒ§γƒ³ %s δ»₯δΈŠγ«γ‚’γƒƒγƒ—γ‚°γƒ¬γƒΌγƒ‰γ—γ¦γγ γ•γ„γ€‚'; + $lang['strbadschema'] = 'η„‘εŠΉγγ‚Ήγ‚­γƒΌγƒžγŒζŒ‡εšγ•γ‚ŒγΎγ—γŸγ€‚'; + $lang['strbadencoding'] = 'データベースγδΈ­γ§γ‚―γƒ©γ‚€γ‚’γƒ³γƒˆγ‚¨γƒ³γ‚³γƒΌγƒ‰γ‚’ζŒ‡εšγ—γΎγ›γ‚“γ§γ—γŸγ€‚'; + $lang['strsqlerror'] = 'SQL エラー:'; + $lang['strinstatement'] = 'ζ–‡:'; + $lang['strinvalidparam'] = 'γ‚Ήγ‚―γƒͺγƒ—γƒˆγƒ‘γƒ©γƒ‘γƒΌγ‚ΏγŒη„‘εŠΉγ§γ™γ€‚'; + $lang['strnodata'] = 'γƒ¬γ‚³γƒΌγƒ‰γŒθ¦‹γ€γ‹γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strnoobjects'] = 'γ‚ͺγƒ–γ‚Έγ‚§γ‚―γƒˆγŒθ¦‹γ€γ‹γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strrownotunique'] = 'こγγƒ¬γ‚³γƒΌγƒ‰γ«γ―δΈ€ζ„θ­˜εˆ₯ε­γŒγ‚γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strnouploads'] = 'γƒ•γ‚‘γ‚€γƒ«γ‚’γƒƒγƒ—γƒ­γƒΌγƒ‰γŒη„‘εŠΉγ§γ™γ€‚'; + $lang['strimporterror'] = 'γ‚€γƒ³γƒγƒΌγƒˆγ‚¨γƒ©γƒΌ'; + $lang['strimporterror-fileformat'] = 'γ‚€γƒ³γƒγƒΌγƒˆγ‚¨γƒ©γƒΌ: フゑむル归式をθ‡ͺε‹•ηš„γ«η’Ίεšγ§γγΎγ›γ‚“。.'; + $lang['strimporterrorline'] = '%s 葌η›γŒγ‚€γƒ³γƒγƒΌγƒˆγ‚¨γƒ©γƒΌγ§γ™γ€‚'; + $lang['strimporterrorline-badcolumnnum'] = '%s θ‘Œγ§γ‚€γƒ³γƒγƒΌγƒˆγ‚¨γƒ©γƒΌ: θ‘Œγ―ζ­£γ—γ„εˆ—ζ•°γ‚’ζŒγ£γ¦γ„γΎγ›γ‚“γ€‚'; + $lang['strimporterror-uploadedfile'] = 'γ‚€γƒ³γƒγƒΌγƒˆγ‚¨γƒ©γƒΌ: γ‚΅γƒΌγƒγƒΌγ«γƒ•γ‚‘γ‚€γƒ«γ‚’γ‚’γƒƒγƒ—γƒ­γƒΌγƒ‰γ™γ‚‹γ“γ¨γŒγ§γγͺγ„γ‹γ‚‚γ—γ‚ŒγΎγ›γ‚“γ€‚'; + $lang['strcannotdumponwindows'] = 'Windows 上でγθ€‡εˆγƒ†γƒΌγƒ–γƒ«γ¨γ‚Ήγ‚­γƒΌγƒžεγγƒ€γƒ³γƒ—γ―γ‚΅γƒγƒΌγƒˆγ—γ¦γ„γΎγ›γ‚“γ€‚'; +$lang['strinvalidserverparam'] = 'Attempt to connect with invalid server parameter, possibly someone is trying to hack your system.'; + $lang['strnoserversupplied'] = 'γ‚΅γƒΌγƒγƒΌγŒζŒ‡εšγ•γ‚Œγ¦γ„ません!'; + + // Tables + $lang['strtable'] = 'テーブル'; + $lang['strtables'] = 'テーブル'; + $lang['strshowalltables'] = 'すべてγγƒ†γƒΌγƒ–ルを葨瀺する'; + $lang['strnotables'] = 'γƒ†γƒΌγƒ–γƒ«γŒθ¦‹γ€γ‹γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strnotable'] = 'γƒ†γƒΌγƒ–γƒ«γŒθ¦‹γ€γ‹γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strcreatetable'] = 'γƒ†γƒΌγƒ–γƒ«γ‚’δ½œζˆγ™γ‚‹'; + $lang['strcreatetablelike'] = 'こγγƒ†γƒΌγƒ–γƒ«γ‚’ε…ƒγ«ζ–°γ—γ„γƒ†γƒΌγƒ–γƒ«γ‚’δ½œζˆγ™γ‚‹'; + $lang['strcreatetablelikeparent'] = '元テーブル'; + $lang['strcreatelikewithdefaults'] = 'DEFAULT を含む'; + $lang['strcreatelikewithconstraints'] = 'CONSTRAINTS を含む'; + $lang['strcreatelikewithindexes'] = 'INDEX を含む'; + $lang['strtablename'] = 'テーブル名'; + $lang['strtableneedsname'] = 'γƒ†γƒΌγƒ–γƒ«εγ‚’ζŒ‡εšγ™γ‚‹εΏ…θ¦γŒγ‚γ‚ŠγΎγ™γ€‚'; +$lang['strtablelikeneedslike'] = 'You must give a table to copy properties from.'; + $lang['strtableneedsfield'] = 'ε°‘γͺくとも一぀γγƒ•γ‚£γƒΌγƒ«γƒ‰γ‚’ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strtableneedscols'] = 'ζœ‰εŠΉγͺγ‚«γƒ©γƒ ζ•°γ‚’ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strtablecreated'] = 'γƒ†γƒΌγƒ–γƒ«γ‚’δ½œζˆγ—γΎγ—γŸγ€‚'; + $lang['strtablecreatedbad'] = 'テーブルγδ½œζˆγ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strconfdroptable'] = 'γƒ†γƒΌγƒ–γƒ«γ€Œ%sγ€γ‚’ζœ¬ε½“γ«η ΄ζ£„γ—γΎγ™γ‹?'; + $lang['strtabledropped'] = 'γƒ†γƒΌγƒ–γƒ«γ‚’η ΄ζ£„γ—γΎγ—γŸγ€‚'; + $lang['strtabledroppedbad'] = 'テーブルγη ΄ζ£„γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strconfemptytable'] = 'ζœ¬ε½“γ«γƒ†γƒΌγƒ–γƒ«γ€Œ%s」γε†…εΉγ‚’破棄しますか?'; + $lang['strtableemptied'] = 'γƒ†γƒΌγƒ–γƒ«γŒη©Ίγ«γͺγ‚ŠγΎγ—γŸ.'; + $lang['strtableemptiedbad'] = 'γƒ†γƒΌγƒ–γƒ«γ‚’η©Ίγ«γ§γγΎγ›γ‚“γ§γ—γŸγ€‚'; + $lang['strinsertrow'] = 'レコードγζŒΏε…₯'; + $lang['strrowinserted'] = 'γƒ¬γ‚³γƒΌγƒ‰γ‚’ζŒΏε…₯γ—γΎγ—γŸγ€‚'; + $lang['strrowinsertedbad'] = 'レコードγζŒΏε…₯γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strrowduplicate'] = 'レコードγζŒΏε…₯γ«ε€±ζ•—γ—γ€ζŒΏε…₯γθ€‡θ£½γ‚’θ©¦γΏγΎγ—γŸγ€‚'; + $lang['streditrow'] = 'レコード編集'; + $lang['strrowupdated'] = 'γƒ¬γ‚³γƒΌγƒ‰γ‚’ζ›΄ζ–°γ—γΎγ—γŸγ€‚'; + $lang['strrowupdatedbad'] = 'レコードγζ›΄ζ–°γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strdeleterow'] = 'γƒ¬γ‚³γƒΌγƒ‰ε‰Šι™€'; + $lang['strconfdeleterow'] = 'ζœ¬ε½“γ«γ“γγƒ¬γ‚³γƒΌγƒ‰γ‚’ε‰Šι™€γ—γΎγ™γ‹?'; + $lang['strrowdeleted'] = 'γƒ¬γ‚³γƒΌγƒ‰γ‚’ε‰Šι™€γ—γΎγ—γŸγ€‚'; + $lang['strrowdeletedbad'] = 'レコードγε‰Šι™€γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strinsertandrepeat'] = '挿ε…₯γ¨ηΉ°γ‚ŠθΏ”γ—'; + $lang['strnumcols'] = 'カラムγζ•°'; + $lang['strcolneedsname'] = 'カラムγεε‰γ‚’ζŒ‡εšγ—γͺγ‘γ‚Œγ°γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strselectallfields'] = 'すべてγγƒ•γ‚£γƒΌγƒ«γƒ‰γ‚’ιΈζŠžγ™γ‚‹'; + $lang['strselectneedscol'] = 'ε°‘γͺくとも一カラムは必要です。'; + $lang['strselectunary'] = 'ε˜ι …γγ‚ͺγƒšγƒ¬γƒΌγ‚ΏγƒΌγ―ε€€γ‚’ζŒγ€γ“γ¨γŒγ§γγΎγ›γ‚“γ€‚'; + $lang['strcolumnaltered'] = 'γ‚«γƒ©γƒ γ‚’ε€‰ζ›΄γ—γΎγ—γŸγ€‚'; + $lang['strcolumnalteredbad'] = 'カラムγε€‰ζ›΄γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strconfdropcolumn'] = 'ζœ¬ε½“γ«γ‚«γƒ©γƒ γ€Œ%sγ€γ‚’γƒ†γƒΌγƒ–γƒ«γ€Œ%s」から破棄していいですか?'; + $lang['strcolumndropped'] = 'γ‚«γƒ©γƒ γ‚’η ΄ζ£„γ—γΎγ—γŸγ€‚'; + $lang['strcolumndroppedbad'] = 'カラムγη ΄ζ£„γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['straddcolumn'] = 'カラムγθΏ½εŠ '; + $lang['strcolumnadded'] = 'γ‚«γƒ©γƒ γ‚’θΏ½εŠ γ—γΎγ—γŸγ€‚'; + $lang['strcolumnaddedbad'] = 'カラムγθΏ½εŠ γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strcascade'] = 'カスケード'; + $lang['strtablealtered'] = 'γƒ†γƒΌγƒ–γƒ«γ‚’ε€‰ζ›΄γ—γΎγ—γŸγ€‚'; + $lang['strtablealteredbad'] = 'テーブルγε€‰ζ›΄γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strdataonly'] = 'データγγΏ'; + $lang['strstructureonly'] = '構造γγΏ'; + $lang['strstructureanddata'] = '構造とデータ'; + $lang['strtabbed'] = 'γ‚Ώγƒ–εŒΊεˆ‡γ‚Š'; + $lang['strauto'] = 'θ‡ͺε‹•'; + $lang['strconfvacuumtable'] = 'ζœ¬ε½“γ«γ€Œ%s」をバキγƒ₯ームしますか?'; + $lang['strconfanalyzetable'] = 'γ€Œ%sγ€γ‚’ζœ¬ε½“γ«εˆ†ζž(ANALYZE)しますか?'; + $lang['strestimatedrowcount'] = 'θ©•δΎ‘ζΈˆγƒ¬γ‚³γƒΌγƒ‰ζ•°'; + $lang['strspecifytabletoanalyze'] = 'γƒ†γƒΌγƒ–γƒ«γ‚’θ§£ζžγ«γ―ε°‘γͺくとも 1 γ€ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“'; + $lang['strspecifytabletoempty'] = 'テーブルを空にするには少γͺくとも 1 γ€ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“'; + $lang['strspecifytabletodrop'] = 'テーブルを破棄するには少γͺくとも 1 γ€ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“'; + $lang['strspecifytabletovacuum'] = 'テーブルをバキγƒ₯ームするには少γͺくとも 1 γ€ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“'; + + // Columns + $lang['strcolprop'] = 'カラムγγƒ—ロパティ'; + $lang['strnotableprovided'] = 'γƒ†γƒΌγƒ–γƒ«γŒζŒ‡εšγ•γ‚Œγ¦γ„ません!'; + + // Users + $lang['struser'] = 'ユーアー'; + $lang['strusers'] = 'ユーアー'; + $lang['strusername'] = 'ユーアー名'; + $lang['strpassword'] = 'パスワード'; + $lang['strsuper'] = 'スーパーユーアーですか?'; + $lang['strcreatedb'] = 'γƒ‡γƒΌγ‚Ώγƒ™γƒΌγ‚Ήγ‚’δ½œζˆγ—γΎγ™γ‹?'; + $lang['strexpires'] = 'ζœ‰εŠΉζœŸι™'; + $lang['strsessiondefaults'] = 'γ‚»γƒƒγ‚·γƒ§γƒ³γƒ‡γƒ•γ‚©γƒ«γƒˆ'; + $lang['strnousers'] = 'γƒ¦γƒΌγ‚ΆγƒΌγŒθ¦‹γ€γ‹γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['struserupdated'] = 'γƒ¦γƒΌγ‚ΆγƒΌγ‚’ζ›΄ζ–°γ—γΎγ—γŸγ€‚'; + $lang['struserupdatedbad'] = 'ユーアーγζ›΄ζ–°γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strshowallusers'] = 'すべてγγƒ¦γƒΌγ‚ΆγƒΌγ‚’葨瀺する'; + $lang['strcreateuser'] = 'γƒ¦γƒΌγ‚ΆγƒΌγ‚’δ½œζˆγ™γ‚‹'; + $lang['struserneedsname'] = 'ユーアーγεε‰γ‚’γŒεΏ…θ¦γ§γ™γ€‚'; + $lang['strusercreated'] = 'γƒ¦γƒΌγ‚ΆγƒΌγ‚’δ½œζˆγ—γΎγ—γŸγ€‚'; + $lang['strusercreatedbad'] = 'ユーアーγδ½œζˆγ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strconfdropuser'] = 'ζœ¬ε½“γ«γƒ¦γƒΌγ‚ΆγƒΌγ€Œ%s」を破棄しますか?'; + $lang['struserdropped'] = 'γƒ¦γƒΌγ‚ΆγƒΌγ‚’η ΄ζ£„γ—γΎγ—γŸγ€‚'; + $lang['struserdroppedbad'] = 'ユーアーγε‰Šι™€γ«η ΄ζ£„γ—γΎγ—γŸ'; + $lang['straccount'] = 'γ‚’γ‚«γ‚¦γƒ³γƒˆ'; + $lang['strchangepassword'] = 'パスワード倉更'; + $lang['strpasswordchanged'] = 'パスワードγε€‰ζ›΄γ‚’γ—γΎγ—γŸγ€‚'; + $lang['strpasswordchangedbad'] = 'パスワードγε€‰ζ›΄γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strpasswordshort'] = 'γƒ‘γ‚Ήγƒ―γƒΌγƒ‰γŒηŸ­γ™γŽγΎγ™γ€‚'; + $lang['strpasswordconfirm'] = 'パスワードγη’ΊθͺγŒδΈ€θ‡΄γ—γΎγ›γ‚“γ§γ—γŸγ€‚'; + + // Groups + $lang['strgroup'] = 'グループ'; + $lang['strgroups'] = 'グループ'; + $lang['strshowallgroups'] = 'すべてγγ‚°γƒ«γƒΌγƒ—を葨瀺する'; + $lang['strnogroup'] = 'γ‚°γƒ«γƒΌγƒ—γŒγ‚γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strnogroups'] = 'γ‚°γƒ«γƒΌγƒ—γŒθ¦‹γ€γ‹γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strcreategroup'] = 'γ‚°γƒ«γƒΌγƒ—γ‚’δ½œζˆγ™γ‚‹'; + $lang['strgroupneedsname'] = 'γ‚°γƒ«γƒΌγƒ—εγ‚’ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strgroupcreated'] = 'γ‚°γƒ«γƒΌγƒ—γ‚’δ½œζˆγ—γΎγ—γŸγ€‚'; + $lang['strgroupcreatedbad'] = 'グループγδ½œζˆγ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strconfdropgroup'] = 'ζœ¬ε½“γ«γ‚°γƒ«γƒΌγƒ—γ€Œ%s」を破棄しますか?'; + $lang['strgroupdropped'] = 'γ‚°γƒ«γƒΌγƒ—γ‚’η ΄ζ£„γ—γΎγ—γŸγ€‚'; + $lang['strgroupdroppedbad'] = 'グループγη ΄ζ£„γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strmembers'] = 'パンバー'; + $lang['strmemberof'] = '欑γγ‚°γƒ«γƒΌγƒ—γγƒ‘ンバー:'; + $lang['stradminmembers'] = 'η‘理パンバー'; + $lang['straddmember'] = 'γƒ‘γƒ³γƒγƒΌγ‚’θΏ½εŠ γ™γ‚‹'; + $lang['strmemberadded'] = 'γƒ‘γƒ³γƒγƒΌγ‚’θΏ½εŠ γ—γΎγ—γŸγ€‚'; + $lang['strmemberaddedbad'] = 'パンバーγθΏ½εŠ γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strdropmember'] = 'パンバー破棄'; + $lang['strconfdropmember'] = 'ζœ¬ε½“γ«γƒ‘γƒ³γƒγƒΌγ€Œ%sγ€γ‚’γ‚°γƒ«γƒΌγƒ—γ€Œ%s」から破棄しますか?'; + $lang['strmemberdropped'] = 'γƒ‘γƒ³γƒγƒΌγ‚’η ΄ζ£„γ—γΎγ—γŸγ€‚'; + $lang['strmemberdroppedbad'] = 'パンバーγη ΄ζ£„γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + + // Roles + $lang['strrole'] = 'ロール'; + $lang['strroles'] = 'ロール'; + $lang['strshowallroles'] = 'すべてγγƒ­γƒΌγƒ«γ‚’葨瀺する'; + $lang['strnoroles'] = 'γƒ­γƒΌγƒ«γŒθ¦‹γ€γ‹γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strinheritsprivs'] = 'η‰Ήζ¨©γ‚’εΌ•γηΆ™γŽγΎγ™γ‹?'; + $lang['strcreaterole'] = 'γƒ­γƒΌγƒ«γ‚’δ½œζˆγ™γ‚‹'; + $lang['strcancreaterole'] = 'γƒ­γƒΌγƒ«γ‚’δ½œζˆγ§γγΎγ™γ‹?'; + $lang['strrolecreated'] = 'γƒ­γƒΌγƒ«γ‚’δ½œζˆγ—γΎγ—γŸγ€‚'; + $lang['strrolecreatedbad'] = 'ロールγδ½œζˆγ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strrolealtered'] = 'γƒ­γƒΌγƒ«γ‚’ε€‰ζ›΄γ—γΎγ—γŸγ€‚'; + $lang['strrolealteredbad'] = 'ロールγε€‰ζ›΄γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strcanlogin'] = 'ログむンできますか?'; + $lang['strconnlimit'] = 'ζŽ₯ηΆšεˆΆι™'; + $lang['strdroprole'] = 'ロールを破棄する'; + $lang['strconfdroprole'] = 'ζœ¬ε½“γ«γƒ­γƒΌγƒ«γ€Œ%s」を破棄しますか?'; + $lang['strroledropped'] = 'γƒ­γƒΌγƒ«γ‚’η ΄ζ£„γ—γΎγ—γŸγ€‚'; + $lang['strroledroppedbad'] = 'ロールγη ΄ζ£„γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strnolimit'] = 'εˆΆι™γͺし'; + $lang['strnever'] = 'Never'; + $lang['strroleneedsname'] = 'ロールγεε‰γ‚’ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“γ€‚'; + + // Privileges + $lang['strprivilege'] = '特権'; + $lang['strprivileges'] = '特権'; + $lang['strnoprivileges'] = 'こγγ‚ͺγƒ–γ‚Έγ‚§γ‚―γƒˆγ―η‰Ήζ¨©γ‚’ζŒγ£γ¦γ„γΎγ›γ‚“γ€‚'; + $lang['strgrant'] = '権限'; + $lang['strrevoke'] = '廃歒'; + $lang['strgranted'] = 'η‰Ήζ¨©γ‚’δΈŽγˆγΎγ—γŸγ€‚'; + $lang['strgrantfailed'] = 'η‰Ήζ¨©γ‚’δΈŽγˆγ‚‹δΊ‹γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strgrantbad'] = 'ε°‘γͺくとも一人γγƒ¦γƒΌγ‚ΆγƒΌγ‹γ‚°γƒ«γƒΌγƒ—に、少γͺくともひと぀γη‰Ήζ¨©γ‚’ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strgrantor'] = '譲与'; + $lang['strasterisk'] = '*'; + + // Databases + $lang['strdatabase'] = 'データベース'; + $lang['strdatabases'] = 'データベース'; + $lang['strshowalldatabases'] = 'すべてγγƒ‡γƒΌγ‚Ώγƒ™γƒΌγ‚Ήγ‚’葨瀺する'; + $lang['strnodatabases'] = 'γƒ‡γƒΌγ‚Ώγƒ™γƒΌγ‚ΉγŒγΎγ£γŸγγ‚γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strcreatedatabase'] = 'γƒ‡γƒΌγ‚Ώγƒ™γƒΌγ‚Ήγ‚’δ½œζˆγ™γ‚‹'; + $lang['strdatabasename'] = 'データベース名'; + $lang['strdatabaseneedsname'] = 'γƒ‡γƒΌγ‚Ώγƒ™γƒΌγ‚Ήεγ‚’ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strdatabasecreated'] = 'γƒ‡γƒΌγ‚Ώγƒ™γƒΌγ‚Ήγ‚’δ½œζˆγ—γΎγ—γŸγ€‚'; + $lang['strdatabasecreatedbad'] = 'データベースγδ½œζˆγ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strconfdropdatabase'] = 'ζœ¬ε½“γ«γƒ‡γƒΌγ‚Ώγƒ™γƒΌγ‚Ήγ€Œ%s」を破棄しますか?'; + $lang['strdatabasedropped'] = 'γƒ‡γƒΌγ‚Ώγƒ™γƒΌγ‚Ήγ‚’η ΄ζ£„γ—γΎγ—γŸγ€‚'; + $lang['strdatabasedroppedbad'] = 'データベースγη ΄ζ£„γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strentersql'] = '下にεŸθ‘Œγ™γ‚‹SQLγ‚’ε…₯εŠ›γ—γΎγ™:'; + $lang['strsqlexecuted'] = 'SQLγ‚’εŸθ‘Œγ—γΎγ—γŸγ€‚'; + $lang['strvacuumgood'] = 'バキγƒ₯γƒΌγƒ γ‚’εŒδΊ†γ—γΎγ—γŸγ€‚'; + $lang['strvacuumbad'] = 'バキγƒ₯γƒΌγƒ γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['stranalyzegood'] = 'θ§£ζžγ‚’εŒδΊ†γ—γΎγ—γŸγ€‚'; + $lang['stranalyzebad'] = 'θ§£ζžγ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strreindexgood'] = '再むンデックスをεŒδΊ†γ—γΎγ—γŸγ€‚'; + $lang['strreindexbad'] = 'ε†γ‚€γƒ³γƒ‡γƒƒγ‚―γ‚Ήγ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strfull'] = 'すべて'; + $lang['strfreeze'] = 'フγƒͺγƒΌγ‚Ί'; + $lang['strforce'] = '強刢'; + $lang['strsignalsent'] = 'γ‚·γ‚°γƒŠγƒ«ι€δΏ‘'; + $lang['strsignalsentbad'] = 'γ‚·γ‚°γƒŠγƒ«ι€δΏ‘γ«ε€±ζ•—γ—γΎγ—γŸ'; + $lang['strallobjects'] = 'すべてγγ‚ͺγƒ–γ‚Έγ‚§γ‚―γƒˆ'; + $lang['strdatabasealtered'] = 'γƒ‡γƒΌγ‚Ώγƒ™γƒΌγ‚Ήγ‚’ε€‰ζ›΄γ—γΎγ—γŸγ€‚'; + $lang['strdatabasealteredbad'] = 'データベースγε€‰ζ›΄γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strspecifydatabasetodrop'] = 'データベースを破棄するには少γͺくとも 1 γ€ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“'; + + // Views + $lang['strview'] = 'ビγƒ₯γƒΌ'; + $lang['strviews'] = 'ビγƒ₯γƒΌ'; + $lang['strshowallviews'] = 'すべてγγƒ“γƒ₯ーを葨瀺する'; + $lang['strnoview'] = 'ビγƒ₯γƒΌγŒγ‚γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strnoviews'] = 'ビγƒ₯γƒΌγŒθ¦‹γ€γ‹γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strcreateview'] = 'ビγƒ₯γƒΌγ‚’δ½œζˆγ™γ‚‹'; + $lang['strviewname'] = 'ビγƒ₯ー名'; + $lang['strviewneedsname'] = 'ビγƒ₯γƒΌεγ‚’ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strviewneedsdef'] = 'εšηΎ©εγ‚’ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strviewneedsfields'] = 'ビγƒ₯γƒΌγγδΈ­γ‹γ‚‰ιΈζŠžγ—γ€εΈŒζœ›γγ‚«γƒ©γƒ γ‚’ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strviewcreated'] = 'ビγƒ₯γƒΌγ‚’δ½œζˆγ—γΎγ—γŸγ€‚'; + $lang['strviewcreatedbad'] = 'ビγƒ₯γƒΌγδ½œζˆγ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strconfdropview'] = 'ζœ¬ε½“γ«γƒ“γƒ₯γƒΌγ€Œ%s」を破棄しますか?'; + $lang['strviewdropped'] = 'ビγƒ₯γƒΌγ‚’η ΄ζ£„γ—γΎγ—γŸγ€‚'; + $lang['strviewdroppedbad'] = 'ビγƒ₯γƒΌγη ΄ζ£„γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strviewupdated'] = 'ビγƒ₯γƒΌγ‚’ζ›΄ζ–°γ—γΎγ—γŸγ€‚'; + $lang['strviewupdatedbad'] = 'ビγƒ₯γƒΌγζ›΄ζ–°γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strviewlink'] = 'γƒͺγƒ³γ‚―γ—γŸγ‚­γƒΌ'; + $lang['strviewconditions'] = '追加村仢'; + $lang['strcreateviewwiz'] = 'ウィアードでビγƒ₯γƒΌγ‚’δ½œζˆγ™γ‚‹'; + $lang['strrenamedupfields'] = '重耇項η›γεε‰γ‚’倉更する'; + $lang['strdropdupfields'] = '重耇項η›γ‚’破棄する'; + $lang['strerrordupfields'] = '重耇項η›γγ‚¨γƒ©γƒΌγ§γ™'; + $lang['strviewaltered'] = 'ビγƒ₯γƒΌγ‚’ε€‰ζ›΄γ—γΎγ—γŸγ€‚'; + $lang['strviewalteredbad'] = 'ビγƒ₯γƒΌγε€‰ζ›΄γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strspecifyviewtodrop'] = 'ビγƒ₯ーを破棄するには少γͺくとも 1 γ€ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“'; + + // Sequences + $lang['strsequence'] = 'シーケンス'; + $lang['strsequences'] = 'シーケンス'; + $lang['strshowallsequences'] = 'すべてγγ‚·γƒΌγ‚±γƒ³γ‚Ήγ‚’葨瀺する'; + $lang['strnosequence'] = 'γ‚·γƒΌγ‚±γƒ³γ‚ΉγŒγ‚γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strnosequences'] = 'γ‚·γƒΌγ‚±γƒ³γ‚ΉγŒθ¦‹γ€γ‹γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strcreatesequence'] = 'γ‚·γƒΌγ‚±γƒ³γ‚Ήγ‚’δ½œζˆγ™γ‚‹'; + $lang['strlastvalue'] = 'ζœ€η΅‚ε€€'; + $lang['strincrementby'] = 'ε’—εŠ ζ•°'; + $lang['strstartvalue'] = '開始倀'; + $lang['strmaxvalue'] = 'ζœ€ε€§ε€€'; + $lang['strminvalue'] = 'ζœ€ε°ε€€'; + $lang['strcachevalue'] = 'キャッシγƒ₯ε€€'; + $lang['strlogcount'] = 'γƒ­γ‚°γ‚«γ‚¦γƒ³γƒˆ'; +$lang['strcancycle'] = 'Can cycle?'; +$lang['striscalled'] = 'Will increment last value before returning next value (is_called)?'; + $lang['strsequenceneedsname'] = 'γ‚·γƒΌγ‚±γƒ³γ‚Ήεγ‚’ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strsequencecreated'] = 'γ‚·γƒΌγ‚±γƒ³γ‚Ήγ‚’δ½œζˆγ—γΎγ—γŸγ€‚'; + $lang['strsequencecreatedbad'] = 'シーケンスγδ½œζˆγ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strconfdropsequence'] = 'ζœ¬ε½“γ«γ‚·γƒΌγ‚±γƒ³γ‚Ήγ€Œ%s」を破棄しますか?'; + $lang['strsequencedropped'] = 'γ‚·γƒΌγ‚±γƒ³γ‚Ήγ‚’η ΄ζ£„γ—γΎγ—γŸγ€‚'; + $lang['strsequencedroppedbad'] = 'シーケンスγη ΄ζ£„γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strsequencereset'] = 'シーケンスγƒͺγ‚»γƒƒγƒˆγ‚’θ‘Œγ„γΎγ—γŸγ€‚'; + $lang['strsequenceresetbad'] = 'シーケンスγγƒͺγ‚»γƒƒγƒˆγ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strsequencealtered'] = 'γ‚·γƒΌγ‚±γƒ³γ‚Ήγ‚’ε€‰ζ›΄γ—γΎγ—γŸγ€‚'; + $lang['strsequencealteredbad'] = 'シーケンスγε€‰ζ›΄γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strsetval'] = 'ε€€γ‚’θ¨­εšγ™γ‚‹'; + $lang['strsequencesetval'] = 'シーケンス倀を設εšγ—γΎγ—γŸγ€‚'; + $lang['strsequencesetvalbad'] = 'シーケンス倀γθ¨­εšγ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strnextval'] = 'ε€€γ‚’ε’—εŠ γ™γ‚‹'; + $lang['strsequencenextval'] = 'ε€€γ‚’ε’—εŠ γ—γΎγ—γŸγ€‚'; + $lang['strsequencenextvalbad'] = 'ε€€γε’—εŠ γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strspecifysequencetodrop'] = 'シーケンスを破棄するには少γͺくとも 1 γ€ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“'; + + // Indexes + $lang['strindex'] = 'むンデックス'; + $lang['strindexes'] = 'むンデックス'; + $lang['strindexname'] = 'むンデックス名'; + $lang['strshowallindexes'] = 'すべてγγ‚€γƒ³γƒ‡γƒƒγ‚―スを葨瀺する'; + $lang['strnoindex'] = 'γ‚€γƒ³γƒ‡γƒƒγ‚―γ‚ΉγŒγ‚γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strnoindexes'] = 'γ‚€γƒ³γƒ‡γƒƒγ‚―γ‚ΉγŒθ¦‹γ€γ‹γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strcreateindex'] = 'γ‚€γƒ³γƒ‡γƒƒγ‚―γ‚Ήγ‚’δ½œζˆγ™γ‚‹'; + $lang['strtabname'] = 'タブ名'; + $lang['strcolumnname'] = 'カラム名'; + $lang['strindexneedsname'] = 'ζœ‰εŠΉγͺγ‚€γƒ³γƒ‡γƒƒγ‚―γ‚Ήεγ‚’ζŒ‡εšγ—γͺγ‘γ‚Œγ°γ„γ‘γΎγ›γ‚“γ€‚'; + $lang['strindexneedscols'] = 'ζœ‰εŠΉγͺγ‚«γƒ©γƒ ζ•°γ‚’ζŒ‡εšγ—γͺγ‘γ‚Œγ°γ„γ‘γΎγ›γ‚“γ€‚'; + $lang['strindexcreated'] = 'γ‚€γƒ³γƒ‡γƒƒγ‚―γ‚Ήγ‚’δ½œζˆγ—γΎγ—γŸγ€‚'; + $lang['strindexcreatedbad'] = 'むンデックスγδ½œζˆγ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strconfdropindex'] = 'ζœ¬ε½“γ«γ‚€γƒ³γƒ‡γƒƒγ‚―γ‚Ήγ€Œ%s」を破棄しますか?'; + $lang['strindexdropped'] = 'γ‚€γƒ³γƒ‡γƒƒγ‚―γ‚Ήγ‚’η ΄ζ£„γ—γΎγ—γŸγ€‚'; + $lang['strindexdroppedbad'] = 'むンデックスγη ΄ζ£„γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strkeyname'] = 'キー名'; + $lang['struniquekey'] = 'ユニークキー'; + $lang['strprimarykey'] = 'γƒ—γƒ©γ‚€γƒžγƒͺγ‚­γƒΌ'; + $lang['strindextype'] = 'むンデックスタむプ'; + $lang['strtablecolumnlist'] = 'テーブル中γγ‚«γƒ©γƒ '; + $lang['strindexcolumnlist'] = 'むンデックス中γγ‚«γƒ©γƒ '; + $lang['strconfcluster'] = 'ζœ¬ε½“γ«γ€Œ%s」をクラスターにしますか?'; + $lang['strclusteredgood'] = 'クラスターεŒδΊ†γ§γ™γ€‚'; + $lang['strclusteredbad'] = 'γ‚―γƒ©γ‚Ήγ‚ΏγƒΌγ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strcluster'] = 'クラスター'; + + // Rules + $lang['strrules'] = 'ルール'; + $lang['strrule'] = 'ルール'; + $lang['strshowallrules'] = 'すべてγγƒ«γƒΌγƒ«γ‚’葨瀺する'; + $lang['strnorule'] = 'γƒ«γƒΌγƒ«γŒγ‚γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strnorules'] = 'γƒ«γƒΌγƒ«γŒθ¦‹γ€γ‹γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strcreaterule'] = 'γƒ«γƒΌγƒ«γ‚’δ½œζˆγ™γ‚‹'; + $lang['strrulename'] = 'ルール名'; + $lang['strruleneedsname'] = 'γƒ«γƒΌγƒ«εγ‚’ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strrulecreated'] = 'γƒ«γƒΌγƒ«γ‚’δ½œζˆγ—γΎγ—γŸγ€‚'; + $lang['strrulecreatedbad'] = 'ルールγδ½œζˆγ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strconfdroprule'] = 'ζœ¬ε½“γ«γƒ«γƒΌγƒ«γ€Œ%sγ€γ‚’γƒ‡γƒΌγ‚Ώγƒ™γƒΌγ‚Ήγ€Œ%s」から破棄しますか?'; + $lang['strruledropped'] = 'γƒ«γƒΌγƒ«γ‚’η ΄ζ£„γ—γΎγ—γŸγ€‚'; + $lang['strruledroppedbad'] = 'ルールγη ΄ζ£„γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + + // Constraints + $lang['strconstraint'] = 'ζ€œζŸ»εˆΆη΄„'; + $lang['strconstraints'] = 'ζ€œζŸ»εˆΆη΄„'; + $lang['strshowallconstraints'] = 'すべてγζ€œζŸ»εˆΆη΄„を葨瀺する'; + $lang['strnoconstraints'] = 'ζ€œζŸ»εˆΆη΄„γŒγ‚γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strcreateconstraint'] = 'ζ€œζŸ»εˆΆη΄„γ‚’δ½œζˆγ™γ‚‹'; + $lang['strconstraintcreated'] = 'ζ€œζŸ»εˆΆη΄„γ‚’δ½œζˆγ—γΎγ—γŸγ€‚'; + $lang['strconstraintcreatedbad'] = 'ζ€œζŸ»εˆΆη΄„γδ½œζˆγ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strconfdropconstraint'] = 'ζœ¬ε½“γ«ζ€œζŸ»εˆΆη΄„γ€Œ%sγ€γ‚’γƒ‡γƒΌγ‚Ώγƒ™γƒΌγ‚Ήγ€Œ%s」から破棄しますか?'; + $lang['strconstraintdropped'] = 'ζ€œζŸ»εˆΆη΄„γ‚’η ΄ζ£„γ—γΎγ—γŸγ€‚'; + $lang['strconstraintdroppedbad'] = 'ζ€œζŸ»εˆΆη΄„γη ΄ζ£„γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['straddcheck'] = 'ζ€œζŸ»γ‚’θΏ½εŠ γ™γ‚‹'; + $lang['strcheckneedsdefinition'] = 'ζ€œζŸ»εˆΆη΄„γ«γ―εšηΎ©γŒεΏ…要です。'; + $lang['strcheckadded'] = 'ζ€œζŸ»εˆΆη΄„γ‚’θΏ½εŠ γ—γΎγ—γŸγ€‚'; + $lang['strcheckaddedbad'] = 'ζ€œζŸ»εˆΆη΄„γθΏ½εŠ γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['straddpk'] = 'γƒ—γƒ©γ‚€γƒžγƒͺγ‚­γƒΌγ‚’θΏ½εŠ γ™γ‚‹'; + $lang['strpkneedscols'] = 'γƒ—γƒ©γ‚€γƒžγƒͺキーは少γͺくとも一カラムを必要とします。'; + $lang['strpkadded'] = 'γƒ—γƒ©γ‚€γƒžγƒͺγ‚­γƒΌγ‚’θΏ½εŠ γ—γΎγ—γŸγ€‚'; + $lang['strpkaddedbad'] = 'γƒ—γƒ©γ‚€γƒžγƒͺγ‚­γƒΌγθΏ½εŠ γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['stradduniq'] = 'γƒ¦γƒ‹γƒΌγ‚―γ‚­γƒΌγ‚’θΏ½εŠ γ™γ‚‹'; + $lang['struniqneedscols'] = 'ユニークキーは少γͺくとも一カラムを必要とします。'; + $lang['struniqadded'] = 'γƒ¦γƒ‹γƒΌγ‚―γ‚­γƒΌγ‚’θΏ½εŠ γ—γΎγ—γŸγ€‚'; + $lang['struniqaddedbad'] = 'ユニークキーγθΏ½εŠ γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['straddfk'] = 'ε€–ιƒ¨γ‚­γƒΌγ‚’θΏ½εŠ γ™γ‚‹'; + $lang['strfkneedscols'] = '倖部キーは少γͺくとも一カラムを必要とします。'; + $lang['strfkneedstarget'] = 'ε€–ιƒ¨γ‚­γƒΌγ―γ‚ΏγƒΌγ‚²γƒƒγƒˆγƒ†γƒΌγƒ–γƒ«γ‚’εΏ…θ¦γ¨γ—γΎγ™γ€‚'; + $lang['strfkadded'] = 'ε€–ιƒ¨γ‚­γƒΌγ‚’θΏ½εŠ γ—γΎγ—γŸγ€‚'; + $lang['strfkaddedbad'] = '倖部キーγθΏ½εŠ γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strfktarget'] = '対豑テーブル'; + $lang['strfkcolumnlist'] = 'γ‚­γƒΌδΈ­γγ‚«γƒ©γƒ '; + $lang['strondelete'] = 'ON DELETE'; + $lang['stronupdate'] = 'ON UPDATE'; + + // Functions + $lang['strfunction'] = 'ι–’ζ•°'; + $lang['strfunctions'] = 'ι–’ζ•°'; + $lang['strshowallfunctions'] = 'すべて閒数を葨瀺する'; + $lang['strnofunction'] = 'ι–’ζ•°γŒγ‚γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strnofunctions'] = 'ι–’ζ•°γŒθ¦‹γ€γ‹γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strcreateplfunction'] = 'SQL/PL ι–’ζ•°γ‚’δ½œζˆγ™γ‚‹'; + $lang['strcreateinternalfunction'] = 'ε†…ιƒ¨ι–’ζ•°γ‚’δ½œζˆγ™γ‚‹'; + $lang['strcreatecfunction'] = 'C ι–’ζ•°γ‚’δ½œζˆγ™γ‚‹'; + $lang['strfunctionname'] = '閒数名'; + $lang['strreturns'] = 'θΏ”γ‚Šε€€'; + $lang['strproglanguage'] = 'γƒ—γƒ­γ‚°γƒ©γƒŸγƒ³γ‚°θ¨€θͺž'; + $lang['strfunctionneedsname'] = 'ι–’ζ•°εγ‚’ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strfunctionneedsdef'] = 'ι–’ζ•°γεšηΎ©γ‚’しγͺγ‘γ‚Œγ°γͺγ‚Šγ‚γ›γ‚“γ€‚'; + $lang['strfunctioncreated'] = 'ι–’ζ•°γ‚’δ½œζˆγ—γΎγ—γŸγ€‚'; + $lang['strfunctioncreatedbad'] = 'ι–’ζ•°γδ½œζˆγ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strconfdropfunction'] = 'ζœ¬ε½“γ«ι–’ζ•°γ€Œ%s」を破棄しますか?'; + $lang['strfunctiondropped'] = 'ι–’ζ•°γ‚’η ΄ζ£„γ—γΎγ—γŸγ€‚'; + $lang['strfunctiondroppedbad'] = 'ι–’ζ•°γη ΄ζ£„γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strfunctionupdated'] = 'ι–’ζ•°γ‚’ζ›΄ζ–°γ—γΎγ—γŸγ€‚'; + $lang['strfunctionupdatedbad'] = 'ι–’ζ•°γζ›΄ζ–°γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strobjectfile'] = 'γ‚ͺγƒ–γ‚Έγ‚§γ‚―γƒˆγƒ•γ‚‘γ‚€γƒ«'; + $lang['strlinksymbol'] = 'γƒͺγƒ³γ‚―γ‚·γƒ³γƒœγƒ«'; + $lang['strarguments'] = 'εΌ•ζ•°'; + $lang['strargmode'] = 'ヒード'; + $lang['strargtype'] = 'η¨ι‘ž'; + $lang['strargadd'] = 'δ»–γεΌ•ζ•°γ‚’θΏ½εŠ γ™γ‚‹'; + $lang['strargremove'] = 'こγεΌ•ζ•°γ‚’ε‰Šι™€γ™γ‚‹'; + $lang['strargnoargs'] = 'こγι–’数はいく぀かγεΌ•ζ•°γ‚’取らγͺでしょう。'; +$lang['strargenableargs'] = 'Enable arguments being passed to this function.'; + $lang['strargnorowabove'] = 'こγθ‘ŒγδΈŠγ«θ‘ŒγŒεΏ…要です。'; + $lang['strargnorowbelow'] = 'こγθ‘ŒγδΈ‹γ«θ‘ŒγŒεΏ…要です。'; + $lang['strargraise'] = 'δΈŠγ«η§»ε‹•γ—γΎγ™γ€‚'; + $lang['strarglower'] = '下に移動します。'; + $lang['strargremoveconfirm'] = 'ζœ¬ε½“γ«γ“γεΌ•ζ•°γ‚’ε‰Šι™€γ—γΎγ™γ‹? γ“γ‚Œγ―ζˆ»γ™γ“γ¨γŒγ§γγΎγ›γ‚“This CANNOT be undone。'; +$lang['strfunctioncosting'] = 'Function Costing'; +$lang['strresultrows'] = 'Result Rows'; +$lang['strexecutioncost'] = 'Execution Cost'; + $lang['strspecifyfunctiontodrop'] = '閒数を破棄するには少γͺくとも 1 γ€ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“'; + + // Triggers + $lang['strtrigger'] = 'γƒˆγƒͺガー'; + $lang['strtriggers'] = 'γƒˆγƒͺガー'; + $lang['strshowalltriggers'] = 'すべてγγƒˆγƒͺガーを葨瀺する'; + $lang['strnotrigger'] = 'γƒˆγƒͺγ‚¬γƒΌγŒγ‚γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strnotriggers'] = 'γƒˆγƒͺγ‚¬γƒΌγŒθ¦‹γ€γ‹γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strcreatetrigger'] = 'γƒˆγƒͺγ‚¬γƒΌγ‚’δ½œζˆγ™γ‚‹'; + $lang['strtriggerneedsname'] = 'γƒˆγƒͺγ‚¬γƒΌεγ‚’ζŒ‡εšγ™γ‚‹εΏ…θ¦γŒγ‚γ‚ŠγΎγ™γ€‚'; + $lang['strtriggerneedsfunc'] = 'γƒˆγƒͺガーγγŸγ‚γι–’ζ•°γ‚’ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strtriggercreated'] = 'γƒˆγƒͺγ‚¬γƒΌγ‚’δ½œζˆγ—γΎγ—γŸγ€‚'; + $lang['strtriggercreatedbad'] = 'γƒˆγƒͺガーγδ½œζˆγ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strconfdroptrigger'] = 'ζœ¬ε½“γ«γƒˆγƒͺγ‚¬γƒΌγ€Œ%sγ€γ‚’γƒ‡γƒΌγ‚Ώγƒ™γƒΌγ‚Ήγ€Œ%s」から破棄しますか?'; + $lang['strconfenabletrigger'] = 'ζœ¬ε½“γ«γ€Œ%2$s」γγƒˆγƒͺγ‚¬γƒΌγ€Œ%1$sγ€γ‚’ζœ‰εŠΉγ«γ—γΎγ™γ‹?'; + $lang['strconfdisabletrigger'] = 'ζœ¬ε½“γ«γ€Œ%2$s」γγƒˆγƒͺγ‚¬γƒΌγ€Œ%1$sγ€γ‚’η„‘εŠΉγ«γ—γΎγ™γ‹?'; + $lang['strtriggerdropped'] = 'γƒˆγƒͺγ‚¬γƒΌγ‚’η ΄ζ£„γ—γΎγ—γŸγ€‚'; + $lang['strtriggerdroppedbad'] = 'γƒˆγƒͺガーγη ΄ζ£„γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strtriggerenabled'] = 'γƒˆγƒͺγ‚¬γƒΌγ‚’ζœ‰εŠΉγ«γ—γΎγ—γŸγ€‚'; + $lang['strtriggerenabledbad'] = 'γƒˆγƒͺガーγζœ‰εŠΉεŒ–γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strtriggerdisabled'] = 'γƒˆγƒͺγ‚¬γƒΌγ‚’η„‘εŠΉγ«γ—γΎγ—γŸγ€‚'; + $lang['strtriggerdisabledbad'] = 'γƒˆγƒͺガーγη„‘εŠΉεŒ–γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strtriggeraltered'] = 'γƒˆγƒͺγ‚¬γƒΌγ‚’ε€‰ζ›΄γ—γΎγ—γŸγ€‚'; + $lang['strtriggeralteredbad'] = 'γƒˆγƒͺガーγε€‰ζ›΄γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; +$lang['strforeach'] = 'For each'; + + // Types + $lang['strtype'] = 'γƒ‡γƒΌγ‚Ώεž‹'; + $lang['strtypes'] = 'γƒ‡γƒΌγ‚Ώεž‹'; + $lang['strshowalltypes'] = 'すべてγγƒ‡γƒΌγ‚Ώεž‹γ‚’葨瀺する'; + $lang['strnotype'] = 'γƒ‡γƒΌγ‚Ώεž‹γŒγ‚γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strnotypes'] = 'γƒ‡γƒΌγ‚Ώεž‹γŒθ¦‹γ€γ‹γ‚ŠγΎγ›γ‚“γ§γ—γŸγ€‚'; + $lang['strcreatetype'] = 'γƒ‡γƒΌγ‚Ώεž‹γ‚’δ½œζˆγ™γ‚‹'; + $lang['strcreatecomptype'] = 'θ€‡εˆεž‹γ‚’δ½œζˆγ™γ‚‹'; +$lang['strcreateenumtype'] = 'Create enum type'; + $lang['strtypeneedsfield'] = 'ε°‘γͺくとも 1 ぀γγƒ•γ‚£γƒΌγƒ«γƒ‰γ‚’ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strtypeneedsvalue'] = 'ε°‘γͺくとも 1 ぀γε€€γ‚’ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strtypeneedscols'] = 'ζœ‰εŠΉγͺフィールドγζ•°γ‚’ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“γ€‚'; +$lang['strtypeneedsvals'] = 'You must specify a valid number of values.'; + $lang['strinputfn'] = 'ε…₯εŠ›ι–’ζ•°'; + $lang['stroutputfn'] = 'ε‡ΊεŠ›ι–’ζ•°'; +$lang['strpassbyval'] = 'Passed by val?'; + $lang['stralignment'] = 'γ‚’γƒ©γ‚€γƒ‘γƒ³γƒˆ'; + $lang['strelement'] = '要素'; + $lang['strdelimiter'] = 'γƒ‡γƒŸγƒͺγ‚Ώ'; + $lang['strstorage'] = 'γ‚Ήγƒˆγƒ¬γƒΌγ‚Έ'; + $lang['strfield'] = 'フィールド'; +$lang['strvalue'] = 'Value'; +$lang['strvalue'] = 'Value'; + $lang['strnumfields'] = 'フィールド数'; +$lang['strnumvalues'] = 'Num. of values'; + $lang['strtypeneedsname'] = 'εž‹εγ‚’ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strtypeneedslen'] = 'γƒ‡γƒΌγ‚Ώεž‹γι•·γ•γ‚’ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strtypecreated'] = 'γƒ‡γƒΌγ‚Ώεž‹γ‚’δ½œζˆγ—γΎγ—γŸγ€‚'; + $lang['strtypecreatedbad'] = 'γƒ‡γƒΌγ‚Ώεž‹γδ½œζˆγ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strconfdroptype'] = 'ζœ¬ε½“γ«γƒ‡γƒΌγ‚Ώεž‹γ€Œ%s」を破棄しますか?'; + $lang['strtypedropped'] = 'γƒ‡γƒΌγ‚Ώεž‹γ‚’η ΄ζ£„γ—γΎγ—γŸγ€‚'; + $lang['strtypedroppedbad'] = 'γƒ‡γƒΌγ‚Ώεž‹γη ΄ζ£„γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strflavor'] = 'η¨ι‘ž'; + $lang['strbasetype'] = '基本'; + $lang['strcompositetype'] = 'θ€‡εˆεž‹'; + $lang['strpseudotype'] = '擬似データ'; +$lang['strenum'] = 'Enum'; +$lang['strenumvalues'] = 'Enum Values'; + + // Schemas + $lang['strschema'] = 'γ‚Ήγ‚­γƒΌγƒž'; + $lang['strschemas'] = 'γ‚Ήγ‚­γƒΌγƒž'; + $lang['strshowallschemas'] = 'すべてγγ‚Ήγ‚­γƒΌγƒžγ‚’葨瀺する'; + $lang['strnoschema'] = 'γ‚Ήγ‚­γƒΌγƒžγŒγ‚γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strnoschemas'] = 'γ‚Ήγ‚­γƒΌγƒžγŒθ¦‹γ€γ‹γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strcreateschema'] = 'γ‚Ήγ‚­γƒΌγƒžγ‚’δ½œζˆγ™γ‚‹'; + $lang['strschemaname'] = 'γ‚Ήγ‚­γƒΌγƒžε'; + $lang['strschemaneedsname'] = 'γ‚Ήγ‚­γƒΌγƒžεγ‚’ζŒ‡εšγ™γ‚‹εΏ…θ¦γŒγ‚γ‚ŠγΎγ™γ€‚'; + $lang['strschemacreated'] = 'γ‚Ήγ‚­γƒΌγƒžγ‚’δ½œζˆγ—γΎγ—γŸγ€‚'; + $lang['strschemacreatedbad'] = 'γ‚Ήγ‚­γƒΌγƒžγδ½œζˆγ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strconfdropschema'] = 'ζœ¬ε½“γ«γ‚Ήγ‚­γƒΌγƒžγ€Œ%s」を破棄しますか?'; + $lang['strschemadropped'] = 'γ‚Ήγ‚­γƒΌγƒžγ‚’η ΄ζ£„γ—γΎγ—γŸγ€‚'; + $lang['strschemadroppedbad'] = 'γ‚Ήγ‚­γƒΌγƒžγη ΄ζ£„γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strschemaaltered'] = 'γ‚Ήγ‚­γƒΌγƒžγ‚’ε€‰ζ›΄γ—γΎγ—γŸγ€‚'; + $lang['strschemaalteredbad'] = 'γ‚Ήγ‚­γƒΌγƒžγε€‰ζ›΄γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strsearchpath'] = 'γ‚Ήγ‚­γƒΌγƒžζ€œη΄’γƒ‘γ‚Ή'; + $lang['strspecifyschematodrop'] = 'γ‚Ήγ‚­γƒΌγƒžγ‚’η ΄ζ£„γ™γ‚‹γ«γ―ε°‘γͺくとも 1 γ€ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“'; + + // Reports + + // Domains + $lang['strdomain'] = 'ドパむン'; + $lang['strdomains'] = 'ドパむン'; + $lang['strshowalldomains'] = 'すべてγγƒ‰γƒ‘むンを葨瀺する'; + $lang['strnodomains'] = 'γƒ‰γƒ‘γ‚€γƒ³γŒγ‚γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strcreatedomain'] = 'γƒ‰γƒ‘γ‚€γƒ³δ½œζˆ'; + $lang['strdomaindropped'] = 'γƒ‰γƒ‘γ‚€γƒ³γ‚’η ΄ζ£„γ—γΎγ—γŸγ€‚'; + $lang['strdomaindroppedbad'] = 'ドパむンγη ΄ζ£„γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strconfdropdomain'] = 'ζœ¬ε½“γ«γƒ‰γƒ‘γ‚€γƒ³γ€Œ%s」を破棄しますか?'; + $lang['strdomainneedsname'] = 'γƒ‰γƒ‘γ‚€γƒ³εγ‚’ζŒ‡εšγ™γ‚‹εΏ…θ¦γŒγ‚γ‚ŠγΎγ™γ€‚'; + $lang['strdomaincreated'] = 'γƒ‰γƒ‘γ‚€γƒ³γ‚’δ½œζˆγ—γΎγ—γŸγ€‚'; + $lang['strdomaincreatedbad'] = 'ドパむンγδ½œζˆγ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strdomainaltered'] = 'γƒ‰γƒ‘γ‚€γƒ³γ‚’ε€‰ζ›΄γ—γΎγ—γŸγ€‚'; + $lang['strdomainalteredbad'] = 'ドパむンγε€‰ζ›΄γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + + // Operators + $lang['stroperator'] = 'ζΌ”η—子'; + $lang['stroperators'] = 'ζΌ”η—子'; + $lang['strshowalloperators'] = 'すべてγζΌ”η—子を葨瀺する'; + $lang['strnooperator'] = 'ζΌ”η—ε­γŒθ¦‹γ€γ‹γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strnooperators'] = 'ζΌ”η—ε­γ‚―γƒ©γ‚ΉγŒθ¦‹γ€γ‹γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strcreateoperator'] = 'ζΌ”η—ε­γ‚’δ½œζˆγ—γΎγ—γŸγ€‚'; + $lang['strleftarg'] = 'ε·¦εΌ•ζ•°γ‚Ώγ‚€γƒ—'; + $lang['strrightarg'] = '右引数タむプ'; + $lang['strcommutator'] = '亀代'; + $lang['strnegator'] = '否εš'; + $lang['strrestrict'] = 'εˆΆι™'; + $lang['strjoin'] = '硐合'; + $lang['strhashes'] = 'ハッシγƒ₯'; + $lang['strmerges'] = '佡合'; + $lang['strleftsort'] = 'ε·¦γ‚½γƒΌγƒˆ'; + $lang['strrightsort'] = 'ε³γ‚½γƒΌγƒˆ'; + $lang['strlessthan'] = 'ζœͺζΊ€'; + $lang['strgreaterthan'] = 'δ»₯上'; + $lang['stroperatorneedsname'] = 'ζΌ”η—ε­εγ‚’ζŒ‡εšγ™γ‚‹εΏ…θ¦γŒγ‚γ‚ŠγΎγ™γ€‚'; + $lang['stroperatorcreated'] = 'ζΌ”η—ε­γ‚’δ½œζˆγ—γΎγ—γŸγ€‚'; + $lang['stroperatorcreatedbad'] = 'ζΌ”η—子γδ½œζˆγ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strconfdropoperator'] = 'ζœ¬ε½“γ«ζΌ”η—ε­γ€Œ%s」を破棄しますか?'; + $lang['stroperatordropped'] = 'ζΌ”η—ε­γ‚’η ΄ζ£„γ—γΎγ—γŸγ€‚'; + $lang['stroperatordroppedbad'] = 'ζΌ”η—子γη ΄ζ£„γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + + // Casts + $lang['strcasts'] = 'γ‚­γƒ£γ‚Ήγƒˆ'; + $lang['strnocasts'] = 'γ‚­γƒ£γ‚ΉγƒˆγŒθ¦‹γ€γ‹γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strsourcetype'] = 'γ‚½γƒΌγ‚Ήγ‚Ώγ‚€γƒ—'; + $lang['strtargettype'] = 'γ‚ΏγƒΌγ‚²γƒƒγƒˆγ‚Ώγ‚€γƒ—'; + $lang['strimplicit'] = 'ζš—ι»™'; +$lang['strinassignment'] = 'In assignment'; + $lang['strbinarycompat'] = '(γƒγ‚€γƒŠγƒͺー互換)'; + + // Conversions + $lang['strconversions'] = '倉換'; + $lang['strnoconversions'] = 'ε€‰ζ›γŒθ¦‹γ€γ‹γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strsourceencoding'] = '倉換元エンコード'; + $lang['strtargetencoding'] = 'ε€‰ζ›ε…ˆγ‚¨γƒ³γ‚³γƒΌγƒ‰'; + + // Languages + $lang['strlanguages'] = '言θͺž'; + $lang['strnolanguages'] = '言θͺžγŒε­˜εœ¨γ—ません。'; +$lang['strtrusted'] = 'Trusted'; + + // Info + $lang['strnoinfo'] = 'ζœ‰εŠΉγͺζƒ…ε ±γŒγ‚γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strreferringtables'] = '参照テーブル'; + $lang['strparenttables'] = 'θ¦ͺテーブル'; + $lang['strchildtables'] = '子テーブル'; + + // Aggregates + $lang['straggregate'] = 'ι›†θ¨ˆ'; + $lang['straggregates'] = 'ι›†θ¨ˆ'; + $lang['strnoaggregates'] = 'ι›†θ¨ˆγŒγ‚γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['stralltypes'] = '(すべてγη¨ι‘ž)'; + $lang['strcreateaggregate'] = 'ι›†θ¨ˆγ‚’δ½œζˆγ™γ‚‹'; + $lang['straggrbasetype'] = 'ε…₯εŠ›γƒ‡γƒΌγ‚Ώγη¨ι‘ž'; + $lang['straggrsfunc'] = 'ηŠΆζ…‹ι·η§»ι–’ζ•°'; + $lang['straggrstype'] = 'ηŠΆζ…‹γƒ‡γƒΌγ‚Ώγη¨ι‘ž'; + $lang['straggrffunc'] = 'η΅‚δΊ†ι–’ζ•°'; + $lang['straggrinitcond'] = 'εˆζœŸηŠΆζ…‹'; + $lang['straggrsortop'] = 'γ‚½γƒΌγƒˆζ“δ½œ'; + $lang['strconfdropaggregate'] = 'ζœ¬ε½“γ«ι›†θ¨ˆγ€Œ%s」を破棄しますか?'; + $lang['straggregatedropped'] = 'ι›†θ¨ˆγ‚’η ΄ζ£„γ—γΎγ—γŸγ€‚'; + $lang['straggregatedroppedbad'] = 'ι›†θ¨ˆγη ΄ζ£„γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['straggraltered'] = 'ι›†θ¨ˆγ‚’ε€‰ζ›΄γ—γΎγ—γŸγ€‚'; + $lang['straggralteredbad'] = 'ι›†θ¨ˆγε€‰ζ›΄γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['straggrneedsname'] = 'ι›†θ¨ˆγ―εε‰γ‚’ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“'; + $lang['straggrneedsbasetype'] = 'ι›†θ¨ˆγ―ε…₯εŠ›γƒ‡γƒΌγ‚Ώγη¨ι‘žγ‚’ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“'; + $lang['straggrneedssfunc'] = 'ι›†θ¨ˆγ―ηŠΆζ…‹ι·η§»ι–’ζ•°γεε‰γ‚’ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“'; + $lang['straggrneedsstype'] = 'ι›†θ¨ˆγηŠΆζ…‹ε€€γγƒ‡γƒΌγ‚Ώγη¨ι‘žγ‚’ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“'; + $lang['straggrcreated'] = 'ι›†θ¨ˆγ‚’δ½œζˆγ—γΎγ—γŸγ€‚'; + $lang['straggrcreatedbad'] = 'ι›†θ¨ˆγδ½œζˆγ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['straggrshowall'] = 'すべてγι›†θ¨ˆγ‚’葨瀺する'; + + // Operator Classes + $lang['stropclasses'] = 'ζΌ”η—子クラス'; + $lang['strnoopclasses'] = 'ζΌ”η—ε­γ‚―γƒ©γ‚ΉγŒθ¦‹γ€γ‹γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['straccessmethod'] = 'をクセス方法'; + + // Stats and performance + $lang['strrowperf'] = 'θ‘Œγƒ‘γƒ•γ‚©γƒΌγƒžγƒ³γ‚Ή'; + $lang['strioperf'] = 'I/O γƒ‘γƒ•γ‚©γƒΌγƒžγƒ³γ‚Ή'; + $lang['stridxrowperf'] = 'γ‚€γƒ³γƒ‡γƒƒγ‚―γ‚Ήθ‘Œγƒ‘γƒ•γ‚©γƒΌγƒžγƒ³γ‚Ή'; + $lang['stridxioperf'] = 'むンデックス I/O γƒ‘γƒ•γ‚©γƒΌγƒžγƒ³γ‚Ή'; + $lang['strpercent'] = '%'; + $lang['strsequential'] = 'シーケンシャル'; + $lang['strscan'] = '怜紒'; + $lang['strread'] = 'θͺ­θΎΌ'; + $lang['strfetch'] = '取得'; + $lang['strheap'] = 'γƒ’γƒΌγƒ—'; + $lang['strtoast'] = 'TOAST'; + $lang['strtoastindex'] = 'TOAST むンデックス'; + $lang['strcache'] = 'キャッシγƒ₯'; + $lang['strdisk'] = 'ディスク'; + $lang['strrows2'] = '葌'; + + // Tablespaces + $lang['strtablespace'] = 'テーブル空間'; + $lang['strtablespaces'] = 'テーブル空間'; + $lang['strshowalltablespaces'] = 'すべてγγƒ†γƒΌγƒ–γƒ«γ‚ΉγƒšγƒΌγ‚Ήγ‚’θ‘¨η€Ίγ™γ‚‹'; + $lang['strnotablespaces'] = 'γƒ†γƒΌγƒ–γƒ«η©Ίι–“γŒθ¦‹γ€γ‹γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strcreatetablespace'] = 'γƒ†γƒΌγƒ–γƒ«η©Ίι–“γ‚’δ½œζˆγ™γ‚‹'; + $lang['strlocation'] = 'ロケーション'; + $lang['strtablespaceneedsname'] = 'γƒ†γƒΌγƒ–γƒ«η©Ίι–“εγ‚’ζŒ‡εšγ™γ‚‹εΏ…θ¦γŒγ‚γ‚ŠγΎγ™γ€‚'; + $lang['strtablespaceneedsloc'] = 'γƒ†γƒΌγƒ–γƒ«η©Ίι–“δ½œζˆγ‚’γ™γ‚‹γƒ‡γ‚£γƒ¬γ‚―γƒˆγƒͺγ‚’ζŒ‡εšγ™γ‚‹εΏ…θ¦γŒγ‚γ‚ŠγΎγ™γ€‚'; + $lang['strtablespacecreated'] = 'γƒ†γƒΌγƒ–γƒ«η©Ίι–“γ‚’δ½œζˆγ—γΎγ—γŸγ€‚'; + $lang['strtablespacecreatedbad'] = 'テーブル空間γδ½œζˆγ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strconfdroptablespace'] = 'ζœ¬ε½“γ«γƒ†γƒΌγƒ–γƒ«η©Ίι–“γ€Œ%s」を破棄しますか?'; + $lang['strtablespacedropped'] = 'γƒ†γƒΌγƒ–γƒ«η©Ίι–“γ‚’η ΄ζ£„γ—γΎγ—γŸγ€‚'; + $lang['strtablespacedroppedbad'] = 'テーブル空間γη ΄ζ£„γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strtablespacealtered'] = 'γƒ†γƒΌγƒ–γƒ«η©Ίι–“γ‚’ε€‰ζ›΄γ—γΎγ—γŸγ€‚'; + $lang['strtablespacealteredbad'] = 'テーブル空間γε€‰ζ›΄γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + + // Miscellaneous + $lang['strtopbar'] = 'ァーバー %2$s γγƒγƒΌγƒˆη•ͺ号 %3$s でεŸθ‘ŒδΈ­γ %1$s にζŽ₯碚中 -- γƒ¦γƒΌγ‚ΆγƒΌγ€Œ%4$s」としてログむン中'; + $lang['strtimefmt'] = 'Y εΉ΄ n 月 j ζ—₯ G:i'; + $lang['strhelp'] = 'γƒ˜γƒ«γƒ—'; + $lang['strhelpicon'] = '?'; + $lang['strhelppagebrowser'] = 'γƒ˜γƒ«γƒ—γƒšγƒΌγ‚Έγƒ–γƒ©γ‚¦γ‚ΆγƒΌ'; + $lang['strselecthelppage'] = 'γƒ˜γƒ«γƒ—γƒšγƒΌγ‚Έγ‚’ιΈγ‚“γ§γγ γ•γ„'; + $lang['strinvalidhelppage'] = 'η„‘εŠΉγͺγƒ˜γƒ«γƒ—γƒšγƒΌγ‚Έγ§γ™γ€‚'; + $lang['strlogintitle'] = '%s にログむン'; + $lang['strlogoutmsg'] = '%s γ‚’γƒ­γ‚°γ‚’γ‚¦γƒˆγ—γΎγ—γŸγ€‚'; + $lang['strloading'] = 'θͺ­γΏθΎΌγΏδΈ­...'; + $lang['strerrorloading'] = 'θͺ­γΏθΎΌγΏδΈ­γγ‚¨γƒ©γƒΌγ§γ™γ€‚'; + $lang['strclicktoreload'] = 'γ‚―γƒͺックで再θͺ­γΏθΎΌγΏ'; + + // Autovacuum + $lang['strautovacuum'] = 'γ‚ͺγƒΌγƒˆγƒγ‚­γƒ₯γƒΌγƒ '; + $lang['strturnedon'] = 'γ‚ͺンにする'; + $lang['strturnedoff'] = 'γ‚ͺフにする'; +$lang['strenabled'] = 'Enabled'; + $lang['strvacuumbasethreshold'] = 'ι–Ύε€€γ«εŸΊγ₯γ„γŸγƒγ‚­γƒ₯γƒΌγƒ '; +$lang['strvacuumscalefactor'] = 'Vacuum Scale Factor'; + $lang['stranalybasethreshold'] = 'ι–Ύε€€γ«εŸΊγ₯γ„γŸθ§£ζž'; +$lang['stranalyzescalefactor'] = 'Analyze Scale Factor'; +$lang['strvacuumcostdelay'] = 'Vacuum Cost Delay'; +$lang['strvacuumcostlimit'] = 'Vacuum Cost Limit'; + + // Table-level Locks + $lang['strlocks'] = 'ロック'; + $lang['strtransaction'] = 'γƒˆγƒ©γƒ³γ‚Άγ‚―γ‚·γƒ§γƒ³ ID'; + $lang['strvirtualtransaction'] = 'δ»ζƒ³γƒˆγƒ©γƒ³γ‚Άγ‚―ション ID'; + $lang['strprocessid'] = 'γƒ—γƒ­γ‚»γ‚Ή ID'; + $lang['strmode'] = 'ロックヒード'; +$lang['strislockheld'] = 'Is lock held?'; + + // Prepared transactions + $lang['strpreparedxacts'] = 'γƒ—γƒͺγƒšγ‚’γ‚’η”¨γ„γŸγƒˆγƒ©γƒ³γ‚Άγ‚―γ‚·γƒ§γƒ³'; + $lang['strxactid'] = 'γƒˆγƒ©γƒ³γ‚Άγ‚―γ‚·γƒ§γƒ³ ID'; + $lang['strgid'] = '全体 ID'; + + // Fulltext search + $lang['strfulltext'] = 'ε…¨ζ–‡γƒ†γ‚­γ‚Ήγƒˆζ€œη΄’'; + $lang['strftsconfig'] = 'FTS θ¨­εš'; + $lang['strftsconfigs'] = 'θ¨­εš'; + $lang['strftscreateconfig'] = 'FTS θ¨­εšγδ½œζˆ'; + $lang['strftscreatedict'] = 'θΎžζ›Έγ‚’δ½œζˆγ™γ‚‹'; + $lang['strftscreatedicttemplate'] = 'θΎžζ›Έγγƒ†γƒ³γƒ—γƒ¬γƒΌγƒˆγ‚’δ½œζˆγ™γ‚‹'; + $lang['strftscreateparser'] = 'γƒ‘γƒΌγ‚΅γƒΌγ‚’δ½œζˆγ™γ‚‹'; + $lang['strftsnoconfigs'] = 'FTS θ¨­εšγŒθ¦‹γ€γ‹γ‚ŠγΎγ›γ‚“。'; + $lang['strftsconfigdropped'] = 'FTS θ¨­εšγ‚’η ΄ζ£„γ—γΎγ—γŸγ€‚'; + $lang['strftsconfigdroppedbad'] = 'FTS θ¨­εšγη ΄ζ£„γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strconfdropftsconfig'] = 'ζœ¬ε½“γ« FTS θ¨­εšγ€Œ%s」を破棄しますか?'; + $lang['strconfdropftsdict'] = 'ζœ¬ε½“γ« FTS θΎžζ›Έγ€Œ%s」を破棄しますか?'; + $lang['strconfdropftsmapping'] = 'ζœ¬ε½“γ« FTS θ¨­εšγ€Œ%s」γγƒžγƒƒγƒ—γ€Œ%s」を破棄しますか?'; + $lang['strftstemplate'] = 'γƒ†γƒ³γƒ—γƒ¬γƒΌγƒˆ'; + $lang['strftsparser'] = 'パーァー'; + $lang['strftsconfigneedsname'] = 'FTS θ¨­εšγ«γ―εε‰γ‚’ζŒ‡εšγ™γ‚‹εΏ…θ¦γŒγ‚γ‚ŠγΎγ™γ€‚'; + $lang['strftsconfigcreated'] = 'FTS θ¨­εšγ‚’δ½œζˆγ—γΎγ—γŸγ€‚'; + $lang['strftsconfigcreatedbad'] = 'FTS θ¨­εšγδ½œζˆγ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; +$lang['strftsmapping'] = 'Mapping'; + $lang['strftsdicts'] = 'θΎžζ›Έ'; + $lang['strftsdict'] = 'θΎžζ›Έ'; + $lang['strftsemptymap'] = 'FTS θ¨­εšγƒžγƒƒγƒ—γŒη©Ίγ§γ™γ€‚'; +$lang['strftswithmap'] = 'With map'; +$lang['strftsmakedefault'] = 'Make default for given locale'; + $lang['strftsconfigaltered'] = 'FTS θ¨­εšγ‚’ε€‰ζ›΄γ—γΎγ—γŸγ€‚'; + $lang['strftsconfigalteredbad'] = 'FTS θ¨­εšγε€‰ζ›΄γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strftsconfigmap'] = 'FTS θ¨­εšγƒžγƒƒγƒ—'; + $lang['strftsparsers'] = 'FTS パーァー'; + $lang['strftsnoparsers'] = 'εˆ©η”¨γ§γγ‚‹ FTS γƒ‘γƒΌγ‚΅γƒΌγŒγ‚γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strftsnodicts'] = 'εˆ©η”¨γ§γγ‚‹ FTS θΎžζ›ΈγŒγ‚γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strftsdictcreated'] = 'FTS θΎžζ›Έγ‚’δ½œζˆγ—γΎγ—γŸγ€‚'; + $lang['strftsdictcreatedbad'] = 'FTS θΎžζ›Έγδ½œζˆγ«ε€±ζ•—γ—γΎγ—γŸ'; +$lang['strftslexize'] = 'Lexize'; +$lang['strftsinit'] = 'Init'; + $lang['strftsoptionsvalues'] = 'γ‚ͺプションと倀'; + $lang['strftsdictneedsname'] = 'FTS θΎžζ›Έγεε‰γ‚’ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strftsdictdropped'] = 'FTS θΎžζ›Έγ‚’η ΄ζ£„γ—γΎγ—γŸγ€‚'; + $lang['strftsdictdroppedbad'] = 'FTS θΎžζ›Έγη ΄ζ£„γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strftsdictaltered'] = 'FTS θΎžζ›Έγ‚’ε€‰ζ›΄γ—γΎγ—γŸγ€‚'; + $lang['strftsdictalteredbad'] = 'FTS θΎžζ›Έγε€‰ζ›΄γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strftsaddmapping'] = 'ζ–°θ¦γƒžγƒƒγƒ—γ‚’θΏ½εŠ γ™γ‚‹'; + $lang['strftsspecifymappingtodrop'] = 'γƒžγƒƒγƒ—γ‚’η ΄ζ£„γ‚’γ™γ‚‹γ«γ―ε°‘γͺくとも 1 γ€ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“'; + $lang['strftsspecifyconfigtoalter'] = 'FTS θ¨­εšγ‚’ε€‰ζ›΄γ™γ‚‹γ«γ―ζŒ‡εšγ—γͺγ‘γ‚Œγ°γͺγ‚ŠγΎγ›γ‚“'; + $lang['strftsmappingdropped'] = 'FTS γƒžγƒƒγƒ—γ‚’η ΄ζ£„γ—γΎγ—γŸγ€‚'; + $lang['strftsmappingdroppedbad'] = 'FTS γƒžγƒƒγƒ—γη ΄ζ£„γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strftsnodictionaries'] = 'θΎžζ›ΈγŒθ¦‹γ€γ‹γ‚ŠγΎγ›γ‚“γ€‚'; + $lang['strftsmappingaltered'] = 'FTS γƒžγƒƒγƒ—γ‚’ε€‰ζ›΄γ—γΎγ—γŸγ€‚'; + $lang['strftsmappingalteredbad'] = 'FTS γƒžγƒƒγƒ—γε€‰ζ›΄γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strftsmappingadded'] = 'FTS γƒžγƒƒγƒ—γ‚’θΏ½εŠ γ—γΎγ—γŸγ€‚'; + $lang['strftsmappingaddedbad'] = 'FTS γƒžγƒƒγƒ—γθΏ½εŠ γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strftsmappingdropped'] = 'FTS γƒžγƒƒγƒ—γ‚’η ΄ζ£„γ—γΎγ—γŸγ€‚'; + $lang['strftsmappingdroppedbad'] = 'FTS γƒžγƒƒγƒ—γη ΄ζ£„γ«ε€±ζ•—γ—γΎγ—γŸγ€‚'; + $lang['strftstabconfigs'] = 'θ¨­εš'; + $lang['strftstabdicts'] = 'θΎžζ›Έ'; + $lang['strftstabparsers'] = 'パーァー'; +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/langcheck b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/langcheck new file mode 100644 index 00000000..aa95d25d --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/langcheck @@ -0,0 +1,71 @@ +#!/usr/local/bin/php -q +\n\n"; + echo " is the filename without the .php extension\n"; + exit; + } + elseif (!file_exists("{$_SERVER['argv'][1]}.php")) { + echo "Error: File not found.\n"; + exit; + } + + // Include english source file + include('./english.php'); + + $master = $lang; + $master_keys = array_keys($lang); + unset($lang); + + // Include target language file + include("./{$_SERVER['argv'][1]}.php"); + $slave = $lang; + $slave_keys = array_keys($lang); + + echo "Source file: english.php\n"; + echo "Target file: {$_SERVER['argv'][1]}.php\n\n"; + + // Find missing values + $diff = array_diff($master_keys, $slave_keys); + echo "Missing Strings\n"; + echo "---------------\n\n"; + if (sizeof($diff) > 0) { + foreach ($diff as $v) { + echo "\$lang['{$v}'] = '", str_replace("'", "\\'", $master[$v]), "';\n"; + } + echo "\n"; + echo "Translations: ", sizeof($master_keys) - sizeof($diff), "/", sizeof($master_keys), "\n\n"; + + } + else echo "None\n\n"; + + // Find extra values (to be deleted) + $diff = array_diff($slave_keys, $master_keys); + echo "Deleted Strings\n"; + echo "---------------\n\n"; + if (sizeof($diff) > 0) { + foreach ($diff as $v) { + echo "\$lang['{$v}'] = '", str_replace("'", "\\'", $slave[$v]), "';\n"; + } + } + else echo "None\n"; + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/lithuanian.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/lithuanian.php new file mode 100644 index 00000000..4134644a --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/lithuanian.php @@ -0,0 +1,898 @@ +'; + $lang['strfirst'] = '<< Pirmas'; + $lang['strlast'] = 'Paskutinis >>'; + $lang['strfailed'] = 'Nepavyko'; + $lang['strcreate'] = 'Sukurti'; + $lang['strcreated'] = 'Sukurta'; + $lang['strcomment'] = 'Komentaras'; + $lang['strlength'] = 'Ilgis'; + $lang['strdefault'] = 'Numatytoji reikΕ‘mΔ—';//Numatytas(-a) + $lang['stralter'] = 'Pakeisti'; + $lang['strok'] = 'Gerai'; + $lang['strcancel'] = 'Atsisakyti'; + $lang['strkill'] = 'Nutraukti';//Sunaikinti + $lang['strac'] = 'Δjungti automatinΔ― baigimΔ…'; + $lang['strsave'] = 'ΔraΕ‘yti'; + $lang['strreset'] = 'Atstatyti Δ― pradinΔ™ bΕ«senΔ…';//Atkurti + $lang['strrestart'] = 'Paleisti iΕ‘ naujo'; + $lang['strinsert'] = 'Δterpti'; + $lang['strselect'] = 'Atrinkti'; + $lang['strdelete'] = 'Ε alinti'; + $lang['strupdate'] = 'Atnaujinti'; + $lang['strreferences'] = 'RodyklΔ—s'; + $lang['stryes'] = 'Taip'; + $lang['strno'] = 'Ne'; + $lang['strtrue'] = 'TIESA'; + $lang['strfalse'] = 'NETIESA'; + $lang['stredit'] = 'Taisyti'; + $lang['strcolumn'] = 'Stulpelis'; + $lang['strcolumns'] = 'Stulpeliai'; + $lang['strrows'] = 'Δ―raΕ‘as(-ai)'; + $lang['strrowsaff'] = 'Δ―raΕ‘as(-ai) paveikti.'; + $lang['strobjects'] = 'objektas (-ai)'; + $lang['strback'] = 'Atgal'; + $lang['strqueryresults'] = 'UΕΎklausos rezultatai'; + $lang['strshow'] = 'Rodyti'; + $lang['strempty'] = 'IΕ‘valyti';//Ε alinti turinΔ― + $lang['strlanguage'] = 'Kalba'; + $lang['strencoding'] = 'KoduotΔ—'; + $lang['strvalue'] = 'ReikΕ‘mΔ—'; + $lang['strunique'] = 'Unikalus'; + $lang['strprimary'] = 'Pirminis'; + $lang['strexport'] = 'Eksportuoti'; + $lang['strimport'] = 'Importuoti'; + $lang['strallowednulls'] = 'LeidΕΎiami NULL simboliai'; + $lang['strbackslashn'] = '\N'; + $lang['stremptystring'] = 'Tuőčia eilutΔ—/laukas'; + $lang['strsql'] = 'SQL'; +$lang['stradmin'] = 'Admin';//Administratorius + $lang['strvacuum'] = 'Apvalyti'; + $lang['stranalyze'] = 'Analizuoti'; + $lang['strclusterindex'] = 'Pertvarkyti'; + $lang['strclustered'] = 'Sutvarkyta?'; + $lang['strreindex'] = 'Perindeksuoti'; + $lang['strexecute'] = 'Vykdyti'; + $lang['stradd'] = 'PridΔ—ti'; + $lang['strevent'] = 'Δvykis'; + $lang['strwhere'] = 'SΔ…lyga';//Kur + $lang['strinstead'] = 'Atlikti uΕΎuot'; + $lang['strwhen'] = 'Kai'; + $lang['strformat'] = 'Formatas'; + $lang['strdata'] = 'Duomenys'; + $lang['strconfirm'] = 'Patvirtinti'; + $lang['strexpression'] = 'IΕ‘raiΕ‘ka'; + $lang['strellipsis'] = '...'; + $lang['strseparator'] = ': '; + $lang['strexpand'] = 'IΕ‘skleisti'; + $lang['strcollapse'] = 'Suskleisti'; + $lang['strfind'] = 'IeΕ‘koti'; + $lang['stroptions'] = 'Parinktys'; + $lang['strrefresh'] = 'Atnaujinti'; + $lang['strdownload'] = 'ParsisiΕ³sti'; + $lang['strdownloadgzipped'] = 'ParsisiΕ³sti suspaustΔ… su gzip'; + $lang['strinfo'] = 'Informacija'; + $lang['stroids'] = 'OIDs'; + $lang['stradvanced'] = 'IΕ‘plΔ—stinis(-Δ—)';//papildomas(-a), + $lang['strvariables'] = 'Kintamieji'; + $lang['strprocess'] = 'Procesas'; + $lang['strprocesses'] = 'Procesai'; + $lang['strsetting'] = 'Nuostata';//Parinktis + $lang['streditsql'] = 'Redaguoti SQL'; + $lang['strruntime'] = 'Visa vykdymo trukmΔ—: %s ms'; + $lang['strpaginate'] = 'Rezultatus skaidyti Δ― puslapius'; + $lang['struploadscript'] = 'arba nusiΕ³sti SQL skriptΔ…:'; + $lang['strstarttime'] = 'PradΕΎios laikas'; + $lang['strfile'] = 'Failas'; + $lang['strfileimported'] = 'Failas importuotas.'; + $lang['strtrycred'] = 'Naudoti Ε‘iuos Δ―galiojimus visiems serveriams'; + $lang['strconfdropcred'] = 'DΔ—l saugumo, ryΕ‘io nutraukimas panaikins jΕ«sΕ³ bendrΔ… prisijungimo informacijΔ…. Ar tikrai norite nutraukti ryΕ‘Δ― ?'; + $lang['stractionsonmultiplelines'] = 'Veiksmai keliose eilutΔ—se'; + $lang['strselectall'] = 'Visi';//PaΕΎymΔ—ti visus + $lang['strunselectall'] = 'Nieko';//Panaikinti ΕΎymΔ—jimΔ… visiems + $lang['strlocale'] = 'LokalΔ—'; + $lang['strcollation'] = 'Rikiavimas'; +$lang['strctype'] = 'Character Type';//SimboliΕ³(ΕΎenklΕ³) tipas + $lang['strdefaultvalues'] = 'Numatytosios reikΕ‘mΔ—s'; + $lang['strnewvalues'] = 'Naujosios reikΕ‘mΔ—s'; + $lang['strstart'] = 'Paleisti'; + $lang['strstop'] = 'Stabdyti'; + $lang['strgotoppage'] = 'atgal Δ― virΕ‘Ε³'; + $lang['strtheme'] = 'Apipavidalinimas'; + $lang['strcluster'] = 'Klasteris'; + + // Admin + $lang['stradminondatabase'] = 'Ε ios administracinΔ—s uΕΎduotys taikomos visai %s duomenΕ³ bazei.'; + $lang['stradminontable'] = 'Ε ios administracinΔ—s uΕΎduotys taikomos lentelei %s.'; + + // User-supplied SQL history + $lang['strhistory'] = 'Praeitis'; + $lang['strnohistory'] = 'NΔ—ra praeities.'; + $lang['strclearhistory'] = 'IΕ‘valyti praeitΔ―'; + $lang['strdelhistory'] = 'Ε alinti iΕ‘ praeities sΔ…raΕ‘o'; + $lang['strconfdelhistory'] = 'Ar tikrai paΕ‘alinti Ε‘iΔ… uΕΎklausΔ… iΕ‘ preities sΔ…raΕ‘o?'; + $lang['strconfclearhistory'] = 'Ar tikrai iΕ‘valyti praeitΔ―?'; + $lang['strnodatabaseselected'] = 'PraΕ‘om pasirinkiti duomenΕ³ bazΔ™.'; + + // Database sizes + $lang['strnoaccess'] = 'NΔ—ra prieigos'; + $lang['strsize'] = 'Dydis'; + $lang['strbytes'] = 'baitai'; + $lang['strkb'] = 'kB'; + $lang['strmb'] = 'MB'; + $lang['strgb'] = 'GB'; + $lang['strtb'] = 'TB'; + + // Error handling + $lang['strnoframes'] = 'Ε i programa geriausiai veikia su narΕ‘ykle, kurioje palaikomi HTML rΔ—meliai(frames),tačiau gali bΕ«ti naudojama be rΔ—meliΕ³ spustelΔ—jus toliau pateiktΔ… nuorodΔ….'; + $lang['strnoframeslink'] = 'Naudoti be rΔ—meliΕ³'; + $lang['strbadconfig'] = 'JΕ«sΕ³ config.inc.php pasenΔ™s. Reikia atkurti jΔ― iΕ‘ naujo config.inc.php-dist.'; + $lang['strnotloaded'] = 'JΕ«sΕ³ PHP Δ―diegimas nepalaiko PostgreSQL. Reikia perkompiliuoti PHP naudojant --with-pgsql konfigΕ«ravimo parametrΔ….'; + $lang['strpostgresqlversionnotsupported'] = 'PostgreSQL versija nepalaikoma. PraΕ‘om atnaujinti iki %s arba naujesnΔ—s versijos.'; + $lang['strbadschema'] = 'Nurodyta neteisinga schema.'; + $lang['strbadencoding'] = 'Nepavyko nustatyti kliento koduotΔ—s duomenΕ³ bazΔ—je.'; + $lang['strsqlerror'] = 'SQL klaida:'; + $lang['strinstatement'] = 'Sakinyje:'; + $lang['strinvalidparam'] = 'Neteisingi skripto parametrai.'; + $lang['strnodata'] = 'ΔraΕ‘Ε³ nerasta.'; + $lang['strnoobjects'] = 'ObjektΕ³ nerasta.'; + $lang['strrownotunique'] = 'Ε iame Δ―raΕ‘e nΔ—ra unikalaus identifikatoriaus.'; + $lang['strnouploads'] = 'FailΕ³ iΕ‘siuntimai - negalimi.'; + $lang['strimporterror'] = 'Importavimo klaida.'; + $lang['strimporterror-fileformat'] = 'Importavimo klaida: Nepavyko automatiΕ‘kai nustatyti failo formato.'; + $lang['strimporterrorline'] = 'Importavimo klaida eilutΔ—je %s.'; + $lang['strimporterrorline-badcolumnnum'] = 'Importavimo klaida eilutΔ—je %s: EilutΔ—je neteisingas stulpeliΕ³ skaičius.'; + $lang['strimporterror-uploadedfile'] = 'Importavimo klaida: Failas negali bΕ«ti nusiΕ³stas Δ― serverΔ―'; + $lang['strcannotdumponwindows'] = 'Atminties iΕ‘klotinΔ—s suformavimas su sudΔ—tingais lenteliΕ³ ir schemΕ³ vardais Windows operacinΔ—je sistemoje nepalaikomas'; + $lang['strinvalidserverparam'] = 'Bandymas prisijungti su negaliojančiu serverio parametru, galbΕ«t kas nors bando nulauΕΎti jΕ«sΕ³ sistemΔ….'; + $lang['strnoserversupplied'] = 'Nenurodytas serveris!'; + $lang['strbadpgdumppath'] = 'Eksportavimo klaida: nepavyko Δ―vykdyti pg_dump (pateiktas kelias JΕ«sΕ³ conf/config.inc.php : %s). Pataisykite Ε‘Δ― keliΔ… savo konfigΕ«racijoje ir prisijunkite iΕ‘ naujo.'; + $lang['strbadpgdumpallpath'] = 'Eksportavimo klaida: nepavyko Δ―vykdyti pg_dumpall (pateiktas kelias JΕ«sΕ³ conf/config.inc.php : %s). Pataisykite Ε‘Δ― keliΔ… savo konfigΕ«racijoje ir prisijunkite iΕ‘ naujo.'; + $lang['strconnectionfail'] = 'Nepavyksta prisijungti prie serverio.'; + + // Tables + $lang['strtable'] = 'LentelΔ—'; + $lang['strtables'] = 'LentelΔ—s'; + $lang['strshowalltables'] = 'Rodyti visas lenteles'; + $lang['strnotables'] = 'LenteliΕ³ nerasta.'; + $lang['strnotable'] = 'LentelΔ— nerasta.'; + $lang['strcreatetable'] = 'Sukurti lentelΔ™'; + $lang['strcreatetablelike'] = 'Sukurti lentelΔ™ kaip'; + $lang['strcreatetablelikeparent'] = 'PirminΔ— lentelΔ—'; + $lang['strcreatelikewithdefaults'] = 'ΔTRAUKTI NUMATYTΔ„SIAS REIKΕ MES'; + $lang['strcreatelikewithconstraints'] = 'ΔTRAUKTI RIBOJIMUS'; + $lang['strcreatelikewithindexes'] = 'ΔTRAUKTI INDEKSUS'; + $lang['strtablename'] = 'LentelΔ—s pavadinimas'; + $lang['strtableneedsname'] = 'Turite suteikti lentelei pavadinimΔ….'; + $lang['strtablelikeneedslike'] = 'Turite nurodyti lentelΔ™, kurios savybes reikia kopijuoti.'; + $lang['strtableneedsfield'] = 'Turite nurodyti bent vienΔ… laukΔ….'; + $lang['strtableneedscols'] = 'Turite nurodyti teisingΔ… stulpeliΕ³ skaičiΕ³.'; + $lang['strtablecreated'] = 'LentelΔ— sukurta.'; + $lang['strtablecreatedbad'] = 'Nepavyko sukurti lentelΔ—s.'; + $lang['strconfdroptable'] = 'Ar tikrai norite Ε‘alinti lentelΔ™ "%s"?'; + $lang['strtabledropped'] = 'LentelΔ— paΕ‘alinta.'; + $lang['strtabledroppedbad'] = 'Nepavyko paΕ‘alinti lentelΔ—s.'; + $lang['strconfemptytable'] = 'Ar tikrai norite iΕ‘valyti lentelΔ™ "%s"?'; + $lang['strtableemptied'] = 'LentelΔ— iΕ‘valyta.'; + $lang['strtableemptiedbad'] = 'Nepavyko iΕ‘valyti lentelΔ—s.'; + $lang['strinsertrow'] = 'Δterpti Δ―raΕ‘Δ…'; + $lang['strrowinserted'] = 'ΔraΕ‘as Δ―terptas.'; + $lang['strrowinsertedbad'] = 'Nepavyko Δ―terpti Δ―raΕ‘o.'; + $lang['strnofkref'] = 'NΔ—ra atitinkamos reikΕ‘mΔ—s iΕ‘oriniame rakte %s.'; + $lang['strrowduplicate'] = 'Nepavyko Δ―terpti Δ―raΕ‘o, bandyta dubliuoti Δ―raΕ‘Δ….'; + $lang['streditrow'] = 'Taisyti Δ―raΕ‘Δ…'; + $lang['strrowupdated'] = 'ΔraΕ‘as atnaujintas.'; + $lang['strrowupdatedbad'] = 'Nepavyko atnaujinti Δ―raΕ‘o.'; + $lang['strdeleterow'] = 'Ε alinti Δ―raΕ‘Δ…'; + $lang['strconfdeleterow'] = 'Ar tikrai norite Ε‘alinti Ε‘Δ― Δ―raΕ‘Δ…?'; + $lang['strrowdeleted'] = 'ΔraΕ‘as paΕ‘alintas.'; + $lang['strrowdeletedbad'] = 'Nepavyko paΕ‘alinti Δ―raΕ‘o.'; + $lang['strinsertandrepeat'] = 'Δterpti ir kartoti'; + $lang['strnumcols'] = 'StulpeliΕ³ skaičius'; + $lang['strcolneedsname'] = 'Turite nurodyti stulpelio pavadinimΔ…'; + $lang['strselectallfields'] = 'PaΕΎymΔ—ti visus laukus'; + $lang['strselectneedscol'] = 'Turite rodyti bent vienΔ… stulpelΔ―.'; + $lang['strselectunary'] = 'Vienviečiai operatoriai negali turΔ—ti reikΕ‘miΕ³.'; + $lang['strcolumnaltered'] = 'Stulpelis pakeistas.'; + $lang['strcolumnalteredbad'] = 'Nepavyko pakeisti stulpelio.'; + $lang['strconfdropcolumn'] = 'Ar tikrai norite Ε‘alinti stulpelΔ― "%s" iΕ‘ lentelΔ—s "%s"?'; + $lang['strcolumndropped'] = 'Stulpelis paΕ‘alintas.'; + $lang['strcolumndroppedbad'] = 'Nepavyko paΕ‘alinti stulpelio.'; + $lang['straddcolumn'] = 'PridΔ—ti stulpelΔ―'; + $lang['strcolumnadded'] = 'Stulpelis pridΔ—tas.'; + $lang['strcolumnaddedbad'] = 'Nepavyko pridΔ—ti stulpelio.'; +$lang['strcascade'] = 'CASCADE';//Pakopinis + $lang['strtablealtered'] = 'LentelΔ— pakeista.'; + $lang['strtablealteredbad'] = 'Nepavyko pakeisti lentelΔ—s.'; + $lang['strdataonly'] = 'Tik duomenis'; + $lang['strstructureonly'] = 'Tik struktΕ«rΔ…'; + $lang['strstructureanddata'] = 'StruktΕ«rΔ… ir duomenis'; +$lang['strtabbed'] = 'Tabbed';//Atskirtas tabuliavimo ΕΎymΔ—mis +$lang['strauto'] = 'Auto'; + $lang['strconfvacuumtable'] = 'Ar tikrai norite apvalyti "%s"?'; + $lang['strconfanalyzetable'] = 'Ar tikrai norite analizuoti "%s"?'; + $lang['strconfreindextable'] = 'Ar tikrai norite perindeksuoti "%s"?'; + $lang['strconfclustertable'] = 'Ar tikrai norite sutvarkyti "%s"?'; + $lang['strestimatedrowcount'] = 'Apskaičiuotasis Δ―raΕ‘Ε³ skaičius';//Apytikris + $lang['strspecifytabletoanalyze'] = 'Turite nurodyti bent vienΔ… lentelΔ™, kuri turi bΕ«ti iΕ‘analizuota.'; + $lang['strspecifytabletoempty'] = 'Turite nurodyti bent vienΔ… lentelΔ™, kuri turi bΕ«ti iΕ‘valyta.'; + $lang['strspecifytabletodrop'] = 'Turite nurodyti bent vienΔ… lentelΔ™, kuri turi bΕ«ti paΕ‘alinta.'; + $lang['strspecifytabletovacuum'] = 'Turite nurodyti bent vienΔ… lentelΔ™, kuri turi bΕ«ti apvalyta.'; + $lang['strspecifytabletoreindex'] = 'Turite nurodyti bent vienΔ… lentelΔ™, kuri turi bΕ«ti perindeksuota.'; + $lang['strspecifytabletocluster'] = 'Turite nurodyti bent vienΔ… lentelΔ™, kuri turi bΕ«ti sutvarkyta.'; + $lang['strnofieldsforinsert'] = 'Negalite Δ―terpti Δ―raΕ‘o Δ― lentelΔ™ be stulpeliΕ³.'; + + // Columns + $lang['strcolprop'] = 'Stulpelio savybΔ—s'; + $lang['strnotableprovided'] = 'Nenurodyta lentelΔ—!'; + + // Users + $lang['struser'] = 'Naudotojas'; + $lang['strusers'] = 'Naudotojai'; + $lang['strusername'] = 'Naudotojo vardas'; + $lang['strpassword'] = 'SlaptaΕΎodis'; +$lang['strsuper'] = 'Superuser?'; + $lang['strcreatedb'] = 'Gali kurti DB?'; + $lang['strexpires'] = 'Baigia galioti'; + $lang['strsessiondefaults'] = 'Seanso numatytosios reikΕ‘mΔ—s'; + $lang['strnousers'] = 'NaudotojΕ³ nerasta.'; + $lang['struserupdated'] = 'Naudotojas atnaujintas.'; + $lang['struserupdatedbad'] = 'Nepavyko atnaujinti naudotojo.'; + $lang['strshowallusers'] = 'Rodyti visus naudotojus'; + $lang['strcreateuser'] = 'Kurti naudotojΔ…'; + $lang['struserneedsname'] = 'Turite suteikti naudotojui vardΔ….'; + $lang['strusercreated'] = 'Naudotojas sukurtas.'; + $lang['strusercreatedbad'] = 'Nepavyko sukurti naudotojo.'; + $lang['strconfdropuser'] = 'Ar tikrai norite paΕ‘alinti naudotojΔ… "%s"?'; + $lang['struserdropped'] = 'Naudotojas paΕ‘alintas.'; + $lang['struserdroppedbad'] = 'Nepavyko paΕ‘alinti naudotojo.'; + $lang['straccount'] = 'Paskyra'; + $lang['strchangepassword'] = 'Keisti slaptaΕΎodΔ―'; + $lang['strpasswordchanged'] = 'SlaptaΕΎodis pakeistas.'; + $lang['strpasswordchangedbad'] = 'Nepavyko pakeisti slaptaΕΎodΕΎio.'; + $lang['strpasswordshort'] = 'SlaptaΕΎodis per trumpas.'; + $lang['strpasswordconfirm'] = 'SlaptaΕΎodis neatitinka patvirtinimo.'; + + // Groups + $lang['strgroup'] = 'GrupΔ—'; + $lang['strgroups'] = 'GrupΔ—s'; + $lang['strshowallgroups'] = 'Rodyti visas grupes'; + $lang['strnogroup'] = 'GrupΔ— nerasta.'; + $lang['strnogroups'] = 'GrupiΕ³ nerasta.'; + $lang['strcreategroup'] = 'Kurti grupΔ™'; + $lang['strgroupneedsname'] = 'Turite suteikti grupei pavadinimΔ….'; + $lang['strgroupcreated'] = 'GrupΔ— sukurta.'; + $lang['strgroupcreatedbad'] = 'Nepavyko sukurti grupΔ—s.'; + $lang['strconfdropgroup'] = 'Ar tikrai norite Ε‘alinti grupΔ™ "%s"?'; + $lang['strgroupdropped'] = 'GrupΔ— paΕ‘alinta.'; + $lang['strgroupdroppedbad'] = 'Nepavyko paΕ‘alinti grupΔ—s.'; + $lang['strmembers'] = 'Nariai'; + $lang['strmemberof'] = 'Yra narys'; + $lang['stradminmembers'] = 'Admin nariai'; + $lang['straddmember'] = 'PridΔ—ti narΔ―'; + $lang['strmemberadded'] = 'Narys pridΔ—tas.'; + $lang['strmemberaddedbad'] = 'Nepavyko pridΔ—ti nario.'; + $lang['strdropmember'] = 'Ε alinti narΔ―'; + $lang['strconfdropmember'] = 'Ar tikrai norite Ε‘alinti narΔ― "%s" iΕ‘ grupΔ—s "%s"?'; + $lang['strmemberdropped'] = 'Narys paΕ‘alintas.'; + $lang['strmemberdroppedbad'] = 'Nepavyko paΕ‘alinti nario.'; + + // Roles + $lang['strrole'] = 'RolΔ—'; + $lang['strroles'] = 'RolΔ—s'; + $lang['strshowallroles'] = 'Rodyti roles'; + $lang['strnoroles'] = 'RoliΕ³ nerasta.'; + $lang['strinheritsprivs'] = 'Paveldi privilegijas?'; + $lang['strcreaterole'] = 'Kurti rolΔ™'; + $lang['strcancreaterole'] = 'Gali kurti rolΔ™?'; + $lang['strrolecreated'] = 'RolΔ— sukurta.'; + $lang['strrolecreatedbad'] = 'Nepavyko sukurti rolΔ—s.'; + $lang['strrolealtered'] = 'RolΔ— pakeista.'; + $lang['strrolealteredbad'] = 'Nepavyko pakeisti rolΔ—s.'; + $lang['strcanlogin'] = 'Gali prisijungti?'; + $lang['strconnlimit'] = 'SujungimΕ³ limitas'; + $lang['strdroprole'] = 'Ε alinti rolΔ™'; + $lang['strconfdroprole'] = 'Ar tikrai norite Ε‘alinti rolΔ™ "%s"?'; + $lang['strroledropped'] = 'RolΔ— paΕ‘alinta.'; + $lang['strroledroppedbad'] = 'Nepavyko paΕ‘alinti rolΔ—s.'; + $lang['strnolimit'] = 'Be ribojimΕ³'; + $lang['strnever'] = 'Niekada'; + $lang['strroleneedsname'] = 'Turite suteikti rolei pavadinimΔ….'; + + // Privileges + $lang['strprivilege'] = 'Privilegija'; + $lang['strprivileges'] = 'Privilegijos'; + $lang['strnoprivileges'] = 'Ε iam objektui taikomos numatytosios valdytojo privilegijos.'; + $lang['strgrant'] = 'Suteikti'; + $lang['strrevoke'] = 'Panaikinti';//AtΕ‘aukti + $lang['strgranted'] = 'Privilegijos pakeistos.'; + $lang['strgrantfailed'] = 'Nepavyko pakeisti privilegijΕ³.'; + $lang['strgrantbad'] = 'Turite nurodyti bent vienΔ… naudotojΔ… arba grupΔ™ ir bent vienΔ… privilegijΔ….'; + $lang['strgrantor'] = 'TeikΔ—jas'; + $lang['strasterisk'] = '*'; + + // Databases + $lang['strdatabase'] = 'DuomenΕ³ bazΔ—'; + $lang['strdatabases'] = 'DuomenΕ³ bazΔ—s'; + $lang['strshowalldatabases'] = 'Rodyti duomenΕ³ bazes'; + $lang['strnodatabases'] = 'DuomenΕ³ baziΕ³ nerasta.'; + $lang['strcreatedatabase'] = 'Kurti duomenΕ³ bazΔ™'; + $lang['strdatabasename'] = 'DuomenΕ³ bazΔ—s pavadinimas'; + $lang['strdatabaseneedsname'] = 'Turite suteikti duomenΕ³ bazei pavadinimΔ….'; + $lang['strdatabasecreated'] = 'DuomenΕ³ bazΔ— sukurta.'; + $lang['strdatabasecreatedbad'] = 'Nepavyko sukurti duomenΕ³ bazΔ—s.'; + $lang['strconfdropdatabase'] = 'Ar tikrai norite Ε‘alinti duomenΕ³ bazΔ™ "%s"?'; + $lang['strdatabasedropped'] = 'DuomenΕ³ bazΔ— paΕ‘alinta.'; + $lang['strdatabasedroppedbad'] = 'Nepavyko paΕ‘alinti duomenΕ³ bazΔ—s.'; + $lang['strentersql'] = 'Δveskite SQL uΕΎklausΔ… ΕΎemiau:'; + $lang['strsqlexecuted'] = 'SQL uΕΎklausa Δ―vykdyta.'; + $lang['strvacuumgood'] = 'Apvalymas atliktas.'; + $lang['strvacuumbad'] = 'Nepavyko atlikti apvalymo.'; + $lang['stranalyzegood'] = 'AnalizΔ— atlikta.'; + $lang['stranalyzebad'] = 'Nepavyko atlikti analizΔ—s.'; + $lang['strreindexgood'] = 'Perindeksavimas atliktas.'; + $lang['strreindexbad'] = 'Perindeksavimas nepavyko.'; + $lang['strfull'] = 'VisiΕ‘kas'; +$lang['strfreeze'] = 'Freeze'; +$lang['strforce'] = 'Force'; + $lang['strsignalsent'] = 'Signalas iΕ‘siΕ³stas.'; + $lang['strsignalsentbad'] = 'Nepavyko iΕ‘siΕ³sti signalo.'; + $lang['strallobjects'] = 'Visi objektai'; + $lang['strdatabasealtered'] = 'DuomenΕ³ bazΔ— pakeista.'; + $lang['strdatabasealteredbad'] = 'Nepavyko pakeisti duomenΕ³ bazΔ—s.'; + $lang['strspecifydatabasetodrop'] = 'Turite nurodyti bent vienΔ… duomenΕ³ bazΔ™, kuriΔ… reikia Ε‘alinti.'; + $lang['strtemplatedb'] = 'Ε ablonas'; + $lang['strconfanalyzedatabase'] = 'Ar tikrai norite analizuoti visas lenteles duomenΕ³ bazΔ—je "%s"?'; + $lang['strconfvacuumdatabase'] = 'Ar tikrai norite apvalyti visas lenteles duomenΕ³ bazΔ—je "%s"?'; + $lang['strconfreindexdatabase'] = 'Ar tikrai norite perindeksuoti visas lenteles duomenΕ³ bazΔ—je "%s"?'; + $lang['strconfclusterdatabase'] = 'Ar tikrai norite sutvarkyti visas lenteles duomenΕ³ bazΔ—je "%s"?'; + + // Views + $lang['strview'] = 'Rodinys'; + $lang['strviews'] = 'Rodiniai'; + $lang['strshowallviews'] = 'Rodyti visus rodinius'; + $lang['strnoview'] = 'Rodinys nerastas.'; + $lang['strnoviews'] = 'RodiniΕ³ nerasta.'; + $lang['strcreateview'] = 'Kurti rodinΔ―'; + $lang['strviewname'] = 'Rodinio pavadinimas'; + $lang['strviewneedsname'] = 'Turite suteikti rodiniui pavadinimΔ….'; + $lang['strviewneedsdef'] = 'Turite pateikti rodinio apibrΔ—ΕΎtΔ―.'; + $lang['strviewneedsfields'] = 'Turite nurodyti stulpelius, kurie turi bΕ«ti rodinyje.'; + $lang['strviewcreated'] = 'Rodinys sukurtas.'; + $lang['strviewcreatedbad'] = 'Nepavyko sukurti rodinio.'; + $lang['strconfdropview'] = 'Ar tikrai norite paΕ‘alinti rodinΔ― "%s"?'; + $lang['strviewdropped'] = 'Rodinys paΕ‘alintas.'; + $lang['strviewdroppedbad'] = 'Nepavyko paΕ‘alinti rodinio.'; + $lang['strviewupdated'] = 'Rodinys atnaujintas.'; + $lang['strviewupdatedbad'] = 'Nepavyko atnaujinti rodinio.'; + $lang['strviewlink'] = 'Saistantys raktai'; + $lang['strviewconditions'] = 'Papildomos sΔ…lygos'; + $lang['strcreateviewwiz'] = 'Kurti rodinΔ― su vedikliu'; + $lang['strrenamedupfields'] = 'Pervadinti dubliuojančiuosius laukus'; + $lang['strdropdupfields'] = 'PaΕ‘alinti dubliuojančiuosius laukus'; + $lang['strerrordupfields'] = 'Klaida dubliuojančiuose laukuose'; + $lang['strviewaltered'] = 'Rodinys pakeistas.'; + $lang['strviewalteredbad'] = 'Nepavyko pakeisti rodinio.'; + $lang['strspecifyviewtodrop'] = 'Turite nurodyti bent vienΔ… rodinΔ―, kurΔ― norite paΕ‘alinti.'; + + // Sequences + $lang['strsequence'] = 'Seka'; + $lang['strsequences'] = 'Sekos'; + $lang['strshowallsequences'] = 'Rodyti visas sekas'; + $lang['strnosequence'] = 'Seka nerasta.'; + $lang['strnosequences'] = 'SekΕ³ nerasta.'; + $lang['strcreatesequence'] = 'Kurti sekΔ…'; + $lang['strlastvalue'] = 'PaskutinΔ— reikΕ‘mΔ—'; + $lang['strincrementby'] = 'Prieaugis'; + $lang['strstartvalue'] = 'PradinΔ— reikΕ‘mΔ—'; + $lang['strrestartvalue'] = 'Paleidimo iΕ‘ naujo reikΕ‘mΔ—'; + $lang['strmaxvalue'] = 'Maks. reikΕ‘mΔ—'; + $lang['strminvalue'] = 'Min. reikΕ‘mΔ—'; + $lang['strcachevalue'] = 'ReikΕ‘mΔ— podΔ—lyje'; +$lang['strlogcount'] = 'Log count'; +$lang['strcancycle'] = 'Can cycle?';//Gali kartotis? + $lang['striscalled'] = 'Padidins paskutinΔ™ reikΕ‘mΔ™ prieΕ‘ grΔ…ΕΎinant kitΔ… reikΕ‘mΔ™ (is_called)?'; + $lang['strsequenceneedsname'] = 'Turite suteikti sekai vardΔ….'; + $lang['strsequencecreated'] = 'Seka sukurta.'; + $lang['strsequencecreatedbad'] = 'Nepavyko sukurti sekos.'; + $lang['strconfdropsequence'] = 'Ar tikrai norite paΕ‘alinti sekΔ… "%s"?'; + $lang['strsequencedropped'] = 'Seka paΕ‘alinta.'; + $lang['strsequencedroppedbad'] = 'Nepavyko paΕ‘alinti sekos.'; + $lang['strsequencerestart'] = 'Seka paleista iΕ‘ naujo.'; + $lang['strsequencerestartbad'] = 'Nepavyko sekos paleist iΕ‘ naujo.'; + $lang['strsequencereset'] = 'Seka atstatyta Δ― pradinΔ™ bΕ«senΔ….'; + $lang['strsequenceresetbad'] = 'Nepavyko sekos atstatyti Δ― pradinΔ™ bΕ«senΔ….'; + $lang['strsequencealtered'] = 'Seka pakeista.'; + $lang['strsequencealteredbad'] = 'Nepavyko pakeisti sekos.'; + $lang['strsetval'] = 'Nustatyti reikΕ‘mΔ™'; + $lang['strsequencesetval'] = 'Sekos reikΕ‘mΔ— nustatyta.'; + $lang['strsequencesetvalbad'] = 'Nepavyko nustatyti sekos reikΕ‘mΔ—s.'; + $lang['strnextval'] = 'Padidinti reikΕ‘mΔ™'; + $lang['strsequencenextval'] = 'Sekos reikΕ‘mΔ— padidΔ—jo.'; + $lang['strsequencenextvalbad'] = 'Sekos reikΕ‘mΔ—s padidinti nepavyko.'; + $lang['strspecifysequencetodrop'] = 'Turite nurodyti bent vienΔ… sekΔ…, kuriΔ… norite paΕ‘alinti.'; + + // Indexes + $lang['strindex'] = 'Indeksas'; + $lang['strindexes'] = 'Indeksai'; + $lang['strindexname'] = 'Indekso pavadinimas'; + $lang['strshowallindexes'] = 'Rodyti visus indeksus'; + $lang['strnoindex'] = 'Indeksas nerastas.'; + $lang['strnoindexes'] = 'IndeksΕ³ nerasta.'; + $lang['strcreateindex'] = 'Kurti indeksΔ…'; + $lang['strtabname'] = 'LentelΔ—s pavadinimas'; + $lang['strcolumnname'] = 'Stulpelio pavadinimas'; + $lang['strindexneedsname'] = 'Turite suteikti indeksui pavadinimΔ….'; + $lang['strindexneedscols'] = 'Turite nurodyti teisingΔ… stulpeliΕ³ skaičiΕ³.'; + $lang['strindexcreated'] = 'Indeksas sukurtas.'; + $lang['strindexcreatedbad'] = 'Nepavyko sukurti indekso.'; + $lang['strconfdropindex'] = 'Ar tikrai norite paΕ‘alinti indeksΔ… "%s"?'; + $lang['strindexdropped'] = 'Indeksas paΕ‘alintas.'; + $lang['strindexdroppedbad'] = 'Nepavyko paΕ‘alinti indekso.'; + $lang['strkeyname'] = 'Rakto pavadinimas'; + $lang['struniquekey'] = 'Unikalus raktas'; + $lang['strprimarykey'] = 'Pirminis raktas'; + $lang['strindextype'] = 'Indekso tipas'; + $lang['strtablecolumnlist'] = 'Stulpeliai lentelΔ—je'; + $lang['strindexcolumnlist'] = 'Stulpeliai indekse'; + $lang['strconfcluster'] = 'Ar tikrai norite pertvarkyti "%s"?'; + $lang['strclusteredgood'] = 'Pertvarka atlikta.'; + $lang['strclusteredbad'] = 'Nepavyko atlikti pertvarkos.'; + $lang['strconcurrently'] = 'Lygiagrečiai';//tuo pat metu + $lang['strnoclusteravailable'] = 'LentelΔ— nesutvarkyta pagal indeksΔ….'; + + // Rules + $lang['strrules'] = 'TaisyklΔ—s'; + $lang['strrule'] = 'TaisyklΔ—'; + $lang['strshowallrules'] = 'Rodyti visas taisykles'; + $lang['strnorule'] = 'TaisyklΔ— nerasta.'; + $lang['strnorules'] = 'TaisykliΕ³ nerasta.'; + $lang['strcreaterule'] = 'Kurti taisyklΔ™'; + $lang['strrulename'] = 'TaisyklΔ—s pavadinimas'; + $lang['strruleneedsname'] = 'Turite suteikti taisyklei pavadinimΔ….'; + $lang['strrulecreated'] = 'TaisyklΔ— sukurta.'; + $lang['strrulecreatedbad'] = 'Nepavyko sukurti taisyklΔ—s.'; + $lang['strconfdroprule'] = 'Ar tikrai norite Ε‘alinti taisyklΔ™ "%s" taikomΔ… "%s"?'; + $lang['strruledropped'] = 'TaisyklΔ— paΕ‘alinta.'; + $lang['strruledroppedbad'] = 'Nepavyko paΕ‘alinti taisyklΔ—s.'; + + // Constraints + $lang['strconstraint'] = 'Ribojimas'; + $lang['strconstraints'] = 'Ribojimai'; + $lang['strshowallconstraints'] = 'Rodyti visus ribojimus'; + $lang['strnoconstraints'] = 'RibojimΕ³ nerasta.'; + $lang['strcreateconstraint'] = 'Kurti ribojimΔ…'; + $lang['strconstraintcreated'] = 'Ribojimas sukurtas.'; + $lang['strconstraintcreatedbad'] = 'Nepavyko sukurti ribojimo.'; + $lang['strconfdropconstraint'] = 'Ar tikrai norite Ε‘alinti ribojimΔ… "%s" lentelei "%s"?'; + $lang['strconstraintdropped'] = 'Ribojimas paΕ‘alintas.'; + $lang['strconstraintdroppedbad'] = 'Nepavyko paΕ‘alinti ribojimo.'; + $lang['straddcheck'] = 'PridΔ—ti tikrinimΔ…'; + $lang['strcheckneedsdefinition'] = 'Tikrinimo ribojimui bΕ«tina apibrΔ—ΕΎtis.'; + $lang['strcheckadded'] = 'Tikrinimo ribojimas pridΔ—tas.'; + $lang['strcheckaddedbad'] = 'Nepavyko pridΔ—ti tikrinimo ribojimo.'; + $lang['straddpk'] = 'PridΔ—ti pirminΔ― raktΔ…'; + $lang['strpkneedscols'] = 'Pirminiam raktui bΕ«tina priskirti bent vienΔ… stulpelΔ―.'; + $lang['strpkadded'] = 'Pirminis raktas pridΔ—tas.'; + $lang['strpkaddedbad'] = 'Nepavyko pridΔ—ti pirminio rakto.'; + $lang['stradduniq'] = 'PridΔ—ti unikalΕ³ raktΔ…'; + $lang['struniqneedscols'] = 'Unikaliam raktui bΕ«tina priskirti bent vienΔ… stulpelΔ―.'; + $lang['struniqadded'] = 'Unikalus raktas pridΔ—tas.'; + $lang['struniqaddedbad'] = 'Nepavyko pridΔ—ti unikalaus rakto.'; + $lang['straddfk'] = 'PridΔ—ti iΕ‘orinΔ― raktΔ…'; + $lang['strfkneedscols'] = 'IΕ‘oriniam raktui bΕ«tina priskirti bent vienΔ… stulpelΔ―.'; + $lang['strfkneedstarget'] = 'BΕ«tina nurodyti iΕ‘orinio rakto paskirties lentelΔ™.'; + $lang['strfkadded'] = 'IΕ‘orinis raktas pridΔ—tas.'; + $lang['strfkaddedbad'] = 'Nepavyko pridΔ—ti iΕ‘orinio rakto.'; + $lang['strfktarget'] = 'Paskirties lentelΔ—'; + $lang['strfkcolumnlist'] = 'Rakto stulpeliai'; + $lang['strondelete'] = 'Ε‘alinant'; + $lang['stronupdate'] = 'atnaujinant'; + + // Functions + $lang['strfunction'] = 'Funkcija'; + $lang['strfunctions'] = 'Funkcijos'; + $lang['strshowallfunctions'] = 'Rodyti visas funkcijas'; + $lang['strnofunction'] = 'Funkcija nerasta.'; + $lang['strnofunctions'] = 'FunkcijΕ³ nerasta.'; + $lang['strcreateplfunction'] = 'Kurti SQL/PL funkcijΔ…'; + $lang['strcreateinternalfunction'] = 'Kurti vidinΔ™ funkcijΔ…'; + $lang['strcreatecfunction'] = 'Kurti C funkcijΔ…'; + $lang['strfunctionname'] = 'Funkcijos pavadinimas'; + $lang['strreturns'] = 'GrΔ…ΕΎina'; + $lang['strproglanguage'] = 'Programavimo kalba'; + $lang['strfunctionneedsname'] = 'Turite suteikti funkcijai pavadinimΔ….'; + $lang['strfunctionneedsdef'] = 'Turite pateikti funkcijos apibrΔ—ΕΎtΔ―.'; + $lang['strfunctioncreated'] = 'Funkcija sukurta.'; + $lang['strfunctioncreatedbad'] = 'Nepavyko sukurti funkcijos.'; + $lang['strconfdropfunction'] = 'Ar tikrai norite Ε‘alinti funkcijΔ… "%s"?'; + $lang['strfunctiondropped'] = 'Funkcija paΕ‘alinta.'; + $lang['strfunctiondroppedbad'] = 'Nepavyko paΕ‘alinti funkcijos.'; + $lang['strfunctionupdated'] = 'Funkcija atnaujinta.'; + $lang['strfunctionupdatedbad'] = 'Nepavyko atnaujinti funkcijos.'; + $lang['strobjectfile'] = 'Objektinis Failas'; + $lang['strlinksymbol'] = 'SΔ…sajos simbolis (C funkcijos pavadinimas)'; + $lang['strarguments'] = 'Argumentai'; + $lang['strargmode'] = 'Veiksena'; + $lang['strargtype'] = 'Tipas'; + $lang['strargadd'] = 'PridΔ—ti dar vienΔ… argumentΔ…'; + $lang['strargremove'] = 'PaΕ‘alinti Ε‘Δ― argumentΔ…'; + $lang['strargnoargs'] = 'Ε i funkcija nepriims jokiΕ³ argumentΕ³.'; + $lang['strargenableargs'] = 'Leisti perduoti argumentus Ε‘iai funkcijai.'; + $lang['strargnorowabove'] = 'Turi bΕ«ti eilutΔ— virΕ‘ Ε‘ios eilutΔ—s.'; + $lang['strargnorowbelow'] = 'Turi bΕ«ti eilutΔ— ΕΎemiau Ε‘ios eilutΔ—s.'; + $lang['strargraise'] = 'Pakelti.'; + $lang['strarglower'] = 'Nuleisti.'; + $lang['strargremoveconfirm'] = 'Ar tikrai norite paΕ‘alinti Ε‘Δ― argumentΔ…? PaΕ‘alinimas negalΔ—s bΕ«ti atΕ‘auktas.'; +$lang['strfunctioncosting'] = 'Function Costing'; + $lang['strresultrows'] = 'EilučiΕ³ rezultate'; + $lang['strexecutioncost'] = 'Vykdymo sΔ…naudos'; + $lang['strspecifyfunctiontodrop'] = 'Turite nurodyti bent vienΔ… funkcijΔ…, kuriΔ… norite paΕ‘alinti.'; + + // Triggers + $lang['strtrigger'] = 'Trigeris'; + $lang['strtriggers'] = 'Trigeriai'; + $lang['strshowalltriggers'] = 'Rodyti visus trigerius'; + $lang['strnotrigger'] = 'Trigeris nerastas.'; + $lang['strnotriggers'] = 'TrigeriΕ³ nerasta.'; + $lang['strcreatetrigger'] = 'Kurti trigerΔ―'; + $lang['strtriggerneedsname'] = 'Turite nurodyti trigerio pavadinimΔ….'; + $lang['strtriggerneedsfunc'] = 'Turite priskirti funkcijΔ… trigeriui.'; + $lang['strtriggercreated'] = 'Trigeris sukurtas.'; + $lang['strtriggercreatedbad'] = 'Nepavyko sukurti trigerio.'; + $lang['strconfdroptrigger'] = 'Ar tikrai norite Ε‘alinti trigerΔ― "%s" lentelΔ—je "%s"?'; + $lang['strconfenabletrigger'] = 'Ar tikrai norite Δ―jungti trigerΔ― "%s" lentelΔ—je "%s"?'; + $lang['strconfdisabletrigger'] = 'Ar tikrai norite iΕ‘jungti trigerΔ― "%s" lentelΔ—je "%s"?'; + $lang['strtriggerdropped'] = 'Trigeris paΕ‘alintas.'; + $lang['strtriggerdroppedbad'] = 'Nepavyko paΕ‘alinti trigerio.'; + $lang['strtriggerenabled'] = 'Trigeris Δ―jungtas.'; + $lang['strtriggerenabledbad'] = 'Nepavyko Δ―jungti trigerio.'; + $lang['strtriggerdisabled'] = 'Trigeris iΕ‘jungtas.'; + $lang['strtriggerdisabledbad'] = 'Nepavyko iΕ‘jungti trigerio.'; + $lang['strtriggeraltered'] = 'Trigeris pakeistas.'; + $lang['strtriggeralteredbad'] = 'Nepavyko pakeisti trigerio.'; + $lang['strforeach'] = 'Kiekvienam(-ai)'; + + // Types + $lang['strtype'] = 'DuomenΕ³ tipas'; + $lang['strtypes'] = 'DuomenΕ³ tipai'; + $lang['strshowalltypes'] = 'Rodyti visus duomenΕ³ tipus'; + $lang['strnotype'] = 'DuomenΕ³ tipas nerastas.'; + $lang['strnotypes'] = 'DuomenΕ³ tipΕ³ nerasta.'; + $lang['strcreatetype'] = 'Kurti duomenΕ³ tipΔ…'; + $lang['strcreatecomptype'] = 'Kurti struktΕ«rinΔ― duomenΕ³ tipΔ…'; + $lang['strcreateenumtype'] = 'Kurti enum duomenΕ³ tipΔ…'; + $lang['strtypeneedsfield'] = 'Turite nurodyti bent vienΔ… laukΔ….'; + $lang['strtypeneedsvalue'] = 'Turite nurodyti bent vienΔ… reikΕ‘mΔ™.'; + $lang['strtypeneedscols'] = 'Turite nurodyti teisingΔ… laukΕ³ skaičiΕ³.'; + $lang['strtypeneedsvals'] = 'Turite nurodyti teisingΔ… reikΕ‘miΕ³ skaičiΕ³.'; + $lang['strinputfn'] = 'Δvesties funkcija'; + $lang['stroutputfn'] = 'IΕ‘vesties funkcija'; + $lang['strpassbyval'] = 'Perdavimas reikΕ‘me?'; + $lang['stralignment'] = 'Lygiavimas'; + $lang['strelement'] = 'Elementas'; + $lang['strdelimiter'] = 'Skirtukas'; + $lang['strstorage'] = 'AtmintinΔ—'; + $lang['strfield'] = 'Laukas'; + $lang['strnumfields'] = 'LaukΕ³ sk.'; + $lang['strnumvalues'] = 'ReikΕ‘miΕ³ sk.'; + $lang['strtypeneedsname'] = 'Turite suteikti duomenΕ³ tipui pavadinimΔ….'; + $lang['strtypeneedslen'] = 'Turite nurodyti duomenΕ³ tipo ilgΔ―.'; + $lang['strtypecreated'] = 'DuomenΕ³ tipas sukurtas.'; + $lang['strtypecreatedbad'] = 'Nepavyko sukurti duomenΕ³ tipo.'; + $lang['strconfdroptype'] = 'Ar tikrai norite Ε‘alinti duomenΕ³ tipΔ… "%s"?'; + $lang['strtypedropped'] = 'DuomenΕ³ tipas paΕ‘alintas.'; + $lang['strtypedroppedbad'] = 'Nepavyko paΕ‘alinti duomenΕ³ tipo.'; + $lang['strflavor'] = 'Atmaina'; + $lang['strbasetype'] = 'Bazinis'; + $lang['strcompositetype'] = 'StruktΕ«rinis'; + $lang['strpseudotype'] = 'Pseudo'; +$lang['strenum'] = 'Enum'; + $lang['strenumvalues'] = 'Enum reikΕ‘mΔ—s'; + + // Schemas + $lang['strschema'] = 'Schema'; + $lang['strschemas'] = 'Schemos'; + $lang['strshowallschemas'] = 'Rodyti visas schemas'; + $lang['strnoschema'] = 'Schema nerasta.'; + $lang['strnoschemas'] = 'SchemΕ³ nerasta.'; + $lang['strcreateschema'] = 'Kurti schemΔ…'; + $lang['strschemaname'] = 'Schemos pavadinimas'; + $lang['strschemaneedsname'] = 'Turite suteikti schemai pavadinimΔ….'; + $lang['strschemacreated'] = 'Schema sukurta.'; + $lang['strschemacreatedbad'] = 'Nepavyko sukurti schemos.'; + $lang['strconfdropschema'] = 'Ar tikrai norite Ε‘alinti schemΔ… "%s"?'; + $lang['strschemadropped'] = 'Schema paΕ‘alinta.'; + $lang['strschemadroppedbad'] = 'Nepavyko paΕ‘alinti schemos.'; + $lang['strschemaaltered'] = 'Schema pakeista.'; + $lang['strschemaalteredbad'] = 'Nepavyko pakeisti schemos.'; + $lang['strsearchpath'] = 'SchemΕ³ paieΕ‘kos kelias'; + $lang['strspecifyschematodrop'] = 'Turite nurodyti bent vienΔ… schemΔ…, kuriΔ… norite paΕ‘alinti.'; + + // Reports + + // Domains + $lang['strdomain'] = 'Domenas'; + $lang['strdomains'] = 'Domenai'; + $lang['strshowalldomains'] = 'Rodyti visus domenus'; + $lang['strnodomains'] = 'DomenΕ³ nerasta.'; + $lang['strcreatedomain'] = 'Kurti domenΔ…'; + $lang['strdomaindropped'] = 'Domenas paΕ‘alintas.'; + $lang['strdomaindroppedbad'] = 'Nepavyko paΕ‘alinti domeno.'; + $lang['strconfdropdomain'] = 'Ar tikrai norite Ε‘alinti domenΔ… "%s"?'; + $lang['strdomainneedsname'] = 'Turite suteikti domenui vardΔ….'; + $lang['strdomaincreated'] = 'Domenas sukurtas.'; + $lang['strdomaincreatedbad'] = 'Nepavyko sukurti domeno.'; + $lang['strdomainaltered'] = 'Domenas pakeistas.'; + $lang['strdomainalteredbad'] = 'Nepavyko pakeisti domeno.'; + + // Operators + $lang['stroperator'] = 'Operatorius'; + $lang['stroperators'] = 'Operatoriai'; + $lang['strshowalloperators'] = 'Rodyti visus operatorius'; + $lang['strnooperator'] = 'Operatorius nerastas.'; + $lang['strnooperators'] = 'OperatoriΕ³ nerasta.'; + $lang['strcreateoperator'] = 'Kurti operatoriΕ³'; + $lang['strleftarg'] = 'Kairiojo argumento tipas'; + $lang['strrightarg'] = 'DeΕ‘iniojo argumento tipas'; +$lang['strcommutator'] = 'Commutator';//komutatyvumas, perstatomumas, +$lang['strnegator'] = 'Negator';//inversija,neigimas, neigimo operacija +$lang['strrestrict'] = 'Restrict';//ribojimas +$lang['strjoin'] = 'Join'; +$lang['strhashes'] = 'Hashes'; +$lang['strmerges'] = 'Merges'; +$lang['strleftsort'] = 'Left sort'; +$lang['strrightsort'] = 'Right sort'; + $lang['strlessthan'] = 'MaΕΎiau nei'; + $lang['strgreaterthan'] = 'Daugiau nei'; + $lang['stroperatorneedsname'] = 'Turite suteikti operatoriui pavadinimΔ….'; + $lang['stroperatorcreated'] = 'Operatorius sukurtas.'; + $lang['stroperatorcreatedbad'] = 'Nepavyko sukurti operatoriaus.'; + $lang['strconfdropoperator'] = 'Ar tikrai norite Ε‘alinti operatoriΕ³ "%s"?'; + $lang['stroperatordropped'] = 'Operatorius paΕ‘alintas.'; + $lang['stroperatordroppedbad'] = 'Nepavyko paΕ‘alinti operatoriaus.'; + + // Casts +$lang['strcasts'] = 'Casts';//duomenΕ³ tipo keitimas +$lang['strnocasts'] = 'No casts found.'; +$lang['strsourcetype'] = 'Source type'; +$lang['strtargettype'] = 'Target type'; +$lang['strimplicit'] = 'Implicit';//numanomas(-a) +$lang['strinassignment'] = 'In assignment'; +$lang['strbinarycompat'] = '(Binary compatible)';//suderintas(-a) su dvejetainΔ— sistema + + // Conversions + $lang['strconversions'] = 'Konvertavimai'; + $lang['strnoconversions'] = 'Konvertavimai nerasti.'; +$lang['strsourceencoding'] = 'Source encoding';//pradinΔ— koduotΔ— +$lang['strtargetencoding'] = 'Target encoding';//galutinΔ— koduotΔ— + + // Languages + $lang['strlanguages'] = 'Programavimo kalbos'; + $lang['strnolanguages'] = 'KalbΕ³ nerasta.'; + $lang['strtrusted'] = 'Patikima'; + + // Info + $lang['strnoinfo'] = 'NΔ—ra informacijos.'; + $lang['strreferringtables'] = 'Priklausomos lentelΔ—s'; + $lang['strparenttables'] = 'VirΕ‘lentelΔ—s'; + $lang['strchildtables'] = 'PolentelΔ—s'; + + // Aggregates + $lang['straggregate'] = 'Agregavimo funkcija'; + $lang['straggregates'] = 'Agregavimo funkcijos'; + $lang['strnoaggregates'] = 'Agregavimo funkcijΕ³ nerasta.'; + $lang['stralltypes'] = '(Visi tipai)'; + $lang['strcreateaggregate'] = 'Kurti agregavimo funkcijΔ…'; + $lang['straggrbasetype'] = 'PradiniΕ³ duomenΕ³ tipas'; + $lang['straggrsfunc'] = 'BΕ«senos keitimo funkcija'; + $lang['straggrstype'] = 'BΕ«senos reikΕ‘mΔ—s duomenΕ³ tipas'; + $lang['straggrffunc'] = 'GalutinΔ— funkcija'; + $lang['straggrinitcond'] = 'PradinΔ— sΔ…lyga'; + $lang['straggrsortop'] = 'Rikiavimo operatorius'; + $lang['strconfdropaggregate'] = 'Ar tikrai norite Ε‘alinti agregavimo funkcijΔ… "%s"?'; + $lang['straggregatedropped'] = 'Agregavimo funkcija paΕ‘alinta.'; + $lang['straggregatedroppedbad'] = 'Nepavyko paΕ‘alinti agregavimo funkcijos.'; + $lang['straggraltered'] = 'Agregavimo funkcija pakeista.'; + $lang['straggralteredbad'] = 'Nepavyko pakeisti agregavimo funkcijos.'; + $lang['straggrneedsname'] = 'Turite suteikti agregavimo funkcijai pavadinimΔ….'; + $lang['straggrneedsbasetype'] = 'Turite nurodyti agregavimo funkcijos pradiniΕ³ duomenΕ³ tipΔ….'; + $lang['straggrneedssfunc'] = 'Turite nurodyti agregavimo funkcijos bΕ«senos keitimo funkcijos pavadinimΔ….'; + $lang['straggrneedsstype'] = 'Turite nurodyti agregavimo funkcijos bΕ«senos reikΕ‘mΔ—s duomenΕ³ tipΔ….'; + $lang['straggrcreated'] = 'Agregavimo funkcija sukurta.'; + $lang['straggrcreatedbad'] = 'Nepavyko sukurti agregavimo funkcijos.'; + $lang['straggrshowall'] = 'Rodyti visas agregavimo funkcijas'; + + // Operator Classes + $lang['stropclasses'] = 'OperatoriΕ³ klasΔ—s'; + $lang['strnoopclasses'] = 'OperatoriΕ³ klasiΕ³ nerasta.'; + $lang['straccessmethod'] = 'Prieigos metodas'; + + // Stats and performance + $lang['strrowperf'] = 'ΔraΕ‘Ε³ NaΕ‘umas'; + $lang['strioperf'] = 'I/O NaΕ‘umas'; + $lang['stridxrowperf'] = 'IndeksΕ³ ΔraΕ‘Ε³ NaΕ‘umas'; + $lang['stridxioperf'] = 'IndeksΕ³ I/O NaΕ‘umas'; + $lang['strpercent'] = '%'; + $lang['strsequential'] = 'Nuoseklus'; + $lang['strscan'] = 'PerΕΎiΕ«rΔ—ti'; + $lang['strread'] = 'Skaityti'; + $lang['strfetch'] = 'Paimti'; + $lang['strheap'] = 'KrΕ«va'; +$lang['strtoast'] = 'TOAST'; +$lang['strtoastindex'] = 'TOAST Indeksas'; + $lang['strcache'] = 'PodΔ—lis'; + $lang['strdisk'] = 'Diskas'; + $lang['strrows2'] = 'ΔraΕ‘ai'; + + // Tablespaces + $lang['strtablespace'] = 'LenteliΕ³ erdvΔ—'; + $lang['strtablespaces'] = 'LenteliΕ³ erdvΔ—s'; + $lang['strshowalltablespaces'] = 'Rodyti visas lenteliΕ³ erdves'; + $lang['strnotablespaces'] = 'LenteliΕ³ erdviΕ³ nerasta.'; + $lang['strcreatetablespace'] = 'Kurti lenteliΕ³ erdvΔ™'; + $lang['strlocation'] = 'Vieta'; + $lang['strtablespaceneedsname'] = 'Turite suteikti lenteliΕ³ erdvei pavadinimΔ….'; + $lang['strtablespaceneedsloc'] = 'Turite nurodyti katalogΔ…, kuriame turi bΕ«ti sukurta lenteliΕ³ erdvΔ—.'; + $lang['strtablespacecreated'] = 'LenteliΕ³ erdvΔ— sukurta.'; + $lang['strtablespacecreatedbad'] = 'Nepavyko sukurti lenteliΕ³ erdvΔ—s.'; + $lang['strconfdroptablespace'] = 'Ar tikrai norite Ε‘alinti lenteliΕ³ erdvΔ™ "%s"?'; + $lang['strtablespacedropped'] = 'LenteliΕ³ erdvΔ— paΕ‘alinta.'; + $lang['strtablespacedroppedbad'] = 'Nepavyko paΕ‘alinti lenteliΕ³ erdvΔ—s.'; + $lang['strtablespacealtered'] = 'LenteliΕ³ erdvΔ— pakeista.'; + $lang['strtablespacealteredbad'] = 'Nepavyko pakeisti lenteliΕ³ erdvΔ—s.'; + + // Miscellaneous + $lang['strtopbar'] = '%s veikia %s:%s -- JΕ«s esate prisijungΔ™s kaip "%s"'; + $lang['strtimefmt'] = 'j M Y - g:iA'; + $lang['strhelp'] = 'Pagalba'; + $lang['strhelpicon'] = '?'; + $lang['strhelppagebrowser'] = 'Pagalbos puslapio narΕ‘yklΔ—'; + $lang['strselecthelppage'] = 'Pasirinkite pagalbos puslapΔ―'; + $lang['strinvalidhelppage'] = 'Netinkamas pagalbos puslapis.'; + $lang['strlogintitle'] = 'Prisijungti prie %s'; + $lang['strlogoutmsg'] = 'Atsijungta nuo %s'; + $lang['strloading'] = 'Δkeliama...'; + $lang['strerrorloading'] = 'Klaida Δ―keliant'; + $lang['strclicktoreload'] = 'SpustelΔ—kite, kad bΕ«tΕ³ atsiΕ³sta iΕ‘ naujo'; + + // Autovacuum + $lang['strautovacuum'] = 'Automatinis apvalymas'; + $lang['strturnedon'] = 'Δjungta'; + $lang['strturnedoff'] = 'IΕ‘jungta'; + $lang['strenabled'] = 'Veiksnus'; + $lang['strnovacuumconf'] = 'Automatinio apvalymo konfigΕ«racijΕ³ nerasta.'; + $lang['strvacuumbasethreshold'] = 'Apvalymo bazinΔ— riba'; + $lang['strvacuumscalefactor'] = 'Apvalymo skalΔ—s koeficientas'; + $lang['stranalybasethreshold'] = 'AnalizΔ—s bazinΔ— riba'; + $lang['stranalyzescalefactor'] = 'AnalizΔ—s skalΔ—s koeficientas'; +$lang['strvacuumcostdelay'] = 'Apvalymo Cost Delay'; +$lang['strvacuumcostlimit'] = 'Apvalymo Cost Limit'; + $lang['strvacuumpertable'] = 'LenteliΕ³ automatinio apvalymo konfigΕ«racijos'; + $lang['straddvacuumtable'] = 'PridΔ—ti lentelΔ—s automatinio apvalymo konfigΕ«racijΔ…'; + $lang['streditvacuumtable'] = 'Taisyti lentelΔ—s %s automatinio apvalymo konfigΕ«racijΔ…'; + $lang['strdelvacuumtable'] = 'Ε alinti lentelΔ—s %s automatinio apvalymo konfigΕ«racijΔ… ?'; + $lang['strvacuumtablereset'] = 'LentelΔ—s %s automatinio apvalymo konfigΕ«racijos reikΕ‘mΔ—s atstatytos Δ― numatytΔ…sias'; + $lang['strdelvacuumtablefail'] = 'Nepavyko panaikinti lentelΔ—s %s automatinio apvalymo konfigΕ«racijos'; + $lang['strsetvacuumtablesaved'] = 'LentelΔ—s %s automatinio apvalymo konfigΕ«racija Δ―raΕ‘yta.'; + $lang['strsetvacuumtablefail'] = 'Nepavyko konfigΕ«ruoti lentelΔ—s %s automatinio apvalymo.'; + $lang['strspecifydelvacuumtable'] = 'Turite nurodyti lentelΔ™, kurios automatinio apvalymo konfigΕ«racijΔ… norite panaikinti.'; + $lang['strspecifyeditvacuumtable'] = 'Turite nurodyti lentelΔ™, kurios automatinio apvalymo konfigΕ«racijΔ… norite taisyti.'; + $lang['strnotdefaultinred'] = 'ReikΕ‘mΔ—s, kitokios nei numatytosios, paΕΎymΔ—tos raudonai.'; + + // Table-level Locks + $lang['strlocks'] = 'BlokuotΔ—s'; + $lang['strtransaction'] = 'Operacijos Identifikatorius'; + $lang['strvirtualtransaction'] = 'Virtualios Operacijos Identifikatorius'; + $lang['strprocessid'] = 'Proceso Identifikatorius'; + $lang['strmode'] = 'BlokuotΔ—s veiksena'; + $lang['strislockheld'] = 'Ar blokuotΔ— veikia?'; + + // Prepared transactions + $lang['strpreparedxacts'] = 'ParuoΕ‘tos operacijos'; + $lang['strxactid'] = 'Operacijos identifikatorius'; + $lang['strgid'] = 'Globalus identifikatorius'; + + // Fulltext search +$lang['strfulltext'] = 'Full Text Search'; + $lang['strftsconfig'] = 'FTS konfigΕ«racija'; + $lang['strftsconfigs'] = 'KonfigΕ«racijos'; + $lang['strftscreateconfig'] = 'Kurti FTS konfigΕ«racijΔ…'; + $lang['strftscreatedict'] = 'Kurti ΕΎodynΔ…'; + $lang['strftscreatedicttemplate'] = 'Kurti ΕΎodyno Ε‘ablonΔ…'; + $lang['strftscreateparser'] = 'Kurti analizatoriΕ³'; + $lang['strftsnoconfigs'] = 'FTS konfigΕ«racijΕ³ nerasta.'; + $lang['strftsconfigdropped'] = 'FTS konfigΕ«racija paΕ‘alinta.'; + $lang['strftsconfigdroppedbad'] = 'Nepavyko paΕ‘alinti FTS konfigΕ«racijos.'; + $lang['strconfdropftsconfig'] = 'Ar tikrai norite Ε‘alinti FTS konfigΕ«racijΔ… "%s"?'; + $lang['strconfdropftsdict'] = 'Ar tikrai norite Ε‘alinti FTS ΕΎodynΔ… "%s"?'; + $lang['strconfdropftsmapping'] = 'Ar tikrai norite Ε‘alinti atvaizdΔ― "%s" FTS konfigΕ«racijai "%s"?'; + $lang['strftstemplate'] = 'Ε ablonas'; + $lang['strftsparser'] = 'Analizatorius'; + $lang['strftsconfigneedsname'] = 'Turite suteikti FTS konfigΕ«racijai pavadinimΔ….'; + $lang['strftsconfigcreated'] = 'FTS konfigΕ«racija sukurta.'; + $lang['strftsconfigcreatedbad'] = 'Nepavyko sukurti FTS konfigΕ«racijos.'; + $lang['strftsmapping'] = 'Atvaizdis'; + $lang['strftsdicts'] = 'Ε½odynai'; + $lang['strftsdict'] = 'Ε½odynas'; + $lang['strftsemptymap'] = 'IΕ‘valyti FTS konfigΕ«racijos atvaizdΔ―.'; + $lang['strftsconfigaltered'] = 'FTS konfigΕ«racija pakeista.'; + $lang['strftsconfigalteredbad'] = 'Nepavyko pakeisti FTS konfigΕ«racijos.'; + $lang['strftsconfigmap'] = 'FTS konfigΕ«racijos atvaizdis'; + $lang['strftsparsers'] = 'FTS analizatoriai'; + $lang['strftsnoparsers'] = 'FTS analizatoriΕ³ nΔ—ra.'; + $lang['strftsnodicts'] = 'FTS ΕΎodynΕ³ nΔ—ra.'; + $lang['strftsdictcreated'] = 'FTS ΕΎodynas sukurtas.'; + $lang['strftsdictcreatedbad'] = 'Nepavyko sukurti FTS ΕΎodyno.'; +$lang['strftslexize'] = 'Lexize'; +$lang['strftsinit'] = 'Init'; + $lang['strftsoptionsvalues'] = 'Parinktys ir reikΕ‘mΔ—s'; + $lang['strftsdictneedsname'] = 'Turite suteikti FTS ΕΎodynui pavadinimΔ….'; + $lang['strftsdictdropped'] = 'FTS ΕΎodynas paΕ‘alintas.'; + $lang['strftsdictdroppedbad'] = 'Nepavyko paΕ‘alinti FTS ΕΎodyno.'; + $lang['strftsdictaltered'] = 'FTS ΕΎodynas pakeistas.'; + $lang['strftsdictalteredbad'] = 'Nepavyko pakeisti FTS ΕΎodyno.'; + $lang['strftsaddmapping'] = 'PridΔ—ti naujΔ… atvaizdΔ―'; + $lang['strftsspecifymappingtodrop'] = 'Turite nurodyti bent vienΔ… atvaizdΔ―, kurΔ― norite paΕ‘alinti.'; + $lang['strftsspecifyconfigtoalter'] = 'Turite nurodyti bent vienΔ… FTS konfigΕ«racijΔ…, kuriΔ… norite pakeisti.'; + $lang['strftsmappingdropped'] = 'FTS atvaizdis paΕ‘alintas.'; + $lang['strftsmappingdroppedbad'] = 'Nepavyko paΕ‘alinti FTS atvaizdΕΎio.'; + $lang['strftsnodictionaries'] = 'Ε½odynΕ³ nerasta.'; + $lang['strftsmappingaltered'] = 'FTS atvaizdis pakeistas.'; + $lang['strftsmappingalteredbad'] = 'Nepavyko pakeisti FTS atvaizdΕΎio.'; + $lang['strftsmappingadded'] = 'FTS atvaizdis pridΔ—tas.'; + $lang['strftsmappingaddedbad'] = 'Nepavyko pridΔ—ti FTS atvaizdΕΎio.'; + $lang['strftstabconfigs'] = 'KonfigΕ«racijos'; + $lang['strftstabdicts'] = 'Ε½odynai'; + $lang['strftstabparsers'] = 'Analizatoriai'; + $lang['strftscantparsercopy'] = 'Negalima nurodyti kartu ir analizatoriaus, ir Ε‘ablono, teksto paieΕ‘kos konfikΕ«racijos kΕ«rimo metu.'; +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/mongol.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/mongol.php new file mode 100644 index 00000000..e2e9d6c7 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/mongol.php @@ -0,0 +1,527 @@ +'; + $lang['strfirst'] = '<< ќШмΠΠ€'; + $lang['strlast'] = 'Ρ“??Π¬Π€ >>'; + $lang['strfailed'] = 'сЬЀББ'; + $lang['strcreate'] = '??Π³Π§ΠΌΠ¨'; + $lang['strcreated'] = '??Π³Π§ΠΌΠ³ΠΌΠ'; + $lang['strcomment'] = 'Ρ”Π‘ΠͺΠ¬Π’Π‘Π²'; + $lang['strlength'] = 'Ρ•Π²Π΄'; + $lang['strdefault'] = 'Ρ”Π―Π€Π―Π²Π¨Π―Πͺ Π’Π΅Π³'; + $lang['stralter'] = '??Π²ΠΎΠ©Π¬?Π¨'; + $lang['strok'] = 'OK'; + $lang['strcancel'] = 'ш?ΠΎΠ©ΠΠ§?Πͺ Π’Π―Π¬Π§Π―Π¨'; + $lang['strsave'] = 'шБЀЧБЬБШ'; + $lang['strreset'] = 'свЩЬЧБШ'; + $lang['strinsert'] = 'явССЬЧБ Π¨Π©ΠͺΠ¨'; + $lang['strselect'] = 'Ρ“Π―ΠΠ§Π―Π¨'; + $lang['strdelete'] = 'Ρ•Π³Π΄Π§Π‘Π¨'; + $lang['strupdate'] = 'Ρ“Π‘ΠͺΠΆΠ©Π²Π΅Π΅Π¬Π‘Π¨'; + $lang['strreferences'] = 'шБЭББвБЬ'; + $lang['stryes'] = 'Ρ”Π©ΠͺΠ­'; + $lang['strno'] = '?Π§?Πͺ'; + $lang['strtrue'] = '?ΠΠΌΠ'; + $lang['strfalse'] = 'шСЀБЬ'; + $lang['stredit'] = 'њБгБШ'; + $lang['strcolumns'] = 'Ρ‚Π‘Π§Π‘ΠΠ‘'; + $lang['strrows'] = 'э?Π²'; + $lang['strobjects'] = 'яВиΠ₯Π«Π΄'; + $lang['strexample'] = 'Π§ΠΌΠ¨ Π­ΠΌΠ΄'; + $lang['strback'] = 'Ρ‚Π΅Π£Π‘Π¨'; + $lang['strqueryresults'] = 'сгССЬЧйР?Π² Π€?Π'; + $lang['strshow'] = '?ΠΊΠΌΠ¨'; + $lang['strempty'] = 'шЯЯгЬЯШ'; + $lang['strlanguage'] = 'шмЬ'; + $lang['strencoding'] = 'Ρ‹Π―Π€ΠΎΠ©Π¬Π―Π¨'; + $lang['strvalue'] = 'Ρ•Π΄Π§Π‘'; + $lang['strunique'] = 'яΠΠ£Π§Π―Πͺ'; + $lang['strprimary'] = '?ΠΠ€Π³ΠΌΠ'; + $lang['strexport'] = 'ќЫгаЯвд'; + $lang['strimport'] = 'Ρ‰Π­Π°Π―Π²Π΄'; + $lang['strsql'] = 'SQL'; + $lang['strgo'] = '?Π²Π§ΠΌΠ¬ΠΆΠ¬??Π¬'; + $lang['stradmin'] = 'њЯШЩЯРВБΠͺΠ§Π΅Π΅Π¬Π‘Π¨'; + $lang['strvacuum'] = 'Vacuum'; + $lang['stranalyze'] = 'Ρ„?Π Π»Π©ΠΠΆΠ©Π¬Π§ΠΌΠΌ'; + $lang['strclusterindex'] = 'Ρ‹Π¬Π‘Π³Π΄Π₯Π²'; + $lang['strclustered'] = 'Ρ‹Π¬Π‘Π³Π΄Π₯Π²'; + $lang['strreindex'] = 'Ρ„Π‘Π¨Π©Π Π©ΠΠ€Π₯Π«Π³Π¬ΠΌΠ¨'; + $lang['strrun'] = 'сТЩЬЬССЬБШ'; + $lang['stradd'] = 'юмЭмШ'; + $lang['strevent'] = 'Ρ”?Π¬?Π·'; + $lang['strwhere'] = 'шББΠΠ‘'; + $lang['strinstead'] = 'явЯΠΠ€ ΠΠΈ '; + $lang['strwhen'] = 'шмкмм'; + $lang['strformat'] = 'Ρ†Π―Π²Π­Π‘Π΄'; + $lang['strdata'] = '?Π§?Π§Π€?Π¬'; + $lang['strconfirm'] = 'Ρ‚Π‘Π΄Π‘Π¬Π§Π‘Π‘ΠΆΠ΅Π΅Π¬Π‘Π¨'; + $lang['strexpression'] = '?ΠͺΠ¬Π€ΠΌΠ¬'; + $lang['strellipsis'] = '...'; + $lang['strexpand'] = '?Π²Π§?Π΄Π§?Π¨'; + $lang['strcollapse'] = 'Ρ•ΠΠ‘Π¬Π΄'; + $lang['strexplain'] = 'Ρ”Π‘ΠͺΠ¬Π’Π‘Π²'; + $lang['strfind'] = 'яЬЯШ'; + $lang['stroptions'] = 'Ρ“Π―ΠΠ§Π―Π¬Π΄'; + $lang['strrefresh'] = 'Ρ“ΠΌΠ²Π§ΠΌΠΌΠ¨'; + $lang['strdownload'] = 'Ρ”Π‘Π΄Π‘ΠΆ Π‘Π·Π‘Π¨'; + $lang['strinfo'] = 'эмЀммЬмЬ'; + $lang['stroids'] = 'OIDs'; + $lang['stradvanced'] = 'юмЭмЬд'; + + // Error handling + $lang['strbadconfig'] = 'Ρ”Π‘ΠΠΉ config.inc.php Π¨Π΅Π΅ΠΎΠ©Π²Π³Π‘Π Π’Π‘ΠͺΠΠ‘. config.inc.php-dist ?Π‘Π‘Π³ Π€Π‘Π¨Π©Π ??Π³Π§ΠΌ.'; + $lang['strnotloaded'] = 'Ρ”Π‘ΠΠΉ PHP Π³Π΅Π΅Π¬Π§Π‘Π¬Π΄ ΠΠΈ PostgreSQL ?Π§?Π§Π€Π¬Π©ΠͺΠ Π³Π‘ΠΠ΄Π‘Πͺ Π¨Π‘Π­Π΄Π²Π‘Π Π‘ΠΆΠ­Π¬Π¬Π‘Π¨ Π’Π―Π¬Π―ΠΆΠ§?Πͺ Π’Π‘ΠͺΠΠ‘. Ρ”Π‘ PHP ?Π§Π‘Π‘ Π€Π‘Π¨Π©Π --with-pgsql Π΄Π―Π¨Π©Π²Π§Π―Π―Π΄Π―Πͺ Π³Π΅Π΅Π¬Π§Π‘.'; + $lang['strbadschema'] = 'Ρ”Π―Π¨Π©Π²Π§Π―Π― Π’Π΅Π²Π΅Π΅'; + $lang['strbadencoding'] = 'Failed to set client encoding in database.'; + $lang['strsqlerror'] = 'SQL Π‘Π¬Π€Π‘Π‘:'; + $lang['strinstatement'] = 'Ρ— Π―Π°Π₯Π²Π‘Π΄Π―Π²Π₯:'; + $lang['strinvalidparam'] = 'юΠ₯Π·Π₯Π²ΠΠΉΠͺ Π°Π‘Π²Π‘Π­Π₯Π΄Π² Π³Π«Π²Π©Π°Π΄Π‘.'; + $lang['strnodata'] = 'Ρ„Π‘ΠΠΠΉΠ¨ ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯ΠΠ―.'; + $lang['strnoobjects'] = 'яВпΠ₯Π«Π΄Π―Π· ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯ΠΠ―.'; + $lang['strrownotunique'] = 'юΠ₯Π΄ Π΅ΠΠ©Π«Π‘Π¬ΠΈΠΠ―Π§Π― Π©Π€Π₯ΠΠ΄Π©Π¦Π©Π«Π‘Π΄Π―Π²Π‘ Π€Π¬Π± ΠΌΠ΄Π―Πͺ ΠΊΠ‘Π°Π©Π³Π©.'; + + // Tables + $lang['strtable'] = 'Ρ”Π‘Π’Π¬Π©Π£Π‘'; + $lang['strtables'] = 'Ρ”Π‘Π’Π¬Π©Π£ΠΉ'; + $lang['strshowalltables'] = 'β„–Π―Π«Π‘ΠΊΠ‘Π΄ΠΈ Π·Π³Π₯ Π΄Π‘Π’Π¬Π©Π£ΠΉ'; + $lang['strnotables'] = 'Ρ”Π‘Π’Π¬Π©Π£ ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯ΠΠ―.'; + $lang['strnotable'] = ' Ρ”Π‘Π’Π¬Π©Π£Π‘ ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯ΠΠ‘.'; + $lang['strcreatetable'] = 'Ρ“Π―ΠΊΠ€Π‘Π΄ΠΈ Π΄Π‘Π’Π¬Π©Π£Π΅'; + $lang['strtablename'] = 'Ρ‰Π­Π± Π΄Π‘Π’Π¬Π©Π£ΠΉ'; + $lang['strtableneedsname'] = 'Ρ—Π‘Π­ ΠΠ₯Π―Π’Π¨Π―Π€Π©Π­Π― Π―Π°Π²Π₯Π€Π₯Π¬Π©Π΄ΠΈ Π©Π­Π± Π΄Π‘Π’Π¬Π©Π£ΠΉ.'; + $lang['strtableneedsfield'] = 'Ρ—Π‘Π­ ΠΠ₯Π―Π’Π¨Π―Π€Π©Π­Π― Π―Π°Π²Π₯Π€Π₯Π¬Π©Π΄ΠΈ Π°Π― Π«Π²Π‘ΠͺΠΠ₯Πͺ Π­Π₯Π²Π₯ Π―Π€ΠΠ― Π°Π―Π¬Π₯.'; + $lang['strtableneedscols'] = 'Ρ—Π‘Π­ ΠΠ₯Π―Π’Π¨Π―Π€Π©Π­Π― Π΅Π«Π‘ΠΊΠ‘Π΄ΠΈ Π€Π―Π°Π΅Π³Π΄Π©Π­Π―Π₯ ΠΎΠ©Π³Π¬Π― Π‘Π΄Π²Π©Π’Π΅Π΄Π―Π·.'; + $lang['strtablecreated'] = 'Ρ”Π‘Π’Π¬Π©Π£Π‘ Π³Π―ΠΊΠ€Π‘ΠΠ‘.'; + $lang['strtablecreatedbad'] = 'Ρ“Π―ΠΊΠ€Π‘ΠΠ©Π₯ Π΄Π‘Π’Π¬Π©Π£ΠΉ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strconfdroptable'] = 'Ρ—ΠΉ Π΅Π·Π₯Π²Π₯ΠΠΉ, ΠΎΠ΄Π― Π¨Π―Π΄Π©Π΄Π₯ Π΅Π€Π‘Π¬Π©Π΄ΠΈ Π΄Π‘Π’Π¬Π©Π£Π΅ "%s"?'; + $lang['strtabledropped'] = 'Ρ”Π‘Π’Π¬Π©Π£Π‘ Π΅Π€Π‘Π¬Π₯ΠΠ‘.'; + $lang['strtabledroppedbad'] = 'Ρ•Π€Π‘Π¬Π₯ΠΠ©Π₯ Π΄Π‘Π’Π¬Π©Π£ΠΉ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strconfemptytable'] = 'Ρ—ΠΉ Π΅Π·Π₯Π²Π₯ΠΠΉ, ΠΎΠ΄Π― Π¨Π―Π΄Π©Π΄Π₯ Π―ΠΎΠ©Π³Π΄Π©Π΄ΠΈ Π΄Π‘Π’Π¬Π©Π£Π΅ "%s"?'; + $lang['strtableemptied'] = 'Ρ”Π‘Π’Π¬Π©Π£Π‘ Π―ΠΎΠ©Π½Π₯ΠΠ‘.'; + $lang['strtableemptiedbad'] = 'яоЩгдЫБ Π΄Π‘Π’Π¬Π©Π£ΠΉ Π°Π²Π₯Π²Π·Π‘ΠΠ‘.'; + $lang['strinsertrow'] = 'Ρ„Π―Π’Π‘Π·Π©Π΄ΠΈ ΠΊΠ‘Π°Π©Π³ΠΈ'; + $lang['strrowinserted'] = 'њБаЩги Π€Π―Π’Π‘Π·Π¬Π₯ΠΠ‘.'; + $lang['strrowinsertedbad'] = 'Ρ„Π―Π’Π‘Π·Π¬Π₯ΠΠ©Π₯ ΠΊΠ‘Π°Π©Π³Π© Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['streditrow'] = 'Ρ’Π₯Π€Π‘Π«Π΄Π©Π²Π―Π·Π‘Π΄ΠΈ ΠΊΠ‘Π°Π©Π³ΠΈ'; + $lang['strrowupdated'] = 'њБаЩги Π―Π’ΠΠ―Π·Π¬Π₯ΠΠ‘.'; + $lang['strrowupdatedbad'] = 'яВΠΠ―Π·Π¬Π₯ΠΠ©Π₯ ΠΊΠ‘Π°Π©Π³Π© Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strdeleterow'] = 'Ρ•Π€Π‘Π¬Π©Π΄ΠΈ ΠΊΠ‘Π°Π©Π³ΠΈ'; + $lang['strconfdeleterow'] = 'Ρ—ΠΉ Π΅Π·Π₯Π²Π₯ΠΠΉ, ΠΎΠ΄Π― Π¨Π―Π΄Π©Π΄Π₯ Π΅Π€Π‘Π¬Π©Π΄ΠΈ ΠΊΠ‘Π°Π©Π³ΠΈ?'; + $lang['strrowdeleted'] = 'њБаЩги Π΅Π€Π‘Π¬Π₯ΠΠ‘.'; + $lang['strrowdeletedbad'] = 'Ρ•Π€Π‘Π¬Π₯ΠΠ©Π₯ ΠΊΠ‘Π°Π©Π³Π© Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strsaveandrepeat'] = 'Ρ—Π³Π΄Π‘Π·Π©Π΄ΠΈ Π© Π°Π―Π·Π΄Π―Π²Π©Π΄ΠΈ'; + $lang['strfield'] = 'β„–Π―Π¬Π₯'; + $lang['strfields'] = 'β„–Π―Π¬Π±'; + $lang['strnumfields'] = 'Ρ‹Π―Π¬-Π·Π― Π°Π―Π¬Π₯Πͺ'; + $lang['strfieldneedsname'] = 'Ρ—Π‘Π­ ΠΠ₯Π―Π’Π¨Π―Π€Π©Π­Π― ΠΠ‘ΠΊΠ·Π‘Π΄ΠΈ Π°Π―Π¬Π₯'; + $lang['strselectallfields'] = 'Ρ—ΠΉΠ’Π²Π‘Π΄ΠΈ Π·Π³Π₯ Π°Π―Π¬Π±'; + $lang['strselectneedscol'] = 'Ρ—Π‘Π­ ΠΠ₯Π―Π’Π¨Π―Π€Π©Π­Π― Π΅Π«Π‘ΠΊΠ‘Π΄ΠΈ Π°Π― Π«Π²Π‘ΠͺΠΠ₯Πͺ Π­Π₯Π²Π₯ Π―Π€Π©Π Π‘Π΄Π²Π©Π’Π΅Π΄'; + $lang['strselectunary'] = 'Ρ•ΠΠ‘Π²ΠΠΉΠͺ Π―Π°Π₯Π²Π‘Π΄Π―Π² ΠΠ₯ Π­Π―ΠΆΠ₯Π΄ Π©Π­Π₯Π΄ΠΈ Π·Π₯Π¬Π©ΠΎΠ©ΠΠ΅.'; + $lang['straltercolumn'] = 'Ρ‰ΠΊΠ­Π₯ΠΠ©Π΄ΠΈ Π‘Π΄Π²Π©Π’Π΅Π΄'; + $lang['strcolumnaltered'] = 'сдвЩВСд Π©ΠΊΠ­Π₯ΠΠ₯Π.'; + $lang['strcolumnalteredbad'] = 'Ρ‰ΠΊΠ­Π₯ΠΠ₯ΠΠ©Π₯ Π‘Π΄Π²Π©Π’Π΅Π΄Π‘ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strconfdropcolumn'] = 'Ρ—ΠΉ Π΅Π·Π₯Π²Π₯ΠΠΉ, ΠΎΠ΄Π― Π¨Π―Π΄Π©Π΄Π₯ Π΅Π€Π‘Π¬Π©Π΄ΠΈ Π‘Π΄Π²Π©Π’Π΅Π΄ "%s" Π΄Π‘Π’Π¬Π©Π£ΠΉ "%s"?'; + $lang['strcolumndropped'] = 'сдвЩВСд Π΅Π€Π‘Π¬Π₯Π.'; + $lang['strcolumndroppedbad'] = 'Ρ•Π€Π‘Π¬Π₯ΠΠ©Π₯ Π‘Π΄Π²Π©Π’Π΅Π΄Π‘ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['straddcolumn'] = 'Ρ„Π―Π’Π‘Π·Π©Π΄ΠΈ Π‘Π΄Π²Π©Π’Π΅Π΄'; + $lang['strcolumnadded'] = 'сдвЩВСд Π€Π―Π’Π‘Π·Π¬Π₯Π.'; + $lang['strcolumnaddedbad'] = 'Ρ„Π―Π’Π‘Π·Π¬Π₯ΠΠ©Π₯ Π‘Π΄Π²Π©Π’Π΅Π΄Π‘ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strdataonly'] = 'Ρ”Π―Π¬ΠΈΠ«Π― Π€Π‘ΠΠΠΉΠ₯'; + $lang['strcascade'] = 'Ρ‹Π‘Π³Π«Π‘Π€Π―Π­'; + $lang['strtablealtered'] = 'Ρ”Π‘Π’Π¬Π©Π£Π‘ Π©ΠΊΠ­Π₯ΠΠ₯ΠΠ‘.'; + $lang['strtablealteredbad'] = 'Ρ‰ΠΊΠ­Π₯ΠΠ₯ΠΠ©Π₯ Π΄Π‘Π’Π¬Π©Π£ΠΉ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strdataonly'] = 'Ρ”Π―Π¬ΠΈΠ«Π― Π€Π‘ΠΠΠΉΠ₯'; + $lang['strstructureonly'] = 'Ρ”Π―Π¬ΠΈΠ«Π― Π³Π΄Π²Π΅Π«Π΄Π΅Π²Π΅'; + $lang['strstructureanddata'] = 'Ρ“Π΄Π²Π΅Π«Π΄Π΅Π²Π΅ Π© Π€Π‘ΠΠΠΉΠ₯'; + + // Users + $lang['struser'] = 'β„–Π―Π¬ΠΈΠΊΠ―Π·Π‘Π΄Π₯Π¬ΠΈ'; + $lang['strusers'] = 'β„–Π―Π¬ΠΈΠΊΠ―Π·Π‘Π΄Π₯Π¬Π©'; + $lang['strusername'] = 'Ρ‰Π­Π± Π°Π―Π¬ΠΈΠΊΠ―Π·Π‘Π΄Π₯Π¬Π±'; + $lang['strpassword'] = 'β„–Π‘Π²Π―Π¬ΠΈ'; + $lang['strsuper'] = 'Ρ“Π΅Π°Π₯Π²Π°Π―Π¬ΠΈΠΊΠ―Π·Π‘Π΄Π₯Π¬ΠΈ?'; + $lang['strcreatedb'] = 'Ρ“Π―ΠΊΠ€Π‘Π΄ΠΈ Π’Π‘ΠΊΠ΅ Π€Π‘ΠΠΠΉΠ¨?'; + $lang['strexpires'] = 'Ρ“Π²Π―Π« Π€Π₯ΠͺΠ³Π΄Π·Π©Π±'; + $lang['strnousers'] = 'юΠ₯Π΄ Π΄Π‘Π«Π©Π¨ Π°Π―Π¬ΠΈΠΊΠ―Π·Π‘Π΄Π₯Π¬Π₯Πͺ.'; + $lang['struserupdated'] = 'β„–Π―Π¬ΠΈΠΊΠ―Π·Π‘Π΄Π₯Π¬ΠΈ Π―Π’ΠΠ―Π·Π¬Π₯Π.'; + $lang['struserupdatedbad'] = 'яВΠΠ―Π·Π¬Π₯ΠΠ©Π₯ Π°Π―Π¬ΠΈΠΊΠ―Π·Π‘Π΄Π₯Π¬Π± Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strshowallusers'] = 'β„–Π―Π«Π‘ΠΊΠ‘Π΄ΠΈ Π·Π³Π₯Π¨ Π°Π―Π¬ΠΈΠΊΠ―Π·Π‘Π΄Π₯Π¬Π₯Πͺ'; + $lang['strcreateuser'] = 'Ρ“Π―ΠΊΠ€Π‘Π΄ΠΈ Π°Π―Π¬ΠΈΠΊΠ―Π·Π‘Π΄Π₯Π¬Π±'; + $lang['struserneedsname'] = 'Ρ—ΠΉ Π€Π―Π¬ΠΆΠΠΉ Π·Π·Π₯Π³Π΄Π© Π©Π­Π± Π°Π―Π¬ΠΈΠΊΠ―Π·Π‘Π΄Π₯Π¬Π±.'; + $lang['strusercreated'] = 'β„–Π―Π¬ΠΈΠΊΠ―Π·Π‘Π΄Π₯Π¬ΠΈ Π³Π―ΠΊΠ€Π‘Π.'; + $lang['strusercreatedbad'] = 'Ρ“Π―ΠΊΠ€Π‘ΠΠ©Π₯ Π°Π―Π¬ΠΈΠΊΠ―Π·Π‘Π΄Π₯Π¬Π± Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strconfdropuser'] = 'Ρ—ΠΉ Π΅Π·Π₯Π²Π₯ΠΠΉ, ΠΎΠ΄Π― Π¨Π―Π΄Π©Π΄Π₯ Π΅Π€Π‘Π¬Π©Π΄ΠΈ Π°Π―Π¬ΠΈΠΊΠ―Π·Π‘Π΄Π₯Π¬Π± "%s"?'; + $lang['struserdropped'] = 'β„–Π―Π¬ΠΈΠΊΠ―Π·Π‘Π΄Π₯Π¬ΠΈ Π΅Π€Π‘Π¬Π₯Π.'; + $lang['struserdroppedbad'] = 'Ρ•Π€Π‘Π¬Π₯ΠΠ©Π₯ Π°Π―Π¬ΠΈΠΊΠ―Π·Π‘Π΄Π₯Π¬Π± Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['straccount'] = 'сЫЫБСΠΠ΄'; + $lang['strchangepassword'] = 'Ρ‰ΠΊΠ­Π₯ΠΠ©Π΄ΠΈ Π°Π‘Π²Π―Π¬ΠΈ'; + $lang['strpasswordchanged'] = 'β„–Π‘Π²Π―Π¬ΠΈ Π©ΠΊΠ­Π₯ΠΠ₯Π.'; + $lang['strpasswordchangedbad'] = 'Ρ‰ΠΊΠ­Π₯ΠΠ₯ΠΠ©Π₯ Π°Π‘Π²Π―Π¬Π± Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strpasswordshort'] = 'β„–Π‘Π²Π―Π¬ΠΈ Π³Π¬Π©Π»Π«Π―Π­ Π«Π―Π²Π―Π΄Π«Π©Πͺ.'; + $lang['strpasswordconfirm'] = 'β„–Π‘Π²Π―Π¬ΠΈ ΠΠ₯ Π³Π―Π―Π΄Π·Π₯Π΄Π³Π΄Π·Π΅Π₯Π΄ Π°Π―Π€Π΄Π·Π₯Π²ΠΆΠ€Π₯ΠΠ©Π .'; + + // Groups + $lang['strgroup'] = 'Ρ‡Π²Π΅Π°Π°Π‘'; + $lang['strgroups'] = 'Ρ‡Π²Π΅Π°Π°ΠΉ'; + $lang['strnogroup'] = 'Ρ‡Π²Π΅Π°Π°Π‘ ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯ΠΠ‘.'; + $lang['strnogroups'] = 'юЩ Π―Π€ΠΠ―Πͺ Π§Π²Π΅Π°Π°ΠΉ ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯ΠΠ―.'; + $lang['strcreategroup'] = 'Ρ“Π―ΠΊΠ€Π‘Π΄ΠΈ Π§Π²Π΅Π°Π°Π΅'; + $lang['strshowallgroups'] = 'β„–Π―Π«Π‘ΠΊΠ‘Π΄ΠΈ Π·Π³Π₯ Π§Π²Π΅Π°Π°ΠΉ'; + $lang['strgroupneedsname'] = 'Ρ—Π‘Π­ ΠΠ₯Π―Π’Π¨Π―Π€Π©Π­Π― Π΅Π«Π‘ΠΊΠ‘Π΄ΠΈ ΠΠ‘ΠΊΠ·Π‘ΠΠ©Π₯ Π§Π²Π΅Π°Π°ΠΉ.'; + $lang['strgroupcreated'] = 'Ρ‡Π²Π΅Π°Π°Π‘ Π³Π―ΠΊΠ€Π‘ΠΠ‘.'; + $lang['strgroupcreatedbad'] = 'Ρ“Π―ΠΊΠ€Π‘ΠΠ©Π₯ Π§Π²Π΅Π°Π°ΠΉ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strconfdropgroup'] = 'Ρ—ΠΉ Π΅Π·Π₯Π²Π₯ΠΠΉ, ΠΎΠ΄Π― Π¨Π―Π΄Π©Π΄Π₯ Π΅Π€Π‘Π¬Π©Π΄ΠΈ Π§Π²Π΅Π°Π°Π΅ "%s"?'; + $lang['strgroupdropped'] = 'Ρ‡Π²Π΅Π°Π°Π‘ Π΅Π€Π‘Π¬Π₯ΠΠ‘.'; + $lang['strgroupdroppedbad'] = 'Ρ•Π€Π‘Π¬Π₯ΠΠ©Π₯ Π§Π²Π΅Π°Π°ΠΉ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strmembers'] = 'Ρ•ΠΎΠ‘Π³Π΄ΠΠ©Π«Π―Π·'; + $lang['straddmember'] = 'Ρ„Π―Π’Π‘Π·Π©Π΄ΠΈ Π΅ΠΎΠ‘Π³Π΄ΠΠ©Π«Π‘'; + $lang['strmemberadded'] = 'Ρ•ΠΎΠ‘Π³Π΄ΠΠ©Π« Π€Π―Π’Π‘Π·Π¬Π₯Π.'; + $lang['strmemberaddedbad'] = 'Ρ„Π―Π’Π‘Π·Π¬Π₯ΠΠ©Π₯ Π΅ΠΎΠ‘Π³Π΄ΠΠ©Π«Π‘ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strdropmember'] = 'Ρ•Π€Π‘Π¬Π©Π΄ΠΈ Π΅ΠΎΠ‘Π³Π΄ΠΠ©Π«Π‘'; + $lang['strconfdropmember'] = 'Ρ—ΠΉ Π΅Π·Π₯Π²Π₯ΠΠΉ, ΠΎΠ΄Π― Π¨Π―Π΄Π©Π΄Π₯ Π΅Π€Π‘Π¬Π©Π΄ΠΈ Π΅ΠΎΠ‘Π³Π΄ΠΠ©Π«Π‘ "%s" Π©ΠΊ Π§Π²Π΅Π°Π°ΠΉ "%s"?'; + $lang['strmemberdropped'] = 'Ρ•ΠΎΠ‘Π³Π΄ΠΠ©Π« Π΅Π€Π‘Π¬Π₯Π.'; + $lang['strmemberdroppedbad'] = 'Ρ•Π€Π‘Π¬Π₯ΠΠ©Π₯ Π΅ΠΎΠ‘Π³Π΄ΠΠ©Π«Π‘ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + + // Privilges + $lang['strprivilege'] = 'β„–Π²Π©Π·Π©Π¬Π₯Π§Π©Π±'; + $lang['strprivileges'] = 'β„–Π²Π©Π·Π©Π¬Π₯Π§Π©Π©'; + $lang['strnoprivileges'] = 'яВпΠ₯Π«Π΄ ΠΠ₯ Π©Π­Π₯Π₯Π΄ Π°Π²Π©Π·Π©Π¬Π₯Π§Π©Πͺ.'; + $lang['strgrant'] = 'Ρ•Π³Π©Π¬Π©Π΄ΠΈ'; + $lang['strrevoke'] = 'ягЬБВЩди'; + $lang['strgranted'] = 'β„–Π²Π©Π·Π©Π¬Π₯Π§Π©Π© Π©ΠΊΠ­Π₯ΠΠ₯ΠΠΉ.'; + $lang['strgrantfailed'] = 'Ρ‰ΠΊΠ­Π₯ΠΠ₯ΠΠ©Π₯ Π°Π²Π©Π·Π©Π¬Π₯Π§Π©Πͺ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strgrantbad'] = 'Ρ—Π‘Π­ ΠΠ₯Π―Π’Π¨Π―Π€Π©Π­Π― Π΅Π«Π‘ΠΊΠ‘Π΄ΠΈ Π¨Π―Π΄Π± Π’ΠΉ Π―Π€ΠΠ―Π§Π― Π°Π―Π¬ΠΈΠΊΠ―Π·Π‘Π΄Π₯Π¬Π± Π©Π¬Π© Π§Π²Π΅Π°Π°Π΅ Π© Π¨Π―Π΄Π± Π’ΠΉ Π―Π€ΠΠ΅ Π°Π²Π©Π·Π©Π¬Π₯Π§Π©Π .'; + $lang['stralterprivs'] = 'Ρ‰ΠΊΠ­Π₯ΠΠ©Π΄ΠΈ Π°Π²Π©Π·Π©Π¬Π₯Π§Π©Π©'; + $lang['strgrantor'] = 'Ρ„Π―ΠΠ―Π²'; + $lang['strasterisk'] = '*'; + + // Databases + $lang['strdatabase'] = 'Ρ‚Π‘ΠΊΠ‘ Π€Π‘ΠΠΠΉΠ¨'; + $lang['strdatabases'] = 'Ρ‚Π‘ΠΊΠΉ Π€Π‘ΠΠΠΉΠ¨'; + $lang['strshowalldatabases'] = 'β„–Π―Π«Π‘ΠΊΠ‘Π΄ΠΈ Π·Π³Π₯ Π’Π‘ΠΊΠΉ Π€Π‘ΠΠΠΉΠ¨'; + $lang['strnodatabase'] = 'Ρ‚Π‘ΠΊΠ‘ Π€Π‘ΠΠΠΉΠ¨ ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯ΠΠ‘.'; + $lang['strnodatabases'] = 'юЩ Π―Π€ΠΠ―Πͺ Π’Π‘ΠΊΠΉ Π€Π‘ΠΠΠΉΠ¨ ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯ΠΠ―.'; + $lang['strcreatedatabase'] = 'Ρ“Π―ΠΊΠ€Π‘Π΄ΠΈ Π’Π‘ΠΊΠ΅ Π€Π‘ΠΠΠΉΠ¨'; + $lang['strdatabasename'] = 'Ρ‰Π­Π± Π’Π‘ΠΊΠΉ Π€Π‘ΠΠΠΉΠ¨'; + $lang['strdatabaseneedsname'] = 'Ρ—Π‘Π­ ΠΠ₯Π―Π’Π¨Π―Π€Π©Π­Π― Π°Π²Π©Π³Π·Π―Π©Π΄ΠΈ Π©Π­Π± Ρ—Π‘Π»Π₯Πͺ Π’Π‘ΠΊΠ₯ Π€Π‘ΠΠΠΉΠ¨.'; + $lang['strdatabasecreated'] = 'Ρ‚Π‘ΠΊΠ‘ Π€Π‘ΠΠΠΉΠ¨ Π³Π―ΠΊΠ€Π‘ΠΠ‘.'; + $lang['strdatabasecreatedbad'] = 'Ρ“Π―ΠΊΠ€Π‘ΠΠ©Π₯ Π’Π‘ΠΊΠΉ Π€Π‘ΠΠΠΉΠ¨ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strconfdropdatabase'] = 'Ρ—ΠΉ Π΅Π·Π₯Π²Π₯ΠΠΉ, ΠΎΠ΄Π― Π¨Π―Π΄Π©Π΄Π₯ Π΅ΠΠ©ΠΎΠ΄Π―ΠΆΠ©Π΄ΠΈ Π’Π‘ΠΊΠ΅ Π€Π‘ΠΠΠΉΠ¨ "%s"?'; + $lang['strdatabasedropped'] = ' Ρ‚Π‘ΠΊΠ‘ Π€Π‘ΠΠΠΉΠ¨ Π΅ΠΠ©ΠΎΠ΄Π―ΠΆΠ₯ΠΠ‘.'; + $lang['strdatabasedroppedbad'] = 'Ρ•ΠΠ©ΠΎΠ΄Π―ΠΆΠ₯ΠΠ©Π₯ Π’Π‘ΠΊΠΉ Π€Π‘ΠΠΠΉΠ¨ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strentersql'] = 'Ρ—Π·Π₯Π€Π©Π΄Π₯ SQL-ΠΊΠ‘Π°Π²Π―Π³ ΠΠ©ΠΆΠ₯:'; + $lang['strvacuumgood'] = 'яаΠ₯Π²Π‘Π£Π©Π± Π°Π₯Π²Π₯Π³Π΄Π²Π―ΠͺΠ«Π© ΠΊΠ‘Π·Π₯Π²Π»Π₯ΠΠ‘.'; + $lang['strvacuumbad'] = 'яаΠ₯Π²Π‘Π£Π©Π± Π°Π₯Π²Π₯Π³Π΄Π²Π―ΠͺΠ«Π© Π°Π²Π₯Π²Π·Π‘ΠΠ‘.'; + $lang['stranalyzegood'] = ' яаΠ₯Π²Π‘Π£Π©Π± Π‘ΠΠ‘Π¬Π©ΠΊΠ‘ ΠΊΠ‘Π·Π₯Π²Π»Π₯ΠΠ‘.'; + $lang['stranalyzebad'] = ' яаΠ₯Π²Π‘Π£Π©Π± Π‘ΠΠ‘Π¬Π©ΠΊΠ‘ ΠΊΠ‘Π·Π₯Π²Π»Π₯ΠΠ‘.'; + + // Views + $lang['strview'] = 'β„–Π²Π₯Π€Π³Π΄Π‘Π·Π¬Π₯ΠΠ©Π₯'; + $lang['strviews'] = 'β„–Π²Π₯Π€Π³Π΄Π‘Π·Π¬Π₯ΠΠ©Π±'; + $lang['strshowallviews'] = 'β„–Π―Π«Π‘ΠΊΠ‘Π΄ΠΈ Π·Π³Π₯ Π°Π²Π₯Π€Π³Π΄Π‘Π·Π¬Π₯ΠΠ©Π±'; + $lang['strnoview'] = 'β„–Π²Π₯Π€Π³Π΄Π‘Π·Π¬Π₯ΠΠ©Π₯ ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯ΠΠ―.'; + $lang['strnoviews'] = 'юЩ Π―Π€ΠΠ―Π§Π― Π°Π²Π₯Π€Π³Π΄Π‘Π·Π¬Π₯ΠΠ©Π± ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯ΠΠ―.'; + $lang['strcreateview'] = 'Ρ“Π―ΠΊΠ€Π‘Π΄ΠΈ Π°Π²Π₯Π€Π³Π΄Π‘Π·Π¬Π₯ΠΠ©Π₯'; + $lang['strviewname'] = 'Ρ‰Π­Π± Π°Π²Π₯Π€Π³Π΄Π‘Π·Π¬Π₯ΠΠ©Π±'; + $lang['strviewneedsname'] = 'Ρ—Π‘Π­ ΠΠ₯Π―Π’Π¨Π―Π€Π©Π­Π― Π΅Π«Π‘ΠΊΠ‘Π΄ΠΈ Π©Π­Π± Π°Π²Π₯Π€Π³Π΄Π‘Π·Π¬Π₯ΠΠ©Π±.'; + $lang['strviewneedsdef'] = ' Ρ—Π‘Π­ ΠΠ₯Π―Π’Π¨Π―Π€Π©Π­Π― Π―Π°Π²Π₯Π€Π₯Π¬Π©Π΄ΠΈ Π‘Π΄Π²Π©Π’Π΅Π΄ΠΉ Π°Π²Π₯Π€Π³Π΄Π‘Π·Π¬Π₯ΠΠ©Π±.'; + $lang['strviewcreated'] = 'β„–Π²Π₯Π€Π³Π΄Π‘Π·Π¬Π₯ΠΠ©Π₯ Π³Π―ΠΊΠ€Π‘ΠΠ―.'; + $lang['strviewcreatedbad'] = 'Ρ“Π―ΠΊΠ€Π‘ΠΠ©Π₯ Π°Π²Π₯Π€Π³Π΄Π‘Π·Π¬Π₯ΠΠ©Π± Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strconfdropview'] = 'Ρ—ΠΉ Π΅Π·Π₯Π²Π₯ΠΠΉ, ΠΎΠ΄Π― Π¨Π―Π΄Π©Π΄Π₯ Π΅ΠΠ©ΠΎΠ΄Π―ΠΆΠ©Π΄ΠΈ Π°Π²Π₯Π€Π³Π΄Π‘Π·Π¬Π₯ΠΠ©Π₯ "%s"?'; + $lang['strviewdropped'] = 'β„–Π²Π₯Π€Π³Π΄Π‘Π·Π¬Π₯ΠΠ©Π₯ Π΅ΠΠ©ΠΎΠ΄Π―ΠΆΠ₯ΠΠ―.'; + $lang['strviewdroppedbad'] = 'Ρ•ΠΠ©ΠΎΠ΄Π―ΠΆΠ₯ΠΠ©Π₯ Π°Π²Π₯Π€Π³Π΄Π‘Π·Π¬Π₯ΠΠ©Π± Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strviewupdated'] = 'β„–Π²Π₯Π€Π³Π΄Π‘Π·Π¬Π₯ΠΠ©Π₯ Π―Π’ΠΠ―Π·Π¬Π₯ΠΠ―.'; + $lang['strviewupdatedbad'] = 'яВΠΠ―Π·Π¬Π₯ΠΠ©Π₯ Π°Π²Π₯Π€Π³Π΄Π‘Π·Π¬Π₯ΠΠ©Π± Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + + // Sequences + $lang['strsequence'] = 'β„–Π―Π³Π¬Π₯Π€Π―Π·Π‘Π΄Π₯Π¬ΠΈΠΠ―Π³Π΄ΠΈ'; + $lang['strsequences'] = ' β„–Π―Π³Π¬Π₯Π€Π―Π·Π‘Π΄Π₯Π¬ΠΈΠΠ―Π³Π΄Π©'; + $lang['strshowallsequences'] = 'β„–Π―Π«Π‘ΠΊΠ‘Π΄ΠΈ Π·Π³Π₯ Π°Π―Π³Π¬Π₯Π€Π―Π·Π‘Π΄Π₯Π¬ΠΈΠΠ―Π³Π΄Π©'; + $lang['strnosequence'] = 'β„–Π―Π³Π¬Π₯Π€Π―Π·Π‘Π΄Π₯Π¬ΠΈΠΠ―Π³Π΄ΠΈ ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯ΠΠ‘.'; + $lang['strnosequences'] = 'юЩ Π―Π€ΠΠ―Πͺ Π°Π―Π³Π¬Π₯Π€Π―Π·Π‘Π΄Π₯Π¬ΠΈΠΠ―Π³Π΄Π© ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯ΠΠ―.'; + $lang['strcreatesequence'] = 'Ρ“Π―ΠΊΠ€Π‘Π΄ΠΈ Π°Π―Π³Π¬Π₯Π€Π―Π·Π‘Π΄Π₯Π¬ΠΈΠΠ―Π³Π΄ΠΈ'; + $lang['strlastvalue'] = 'β„–Π―Π³Π¬Π₯Π€ΠΠ₯Π₯ ΠΊΠΠ‘ΠΎΠ₯ΠΠ©Π₯'; + $lang['strincrementby'] = 'Ρ•Π·Π₯Π¬Π©ΠΎΠ₯ΠΠ©Π₯ ΠΠ‘'; + $lang['strstartvalue'] = 'юБоБЬиΠΠ―Π₯ ΠΊΠΠ‘ΠΎΠ₯ΠΠ©Π₯'; + $lang['strmaxvalue'] = 'эБЫг. Π·Π₯Π¬Π©ΠΎΠ©ΠΠ‘'; + $lang['strminvalue'] = 'эЩΠ. Π·Π₯Π¬Π©ΠΎΠ©ΠΠ‘'; + $lang['strcachevalue'] = 'Ρ’Π‘ΠΊΠ­Π₯Π² Π«ΠΌΠ»Π‘'; + $lang['strlogcount'] = 'Log Count'; + $lang['striscycled'] = 'њБУЩЫЬЩди?'; + $lang['strsequenceneedsname'] = 'Ρ—Π‘Π­ ΠΠ₯Π―Π’Π¨Π―Π€Π©Π­Π― Π΅Π«Π‘ΠΊΠ‘Π΄ΠΈ Π©Π­Π± Π°Π―Π³Π¬Π₯Π€Π―Π·Π‘Π΄Π₯Π¬ΠΈΠΠ―Π³Π΄Π©.'; + $lang['strsequencecreated'] = 'β„–Π―Π³Π¬Π₯Π€Π―Π·Π‘Π΄Π₯Π¬ΠΈΠΠ―Π³Π΄ΠΈ Π³Π―ΠΊΠ€Π‘ΠΠ‘.'; + $lang['strsequencecreatedbad'] = 'Ρ“Π―ΠΊΠ€Π‘ΠΠ©Π₯ Π°Π―Π³Π¬Π₯Π€Π―Π·Π‘Π΄Π₯Π¬ΠΈΠΠ―Π³Π΄Π© Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strconfdropsequence'] = 'Ρ—ΠΉ Π΅Π·Π₯Π²Π₯ΠΠΉ, ΠΎΠ΄Π― Π¨Π―Π΄Π©Π΄Π₯ Π΅ΠΠ©ΠΎΠ΄Π―ΠΆΠ©Π΄ΠΈ Π°Π―Π³Π¬Π₯Π€Π―Π·Π‘Π΄Π₯Π¬ΠΈΠΠ―Π³Π΄ΠΈ "%s"?'; + $lang['strsequencedropped'] = 'β„–Π―Π³Π¬Π₯Π€Π―Π·Π‘Π΄Π₯Π¬ΠΈΠΠ―Π³Π΄ΠΈ Π΅ΠΠ©ΠΎΠ΄Π―ΠΆΠ₯ΠΠ‘.'; + $lang['strsequencedroppedbad'] = 'Ρ•ΠΠ©ΠΎΠ΄Π―ΠΆΠ₯ΠΠ©Π₯ Π°Π―Π³Π¬Π₯Π€Π―Π·Π‘Π΄Π₯Π¬ΠΈΠΠ―Π³Π΄Π© Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strsequencereset'] = 'β„–Π―Π³Π¬Π₯Π€Π―Π·Π‘Π΄Π₯Π¬ΠΈΠΠ―Π³Π΄ΠΈ Π³Π’Π²Π―Π»Π₯ΠΠ‘.'; + $lang['strsequenceresetbad'] = 'Ρ“Π’Π²Π―Π³ Π°Π―Π³Π¬Π₯Π€Π―Π·Π‘Π΄Π₯Π¬ΠΈΠΠ―Π³Π΄Π© Π°Π²Π₯Π²Π·Π‘Π.'; + + // Indexes + $lang['strindexes'] = 'Ρ‰ΠΠ€Π₯Π«Π³'; + $lang['strindexname'] = 'Ρ‰Π­Π± Π©ΠΠ€Π₯Π«Π³Π‘'; + $lang['strshowallindexes'] = 'β„–Π―Π«Π‘ΠΊΠ‘Π΄ΠΈ Π·Π³Π₯ Π©ΠΠ€Π₯Π«Π³ΠΉ'; + $lang['strnoindex'] = 'Ρ‰ΠΠ€Π₯Π«Π³ ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯Π.'; + $lang['strnoindexes'] = 'юЩ Π―Π€ΠΠ―Π§Π― Π©ΠΠ€Π₯Π«Π³Π‘ ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯ΠΠ―.'; + $lang['strcreateindex'] = 'Ρ“Π―ΠΊΠ€Π‘Π΄ΠΈ Π©ΠΠ€Π₯Π«Π³'; + $lang['strtabname'] = 'Ρ‰Π­Π± Π΄Π‘Π’Π¬Π©Π£ΠΉ'; + $lang['strcolumnname'] = 'Ρ‰Π­Π± Π‘Π΄Π²Π©Π’Π΅Π΄Π‘'; + $lang['strindexneedsname'] = 'Ρ—Π‘Π­ ΠΠ₯Π―Π’Π¨Π―Π€Π©Π­Π― Π΅Π«Π‘ΠΊΠ‘Π΄ΠΈ Π©Π­Π± Π©ΠΠ€Π₯Π«Π³Π‘'; + $lang['strindexneedscols'] = 'Ρ—Π‘Π­ ΠΠ₯Π―Π’Π¨Π―Π€Π©Π­Π― Π΅Π«Π‘ΠΊΠ‘Π΄ΠΈ Π€Π―Π°Π΅Π³Π΄Π©Π­Π―Π₯ Π«Π―Π¬Π©ΠΎΠ₯Π³Π΄Π·Π― Π‘Π΄Π²Π©Π’Π΅Π΄Π―Π·.'; + $lang['strindexcreated'] = 'Ρ‰ΠΠ€Π₯Π«Π³ Π³Π―ΠΊΠ€Π‘Π.'; + $lang['strindexcreatedbad'] = 'Ρ“Π―ΠΊΠ€Π‘ΠΠ©Π₯ Π©ΠΠ€Π₯Π«Π³Π‘ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strconfdropindex'] = 'Ρ—ΠΉ Π΅Π·Π₯Π²Π₯ΠΠΉ, ΠΎΠ΄Π― Π¨Π―Π΄Π©Π΄Π₯ Π΅ΠΠ©ΠΎΠ΄Π―ΠΆΠ©Π΄ΠΈ Π©ΠΠ€Π₯Π«Π³ "%s"?'; + $lang['strindexdropped'] = 'Ρ‰ΠΠ€Π₯Π«Π³ Π΅ΠΠ©ΠΎΠ΄Π―ΠΆΠ₯Π.'; + $lang['strindexdroppedbad'] = 'Ρ•ΠΠ©ΠΎΠ΄Π―ΠΆΠ₯ΠΠ©Π₯ Π©ΠΠ€Π₯Π«Π³Π‘ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strkeyname'] = 'Ρ‰Π­Π± Π«Π¬Π ΠΎΠ‘'; + $lang['struniquekey'] = 'Ρ•ΠΠ©Π«Π‘Π¬ΠΈΠΠΉΠͺ Π«Π¬Π ΠΎ'; + $lang['strprimarykey'] = 'β„–Π₯Π²Π·Π©ΠΎΠΠΉΠͺ Π«Π¬Π ΠΎ'; + $lang['strindextype'] = 'Ρ—Π©Π€ Π©ΠΠ€Π₯Π«Π³Π‘'; + $lang['strindexname'] = 'Ρ‰Π­Π± Π©ΠΠ€Π₯Π«Π³Π‘'; + $lang['strtablecolumnlist'] = 'сдвЩВСдЯз Π· Π΄Π‘Π’Π¬Π©Π£Π₯'; + $lang['strindexcolumnlist'] = 'сдвЩВСдЯз Π· Π©ΠΠ€Π₯Π«Π³Π₯'; + $lang['strconfcluster'] = 'Ρ—ΠΉ Π΅Π·Π₯Π²Π₯ΠΠΉ, ΠΎΠ΄Π― Π¨Π―Π΄Π©Π΄Π₯ Π«Π¬Π‘Π³Π΄Π₯Π²Π©ΠΊΠ―Π·Π‘Π΄ΠΈ "%s"?'; + $lang['strclusteredgood'] = 'Ρ‹Π¬Π‘Π³Π΄Π₯Π²Π©ΠΊΠ‘Π£Π©Π± ΠΊΠ‘Π·Π₯Π²Π»Π₯ΠΠ‘.'; + $lang['strclusteredbad'] = 'Ρ‹Π¬Π‘Π³Π΄Π₯Π²Π©ΠΊΠ‘Π£Π©Π± Π°Π²Π₯Π²Π·Π‘ΠΠ‘.'; + + // Rules + $lang['strrules'] = 'β„–Π²Π‘Π·Π©Π¬Π‘'; + $lang['strrule'] = 'β„–Π²Π‘Π·Π©Π¬Π―'; + $lang['strshowallrules'] = 'β„–Π―Π«Π‘ΠΊΠ‘Π΄ΠΈ Π·Π³Π₯ Π°Π²Π‘Π·Π©Π¬Π‘'; + $lang['strnorule'] = 'β„–Π²Π‘Π·Π©Π¬Π― ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯ΠΠ―.'; + $lang['strnorules'] = 'юЩ Π―Π€ΠΠ―Π§Π― Π°Π²Π‘Π·Π©Π¬Π‘ ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯ΠΠ―.'; + $lang['strcreaterule'] = 'Ρ“Π―ΠΊΠ€Π‘Π΄ΠΈ Π°Π²Π‘Π·Π©Π¬Π―'; + $lang['strrulename'] = 'Ρ‰Π­Π± Π°Π²Π‘Π·Π©Π¬Π‘'; + $lang['strruleneedsname'] = 'Ρ—Π‘Π­ ΠΠ₯Π―Π’Π¨Π―Π€Π©Π­Π― Π΅Π«Π‘ΠΊΠ‘Π΄ΠΈ Π©Π­Π± Π°Π²Π‘Π·Π©Π¬Π‘.'; + $lang['strrulecreated'] = 'β„–Π²Π‘Π·Π©Π¬Π― Π³Π―ΠΊΠ€Π‘ΠΠ―.'; + $lang['strrulecreatedbad'] = 'Ρ“Π―ΠΊΠ€Π‘ΠΠ©Π₯ Π°Π²Π‘Π·Π©Π¬Π‘ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strconfdroprule'] = 'Ρ—ΠΉ Π΅Π·Π₯Π²Π₯ΠΠΉ, ΠΎΠ΄Π― Π¨Π―Π΄Π©Π΄Π₯ Π΅ΠΠ©ΠΎΠ΄Π―ΠΆΠ©Π΄ΠΈ Π°Π²Π‘Π·Π©Π¬Π― "%s" on "%s"?'; + $lang['strruledropped'] = 'β„–Π²Π‘Π·Π©Π¬Π― Π΅ΠΠ©ΠΎΠ΄Π―ΠΆΠ₯ΠΠ―.'; + $lang['strruledroppedbad'] = 'Ρ•ΠΠ©ΠΎΠ΄Π―ΠΆΠ₯ΠΠ©Π₯ Π°Π²Π‘Π·Π©Π¬Π‘ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + + // Constraints + $lang['strconstraints'] = 'яЧвБΠΠ©ΠΎΠ₯ΠΠ©Π±'; + $lang['strshowallconstraints'] = 'β„–Π―Π«Π‘ΠΊΠ‘Π΄ΠΈ Π·Π³Π₯ Π―Π§Π²Π‘ΠΠ©ΠΎΠ₯ΠΠ©Π±'; + $lang['strnoconstraints'] = 'юЩ Π―Π€ΠΠ―Π§Π― Π―Π§Π²Π‘ΠΠ©ΠΎΠ₯ΠΠ©Π± ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯ΠΠ―.'; + $lang['strcreateconstraint'] = 'Ρ“Π―ΠΊΠ€Π‘Π΄ΠΈ Π―Π§Π²Π‘ΠΠ©ΠΎΠ₯ΠΠ©Π₯'; + $lang['strconstraintcreated'] = 'яЧвБΠΠ©ΠΎΠ₯ΠΠ©Π₯ Π³Π―ΠΊΠ€Π‘ΠΠ―.'; + $lang['strconstraintcreatedbad'] = 'Ρ“Π―ΠΊΠ€Π‘ΠΠ©Π₯ Π―Π§Π²Π‘ΠΠ©ΠΎΠ₯ΠΠ©Π± Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strconfdropconstraint'] = 'Ρ—ΠΉ Π΅Π·Π₯Π²Π₯ΠΠΉ, ΠΎΠ΄Π― Π¨Π―Π΄Π©Π΄Π₯ Π΅ΠΠ©ΠΎΠ΄Π―ΠΆΠ©Π΄ΠΈ Π―Π§Π²Π‘ΠΠ©ΠΎΠ₯ΠΠ©Π₯ "%s" on "%s"?'; + $lang['strconstraintdropped'] = 'яЧвБΠΠ©ΠΎΠ₯ΠΠ©Π₯ Π΅ΠΠ©ΠΎΠ΄Π―ΠΆΠ₯ΠΠ―.'; + $lang['strconstraintdroppedbad'] = 'Ρ•ΠΠ©ΠΎΠ΄Π―ΠΆΠ₯ΠΠ©Π₯ Π―Π§Π²Π‘ΠΠ©ΠΎΠ₯ΠΠ©Π± Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['straddcheck'] = 'Ρ„Π―Π’Π‘Π·Π©Π΄ΠΈ Π°Π²Π―Π·Π₯Π²Π«Π΅'; + $lang['strcheckneedsdefinition'] = 'яЧвБΠΠ©ΠΎΠ₯ΠΠ©Π₯ Π°Π²Π―Π·Π₯Π²Π«Π© ΠΠ΅ΠΆΠ€Π‘Π₯Π΄Π³Π± Π· Π―Π°Π²Π₯Π€Π₯Π¬Π₯ΠΠ©Π©.'; + $lang['strcheckadded'] = 'яЧвБΠΠ©ΠΎΠ₯ΠΠ©Π₯ Π°Π²Π―Π·Π₯Π²Π«Π© Π€Π―Π’Π‘Π·Π¬Π₯ΠΠ―.'; + $lang['strcheckaddedbad'] = 'Ρ„Π―Π’Π‘Π·Π¬Π₯ΠΠ©Π₯ Π―Π§Π²Π‘ΠΠ©ΠΎΠ₯ΠΠ©Π± Π°Π²Π―Π·Π₯Π²Π«Π© Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['straddpk'] = 'Ρ„Π―Π’Π‘Π·Π©Π΄ΠΈ Π°Π₯Π²Π·Π©ΠΎΠΠΉΠͺ Π«Π¬Π ΠΎ'; + $lang['strpkneedscols'] = 'β„–Π₯Π²Π·Π©ΠΎΠΠΉΠͺ Π«Π¬Π ΠΎ Π€Π―Π¬ΠΆΠ₯Π Π·Π«Π¬Π ΠΎΠ‘Π΄ΠΈ Π¨Π―Π΄Π± Π’ΠΉ Π―Π€Π©Π Π‘Π΄Π²Π©Π’Π΅Π΄.'; + $lang['strpkadded'] = 'β„–Π₯Π²Π·Π©ΠΎΠΠΉΠͺ Π«Π¬Π ΠΎ Π€Π―Π’Π‘Π·Π¬Π₯Π.'; + $lang['strpkaddedbad'] = 'Ρ„Π―Π’Π‘Π·Π¬Π₯ΠΠ©Π₯ Π°Π₯Π²Π·Π©ΠΎΠΠ―Π§Π― Π«Π¬Π ΠΎΠ‘ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['stradduniq'] = 'Ρ„Π―Π’Π‘Π·Π©Π΄ΠΈ Π΅ΠΠ©Π«Π‘Π¬ΠΈΠΠΉΠͺ Π«Π¬Π ΠΎ'; + $lang['struniqneedscols'] = 'Ρ•ΠΠ©Π«Π‘Π¬ΠΈΠΠΉΠͺ Π«Π¬Π ΠΎ Π€Π―Π¬ΠΆΠ₯Π Π·Π«Π¬Π ΠΎΠ‘Π΄ΠΈ Π¨Π―Π΄Π± Π’ΠΉ Π―Π€Π©Π Π‘Π΄Π²Π©Π’Π΅Π΄.'; + $lang['struniqadded'] = 'Ρ•ΠΠ©Π«Π‘Π¬ΠΈΠΠΉΠͺ Π«Π¬Π ΠΎ Π€Π―Π’Π‘Π·Π¬Π₯Π.'; + $lang['struniqaddedbad'] = 'Ρ„Π―Π’Π‘Π·Π¬Π₯ΠΠ©Π₯ Π΅ΠΠ©Π«Π‘Π¬ΠΈΠΠ―Π§Π― Π«Π¬Π ΠΎΠ‘ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['straddfk'] = 'Ρ„Π―Π’Π‘Π·Π©Π΄ΠΈ Π·ΠΠ₯Π»ΠΠ©Πͺ Π«Π¬Π ΠΎ'; + $lang['strfkneedscols'] = 'Ρ—ΠΠ₯Π»ΠΠ©Πͺ Π«Π¬Π ΠΎ Π€Π―Π¬ΠΆΠ₯Π Π·Π«Π¬Π ΠΎΠ‘Π΄ΠΈ Π¨Π―Π΄Π± Π’ΠΉ Π―Π€Π©Π Π‘Π΄Π²Π©Π’Π΅Π΄.'; + $lang['strfkneedstarget'] = 'Ρ—ΠΠ₯Π»ΠΠ₯Π­Π΅ Π«Π¬Π ΠΎΠ΅ ΠΠ₯Π―Π’Π¨Π―Π€Π©Π­Π― Π΅Π«Π‘ΠΊΠ‘Π΄ΠΈ Π£Π₯Π¬Π₯Π·Π΅Π  Π΄Π‘Π’Π¬Π©Π£Π΅.'; + $lang['strfkadded'] = 'Ρ—ΠΠ₯Π»ΠΠ©Πͺ Π«Π¬Π ΠΎ Π€Π―Π’Π‘Π·Π¬Π₯Π.'; + $lang['strfkaddedbad'] = 'Ρ„Π―Π’Π‘Π·Π¬Π₯ΠΠ©Π₯ Π·ΠΠ₯Π»ΠΠ₯Π§Π― Π«Π¬Π ΠΎΠ‘ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strfktarget'] = 'ΡƒΠ₯Π¬Π₯Π·Π‘Π± Π΄Π‘Π’Π¬Π©Π£Π‘'; + $lang['strfkcolumnlist'] = 'сдвЩВСдй Π· Π«Π¬Π ΠΎΠ₯'; + $lang['strondelete'] = 'ON DELETE'; + $lang['stronupdate'] = 'ON UPDATE'; + + // Functions + $lang['strfunction'] = 'Ρ†Π΅ΠΠ«Π£Π©Π±'; + $lang['strfunctions'] = ' Ρ†Π΅ΠΠ«Π£Π©Π©'; + $lang['strshowallfunctions'] = 'β„–Π―Π«Π‘ΠΊΠ‘Π΄ΠΈ Π·Π³Π₯ Π¦Π΅ΠΠ«Π£Π©Π©'; + $lang['strnofunction'] = 'Ρ†Π΅ΠΠ«Π£Π©Π± ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯ΠΠ‘.'; + $lang['strnofunctions'] = 'юЩ Π―Π€ΠΠ―Πͺ Π¦Π΅ΠΠ«Π£Π©Π© ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯ΠΠ―.'; + $lang['strcreatefunction'] = 'Ρ“Π―ΠΊΠ€Π‘Π΄ΠΈ Π¦Π΅ΠΠ«Π£Π©Π '; + $lang['strfunctionname'] = 'Ρ‰Π­Π± Π¦Π΅ΠΠ«Π£Π©Π©'; + $lang['strreturns'] = 'Ρ—Π―ΠΊΠ·Π²Π‘Π½Π‘Π₯Π­Π―Π₯ ΠΊΠΠ‘ΠΎΠ₯ΠΠ©Π₯'; + $lang['strarguments'] = 'свЧСЭΠ₯ΠΠ΄ΠΉ'; + $lang['strproglanguage'] = 'Ρ‘ΠΊΠΉΠ« Π°Π²Π―Π§Π²Π‘Π­Π­Π©Π²Π―Π·Π‘ΠΠ©Π±'; + $lang['strproglanguage'] = 'Ρ‘ΠΊΠΉΠ«'; + $lang['strfunctionneedsname'] = 'Ρ—Π‘Π­ ΠΠ₯Π―Π’Π¨Π―Π€Π©Π­Π― Π΅Π«Π‘ΠΊΠ‘Π΄ΠΈ Π©Π­Π± Π¦Π΅ΠΠ«Π£Π©Π©.'; + $lang['strfunctionneedsdef'] = 'Ρ—Π‘Π­ ΠΠ₯Π―Π’Π¨Π―Π€Π©Π­Π― Π―Π°Π²Π₯Π€Π₯Π¬Π©Π΄ΠΈ Π¦Π΅ΠΠ«Π£Π©Π .'; + $lang['strfunctioncreated'] = 'Ρ†Π΅ΠΠ«Π£Π©Π± Π³Π―ΠΊΠ€Π‘ΠΠ‘.'; + $lang['strfunctioncreatedbad'] = 'Ρ“Π―ΠΊΠ€Π‘ΠΠ©Π₯ Π¦Π΅ΠΠ«Π£Π©Π© Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strconfdropfunction'] = 'Ρ—ΠΉ Π΅Π·Π₯Π²Π₯ΠΠΉ, ΠΎΠ΄Π― Π¨Π―Π΄Π©Π΄Π₯ Π΅ΠΠ©ΠΎΠ΄Π―ΠΆΠ©Π΄ΠΈ Π¦Π΅ΠΠ«Π£Π©Π  "%s"?'; + $lang['strfunctiondropped'] = 'Ρ†Π΅ΠΠ«Π£Π©Π± Π΅ΠΠ©ΠΎΠ΄Π―ΠΆΠ₯ΠΠ‘.'; + $lang['strfunctiondroppedbad'] = 'Ρ•ΠΠ©ΠΎΠ΄Π―ΠΆΠ₯ΠΠ©Π₯ Π¦Π΅ΠΠ«Π£Π©Π© Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strfunctionupdated'] = 'Ρ†Π΅ΠΠ«Π£Π©Π± Π―Π’ΠΠ―Π·Π¬Π₯ΠΠ‘.'; + $lang['strfunctionupdatedbad'] = 'яВΠΠ―Π·Π¬Π₯ΠΠ©Π₯ Π¦Π΅ΠΠ«Π£Π©Π© Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + + // Triggers + $lang['strtrigger'] = 'Ρ”Π²Π©Π§Π§Π₯Π²'; + $lang['strtriggers'] = ' Ρ”Π²Π©Π§Π§Π₯Π²ΠΉ'; + $lang['strshowalltriggers'] = 'β„–Π―Π«Π‘ΠΊΠ‘Π΄ΠΈ Π·Π³Π₯ Π΄Π²Π©Π§Π§Π₯Π²ΠΉ'; + $lang['strnotrigger'] = 'Ρ”Π²Π©Π§Π§Π₯Π² ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯Π.'; + $lang['strnotriggers'] = 'юЩ Π―Π€ΠΠ―Π§Π― Π΄Π²Π©Π§Π§Π₯Π²Π‘ ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯ΠΠ―.'; + $lang['strcreatetrigger'] = 'Ρ“Π―ΠΊΠ€Π‘Π΄ΠΈ Π΄Π²Π©Π§Π§Π₯Π²'; + $lang['strtriggerneedsname'] = 'Ρ—Π‘Π­ ΠΠ₯Π―Π’Π¨Π―Π€Π©Π­Π― Π΅Π«Π‘ΠΊΠ‘Π΄ΠΈ Π©Π­Π± Π΄Π²Π©Π§Π§Π₯Π²Π‘.'; + $lang['strtriggerneedsfunc'] = 'Ρ—Π‘Π­ ΠΠ₯Π―Π’Π¨Π―Π€Π©Π­Π― Π―Π°Π²Π₯Π€Π₯Π¬Π©Π΄ΠΈ Π¦Π΅ΠΠ«Π£Π©Π  Π΄Π²Π©Π§Π§Π₯Π²Π‘.'; + $lang['strtriggercreated'] = 'Ρ”Π²Π©Π§Π§Π₯Π² Π³Π―ΠΊΠ€Π‘Π.'; + $lang['strtriggercreatedbad'] = 'Ρ“Π―ΠΊΠ€Π‘ΠΠ©Π₯ Π΄Π²Π©Π§Π§Π₯Π²Π‘ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strconfdroptrigger'] = 'Ρ—ΠΉ Π΅Π·Π₯Π²Π₯ΠΠΉ, ΠΎΠ΄Π― Π¨Π―Π΄Π©Π΄Π₯ Π΅ΠΠ©ΠΎΠ΄Π―ΠΆΠ©Π΄ΠΈ Π΄Π²Π©Π§Π§Π₯Π² "%s" ΠΠ‘ "%s"?'; + $lang['strtriggerdropped'] = 'Ρ”Π²Π©Π§Π§Π₯Π² Π΅ΠΠ©ΠΎΠ΄Π―ΠΆΠ₯Π.'; + $lang['strtriggerdroppedbad'] = 'Ρ•ΠΠ©ΠΎΠ΄Π―ΠΆΠ₯ΠΠ©Π₯ Π΄Π²Π©Π§Π§Π₯Π²Π‘ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strtriggeraltered'] = 'Ρ”Π²Π©Π§Π§Π₯Π² Π©ΠΊΠ­Π₯ΠΠ₯Π.'; + $lang['strtriggeralteredbad'] = 'Ρ‰ΠΊΠ­Π₯ΠΠ₯ΠΠ©Π₯ Π΄Π²Π©Π§Π§Π₯Π²Π‘ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + + // Types + $lang['strtype'] = 'Ρ”Π©Π° Π€Π‘ΠΠΠΉΠ¨'; + $lang['strtypes'] = 'Ρ”Π©Π°ΠΉ Π€Π‘ΠΠΠΉΠ¨'; + $lang['strshowalltypes'] = 'β„–Π―Π«Π‘ΠΊΠ‘Π΄ΠΈ Π·Π³Π₯ Π΄Π©Π°ΠΉ Π€Π‘ΠΠΠΉΠ¨'; + $lang['strnotype'] = 'Ρ”Π©Π° Π€Π‘ΠΠΠΉΠ¨ ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯Π.'; + $lang['strnotypes'] = 'юЩ Π―Π€ΠΠ―Π§Π― Π΄Π©Π°Π‘ Π€Π‘ΠΠΠΉΠ¨ ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯ΠΠ―.'; + $lang['strcreatetype'] = 'Ρ“Π―ΠΊΠ€Π‘Π΄ΠΈ Π΄Π©Π° Π€Π‘ΠΠΠΉΠ¨'; + $lang['strtypename'] = 'Ρ‰Π­Π± Π΄Π©Π°Π‘ Π€Π‘ΠΠΠΉΠ¨'; + $lang['strinputfn'] = 'Ρ†Π΅ΠΠ«Π£Π©Π± Π·Π·Π―Π€Π‘'; + $lang['stroutputfn'] = 'Ρ†Π΅ΠΠ«Π£Π©Π± Π·ΠΉΠ·Π―Π€Π‘'; + $lang['strpassbyval'] = 'β„–Π₯Π²Π₯Π€Π‘Π΄ΠΈ Π°Π― ΠΊΠΠ‘ΠΎΠ₯ΠΠ©Π ?'; + $lang['stralignment'] = 'Ρ—ΠΉΠ²Π‘Π·ΠΠ©Π·Π‘ΠΠ©Π₯'; + $lang['strelement'] = 'ќЬΠ₯Π­Π₯ΠΠ΄'; + $lang['strdelimiter'] = 'Ρ’Π‘ΠΊΠ€Π₯Π¬Π©Π΄Π₯Π¬ΠΈ'; + $lang['strstorage'] = 'Storage'; + $lang['strtypeneedsname'] = 'Ρ—Π‘Π­ ΠΠ₯Π―Π’Π¨Π―Π€Π©Π­Π― Π΅Π«Π‘ΠΊΠ‘Π΄ΠΈ Π©Π­Π± Π΄Π©Π°Π‘ Π€Π‘ΠΠΠΉΠ¨.'; + $lang['strtypeneedslen'] = 'Ρ—Π‘Π­ ΠΠ₯Π―Π’Π¨Π―Π€Π©Π­Π― Π΅Π«Π‘ΠΊΠ‘Π΄ΠΈ Π²Π‘ΠΊΠ­Π₯Π² Π€Π¬Π± Π΄Π©Π°Π‘ Π€Π‘ΠΠΠΉΠ¨.'; + $lang['strtypecreated'] = 'Ρ”Π©Π° Π€Π‘ΠΠΠΉΠ¨ Π³Π―ΠΊΠ€Π‘Π.'; + $lang['strtypecreatedbad'] = 'Ρ“Π―ΠΊΠ€Π‘ΠΠ©Π₯ Π΄Π©Π°Π‘ Π€Π‘ΠΠΠΉΠ¨ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strconfdroptype'] = 'Ρ—ΠΉ Π΅Π·Π₯Π²Π₯ΠΠΉ, ΠΎΠ΄Π― Π¨Π―Π΄Π©Π΄Π₯ Π΅ΠΠ©ΠΎΠ΄Π―ΠΆΠ©Π΄ΠΈ Π΄Π©Π° Π€Π‘ΠΠΠΉΠ¨ "%s"?'; + $lang['strtypedropped'] = 'Ρ”Π©Π° Π€Π‘ΠΠΠΉΠ¨ Π΅ΠΠ©ΠΎΠ΄Π―ΠΆΠ₯Π.'; + $lang['strtypedroppedbad'] = 'Ρ•ΠΠ©ΠΎΠ΄Π―ΠΆΠ₯ΠΠ©Π₯ Π΄Π©Π°Π‘ Π€Π‘ΠΠΠΉΠ¨ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + + // Schemas + $lang['strschema'] = 'Ρ“Π¨Π₯Π­Π‘'; + $lang['strschemas'] = 'Ρ“Π¨Π₯Π­ΠΉ'; + $lang['strshowallschemas'] = 'β„–Π―Π«Π‘ΠΊΠ‘Π΄ΠΈ Π·Π³Π₯ Π³Π¨Π₯Π­ΠΉ'; + $lang['strnoschema'] = 'Ρ“Π¨Π₯Π­Π‘ ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯ΠΠ‘.'; + $lang['strnoschemas'] = 'юЩ Π―Π€ΠΠ―Πͺ Π³Π¨Π₯Π­ΠΉ ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯ΠΠ―.'; + $lang['strcreateschema'] = 'Ρ“Π―ΠΊΠ€Π‘Π΄ΠΈ Π³Π¨Π₯Π­Π΅'; + $lang['strschemaname'] = 'Ρ‰Π­Π± Π³Π¨Π₯Π­ΠΉ'; + $lang['strschemaneedsname'] = 'Ρ—Π‘Π­ ΠΠ₯Π―Π’Π¨Π―Π€Π©Π­Π― Π΅Π«Π‘ΠΊΠ‘Π΄ΠΈ Π©Π­Π± Π³Π¨Π₯Π­ΠΉ.'; + $lang['strschemacreated'] = 'Ρ“Π¨Π₯Π­Π‘ Π³Π―ΠΊΠ€Π‘ΠΠ‘.'; + $lang['strschemacreatedbad'] = 'Ρ“Π―ΠΊΠ€Π‘ΠΠ©Π₯ Π³Π¨Π₯Π­ΠΉ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strconfdropschema'] = 'Ρ—ΠΉ Π΅Π·Π₯Π²Π₯ΠΠΉ, ΠΎΠ΄Π― Π¨Π―Π΄Π©Π΄Π₯ Π΅ΠΠ©ΠΎΠ΄Π―ΠΆΠ©Π΄ΠΈ Π³Π¨Π₯Π­Π΅ "%s"?'; + $lang['strschemadropped'] = 'Ρ“Π¨Π₯Π­Π‘ Π΅ΠΠ©ΠΎΠ΄Π―ΠΆΠ₯ΠΠ‘.'; + $lang['strschemadroppedbad'] = 'Ρ•ΠΠ©ΠΎΠ΄Π―ΠΆΠ₯ΠΠ©Π₯ Π³Π¨Π₯Π­ΠΉ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + + // Reports + + // Domains + $lang['strdomain'] = 'Ρ„Π―Π­Π₯Π'; + $lang['strdomains'] = 'Ρ„Π―Π­Π₯ΠΠΉ'; + $lang['strshowalldomains'] = 'β„–Π―Π«Π‘ΠΊΠ‘Π΄ΠΈ Π·Π³Π₯ Π€Π―Π­Π₯ΠΠΉ'; + $lang['strnodomains'] = 'юЩ Π―Π€ΠΠ―Π§Π― Π€Π―Π­Π₯ΠΠ‘ ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯ΠΠ―.'; + $lang['strcreatedomain'] = 'Ρ“Π―ΠΊΠ€Π‘Π΄ΠΈ Π€Π―Π­Π₯Π'; + $lang['strdomaindropped'] = 'Ρ„Π―Π­Π₯Π Π΅Π€Π‘Π¬Π₯Π.'; + $lang['strdomaindroppedbad'] = 'Ρ•Π€Π‘Π¬Π₯ΠΠ©Π₯ Π€Π―Π­Π₯ΠΠ‘ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strconfdropdomain'] = 'Ρ—ΠΉ Π΅Π·Π₯Π²Π₯ΠΠΉ, ΠΎΠ΄Π― Π¨Π―Π΄Π©Π΄Π₯ Π΅Π€Π‘Π¬Π©Π΄ΠΈ Π€Π―Π­Π₯Π "%s"?'; + $lang['strdomainneedsname'] = 'Ρ—Π‘Π­ ΠΠ₯Π―Π’Π¨Π―Π€Π©Π­Π― Π΅Π«Π‘ΠΊΠ‘Π΄ΠΈ Π©Π­Π± Π€Π―Π­Π₯ΠΠ‘.'; + $lang['strdomaincreated'] = 'Ρ„Π―Π­Π₯Π Π³Π―ΠΊΠ€Π‘Π.'; + $lang['strdomaincreatedbad'] = 'Ρ“Π―ΠΊΠ€Π‘ΠΠ©Π₯ Π€Π―Π­Π₯ΠΠ‘ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strdomainaltered'] = 'Ρ„Π―Π­Π₯Π Π©ΠΊΠ­Π₯ΠΠ₯Π.'; + $lang['strdomainalteredbad'] = 'Ρ‰ΠΊΠ­Π₯ΠΠ₯ΠΠ©Π₯ Π€Π―Π­Π₯ΠΠ‘ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + + // Operators + $lang['stroperator'] = 'яаΠ₯Π²Π‘Π΄Π―Π²'; + $lang['stroperators'] = 'яаΠ₯Π²Π‘Π΄Π―Π²ΠΉ'; + $lang['strshowalloperators'] = 'β„–Π―Π«Π‘ΠΊΠ‘Π΄ΠΈ Π·Π³Π₯ Π―Π°Π₯Π²Π‘Π΄Π―Π²ΠΉ'; + $lang['strnooperator'] = 'яаΠ₯Π²Π‘Π΄Π―Π² ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯Π.'; + $lang['strnooperators'] = 'яаΠ₯Π²Π‘Π΄Π―Π²ΠΉ ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯ΠΠΉ.'; + $lang['strcreateoperator'] = 'Ρ“Π―ΠΊΠ€Π‘Π΄ΠΈ Π―Π°Π₯Π²Π‘Π΄Π―Π²'; + $lang['strleftarg'] = 'Ρ”Π©Π° Π¬Π₯Π·Π―Π§Π― Π‘Π²Π§Π΅Π­Π₯ΠΠ΄Π‘'; + $lang['strrightarg'] = 'Ρ”Π©Π° Π°Π²Π‘Π·Π―Π§Π― Π‘Π²Π§Π΅Π­Π₯ΠΠ΄Π‘'; + $lang['strcommutator'] = 'β„–Π²Π₯Π―Π’Π²Π‘ΠΊΠ―Π·Π‘ΠΠ©Π₯'; + $lang['strnegator'] = 'ядвЩУБΠΠ©Π₯'; + $lang['strrestrict'] = 'ягЬБВЬΠ₯ΠΠ©Π₯'; + $lang['strjoin'] = 'яВпΠ₯Π€Π©ΠΠ₯ΠΠ©Π₯'; + $lang['strhashes'] = 'шΠ₯Π»Π©Π²Π―Π·Π‘ΠΠ©Π₯'; + $lang['strmerges'] = 'Ρ“Π¬Π©Π±ΠΠ©Π₯'; + $lang['strleftsort'] = 'Ρ“Π―Π΄Π©Π²Π―Π·Π«Π‘ Π°Π― Π¬Π₯Π·Π―Π­Π΅'; + $lang['strrightsort'] = 'Ρ“Π―Π΄Π©Π²Π―Π·Π«Π‘ Π°Π― Π°Π²Π‘Π·Π―Π­Π΅'; + $lang['strlessthan'] = 'эΠ₯ΠΠΈΠ»Π₯'; + $lang['strgreaterthan'] = 'Ρ‚Π―Π¬ΠΈΠ»Π₯'; + $lang['stroperatorneedsname'] = 'Ρ—Π‘Π­ ΠΠ₯Π―Π’Π¨Π―Π€Π©Π­Π― Π΅Π«Π‘ΠΊΠ‘Π΄ΠΈ ΠΠ‘ΠΊΠ·Π‘ΠΠ©Π₯ Π―Π°Π₯Π²Π‘Π΄Π―Π²Π‘.'; + $lang['stroperatorcreated'] = 'яаΠ₯Π²Π‘Π΄Π―Π² Π³Π―ΠΊΠ€Π‘Π'; + $lang['stroperatorcreatedbad'] = 'Π―ΠΊΠ€Π‘ΠΠ©Π₯ Π―Π°Π₯Π²Π‘Π΄Π―Π²Π‘ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + $lang['strconfdropoperator'] = 'Ρ—ΠΉ Π΅Π·Π₯Π²Π₯ΠΠΉ, ΠΎΠ΄Π― Π¨Π―Π΄Π©Π΄Π₯ Π΅ΠΠ©ΠΎΠ΄Π―ΠΆΠ©Π΄ΠΈ Π―Π°Π₯Π²Π‘Π΄Π―Π² "%s"?'; + $lang['stroperatordropped'] = 'яаΠ₯Π²Π‘Π΄Π―Π² Π΅Π€Π‘Π¬Π₯Π.'; + $lang['stroperatordroppedbad'] = 'Ρ•Π€Π‘Π¬Π₯ΠΠ©Π₯ Π―Π°Π₯Π²Π‘Π΄Π―Π²Π‘ Π°Π²Π₯Π²Π·Π‘ΠΠ―.'; + + // Casts + $lang['strcasts'] = 'яВвБкУй'; + $lang['strnocasts'] = 'яВвБкУЯз ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯ΠΠ―.'; + $lang['strsourcetype'] = 'Ρ”Π©Π° Π©Π³Π΄Π―ΠΎΠΠ©Π«Π‘'; + $lang['strtargettype'] = 'Ρ”Π©Π° Π°Π²Π©Π₯Π­ΠΠ©Π«Π‘'; + $lang['strimplicit'] = 'юΠ₯Π±Π·ΠΠΉΠͺ'; + $lang['strinassignment'] = 'Ρ— ΠΠ‘ΠΊΠΠ‘ΠΎΠ₯ΠΠ©Π©'; + $lang['strbinarycompat'] = '(Π€Π·Π―Π©ΠΎΠΠ― Π³Π―Π·Π­Π₯Π³Π΄Π©Π­ΠΉΠͺ)'; + + // Conversions + $lang['strconversions'] = 'β„–Π²Π₯Π―Π’Π²Π‘ΠΊΠ―Π·Π‘ΠΠ©Π₯'; + $lang['strnoconversions'] = 'β„–Π²Π₯Π―Π’Π²Π‘ΠΊΠ―Π·Π‘ΠΠ©Πͺ ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯ΠΠ―.'; + $lang['strsourceencoding'] = 'Ρ‹Π―Π€Π©Π²Π―Π·Π«Π‘ Π©Π³Π΄Π―ΠΎΠΠ©Π«Π‘'; + $lang['strtargetencoding'] = 'Ρ‹Π―Π€Π©Π²Π―Π·Π«Π‘ Π°Π²Π©Π₯Π­ΠΠ©Π«Π‘'; + + // Languages + $lang['strlanguages'] = 'Ρ‘ΠΊΠΉΠ«Π©'; + $lang['strnolanguages'] = 'Ρ‘ΠΊΠΉΠ«Π―Π· ΠΠ₯ Π―Π’ΠΠ‘Π²Π΅ΠΆΠ₯ΠΠ―.'; + $lang['strtrusted'] = 'β„–Π²Π―Π·Π₯Π²Π₯ΠΠ―'; + + // Info + $lang['strnoinfo'] = 'юΠ₯Π΄ Π€Π―Π³Π΄Π΅Π°ΠΠ―Πͺ Π©ΠΠ¦Π―Π²Π­Π‘Π£Π©Π©.'; + $lang['strreferringtables'] = 'Ρ“Π³ΠΉΠ¬Π‘Π Π½Π©Π₯Π³Π± Π΄Π‘Π’Π¬Π©Π£ΠΉ'; + $lang['strparenttables'] = 'Ρ’Π―Π€Π©Π΄Π₯Π¬ΠΈΠ³Π«Π©Π₯ Π΄Π‘Π’Π¬Π©Π£ΠΉ'; + $lang['strchildtables'] = 'Ρ„Π―ΠΎΠ₯Π²ΠΠ©Π₯ Π΄Π‘Π’Π¬Π©Π£ΠΉ'; + + // Miscellaneous + $lang['strtopbar'] = '%s Π·ΠΉΠ°Π―Π¬ΠΠ±Π₯Π΄Π³Π± ΠΠ‘ %s:%s -- Ρ—ΠΉ ΠΊΠ‘Π²Π₯Π§Π©Π³Π΄Π²Π©Π²Π―Π·Π‘ΠΠΉ Π«Π‘Π« "%s"'; + $lang['strtimefmt'] = ' j-m-Y g:i'; + +?> + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/polish.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/polish.php new file mode 100644 index 00000000..dc6cc042 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/polish.php @@ -0,0 +1,745 @@ +>'; + $lang['strfailed'] = 'Nieudany'; + $lang['strcreate'] = 'UtwΓ³rz'; + $lang['strcreated'] = 'Utworzony'; + $lang['strcomment'] = 'Komentarz'; + $lang['strlength'] = 'DΕ‚ugoΕ›Δ‡'; + $lang['strdefault'] = 'DomyΕ›lny'; + $lang['stralter'] = 'ZmieΕ„'; + $lang['strok'] = 'OK'; + $lang['strcancel'] = 'Anuluj'; + $lang['strac'] = 'WΕ‚Δ…cz autouzupeΕ‚nianie'; + $lang['strsave'] = 'Zapisz'; + $lang['strreset'] = 'WyczyΕ›Δ‡'; + $lang['strinsert'] = 'Wstaw'; + $lang['strselect'] = 'Wybierz'; + $lang['strdelete'] = 'UsuΕ„'; + $lang['strupdate'] = 'ZmieΕ„'; + $lang['strreferences'] = 'OdnoΕ›niki'; + $lang['stryes'] = 'Tak'; + $lang['strno'] = 'Nie'; + $lang['strtrue'] = 'Prawda'; + $lang['strfalse'] = 'FaΕ‚sz'; + $lang['stredit'] = 'Edycja'; + $lang['strcolumn'] = 'Kolumna'; + $lang['strcolumns'] = 'Kolumny'; + $lang['strrows'] = 'wiersz(y)'; + $lang['strrowsaff'] = 'wiersz(y) dotyczy.'; + $lang['strobjects'] = 'obiekty'; + $lang['strback'] = 'Wstecz'; + $lang['strqueryresults'] = 'Wyniki zapytania'; + $lang['strshow'] = 'PokaΕΌ'; + $lang['strempty'] = 'WyczyΕ›Δ‡'; + $lang['strlanguage'] = 'JΔ™zyk'; + $lang['strencoding'] = 'Kodowanie'; + $lang['strvalue'] = 'WartoΕ›Δ‡'; + $lang['strunique'] = 'Unikatowy'; + $lang['strprimary'] = 'GΕ‚Γ³wny'; + $lang['strexport'] = 'Eksport'; + $lang['strimport'] = 'Import'; + $lang['strallowednulls'] = 'Dozwolone znaki NULL'; + $lang['strbackslashn'] = '\N'; + $lang['strnull'] = 'Null'; + $lang['stremptystring'] = 'Pusty ciΔ…g znakΓ³w/pole'; + $lang['strsql'] = 'SQL'; + $lang['stradmin'] = 'Administruj'; + $lang['strvacuum'] = 'PrzeczyΕ›Δ‡'; + $lang['stranalyze'] = 'Analizuj'; + $lang['strclusterindex'] = 'Klastruj'; + $lang['strclustered'] = 'Klastrowany?'; + $lang['strreindex'] = 'Przeindeksuj'; + $lang['strrun'] = 'Uruchom'; + $lang['stradd'] = 'Dodaj'; + $lang['strremove'] = 'UsuΕ„'; + $lang['strevent'] = 'Zdarzenie'; + $lang['strwhere'] = 'Gdzie'; + $lang['strinstead'] = 'Wykonaj zamiast'; + $lang['strwhen'] = 'Kiedy'; + $lang['strformat'] = 'Format'; + $lang['strdata'] = 'Dane'; + $lang['strconfirm'] = 'PotwierdΕΊ'; + $lang['strexpression'] = 'WyraΕΌenie'; + $lang['strellipsis'] = '...'; + $lang['strseparator'] = ': '; + $lang['strexpand'] = 'RozwiΕ„'; + $lang['strcollapse'] = 'ZwiΕ„'; + $lang['strexplain'] = 'Explain'; + $lang['strexplainanalyze'] = 'Explain Analyze'; + $lang['strfind'] = 'ZnajdΕΊ'; + $lang['stroptions'] = 'Opcje'; + $lang['strrefresh'] = 'OdΕ›wieΕΌ'; + $lang['strdownload'] = 'Pobierz'; + $lang['strdownloadgzipped'] = 'Pobierz skompresowane gzip-em'; + $lang['strinfo'] = 'Informacje'; + $lang['stroids'] = 'OIDy'; + $lang['stradvanced'] = 'Zaawansowane'; + $lang['strvariables'] = 'Zmienne'; + $lang['strprocess'] = 'Proces'; + $lang['strprocesses'] = 'Procesy'; + $lang['strsetting'] = 'Ustawienie'; + $lang['streditsql'] = 'Edycja zapytania SQL'; + $lang['strruntime'] = 'CaΕ‚kowity czas pracy: %s ms.'; + $lang['strpaginate'] = 'WyΕ›wietl wyniki stronami'; + $lang['struploadscript'] = 'lub zaΕ‚aduj skrypt SQL:'; + $lang['strstarttime'] = 'Czas poczΔ…tku'; + $lang['strfile'] = 'Plik'; + $lang['strfileimported'] = 'Plik zostaΕ‚ zaimportowany.'; + $lang['strtrycred'] = 'UΕΌyj tych parametrΓ³w dla wszystkich serwerΓ³w'; + $lang['strexecute'] = 'Wykonaj'; + + // Database Sizes + $lang['strsize'] = 'Rozmiar'; + $lang['strbytes'] = 'bajtΓ³w'; + $lang['strkb'] = 'kB'; + $lang['strmb'] = 'MB'; + $lang['strgb'] = 'GB'; + $lang['strtb'] = 'TB'; + + // Error handling + $lang['strnoframes'] = 'Ta aplikacja najlepiej dziaΕ‚a w przeglΔ…darce obsΕ‚ugujΔ…cej ramki, ale moΕΌesz jej uΕΌyΔ‡ rΓ³wnieΕΌ bez ramek, klikajΔ…c poniΕΌszy link.'; + $lang['strnoframeslink'] = 'OtwΓ³rz bez ramek'; + $lang['strbadconfig'] = 'TwΓ³j plik config.inc.php jest przestarzaΕ‚y. Musisz go utworzyΔ‡ ponownie wykorzystujΔ…c nowy config.inc.php-dist.'; + $lang['strnotloaded'] = 'Nie wkompilowaΕ‚eΕ› do PHP obsΕ‚ugi tej bazy danych.'; + $lang['strpostgresqlversionnotsupported'] = 'NieobsΕ‚ugiwana wersja PostgreSQL. Uaktualnij do wersji %s lub nowszej.'; + $lang['strbadschema'] = 'Podano bΕ‚Δ™dny schemat.'; + $lang['strbadencoding'] = 'BΕ‚Δ™dne kodowanie bazy.'; + $lang['strsqlerror'] = 'BΕ‚Δ…d SQL:'; + $lang['strinstatement'] = 'W poleceniu:'; + $lang['strinvalidparam'] = 'BΕ‚Δ™dny parametr.'; + $lang['strnodata'] = 'Nie znaleziono danych.'; + $lang['strnoobjects'] = 'Nie znaleziono obiektΓ³w.'; + $lang['strrownotunique'] = 'Brak unikatowego identyfikatora dla tego wiersza.'; + $lang['strnouploads'] = 'Ładowanie plikΓ³w wyΕ‚Δ…czone.'; + $lang['strimporterror'] = 'BΕ‚Δ…d importu.'; + $lang['strimporterror-fileformat'] = 'BΕ‚Δ…d importu: Nie moΕΌna automatycznie okreΕ›liΔ‡ formatu pliku.'; + $lang['strimporterrorline'] = 'BΕ‚Δ…d importu w linii %s.'; + $lang['strimporterrorline-badcolumnnum'] = 'BΕ‚Δ…d importu w linii %s: Linia nie ma wΕ‚aΕ›ciwej liczby kolumn.'; + $lang['strimporterror-uploadedfile'] = 'BΕ‚Δ…d importu: plik nie moΕΌe byΔ‡ zaΕ‚adowany na serwer.'; + $lang['strcannotdumponwindows'] = 'Zrzucanie zΕ‚oΕΌonych nazw tabel i schematΓ³w pod Windows jest nie wspierane.'; + + // Tables + $lang['strtable'] = 'Tabela'; + $lang['strtables'] = 'Tabele'; + $lang['strshowalltables'] = 'PokaΕΌ wszystkie tabele'; + $lang['strnotables'] = 'Nie znaleziono tabel.'; + $lang['strnotable'] = 'Nie znaleziono tabeli.'; + $lang['strcreatetable'] = 'UtwΓ³rz tabelΔ™'; + $lang['strtablename'] = 'Nazwa tabeli'; + $lang['strtableneedsname'] = 'Musisz nazwaΔ‡ tabelΔ™.'; + $lang['strtableneedsfield'] = 'Musisz podaΔ‡ przynajmniej jedno pole.'; + $lang['strtableneedscols'] = 'Musisz podaΔ‡ prawidΕ‚owΔ… liczbΔ™ kolumn.'; + $lang['strtablecreated'] = 'Tabela zostaΕ‚a utworzona.'; + $lang['strtablecreatedbad'] = 'PrΓ³ba utworzenia tabeli siΔ™ nie powiodΕ‚a.'; + $lang['strconfdroptable'] = 'Czy na pewno chcesz usunΔ…Δ‡ tabelΔ™ "%s"?'; + $lang['strtabledropped'] = 'Tabela zostaΕ‚a usuniΔ™ta.'; + $lang['strtabledroppedbad'] = 'PrΓ³ba usuniΔ™cia tabeli siΔ™ nie powiodΕ‚a.'; + $lang['strconfemptytable'] = 'Czy na pewno chcesz wyczyΕ›ciΔ‡ tabelΔ™ "%s"?'; + $lang['strtableemptied'] = 'Tabela zostaΕ‚a wyczyszczona.'; + $lang['strtableemptiedbad'] = 'PrΓ³ba wyczyszczenia tabeli siΔ™ nie powiodΕ‚a.'; + $lang['strinsertrow'] = 'Wstaw wiersz'; + $lang['strrowinserted'] = 'Wiersz zostaΕ‚ wstawiony.'; + $lang['strrowinsertedbad'] = 'PrΓ³ba wstawienia wiersza siΔ™ nie powiodΕ‚a.'; + $lang['strrowduplicate'] = 'PrΓ³ba wstawienia zduplikowanego wiersza.'; + $lang['streditrow'] = 'Edycja wiersza'; + $lang['strrowupdated'] = 'Wiersz zostaΕ‚ zaktualizowany.'; + $lang['strrowupdatedbad'] = 'PrΓ³ba aktualizacji wiersza siΔ™ nie powiodΕ‚a.'; + $lang['strdeleterow'] = 'UsuΕ„ wiersz'; + $lang['strconfdeleterow'] = 'Czy na pewno chcesz usunΔ…Δ‡ ten wiersz?'; + $lang['strrowdeleted'] = 'Wiersz zostaΕ‚ usuniΔ™ty.'; + $lang['strrowdeletedbad'] = 'PrΓ³ba usuniΔ™cia wiersza siΔ™ nie powiodΕ‚a.'; + $lang['strinsertandrepeat'] = 'Wstaw i powtΓ³rz'; + $lang['strnumcols'] = 'IloΕ›Δ‡ kolumn'; + $lang['strcolneedsname'] = 'Musisz podaΔ‡ nazwΔ™ kolumny.'; + $lang['strselectallfields'] = 'Wybierz wszystkie pola'; + $lang['strselectneedscol'] = 'Musisz wybraΔ‡ przynajmniej jednΔ… kolumnΔ™.'; + $lang['strselectunary'] = 'Operatory bezargumentowe (IS NULL/IS NOT NULL) nie mogΔ… mieΔ‡ podanej wartoΕ›ci.'; + $lang['straltercolumn'] = 'ZmieΕ„ kolumnΔ™'; + $lang['strcolumnaltered'] = 'Kolumna zostaΕ‚a zmodyfikowana.'; + $lang['strcolumnalteredbad'] = 'PrΓ³ba modyfikacji kolumny siΔ™ nie powiodΕ‚a.'; + $lang['strconfdropcolumn'] = 'Czy na pewno chcesz usunΔ…Δ‡ kolumnΔ™ "%s" z tabeli "%s"?'; + $lang['strcolumndropped'] = 'Kolumna zostaΕ‚a usuniΔ™ta.'; + $lang['strcolumndroppedbad'] = 'PrΓ³ba usuniΔ™cia kolumny siΔ™ nie powiodΕ‚a.'; + $lang['straddcolumn'] = 'Dodaj kolumnΔ™'; + $lang['strcolumnadded'] = 'Kolumna zostaΕ‚a dodana.'; + $lang['strcolumnaddedbad'] = 'PrΓ³ba dodania kolumny siΔ™ nie powiodΕ‚a.'; + $lang['strcascade'] = 'CASCADE'; + $lang['strtablealtered'] = 'Tabela zostaΕ‚a zmodyfikowana.'; + $lang['strtablealteredbad'] = 'PrΓ³ba modyfikacji tabeli siΔ™ nie powiodΕ‚a.'; + $lang['strdataonly'] = 'Tylko dane'; + $lang['strstructureonly'] = 'Tylko struktura'; + $lang['strstructureanddata'] = 'Struktura i dane'; + $lang['strtabbed'] = 'Z tabulacjami'; + $lang['strauto'] = 'Automatyczny'; + $lang['strconfvacuumtable'] = 'Czy na pewno chcesz wykonaΔ‡ vacuum "%s"?'; + $lang['strestimatedrowcount'] = 'PrzybliΕΌona iloΕ›Δ‡ wierszy'; + + // Columns + $lang['strcolprop'] = 'WΕ‚aΕ›ciwoΕ›ci kolumny'; + + // Users + $lang['struser'] = 'UΕΌytkownik'; + $lang['strusers'] = 'UΕΌytkownicy'; + $lang['strusername'] = 'Nazwa uΕΌytkownika'; + $lang['strpassword'] = 'HasΕ‚o'; + $lang['strsuper'] = 'Administrator?'; + $lang['strcreatedb'] = 'Tworzenie BD?'; + $lang['strexpires'] = 'Wygasa'; + $lang['strsessiondefaults'] = 'WartoΕ›ci domyΕ›lne sesji'; + $lang['strnousers'] = 'Nie znaleziono uΕΌytkownikΓ³w.'; + $lang['struserupdated'] = 'Parametry uΕΌytkownika zostaΕ‚y zaktualizowane.'; + $lang['struserupdatedbad'] = 'PrΓ³ba aktualizacji parametrΓ³w uΕΌytkownika siΔ™ nie powiodΕ‚a.'; + $lang['strshowallusers'] = 'PokaΕΌ wszystkich uΕΌytkownikΓ³w'; + $lang['strcreateuser'] = 'UtwΓ³rz uΕΌytkownika'; + $lang['struserneedsname'] = 'Musisz podaΔ‡ nazwΔ™ uΕΌytkownika.'; + $lang['strusercreated'] = 'UΕΌytkownik zostaΕ‚ utworzony.'; + $lang['strusercreatedbad'] = 'PrΓ³ba utworzenia uΕΌytkownika siΔ™ nie powiodΕ‚a.'; + $lang['strconfdropuser'] = 'Czy na pewno chcesz usunΔ…Δ‡ uΕΌytkownika "%s"?'; + $lang['struserdropped'] = 'UΕΌytkownik zostaΕ‚ usuniΔ™ty.'; + $lang['struserdroppedbad'] = 'PrΓ³ba usuniΔ™cia uΕΌytkownika siΔ™ nie powiodΕ‚a.'; + $lang['straccount'] = 'Konto'; + $lang['strchangepassword'] = 'ZmieΕ„ hasΕ‚o'; + $lang['strpasswordchanged'] = 'HasΕ‚o zostaΕ‚o zmienione.'; + $lang['strpasswordchangedbad'] = 'PrΓ³ba zmiany hasΕ‚a siΔ™ nie powiodΕ‚a.'; + $lang['strpasswordshort'] = 'HasΕ‚o jest za krΓ³tkie.'; + $lang['strpasswordconfirm'] = 'HasΕ‚o i potwierdzenie muszΔ… byΔ‡ takie same.'; + + // Groups + $lang['strgroup'] = 'Grupa'; + $lang['strgroups'] = 'Grupy'; + $lang['strnogroup'] = 'Nie znaleziono grupy.'; + $lang['strnogroups'] = 'Nie znaleziono grup.'; + $lang['strcreategroup'] = 'UtwΓ³rz grupΔ™'; + $lang['strshowallgroups'] = 'PokaΕΌ wszystkie grupy'; + $lang['strgroupneedsname'] = 'Musisz nazwaΔ‡ grupΔ™.'; + $lang['strgroupcreated'] = 'Grupa zostaΕ‚a utworzona.'; + $lang['strgroupcreatedbad'] = 'PrΓ³ba utworzenia grupy siΔ™ nie powiodΕ‚a.'; + $lang['strconfdropgroup'] = 'Czy na pewno chcesz utworzyΔ‡ grupΔ™ "%s"?'; + $lang['strgroupdropped'] = 'Grupa zostaΕ‚a usuniΔ™ta.'; + $lang['strgroupdroppedbad'] = 'PrΓ³ba usuniΔ™cia grupy siΔ™ nie powiodΕ‚a.'; + $lang['strmembers'] = 'CzΕ‚onkowie'; + $lang['straddmember'] = 'Dodaj czΕ‚onka grupy'; + $lang['strmemberadded'] = 'CzΕ‚onek grupy zostaΕ‚ dodany.'; + $lang['strmemberaddedbad'] = 'PrΓ³ba dodania czΕ‚onka grupy siΔ™ nie powiodΕ‚a.'; + $lang['strdropmember'] = 'UsuΕ„ czΕ‚onka grupy'; + $lang['strconfdropmember'] = 'Czy na pewno chcesz usunΔ…Δ‡ "%s" z grupy "%s"?'; + $lang['strmemberdropped'] = 'CzΕ‚onek grupy zostaΕ‚ usuniΔ™ty.'; + $lang['strmemberdroppedbad'] = 'PrΓ³ba usuniΔ™cia czΕ‚onka grupy siΔ™ nie powiodΕ‚a.'; + + // Roles + $lang['strrole'] = 'Rola'; + $lang['strroles'] = 'Role'; + $lang['strinheritsprivs'] = 'DziedziczyΔ‡ uprawnienia?'; + $lang['strcreaterole'] = 'UtwΓ³rz rolΔ™'; + $lang['strcatupdate'] = 'Modyfikacja katalogΓ³w?'; + $lang['strcanlogin'] = 'MoΕΌe siΔ™ logowaΔ‡?'; + $lang['strmaxconnections'] = 'Maks. iloΕ›Δ‡ poΕ‚Δ…czeΕ„'; + $lang['strconfdroprole'] = 'Czy na pewno chcesz usunΔ…Δ‡ rolΔ™ "%s"?'; + $lang['strroledropped'] = 'Rola zostaΕ‚a usuniΔ™ta.'; + $lang['strroledroppedbad'] = 'PrΓ³ba usuniΔ™cia roli siΔ™ nie powiodΕ‚a.'; + + // Privileges + $lang['strprivilege'] = 'Uprawnienie'; + $lang['strprivileges'] = 'Uprawnienia'; + $lang['strnoprivileges'] = 'Ten obiekt nie ma uprawnieΕ„.'; + $lang['strgrant'] = 'Nadaj'; + $lang['strrevoke'] = 'Zabierz'; + $lang['strgranted'] = 'Uprawnienia zostaΕ‚y nadane.'; + $lang['strgrantfailed'] = 'PrΓ³ba nadania uprawnieΕ„ siΔ™ nie powiodΕ‚a.'; + $lang['strgrantbad'] = 'Musisz podaΔ‡ uΕΌytkownika lub grupΔ™, a takΕΌe uprawnienia, jakie chcesz nadaΔ‡.'; + $lang['strgrantor'] = 'Kto nadaΕ‚'; + $lang['strasterisk'] = '*'; + + // Databases + $lang['strdatabase'] = 'Baza danych'; + $lang['strdatabases'] = 'Bazy danych'; + $lang['strshowalldatabases'] = 'PokaΕΌ wszystkie bazy danych'; + $lang['strnodatabase'] = 'Nie znaleziono bazy danych.'; + $lang['strnodatabases'] = 'Nie znaleziono ΕΌadnej bazy danych.'; + $lang['strcreatedatabase'] = 'UtwΓ³rz bazΔ™ danych'; + $lang['strdatabasename'] = 'Nazwa bazy danych'; + $lang['strdatabaseneedsname'] = 'Musisz nazwaΔ‡ bazΔ™ danych.'; + $lang['strdatabasecreated'] = 'Baza danych zostaΕ‚a utworzona.'; + $lang['strdatabasecreatedbad'] = 'PrΓ³ba utworzenia bazy danych siΔ™ nie powiodΕ‚a.'; + $lang['strconfdropdatabase'] = 'Czy na pewno chcesz usunΔ…Δ‡ bazΔ™ danych "%s"?'; + $lang['strdatabasedropped'] = 'Baza danych zostaΕ‚a usuniΔ™ta.'; + $lang['strdatabasedroppedbad'] = 'PrΓ³ba usuniΔ™cia bazy danych siΔ™ nie powiodΕ‚a.'; + $lang['strentersql'] = 'Podaj polecenie SQL do wykonania:'; + $lang['strsqlexecuted'] = 'Polecenie SQL zostaΕ‚o wykonane.'; + $lang['strvacuumgood'] = 'Czyszczenie bazy zostaΕ‚o zakoΕ„czone.'; + $lang['strvacuumbad'] = 'PrΓ³ba czyszczenia bazy siΔ™ nie powiodΕ‚a.'; + $lang['stranalyzegood'] = 'Analiza bazy zostaΕ‚a zakoΕ„czona.'; + $lang['stranalyzebad'] = 'PrΓ³ba analizy siΔ™ nie powiodΕ‚a.'; + $lang['strreindexgood'] = 'Reindeksacja zostaΕ‚a zakoΕ„czona.'; + $lang['strreindexbad'] = 'PrΓ³ba reindeksacji siΔ™ nie powiodΕ‚a.'; + $lang['strfull'] = 'PeΕ‚ne'; + $lang['strfreeze'] = 'ZamroΕΌenie'; + $lang['strforce'] = 'Wymuszenie'; + $lang['strsignalsent'] = 'SygnaΕ‚ zostaΕ‚ wysΕ‚any.'; + $lang['strsignalsentbad'] = 'PrΓ³ba wysΕ‚ania sygnaΕ‚u siΔ™ nie powiodΕ‚a.'; + $lang['strallobjects'] = 'Wszystkie obiekty'; + $lang['strdatabasealtered'] = 'Baza danych zostaΕ‚a zmieniona.'; + $lang['strdatabasealteredbad'] = 'PrΓ³ba modyfikacji bazy danych siΔ™ nie powiodΕ‚a.'; + + // Views + $lang['strview'] = 'Widok'; + $lang['strviews'] = 'Widoki'; + $lang['strshowallviews'] = 'PokaΕΌ wszystkie widoki'; + $lang['strnoview'] = 'Nie znaleziono widoku.'; + $lang['strnoviews'] = 'Nie znaleziono widokΓ³w.'; + $lang['strcreateview'] = 'UtwΓ³rz widok'; + $lang['strviewname'] = 'Nazwa widoku'; + $lang['strviewneedsname'] = 'Musisz nazwaΔ‡ widok.'; + $lang['strviewneedsdef'] = 'Musisz zdefiniowaΔ‡ widok.'; + $lang['strviewneedsfields'] = 'Musisz podaΔ‡ kolumny, ktΓ³re majΔ… byΔ‡ widoczne w widoku.'; + $lang['strviewcreated'] = 'Widok zostaΕ‚ utworzony.'; + $lang['strviewcreatedbad'] = 'PrΓ³ba utworzenia widoku siΔ™ nie powiodΕ‚a.'; + $lang['strconfdropview'] = 'Czy na pewno chcesz usunΔ…Δ‡ widok "%s"?'; + $lang['strviewdropped'] = 'Widok zostaΕ‚ usuniΔ™ty.'; + $lang['strviewdroppedbad'] = 'PrΓ³ba usuniΔ™cia widoku siΔ™ nie powiodΕ‚a.'; + $lang['strviewupdated'] = 'Widok zostaΕ‚ zaktualizowany.'; + $lang['strviewupdatedbad'] = 'PrΓ³ba aktualizacji widoku siΔ™ nie powiodΕ‚a.'; + $lang['strviewlink'] = 'Klucze Ε‚Δ…czΔ…ce'; + $lang['strviewconditions'] = 'Dodatkowe warunki'; + $lang['strcreateviewwiz'] = 'UtwΓ³rz widok przy uΕΌyciu kreatora widokΓ³w'; + + // Sequences + $lang['strsequence'] = 'Sekwencja'; + $lang['strsequences'] = 'Sekwencje'; + $lang['strshowallsequences'] = 'PokaΕΌ wszystkie sekwencje'; + $lang['strnosequence'] = 'Nie znaleziono sekwencji.'; + $lang['strnosequences'] = 'Nie znaleziono sekwencji.'; + $lang['strcreatesequence'] = 'UtwΓ³rz sekwencjΔ™'; + $lang['strlastvalue'] = 'Ostatnia wartoΕ›Δ‡'; + $lang['strincrementby'] = 'ZwiΔ™kszana o'; + $lang['strstartvalue'] = 'WartoΕ›Δ‡ poczΔ…tkowa'; + $lang['strmaxvalue'] = 'WartoΕ›Δ‡ maks.'; + $lang['strminvalue'] = 'WartoΕ›Δ‡ min.'; + $lang['strcachevalue'] = 'WartoΕ›Δ‡ keszowana'; + $lang['strlogcount'] = 'log_cnt'; + $lang['striscycled'] = 'czy cykliczna'; + $lang['strsequenceneedsname'] = 'Musisz nazwaΔ‡ sekwencjΔ™.'; + $lang['strsequencecreated'] = 'Sekwencja zostaΕ‚a utworzona.'; + $lang['strsequencecreatedbad'] = 'PrΓ³ba utworzenia sekwencji siΔ™ nie powiodΕ‚a.'; + $lang['strconfdropsequence'] = 'Czy na pewno chcesz usunΔ…Δ‡ sekwencjΔ™ "%s"?'; + $lang['strsequencedropped'] = 'Sekwencja zostaΕ‚a usuniΔ™ta.'; + $lang['strsequencedroppedbad'] = 'PrΓ³ba usuniΔ™cia sekwencji siΔ™ nie powiodΕ‚a.'; + $lang['strsequencereset'] = 'Sekwencja zostaΕ‚a wyzerowana.'; + $lang['strsequenceresetbad'] = 'PrΓ³ba zerowania sekwencji siΔ™ nie powiodΕ‚a.'; + $lang['straltersequence'] = 'ZmieΕ„ sekwencjΔ™'; + $lang['strsequencealtered'] = 'Sekwencja zostaΕ‚a zmieniona.'; + $lang['strsequencealteredbad'] = 'PrΓ³ba modyfikacji sekwencji siΔ™ nie powiodΕ‚a.'; + $lang['strsetval'] = 'Ustaw wartoΕ›Δ‡'; + $lang['strsequencesetval'] = 'WartoΕ›Δ‡ sekwencji zostaΕ‚a ustawiona.'; + $lang['strsequencesetvalbad'] = 'PrΓ³ba ustawienia wartoΕ›ci sekwencji siΔ™ nie powiodΕ‚a.'; + $lang['strnextval'] = 'ZwiΔ™ksz wartoΕ›Δ‡ sekwencjΔ™'; + $lang['strsequencenextval'] = 'WartoΕ›Δ‡ sekwencji zostaΕ‚a zwiΔ™kszona.'; + $lang['strsequencenextvalbad'] = 'PrΓ³ba zwiΔ™kszenia wartoΕ›ci sekwencji siΔ™ nie powiodΕ‚a.'; + + // Indeksy + $lang['strindex'] = 'Indeks'; + $lang['strindexes'] = 'Indeksy'; + $lang['strindexname'] = 'Nazwa indeksu'; + $lang['strshowallindexes'] = 'PokaΕΌ wszystkie indeksy'; + $lang['strnoindex'] = 'Nie znaleziono indeksu.'; + $lang['strnoindexes'] = 'Nie znaleziono indeksΓ³w.'; + $lang['strcreateindex'] = 'UtwΓ³rz indeks'; + $lang['strtabname'] = 'Tab Name'; + $lang['strcolumnname'] = 'Nazwa kolumny'; + $lang['strindexneedsname'] = 'Musisz nazwaΔ‡ indeks.'; + $lang['strindexneedscols'] = 'W skΕ‚ad indeksu musi wchodziΔ‡ przynajmniej jedna kolumna.'; + $lang['strindexcreated'] = 'Indeks zostaΕ‚ utworzony.'; + $lang['strindexcreatedbad'] = 'PrΓ³ba utworzenia indeksu siΔ™ nie powiodΕ‚a.'; + $lang['strconfdropindex'] = 'Czy na pewno chcesz usunΔ…Δ‡ indeks "%s"?'; + $lang['strindexdropped'] = 'Indeks zostaΕ‚ usuniΔ™ty.'; + $lang['strindexdroppedbad'] = 'PrΓ³ba usuniΔ™cia indeksu siΔ™ nie powiodΕ‚a.'; + $lang['strkeyname'] = 'Nazwa klucza'; + $lang['struniquekey'] = 'Klucz Unikatowy'; + $lang['strprimarykey'] = 'Klucz GΕ‚Γ³wny'; + $lang['strindextype'] = 'Typ indeksu'; + $lang['strtablecolumnlist'] = 'Kolumny w tabeli'; + $lang['strindexcolumnlist'] = 'Kolumny w indeksie'; + $lang['strconfcluster'] = 'Czy na pewno chcesz zklastrowaΔ‡ "%s"?'; + $lang['strclusteredgood'] = 'Klastrowanie zostaΕ‚o zakoΕ„czone.'; + $lang['strclusteredbad'] = 'PrΓ³ba klastrowania siΔ™ nie powiodΕ‚a.'; + $lang['strcluster'] = 'Klaster'; + + // Rules + $lang['strrules'] = 'ReguΕ‚y'; + $lang['strrule'] = 'ReguΕ‚a'; + $lang['strshowallrules'] = 'PokaΕΌ wszystkie reguΕ‚y'; + $lang['strnorule'] = 'Nie znaleziono reguΕ‚y.'; + $lang['strnorules'] = 'Nie znaleziono reguΕ‚.'; + $lang['strcreaterule'] = 'UtwΓ³rz reguΕ‚Δ™'; + $lang['strrulename'] = 'Nazwa reguΕ‚y'; + $lang['strruleneedsname'] = 'Musisz nazwaΔ‡ reguΕ‚Δ™.'; + $lang['strrulecreated'] = 'ReguΕ‚a zostaΕ‚a utworzona.'; + $lang['strrulecreatedbad'] = 'PrΓ³ba utworzenia reguΕ‚y siΔ™ nie powiodΕ‚a.'; + $lang['strconfdroprule'] = 'Czy na pewno chcesz usunΔ…Δ‡ reguΕ‚Δ™ "%s" na "%s"?'; + $lang['strruledropped'] = 'ReguΕ‚a zostaΕ‚a usuniΔ™ta.'; + $lang['strruledroppedbad'] = 'PrΓ³ba usuniΔ™cia reguΕ‚y siΔ™ nie powiodΕ‚a.'; + + // Constraints + $lang['strconstraint'] = 'WiΔ™z integralnoΕ›ci'; + $lang['strconstraints'] = 'WiΔ™zy integralnoΕ›ci'; + $lang['strshowallconstraints'] = 'PokaΕΌ wszystkie wiΔ™zy integralnoΕ›ci'; + $lang['strnoconstraints'] = 'Nie znaleziono wiΔ™zΓ³w integralnoΕ›ci.'; + $lang['strcreateconstraint'] = 'UtwΓ³rz wiΔ™zy integralnoΕ›ci'; + $lang['strconstraintcreated'] = 'WiΔ™zy integralnoΕ›ci zostaΕ‚y utworzone.'; + $lang['strconstraintcreatedbad'] = 'PrΓ³ba utworzenia wiΔ™zΓ³w integralnoΕ›ci siΔ™ nie powiodΕ‚a.'; + $lang['strconfdropconstraint'] = 'Czy na pewno chcesz usunΔ…Δ‡ wiΔ™zy integralnoΕ›ci "%s" na "%s"?'; + $lang['strconstraintdropped'] = 'WiΔ™zy integralnoΕ›ci zostaΕ‚y usuniΔ™te.'; + $lang['strconstraintdroppedbad'] = 'PrΓ³ba usuniΔ™cia wiΔ™zΓ³w integralnoΕ›ci siΔ™ nie powiodΕ‚a.'; + $lang['straddcheck'] = 'Dodaj warunek'; + $lang['strcheckneedsdefinition'] = 'Musisz zdefiniowaΔ‡ warunek.'; + $lang['strcheckadded'] = 'Warunek zostaΕ‚ dodany.'; + $lang['strcheckaddedbad'] = 'PrΓ³ba dodania warunku siΔ™ nie powiodΕ‚a.'; + $lang['straddpk'] = 'Dodaj klucz gΕ‚Γ³wny'; + $lang['strpkneedscols'] = 'Klucz gΕ‚Γ³wny musi zawieraΔ‡ przynajmniej jednΔ… kolumnΔ™.'; + $lang['strpkadded'] = 'Klucz gΕ‚Γ³wny zostaΕ‚ dodany.'; + $lang['strpkaddedbad'] = 'PrΓ³ba dodania klucza gΕ‚Γ³wnego siΔ™ nie powiodΕ‚a.'; + $lang['stradduniq'] = 'Dodaj klucz unikatowy'; + $lang['struniqneedscols'] = 'Klucz unikatowy musi zawieraΔ‡ przynajmniej jednΔ… kolumnΔ™.'; + $lang['struniqadded'] = 'Klucz unikatowy zostaΕ‚ dodany.'; + $lang['struniqaddedbad'] = 'PrΓ³ba dodania klucza unikatowego siΔ™ nie powiodΕ‚a.'; + $lang['straddfk'] = 'Dodaj klucz obcy'; + $lang['strfkneedscols'] = 'Obcy klucz musi zawieraΔ‡ przynajmniej jednΔ… kolumnΔ™.'; + $lang['strfkneedstarget'] = 'Klucz obcy wymaga podania nazwy tabeli docelowej.'; + $lang['strfkadded'] = 'Klucz obcy zostaΕ‚ dodany.'; + $lang['strfkaddedbad'] = 'PrΓ³ba dodania klucza obcego siΔ™ nie powiodΕ‚a.'; + $lang['strfktarget'] = 'Tabela docelowa'; + $lang['strfkcolumnlist'] = 'Kolumna w kluczu'; + $lang['strondelete'] = 'ON DELETE'; + $lang['stronupdate'] = 'ON UPDATE'; + + // Functions + $lang['strfunction'] = 'Funkcja'; + $lang['strfunctions'] = 'Funkcje'; + $lang['strshowallfunctions'] = 'PokaΕΌ wszystkie funkcje'; + $lang['strnofunction'] = 'Nie znaleziono funkcji.'; + $lang['strnofunctions'] = 'Nie znaleziono funkcji.'; + $lang['strcreateplfunction'] = 'UtwΓ³rz funkcjΔ™ SQL/PL'; + $lang['strcreateinternalfunction'] = 'UtwΓ³rz funkcjΔ™ wewnΔ™trznΔ…'; + $lang['strcreatecfunction'] = 'UtwΓ³rz funkcjΔ™ C'; + $lang['strfunctionname'] = 'Nazwa funkcji'; + $lang['strreturns'] = 'Zwraca'; + $lang['strproglanguage'] = 'JΔ™zyk'; + $lang['strfunctionneedsname'] = 'Musisz nazwaΔ‡ funkcjΔ™.'; + $lang['strfunctionneedsdef'] = 'Musisz zdefiniowaΔ‡ funkcjΔ™.'; + $lang['strfunctioncreated'] = 'Funkcja zostaΕ‚a utworzona.'; + $lang['strfunctioncreatedbad'] = 'PrΓ³ba utworzenia funkcji siΔ™ nie powiodΕ‚a.'; + $lang['strconfdropfunction'] = 'Czy na pewno chcesz usunΔ…Δ‡ funkcjΔ™ "%s"?'; + $lang['strfunctiondropped'] = 'Funkcja zostaΕ‚a usuniΔ™ta.'; + $lang['strfunctiondroppedbad'] = 'PrΓ³ba usuniΔ™cia funkcji siΔ™ nie powiodΕ‚a.'; + $lang['strfunctionupdated'] = 'Funkcja zostaΕ‚a zaktualizowana.'; + $lang['strfunctionupdatedbad'] = 'PrΓ³ba aktualizacji funkcji siΔ™ nie powiodΕ‚a.'; + $lang['strobjectfile'] = 'Plik obiektΓ³w'; + $lang['strlinksymbol'] = 'Łącz symbol'; + $lang['strarguments'] = 'Argumenty'; + $lang['strargname'] = 'Nazwa'; + $lang['strargmode'] = 'Tryb'; + $lang['strargtype'] = 'Typ'; + $lang['strargadd'] = 'Dodaj nowy argument'; + $lang['strargremove'] = 'UsuΕ„ ten argument'; + $lang['strargnoargs'] = 'Ta funkcja nie bΔ™dzie wymagaΕ‚a ΕΌadnych argumentΓ³w.'; + $lang['strargenableargs'] = 'WΕ‚Δ…cz podawanie argumentΓ³w tej funkcji.'; + $lang['strargnorowabove'] = 'Nad tym wierszem musi byΔ‡ wiersz.'; + $lang['strargnorowbelow'] = 'Pod tym wierszem musi byΔ‡ inny wiersz.'; + $lang['strargraise'] = 'PrzesuΕ„ w gΓ³rΔ™.'; + $lang['strarglower'] = 'PrzesuΕ„ w dΓ³Ε‚.'; + $lang['strargremoveconfirm'] = 'Czy na pewno chcesz usunΔ…Δ‡ ten argument? Tej operacji nie bΔ™dzie moΕΌna cofnΔ…Δ‡.'; + + + // Triggers + $lang['strtrigger'] = 'Procedura wyzwalana'; + $lang['strtriggers'] = 'Procedury wyzwalane'; + $lang['strshowalltriggers'] = 'PokaΕΌ wszystkie procedury wyzwalane'; + $lang['strnotrigger'] = 'Nie znaleziono procedury wyzwalanej.'; + $lang['strnotriggers'] = 'Nie znaleziono procedur wyzwalanych.'; + $lang['strcreatetrigger'] = 'UtwΓ³rz procedurΔ™ wyzwalanΔ…'; + $lang['strtriggerneedsname'] = 'Musisz nazwaΔ‡ procedurΔ™ wyzwalanΔ….'; + $lang['strtriggerneedsfunc'] = 'Musisz podaΔ‡ funkcjΔ™ procedury wyzwalanej.'; + $lang['strtriggercreated'] = 'Procedura wyzwalana zostaΕ‚a utworzona.'; + $lang['strtriggercreatedbad'] = 'PrΓ³ba utworzenia procedury wyzwalanej siΔ™ nie powiodΕ‚a.'; + $lang['strconfdroptrigger'] = 'Czy na pewno chcesz usunΔ…Δ‡ procedurΔ™ "%s" wyzwalanΔ… przez "%s"?'; + $lang['strconfenabletrigger'] = 'Czy na pewno chcesz wΕ‚Δ…czyΔ‡ procedurΔ™ wyzwalanΔ… "%s" on "%s"?'; + $lang['strconfdisabletrigger'] = 'Czy na pewno chcesz wyΕ‚Δ…czyΔ‡ procedurΔ™ wyzwalanΔ… "%s" on "%s"?'; + $lang['strtriggerdropped'] = 'Procedura wyzwalana zostaΕ‚a usuniΔ™ta.'; + $lang['strtriggerdroppedbad'] = 'PrΓ³ba usuniΔ™cia procedury wyzwalanej siΔ™ nie powiodΕ‚a.'; + $lang['strtriggerenabled'] = 'Procedura wyzwalana zostaΕ‚a wΕ‚Δ…czona.'; + $lang['strtriggerenabledbad'] = 'PrΓ³ba wΕ‚Δ…czenia procedury wyzwalanej siΔ™ nie powiodΕ‚a.'; + $lang['strtriggerdisabled'] = 'Procedura wyzwalana zostaΕ‚a wyΕ‚Δ…czona.'; + $lang['strtriggerdisabledbad'] = 'PrΓ³ba wyΕ‚Δ…czenia procedury wyzwalanej siΔ™ nie powiodΕ‚a.'; + $lang['strtriggeraltered'] = 'Procedura wyzwalana zostaΕ‚a zmieniona.'; + $lang['strtriggeralteredbad'] = 'PrΓ³ba modyfikacji procedury wyzwalanej siΔ™ nie powiodΕ‚a.'; + $lang['strforeach'] = 'Dla wszystkich'; + + // Types + $lang['strtype'] = 'Typ'; + $lang['strtypes'] = 'Typy'; + $lang['strshowalltypes'] = 'PokaΕΌ wszystkie typy'; + $lang['strnotype'] = 'Nie znaleziono typu.'; + $lang['strnotypes'] = 'Nie znaleziono typΓ³w.'; + $lang['strcreatetype'] = 'UtwΓ³rz typ'; + $lang['strcreatecomptype'] = 'UtwΓ³rz typ zΕ‚oΕΌony'; + $lang['strtypeneedsfield'] = 'Musisz podaΔ‡ przynajmniej jedno pole.'; + $lang['strtypeneedscols'] = 'Musisz podaΔ‡ poprawnΔ… iloΕ›Δ‡ pΓ³l.'; + $lang['strtypename'] = 'Nazwa typu'; + $lang['strinputfn'] = 'Funkcja wejΕ›ciowa'; + $lang['stroutputfn'] = 'Funkcja wyjΕ›ciowa'; + $lang['strpassbyval'] = 'Przekazywany przez wartoΕ›Δ‡?'; + $lang['stralignment'] = 'WyrΓ³wnanie bajtowe'; + $lang['strelement'] = 'Typ elementΓ³w'; + $lang['strdelimiter'] = 'Znak oddzielajΔ…cy elementy tabeli'; + $lang['strstorage'] = 'Technika przechowywania'; + $lang['strfield'] = 'Pole'; + $lang['strnumfields'] = 'IloΕ›Δ‡ pΓ³l'; + $lang['strtypeneedsname'] = 'Musisz nazwaΔ‡ typ.'; + $lang['strtypeneedslen'] = 'Musisz podaΔ‡ dΕ‚ugoΕ›Δ‡ typu.'; + $lang['strtypecreated'] = 'Typ zostaΕ‚ utworzony.'; + $lang['strtypecreatedbad'] = 'PrΓ³ba utworzenia typu siΔ™ nie powiodΕ‚a.'; + $lang['strconfdroptype'] = 'Czy na pewno chcesz usunΔ…Δ‡ typ "%s"?'; + $lang['strtypedropped'] = 'Typ zostaΕ‚ usuniΔ™ty.'; + $lang['strtypedroppedbad'] = 'PrΓ³ba usuniΔ™cia typu siΔ™ nie powiodΕ‚a.'; + $lang['strflavor'] = 'Flavor'; + $lang['strbasetype'] = 'podstawowy'; + $lang['strcompositetype'] = 'zΕ‚oΕΌony'; + $lang['strpseudotype'] = 'pseudo'; + + // Schemas + $lang['strschema'] = 'Schemat'; + $lang['strschemas'] = 'Schematy'; + $lang['strshowallschemas'] = 'PokaΕΌ wszystkie schematy'; + $lang['strnoschema'] = 'Nie znaleziono schematu.'; + $lang['strnoschemas'] = 'Nie znaleziono schematΓ³w.'; + $lang['strcreateschema'] = 'UtwΓ³rz schemat'; + $lang['strschemaname'] = 'Nazwa schematu'; + $lang['strschemaneedsname'] = 'Musisz nadaΔ‡ schematowi nazwΔ™.'; + $lang['strschemacreated'] = 'Schemat zostaΕ‚ utworzony.'; + $lang['strschemacreatedbad'] = 'PrΓ³ba utworzenia schematu siΔ™ nie powiodΕ‚a.'; + $lang['strconfdropschema'] = 'Czy na pewno chcesz usunΔ…Δ‡ schemat "%s"?'; + $lang['strschemadropped'] = 'Schemat zostaΕ‚ usuniΔ™ty.'; + $lang['strschemadroppedbad'] = 'PrΓ³ba usuniΔ™cia schematu siΔ™ nie powiodΕ‚a.'; + $lang['strschemaaltered'] = 'Schemat zostaΕ‚ zmieniony.'; + $lang['strschemaalteredbad'] = 'PrΓ³ba zmiany schematu siΔ™ nie powiodΕ‚a.'; + $lang['strsearchpath'] = 'ŚcieΕΌka wyszukiwania schematu'; + + // Reports + + // Domeny + $lang['strdomain'] = 'Domena'; + $lang['strdomains'] = 'Domeny'; + $lang['strshowalldomains'] = 'PokaΕΌ wszystkie domeny'; + $lang['strnodomains'] = 'Nie znaleziono domen.'; + $lang['strcreatedomain'] = 'UtwΓ³rz domenΔ™'; + $lang['strdomaindropped'] = 'Domena zostaΕ‚a usuniΔ™ta.'; + $lang['strdomaindroppedbad'] = 'PrΓ³ba usuniΔ™cia domeny siΔ™ nie powiodΕ‚a.'; + $lang['strconfdropdomain'] = 'Czy na pewno chcesz usunΔ…Δ‡ domenΔ™ "%s"?'; + $lang['strdomainneedsname'] = 'Musisz nazwaΔ‡ domenΔ™.'; + $lang['strdomaincreated'] = 'Domena zostaΕ‚a utworzona.'; + $lang['strdomaincreatedbad'] = 'PrΓ³ba utworzenia domeny siΔ™ nie powiodΕ‚a.'; + $lang['strdomainaltered'] = 'Domena zostaΕ‚a zmieniona.'; + $lang['strdomainalteredbad'] = 'PrΓ³ba modyfikacji domeny siΔ™ nie powiodΕ‚a.'; + + // Operators + $lang['stroperator'] = 'Operator'; + $lang['stroperators'] = 'Operatory'; + $lang['strshowalloperators'] = 'PokaΕΌ wszystkie operatory'; + $lang['strnooperator'] = 'Nie znaleziono operatora.'; + $lang['strnooperators'] = 'Nie znaleziono operatorΓ³w.'; + $lang['strcreateoperator'] = 'UtwΓ³rz operator'; + $lang['strleftarg'] = 'Typ lewego argumentu'; + $lang['strrightarg'] = 'Typ prawego argumentu'; + $lang['strcommutator'] = 'Komutator'; + $lang['strnegator'] = 'Negacja'; + $lang['strrestrict'] = 'ZastrzeΕΌenie'; + $lang['strjoin'] = 'PoΕ‚Δ…czenie'; + $lang['strhashes'] = 'Hashes'; + $lang['strmerges'] = 'Merges'; + $lang['strleftsort'] = 'Lewe sortowanie'; + $lang['strrightsort'] = 'Prawe sortowanie'; + $lang['strlessthan'] = 'Mniej niΕΌ'; + $lang['strgreaterthan'] = 'WiΔ™cej niΕΌ'; + $lang['stroperatorneedsname'] = 'Musisz nazwaΔ‡ operator.'; + $lang['stroperatorcreated'] = 'Operator zostaΕ‚ utworzony.'; + $lang['stroperatorcreatedbad'] = 'PrΓ³ba utworzenia operatora siΔ™ nie powiodΕ‚a.'; + $lang['strconfdropoperator'] = 'Czy na pewno chcesz usunΔ…Δ‡ operator "%s"?'; + $lang['stroperatordropped'] = 'Operator zostaΕ‚ usuniΔ™ty.'; + $lang['stroperatordroppedbad'] = 'PrΓ³ba usuniΔ™cia operatora siΔ™ nie powiodΕ‚a.'; + + // Casts + $lang['strcasts'] = 'Rzutowania'; + $lang['strnocasts'] = 'Nie znaleziono rzutowaΕ„.'; + $lang['strsourcetype'] = 'Typ ΕΊrΓ³dΕ‚owy'; + $lang['strtargettype'] = 'Typ docelowy'; + $lang['strimplicit'] = 'Domniemany'; + $lang['strinassignment'] = 'W przydziale'; + $lang['strbinarycompat'] = '(Kompatybilny binarnie)'; + + // Conversions + $lang['strconversions'] = 'Konwersje'; + $lang['strnoconversions'] = 'Nie znaleziono konwersji.'; + $lang['strsourceencoding'] = 'Kodowanie ΕΊrΓ³dΕ‚owe'; + $lang['strtargetencoding'] = 'Kodowanie docelowe'; + + // Languages + $lang['strlanguages'] = 'JΔ™zyki'; + $lang['strnolanguages'] = 'Nie znaleziono jΔ™zykΓ³w.'; + $lang['strtrusted'] = 'Zaufany'; + + // Info + $lang['strnoinfo'] = 'Brak informacji na ten temat'; + $lang['strreferringtables'] = 'Tabele zaleΕΌne'; + $lang['strparenttables'] = 'Tabela nadrzΔ™dne'; + $lang['strchildtables'] = 'Tabela podrzΔ™dna'; + + // Aggregates + $lang['straggregate'] = 'Funkcja agregujΔ…ca'; + $lang['straggregates'] = 'Funkcje agregujΔ…ce'; + $lang['strnoaggregates'] = 'Nie znaleziono funkcji agregujΔ…cych.'; + $lang['stralltypes'] = '(Wszystkie typy)'; +$lang['straggrtransfn'] = 'Transition function'; + $lang['strcreateaggregate'] = 'UtwΓ³rz funkcjΔ™ agregujΔ…cΔ…'; + $lang['straggrbasetype'] = 'Typ danych wejΕ›ciowych'; +$lang['straggrsfunc'] = 'State transition function'; +$lang['straggrffunc'] = 'Final function'; + $lang['straggrinitcond'] = 'Warunek poczΔ…tkowy'; + $lang['straggrsortop'] = 'Operator sortowania'; + $lang['strconfdropaggregate'] = 'Czy na pewno chcesz usunΔ…Δ‡ funkcjΔ™ agregujΔ…cΔ… "%s"?'; + $lang['straggregatedropped'] = 'Funkcja agregujΔ…ca zostaΕ‚a usuniΔ™ta.'; + $lang['straggregatedroppedbad'] = 'PrΓ³ba usuniΔ™cia funkcji agregujΔ…cej siΔ™ nie powiodΕ‚a.'; + $lang['stralteraggregate'] = 'ZmieΕ„ funkcjΔ™ agregujΔ…cΔ…'; + $lang['straggraltered'] = 'Funkcja agregujΔ…ca zostaΕ‚a zmieniona.'; + $lang['straggralteredbad'] = 'PrΓ³ba zmiany funkcji agregujΔ…cej siΔ™ nie powiodΕ‚a.'; + $lang['straggrneedsname'] = 'Musisz podaΔ‡ nazwΔ™ funkcji agregujΔ…cej'; + $lang['straggrneedsbasetype'] = 'Musisz podaΔ‡ typ danych wejΕ›ciowych funkcji agregujΔ…cej'; +$lang['straggrneedssfunc'] = 'You must specify the name of the state transition function for the aggregate'; +$lang['straggrneedsstype'] = 'You must specify the data type for the aggregate\'s state value'; + $lang['straggrcreated'] = 'Funkcja agregujΔ…ca zostaΕ‚a utworzona.'; + $lang['straggrcreatedbad'] = 'PrΓ³ba utworzenia funkcji agregujΔ…cej siΔ™ nie powiodΕ‚a.'; + $lang['straggrshowall'] = 'PokaΕΌ wszystkie funkcje agregujΔ…ce'; + + // Operator Classes + $lang['stropclasses'] = 'Klasy operatorΓ³w'; + $lang['strnoopclasses'] = 'Nie znaleziono klas operatorΓ³w.'; + $lang['straccessmethod'] = 'Metoda dostΔ™pu'; + + // Stats and performance + $lang['strrowperf'] = 'WydajnoΕ›Δ‡ wierszowa'; + $lang['strioperf'] = 'WydajnoΕ›Δ‡ I/O'; + $lang['stridxrowperf'] = 'WydajnoΕ›Δ‡ indeksu wierszowego'; + $lang['stridxioperf'] = 'WydajnoΕ›Δ‡ indeksu We/Wy'; + $lang['strpercent'] = '%'; + $lang['strsequential'] = 'Sekwencyjny'; + $lang['strscan'] = 'Skanuj'; + $lang['strread'] = 'Czytaj'; + $lang['strfetch'] = 'Pobierz'; + $lang['strheap'] = 'Sterta'; + $lang['strtoast'] = 'TOAST'; + $lang['strtoastindex'] = 'Indeks TOAST'; + $lang['strcache'] = 'Kesz'; + $lang['strdisk'] = 'Dysk'; + $lang['strrows2'] = 'Wiersze'; + + // Tablespaces + $lang['strtablespace'] = 'PrzestrzeΕ„ tabel'; + $lang['strtablespaces'] = 'Przestrzenie tabel'; + $lang['strshowalltablespaces'] = 'PokaΕΌ wszystkie przestrzenie tabel'; + $lang['strnotablespaces'] = 'Nie znaleziono przestrzeni tabel.'; + $lang['strcreatetablespace'] = 'UtwΓ³rz przestrzeΕ„ tabel'; + $lang['strlocation'] = 'PoΕ‚oΕΌenie'; + $lang['strtablespaceneedsname'] = 'Musisz podaΔ‡ nazwΔ™ przestrzeni tabel.'; + $lang['strtablespaceneedsloc'] = 'Musisz podaΔ‡ nazwΔ™ katalogu, w ktΓ³rym chcesz utworzyΔ‡ przestrzeΕ„ tabel.'; + $lang['strtablespacecreated'] = 'PrzestrzeΕ„ tabel zostaΕ‚a utworzona.'; + $lang['strtablespacecreatedbad'] = 'PrΓ³ba utworzenia przestrzeni tabel siΔ™ nie powiodΕ‚a.'; + $lang['strconfdroptablespace'] = 'Czy na pewno chcesz usunΔ…Δ‡ przestrzeΕ„ tabel "%s"?'; + $lang['strtablespacedropped'] = 'PrzestrzeΕ„ tabel zostaΕ‚a usuniΔ™ta.'; + $lang['strtablespacedroppedbad'] = 'PrΓ³ba usuniΔ™cia przestrzeni tabel siΔ™ nie powiodΕ‚a.'; + $lang['strtablespacealtered'] = 'PrzestrzeΕ„ tabel zostaΕ‚a zmieniona.'; + $lang['strtablespacealteredbad'] = 'PrΓ³ba modyfikacji przestrzeni tabel siΔ™ nie powiodΕ‚a.'; + + + // Miscellaneous + $lang['strtopbar'] = '%s uruchomiony na %s:%s -- JesteΕ› zalogowany jako "%s"'; + $lang['strtimefmt'] = 'jS M, Y g:iA'; + $lang['strhelp'] = 'Pomoc'; + $lang['strhelpicon'] = '?'; + $lang['strlogintitle'] = 'Zaloguj do %s'; + $lang['strlogoutmsg'] = 'Wylogowano z %s'; + $lang['strloading'] = 'ŁadujΔ™...'; + $lang['strerrorloading'] = 'BΕ‚Δ…d Ε‚adowania'; + $lang['strclicktoreload'] = 'Kliknij aby odΕ›wieΕΌyΔ‡'; + + //Autovacuum + $lang['strautovacuum'] = 'Czyszczenie automatyczne'; + $lang['strturnedon'] = 'WΕ‚Δ…czone'; + $lang['strturnedoff'] = 'WyΕ‚Δ…czone'; + $lang['strenabled'] = 'Aktywne'; + $lang['strvacuumbasethreshold'] = 'Podstawowy prΓ³g czyszczenia'; + $lang['strvacuumscalefactor'] = 'WspΓ³Ε‚czynnik czyszczenia'; + $lang['stranalybasethreshold'] = 'Podstawowy prΓ³g analizy'; + $lang['stranalyzescalefactor'] = 'WspΓ³Ε‚czynnik analizy'; + $lang['strvacuumcostdelay'] = 'OpΓ³ΕΊnienie po przekroczeniu kosztu czyszczenia'; + $lang['strvacuumcostlimit'] = 'Limit kosztu czyszczenia'; + + //Table-level Locks + $lang['strlocks'] = 'Blokady'; + $lang['strtransaction'] = 'ID transakcji'; + $lang['strprocessid'] = 'ID procesu'; + $lang['strmode'] = 'Tryb blokowania'; + $lang['strislockheld'] = 'Czy blokada obowiΔ…zuje?'; + + // Prepared transactions + $lang['strpreparedxacts'] = 'Przygotowane transakcje'; + $lang['strxactid'] = 'ID transakcji'; + $lang['strgid'] = 'Globalny ID'; +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/portuguese-br.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/portuguese-br.php new file mode 100644 index 00000000..8f956583 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/portuguese-br.php @@ -0,0 +1,898 @@ +'; + $lang['strfirst'] = '<< Primeiro'; + $lang['strlast'] = 'Último >>'; + $lang['strfailed'] = 'Falhou'; + $lang['strcreate'] = 'Criar'; + $lang['strcreated'] = 'Criado'; + $lang['strcomment'] = 'ComentΓ‘rio'; + $lang['strlength'] = 'Tamanho'; + $lang['strdefault'] = 'PadrΓ£o'; + $lang['stralter'] = 'Alterar'; + $lang['strok'] = 'OK'; + $lang['strcancel'] = 'Cancelar'; + $lang['strkill'] = 'Encerrar'; + $lang['strac'] = 'Habilitar AutoComplete'; + $lang['strsave'] = 'Salvar'; + $lang['strreset'] = 'Reiniciar'; + $lang['strrestart'] = 'Reinicializar'; + $lang['strinsert'] = 'Inserir'; + $lang['strselect'] = 'Selecionar'; + $lang['strdelete'] = 'Deletar'; + $lang['strupdate'] = 'Atualizar'; + $lang['strreferences'] = 'ReferΓͺncias'; + $lang['stryes'] = 'Sim'; + $lang['strno'] = 'NΓ£o'; + $lang['strtrue'] = 'TRUE'; + $lang['strfalse'] = 'FALSE'; + $lang['stredit'] = 'Editar'; + $lang['strcolumn'] = 'Coluna'; + $lang['strcolumns'] = 'Colunas'; + $lang['strrows'] = 'linha(s)'; + $lang['strrowsaff'] = 'linha(s) afetadas.'; + $lang['strobjects'] = 'objeto(s)'; + $lang['strback'] = 'Voltar'; + $lang['strqueryresults'] = 'Resultados da consulta'; + $lang['strshow'] = 'Exibir'; + $lang['strempty'] = 'Vazio'; + $lang['strlanguage'] = 'Linguagem'; + $lang['strencoding'] = 'Codificação'; + $lang['strvalue'] = 'Valor'; + $lang['strunique'] = 'Único(a)'; + $lang['strprimary'] = 'PrimΓ‘rio(a)'; + $lang['strexport'] = 'Exportar'; + $lang['strimport'] = 'Importar'; + $lang['strallowednulls'] = 'Caracteres NULL permitidos'; + $lang['strbackslashn'] = '\N'; + $lang['stremptystring'] = 'Texto/campo vazio'; + $lang['strsql'] = 'SQL'; + $lang['stradmin'] = 'Administração'; + $lang['strvacuum'] = 'VΓ‘cuo'; + $lang['stranalyze'] = 'Analisar'; + $lang['strclusterindex'] = 'Cluster'; + $lang['strclustered'] = 'Clusterizado?'; + $lang['strreindex'] = 'Reindexar'; + $lang['strexecute'] = 'Executar'; + $lang['stradd'] = 'Adicionar'; + $lang['strevent'] = 'Evento'; + $lang['strwhere'] = 'Onde'; + $lang['strinstead'] = 'FaΓ§a preferivelmente'; + $lang['strwhen'] = 'Quando'; + $lang['strformat'] = 'Formato'; + $lang['strdata'] = 'Data'; + $lang['strconfirm'] = 'Confirma'; + $lang['strexpression'] = 'ExpressΓ£o'; + $lang['strellipsis'] = '...'; + $lang['strseparator'] = ': '; + $lang['strexpand'] = 'Expandir'; + $lang['strcollapse'] = 'Reduzir'; + $lang['strfind'] = 'Encontrar'; + $lang['stroptions'] = 'Opçáes'; + $lang['strrefresh'] = 'Atualizar'; + $lang['strdownload'] = 'Download'; + $lang['strdownloadgzipped'] = 'Download compactado com gzip'; + $lang['strinfo'] = 'Informaçáes'; + $lang['stroids'] = 'OIDs'; + $lang['stradvanced'] = 'AvanΓ§ado'; + $lang['strvariables'] = 'VariΓ‘veis'; + $lang['strprocess'] = 'Processo'; + $lang['strprocesses'] = 'Processos'; + $lang['strsetting'] = 'Valor atribuΓ­do'; + $lang['streditsql'] = 'Editar SQL'; + $lang['strruntime'] = 'Tempo de execução total: %s ms'; + $lang['strpaginate'] = 'Paginar resultados'; + $lang['struploadscript'] = 'ou carregue o script SQL de um arquivo:'; + $lang['strstarttime'] = 'Hora de inΓ­cio'; + $lang['strfile'] = 'Arquivo'; + $lang['strfileimported'] = 'Arquivo importado.'; + $lang['strtrycred'] = 'Utilizar estas credenciais para todos os servidores'; + $lang['strconfdropcred'] = 'Por motivos de seguranΓ§a, a desconexΓ£o irΓ‘ destruir suas informaçáes de login compartilhado. Tem certeza que deseja se desconectar?'; + $lang['stractionsonmultiplelines'] = 'Açáes sobre mΓΊltiplas linhas'; + $lang['strselectall'] = 'Selecionar tudo'; + $lang['strunselectall'] = 'Desmarcar tudo'; + $lang['strlocale'] = 'Local'; + $lang['strcollation'] = 'Comparação'; + $lang['strctype'] = 'Tipo de codificação'; + $lang['strdefaultvalues'] = 'Valores padrΓ£o'; + $lang['strnewvalues'] = 'Novos valores'; + $lang['strstart'] = 'Iniciar'; + $lang['strstop'] = 'Parar'; + $lang['strgotoppage'] = 'Topo da pΓ‘gina'; + $lang['strtheme'] = 'Tema'; + + // Admin + $lang['stradminondatabase'] = 'As tarefas administrativas a seguir se aplicam em toda a base de dados %s.'; + $lang['stradminontable'] = 'As tarefas administrativas a seguir se aplicam na tabela %s.'; + + // User-supplied SQL history + $lang['strhistory'] = 'HistΓ³rico'; + $lang['strnohistory'] = 'Sem histΓ³rico.'; + $lang['strclearhistory'] = 'Limpar histΓ³rico'; + $lang['strdelhistory'] = 'Deletar do histΓ³rico'; + $lang['strconfdelhistory'] = 'Realmente remover esta entrada do histΓ³rico?'; + $lang['strconfclearhistory'] = 'Realmente limpar o histΓ³rico?'; + $lang['strnodatabaseselected'] = 'Por favor, selecione uma base de dados.'; + + // Database sizes + $lang['strnoaccess'] = 'Sem acesso'; + $lang['strsize'] = 'Tamanho'; + $lang['strbytes'] = 'bytes'; + $lang['strkb'] = 'kB'; + $lang['strmb'] = 'MB'; + $lang['strgb'] = 'GB'; + $lang['strtb'] = 'TB'; + + // Error handling + $lang['strnoframes'] = 'Esta aplicação opera melhor em um navegador com suporte a frames, mas pode ser utilizada sem frames acessando o link abaixo.'; + $lang['strnoframeslink'] = 'Utilizar sem frames'; + $lang['strbadconfig'] = 'Seu arquivo config.inc.php estΓ‘ desatualizado. VocΓͺ terΓ‘ que gerΓ‘-lo novamente a partir do novo arquivo config.inc.php-dist.'; + $lang['strnotloaded'] = 'Sua instalação do PHP nΓ£o tΓͺm suporte ao PostgreSQL. VocΓͺ deverΓ‘ recompilar o PHP utilizando a opção de configuração --with-pgsql (GNU-Linux) ou habilitar a extensΓ£o extension=php_pgsql.dll no php.ini (Microsoft Windows).'; + $lang['strpostgresqlversionnotsupported'] = 'VersΓ£o do PostgreSQL nΓ£o suportada. Por favor, atualize para a sua versΓ£o %s ou posterior.'; + $lang['strbadschema'] = 'Esquema especificado invΓ‘lido.'; + $lang['strbadencoding'] = 'Falha ao atribuir a codificação do cliente na base de dados.'; + $lang['strsqlerror'] = 'Erro de SQL:'; + $lang['strinstatement'] = 'No bloco:'; + $lang['strinvalidparam'] = 'ParΓ’metros de script invΓ‘lidos.'; + $lang['strnodata'] = 'Nenhuma linha encontrada.'; + $lang['strnoobjects'] = 'Nenhum objeto encontrado.'; + $lang['strrownotunique'] = 'Nenhum identificador ΓΊnico para esta linha.'; + $lang['strnouploads'] = 'O upload de arquivos estΓ‘ desabilitado.'; + $lang['strimporterror'] = 'Erro de importação.'; + $lang['strimporterror-fileformat'] = 'Erro de importação: Falhou ao determinar automΓ‘ticamente o formato do arquivo.'; + $lang['strimporterrorline'] = 'Erro de importação na linha %s.'; + $lang['strimporterrorline-badcolumnnum'] = 'Erro de importação na linha %s: Linha nΓ£o possui o nΓΊmero correto de colunas.'; + $lang['strimporterror-uploadedfile'] = 'Erro de importação: O arquivo nΓ£o pode ser carregado para o servidor'; + $lang['strcannotdumponwindows'] = 'O dumping de uma tabela complexa e um nome de esquema nΓ£o Γ© suportado no Windows.'; + $lang['strinvalidserverparam'] = 'Tentativa de conectar com um parΓ’metro de servidor invΓ‘lido, possivelmente alguΓ©m estΓ‘ tentando hackear o seu sistema.'; + $lang['strnoserversupplied'] = 'Nenhum servidor informado!'; + $lang['strbadpgdumppath'] = 'Erro de exportação: Falha ao executar pg_dump (caminho apontado no seu conf/config.inc.php : %s). Por favor, ajuste este diretΓ³rio na sua configuração e relogue no sistema.'; + $lang['strbadpgdumpallpath'] = 'Erro de exportação: Falha ao executar pg_dumpall (caminho apontado no seu conf/config.inc.php : %s). Por favor, este diretΓ³rio na sua configuração e relogue no sistema.'; + $lang['strconnectionfail'] = 'A conexΓ£o falhou.'; + + // Tables + $lang['strtable'] = 'Tabela'; + $lang['strtables'] = 'Tabelas'; + $lang['strshowalltables'] = 'Exibir todas as tabelas'; + $lang['strnotables'] = 'Nenhuma tabela encontrada.'; + $lang['strnotable'] = 'Nenhuma tabela encontrada.'; + $lang['strcreatetable'] = 'Criar tabela'; + $lang['strcreatetablelike'] = 'Criar tabela similar'; + $lang['strcreatetablelikeparent'] = 'Tabela de origem'; + $lang['strcreatelikewithdefaults'] = 'INCLUDE DEFAULTS'; + $lang['strcreatelikewithconstraints'] = 'INCLUDE CONSTRAINTS'; + $lang['strcreatelikewithindexes'] = 'INCLUDE INDEXES'; + $lang['strtablename'] = 'Nome da tabela'; + $lang['strtableneedsname'] = 'VocΓͺ deve informar um nome para a sua tabela.'; + $lang['strtablelikeneedslike'] = 'VocΓͺ deve informar uma tabela para copiar suas propriedades.'; + $lang['strtableneedsfield'] = 'VocΓͺ deve informar ao menos um campo.'; + $lang['strtableneedscols'] = 'VocΓͺ deve informar um nΓΊmero de colunas vΓ‘lido.'; + $lang['strtablecreated'] = 'Tabela criada.'; + $lang['strtablecreatedbad'] = 'Falha ao criar a tabela.'; + $lang['strconfdroptable'] = 'VocΓͺ tΓͺm certeza que deseja deletar a tabela "%s"?'; + $lang['strtabledropped'] = 'Tabela deletada.'; + $lang['strtabledroppedbad'] = 'Falha ao deletar a tabela.'; + $lang['strconfemptytable'] = 'VocΓͺ tΓͺm certeza que deseja esvaziar a tabela "%s"?'; + $lang['strtableemptied'] = 'Tabela esvaziada.'; + $lang['strtableemptiedbad'] = 'Falha ao esvaziar a tabela.'; + $lang['strinsertrow'] = 'Inserir linha'; + $lang['strrowinserted'] = 'Linha inserida.'; + $lang['strrowinsertedbad'] = 'Falha ao inserir a linha.'; + $lang['strnofkref'] = 'NΓ£o hΓ‘ valor correspondendo na chave estrangeira %s.'; + $lang['strrowduplicate'] = 'Falha ao inserir a linha, tentativa de inserção duplicada.'; + $lang['streditrow'] = 'Editar linha'; + $lang['strrowupdated'] = 'Linha atualizada.'; + $lang['strrowupdatedbad'] = 'Falha ao atualizar a linha.'; + $lang['strdeleterow'] = 'Deletar linha'; + $lang['strconfdeleterow'] = 'VocΓͺ tΓͺm certeza que deseja deletar esta linha?'; + $lang['strrowdeleted'] = 'Linha deletada.'; + $lang['strrowdeletedbad'] = 'Falha ao deletar a linha.'; + $lang['strinsertandrepeat'] = 'Inserir & Repetir'; + $lang['strnumcols'] = 'NΓΊmero de colunas'; + $lang['strcolneedsname'] = 'VocΓͺ deve informar um nome para a coluna'; + $lang['strselectallfields'] = 'Selecionar todos os campos'; + $lang['strselectneedscol'] = 'VocΓͺ deve exibir ao menos uma coluna.'; + $lang['strselectunary'] = 'Operadores unΓ‘rios nΓ£o podem ter valores.'; + $lang['strcolumnaltered'] = 'Coluna alterada.'; + $lang['strcolumnalteredbad'] = 'Falha ao alterar a coluna.'; + $lang['strconfdropcolumn'] = 'VocΓͺ tΓͺm certeza que deseja remover a coluna "%s" da tabela "%s"?'; + $lang['strcolumndropped'] = 'Coluna removida.'; + $lang['strcolumndroppedbad'] = 'Falha ao remover a coluna.'; + $lang['straddcolumn'] = 'Adicionar coluna'; + $lang['strcolumnadded'] = 'Coluna adicionada.'; + $lang['strcolumnaddedbad'] = 'Falha ao adicionar a coluna.'; + $lang['strcascade'] = 'CASCADE'; + $lang['strtablealtered'] = 'Tabela alterada.'; + $lang['strtablealteredbad'] = 'Falha ao alterar a tabela.'; + $lang['strdataonly'] = 'Somente dados'; + $lang['strstructureonly'] = 'Somente estrutura'; + $lang['strstructureanddata'] = 'Estrutura e dados'; + $lang['strtabbed'] = 'Tabulado'; + $lang['strauto'] = 'Auto'; + $lang['strconfvacuumtable'] = 'VocΓͺ tΓͺm certeza que deseja realizar vΓ‘cuo em "%s"?'; + $lang['strconfanalyzetable'] = 'VocΓͺ tΓͺm certeza que deseja analizar "%s"?'; + $lang['strconfreindextable'] = 'VocΓͺ tΓͺm certeza que deseja reindexar "%s"?'; + $lang['strconfclustertable'] = 'VocΓͺ tΓͺm certeza que deseja clusterizar "%s"?'; + $lang['strestimatedrowcount'] = 'NΓΊmero estimado de linhas'; + $lang['strspecifytabletoanalyze'] = 'VocΓͺ deve especificar ao menos uma tabela para analisar.'; + $lang['strspecifytabletoempty'] = 'VocΓͺ deve especificar ao menos uma tabela para esvaziar.'; + $lang['strspecifytabletodrop'] = 'VocΓͺ deve especificar ao menos uma tabela para deletar.'; + $lang['strspecifytabletovacuum'] = 'VocΓͺ deve especificar ao menos uma tabela para o vΓ‘cuo.'; + $lang['strspecifytabletoreindex'] = 'VocΓͺ deve especificar ao menos uma tabela para reindexar.'; + $lang['strspecifytabletocluster'] = 'VocΓͺ deve especificar ao menos uma tabela para clusterizar.'; + $lang['strnofieldsforinsert'] = 'VocΓͺ nΓ£o pode inserir uma linha em uma tabela sem colunas.'; + + // Columns + $lang['strcolprop'] = 'Propriedades da coluna'; + $lang['strnotableprovided'] = 'Nenhuma tabela informada!'; + + // Users + $lang['struser'] = 'UsuΓ‘rio'; + $lang['strusers'] = 'UsuΓ‘rios'; + $lang['strusername'] = 'Nome de usuΓ‘rio'; + $lang['strpassword'] = 'Senha'; + $lang['strsuper'] = 'Super usuΓ‘rio?'; + $lang['strcreatedb'] = 'Criar DB?'; + $lang['strexpires'] = 'Expira'; + $lang['strsessiondefaults'] = 'PadrΓ΅es de sessΓ£o'; + $lang['strnousers'] = 'Nenhum usuΓ‘rio encontrado.'; + $lang['struserupdated'] = 'UsuΓ‘rio atualizado.'; + $lang['struserupdatedbad'] = 'Falha ao atualizar usuΓ‘rio.'; + $lang['strshowallusers'] = 'Exibir todos os usuΓ‘rios'; + $lang['strcreateuser'] = 'Criar usuΓ‘rio'; + $lang['struserneedsname'] = 'VocΓͺ deve informar um nome para o seu usuΓ‘rio.'; + $lang['strusercreated'] = 'UsuΓ‘rio criado.'; + $lang['strusercreatedbad'] = 'Falha ao criar usuΓ‘rio.'; + $lang['strconfdropuser'] = 'VocΓͺ tΓͺm certeza que deseja deletar o usuΓ‘rio "%s"?'; + $lang['struserdropped'] = 'UsuΓ‘rio deletado.'; + $lang['struserdroppedbad'] = 'Falha ao deletar usuΓ‘rio.'; + $lang['straccount'] = 'Conta'; + $lang['strchangepassword'] = 'Alterar senha'; + $lang['strpasswordchanged'] = 'Senha alterada.'; + $lang['strpasswordchangedbad'] = 'Falha ao alterar a senha.'; + $lang['strpasswordshort'] = 'A senha Γ© muito curta.'; + $lang['strpasswordconfirm'] = 'A confirmação de senha nΓ£o confere.'; + + // Groups + $lang['strgroup'] = 'Grupo'; + $lang['strgroups'] = 'Grupos'; + $lang['strshowallgroups'] = 'Exibir todos os grupos'; + $lang['strnogroup'] = 'Grupo nΓ£o encontrado.'; + $lang['strnogroups'] = 'Nenhum grupo encontrado.'; + $lang['strcreategroup'] = 'Criar grupo'; + $lang['strgroupneedsname'] = 'VocΓͺ deve informar um nome para o seu grupo.'; + $lang['strgroupcreated'] = 'Grupo criado.'; + $lang['strgroupcreatedbad'] = 'Falha ao criar o grupo.'; + $lang['strconfdropgroup'] = 'VocΓͺ tΓͺm certeza que deseja deletar o grupo "%s"?'; + $lang['strgroupdropped'] = 'Grupo deletado.'; + $lang['strgroupdroppedbad'] = 'Falha ao deletar grupo.'; + $lang['strmembers'] = 'Membros'; + $lang['strmemberof'] = 'Membro de'; + $lang['stradminmembers'] = 'Membros administrativos'; + $lang['straddmember'] = 'Adicionar membros'; + $lang['strmemberadded'] = 'Membro adicionado.'; + $lang['strmemberaddedbad'] = 'Falha ao adicionar membro.'; + $lang['strdropmember'] = 'Deletar membro'; + $lang['strconfdropmember'] = 'VocΓͺ tΓͺm certeza que deseja deletar o membro "%s" do grupo "%s"?'; + $lang['strmemberdropped'] = 'Membro deletado.'; + $lang['strmemberdroppedbad'] = 'Falha ao deletar membro.'; + + // Roles + $lang['strrole'] = 'Papel'; + $lang['strroles'] = 'PapΓ©is'; + $lang['strshowallroles'] = 'Exibir todos os papΓ©is'; + $lang['strnoroles'] = 'Nenhum papel encontrado.'; + $lang['strinheritsprivs'] = 'Herdar privilΓ©gios?'; + $lang['strcreaterole'] = 'Criar papel'; + $lang['strcancreaterole'] = 'Pode criar papΓ©is?'; + $lang['strrolecreated'] = 'Papel criado.'; + $lang['strrolecreatedbad'] = 'Falha ao criar o papel.'; + $lang['strrolealtered'] = 'Papel alterado.'; + $lang['strrolealteredbad'] = 'Falha ao alterar o papel.'; + $lang['strcanlogin'] = 'Pode logar?'; + $lang['strconnlimit'] = 'Limite de conexΓ΅es'; + $lang['strdroprole'] = 'Deletar papel'; + $lang['strconfdroprole'] = 'VocΓͺ tΓͺm certeza que deseja deletar o papel "%s"?'; + $lang['strroledropped'] = 'Papel deletado.'; + $lang['strroledroppedbad'] = 'Falha ao deletar o papel.'; + $lang['strnolimit'] = 'Sem limite'; + $lang['strnever'] = 'Nunca'; + $lang['strroleneedsname'] = 'VocΓͺ deve informar um nome para o papel.'; + + // Privileges + $lang['strprivilege'] = 'PrivilΓ©gio'; + $lang['strprivileges'] = 'PrivilΓ©gios'; + $lang['strnoprivileges'] = 'Este objeto tΓͺm os privilΓ©gios padrΓ΅es de proprietΓ‘rio.'; + $lang['strgrant'] = 'Conceder'; + $lang['strrevoke'] = 'Revogar'; + $lang['strgranted'] = 'PrivilΓ©gios alterados.'; + $lang['strgrantfailed'] = 'Falha ao alterar os privilΓ©gios.'; + $lang['strgrantbad'] = 'VocΓͺ deve informar ao menos um usuΓ‘rio ou grupo e ao menos um privilΓ©gio.'; + $lang['strgrantor'] = 'Provedor'; + $lang['strasterisk'] = '*'; + + // Databases + $lang['strdatabase'] = 'Banco de dados'; + $lang['strdatabases'] = 'Bancos de dados'; + $lang['strshowalldatabases'] = 'Exibir todos os bancos de dados'; + $lang['strnodatabases'] = 'Nenhum banco de dados encontrado.'; + $lang['strcreatedatabase'] = 'Criar banco de dados'; + $lang['strdatabasename'] = 'Nome do banco de dados'; + $lang['strdatabaseneedsname'] = 'VocΓͺ deve informar um nome para o seu banco de dados.'; + $lang['strdatabasecreated'] = 'Banco de dados criado.'; + $lang['strdatabasecreatedbad'] = 'Falha ao criar o banco de dados.'; + $lang['strconfdropdatabase'] = 'VocΓͺ tem certeza que deseja deletar o banco de dados "%s"?'; + $lang['strdatabasedropped'] = 'Banco de dados deletado.'; + $lang['strdatabasedroppedbad'] = 'Falha ao deletar o banco de dados.'; + $lang['strentersql'] = 'Informe o SQL a executar abaixo:'; + $lang['strsqlexecuted'] = 'SQL executado.'; + $lang['strvacuumgood'] = 'VΓ‘cuo completo.'; + $lang['strvacuumbad'] = 'Falha ao realizar o vΓ‘cuo.'; + $lang['stranalyzegood'] = 'AnΓ‘lise completa.'; + $lang['stranalyzebad'] = 'Falha ao realizar a anΓ‘lise.'; + $lang['strreindexgood'] = 'Reindexação completa.'; + $lang['strreindexbad'] = 'Falha ao executar a reindexação.'; + $lang['strfull'] = 'Completo'; + $lang['strfreeze'] = 'Congelar'; + $lang['strforce'] = 'ForΓ§ar'; + $lang['strsignalsent'] = 'Sinal enviado.'; + $lang['strsignalsentbad'] = 'Falha ao enviar o sinal.'; + $lang['strallobjects'] = 'Todos os objetos'; + $lang['strdatabasealtered'] = 'Banco de dados alterado.'; + $lang['strdatabasealteredbad'] = 'Falha ao alterar o banco de dados.'; + $lang['strspecifydatabasetodrop'] = 'VocΓͺ deve especificar ao menos um banco de dados para deletar.'; + $lang['strtemplatedb'] = 'Modelo'; + $lang['strconfanalyzedatabase'] = 'VocΓͺ tΓͺm certeza que deseja analisar todas as tabelas na base de dados "%s"?'; + $lang['strconfvacuumdatabase'] = 'VocΓͺ tΓͺm certeza que deseja realizar vΓ‘cuo em todas as tabelas na base de dados "%s"?'; + $lang['strconfreindexdatabase'] = 'VocΓͺ tΓͺm certeza que deseja reindexar todas as tabelas na base de dados "%s"?'; + $lang['strconfclusterdatabase'] = 'VocΓͺ tΓͺm certeza que deseja clusterizar todas as tabelas na base de dados "%s"?'; + + // Views + $lang['strview'] = 'VisΓ£o'; + $lang['strviews'] = 'VisΓ΅es'; + $lang['strshowallviews'] = 'Exibir todas as visΓ΅es'; + $lang['strnoview'] = 'Nenhuma visΓ£o encontrada.'; + $lang['strnoviews'] = 'Nenhuma visΓ£o encontrada.'; + $lang['strcreateview'] = 'Criar visΓ£o'; + $lang['strviewname'] = 'Nome da visΓ£o'; + $lang['strviewneedsname'] = 'VocΓͺ deve informar o nome da sua visΓ£o.'; + $lang['strviewneedsdef'] = 'VocΓͺ deve informar uma definição para a sua visΓ£o.'; + $lang['strviewneedsfields'] = 'VocΓͺ deve informar as colunas que vocΓͺ deseja selecionar para a sua visΓ£o.'; + $lang['strviewcreated'] = 'VisΓ£o criada.'; + $lang['strviewcreatedbad'] = 'Falha ao criar a visΓ£o.'; + $lang['strconfdropview'] = 'VocΓͺ tΓͺm certeza que deseja deletar a visΓ£o "%s"?'; + $lang['strviewdropped'] = 'VisΓ£o deletada.'; + $lang['strviewdroppedbad'] = 'Falha ao deletar a visΓ£o.'; + $lang['strviewupdated'] = 'VisΓ£o atualizada.'; + $lang['strviewupdatedbad'] = 'Falha ao atualizar a visΓ£o.'; + $lang['strviewlink'] = 'Chaves de ligação'; + $lang['strviewconditions'] = 'Condiçáes adicionais'; + $lang['strcreateviewwiz'] = 'Criar visΓ£o com o assistente'; + $lang['strrenamedupfields'] = 'Renomear campos duplicados'; + $lang['strdropdupfields'] = 'Deletar campos duplicados'; + $lang['strerrordupfields'] = 'Erro quando campos duplicados'; + $lang['strviewaltered'] = 'VisΓ£o alterada.'; + $lang['strviewalteredbad'] = 'Falha ao alterar a visΓ£o.'; + $lang['strspecifyviewtodrop'] = 'VocΓͺ deve informar ao menos uma visΓ£o para deletar.'; + + // Sequences + $lang['strsequence'] = 'SeqΓΌΓͺncia'; + $lang['strsequences'] = 'SeqΓΌΓͺncias'; + $lang['strshowallsequences'] = 'Exibir todas as seqΓΌΓͺncias'; + $lang['strnosequence'] = 'Nenhuma seqΓΌΓͺncia encontrada.'; + $lang['strnosequences'] = 'Nenhuma seqΓΌΓͺncia encontrada.'; + $lang['strcreatesequence'] = 'Criar seqΓΌΓͺncia'; + $lang['strlastvalue'] = 'Último valor'; + $lang['strincrementby'] = 'Incrementado por'; + $lang['strstartvalue'] = 'Valor inicial'; + $lang['strrestartvalue'] = 'Valor de reinicialização'; + $lang['strmaxvalue'] = 'Valor mΓ‘ximo'; + $lang['strminvalue'] = 'Valor mΓ­nimo'; + $lang['strcachevalue'] = 'Valor de cache'; + $lang['strlogcount'] = 'Contador do log'; + $lang['strcancycle'] = 'Pode ser cΓ­clica?'; + $lang['striscalled'] = 'IrΓ‘ incrementar o ΓΊltimo valor antes de retornar o prΓ³ximo valor (is_called)?'; + $lang['strsequenceneedsname'] = 'VocΓͺ deve informar um nome para a sua seqΓΌΓͺncia.'; + $lang['strsequencecreated'] = 'SeqΓΌΓͺncia criada.'; + $lang['strsequencecreatedbad'] = 'Falha ao criar a seqΓΌΓͺncia.'; + $lang['strconfdropsequence'] = 'VocΓͺ tΓͺm certeza que deseja deletar a seqΓΌΓͺncia "%s"?'; + $lang['strsequencedropped'] = 'SeqΓΌΓͺncia deletada.'; + $lang['strsequencedroppedbad'] = 'Falha ao deletar a seqΓΌΓͺncia.'; + $lang['strsequencerestart'] = 'SeqΓΌΓͺncia reinicializada.'; + $lang['strsequencerestartbad'] = 'Falha ao reinicializar a seqΓΌΓͺncia.'; + $lang['strsequencereset'] = 'Reinicializar a seqΓΌΓͺncia.'; + $lang['strsequenceresetbad'] = 'Falha ao reinicializar a seqΓΌΓͺncia.'; + $lang['strsequencealtered'] = 'SeqΓΌΓͺncia alterada.'; + $lang['strsequencealteredbad'] = 'Falha ao alterar a seqΓΌΓͺncia.'; + $lang['strsetval'] = 'Atribuir valor'; + $lang['strsequencesetval'] = 'Atribuir valor da seqΓΌΓͺncia.'; + $lang['strsequencesetvalbad'] = 'Falha ao atribuir valor da seqΓΌΓͺncia.'; + $lang['strnextval'] = 'Valor de incremento'; + $lang['strsequencenextval'] = 'SeqΓΌΓͺncia incrementada.'; + $lang['strsequencenextvalbad'] = 'Falha ao incrementar a seqΓΌΓͺncia.'; + $lang['strspecifysequencetodrop'] = 'VocΓͺ deve informar ao menos uma seqΓΌΓͺncia para deletar.'; + + // Indexes + $lang['strindex'] = 'Índice'; + $lang['strindexes'] = 'Índices'; + $lang['strindexname'] = 'Nome do Γ­ndice'; + $lang['strshowallindexes'] = 'Exibir todos os Γ­ndices'; + $lang['strnoindex'] = 'Nenhum Γ­ndice encontrado.'; + $lang['strnoindexes'] = 'Nenhum Γ­ndice encontrado.'; + $lang['strcreateindex'] = 'Criar Γ­ndice'; + $lang['strtabname'] = 'Nome da tabela'; + $lang['strcolumnname'] = 'Nome da coluna'; + $lang['strindexneedsname'] = 'VocΓͺ deve informar um nome para o seu Γ­ndice.'; + $lang['strindexneedscols'] = 'Índices requerem um nΓΊmero vΓ‘lido de colunas.'; + $lang['strindexcreated'] = 'Índice criado.'; + $lang['strindexcreatedbad'] = 'Falha ao criar o Γ­ndice.'; + $lang['strconfdropindex'] = 'VocΓͺ tΓͺm certeza que deseja deletar o Γ­ndice "%s"?'; + $lang['strindexdropped'] = 'Índice deletado.'; + $lang['strindexdroppedbad'] = 'Falha ao deletar o Γ­ndice.'; + $lang['strkeyname'] = 'Nome da chave'; + $lang['struniquekey'] = 'Chave ΓΊnica'; + $lang['strprimarykey'] = 'Chave primΓ‘ria'; + $lang['strindextype'] = 'Tipo de Γ­ndice'; + $lang['strtablecolumnlist'] = 'Colunas na tabela'; + $lang['strindexcolumnlist'] = 'Colunas no Γ­ndice'; + $lang['strconfcluster'] = 'VocΓͺ tΓͺm certeza que deseja clusterizar "%s"?'; + $lang['strclusteredgood'] = 'Clusterização completa.'; + $lang['strclusteredbad'] = 'Falha ao clusterizar.'; + $lang['strcluster'] = 'Cluster'; + $lang['strconcurrently'] = 'Simultaneamente'; + $lang['strnoclusteravailable'] = 'Tabela nΓ£o clusterizada em um Γ­ndice.'; + + // Rules + $lang['strrules'] = 'Regras'; + $lang['strrule'] = 'Regra'; + $lang['strshowallrules'] = 'Exibir todas as regras'; + $lang['strnorule'] = 'Nenhuma regra encontrada.'; + $lang['strnorules'] = 'Nenhuma regra encontrada.'; + $lang['strcreaterule'] = 'Criar regra'; + $lang['strrulename'] = 'Nome da regra'; + $lang['strruleneedsname'] = 'VocΓͺ deve informar um nome para a sua regra.'; + $lang['strrulecreated'] = 'Regra criada.'; + $lang['strrulecreatedbad'] = 'Falha ao criar a regra.'; + $lang['strconfdroprule'] = 'VocΓͺ tΓͺm certeza que deseja deletar a regra "%s" em "%s"?'; + $lang['strruledropped'] = 'Regra deletada.'; + $lang['strruledroppedbad'] = 'Falha ao deletar a regra.'; + + // Constraints + $lang['strconstraint'] = 'Restrição'; + $lang['strconstraints'] = 'Restriçáes'; + $lang['strshowallconstraints'] = 'Exibir todas as restriçáes'; + $lang['strnoconstraints'] = 'Nenhuma restrição encontrada.'; + $lang['strcreateconstraint'] = 'Criar restrição'; + $lang['strconstraintcreated'] = 'Restrição criada.'; + $lang['strconstraintcreatedbad'] = 'Falha ao criar a restrição.'; + $lang['strconfdropconstraint'] = 'VocΓͺ tΓͺm certeza que deseja deletar a restrição "%s" em "%s"?'; + $lang['strconstraintdropped'] = 'Restrição deletada.'; + $lang['strconstraintdroppedbad'] = 'Falha ao deletar a restrição.'; + $lang['straddcheck'] = 'Adicionar checagem'; + $lang['strcheckneedsdefinition'] = 'Checagem de restrição necessita de uma definição.'; + $lang['strcheckadded'] = 'Checagem de restrição adicionada.'; + $lang['strcheckaddedbad'] = 'Falha ao adicionar checagem de restrição.'; + $lang['straddpk'] = 'Adicionar chave primΓ‘ria'; + $lang['strpkneedscols'] = 'Chave primΓ‘ria necessita de ao menos uma coluna.'; + $lang['strpkadded'] = 'Chave primΓ‘ria adicionada.'; + $lang['strpkaddedbad'] = 'Falha ao adicionar chave primΓ‘ria.'; + $lang['stradduniq'] = 'Adicionar chave ΓΊnica'; + $lang['struniqneedscols'] = 'Chave ΓΊnica necessita de ao menos uma coluna.'; + $lang['struniqadded'] = 'Chave ΓΊnica adicionada.'; + $lang['struniqaddedbad'] = 'Falha ao adicionar chave ΓΊnica.'; + $lang['straddfk'] = 'Adicionar chave estrangeira'; + $lang['strfkneedscols'] = 'Chave estrangeira necessita de ao menos uma coluna.'; + $lang['strfkneedstarget'] = 'Chave estrangeira necessita de uma tabela alvo.'; + $lang['strfkadded'] = 'Chave estrangeira adicionada.'; + $lang['strfkaddedbad'] = 'Falha ao adicionar a chave estrangeira.'; + $lang['strfktarget'] = 'Tabela alvo'; + $lang['strfkcolumnlist'] = 'Colunas em chaves'; + $lang['strondelete'] = 'ON DELETE'; + $lang['stronupdate'] = 'ON UPDATE'; + + // Functions + $lang['strfunction'] = 'Função'; + $lang['strfunctions'] = 'Funçáes'; + $lang['strshowallfunctions'] = 'Exibir todas as funçáes'; + $lang['strnofunction'] = 'Nenhuma função encontrada.'; + $lang['strnofunctions'] = 'Nenhuma função encontrada.'; + $lang['strcreateplfunction'] = 'Criar função em PL/SQL'; + $lang['strcreateinternalfunction'] = 'Criar função interna'; + $lang['strcreatecfunction'] = 'Criar função em C'; + $lang['strfunctionname'] = 'Nome da função'; + $lang['strreturns'] = 'Retorno'; + $lang['strproglanguage'] = 'Linguagem de programação'; + $lang['strfunctionneedsname'] = 'VocΓͺ deve informar um nome para a sua função.'; + $lang['strfunctionneedsdef'] = 'VocΓͺ deve informar uma definição para a sua função.'; + $lang['strfunctioncreated'] = 'Função criada.'; + $lang['strfunctioncreatedbad'] = 'Falha ao criar a função.'; + $lang['strconfdropfunction'] = 'VocΓͺ tΓͺm certeza que deseja deletar a função "%s"?'; + $lang['strfunctiondropped'] = 'Função deletada.'; + $lang['strfunctiondroppedbad'] = 'Falha ao deletar a função.'; + $lang['strfunctionupdated'] = 'Função atualizada.'; + $lang['strfunctionupdatedbad'] = 'Falha ao atualizar a função.'; + $lang['strobjectfile'] = 'Arquivo objeto'; + $lang['strlinksymbol'] = 'SΓ­mbolo de link'; + $lang['strarguments'] = 'Argumentos'; + $lang['strargmode'] = 'Modo'; + $lang['strargtype'] = 'Tipo'; + $lang['strargadd'] = 'Adicionar outro argumento'; + $lang['strargremove'] = 'Remover este argumento'; + $lang['strargnoargs'] = 'Esta função nΓ£o irΓ‘ utilizar argumentos.'; + $lang['strargenableargs'] = 'Habilitar argumentos passados para esta função.'; + $lang['strargnorowabove'] = 'Γ‰ preciso ter uma linha acima desta.'; + $lang['strargnorowbelow'] = 'Γ‰ preciso ter uma linha abaixo desta.'; + $lang['strargraise'] = 'Mover acima.'; + $lang['strarglower'] = 'Mover abaixo.'; + $lang['strargremoveconfirm'] = 'VocΓͺ tΓͺm certeza que deseja remover este argumento? Isto NΓƒO PODE ser desfeito.'; + $lang['strfunctioncosting'] = 'Custo da função'; + $lang['strresultrows'] = 'Linhas resultantes'; + $lang['strexecutioncost'] = 'Custo de execução'; + $lang['strspecifyfunctiontodrop'] = 'VocΓͺ deve informar ao menos uma função para deletar.'; + + // Triggers + $lang['strtrigger'] = 'Gatilho'; + $lang['strtriggers'] = 'Gatilhos'; + $lang['strshowalltriggers'] = 'Exibir todos os gatilhos'; + $lang['strnotrigger'] = 'Nenhum gatilho encontrado.'; + $lang['strnotriggers'] = 'Nenhum gatilho encontrado.'; + $lang['strcreatetrigger'] = 'Criar gatilho'; + $lang['strtriggerneedsname'] = 'VocΓͺ deve informar um nome para o seu gatilho.'; + $lang['strtriggerneedsfunc'] = 'VocΓͺ deve informar uma função para o seu gatilho.'; + $lang['strtriggercreated'] = 'Gatilho criado.'; + $lang['strtriggercreatedbad'] = 'Falha ao criar o gatilho.'; + $lang['strconfdroptrigger'] = 'VocΓͺ tΓͺm certeza que deseja deletar o gatilho "%s" em "%s"?'; + $lang['strconfenabletrigger'] = 'VocΓͺ tΓͺm certeza que deseja ativar o gatilho "%s" em "%s"?'; + $lang['strconfdisabletrigger'] = 'VocΓͺ tΓͺm certeza que deseja desativar o gatilho "%s" em "%s"?'; + $lang['strtriggerdropped'] = 'Gatilho deletado.'; + $lang['strtriggerdroppedbad'] = 'Falha ao deletar o gatilho.'; + $lang['strtriggerenabled'] = 'Gatilho ativado.'; + $lang['strtriggerenabledbad'] = 'Falha ao ativar o gatilho.'; + $lang['strtriggerdisabled'] = 'Gatilho desativado.'; + $lang['strtriggerdisabledbad'] = 'Falha ao desativar o gatilho.'; + $lang['strtriggeraltered'] = 'Gatilho alterado.'; + $lang['strtriggeralteredbad'] = 'Falha ao alterar o gatilho.'; + $lang['strforeach'] = 'Para cada'; + + // Types + $lang['strtype'] = 'Tipo'; + $lang['strtypes'] = 'Tipos'; + $lang['strshowalltypes'] = 'Exibir todos os tipos'; + $lang['strnotype'] = 'Nenhum tipo encontrado.'; + $lang['strnotypes'] = 'Nenhum tipo encontrado.'; + $lang['strcreatetype'] = 'Criar tipo'; + $lang['strcreatecomptype'] = 'Criar tipo composto'; + $lang['strcreateenumtype'] = 'Criar tipo enumerado'; + $lang['strtypeneedsfield'] = 'VocΓͺ deve informar ao menos um campo.'; + $lang['strtypeneedsvalue'] = 'VocΓͺ deve informar ao menos um valor.'; + $lang['strtypeneedscols'] = 'VocΓͺ deve informar um nΓΊmero vΓ‘lido de campos.'; + $lang['strtypeneedsvals'] = 'VocΓͺ deve informar um nΓΊmero vΓ‘lido de valores.'; + $lang['strinputfn'] = 'Função de entrada'; + $lang['stroutputfn'] = 'Função de saΓ­da'; + $lang['strpassbyval'] = 'Passado por valor?'; + $lang['stralignment'] = 'Alinhamento'; + $lang['strelement'] = 'Elemento'; + $lang['strdelimiter'] = 'Delimitador'; + $lang['strstorage'] = 'Armazenamento'; + $lang['strfield'] = 'Campo'; + $lang['strnumfields'] = 'Num. de campos'; + $lang['strnumvalues'] = 'Num. de valores'; + $lang['strtypeneedsname'] = 'VocΓͺ deve informar um nome para o seu tipo.'; + $lang['strtypeneedslen'] = 'VocΓͺ deve informar o tamanho para o seu tipo.'; + $lang['strtypecreated'] = 'Tipo criado.'; + $lang['strtypecreatedbad'] = 'Falha ao criar o tipo.'; + $lang['strconfdroptype'] = 'VocΓͺ tΓͺm certeza que deseja deletar o tipo "%s"?'; + $lang['strtypedropped'] = 'Tipo deletado.'; + $lang['strtypedroppedbad'] = 'Falha ao deletar o tipo.'; + $lang['strflavor'] = 'Sabor'; + $lang['strbasetype'] = 'Base'; + $lang['strcompositetype'] = 'Composto'; + $lang['strpseudotype'] = 'Pseudo'; + $lang['strenum'] = 'Enum'; + $lang['strenumvalues'] = 'Valores enum'; + + // Schemas + $lang['strschema'] = 'Esquema'; + $lang['strschemas'] = 'Esquemas'; + $lang['strshowallschemas'] = 'Exibir todos os esquemas'; + $lang['strnoschema'] = 'Nenhum esquema encontrado.'; + $lang['strnoschemas'] = 'Nenhum esquema encontrado.'; + $lang['strcreateschema'] = 'Criar esquema'; + $lang['strschemaname'] = 'Nome do esquema'; + $lang['strschemaneedsname'] = 'VocΓͺ deve informar um nome para o seu esquema.'; + $lang['strschemacreated'] = 'Esquema criado.'; + $lang['strschemacreatedbad'] = 'Falha ao criar o esquema'; + $lang['strconfdropschema'] = 'VocΓͺ tΓͺm certeza que deseja deletar o esquema "%s"?'; + $lang['strschemadropped'] = 'Esquema deletado.'; + $lang['strschemadroppedbad'] = 'Falha ao deletar o esquema.'; + $lang['strschemaaltered'] = 'Esquema alterado.'; + $lang['strschemaalteredbad'] = 'Falha ao alterar o esquema.'; + $lang['strsearchpath'] = 'DiretΓ³rio de pesquisa do esquema'; + $lang['strspecifyschematodrop'] = 'VocΓͺ deve informar ao menos um esquema para deletar.'; + + // Reports + + // Domains + $lang['strdomain'] = 'DomΓ­nio'; + $lang['strdomains'] = 'DomΓ­nios'; + $lang['strshowalldomains'] = 'Exibir todos os domΓ­nios'; + $lang['strnodomains'] = 'Nenhum domΓ­nio encontrado.'; + $lang['strcreatedomain'] = 'Criar domΓ­nio'; + $lang['strdomaindropped'] = 'DomΓ­nio deletado.'; + $lang['strdomaindroppedbad'] = 'Falha ao deletar o domΓ­nio.'; + $lang['strconfdropdomain'] = 'VocΓͺ tΓͺm certeza que deseja deletar o domΓ­nio "%s"?'; + $lang['strdomainneedsname'] = 'VocΓͺ deve informar um nome para o seu domΓ­nio.'; + $lang['strdomaincreated'] = 'DomΓ­nio criado.'; + $lang['strdomaincreatedbad'] = 'Falha ao criar o domΓ­nio.'; + $lang['strdomainaltered'] = 'DomΓ­nio alterado.'; + $lang['strdomainalteredbad'] = 'Falha ao alterar o domΓ­nio.'; + + // Operators + $lang['stroperator'] = 'Operador'; + $lang['stroperators'] = 'Operadores'; + $lang['strshowalloperators'] = 'Exibir todos os operadores'; + $lang['strnooperator'] = 'Nenhum operador encontrado.'; + $lang['strnooperators'] = 'Nenhum operador encontrado.'; + $lang['strcreateoperator'] = 'Criar operador'; + $lang['strleftarg'] = 'Tipo de Arg Esquerdo'; + $lang['strrightarg'] = 'Tipo de Arg Direito'; + $lang['strcommutator'] = 'Comutador'; + $lang['strnegator'] = 'Negador'; + $lang['strrestrict'] = 'Restrito'; + $lang['strjoin'] = 'Junção'; + $lang['strhashes'] = 'Misturador'; + $lang['strmerges'] = 'FusΓ£o'; + $lang['strleftsort'] = 'Ordenação esquerda'; + $lang['strrightsort'] = 'Ordenação direita'; + $lang['strlessthan'] = 'Menor que'; + $lang['strgreaterthan'] = 'Maior que'; + $lang['stroperatorneedsname'] = 'VocΓͺ deve informar um nome para o seu operador.'; + $lang['stroperatorcreated'] = 'Operador criado.'; + $lang['stroperatorcreatedbad'] = 'Falha ao criar o operador.'; + $lang['strconfdropoperator'] = 'VocΓͺ tΓͺm certeza que deseja deletar o operador "%s"?'; + $lang['stroperatordropped'] = 'Operador deletado.'; + $lang['stroperatordroppedbad'] = 'Falha ao deletar o operador.'; + + // Casts + $lang['strcasts'] = 'Moldes'; + $lang['strnocasts'] = 'Nenhum molde encontrado.'; + $lang['strsourcetype'] = 'Tipo fonte'; + $lang['strtargettype'] = 'Tipo alvo'; + $lang['strimplicit'] = 'ImplΓ­cito'; + $lang['strinassignment'] = 'Em atribuição'; + $lang['strbinarycompat'] = '(Compatibilidade binΓ‘ria)'; + + // Conversions + $lang['strconversions'] = 'ConversΓ΅es'; + $lang['strnoconversions'] = 'Nenhuma conversΓ£o encontrada.'; + $lang['strsourceencoding'] = 'Codificação fonte'; + $lang['strtargetencoding'] = 'Codificação alvo'; + + // Languages + $lang['strlanguages'] = 'Linguagens'; + $lang['strnolanguages'] = 'Nenhuma linguagem encontrada.'; + $lang['strtrusted'] = 'Confiado'; + + // Info + $lang['strnoinfo'] = 'Nenhuma informação disponΓ­vel.'; + $lang['strreferringtables'] = 'Tabelas de referΓͺncia'; + $lang['strparenttables'] = 'Tabelas pais'; + $lang['strchildtables'] = 'Tabelas filhas'; + + // Aggregates + $lang['straggregate'] = 'Agregação'; + $lang['straggregates'] = 'Agregaçáes'; + $lang['strnoaggregates'] = 'Nenhuma agregação encontrada.'; + $lang['stralltypes'] = '(Todos os tipos)'; + $lang['strcreateaggregate'] = 'Criar agregação'; + $lang['straggrbasetype'] = 'Tipo de dados de entrada'; + $lang['straggrsfunc'] = 'Função de transição de estado'; + $lang['straggrstype'] = 'Tipo de dados para valor de estado'; + $lang['straggrffunc'] = 'Função final'; + $lang['straggrinitcond'] = 'Condição inicial'; + $lang['straggrsortop'] = 'Operador de ordem'; + $lang['strconfdropaggregate'] = 'VocΓͺ tΓͺm certeza que deseja deletar a agregação "%s"?'; + $lang['straggregatedropped'] = 'Agregação deletada.'; + $lang['straggregatedroppedbad'] = 'Falha ao deletar a agregação.'; + $lang['straggraltered'] = 'Agregação alterada.'; + $lang['straggralteredbad'] = 'Falha ao alterar a agregação.'; + $lang['straggrneedsname'] = 'VocΓͺ deve informar um nome para a sua agregação.'; + $lang['straggrneedsbasetype'] = 'VocΓͺ deve informar o tipo de entrada de dados para a agregação.'; + $lang['straggrneedssfunc'] = 'VocΓͺ deve informar o nome da função de transição de estado para a agregação.'; + $lang['straggrneedsstype'] = 'VocΓͺ deve informar o tipo de dados para o valor de estado da agregação.'; + $lang['straggrcreated'] = 'Agregação criada.'; + $lang['straggrcreatedbad'] = 'Falha ao criar a agregação.'; + $lang['straggrshowall'] = 'Exibir todas as agregaçáes'; + + // Operator Classes + $lang['stropclasses'] = 'Classes Op'; + $lang['strnoopclasses'] = 'Nenhuma classe operador encontrada.'; + $lang['straccessmethod'] = 'MΓ©todo de acesso'; + + // Stats and performance + $lang['strrowperf'] = 'Performance de linha'; + $lang['strioperf'] = 'Performance de I/O'; + $lang['stridxrowperf'] = 'Índice de Performance de linha'; + $lang['stridxioperf'] = 'Índice de Performance de I/O'; + $lang['strpercent'] = '%'; + $lang['strsequential'] = 'SeqΓΌΓͺncial'; + $lang['strscan'] = 'Pesquisa'; + $lang['strread'] = 'Leitura'; + $lang['strfetch'] = 'Afetado'; + $lang['strheap'] = 'Pilha'; + $lang['strtoast'] = 'TOAST'; + $lang['strtoastindex'] = 'Índice TOAST'; + $lang['strcache'] = 'Cache'; + $lang['strdisk'] = 'Disco'; + $lang['strrows2'] = 'Linhas'; + + // Tablespaces + $lang['strtablespace'] = 'Tablespace'; + $lang['strtablespaces'] = 'Tablespaces'; + $lang['strshowalltablespaces'] = 'Exibir todos os tablespaces'; + $lang['strnotablespaces'] = 'Nenhum tablespace encontrado.'; + $lang['strcreatetablespace'] = 'Criar tablespace'; + $lang['strlocation'] = 'Localização'; + $lang['strtablespaceneedsname'] = 'VocΓͺ deve informar um nome para o tablespace.'; + $lang['strtablespaceneedsloc'] = 'VocΓͺ deve informar um diretΓ³rio em qual serΓ‘ criado o tablespace.'; + $lang['strtablespacecreated'] = 'Tablespace criado.'; + $lang['strtablespacecreatedbad'] = 'Falha ao criar o tablespace.'; + $lang['strconfdroptablespace'] = 'VocΓͺ tΓͺm certeza que deseja deletar o tablespace "%s"?'; + $lang['strtablespacedropped'] = 'Tablespace deletado.'; + $lang['strtablespacedroppedbad'] = 'Falha ao deletar o tablespace.'; + $lang['strtablespacealtered'] = 'Tablespace alterado.'; + $lang['strtablespacealteredbad'] = 'Falha ao alterar o tablespace.'; + + // Miscellaneous + $lang['strtopbar'] = '%s rodando em %s:%s -- VocΓͺ estΓ‘ logado como usuΓ‘rio "%s"'; + $lang['strtimefmt'] = 'jS M, Y g:iA'; + $lang['strhelp'] = 'Ajuda'; + $lang['strhelpicon'] = '?'; + $lang['strhelppagebrowser'] = 'Navegar na pΓ‘gina de ajuda'; + $lang['strselecthelppage'] = 'Selecione uma pΓ‘gina de ajuda'; + $lang['strinvalidhelppage'] = 'PΓ‘gina de ajuda invΓ‘lida.'; + $lang['strlogintitle'] = 'Conectado em %s'; + $lang['strlogoutmsg'] = 'Desconectado de %s'; + $lang['strloading'] = 'Carregando...'; + $lang['strerrorloading'] = 'Erro no carregamento'; + $lang['strclicktoreload'] = 'Clique para recarregar'; + + // Autovacuum + $lang['strautovacuum'] = 'VΓ‘cuo automΓ‘tico'; + $lang['strturnedon'] = 'Ligado'; + $lang['strturnedoff'] = 'Desligado'; + $lang['strenabled'] = 'Ativado'; + $lang['strnovacuumconf'] = 'Nenhuma configuração de vΓ‘cuo automΓ‘tico encontrada.'; + $lang['strvacuumbasethreshold'] = 'VΓ‘cuo a partir do ponto inicial da base'; + $lang['strvacuumscalefactor'] = 'VΓ‘cuo por fator de escala'; + $lang['stranalybasethreshold'] = 'Analisar a partir do ponto inicial da base'; + $lang['stranalyzescalefactor'] = 'Analisar por fator de escala'; + $lang['strvacuumcostdelay'] = 'Custo de retardo do vΓ‘cuo'; + $lang['strvacuumcostlimit'] = 'Custo mΓ‘ximo do vΓ‘cuo'; + $lang['strvacuumpertable'] = 'Configuração de vΓ‘cuo automΓ‘tico por tabela'; + $lang['straddvacuumtable'] = 'Adicionar configuração de vΓ‘cuo automΓ‘tico para a tabela'; + $lang['streditvacuumtable'] = 'Editar a configuração de vΓ‘cuo automΓ‘tico para a tabela %s'; + $lang['strdelvacuumtable'] = 'Deletar a configuração de vΓ‘cuo automΓ‘tico para a tabela %s ?'; + $lang['strvacuumtablereset'] = 'Configuração de vΓ‘cuo automΓ‘tico para a tabela %s redefinida para os valores padrΓ£o'; + $lang['strdelvacuumtablefail'] = 'Falha ao remover a configuração de vΓ‘cuo automΓ‘tico para a tabela %s'; + $lang['strsetvacuumtablesaved'] = 'Configuração de vΓ‘cuo automΓ‘tico para a tabela %s salva.'; + $lang['strsetvacuumtablefail'] = 'Configuração de vΓ‘cuo automΓ‘tico para a tabela %s falhou.'; + $lang['strspecifydelvacuumtable'] = 'VocΓͺ deve especificar a tabela que deseja remover os parΓ’metros de vΓ‘cuo automΓ‘tico.'; + $lang['strspecifyeditvacuumtable'] = 'VocΓͺ deve especificar a tabela que deseja editar os parΓ’metros de vΓ‘cuo automΓ‘tico.'; + $lang['strnotdefaultinred'] = 'Valores nΓ£o padrΓ£o estΓ£o em vermelho.'; + + // Table-level Locks + $lang['strlocks'] = 'Travas'; + $lang['strtransaction'] = 'ID de transação'; + $lang['strvirtualtransaction'] = 'ID de transação virtual'; + $lang['strprocessid'] = 'ID do processo'; + $lang['strmode'] = 'Modo de trava'; + $lang['strislockheld'] = 'A trava prendeu?'; + + // Prepared transactions + $lang['strpreparedxacts'] = 'Transaçáes preparadas'; + $lang['strxactid'] = 'ID da transação'; + $lang['strgid'] = 'ID global'; + + // Fulltext search + $lang['strfulltext'] = 'Busca por Texto Completo'; + $lang['strftsconfig'] = 'Configuração BTC'; + $lang['strftsconfigs'] = 'Configuraçáes'; + $lang['strftscreateconfig'] = 'Criar uma configuração BTC'; + $lang['strftscreatedict'] = 'Criar um dicionΓ‘rio'; + $lang['strftscreatedicttemplate'] = 'Criar um modelo de dicionΓ‘rio'; + $lang['strftscreateparser'] = 'Criar parser'; + $lang['strftsnoconfigs'] = 'Nenhuma configuração BTC encontrada.'; + $lang['strftsconfigdropped'] = 'Configuração BTC eliminada.'; + $lang['strftsconfigdroppedbad'] = 'Falha ao eliminar da configuração BTC.'; + $lang['strconfdropftsconfig'] = 'Deseja eliminar a configuração BTC "%s"?'; + $lang['strconfdropftsdict'] = 'Deseja eliminar o dicionΓ‘rio BTC "%s"?'; + $lang['strconfdropftsmapping'] = 'Deseja eliminar o mapeamento "%s" da configuração BTC "%s"?'; + $lang['strftstemplate'] = 'Modelo'; + $lang['strftsparser'] = 'Parser'; + $lang['strftsconfigneedsname'] = 'Informe o nome para a sua configuração BTC.'; + $lang['strftsconfigcreated'] = 'Configuração BTC criada.'; + $lang['strftsconfigcreatedbad'] = 'Falha ao criar a configuração BTC.'; + $lang['strftsmapping'] = 'Mapeamento'; + $lang['strftsdicts'] = 'DicionΓ‘rios'; + $lang['strftsdict'] = 'DicionΓ‘rio'; + $lang['strftsemptymap'] = 'Mapa de configuração BTC vazio.'; + $lang['strftsconfigaltered'] = 'Configuração BTC alterada.'; + $lang['strftsconfigalteredbad'] = 'Falha ao alterar a configuração BTC.'; + $lang['strftsconfigmap'] = 'Mapa de configuração BTC'; + $lang['strftsparsers'] = 'Parsers BTC'; + $lang['strftsnoparsers'] = 'Nenhum parser BTC disponΓ­vel.'; + $lang['strftsnodicts'] = 'Nenhum dicionΓ‘rio BTC disponΓ­vel.'; + $lang['strftsdictcreated'] = 'DicionΓ‘rio BTC criado.'; + $lang['strftsdictcreatedbad'] = 'Falha ao criar o dicionΓ‘rio BTC.'; + $lang['strftslexize'] = 'Lexize'; + $lang['strftsinit'] = 'Inicializar'; + $lang['strftsoptionsvalues'] = 'Opçáes e valores'; + $lang['strftsdictneedsname'] = 'Informe o nome para o dicionΓ‘rio BTC.'; + $lang['strftsdictdropped'] = 'DicionΓ‘rio BTC eliminado.'; + $lang['strftsdictdroppedbad'] = 'Falha ao eliminar o dicionΓ‘rio BTC.'; + $lang['strftsdictaltered'] = 'DicionΓ‘rio BTC alterado.'; + $lang['strftsdictalteredbad'] = 'Falha ao alterar o dicinΓ‘rio BTC.'; + $lang['strftsaddmapping'] = 'Adicionar novo mapeamento'; + $lang['strftsspecifymappingtodrop'] = 'Informe ao menos um mapeamento para eliminar.'; + $lang['strftsspecifyconfigtoalter'] = 'Informe uma configuração BTC para alterar'; + $lang['strftsmappingdropped'] = 'Mapeamento BTC eliminado.'; + $lang['strftsmappingdroppedbad'] = 'Falha ao remover o mapeamento BTC.'; + $lang['strftsnodictionaries'] = 'Nenhum dicionΓ‘rio encontrado.'; + $lang['strftsmappingaltered'] = 'Mapeamento BTC alterado.'; + $lang['strftsmappingalteredbad'] = 'Falha ao alterar o mapeamento BTC.'; + $lang['strftsmappingadded'] = 'Mapeamento BTC adicionado.'; + $lang['strftsmappingaddedbad'] = 'Falha ao adicionar o mapeamento BTC.'; + $lang['strftstabconfigs'] = 'Configuraçáes'; + $lang['strftstabdicts'] = 'DicionΓ‘rios'; + $lang['strftstabparsers'] = 'Parsers'; + $lang['strftscantparsercopy'] = 'NΓ£o Γ© possΓ­vel especificar ambos parser e modelo durante a criação da configuração de busca de texto.'; +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/portuguese-pt.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/portuguese-pt.php new file mode 100644 index 00000000..01b12a41 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/portuguese-pt.php @@ -0,0 +1,608 @@ +>'; +$lang['strtrue'] = 'VERDADEIRO'; +$lang['strfalse'] = 'FALSO'; +$lang['strcolumn'] = 'Coluna'; +$lang['strobjects'] = 'objecto(s)'; +$lang['strclustered'] = 'Conjunto?'; +$lang['strseparator'] = ': '; +$lang['strexplain'] = 'Explicação'; +$lang['strexplainanalyze'] = 'Explicação de AnΓ‘lise'; +$lang['strfind'] = 'Procurar'; +$lang['stroptions'] = 'Opçáes'; +$lang['strrefresh'] = 'Actualizar'; +$lang['strdownload'] = 'Descarreguar'; +$lang['strdownloadgzipped'] = 'Descarregar comprimido com gzip'; +$lang['strinfo'] = 'Informação'; +$lang['stroids'] = 'OIDs'; +$lang['stradvanced'] = 'AvanΓ§ado'; +$lang['strvariables'] = 'VariΓ‘veis'; +$lang['strprocess'] = 'Processo'; +$lang['strprocesses'] = 'Processos'; +$lang['strsetting'] = 'Configuraçáes'; +$lang['streditsql'] = 'Editar SQL'; +$lang['strruntime'] = 'Tempo total decorrido: %s ms'; +$lang['strpaginate'] = 'Paginar resultados'; +$lang['struploadscript'] = 'ou upload um script SQL:'; +$lang['strstarttime'] = 'Hora de inΓ­cio'; +$lang['strfile'] = 'Ficheiro'; +$lang['strfileimported'] = 'Ficheiro importado.'; +$lang['strphpversionnotsupported'] = 'VersΓ£o do PHP nΓ£o Γ© suportada. Por favor actualize para a versΓ£o %s ou superior.'; +$lang['strpostgresqlversionnotsupported'] = 'VersΓ£o do PostgreSQL nΓ£o Γ© suportada. Por favor actualize para a versΓ£o %s ou superior.'; +$lang['strnoobjects'] = 'NΓ£o foram escontrados objectos.'; +$lang['strrownotunique'] = 'NΓ£o existe identificador ΓΊnico para esta linha.'; +$lang['strnouploads'] = 'Upload de ficheiros indisponΓ­vel.'; +$lang['strimporterror'] = 'Erro na importação.'; +$lang['strimporterrorline'] = 'Erro ao importar na linha %s.'; +$lang['strinsertandrepeat'] = 'Inserir & Repetir'; +$lang['strnumcols'] = 'NΓΊmero de colunas'; +$lang['strcolneedsname'] = 'Tem de definir um nome para a coluna.'; +$lang['strselectallfields'] = 'Seleccione todos os campos'; +$lang['strselectunary'] = 'Operadores unΓ‘rios nΓ£o podem ter valores.'; +$lang['strtablealtered'] = 'Tabela alterada.'; +$lang['strtablealteredbad'] = 'Alteração da Tabela falhou.'; +$lang['strstructureonly'] = 'SΓ³ Estrutura'; +$lang['strstructureanddata'] = 'Estrutura e dados'; +$lang['strtabbed'] = 'Tabulado'; +$lang['strauto'] = 'Auto'; +$lang['strconfvacuumtable'] = 'Tem a certeza que pretende aspirar "%s"?'; +$lang['strestimatedrowcount'] = 'Contagem de linhas Estimada'; +$lang['strsessiondefaults'] = 'Configuraçáes padrΓ£o da sessΓ£o'; +$lang['struserneedsname'] = 'Tem de dar um nome ao seu ΓΊtilizador.'; +$lang['strnogroup'] = 'Grupo nΓ£o encontrado.'; +$lang['strcreategroup'] = 'Criar grupo'; +$lang['straddmember'] = 'Adicionar membro'; +$lang['strmemberadded'] = 'Membro adicionado.'; +$lang['strmemberaddedbad'] = 'Falha ao adicionar Membro.'; +$lang['strdropmember'] = 'Retirar membro'; +$lang['strconfdropmember'] = 'Tem a certeza que pretende retirar o membro "%s" do grupo "%s"?'; +$lang['strmemberdropped'] = 'Membro retirado.'; +$lang['strmemberdroppedbad'] = 'Falha ao retirar membro.'; +$lang['strgrantor'] = 'Grantor'; +$lang['strasterisk'] = '*'; +$lang['strreindexgood'] = 'Reindexação completa.'; +$lang['strreindexbad'] = 'Falha na Reindexação.'; +$lang['strfull'] = 'Cheio'; +$lang['strfreeze'] = 'Congelado'; +$lang['strforce'] = 'ForΓ§ar'; +$lang['strsignalsent'] = 'Sinal enviado.'; +$lang['strsignalsentbad'] = 'Falha ao enviar sinal.'; +$lang['strallobjects'] = 'Todos os objectos'; +$lang['strviewneedsfields'] = 'Tem de especΓ­ficar a coluna que pretende seleccionar para a sua vista.'; +$lang['strviewlink'] = 'ligar chaves'; +$lang['strviewconditions'] = 'Condiçáes Adicionais'; +$lang['strcreateviewwiz'] = 'Criar vista com assistente'; +$lang['strsequencereset'] = 'Limpar sequΓͺncia.'; +$lang['strsequenceresetbad'] = 'Falha ao limpar sequΓͺncia.'; +$lang['strindex'] = 'Index'; +$lang['strconfcluster'] = 'Tem a certeza que pretende conjugar "%s"?'; +$lang['strclusteredgood'] = 'Conjugação completa.'; +$lang['strclusteredbad'] = 'Falha ao conjugar.'; +$lang['strcreateplfunction'] = 'Criar função Create SQL/PL'; +$lang['strcreateinternalfunction'] = 'Criar função interna'; +$lang['strcreatecfunction'] = 'Criar função em C'; +$lang['strobjectfile'] = 'Ficheiro Objecto'; +$lang['strlinksymbol'] = 'Ligar SΓ­mbolo'; +$lang['strtriggeraltered'] = 'Trigger Alterado.'; +$lang['strtriggeralteredbad'] = 'Falha ao alterar Trigger.'; +$lang['strcreatecomptype'] = 'Criar tipo composto'; +$lang['strtypeneedsfield'] = 'Tem de especΓ­ficar pelo menos um campo.'; +$lang['strtypeneedscols'] = 'Tem de especΓ­ficar um nΓΊmero vΓ‘lido de campos.'; +$lang['strflavor'] = 'Sabor'; +$lang['strbasetype'] = 'Base'; +$lang['strcompositetype'] = 'CompΓ΄r'; +$lang['strpseudotype'] = 'Pseudo'; +$lang['strschemaaltered'] = 'Esquema Alterado.'; +$lang['strschemaalteredbad'] = 'Falha ao alterar o esquema.'; +$lang['strsearchpath'] = 'Caminho de pesquisa no esquema'; +$lang['strdomain'] = 'DomΓ­nio'; +$lang['strdomains'] = 'DomΓ­nios'; +$lang['strshowalldomains'] = 'Lista todos os domΓ­nios'; +$lang['strnodomains'] = 'NΓ£o foram encontrados domΓ­nios.'; +$lang['strcreatedomain'] = 'Criar domΓ­nio'; +$lang['strdomaindropped'] = 'Eliminar domΓ­nio.'; +$lang['strdomaindroppedbad'] = 'Falha ao eliminar o domΓ­nio.'; +$lang['strconfdropdomain'] = 'Tem a certeza que pretende eliminar o dominio "%s"?'; +$lang['strdomainneedsname'] = 'Tem de especΓ­ficar um nome para o seu domΓ­nio.'; +$lang['strdomaincreated'] = 'DomΓ­nio criado.'; +$lang['strdomaincreatedbad'] = 'Falha ao criar domΓ­nio.'; +$lang['strdomainaltered'] = 'Alterar domΓ­nio.'; +$lang['strdomainalteredbad'] = 'Falha ao alterar domΓ­nio.'; +$lang['stroperator'] = 'Operador'; +$lang['strshowalloperators'] = 'Lista todos os operadores'; +$lang['strnooperator'] = 'NΓ£o foi encontrado o operador.'; +$lang['strnooperators'] = 'NΓ£o foram encontrados operadores.'; +$lang['strcreateoperator'] = 'Criar operador'; +$lang['strleftarg'] = 'Tipo de ARGumento esquerdo'; +$lang['strrightarg'] = 'Tipo de ARGumento direito'; +$lang['strcommutator'] = 'Comutador'; +$lang['strnegator'] = 'Negador'; +$lang['strrestrict'] = 'Restrito'; +$lang['strjoin'] = 'Juntar'; +$lang['strhashes'] = 'ReferΓͺncias'; +$lang['strmerges'] = 'Mesclrar'; +$lang['strleftsort'] = 'Ordenação esquerda'; +$lang['strrightsort'] = 'Ordenação direita'; +$lang['strlessthan'] = 'Menor que'; +$lang['strgreaterthan'] = 'Maior que'; +$lang['stroperatorneedsname'] = 'Tem de especΓ­ficar um nome para o operador.'; +$lang['stroperatorcreated'] = 'Operador criado'; +$lang['stroperatorcreatedbad'] = 'Falha ao criar operador.'; +$lang['strconfdropoperator'] = 'Tem a certeza que pretende eliminar o operador "%s"?'; +$lang['stroperatordropped'] = 'Operador eliminado.'; +$lang['stroperatordroppedbad'] = 'Falha ao eliminar o operador.'; +$lang['strcasts'] = 'Molde'; +$lang['strnocasts'] = 'NΓ£o foram encontrador moldes.'; +$lang['strsourcetype'] = 'Tipo de fonte'; +$lang['strtargettype'] = 'Tipo de alvo'; +$lang['strimplicit'] = 'Implicito'; +$lang['strinassignment'] = 'Em assignamento'; +$lang['strbinarycompat'] = '(Binario compativΓ©l)'; +$lang['strconversions'] = 'ConversΓ΅es'; +$lang['strnoconversions'] = 'NΓ£o foram encontradas conversΓ΅es.'; +$lang['strsourceencoding'] = 'Codificação da fonte'; +$lang['strtargetencoding'] = 'Codificação do alvo'; +$lang['strlanguages'] = 'LΓ­nguas'; +$lang['strnolanguages'] = 'NΓ£o foram encontradas lΓ­nguas.'; +$lang['strtrusted'] = 'Confiado'; +$lang['strnoinfo'] = 'Informação indisponΓ­vel.'; +$lang['strreferringtables'] = 'Tabelas de referΓͺncia'; +$lang['strparenttables'] = 'Tabelas pai'; +$lang['strchildtables'] = 'Tabelas filho'; +$lang['strnoaggregates'] = 'NΓ£o foram encontrados agregados.'; +$lang['stralltypes'] = '(Todos os tipos)'; +$lang['stropclasses'] = 'Classes Op'; +$lang['strnoopclasses'] = 'NΓ£o foram encontrados operadores de classes.'; +$lang['straccessmethod'] = 'MΓ©todo de acesso'; +$lang['strrowperf'] = 'Performance das linhas'; +$lang['strioperf'] = 'Performance de E/S'; +$lang['stridxrowperf'] = 'Performance de indexação de linhas'; +$lang['stridxioperf'] = 'Performance em indexação E/S'; +$lang['strpercent'] = '%'; +$lang['strsequential'] = 'SequΓͺncial'; +$lang['strscan'] = 'Pesquisar'; +$lang['strread'] = 'LΓͺr'; +$lang['strfetch'] = 'Descarregar'; +$lang['strheap'] = 'Fila'; +$lang['strtoast'] = 'QUEIMAR'; +$lang['strtoastindex'] = 'QUEIMAR Index'; +$lang['strcache'] = 'Cache'; +$lang['strdisk'] = 'Disco'; +$lang['strrows2'] = 'Linhas'; +$lang['strtablespace'] = 'EspaΓ§o de Tabela'; +$lang['strtablespaces'] = 'EspaΓ§os de Tabela'; +$lang['strshowalltablespaces'] = 'Lista todos os espaΓ§os de tabela'; +$lang['strnotablespaces'] = 'NΓ£o foram encontrados espaΓ§os de tabela.'; +$lang['strcreatetablespace'] = 'Criar espaΓ§o de tabela'; +$lang['strlocation'] = 'Localização'; +$lang['strtablespaceneedsname'] = 'Tem de especΓ­ficar um nome para o espaΓ§o de tabela.'; +$lang['strtablespaceneedsloc'] = 'Tem de especΓ­ficar um directΓ³rio no qual irΓ‘ criar o espaΓ§o de tabela.'; +$lang['strtablespacecreated'] = 'EspaΓ§o de Tabela criado.'; +$lang['strtablespacecreatedbad'] = 'Falha ao criar espaΓ§o de tabela.'; +$lang['strconfdroptablespace'] = 'Tem a certeza que pretende eliminar o espaΓ§o de tabela "%s"?'; +$lang['strtablespacedropped'] = 'EspaΓ§o de tabela eliminado.'; +$lang['strtablespacedroppedbad'] = 'Falha ao eliminar o espaΓ§o de tabela.'; +$lang['strtablespacealtered'] = 'EspaΓ§o de tabela alterado.'; +$lang['strtablespacealteredbad'] = 'Alteração do EspaΓ§amento de Tabela falhou.'; +$lang['strhelp'] = 'Ajuda'; +$lang['strhelpicon'] = '?'; + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/romanian.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/romanian.php new file mode 100644 index 00000000..667e9326 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/romanian.php @@ -0,0 +1,758 @@ +'; + $lang['strfirst'] = '<< Început'; + $lang['strlast'] = 'SfΓ’rşit >>'; + $lang['strfailed'] = 'Eşuat'; + $lang['strcreate'] = 'Creare'; + $lang['strcreated'] = 'Creat'; + $lang['strcomment'] = 'Comentariu'; + $lang['strlength'] = 'Lungime'; + $lang['strdefault'] = 'Implicit'; + $lang['stralter'] = 'Modificare'; + $lang['strok'] = 'OK'; + $lang['strcancel'] = 'Anulare'; + $lang['strac'] = 'Activare Auto-completare'; + $lang['strsave'] = 'Salvare'; + $lang['strreset'] = 'ReiniΕ£ializare'; + $lang['strinsert'] = 'Inserare'; + $lang['strselect'] = 'Selectare'; + $lang['strdelete'] = 'Ştergere'; + $lang['strupdate'] = 'Actualizare'; + $lang['strreferences'] = 'ReferinΕ£e'; + $lang['stryes'] = 'Da'; + $lang['strno'] = 'Nu'; + $lang['strtrue'] = 'TRUE'; + $lang['strfalse'] = 'FALSE'; + $lang['stredit'] = 'Editare'; + $lang['strcolumn'] = 'ColoanΔƒ'; + $lang['strcolumns'] = 'Coloane'; + $lang['strrows'] = 'rΓ’nd(uri)'; + $lang['strrowsaff'] = 'rΓ’nd(uri) afectate.'; + $lang['strobjects'] = 'obiect(e)'; + $lang['strback'] = 'Înapoi'; + $lang['strqueryresults'] = 'Rezultatele interogΔƒrii'; + $lang['strshow'] = 'Afişare'; + $lang['strempty'] = 'Golire'; + $lang['strlanguage'] = 'LimbΔƒ'; + $lang['strencoding'] = 'Codificare'; + $lang['strvalue'] = 'Valoare'; + $lang['strunique'] = 'Unic'; + $lang['strprimary'] = 'Primar'; + $lang['strexport'] = 'Export'; + $lang['strimport'] = 'Import'; + $lang['strallowednulls'] = 'Caractere NULL permise'; + $lang['strbackslashn'] = '\N'; + $lang['stremptystring'] = 'Şir/cΓ’mp gol'; + $lang['strsql'] = 'SQL'; + $lang['stradmin'] = 'Administrare'; + $lang['strvacuum'] = 'Vacuum'; + $lang['stranalyze'] = 'AnalizΔƒ'; + $lang['strclusterindex'] = 'Grupare'; + $lang['strclustered'] = 'Grupat?'; + $lang['strreindex'] = 'Re-indexare'; + $lang['strrun'] = 'Executare'; + $lang['stradd'] = 'AdΔƒugare'; + $lang['strevent'] = 'Eveniment'; + $lang['strwhere'] = 'În schimb'; + $lang['strinstead'] = 'ExecutΔƒ Γn schimb'; + $lang['strwhen'] = 'CΓ’nd'; + $lang['strformat'] = 'Format'; + $lang['strdata'] = 'DatΔƒ'; + $lang['strconfirm'] = 'Confirmare'; + $lang['strexpression'] = 'Expresie'; + $lang['strellipsis'] = '...'; + $lang['strseparator'] = ': '; + $lang['strexpand'] = 'Expandare'; + $lang['strcollapse'] = 'RestrΓ’ngere'; + $lang['strexplain'] = 'Explicare'; + $lang['strexplainanalyze'] = 'Explicare & AnalizΔƒ'; + $lang['strfind'] = 'CΔƒutare'; + $lang['stroptions'] = 'OpΕ£iuni'; + $lang['strrefresh'] = 'ReΓmprospΔƒtare'; + $lang['strdownload'] = 'Transfer'; + $lang['strdownloadgzipped'] = 'Transfer comprimat cu gzip'; + $lang['strinfo'] = 'Info'; + $lang['stroids'] = 'OID-uri'; + $lang['stradvanced'] = 'Avansat'; + $lang['strvariables'] = 'Variabile'; + $lang['strprocess'] = 'Proces'; + $lang['strprocesses'] = 'Procese'; + $lang['strsetting'] = 'Valoare'; + $lang['streditsql'] = 'Editare SQL'; + $lang['strruntime'] = 'Timp total de rulare:%s ms'; + $lang['strpaginate'] = 'Paginare rezultate'; + $lang['struploadscript'] = 'sau ΓncΔƒrcare script SQL:'; + $lang['strstarttime'] = 'Timp start'; + $lang['strfile'] = 'Fişier'; + $lang['strfileimported'] = 'Fişier importat'; + $lang['strtrycred'] = 'FolosiΕ£i aceste acreditΔƒri pentru toate serverele'; + $lang['strexecute'] = 'Executare'; + + // Database sizes + $lang['strsize'] = 'Dimensiune'; + $lang['strbytes'] = 'octeΕ£i'; + $lang['strkb'] = 'kB'; + $lang['strmb'] = 'MB'; + $lang['strgb'] = 'GB'; + $lang['strtb'] = 'TB'; + + // Error handling + $lang['strnoframes'] = 'AceastΔƒ aplicaΕ£ie funcΕ£ioneazΔƒ cel mai bine Γntr-un browser ce suportΔƒ frame-uri , dar poate fi folositΔƒ şi fΔƒrΔƒ frame-uri, urmΓ’nd legΔƒtura de mai jos.'; + $lang['strnoframeslink'] = 'FΔƒrΔƒ frame-uri'; + $lang['strbadconfig'] = 'Fişierul config.inc.php este Γnvechit. Trebuie sΔƒ-l re-generaΕ£i folosind noul fişier config.inc.php-dist.'; + $lang['strnotloaded'] = 'Instalarea de PHP nu suportΔƒ PostgreSQL. Trebuie sΔƒ re-compilaΕ£i PHP folosind opΕ£iunea --with-pgsql la configurare.'; + $lang['strpostgresqlversionnotsupported'] = 'Versiune de PostgreSQL ne-suportatΔƒ. ActualizaΕ£i la versiunea %s sau ulterioarΔƒ.'; + $lang['strbadschema'] = 'SchemΔƒ specificatΔƒ incorectΔƒ.'; + $lang['strbadencoding'] = 'Imposibil de setat codificarea client Γn baza de date.'; + $lang['strsqlerror'] = 'Eroare SQL:'; + $lang['strinstatement'] = 'În instrucΕ£iunea:'; + $lang['strinvalidparam'] = 'Parametrii scriptului sunt incorecΕ£i.'; + $lang['strnodata'] = 'Nici un rΓ’nd gΔƒsit.'; + $lang['strnoobjects'] = 'Nici un obiect gΔƒsit.'; + $lang['strrownotunique'] = 'Nici un identificator unic pentru acest rΓ’nd.'; + $lang['strnouploads'] = 'ÎncΔƒrcarea de fişiere este dezactivatΔƒ.'; + $lang['strimporterror'] = 'Eroare la importare.'; + $lang['strimporterror-fileformat'] = 'Eroare la importare: Imposibil de determinat Γn mod automat formatul fişierului.'; + $lang['strimporterrorline'] = 'Eroare la importare pe linia %s.'; + $lang['strimporterrorline-badcolumnnum'] = 'Eroare la importare pe linia %s: Linia nu are numΔƒrul corect de coloane.'; + $lang['strimporterror-uploadedfile'] = 'Eroare la importare: Fişierul nu a putut fi ΓncΔƒrcat pe server'; + $lang['strcannotdumponwindows'] = 'DescΔƒrcarea de tabele complexe şi nume de scheme Γn Windows nu este suportatΔƒ.'; + + // Tables + $lang['strtable'] = 'TabelΔƒ'; + $lang['strtables'] = 'Tabele'; + $lang['strshowalltables'] = 'Afişare toate tabelele'; + $lang['strnotables'] = 'Nici o tabelΔƒ gΔƒsitΔƒ.'; + $lang['strnotable'] = 'Nici o tabelΔƒ gΔƒsitΔƒ.'; + $lang['strcreatetable'] = 'Creare tabelΔƒ.'; + $lang['strtablename'] = 'Nume tabelΔƒ'; + $lang['strtableneedsname'] = 'SpecificaΕ£i un nume pentru tabelΔƒ.'; + $lang['strtableneedsfield'] = 'SpecificaΕ£i cel puΕ£in un cΓ’mp.'; + $lang['strtableneedscols'] = 'SpecificaΕ£i un numΔƒr corect de coloane.'; + $lang['strtablecreated'] = 'TabelΔƒ creatΔƒ.'; + $lang['strtablecreatedbad'] = 'Creare tabelΔƒ eşuatΔƒ.'; + $lang['strconfdroptable'] = 'Sigur ştergeΕ£i tabela "%s"?'; + $lang['strtabledropped'] = 'TabelΔƒ ştearsΔƒ.'; + $lang['strtabledroppedbad'] = 'Ştergere tabelΔƒ eşuatΔƒ.'; + $lang['strconfemptytable'] = 'Sigur goliΕ£i tabela "%s"?'; + $lang['strtableemptied'] = 'TabelΔƒ golitΔƒ.'; + $lang['strtableemptiedbad'] = 'Golire tabelΔƒ eşuatΔƒ.'; + $lang['strinsertrow'] = 'Inserare rΓ’nd'; + $lang['strrowinserted'] = 'RΓ’nd inserat'; + $lang['strrowinsertedbad'] = 'Inserare rΓ’nd eşuatΔƒ.'; + $lang['strrowduplicate'] = 'Inserare de rΓ’nd eşuatΔƒ, s-a Γncercat inserarea unui duplicat.'; + $lang['streditrow'] = 'Editare rΓ’nd'; + $lang['strrowupdated'] = 'RΓ’nd actualizat.'; + $lang['strrowupdatedbad'] = 'Actualizare rΓ’nd eşuatΔƒ.'; + $lang['strdeleterow'] = 'Ştergere rΓ’nd.'; + $lang['strconfdeleterow'] = 'Sigur ştergeΕ£i acest rΓ’nd?'; + $lang['strrowdeleted'] = 'RΓ’nd şters.'; + $lang['strrowdeletedbad'] = 'Ştergere rΓ’nd eşuatΔƒ.'; + $lang['strinsertandrepeat'] = 'Inserare & Repetare'; + $lang['strnumcols'] = 'NumΔƒr de coloane'; + $lang['strcolneedsname'] = 'SpecificaΕ£i un nume pentru coloanΔƒ'; + $lang['strselectallfields'] = 'Selectare toate cΓ’mpurile'; + $lang['strselectneedscol'] = 'AfişaΕ£i cel puΕ£in o coloanΔƒ.'; + $lang['strselectunary'] = 'Operatorii unari nu pot avea valori.'; + $lang['straltercolumn'] = 'Modificare coloanΔƒ'; + $lang['strcolumnaltered'] = 'ColoanΔƒ modificatΔƒ.'; + $lang['strcolumnalteredbad'] = 'Modificare coloanΔƒ eşuatΔƒ.'; + $lang['strconfdropcolumn'] = 'Sigur ştergeΕ£i coloana "%s" din tabela "%s"?'; + $lang['strcolumndropped'] = 'ColoanΔƒ ştearsΔƒ.'; + $lang['strcolumndroppedbad'] = 'Ştergere coloanΔƒ eşuatΔƒ.'; + $lang['straddcolumn'] = 'AdΔƒugare coloanΔƒ'; + $lang['strcolumnadded'] = 'ColoanΔƒ adΔƒugatΔƒ.'; + $lang['strcolumnaddedbad'] = 'AdΔƒugare coloanΔƒ eşuatΔƒ.'; + $lang['strcascade'] = 'CASCADE'; + $lang['strtablealtered'] = 'TabelΔƒ modificatΔƒ.'; + $lang['strtablealteredbad'] = 'Modificare tabelΔƒ eşuatΔƒ.'; + $lang['strdataonly'] = 'Numai date'; + $lang['strstructureonly'] = 'Numai structurΔƒ'; + $lang['strstructureanddata'] = 'StructurΔƒ şi date'; + $lang['strtabbed'] = 'Cu tab-uri'; + $lang['strauto'] = 'Automat'; + $lang['strconfvacuumtable'] = 'Sigur executaΕ£i "vacuum" pe "%s"?'; + $lang['strestimatedrowcount'] = 'NumΔƒr estimat de rΓ’nduri'; + + // Columns + $lang['strcolprop'] = 'ProprietΔƒΕ£i coloanΔƒ'; + + // Users + $lang['struser'] = 'Utilizator'; + $lang['strusers'] = 'Utilizatori'; + $lang['strusername'] = 'Nume utilizator'; + $lang['strpassword'] = 'ParolΔƒ'; + $lang['strsuper'] = 'Utilizator privilegiat?'; + $lang['strcreatedb'] = 'CreeazΔƒ BD?'; + $lang['strexpires'] = 'ExpirΔƒ la'; + $lang['strsessiondefaults'] = 'Valori implicite pentru sesiune'; + $lang['strnousers'] = 'Nici un utilizator gΔƒsit.'; + $lang['struserupdated'] = 'Utilizator actualizat.'; + $lang['struserupdatedbad'] = 'Actualizare utilizator eşuatΔƒ.'; + $lang['strshowallusers'] = 'Afişare toΕ£i utilizatorii'; + $lang['strcreateuser'] = 'Creare utilizator'; + $lang['struserneedsname'] = 'SpecificaΕ£i un nume pentru utilizator.'; + $lang['strusercreated'] = 'Utilizator creat.'; + $lang['strusercreatedbad'] = 'Creare utilizator eşuatΔƒ.'; + $lang['strconfdropuser'] = 'Sigur ştergeΕ£i utilizatorul "%s"?'; + $lang['struserdropped'] = 'Utilizator şters.'; + $lang['struserdroppedbad'] = 'Ştergere utilizator eşuatΔƒ.'; + $lang['straccount'] = 'Cont'; + $lang['strchangepassword'] = 'Schimbare parolΔƒ'; + $lang['strpasswordchanged'] = 'ParolΔƒ schimbatΔƒ.'; + $lang['strpasswordchangedbad'] = 'Schimbare parolΔƒ eşuatΔƒ.'; + $lang['strpasswordshort'] = 'Parola este prea scurtΔƒ.'; + $lang['strpasswordconfirm'] = 'Parola nu se confirmΔƒ.'; + + // Groups + $lang['strgroup'] = 'Grup'; + $lang['strgroups'] = 'Grupuri'; + $lang['strshowallgroups'] = 'Afişare toate grupurile'; + $lang['strnogroup'] = 'Grup negΔƒsit.'; + $lang['strnogroups'] = 'Nici un grup gΔƒsit.'; + $lang['strcreategroup'] = 'Creare grup'; + $lang['strgroupneedsname'] = 'SpecificaΕ£i un nume pentru grup.'; + $lang['strgroupcreated'] = 'Grup creat.'; + $lang['strgroupcreatedbad'] = 'Creare grup eşuatΔƒ.'; + $lang['strconfdropgroup'] = 'Sigur ştergeΕ£i grupul "%s"?'; + $lang['strgroupdropped'] = 'Grup şters.'; + $lang['strgroupdroppedbad'] = 'Ştergere grup eşuatΔƒ.'; + $lang['strmembers'] = 'Membri'; + $lang['strmemberof'] = 'Membru al'; + $lang['stradminmembers'] = 'Membri administratori'; + $lang['straddmember'] = 'AdΔƒugare membru'; + $lang['strmemberadded'] = 'Membru adΔƒugat.'; + $lang['strmemberaddedbad'] = 'AdΔƒugare membru eşuatΔƒ.'; + $lang['strdropmember'] = 'Ştergere membru'; + $lang['strconfdropmember'] = 'Sigur ştergeΕ£i membrul "%s" din grupul "%s"?'; + $lang['strmemberdropped'] = 'Membru şters.'; + $lang['strmemberdroppedbad'] = 'Ştergere membru eşuatΔƒ.'; + + // Roles + $lang['strrole'] = 'Rol'; + $lang['strroles'] = 'Roluri'; + $lang['strshowallroles'] = 'Afişare toate rolurile'; + $lang['strnoroles'] = 'Nici un rol gΔƒsit'; + $lang['strinheritsprivs'] = 'Moştenire privilegii?'; + $lang['strcreaterole'] = 'Creare rol'; + $lang['strcancreaterole'] = 'Creare rol posibilΔƒ?'; + $lang['strrolecreated'] = 'Rol creat'; + $lang['strrolecreatedbad'] = 'Creare rol eşuatΔƒ'; + $lang['stralterrole'] = 'Modificare rol'; + $lang['strrolealtered'] = 'Rol modificat'; + $lang['strrolealteredbad'] = 'Modificare rol eşuatΔƒ'; + $lang['strcanlogin'] = 'Autentificare posibilΔƒ?'; + $lang['strconnlimit'] = 'LimitΔƒ conectare'; + $lang['strdroprole'] = 'Ştergere rol'; + $lang['strconfdroprole'] = 'Sigur ştergeΕ£i rolul "%s"?'; + $lang['strroledropped'] = 'Rol şters'; + $lang['strroledroppedbad'] = 'Ştergere rol eşuatΔƒ'; + $lang['strnolimit'] = 'FΔƒrΔƒ limitΔƒ'; + $lang['strnever'] = 'NiciodatΔƒ'; + $lang['strroleneedsname'] = 'SpecificaΕ£i un nume pentru rol'; + + // Privileges + $lang['strprivilege'] = 'Privilegiu'; + $lang['strprivileges'] = 'Privilegii'; + $lang['strnoprivileges'] = 'Acest obiect are privilegiile implicite ale proprietarului.'; + $lang['strgrant'] = 'Acordare'; + $lang['strrevoke'] = 'Revocare'; + $lang['strgranted'] = 'Privilegii schimbate.'; + $lang['strgrantfailed'] = 'Schimbare privilegii eşuatΔƒ.'; + $lang['strgrantbad'] = 'SpecificaΕ£i cel puΕ£in un utilizator sau grup şi cel puΕ£in un privilegiu.'; + $lang['strgrantor'] = 'Acordat de'; + $lang['strasterisk'] = '*'; + + // Databases + $lang['strdatabase'] = 'BazΔƒ de date'; + $lang['strdatabases'] = 'Baze de date'; + $lang['strshowalldatabases'] = 'Afişare toate bazele de date'; + $lang['strnodatabases'] = 'Nici o bazΔƒ de date gΔƒsitΔƒ.'; + $lang['strcreatedatabase'] = 'Creare bazΔƒ de date'; + $lang['strdatabasename'] = 'Nume bazΔƒ de date'; + $lang['strdatabaseneedsname'] = 'SpecificaΕ£i un nume pentru baza de date.'; + $lang['strdatabasecreated'] = 'BazΔƒ de date creatΔƒ.'; + $lang['strdatabasecreatedbad'] = 'Creare bazΔƒ de date eşuatΔƒ.'; + $lang['strconfdropdatabase'] = 'Sigur ştergeΕ£i baza de date "%s"?'; + $lang['strdatabasedropped'] = 'BazΔƒ de date ştearsΔƒ.'; + $lang['strdatabasedroppedbad'] = 'Ştergere bazΔƒ de date eşuatΔƒ.'; + $lang['strentersql'] = 'IntroduceΕ£i instrucΕ£iunea SQL de executat:'; + $lang['strsqlexecuted'] = 'InstrucΕ£iune SQL executatΔƒ.'; + $lang['strvacuumgood'] = 'Vacuum terminat.'; + $lang['strvacuumbad'] = 'Vacuum eşuat.'; + $lang['stranalyzegood'] = 'AnalizΔƒ terminatΔƒ.'; + $lang['stranalyzebad'] = 'AnalizΔƒ eşuatΔƒ.'; + $lang['strreindexgood'] = 'Re-indexare terminatΔƒ.'; + $lang['strreindexbad'] = 'Re-indexare eşuatΔƒ.'; + $lang['strfull'] = 'Complet'; + $lang['strfreeze'] = 'ÎngheΕ£are'; + $lang['strforce'] = 'ForΕ£are'; + $lang['strsignalsent'] = 'Semnal trimis.'; + $lang['strsignalsentbad'] = 'Trimitere semnal eşuatΔƒ.'; + $lang['strallobjects'] = 'Toate obiectele'; + $lang['strdatabasealtered'] = 'BazΔƒ de date modificatΔƒ.'; + $lang['strdatabasealteredbad'] = 'Modificarea bazei de date a eşuat.'; + + // Views + $lang['strview'] = 'Vizualizare'; + $lang['strviews'] = 'VizualizΔƒri'; + $lang['strshowallviews'] = 'Afişare toate vizualizΔƒrile'; + $lang['strnoview'] = 'Nici o vizualizare gΔƒsitΔƒ.'; + $lang['strnoviews'] = 'Nici o vizualizare gΔƒsitΔƒ.'; + $lang['strcreateview'] = 'Creare vizualizare'; + $lang['strviewname'] = 'Nume vizualizare'; + $lang['strviewneedsname'] = 'SpecificaΕ£i un nume pentru vizualizare.'; + $lang['strviewneedsdef'] = 'SpecificaΕ£i o definiΕ£ie pentru vizualizare.'; + $lang['strviewneedsfields'] = 'SpecificaΕ£i coloanele pe care le doriΕ£i selectate Γn vizualizare.'; + $lang['strviewcreated'] = 'Vizualizare creatΔƒ.'; + $lang['strviewcreatedbad'] = 'Creare vizualizare eşuatΔƒ.'; + $lang['strconfdropview'] = 'Sigur ştergeΕ£i vizualizarea "%s"?'; + $lang['strviewdropped'] = 'Vizualizare ştearsΔƒ.'; + $lang['strviewdroppedbad'] = 'Ştergere vizualizare eşuatΔƒ.'; + $lang['strviewupdated'] = 'Vizualizare actualizatΔƒ'; + $lang['strviewupdatedbad'] = 'Actualizare vizualizare eşuatΔƒ.'; + $lang['strviewlink'] = 'Chei de legΔƒturΔƒ'; + $lang['strviewconditions'] = 'CondiΕ£ii suplimentare'; + $lang['strcreateviewwiz'] = 'Creare vizualizare folosind expertul'; + + // Sequences + $lang['strsequence'] = 'SecvenΕ£Δƒ'; + $lang['strsequences'] = 'SecvenΕ£e'; + $lang['strshowallsequences'] = 'Afişare toate secvenΕ£ele'; + $lang['strnosequence'] = 'Nici o secvenΕ£Δƒ gΔƒsitΔƒ.'; + $lang['strnosequences'] = 'Nici o secvenΕ£Δƒ gΔƒsitΔƒ.'; + $lang['strcreatesequence'] = 'Creare secvenΕ£Δƒ'; + $lang['strlastvalue'] = 'Ultima valoare'; + $lang['strincrementby'] = 'Incrementare cu'; + $lang['strstartvalue'] = 'Valoare de start'; + $lang['strmaxvalue'] = 'Valoare maximΔƒ'; + $lang['strminvalue'] = 'Valoare minimΔƒ'; + $lang['strcachevalue'] = 'Valoare cache'; + $lang['strlogcount'] = 'Log count'; + $lang['striscycled'] = 'CiclicΔƒ?'; + $lang['strsequenceneedsname'] = 'SpecificaΕ£i un nume pentru secvenΕ£Δƒ.'; + $lang['strsequencecreated'] = 'SecvenΕ£Δƒ creatΔƒ.'; + $lang['strsequencecreatedbad'] = 'Creare secvenΕ£Δƒ eşuatΔƒ.'; + $lang['strconfdropsequence'] = 'Sigur ştergeΕ£i secvenΕ£a "%s"?'; + $lang['strsequencedropped'] = 'SecvenΕ£Δƒ ştearsΔƒ.'; + $lang['strsequencedroppedbad'] = 'Ştergere secvenΕ£Δƒ eşuatΔƒ.'; + $lang['strsequencereset'] = 'ReiniΕ£ializare secvenΕ£Δƒ.'; + $lang['strsequenceresetbad'] = 'ReiniΕ£ializare secvenΕ£Δƒ eşuatΔƒ.'; + $lang['straltersequence'] = 'Modificare secvenΕ£Δƒ'; + $lang['strsequencealtered'] = 'SecvenΕ£Δƒ modificatΔƒ'; + $lang['strsequencealteredbad'] = 'Modificare secvenΕ£Δƒ eşuatΔƒ'; + $lang['strsetval'] = 'Setare valoare'; + $lang['strsequencesetval'] = 'Valoare secvenΕ£Δƒ setatΔƒ'; + $lang['strsequencesetvalbad'] = 'Setare valoare secvenΕ£Δƒ eşuatΔƒ'; + $lang['strnextval'] = 'Valoare increment'; + $lang['strsequencenextval'] = 'SecvenΕ£Δƒ incrementatΔƒ'; + $lang['strsequencenextvalbad'] = 'Incremetare secvenΕ£Δƒ eşuatΔƒ'; + + // Indexes + $lang['strindex'] = 'Index'; + $lang['strindexes'] = 'Indexuri'; + $lang['strindexname'] = 'Nume index'; + $lang['strshowallindexes'] = 'Afişare toate indexurile'; + $lang['strnoindex'] = 'Nici un index gΔƒsit.'; + $lang['strnoindexes'] = 'Nici un index gΔƒsit.'; + $lang['strcreateindex'] = 'Creare index'; + $lang['strtabname'] = 'Nume tabelΔƒ'; + $lang['strcolumnname'] = 'Nume coloanΔƒ'; + $lang['strindexneedsname'] = 'SpecificaΕ£i un nume pentru index.'; + $lang['strindexneedscols'] = 'Indexurile necesitΔƒ un numΔƒr corect de coloane.'; + $lang['strindexcreated'] = 'Index creat'; + $lang['strindexcreatedbad'] = 'Creare index eşuatΔƒ.'; + $lang['strconfdropindex'] = 'Sigur ştergeΕ£i indexul "%s"?'; + $lang['strindexdropped'] = 'Index şters.'; + $lang['strindexdroppedbad'] = 'Ştergere index eşuatΔƒ.'; + $lang['strkeyname'] = 'Nume cheie'; + $lang['struniquekey'] = 'Cheie unicΔƒ'; + $lang['strprimarykey'] = 'Cheie primarΔƒ'; + $lang['strindextype'] = 'Tip de index'; + $lang['strtablecolumnlist'] = 'Coloane Γn tabelΔƒ'; + $lang['strindexcolumnlist'] = 'Coloane Γn index'; + $lang['strconfcluster'] = 'Sigur grupaΕ£i "%s"?'; + $lang['strclusteredgood'] = 'Grupare completΔƒ.'; + $lang['strclusteredbad'] = 'Grupare eşuatΔƒ.'; + $lang['strcluster'] = 'Grupare'; + + // Rules + $lang['strrules'] = 'Reguli'; + $lang['strrule'] = 'RegulΔƒ'; + $lang['strshowallrules'] = 'Afişare toate regulile'; + $lang['strnorule'] = 'Nici o regulΔƒ gΔƒsitΔƒ.'; + $lang['strnorules'] = 'Nici o regulΔƒ gΔƒsitΔƒ.'; + $lang['strcreaterule'] = 'Creare regulΔƒ'; + $lang['strrulename'] = 'Nume regulΔƒ'; + $lang['strruleneedsname'] = 'SpecificaΕ£i un nume pentru regulΔƒ.'; + $lang['strrulecreated'] = 'RegulΔƒ creatΔƒ.'; + $lang['strrulecreatedbad'] = 'Creare regulΔƒ eşuatΔƒ.'; + $lang['strconfdroprule'] = 'Sigur ştergeΕ£i regula "%s"?'; + $lang['strruledropped'] = 'RegulΔƒ ştearsΔƒ.'; + $lang['strruledroppedbad'] = 'Ştergere regulΔƒ eşuatΔƒ.'; + + // Constraints + $lang['strconstraint'] = 'RestricΕ£ie'; + $lang['strconstraints'] = 'RestricΕ£ii'; + $lang['strshowallconstraints'] = 'Afişare toate restricΕ£iile'; + $lang['strnoconstraints'] = 'Nici o restricΕ£ie gΔƒsitΔƒ.'; + $lang['strcreateconstraint'] = 'Creare restricΕ£ie'; + $lang['strconstraintcreated'] = 'RestricΕ£ie creatΔƒ.'; + $lang['strconstraintcreatedbad'] = 'Creare restricΕ£ie eşuatΔƒ.'; + $lang['strconfdropconstraint'] = 'Sigur ştergeΕ£i restricΕ£ia "%s"?'; + $lang['strconstraintdropped'] = 'RestricΕ£ie ştearsΔƒ.'; + $lang['strconstraintdroppedbad'] = 'Ştergere restricΕ£ie eşuatΔƒ.'; + $lang['straddcheck'] = 'AdΔƒugare verificare'; + $lang['strcheckneedsdefinition'] = 'Verificarea de restricΕ£ie necesitΔƒ o definiΕ£ie.'; + $lang['strcheckadded'] = 'Verificare de restricΕ£ie adΔƒugatΔƒ.'; + $lang['strcheckaddedbad'] = 'AdΔƒugare verificare de restricΕ£ie eşuatΔƒ.'; + $lang['straddpk'] = 'AdΔƒugare cheie primarΔƒ'; + $lang['strpkneedscols'] = 'Cheia primarΔƒ necesitΔƒ cel puΕ£in o coloanΔƒ.'; + $lang['strpkadded'] = 'Cheie primarΔƒ adΔƒugatΔƒ.'; + $lang['strpkaddedbad'] = 'AdΔƒugare cheie primarΔƒ eşuatΔƒ.'; + $lang['stradduniq'] = 'AdΔƒugare cheie unicΔƒ'; + $lang['struniqneedscols'] = 'Cheia unicΔƒ necesitΔƒ cel puΕ£in o coloanΔƒ.'; + $lang['struniqadded'] = 'Cheie unicΔƒ adΔƒugatΔƒ.'; + $lang['struniqaddedbad'] = 'AdΔƒugare cheie unicΔƒ eşuatΔƒ.'; + $lang['straddfk'] = 'AdΔƒugare cheie strΔƒinΔƒ'; + $lang['strfkneedscols'] = 'Cheia strΔƒinΔƒ necesitΔƒ cel puΕ£in o coloanΔƒ.'; + $lang['strfkneedstarget'] = 'Cheia strΔƒinΔƒ necesitΔƒ o tabelΔƒ de destinaΕ£ie.'; + $lang['strfkadded'] = 'Cheie strΔƒinΔƒ adΔƒugatΔƒ.'; + $lang['strfkaddedbad'] = 'AdΔƒugare cheie strΔƒinΔƒ eşuatΔƒ.'; + $lang['strfktarget'] = 'TabelΔƒ de destinaΕ£ie'; + $lang['strfkcolumnlist'] = 'Coloane Γn cheie'; + $lang['strondelete'] = 'ON DELETE'; + $lang['stronupdate'] = 'ON UPDATE'; + + // Functions + $lang['strfunction'] = 'FuncΕ£ie'; + $lang['strfunctions'] = 'FuncΕ£ii'; + $lang['strshowallfunctions'] = 'Afişare toate funcΕ£iile'; + $lang['strnofunction'] = 'Nici o functie gΔƒsitΔƒ.'; + $lang['strnofunctions'] = 'Nici o functie gΔƒsitΔƒ.'; + $lang['strcreateplfunction'] = 'Creare funcΕ£ie SQL/PL'; + $lang['strcreateinternalfunction'] = 'Creare funcΕ£ie internΔƒ'; + $lang['strcreatecfunction'] = 'Creare funcΕ£ie C'; + $lang['strfunctionname'] = 'Nume funcΕ£ie'; + $lang['strreturns'] = 'Întoarce'; + $lang['strproglanguage'] = 'Limbaj de programare'; + $lang['strfunctionneedsname'] = 'SpecificaΕ£i un nume pentru funcΕ£ie.'; + $lang['strfunctionneedsdef'] = 'SpecificaΕ£i o definiΕ£ie pentru functie.'; + $lang['strfunctioncreated'] = 'FuncΕ£ie creatΔƒ.'; + $lang['strfunctioncreatedbad'] = 'Creare funcΕ£ie eşuatΔƒ.'; + $lang['strconfdropfunction'] = 'Sigur ştergeΕ£i funcΕ£ia "%s"?'; + $lang['strfunctiondropped'] = 'FuncΕ£ie ştearsΔƒ.'; + $lang['strfunctiondroppedbad'] = 'Ştergere funcΕ£ie eşuatΔƒ.'; + $lang['strfunctionupdated'] = 'FuncΕ£ie actualizatΔƒ.'; + $lang['strfunctionupdatedbad'] = 'Actualizare funcΕ£ie eşuatΔƒ.'; + $lang['strobjectfile'] = 'Fişier obiect'; + $lang['strlinksymbol'] = 'Simbol de legΔƒturΔƒ'; + $lang['strarguments'] = 'Argumente'; + $lang['strargmode'] = 'Mod'; + $lang['strargtype'] = 'Tip'; + $lang['strargadd'] = 'AdΔƒugare alt argument'; + $lang['strargremove'] = 'Eliminare argument'; + $lang['strargnoargs'] = 'AceastΔƒ funcΕ£ie nu acceptΔƒ nici un argument'; + $lang['strargenableargs'] = 'Activare argumente pasate acestei funcΕ£ii'; + $lang['strargnorowabove'] = 'Trebuie sΔƒ existe un rΓ’nd deasupra acestui rΓ’nd'; + $lang['strargnorowbelow'] = 'Trebuie sΔƒ existe un rΓ’nd dedesubtul acestui rΓ’nd'; + $lang['strargraise'] = 'Mutare Γn sus'; + $lang['strarglower'] = 'Mutare Γn jos'; + $lang['strargremoveconfirm'] = 'Sigur eliminaΕ£i acest argument? AceastΔƒ acΕ£iune NU poate fi revocatΔƒ.'; + + // Triggers + $lang['strtrigger'] = 'Declanşator'; + $lang['strtriggers'] = 'Declanşatori'; + $lang['strshowalltriggers'] = 'Afişare toate declanşatoarele'; + $lang['strnotrigger'] = 'Nici un declanşator gΔƒsit.'; + $lang['strnotriggers'] = 'Nici un declanşator gΔƒsit.'; + $lang['strcreatetrigger'] = 'Creare declanşator'; + $lang['strtriggerneedsname'] = 'SpecificaΕ£i un nume pentru declanşator.'; + $lang['strtriggerneedsfunc'] = 'SpecificaΕ£i o funcΕ£ie pentru declanşator.'; + $lang['strtriggercreated'] = 'Declanşator creat.'; + $lang['strtriggercreatedbad'] = 'Creare declanşator eşuatΔƒ.'; + $lang['strconfdroptrigger'] = 'Sigur ştergeΕ£i declanşatorul "%s" de pe "%s"?'; + $lang['strconfenabletrigger'] = 'Sigur activaΕ£i declanşatorul "%s" pentru "%s"?'; + $lang['strconfdisabletrigger'] = 'Sigur dezactivaΕ£i declanşatorul "%s" pentru "%s"?'; + $lang['strtriggerdropped'] = 'Declanşator şters.'; + $lang['strtriggerdroppedbad'] = 'Ştergere declanşator eşuatΔƒ.'; + $lang['strtriggerenabled'] = 'Declanşator activat'; + $lang['strtriggerenabledbad'] = 'Activare declanşator eşuatΔƒ'; + $lang['strtriggerdisabled'] = 'Declanşator dezactivat'; + $lang['strtriggerdisabledbad'] = 'Dezactivare declanşator eşuatΔƒ'; + $lang['strtriggeraltered'] = 'Declanşator modificat.'; + $lang['strtriggeralteredbad'] = 'Modificare declanşator eşuatΔƒ.'; + $lang['strforeach'] = 'Pentru fiecare'; + + // Types + $lang['strtype'] = 'Tip'; + $lang['strtypes'] = 'Tipuri'; + $lang['strshowalltypes'] = 'Afişare toate tipurile'; + $lang['strnotype'] = 'Nici un tip gΔƒsit.'; + $lang['strnotypes'] = 'Nici un tip gΔƒsit.'; + $lang['strcreatetype'] = 'Creare tip'; + $lang['strcreatecomptype'] = 'Creare tip compus'; + $lang['strtypeneedsfield'] = 'SpecificaΕ£i cel puΕ£in un cΓ’mp.'; + $lang['strtypeneedscols'] = 'SpecificaΕ£i un numΔƒr corect de cΔƒmpuri.'; + $lang['strtypename'] = 'Nume tip'; + $lang['strinputfn'] = 'FuncΕ£ie de intrare'; + $lang['stroutputfn'] = 'FuncΕ£ie de ieşire'; + $lang['strpassbyval'] = 'Transmis prin valoare?'; + $lang['stralignment'] = 'Aliniere'; + $lang['strelement'] = 'Element'; + $lang['strdelimiter'] = 'Delimitator'; + $lang['strstorage'] = 'Stocare'; + $lang['strfield'] = 'CΓ’mp'; + $lang['strnumfields'] = 'NumΔƒr de cΓ’mpuri'; + $lang['strtypeneedsname'] = 'SpecificaΕ£i un nume pentru tip.'; + $lang['strtypeneedslen'] = 'SpecificaΕ£i o lungime pentru tip.'; + $lang['strtypecreated'] = 'Tip creat.'; + $lang['strtypecreatedbad'] = 'Creare tip eşuatΔƒ.'; + $lang['strconfdroptype'] = 'Sigur ştergeΕ£i tipul "%s"?'; + $lang['strtypedropped'] = 'Tip şters.'; + $lang['strtypedroppedbad'] = 'Ştergere tip eşuatΔƒ.'; + $lang['strflavor'] = 'Flavor'; + $lang['strbasetype'] = 'BazΔƒ'; + $lang['strcompositetype'] = 'Compus'; + $lang['strpseudotype'] = 'Pseudo'; + + // Schemas + $lang['strschema'] = 'SchemΔƒ'; + $lang['strschemas'] = 'Scheme'; + $lang['strshowallschemas'] = 'Afişare toate schemele'; + $lang['strnoschema'] = 'Nici o schemΔƒ gΔƒsitΔƒ.'; + $lang['strnoschemas'] = 'Nici o schemΔƒ gΔƒsitΔƒ.'; + $lang['strcreateschema'] = 'Creare schemΔƒ'; + $lang['strschemaname'] = 'Nume schemΔƒ'; + $lang['strschemaneedsname'] = 'SpecificaΕ£i un nume pentru schemΔƒ.'; + $lang['strschemacreated'] = 'SchemΔƒ creatΔƒ.'; + $lang['strschemacreatedbad'] = 'Creare schemΔƒ eşuatΔƒ.'; + $lang['strconfdropschema'] = 'Sigur ştergeΕ£i schema "%s"?'; + $lang['strschemadropped'] = 'SchemΔƒ ştearsΔƒ.'; + $lang['strschemadroppedbad'] = 'Ştergere schemΔƒ eşuatΔƒ.'; + $lang['strschemaaltered'] = 'SchemΔƒ modificatΔƒ.'; + $lang['strschemaalteredbad'] = 'Modificare schemΔƒ eşuatΔƒ.'; + $lang['strsearchpath'] = 'Cale de cΔƒutare pentru schemΔƒ'; + + // Reports + + // Domains + $lang['strdomain'] = 'Domeniu'; + $lang['strdomains'] = 'Domenii'; + $lang['strshowalldomains'] = 'Afişare toate domeniile'; + $lang['strnodomains'] = 'Nici un domeniu gΔƒsit.'; + $lang['strcreatedomain'] = 'Creare domeniu'; + $lang['strdomaindropped'] = 'Domeniu şters.'; + $lang['strdomaindroppedbad'] = 'Ştergere domeniu eşuatΔƒ.'; + $lang['strconfdropdomain'] = 'Sigur ştergeΕ£i domeniul "%s"?'; + $lang['strdomainneedsname'] = 'SpecificaΕ£i un nume pentru domeniu.'; + $lang['strdomaincreated'] = 'Domeniu creat.'; + $lang['strdomaincreatedbad'] = 'Creare domeniu eşuatΔƒ.'; + $lang['strdomainaltered'] = 'Domeniu modificat.'; + $lang['strdomainalteredbad'] = 'Modificare domeniu eşuatΔƒ.'; + + // Operators + $lang['stroperator'] = 'Operator'; + $lang['stroperators'] = 'Operatori'; + $lang['strshowalloperators'] = 'Afişare toΕ£i operatorii'; + $lang['strnooperator'] = 'Nici un operator gΔƒsit.'; + $lang['strnooperators'] = 'Nici un operator gΔƒsit.'; + $lang['strcreateoperator'] = 'Creare operator'; + $lang['strleftarg'] = 'Tipul argumentului stΓ’ng'; + $lang['strrightarg'] = 'Tipul argumentului drept'; + $lang['strcommutator'] = 'Comutator'; + $lang['strnegator'] = 'Negator'; + $lang['strrestrict'] = 'Restrict'; + $lang['strjoin'] = 'RelaΕ£ionare'; + $lang['strhashes'] = 'Hashes'; + $lang['strmerges'] = 'ÎmbinΔƒ'; + $lang['strleftsort'] = 'Sortare stΓ’nga'; + $lang['strrightsort'] = 'Sortare dreapta'; + $lang['strlessthan'] = 'Mai mic decΔƒt'; + $lang['strgreaterthan'] = 'Mai mare decΔƒt'; + $lang['stroperatorneedsname'] = 'SpecificaΕ£i un nume pentru operator.'; + $lang['stroperatorcreated'] = 'Operator creat.'; + $lang['stroperatorcreatedbad'] = 'Creare operator eşuatΔƒ.'; + $lang['strconfdropoperator'] = 'Sigur ştergeΕ£i operatorul "%s"?'; + $lang['stroperatordropped'] = 'Operator şters.'; + $lang['stroperatordroppedbad'] = 'Ştergere operator eşuatΔƒ.'; + + // Casts + $lang['strcasts'] = 'Conversii de tip'; + $lang['strnocasts'] = 'Nici o conversie de tip gΔƒsitΔƒ.'; + $lang['strsourcetype'] = 'Tip sursΔƒ'; + $lang['strtargettype'] = 'Tip destinaΕ£ie'; + $lang['strimplicit'] = 'Implicit'; + $lang['strinassignment'] = 'În alocare'; + $lang['strbinarycompat'] = '(Compatibil binar)'; + + // Conversions + $lang['strconversions'] = 'Conversii'; + $lang['strnoconversions'] = 'Nici o conversie gΔƒsitΔƒ.'; + $lang['strsourceencoding'] = 'Codificare sursΔƒ'; + $lang['strtargetencoding'] = 'Codificare destinaΕ£ie'; + + // Languages + $lang['strlanguages'] = 'Limbaje'; + $lang['strnolanguages'] = 'Nici un limbaj gΔƒsit.'; + $lang['strtrusted'] = 'Sigur'; + + // Info + $lang['strnoinfo'] = 'Nici o informaΕ£ie disponibilΔƒ.'; + $lang['strreferringtables'] = 'Tabele referite'; + $lang['strparenttables'] = 'Tabele pΔƒrinte'; + $lang['strchildtables'] = 'Tabele copii'; + + // Aggregates + $lang['straggregate'] = 'Agregare'; + $lang['straggregates'] = 'AgregΔƒri'; + $lang['strnoaggregates'] = 'Nici o agregare gΔƒsitΔƒ.'; + $lang['stralltypes'] = '(Toate tipurile)'; + $lang['straggrtransfn'] = 'FuncΕ£ie de tranziΕ£ie'; + $lang['strcreateaggregate'] = 'Creare agregare'; + $lang['straggrbasetype'] = 'Tip datΔƒ de intrare'; + $lang['straggrsfunc'] = 'FuncΕ£ie tranziΕ£ie de stare'; + $lang['straggrffunc'] = 'FuncΕ£ie finalΔƒ'; + $lang['straggrinitcond'] = 'CondiΕ£ie iniΕ£ialΔƒ'; + $lang['straggrsortop'] = 'Operator sortare'; + $lang['strdropaggregate'] = 'Ştergere agregare'; + $lang['strconfdropaggregate'] = 'Sigur ştergeΕ£i agregarea "%s"?'; + $lang['straggregatedropped'] = 'Agregare ştearsΔƒ.'; + $lang['straggregatedroppedbad'] = 'Ştergere agregare eşuatΔƒ.'; + $lang['stralteraggregate'] = 'Modificare agregare'; + $lang['straggraltered'] = 'Agregare modificatΔƒ.'; + $lang['straggralteredbad'] = 'Modificare agregare eşuatΔƒ.'; + $lang['straggrneedsname'] = 'SpecificaΕ£i un nume pentru agregare'; + $lang['straggrneedsbasetype'] = 'SpecificaΕ£i tipul de datΔƒ de intrare pentru agregare'; + $lang['straggrneedssfunc'] = 'SpecificaΕ£i numele funcΕ£iei tranziΕ£iei de stare pentru agregare'; + $lang['straggrneedsstype'] = 'SpecificaΕ£i tipul datei pentru valoarea stΔƒrii agregΔƒrii'; + $lang['straggrcreated'] = 'Agregare creatΔƒ.'; + $lang['straggrcreatedbad'] = 'Creare agregare eşuatΔƒ.'; + $lang['straggrshowall'] = 'Afişare toate agregΔƒrile'; + + // Operator Classes + $lang['stropclasses'] = 'Clase de operatori'; + $lang['strnoopclasses'] = 'Nici o clasΔƒ de operatori gΔƒsitΔƒ.'; + $lang['straccessmethod'] = 'MetodΔƒ de acces'; + + // Stats and performance + $lang['strrowperf'] = 'PerformanΕ£Δƒ rΓ’nd'; + $lang['strioperf'] = 'PerformanΕ£Δƒ I/O'; + $lang['stridxrowperf'] = 'PerformanΕ£Δƒ index/rΓ’nd'; + $lang['stridxioperf'] = 'PerformanΕ£Δƒ index I/O'; + $lang['strpercent'] = '%'; + $lang['strsequential'] = 'SecvenΕ£ial'; + $lang['strscan'] = 'Scanare'; + $lang['strread'] = 'Citire'; + $lang['strfetch'] = 'Transfer'; + $lang['strheap'] = 'StivΔƒ'; + $lang['strtoast'] = 'TOAST'; + $lang['strtoastindex'] = 'Index TOAST'; + $lang['strcache'] = 'Cache'; + $lang['strdisk'] = 'Disc'; + $lang['strrows2'] = 'RΓ’nduri'; + + // Tablespaces + $lang['strtablespace'] = 'SpaΕ£iu de tabele'; + $lang['strtablespaces'] = 'SpaΕ£ii de tabele'; + $lang['strshowalltablespaces'] = 'Afişare toate spaΕ£iile de tabele'; + $lang['strnotablespaces'] = 'Nici un spaΕ£iu de tabele gΔƒsit.'; + $lang['strcreatetablespace'] = 'Creare spaΕ£iu de tabele'; + $lang['strlocation'] = 'LocaΕ£ie'; + $lang['strtablespaceneedsname'] = 'SpecificaΕ£i un nume pentru spaΕ£iul de tabele.'; + $lang['strtablespaceneedsloc'] = 'SpecificaΕ£i directorul Γn care va fi creat spaΕ£iul de tabele.'; + $lang['strtablespacecreated'] = 'SpaΕ£iu de tabele creat.'; + $lang['strtablespacecreatedbad'] = 'Creare spaΕ£iu de tabele eşuatΔƒ.'; + $lang['strconfdroptablespace'] = 'Sigur ştergeΕ£i spaΕ£iul de tabele "%s"?'; + $lang['strtablespacedropped'] = 'SpaΕ£iu de tabele şters.'; + $lang['strtablespacedroppedbad'] = 'Ştergere şpaΕ£iu de tabele eşuatΔƒ.'; + $lang['strtablespacealtered'] = 'SpaΕ£iu de tabele modificat.'; + $lang['strtablespacealteredbad'] = 'Modificare şpaΕ£iu de tabele eşuatΔƒ.'; + + // Miscellaneous + $lang['strtopbar'] = '%s rulΓ’nd pe %s:%s -- SunteΕ£i autentificat ca utilizator "%s"'; + $lang['strtimefmt'] = 'jS M, Y g:iA'; + $lang['strhelp'] = 'Ajutor'; + $lang['strhelpicon'] = '?'; + $lang['strhelppagebrowser'] = 'Pagini de ajutor'; + $lang['strselecthelppage'] = 'SelectaΕ£i o paginΔƒ de ajutor'; + $lang['strinvalidhelppage'] = 'PaginΔƒ de ajutor incorectΔƒ.'; + $lang['strlogintitle'] = 'Autentificare la %s'; + $lang['strlogoutmsg'] = 'Ieşire din %s'; + $lang['strloading'] = 'ÎncΔƒrcare...'; + $lang['strerrorloading'] = 'Eroare la ΓncΔƒrcare'; + $lang['strclicktoreload'] = 'FaceΕ£i clic pentru reΓncΔƒrcare'; + + // Autovacuum + $lang['strautovacuum'] = 'Autovacuum'; + $lang['strturnedon'] = 'Pornit'; + $lang['strturnedoff'] = 'Oprit'; + $lang['strenabled'] = 'Activat'; + $lang['strvacuumbasethreshold'] = 'Vacuum Base Threshold'; + $lang['strvacuumscalefactor'] = 'Vacuum Scale Factor'; + $lang['stranalybasethreshold'] = 'Analyze Base Threshold'; + $lang['stranalyzescalefactor'] = 'Analyze Scale Factor'; + $lang['strvacuumcostdelay'] = 'Vacuum Cost Delay'; + $lang['strvacuumcostlimit'] = 'Vacuum Cost Limit'; + + // Table-level Locks + $lang['strlocks'] = 'BlocΔƒri'; + $lang['strtransaction'] = 'ID tranzacΕ£ie'; + $lang['strprocessid'] = 'ID proces'; + $lang['strmode'] = 'Mod blocare'; + $lang['strislockheld'] = 'Blocaj reΕ£inut?'; + + // Prepared transactions + $lang['strpreparedxacts'] = 'TranzacΕ£ii preparate'; + $lang['strxactid'] = 'ID tranzacΕ£ie'; + $lang['strgid'] = 'ID global'; + + + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/russian-utf8.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/russian-utf8.php new file mode 100644 index 00000000..12cd7710 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/russian-utf8.php @@ -0,0 +1,894 @@ +'; + $lang['strfirst'] = '<< ΠŸΠ΅Ρ€Π².'; + $lang['strlast'] = 'Посл. >>'; + $lang['strfailed'] = 'ΠŸΡ€Π΅Ρ€Π²Π°Π½ΠΎ'; + $lang['strcreate'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ'; + $lang['strcreated'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΎ'; + $lang['strcomment'] = 'ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ'; + $lang['strlength'] = 'Π”Π»ΠΈΠ½Π°'; + $lang['strdefault'] = 'По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ'; + $lang['stralter'] = 'Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ'; + $lang['strok'] = 'OK'; + $lang['strcancel'] = 'ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ'; + $lang['strkill'] = 'Π£Π±ΠΈΡ‚ΡŒ'; + $lang['strac'] = 'Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π°Π²Ρ‚ΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅'; + $lang['strsave'] = 'Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ'; + $lang['strreset'] = 'Π‘Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ'; + $lang['strinsert'] = 'Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ'; + $lang['strselect'] = 'Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ'; + $lang['strdelete'] = 'Π£Π΄Π°Π»ΠΈΡ‚ΡŒ'; + $lang['strupdate'] = 'ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ'; + $lang['strreferences'] = 'Бсылки'; + $lang['stryes'] = 'Π”Π°'; + $lang['strno'] = 'НСт'; + $lang['strtrue'] = 'Π˜ΡΡ‚ΠΈΠ½Π°'; + $lang['strfalse'] = 'Π›ΠΎΠΆΡŒ'; + $lang['stredit'] = 'Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ'; + $lang['strcolumn'] = 'Атрибут'; + $lang['strcolumns'] = 'Атрибуты'; + $lang['strrows'] = 'запис(ь/ΠΈ/Π΅ΠΉ)'; + $lang['strrowsaff'] = 'запис(ь/ΠΈ/Π΅ΠΉ) ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ.'; + $lang['strobjects'] = 'ΠΎΠ±ΡŠΠ΅ΠΊΡ‚(Π°/ΠΎΠ²)'; + $lang['strback'] = 'Назад'; + $lang['strqueryresults'] = 'Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ запроса'; + $lang['strshow'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ'; + $lang['strempty'] = 'ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ'; + $lang['strlanguage'] = 'Π―Π·Ρ‹ΠΊ'; + $lang['strencoding'] = 'ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°'; + $lang['strvalue'] = 'Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅'; + $lang['strunique'] = 'Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ'; + $lang['strprimary'] = 'ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ'; + $lang['strexport'] = 'Экспорт'; + $lang['strimport'] = 'Π˜ΠΌΠΏΠΎΡ€Ρ‚'; + $lang['strallowednulls'] = 'Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Π΅ NULL-символы'; + $lang['strbackslashn'] = '\N'; + $lang['stremptystring'] = 'ΠŸΡƒΡΡ‚Π°Ρ строка/ΠΏΠΎΠ»Π΅'; + $lang['strsql'] = 'SQL'; + $lang['stradmin'] = 'Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅'; + $lang['strvacuum'] = 'ΠŸΠ΅Ρ€Π΅ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ'; + $lang['stranalyze'] = 'ΠΠ½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ'; + $lang['strclusterindex'] = 'ΠšΠ»Π°ΡΡ‚Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ'; + $lang['strclustered'] = 'ΠšΠ»Π°ΡΡ‚Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Π½?'; + $lang['strreindex'] = 'ΠŸΠ΅Ρ€Π΅ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ индСкс'; + $lang['strexecute'] = 'Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ'; + $lang['stradd'] = 'Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ'; + $lang['strevent'] = 'Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅'; + $lang['strwhere'] = 'Π“Π΄Π΅'; + $lang['strinstead'] = 'Π”Π΅Π»Π°Ρ‚ΡŒ вмСсто'; + $lang['strwhen'] = 'Когда'; + $lang['strformat'] = 'Π€ΠΎΡ€ΠΌΠ°Ρ‚'; + $lang['strdata'] = 'Π”Π°Π½Π½Ρ‹Π΅'; + $lang['strconfirm'] = 'ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ'; + $lang['strexpression'] = 'Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅'; + $lang['strellipsis'] = '...'; + $lang['strseparator'] = ': '; + $lang['strexpand'] = 'Π Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ'; + $lang['strcollapse'] = 'Π‘Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ'; + $lang['strfind'] = 'Найти'; + $lang['stroptions'] = 'ΠžΠΏΡ†ΠΈΠΈ'; + $lang['strrefresh'] = 'ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ'; + $lang['strdownload'] = 'Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ'; + $lang['strdownloadgzipped'] = 'Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π°Ρ€Ρ…ΠΈΠ² gzip'; + $lang['strinfo'] = 'БвСдСния'; + $lang['stroids'] = 'OIDs'; + $lang['stradvanced'] = 'Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ'; + $lang['strvariables'] = 'ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅'; + $lang['strprocess'] = 'ΠŸΡ€ΠΎΡ†Π΅ΡΡ'; + $lang['strprocesses'] = 'ΠŸΡ€ΠΎΡ†Π΅ΡΡΡ‹'; + $lang['strsetting'] = 'ΠžΠΏΡ†ΠΈΠΈ'; + $lang['streditsql'] = 'Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ SQL'; + $lang['strruntime'] = 'ВрСмя выполнСния: %s мсСк'; + $lang['strpaginate'] = 'ΠΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Ρ‚ΡŒ страницы с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ'; + $lang['struploadscript'] = 'ΠΈΠ»ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ SQL-скрипт:'; + $lang['strstarttime'] = 'ВрСмя Π½Π°Ρ‡Π°Π»Π°'; + $lang['strfile'] = 'Π€Π°ΠΉΠ»'; + $lang['strfileimported'] = 'Π€Π°ΠΉΠ» ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½.'; + $lang['strtrycred'] = 'Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти Π΄Π°Π½Π½Ρ‹Π΅ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ для всСх сСрвСров'; + $lang['strconfdropcred'] = 'Π’ цСлях бСзопасности ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ ΠΎΠ±Ρ‰ΡƒΡŽ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. Π’Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ?'; + $lang['stractionsonmultiplelines'] = 'ДСйствия Π½Π°Π΄ нСсколькими строками.'; + $lang['strselectall'] = 'Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ всС'; + $lang['strunselectall'] = 'ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ всСх'; + $lang['strlocale'] = 'Π›ΠΎΠΊΠ°Π»ΡŒ'; + $lang['strcollation'] = 'ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ сортировки строк (LC_COLLATE)'; + $lang['strctype'] = 'ΠšΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ символов (LC_CTYPE)'; + $lang['strdefaultvalues'] = 'ЗначСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ'; + $lang['strnewvalues'] = 'НовыС значСния'; + $lang['strstart'] = 'Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ автоматичСскоС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅'; + $lang['strstop'] = 'ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ автоматичСскоС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅'; + $lang['strgotoppage'] = 'Π²Π²Π΅Ρ€Ρ…'; + $lang['strtheme'] = 'Π’Π΅ΠΌΠ°'; + $lang['strcluster'] = 'ΠšΠ»Π°ΡΡ‚Π΅Ρ€'; + + // Admin + $lang['stradminondatabase'] = 'Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ административныС Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊΠΎ всСй Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… %s.'; + $lang['stradminontable'] = 'Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ административныС Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ %s.'; + + // User-supplied SQL history + $lang['strhistory'] = 'Π˜ΡΡ‚ΠΎΡ€ΠΈΡ'; + $lang['strnohistory'] = 'НСт истории.'; + $lang['strclearhistory'] = 'ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ'; + $lang['strdelhistory'] = 'Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· истории'; + $lang['strconfdelhistory'] = 'Π’Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ этот запрос ΠΈΠ· истории?'; + $lang['strconfclearhistory'] = 'Π’Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ?'; + $lang['strnodatabaseselected'] = 'ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚Π΅ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ….'; + + // Database sizes + $lang['strnoaccess'] = 'НСт доступа'; + $lang['strsize'] = 'Π Π°Π·ΠΌΠ΅Ρ€'; + $lang['strbytes'] = 'Π±Π°ΠΉΡ‚'; + $lang['strkb'] = 'ΠΊΠ‘'; + $lang['strmb'] = 'ΠœΠ‘'; + $lang['strgb'] = 'Π“Π‘'; + $lang['strtb'] = 'Π’Π‘'; + + // Error handling + $lang['strnoframes'] = 'Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π»ΡƒΡ‡ΡˆΠ΅ всСго Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ„Ρ€Π΅ΠΉΠΌΡ‹, Π½ΠΎ ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ Π±Π΅Π· использования Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ² Ссли ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΏΠΎ ссылкС Π½ΠΈΠΆΠ΅.'; + $lang['strnoframeslink'] = 'Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π΅Π· Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ²'; + $lang['strbadconfig'] = 'Π’Π°Ρˆ config.inc.php являСтся ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ. Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ· config.inc.php-dist.'; + $lang['strnotloaded'] = 'Π’Π°ΡˆΠ° инсталяция PHP Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ PostgreSQL. Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ PHP, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --with-pgsql для configure.'; + $lang['strpostgresqlversionnotsupported'] = 'ВСрсия PostgreSQL Π½Π΅ поддСрТиваСтся. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ΡΡŒ Π΄ΠΎ вСрсии %s ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅ΠΉ.'; + $lang['strbadschema'] = 'ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° нСвСрная схСма.'; + $lang['strbadencoding'] = 'Ошибка ΠΏΡ€ΠΈ установкС ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° (client encoding).'; + $lang['strsqlerror'] = 'Ошибка SQL:'; + $lang['strinstatement'] = 'Π’ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅:'; + $lang['strinvalidparam'] = 'НСвСрный ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ скрипта.'; + $lang['strnodata'] = 'Π”Π°Π½Π½Ρ‹Ρ… Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strnoobjects'] = 'ΠžΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strrownotunique'] = 'НСт ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° для этой записи.'; + $lang['strnouploads'] = 'Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„Π°ΠΉΠ»Π° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°.'; + $lang['strimporterror'] = 'Ошибка ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°.'; + $lang['strimporterror-fileformat'] = 'Ошибка ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°: НСвозмоТно автоматичСски ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»Π°.'; + $lang['strimporterrorline'] = 'Ошибка ΠΊΠ°Π½Π°Π»Π° ΠΏΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ %s.'; + $lang['strimporterrorline-badcolumnnum'] = 'Ошибка ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π² строкС %s: Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ числом Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ².'; + $lang['strimporterror-uploadedfile'] = 'Ошибка ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°: Π€Π°ΠΉΠ» Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ Π½Π° сСрвСр'; + $lang['strcannotdumponwindows'] = 'Экспорт Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ схСм со слоТными ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Π² Windows Π½Π΅ поддСрТиваСтся.'; + $lang['strinvalidserverparam'] = 'ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° соСдинСния с Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° "сСрвСр", Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ пытаСтся Π²Π·Π»ΠΎΠΌΠ°Ρ‚ΡŒ Π²Π°ΡˆΡƒ систСму.'; + $lang['strnoserversupplied'] = 'Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° "сСрвСр" Π½Π΅ прСдставлСно!'; + $lang['strbadpgdumppath'] = 'Ошибка экспорта: НСвозмоТно Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ pg_dump (ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π² conf/config.inc.php ΠΏΡƒΡ‚ΡŒ: %s). ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, исправтС этот ΠΏΡƒΡ‚ΡŒ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ Π·Π°Π½ΠΎΠ²ΠΎ Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π² систСму.'; + $lang['strbadpgdumpallpath'] = 'Ошибка экспорта: НСвозмоТно Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ pg_dumpall (ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π² conf/config.inc.php ΠΏΡƒΡ‚ΡŒ: %s). ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, исправтС этот ΠΏΡƒΡ‚ΡŒ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ Π·Π°Π½ΠΎΠ²ΠΎ Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π² систСму.'; + $lang['strconnectionfail'] = 'Ошибка ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ сСрвСру.'; + + // Tables + $lang['strtable'] = 'Π’Π°Π±Π»ΠΈΡ†Π°'; + $lang['strtables'] = 'Π’Π°Π±Π»ΠΈΡ†Ρ‹'; + $lang['strshowalltables'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹'; + $lang['strnotables'] = 'Π’Π°Π±Π»ΠΈΡ† Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strnotable'] = 'Π’Π°Π±Π»ΠΈΡ†Π° Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π°.'; + $lang['strcreatetable'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ'; + $lang['strcreatetablelike'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅'; + $lang['strcreatetablelikeparent'] = 'Π˜ΡΡ…ΠΎΠ΄Π½Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π°'; + $lang['strcreatelikewithdefaults'] = 'Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ'; + $lang['strcreatelikewithconstraints'] = 'Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ограничСния'; + $lang['strcreatelikewithindexes'] = 'Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ индСксы'; + $lang['strtablename'] = 'Имя Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹'; + $lang['strtableneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ имя Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.'; + $lang['strtablelikeneedslike'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ.'; + $lang['strtableneedsfield'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»Π΅.'; + $lang['strtableneedscols'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ допустимоС число Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ².'; + $lang['strtablecreated'] = 'Π’Π°Π±Π»ΠΈΡ†Π° создана.'; + $lang['strtablecreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdroptable'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ "%s"?'; + $lang['strtabledropped'] = 'Π’Π°Π±Π»ΠΈΡ†Π° ΡƒΠ΄Π°Π»Π΅Π½Π°.'; + $lang['strtabledroppedbad'] = 'Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfemptytable'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ "%s"?'; + $lang['strtableemptied'] = 'Π’Π°Π±Π»ΠΈΡ†Π° ΠΎΡ‡ΠΈΡ‰Π΅Π½Π°.'; + $lang['strtableemptiedbad'] = 'ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΡ€Π΅Ρ€Π²Π°Π½Π°.'; + $lang['strinsertrow'] = 'Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ запись'; + $lang['strrowinserted'] = 'Π—Π°ΠΏΠΈΡΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π°.'; + $lang['strrowinsertedbad'] = 'Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ записи ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strnofkref'] = 'НСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ значСния внСшнСго ΠΊΠ»ΡŽΡ‡Π° %s.'; + $lang['strrowduplicate'] = 'Вставка строки ΠΏΡ€Π΅Ρ€Π²Π°Π½Π°, ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ вставку.'; + $lang['streditrow'] = 'Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ запись'; + $lang['strrowupdated'] = 'Π—Π°ΠΏΠΈΡΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π°.'; + $lang['strrowupdatedbad'] = 'ОбновлСниС записи ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strdeleterow'] = 'Π£Π΄Π°Π»ΠΈΡ‚ΡŒ запись'; + $lang['strconfdeleterow'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ запись?'; + $lang['strrowdeleted'] = 'Π—Π°ΠΏΠΈΡΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π°.'; + $lang['strrowdeletedbad'] = 'Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ записи ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strinsertandrepeat'] = 'Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ'; + $lang['strnumcols'] = 'ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ²'; + $lang['strcolneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ имя столбца'; + $lang['strselectallfields'] = 'Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ всС поля'; + $lang['strselectneedscol'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄ΠΈΠ½ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚'; + $lang['strselectunary'] = 'Π£Π½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ.'; + $lang['strcolumnaltered'] = 'Атрибут ΠΈΠ·ΠΌΠ΅Π½Π΅Π½.'; + $lang['strcolumnalteredbad'] = 'ИзмСнСниС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropcolumn'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ "%s" Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ "%s"?'; + $lang['strcolumndropped'] = 'Атрибут ΡƒΠ΄Π°Π»Π΅Π½.'; + $lang['strcolumndroppedbad'] = 'Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['straddcolumn'] = 'Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚'; + $lang['strcolumnadded'] = 'Атрибут Π΄ΠΎΠ±Π°Π²Π»Π΅Π½.'; + $lang['strcolumnaddedbad'] = 'Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strcascade'] = 'Каскадом'; + $lang['strtablealtered'] = 'Π’Π°Π±Π»ΠΈΡ†Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π°.'; + $lang['strtablealteredbad'] = 'ИзмСнСниС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strdataonly'] = 'Волько Π΄Π°Π½Π½Ρ‹Π΅'; + $lang['strstructureonly'] = 'Волько структуру'; + $lang['strstructureanddata'] = 'Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρƒ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅'; + $lang['strtabbed'] = 'Π§Π΅Ρ€Π΅Π· Ρ‚Π°Π±ΡƒΠ»ΡΡ†ΠΈΡŽ'; + $lang['strauto'] = 'Авто'; + $lang['strconfvacuumtable'] = 'Π’Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ "%s"?'; + $lang['strconfanalyzetable'] = 'Π’Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ произвСсти Π°Π½Π°Π»ΠΈΠ· "%s"?'; + $lang['strconfreindextable'] = 'Π’Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ индСкс "%s"?'; + $lang['strconfclustertable'] = 'Π’Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΊΠ»Π°ΡΡ‚Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ "%s"?'; + $lang['strestimatedrowcount'] = 'ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΠΎΠ΅ число строк'; + $lang['strspecifytabletoanalyze'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ для Π°Π½Π°Π»ΠΈΠ·Π°.'; + $lang['strspecifytabletoempty'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ для очистки.'; + $lang['strspecifytabletodrop'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ для удалСния.'; + $lang['strspecifytabletovacuum'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ для пСрСстроСния.'; + $lang['strspecifytabletoreindex'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ для пСрСстроСния индСкса.'; + $lang['strspecifytabletocluster'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ для кластСризации.'; + $lang['strnofieldsforinsert'] = 'Π’Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ строку Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π±Π΅Π· столбцов.'; + + // Columns + $lang['strcolprop'] = 'Бвойства столбца'; + $lang['strnotableprovided'] = 'Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° "Ρ‚Π°Π±Π»ΠΈΡ†Π°" Π½Π΅ прСдставлСно!'; + + // Users + $lang['struser'] = 'ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ'; + $lang['strusers'] = 'ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ'; + $lang['strusername'] = 'Имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ'; + $lang['strpassword'] = 'ΠŸΠ°Ρ€ΠΎΠ»ΡŒ'; + $lang['strsuper'] = 'Π‘ΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ?'; + $lang['strcreatedb'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…?'; + $lang['strexpires'] = 'Π‘Ρ€ΠΎΠΊ дСйствия'; + $lang['strsessiondefaults'] = 'ΠžΠΏΡ†ΠΈΠΈ сСанса ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ'; + $lang['strnousers'] = 'НСт Ρ‚Π°ΠΊΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.'; + $lang['struserupdated'] = 'ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½.'; + $lang['struserupdatedbad'] = 'ОбновлСниС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strshowallusers'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ'; + $lang['strcreateuser'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ'; + $lang['struserneedsname'] = 'Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ввСсти имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.'; + $lang['strusercreated'] = 'ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ создан.'; + $lang['strusercreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropuser'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ "%s"?'; + $lang['struserdropped'] = 'ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΡƒΠ΄Π°Π»Π΅Π½.'; + $lang['struserdroppedbad'] = 'Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['straccount'] = 'Аккаунт'; + $lang['strchangepassword'] = 'Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ'; + $lang['strpasswordchanged'] = 'ΠŸΠ°Ρ€ΠΎΠ»ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½.'; + $lang['strpasswordchangedbad'] = 'ИзмСнСниС пароля ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strpasswordshort'] = 'ΠŸΠ°Ρ€ΠΎΠ»ΡŒ слишком ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ.'; + $lang['strpasswordconfirm'] = 'ΠŸΠ°Ρ€ΠΎΠ»ΡŒ Π½Π΅ соотвСтствуСт ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΡŽ.'; + + // Groups + $lang['strgroup'] = 'Π“Ρ€ΡƒΠΏΠΏΠ°'; + $lang['strgroups'] = 'Π“Ρ€ΡƒΠΏΠΏΡ‹'; + $lang['strshowallgroups'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС Π³Ρ€ΡƒΠΏΠΏΡ‹'; + $lang['strnogroup'] = 'Π“Ρ€ΡƒΠΏΠΏΠ° Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π°.'; + $lang['strnogroups'] = 'Ни ΠΎΠ΄Π½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strcreategroup'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡƒ'; + $lang['strgroupneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π³Ρ€ΡƒΠΏΠΏΡ‹.'; + $lang['strgroupcreated'] = 'Π“Ρ€ΡƒΠΏΠΏΠ° создана.'; + $lang['strgroupcreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropgroup'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡƒ "%s"?'; + $lang['strgroupdropped'] = 'Π“Ρ€ΡƒΠΏΠΏΠ° ΡƒΠ΄Π°Π»Π΅Π½Π°.'; + $lang['strgroupdroppedbad'] = 'Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strmembers'] = 'Участников'; + $lang['strmemberof'] = 'Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Ρ€ΠΎΠ»ΠΈ'; + $lang['stradminmembers'] = 'Admin-участников'; + $lang['straddmember'] = 'Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ участника'; + $lang['strmemberadded'] = 'Участник Π΄ΠΎΠ±Π°Π²Π»Π΅Π½.'; + $lang['strmemberaddedbad'] = 'Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ участника ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strdropmember'] = 'Π£Π΄Π°Π»ΠΈΡ‚ΡŒ участника'; + $lang['strconfdropmember'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ участника "%s" ΠΈΠ· Π³Ρ€ΡƒΠΏΠΏΡ‹ "%s"?'; + $lang['strmemberdropped'] = 'Участник ΡƒΠ΄Π°Π»Π΅Π½.'; + $lang['strmemberdroppedbad'] = 'Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ участника ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + + // Roles + $lang['strrole'] = 'Роль'; + $lang['strroles'] = 'Π ΠΎΠ»ΠΈ'; + $lang['strshowallroles'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС Ρ€ΠΎΠ»ΠΈ'; + $lang['strnoroles'] = 'Π ΠΎΠ»ΠΈ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹.'; + $lang['strinheritsprivs'] = 'ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ?'; + $lang['strcreaterole'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€ΠΎΠ»ΡŒ'; + $lang['strcancreaterole'] = 'ΠœΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€ΠΎΠ»ΠΈ?'; + $lang['strrolecreated'] = 'Роль создана.'; + $lang['strrolecreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ€ΠΎΠ»ΠΈ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strrolealtered'] = 'Роль ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π°.'; + $lang['strrolealteredbad'] = 'ИзмСнСниС Ρ€ΠΎΠ»ΠΈ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strcanlogin'] = 'ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΎΠ³ΠΈΠ½ΠΈΡ‚ΡŒΡΡ?'; + $lang['strconnlimit'] = 'Π›ΠΈΠΌΠΈΡ‚ соСдинСний'; + $lang['strdroprole'] = 'Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Ρ€ΠΎΠ»ΡŒ'; + $lang['strconfdroprole'] = 'Π’Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ€ΠΎΠ»ΡŒ "%s"?'; + $lang['strroledropped'] = 'Роль ΡƒΠ΄Π°Π»Π΅Π½Π°.'; + $lang['strroledroppedbad'] = 'Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ€ΠΎΠ»ΠΈ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strnolimit'] = 'Π‘Π΅Π· ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ'; + $lang['strnever'] = 'Никогда'; + $lang['strroleneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ имя Ρ€ΠΎΠ»ΠΈ.'; + + // Privileges + $lang['strprivilege'] = 'ΠŸΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ'; + $lang['strprivileges'] = 'ΠŸΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ'; + $lang['strnoprivileges'] = 'ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ.'; + $lang['strgrant'] = 'Π£ΡΠΈΠ»ΠΈΡ‚ΡŒ'; + $lang['strrevoke'] = 'ΠžΡΠ»Π°Π±ΠΈΡ‚ΡŒ'; + $lang['strgranted'] = 'ΠŸΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹.'; + $lang['strgrantfailed'] = 'ИзмСнСниС ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strgrantbad'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΈ хотя Π±Ρ‹ ΠΎΠ΄Π½Ρƒ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡŽ.'; + $lang['strgrantor'] = 'Π”ΠΎΠ½ΠΎΡ€'; + $lang['strasterisk'] = '*'; + + // Databases + $lang['strdatabase'] = 'Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…'; + $lang['strdatabases'] = 'Π‘Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…'; + $lang['strshowalldatabases'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…'; + $lang['strnodatabases'] = 'Ни ΠΎΠ΄Π½ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strcreatedatabase'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…'; + $lang['strdatabasename'] = 'Имя Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…'; + $lang['strdatabaseneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ имя Π’Π°ΡˆΠ΅ΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ….'; + $lang['strdatabasecreated'] = 'Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… создана.'; + $lang['strdatabasecreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropdatabase'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… "%s"?'; + $lang['strdatabasedropped'] = 'Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½Π°.'; + $lang['strdatabasedroppedbad'] = 'Π£Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strentersql'] = 'Π’Π²Π΅Π΄ΠΈΡ‚Π΅ SQL-запрос Π½ΠΈΠΆΠ΅:'; + $lang['strsqlexecuted'] = 'SQL-запрос Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½.'; + $lang['strvacuumgood'] = 'ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ пСрСстроСния Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°.'; + $lang['strvacuumbad'] = 'ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ пСрСстроСния ΠΏΡ€Π΅Ρ€Π²Π°Π½Π°.'; + $lang['stranalyzegood'] = 'ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°.'; + $lang['stranalyzebad'] = 'ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½Π°.'; + $lang['strreindexgood'] = 'ΠŸΠ΅Ρ€Π΅ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°.'; + $lang['strreindexbad'] = 'ΠŸΠ΅Ρ€Π΅ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ ΠΏΡ€Π΅Ρ€Π²Π°Π½Π°.'; + $lang['strfull'] = 'ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ'; + $lang['strfreeze'] = 'Π—Π°ΠΌΠΎΡ€ΠΎΠ·ΠΈΡ‚ΡŒ'; + $lang['strforce'] = 'ΠŸΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ'; + $lang['strsignalsent'] = 'Π‘ΠΈΠ³Π½Π°Π» ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½.'; + $lang['strsignalsentbad'] = 'ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° сигнала ΠΏΡ€Π΅Ρ€Π²Π°Π½Π°.'; + $lang['strallobjects'] = 'ВсС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹'; + $lang['strdatabasealtered'] = 'Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π°.'; + $lang['strdatabasealteredbad'] = 'ИзмСнСниС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strspecifydatabasetodrop'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½Ρƒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… для удалСния.'; + $lang['strtemplatedb'] = 'Π¨Π°Π±Π»ΠΎΠ½'; + $lang['strconfanalyzedatabase'] = 'Π’Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… "%s"?'; + $lang['strconfvacuumdatabase'] = 'Π’Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ всС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… "%s"?'; + $lang['strconfreindexdatabase'] = 'Π’Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ индСкс всСх Ρ‚Π°Π±Π»ΠΈΡ† Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… "%s"?'; + $lang['strconfclusterdatabase'] = 'Π’Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΊΠ»Π°ΡΡ‚Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… "%s"?'; + + // Views + $lang['strview'] = 'ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅'; + $lang['strviews'] = 'ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡ'; + $lang['strshowallviews'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС прСдставлСния'; + $lang['strnoview'] = 'ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strnoviews'] = 'Ни ΠΎΠ΄Π½ΠΎΠ³ΠΎ прСдставлСния Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strcreateview'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ прСдставлСниС'; + $lang['strviewname'] = 'Имя прСдставлСния'; + $lang['strviewneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя прСдставлСния.'; + $lang['strviewneedsdef'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ прСдставлСния.'; + $lang['strviewneedsfields'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ для Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π² вашС прСдставлСниС.'; + $lang['strviewcreated'] = 'ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ создано.'; + $lang['strviewcreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ прСдставлСния ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropview'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ прСдставлСниС "%s"?'; + $lang['strviewdropped'] = 'ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΎ.'; + $lang['strviewdroppedbad'] = 'Π£Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ прСдставлСния ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strviewupdated'] = 'ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΎ.'; + $lang['strviewupdatedbad'] = 'ОбновлСниС прСдставлСния ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strviewlink'] = 'БвязанныС ΠΊΠ»ΡŽΡ‡ΠΈ'; + $lang['strviewconditions'] = 'Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ условия'; + $lang['strcreateviewwiz'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ прСдставлСниС ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠΎΠΌ'; + $lang['strrenamedupfields'] = 'ΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ поля-Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹'; + $lang['strdropdupfields'] = 'Π£Π΄Π°Π»ΡΡ‚ΡŒ поля-Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹'; + $lang['strerrordupfields'] = 'Ошибка ΠΏΡ€ΠΈ появлСнии ΠΏΠΎΠ»Π΅ΠΉ-Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ²'; + $lang['strviewaltered'] = 'ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ.'; + $lang['strviewalteredbad'] = 'ИзмСнСниС прСдставлСния ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strspecifyviewtodrop'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½ΠΎ прСдставлСниС для удалСния.'; + + // Sequences + $lang['strsequence'] = 'ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ'; + $lang['strsequences'] = 'ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ'; + $lang['strshowallsequences'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ'; + $lang['strnosequence'] = 'ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π°.'; + $lang['strnosequences'] = 'Ни ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strcreatesequence'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ'; + $lang['strlastvalue'] = 'ПослСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅'; + $lang['strincrementby'] = 'Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π°'; + $lang['strstartvalue'] = 'ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅'; + $lang['strmaxvalue'] = 'Макс. Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°'; + $lang['strminvalue'] = 'Мин. Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°'; + $lang['strcachevalue'] = 'Π Π°Π·ΠΌΠ΅Ρ€ кэша'; + $lang['strlogcount'] = 'Log Count'; + $lang['strcancycle'] = 'ΠœΠΎΠΆΠ΅Ρ‚ Π·Π°Ρ†ΠΈΠΊΠ»ΠΈΠ²Π°Ρ‚ΡŒΡΡ?'; + $lang['striscalled'] = 'Π£Π²Π΅Π»ΠΈΡ‡ΠΈΡ‚ послСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ послС получСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ значСния (is_called)?'; + $lang['strsequenceneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.'; + $lang['strsequencecreated'] = 'ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ создана.'; + $lang['strsequencecreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropsequence'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ "%s"?'; + $lang['strsequencedropped'] = 'ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½Π°.'; + $lang['strsequencedroppedbad'] = 'Π£Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strsequencereset'] = 'ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΡΠ±Ρ€ΠΎΡˆΠ΅Π½Π°.'; + $lang['strsequenceresetbad'] = 'Бброс ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€Π΅Ρ€Π²Π°Π½.'; + $lang['strsequencealtered'] = 'ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π°.'; + $lang['strsequencealteredbad'] = 'ИзмСнСниС ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strsetval'] = 'Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅'; + $lang['strsequencesetval'] = 'Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ установлСно.'; + $lang['strsequencesetvalbad'] = 'ИзмСнСниС значСния ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strnextval'] = 'Π˜Π½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅'; + $lang['strsequencenextval'] = 'Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ.'; + $lang['strsequencenextvalbad'] = 'Π˜Π½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ значСния ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strspecifysequencetodrop'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠ½ ΠΎΠ΄Π½Ρƒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ для удалСния.'; + + // Indexes + $lang['strindex'] = 'ИндСкс'; + $lang['strindexes'] = 'Π˜Π½Π΄Π΅ΠΊΡΡ‹'; + $lang['strindexname'] = 'Имя индСкса'; + $lang['strshowallindexes'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС индСксы'; + $lang['strnoindex'] = 'ИндСкс Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½.'; + $lang['strnoindexes'] = 'Ни ΠΎΠ΄Π½ΠΎΠ³ΠΎ индСкса Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strcreateindex'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ индСкс'; + $lang['strtabname'] = 'Имя Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹'; + $lang['strcolumnname'] = 'Имя Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°'; + $lang['strindexneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя индСкса'; + $lang['strindexneedscols'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ допустимоС количСство Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ².'; + $lang['strindexcreated'] = 'ИндСкс создан.'; + $lang['strindexcreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ индСкса ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropindex'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ индСкс "%s"?'; + $lang['strindexdropped'] = 'ИндСкс ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½.'; + $lang['strindexdroppedbad'] = 'Π£Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ индСкса ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strkeyname'] = 'Имя ΠΊΠ»ΡŽΡ‡Π°'; + $lang['struniquekey'] = 'Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡'; + $lang['strprimarykey'] = 'ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡'; + $lang['strindextype'] = 'Π’ΠΈΠ΄ индСкса'; + $lang['strtablecolumnlist'] = 'Атрибутов Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅'; + $lang['strindexcolumnlist'] = 'Атрибутов Π² индСксС'; + $lang['strclusteredgood'] = 'ΠšΠ»Π°ΡΡ‚Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°.'; + $lang['strclusteredbad'] = 'ΠšΠ»Π°ΡΡ‚Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€Π΅Ρ€Π²Π°Π½Π°.'; + $lang['strconcurrently'] = 'Π‘Π΅Π· Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ записи (CONCURRENTLY)'; + $lang['strnoclusteravailable'] = 'Π’Π°Π±Π»ΠΈΡ†Π° Π½Π΅ кластСризуСма ΠΏΠΎ индСксу.'; + + // Rules + $lang['strrules'] = 'ΠŸΡ€Π°Π²ΠΈΠ»Π°'; + $lang['strrule'] = 'ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ'; + $lang['strshowallrules'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС ΠΏΡ€Π°Π²ΠΈΠ»Π°'; + $lang['strnorule'] = 'ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strnorules'] = 'Ни ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strcreaterule'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ'; + $lang['strrulename'] = 'Имя ΠΏΡ€Π°Π²ΠΈΠ»Π°'; + $lang['strruleneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя ΠΏΡ€Π°Π²ΠΈΠ»Π°.'; + $lang['strrulecreated'] = 'ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ создано.'; + $lang['strrulecreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdroprule'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ "%s" on "%s"?'; + $lang['strruledropped'] = 'ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΎ.'; + $lang['strruledroppedbad'] = 'Π£Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + + // Constraints + $lang['strconstraint'] = 'ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅'; + $lang['strconstraints'] = 'ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ'; + $lang['strshowallconstraints'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС ограничСния'; + $lang['strnoconstraints'] = 'Ни ΠΎΠ΄Π½ΠΎΠ³ΠΎ ограничСния Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strcreateconstraint'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅'; + $lang['strconstraintcreated'] = 'ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ создано.'; + $lang['strconstraintcreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ограничСния ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropconstraint'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ "%s" on "%s"?'; + $lang['strconstraintdropped'] = 'ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΎ.'; + $lang['strconstraintdroppedbad'] = 'Π£Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ ограничСния ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['straddcheck'] = 'Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ'; + $lang['strcheckneedsdefinition'] = 'ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ нуТдаСтся Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ.'; + $lang['strcheckadded'] = 'ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ.'; + $lang['strcheckaddedbad'] = 'Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ограничСния ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['straddpk'] = 'Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡'; + $lang['strpkneedscols'] = 'ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚.'; + $lang['strpkadded'] = 'ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½.'; + $lang['strpkaddedbad'] = 'Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['stradduniq'] = 'Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡'; + $lang['struniqneedscols'] = 'Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚.'; + $lang['struniqadded'] = 'Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½.'; + $lang['struniqaddedbad'] = 'Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['straddfk'] = 'Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ внСшний ΠΊΠ»ΡŽΡ‡'; + $lang['strfkneedscols'] = 'Π’Π½Π΅ΡˆΠ½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚.'; + $lang['strfkneedstarget'] = 'Π’Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ†Π΅Π»Π΅Π²ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ.'; + $lang['strfkadded'] = 'Π’Π½Π΅ΡˆΠ½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½.'; + $lang['strfkaddedbad'] = 'Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ внСшнСго ΠΊΠ»ΡŽΡ‡Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strfktarget'] = 'ЦСлСвая Ρ‚Π°Π±Π»ΠΈΡ†Π°'; + $lang['strfkcolumnlist'] = 'Атрибуты Π² ΠΊΠ»ΡŽΡ‡Π΅'; + $lang['strondelete'] = 'ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ'; + $lang['stronupdate'] = 'ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ'; + + // Functions + $lang['strfunction'] = 'Ѐункция'; + $lang['strfunctions'] = 'Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ'; + $lang['strshowallfunctions'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ'; + $lang['strnofunction'] = 'Ѐункция Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π°.'; + $lang['strnofunctions'] = 'Ни ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strcreateplfunction'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ SQL/PL Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ'; + $lang['strcreateinternalfunction'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ'; + $lang['strcreatecfunction'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π½Π° языкС C'; + $lang['strfunctionname'] = 'Имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ'; + $lang['strreturns'] = 'Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅'; + $lang['strproglanguage'] = 'Π―Π·Ρ‹ΠΊ'; + $lang['strfunctionneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.'; + $lang['strfunctionneedsdef'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.'; + $lang['strfunctioncreated'] = 'Ѐункция создана.'; + $lang['strfunctioncreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropfunction'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ "%s"?'; + $lang['strfunctiondropped'] = 'Ѐункция ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½Π°.'; + $lang['strfunctiondroppedbad'] = 'Π£Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strfunctionupdated'] = 'Ѐункция ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π°.'; + $lang['strfunctionupdatedbad'] = 'ОбновлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strobjectfile'] = 'ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»'; + $lang['strlinksymbol'] = 'Π‘ΠΈΠΌΠ²ΠΎΠ» Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ (имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² C)'; + $lang['strarguments'] = 'АргумСнты'; + $lang['strargmode'] = 'Π Π΅ΠΆΠΈΠΌ'; + $lang['strargtype'] = 'Π’ΠΈΠΏ'; + $lang['strargadd'] = 'Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚'; + $lang['strargremove'] = 'Π£Π΄Π°Π»ΠΈΡ‚ΡŒ этот Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚'; + $lang['strargnoargs'] = 'Π­Ρ‚Π° функция Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².'; + $lang['strargenableargs'] = 'Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.'; + $lang['strargnorowabove'] = 'НСобходима строка Π²Ρ‹ΡˆΠ΅ этой строки.'; + $lang['strargnorowbelow'] = 'НСобходима строка Π½ΠΈΠΆΠ΅ этой строки.'; + $lang['strargraise'] = 'ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π²Π²Π΅Ρ€Ρ….'; + $lang['strarglower'] = 'ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠ·.'; + $lang['strargremoveconfirm'] = 'Π’Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ этот Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚? ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.'; + $lang['strfunctioncosting'] = 'Бтоимости Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ'; + $lang['strresultrows'] = 'Π‘Ρ‚Ρ€ΠΎΠΊ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅'; + $lang['strexecutioncost'] = 'Π‘Ρ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ исполнСния'; + $lang['strspecifyfunctiontodrop'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для удалСния.'; + + // Triggers + $lang['strtrigger'] = 'Π’Ρ€ΠΈΠ³Π³Π΅Ρ€'; + $lang['strtriggers'] = 'Π’Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹'; + $lang['strshowalltriggers'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹'; + $lang['strnotrigger'] = 'Π’Ρ€ΠΈΠ³Π³Π΅Ρ€ Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½.'; + $lang['strnotriggers'] = 'Ни ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strcreatetrigger'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€'; + $lang['strtriggerneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π°.'; + $lang['strtriggerneedsfunc'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π°.'; + $lang['strtriggercreated'] = 'Π’Ρ€ΠΈΠ³Π³Π΅Ρ€ создан.'; + $lang['strtriggercreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdroptrigger'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ "%s" Π½Π° "%s"?'; + $lang['strconfenabletrigger'] = 'Π’Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ "%s" Π½Π° "%s"?'; + $lang['strconfdisabletrigger'] = 'Π’Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ "%s" Π½Π° "%s"?'; + $lang['strtriggerdropped'] = 'Π’Ρ€ΠΈΠ³Π³Π΅Ρ€ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½.'; + $lang['strtriggerdroppedbad'] = 'Π£Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strtriggerenabled'] = 'Π’Ρ€ΠΈΠ³Π³Π΅Ρ€ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½.'; + $lang['strtriggerenabledbad'] = 'Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strtriggerdisabled'] = 'Π’Ρ€ΠΈΠ³Π³Π΅Ρ€ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½.'; + $lang['strtriggerdisabledbad'] = 'Π’Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strtriggeraltered'] = 'Π’Ρ€ΠΈΠ³Π³Π΅Ρ€ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½.'; + $lang['strtriggeralteredbad'] = 'ИзмСнСниС Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strforeach'] = 'Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ'; + + // Types + $lang['strtype'] = 'Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…'; + $lang['strtypes'] = 'Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…'; + $lang['strshowalltypes'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…'; + $lang['strnotype'] = 'Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½.'; + $lang['strnotypes'] = 'Ни ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strcreatetype'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…'; + $lang['strcreatecomptype'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ'; + $lang['strcreateenumtype'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ пСрСчислимый Ρ‚ΠΈΠΏ'; + $lang['strtypeneedsfield'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»Π΅.'; + $lang['strtypeneedsvalue'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.'; + $lang['strtypeneedscols'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ число ΠΏΠΎΠ»Π΅ΠΉ.'; + $lang['strtypeneedsvals'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ число Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.'; + $lang['strinputfn'] = 'Ѐункция Π²Π²ΠΎΠ΄Π°'; + $lang['stroutputfn'] = 'Ѐункция Π²Ρ‹Π²ΠΎΠ΄Π°'; + $lang['strpassbyval'] = 'ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ?'; + $lang['stralignment'] = 'Π’Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅'; + $lang['strelement'] = 'Π­Π»Π΅ΠΌΠ΅Π½Ρ‚'; + $lang['strdelimiter'] = 'Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ'; + $lang['strstorage'] = 'Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅'; + $lang['strfield'] = 'ПолС'; + $lang['strnumfields'] = 'Кол-Π²ΠΎ ΠΏΠΎΠ»Π΅ΠΉ'; + $lang['strnumvalues'] = 'Кол-Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ'; + $lang['strtypeneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ….'; + $lang['strtypeneedslen'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ для Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ….'; + $lang['strtypecreated'] = 'Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… создан.'; + $lang['strtypecreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdroptype'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… "%s"?'; + $lang['strtypedropped'] = 'Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½.'; + $lang['strtypedroppedbad'] = 'Π£Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strflavor'] = 'Π’ΠΈΠΏ'; + $lang['strbasetype'] = 'Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ'; + $lang['strcompositetype'] = 'ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½Ρ‹ΠΉ'; + $lang['strpseudotype'] = 'ПсСвдо'; + $lang['strenum'] = 'ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΠΌΡ‹ΠΉ'; + $lang['strenumvalues'] = 'ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΠΌΡ‹Π΅ значСния'; + + // Schemas + $lang['strschema'] = 'Π‘Ρ…Π΅ΠΌΠ°'; + $lang['strschemas'] = 'Π‘Ρ…Π΅ΠΌΡ‹'; + $lang['strshowallschemas'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС схСмы'; + $lang['strnoschema'] = 'Π‘Ρ…Π΅ΠΌΠ° Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π°.'; + $lang['strnoschemas'] = 'Ни ΠΎΠ΄Π½ΠΎΠΉ схСмы Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strcreateschema'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ схСму'; + $lang['strschemaname'] = 'Имя схСмы'; + $lang['strschemaneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя схСмы.'; + $lang['strschemacreated'] = 'Π‘Ρ…Π΅ΠΌΠ° создана.'; + $lang['strschemacreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ схСмы ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropschema'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ схСму "%s"?'; + $lang['strschemadropped'] = 'Π‘Ρ…Π΅ΠΌΠ° ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½Π°.'; + $lang['strschemadroppedbad'] = 'Π£Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ схСмы ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strschemaaltered'] = 'Π‘Ρ…Π΅ΠΌΠ° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π°.'; + $lang['strschemaalteredbad'] = 'ОбновлСниС схСмы ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strsearchpath'] = 'ΠŸΡƒΡ‚ΠΈ поиска Π² схСмах'; + $lang['strspecifyschematodrop'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½Ρƒ схСму для удалСния.'; + + // Reports + + // Domains + $lang['strdomain'] = 'Π”ΠΎΠΌΠ΅Π½'; + $lang['strdomains'] = 'Π”ΠΎΠΌΠ΅Π½Ρ‹'; + $lang['strshowalldomains'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС Π΄ΠΎΠΌΠ΅Π½Ρ‹'; + $lang['strnodomains'] = 'Ни ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strcreatedomain'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄ΠΎΠΌΠ΅Π½'; + $lang['strdomaindropped'] = 'Π”ΠΎΠΌΠ΅Π½ ΡƒΠ΄Π°Π»Π΅Π½.'; + $lang['strdomaindroppedbad'] = 'Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΌΠ΅Π½Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropdomain'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΄ΠΎΠΌΠ΅Π½ "%s"?'; + $lang['strdomainneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя Π΄ΠΎΠΌΠ΅Π½Π°.'; + $lang['strdomaincreated'] = 'Π”ΠΎΠΌΠ΅Π½ создан.'; + $lang['strdomaincreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄ΠΎΠΌΠ΅Π½Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strdomainaltered'] = 'Π”ΠΎΠΌΠ΅Π½ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½.'; + $lang['strdomainalteredbad'] = 'ИзмСнСниС Π΄ΠΎΠΌΠ΅Π½Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + + // Operators + $lang['stroperator'] = 'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€'; + $lang['stroperators'] = 'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹'; + $lang['strshowalloperators'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹'; + $lang['strnooperator'] = 'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½.'; + $lang['strnooperators'] = 'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Ρ‹.'; + $lang['strcreateoperator'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€'; + $lang['strleftarg'] = 'Π’ΠΈΠΏ Π»Π΅Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°'; + $lang['strrightarg'] = 'Π’ΠΈΠΏ ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°'; + $lang['strcommutator'] = 'ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅'; + $lang['strnegator'] = 'ΠžΡ‚Ρ€ΠΈΡ†Π°Π½ΠΈΠ΅'; + $lang['strrestrict'] = 'ОслаблСниС'; + $lang['strjoin'] = 'ОбъСдинСниС'; + $lang['strhashes'] = 'Π₯Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅'; + $lang['strmerges'] = 'БлияниС'; + $lang['strleftsort'] = 'Π‘ΠΎΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ Π»Π΅Π²ΠΎΠΌΡƒ'; + $lang['strrightsort'] = 'Π‘ΠΎΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ ΠΏΡ€Π°Π²ΠΎΠΌΡƒ'; + $lang['strlessthan'] = 'МСньшС'; + $lang['strgreaterthan'] = 'Π‘ΠΎΠ»ΡŒΡˆΠ΅'; + $lang['stroperatorneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°.'; + $lang['stroperatorcreated'] = 'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ создан'; + $lang['stroperatorcreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropoperator'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ "%s"?'; + $lang['stroperatordropped'] = 'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΡƒΠ΄Π°Π»Π΅Π½.'; + $lang['stroperatordroppedbad'] = 'Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + + // Casts + $lang['strcasts'] = 'ΠžΠ±Ρ€Π°Π·Ρ†Ρ‹'; + $lang['strnocasts'] = 'ΠžΠ±Ρ€Π°Π·Ρ†ΠΎΠ² Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strsourcetype'] = 'Π’ΠΈΠΏ источника'; + $lang['strtargettype'] = 'Π’ΠΈΠΏ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ°'; + $lang['strimplicit'] = 'НСявный'; + $lang['strinassignment'] = 'Π’ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ'; + $lang['strbinarycompat'] = '(Π΄Π²ΠΎΠΈΡ‡Π½ΠΎ совмСстимый)'; + + // Conversions + $lang['strconversions'] = 'ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅'; + $lang['strnoconversions'] = 'ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strsourceencoding'] = 'ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° источника'; + $lang['strtargetencoding'] = 'ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ°'; + + // Languages + $lang['strlanguages'] = 'Π―Π·Ρ‹ΠΊΠΈ'; + $lang['strnolanguages'] = 'Π―Π·Ρ‹ΠΊΠΎΠ² Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strtrusted'] = 'ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ'; + + // Info + $lang['strnoinfo'] = 'НСт доступной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.'; + $lang['strreferringtables'] = 'Π‘ΡΡ‹Π»Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹'; + $lang['strparenttables'] = 'Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹'; + $lang['strchildtables'] = 'Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹'; + + // Aggregates + $lang['straggregate'] = 'АгрСгатноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅'; + $lang['straggregates'] = 'АгрСгатныС выраТСния'; + $lang['strnoaggregates'] = 'АгрСгатных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['stralltypes'] = '(ВсС Ρ‚ΠΈΠΏΡ‹)'; + $lang['strcreateaggregate'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅'; + $lang['straggrbasetype'] = 'Π’Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…'; + $lang['straggrsfunc'] = 'Ѐункция смСны состояний'; + $lang['straggrstype'] = 'Π’ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ состояния'; + $lang['straggrffunc'] = 'Ѐинальная функция'; + $lang['straggrinitcond'] = 'ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ условиС'; + $lang['straggrsortop'] = 'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ сортировки'; + $lang['strconfdropaggregate'] = 'Π’Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ "%s"?'; + $lang['straggregatedropped'] = 'АгрСгатноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΡƒΠ΄Π°Π»Π΅Π½ΠΎ.'; + $lang['straggregatedroppedbad'] = 'Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½ΠΎΠ³ΠΎ выраТСния ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['straggraltered'] = 'АгрСгатноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ.'; + $lang['straggralteredbad'] = 'ИзмСнСниС Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½ΠΎΠ³ΠΎ выраТСния ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['straggrneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ имя Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½ΠΎΠ³ΠΎ выраТСния.'; + $lang['straggrneedsbasetype'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… для Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½ΠΎΠ³ΠΎ выраТСния.'; + $lang['straggrneedssfunc'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°ΠΊΠ·Π°Ρ‚ΡŒ имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ смСны состояний для Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½ΠΎΠ³ΠΎ выраТСния.'; + $lang['straggrneedsstype'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ состояния для Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½ΠΎΠ³ΠΎ выраТСния.'; + $lang['straggrcreated'] = 'АгрСгатноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ создано.'; + $lang['straggrcreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½ΠΎΠ³ΠΎ выраТСния ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['straggrshowall'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½Ρ‹Π΅ выраТСния'; + + // Operator Classes + $lang['stropclasses'] = 'ΠšΠ»Π°ΡΡΡ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²'; + $lang['strnoopclasses'] = 'Классов ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['straccessmethod'] = 'ΠœΠ΅Ρ‚ΠΎΠ΄ доступа'; + + // Stats and performance + $lang['strrowperf'] = 'ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ записи'; + $lang['strioperf'] = 'ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°'; + $lang['stridxrowperf'] = 'ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ индСкса записи'; + $lang['stridxioperf'] = 'ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ индСкса Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°'; + $lang['strpercent'] = '%'; + $lang['strsequential'] = 'ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ'; + $lang['strscan'] = 'Π‘ΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ'; + $lang['strread'] = 'Π§ΠΈΡ‚Π°Ρ‚ΡŒ'; + $lang['strfetch'] = 'Π˜Π·Π²Π»Π΅Ρ‡ΡŒ'; + $lang['strheap'] = 'ΠœΡƒΡΠΎΡ€'; + $lang['strtoast'] = 'TOAST'; + $lang['strtoastindex'] = 'TOAST индСкс'; + $lang['strcache'] = 'КСш'; + $lang['strdisk'] = 'Диск'; + $lang['strrows2'] = 'Записи'; + + // Tablespaces + $lang['strtablespace'] = 'Π’Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ΅ пространство'; + $lang['strtablespaces'] = 'Π’Π°Π±Π»ΠΈΡ‡Π½Ρ‹Π΅ пространства'; + $lang['strshowalltablespaces'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Π΅ пространства'; + $lang['strnotablespaces'] = 'Π’Π°Π±Π»ΠΈΡ‡Π½Ρ‹Π΅ пространства Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹.'; + $lang['strcreatetablespace'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ΅ пространство'; + $lang['strlocation'] = 'РасполоТСниС'; + $lang['strtablespaceneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ имя Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ пространства.'; + $lang['strtablespaceneedsloc'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ΅ пространство Π±ΡƒΠ΄Π΅ создано.'; + $lang['strtablespacecreated'] = 'Π’Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ΅ пространство создано.'; + $lang['strtablespacecreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ пространства ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdroptablespace'] = 'Π’Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ΅ пространство "%s"?'; + $lang['strtablespacedropped'] = 'Π’Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ΅ пространство ΡƒΠ΄Π°Π»Π΅Π½ΠΎ.'; + $lang['strtablespacedroppedbad'] = 'Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ пространства ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strtablespacealtered'] = 'Π’Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ΅ пространство ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ.'; + $lang['strtablespacealteredbad'] = 'ИзмСнСниС Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ пространства ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + + // Miscellaneous + $lang['strtopbar'] = '%s выполняСтся Π½Π° %s:%s -- Π’Ρ‹ зарСгистрированы ΠΊΠ°ΠΊ "%s"'; + $lang['strtimefmt'] = ' j-m-Y g:i'; + $lang['strhelp'] = 'ΠŸΠΎΠΌΠΎΡ‰ΡŒ'; + $lang['strhelpicon'] = '?'; + $lang['strhelppagebrowser'] = 'ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ страниц ΠΏΠΎΠΌΠΎΡ‰ΠΈ'; + $lang['strselecthelppage'] = 'Π’Ρ‹Π±Π΅Ρ€Π΅Ρ‚Π΅ страницу ΠΏΠΎΠΌΠΎΡ‰ΠΈ'; + $lang['strinvalidhelppage'] = 'ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ страница ΠΏΠΎΠΌΠΎΡ‰ΠΈ.'; + $lang['strlogintitle'] = 'Π’ΠΎΡˆΠ»ΠΈ Π½Π° %s'; + $lang['strlogoutmsg'] = 'Π’Ρ‹ΡˆΠ»ΠΈ ΠΈΠ· %s'; + $lang['strloading'] = 'Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ°...'; + $lang['strerrorloading'] = 'Ошибка ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅'; + $lang['strclicktoreload'] = 'Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ для ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ'; + + // Autovacuum + $lang['strautovacuum'] = 'АвтоматичСскоС пСрСстроСниС'; + $lang['strturnedon'] = 'Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ'; + $lang['strturnedoff'] = 'Π’Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ'; + $lang['strenabled'] = 'Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ'; + $lang['strnovacuumconf'] = 'ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ автоматичСского пСрСстроСния Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°.'; + $lang['strvacuumbasethreshold'] = 'Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΡ€ΠΎΠ³ пСрСстроСния'; + $lang['strvacuumscalefactor'] = 'ΠœΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹ΠΉ ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒ пСрСстроСния'; + $lang['stranalybasethreshold'] = 'Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΡ€ΠΎΠ³ Π°Π½Π°Π»ΠΈΠ·Π°'; + $lang['stranalyzescalefactor'] = 'ΠœΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹ΠΉ ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒ Π°Π½Π°Π»ΠΈΠ·Π°'; + $lang['strvacuumcostdelay'] = 'Π—Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΡ€ΠΈ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΠΈ стоимости пСрСстроСния'; + $lang['strvacuumcostlimit'] = 'ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ стоимости пСрСстроСния'; + $lang['strvacuumpertable'] = 'Установки автоматичСского пСрСстроСния ΠΏΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ'; + $lang['straddvacuumtable'] = 'Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ установки автоматичСского пСрСстроСния для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹'; + $lang['streditvacuumtable'] = 'Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ установки автоматичСского пСрСстроСния для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ %s'; + $lang['strdelvacuumtable'] = 'Π£Π΄Π°Π»ΠΈΡ‚ΡŒ установки автоматичСского пСрСстроСния для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ %s?'; + $lang['strvacuumtablereset'] = 'Бброс установок автоматичСского пСрСстроСния для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ %s ΠΊ значСниям ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ'; + $lang['strdelvacuumtablefail'] = 'Ошибка ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ установок автоматичСского пСрСстроСния для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ %s'; + $lang['strsetvacuumtablesaved'] = 'Установки автоматичСского пСрСстроСния для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ %s сохранСны.'; + $lang['strsetvacuumtablefail'] = 'Ошибка ΠΏΡ€ΠΈ сохранСнии установок автоматичСского пСрСстроСния %s.'; + $lang['strspecifydelvacuumtable'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ установки автоматичСского пСрСстроСния.'; + $lang['strspecifyeditvacuumtable'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ установки автоматичСского пСрСстроСния.'; + $lang['strnotdefaultinred'] = 'ЗначСния, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Ρ‹ красным Ρ†Π²Π΅Ρ‚ΠΎΠΌ.'; + + // Table-level Locks + $lang['strlocks'] = 'Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ'; + $lang['strtransaction'] = 'ID Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ'; + $lang['strvirtualtransaction'] = 'ID Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ'; + $lang['strprocessid'] = 'ID процСсса'; + $lang['strmode'] = 'Π Π΅ΠΆΠΈΠΌ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ'; + $lang['strislockheld'] = 'Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° удСрТиваСтся?'; + + // Prepared transactions + $lang['strpreparedxacts'] = 'ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ'; + $lang['strxactid'] = 'ID Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ'; + $lang['strgid'] = 'Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ ID'; + + // Fulltext search + $lang['strfulltext'] = 'ΠŸΠΎΠ»Π½ΠΎΡ‚Π΅ΠΊΡΡ‚ΠΎΠ²Ρ‹ΠΉ поиск (FTS)'; + $lang['strftsconfig'] = 'ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ FTS'; + $lang['strftsconfigs'] = 'ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ'; + $lang['strftscreateconfig'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ FTS'; + $lang['strftscreatedict'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ'; + $lang['strftscreatedicttemplate'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ шаблон словаря'; + $lang['strftscreateparser'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ парсСр'; + $lang['strftsnoconfigs'] = 'ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ FTS Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹.'; + $lang['strftsconfigdropped'] = 'ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ FTS ΡƒΠ΄Π°Π»Π΅Π½Π°.'; + $lang['strftsconfigdroppedbad'] = 'Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ FTS ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropftsconfig'] = 'Π’Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ FTS "%s"?'; + $lang['strconfdropftsdict'] = 'Π’Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ FTS "%s"?'; + $lang['strconfdropftsmapping'] = 'Π’Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ "%s" ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ FTS "%s"?'; + $lang['strftstemplate'] = 'Π¨Π°Π±Π»ΠΎΠ½'; + $lang['strftsparser'] = 'ΠŸΠ°Ρ€ΡΠ΅Ρ€'; + $lang['strftsconfigneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ имя ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ FTS.'; + $lang['strftsconfigcreated'] = 'ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ FTS создана.'; + $lang['strftsconfigcreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ FTS ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strftsmapping'] = 'ΠŸΡ€Π°Π²ΠΈΠ»Π°'; + $lang['strftsdicts'] = 'Π‘Π»ΠΎΠ²Π°Ρ€ΠΈ'; + $lang['strftsdict'] = 'Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ'; + $lang['strftsemptymap'] = 'ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΏΡ€Π°Π²ΠΈΠ» FTS пуста.'; + $lang['strftsconfigaltered'] = 'ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ FTS ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π°.'; + $lang['strftsconfigalteredbad'] = 'ИзмСнСниС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ FTS ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strftsconfigmap'] = 'ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΏΡ€Π°Π²ΠΈΠ» FTS'; + $lang['strftsparsers'] = 'ΠŸΠ°Ρ€ΡΠ΅Ρ€Ρ‹ FTS'; + $lang['strftsnoparsers'] = 'НСт доступных парсСров FTS.'; + $lang['strftsnodicts'] = 'НСт доступных словарСй FTS.'; + $lang['strftsdictcreated'] = 'Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ FTS создан.'; + $lang['strftsdictcreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ словаря FTS ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strftslexize'] = 'Ѐункция прСобразования Ρ‚ΠΎΠΊΠ΅Π½Π° Π² лСксСму (lexize)'; + $lang['strftsinit'] = 'Ѐункция ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ'; + $lang['strftsoptionsvalues'] = 'ΠžΠΏΡ†ΠΈΠΈ ΠΈ значСния'; + $lang['strftsdictneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ имя словаря FTS.'; + $lang['strftsdictdropped'] = 'Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ FTS ΡƒΠ΄Π°Π»Π΅Π½.'; + $lang['strftsdictdroppedbad'] = 'Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ словаря FTS ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strftsdictaltered'] = 'Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ FTS ΠΈΠ·ΠΌΠ΅Π½Π΅Π½.'; + $lang['strftsdictalteredbad'] = 'ИзмСнСниС словаря FTS ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strftsaddmapping'] = 'Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ'; + $lang['strftsspecifymappingtodrop'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ для удалСния.'; + $lang['strftsspecifyconfigtoalter'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ FTS для измСнСния'; + $lang['strftsmappingdropped'] = 'ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ FTS ΡƒΠ΄Π°Π»Π΅Π½ΠΎ.'; + $lang['strftsmappingdroppedbad'] = 'Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° FTS ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strftsnodictionaries'] = 'Π‘Π»ΠΎΠ²Π°Ρ€ΠΈ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹.'; + $lang['strftsmappingaltered'] = 'ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ FTS ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ.'; + $lang['strftsmappingalteredbad'] = 'ИзмСнСниС ΠΏΡ€Π°Π²ΠΈΠ»Π° FTS ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strftsmappingadded'] = 'ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ FTS Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ.'; + $lang['strftsmappingaddedbad'] = 'Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° FTS ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strftstabconfigs'] = 'ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ'; + $lang['strftstabdicts'] = 'Π‘Π»ΠΎΠ²Π°Ρ€ΠΈ'; + $lang['strftstabparsers'] = 'ΠŸΠ°Ρ€ΡΠ΅Ρ€Ρ‹'; + $lang['strftscantparsercopy'] = 'ΠŸΡ€ΠΈ создании ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ поиска нСльзя ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ парсСр ΠΈ шаблон.'; +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/russian.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/russian.php new file mode 100644 index 00000000..da842798 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/russian.php @@ -0,0 +1,586 @@ +'; + $lang['strfirst'] = '<< ΠŸΠ΅Ρ€Π².'; + $lang['strlast'] = 'Посл. >>'; + $lang['strfailed'] = 'ΠŸΡ€Π΅Ρ€Π²Π°Π½ΠΎ'; + $lang['strcreate'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ'; + $lang['strcreated'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΎ'; + $lang['strcomment'] = 'ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ'; + $lang['strlength'] = 'Π”Π»ΠΈΠ½Π°'; + $lang['strdefault'] = 'По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ'; + $lang['stralter'] = 'Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ'; + $lang['strok'] = 'OK'; + $lang['strcancel'] = 'ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ'; + $lang['strsave'] = 'Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ'; + $lang['strreset'] = 'Π‘Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ'; + $lang['strinsert'] = 'Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ'; + $lang['strselect'] = 'Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ'; + $lang['strdelete'] = 'Π£Π΄Π°Π»ΠΈΡ‚ΡŒ'; + $lang['strupdate'] = 'ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ'; + $lang['strreferences'] = 'Бсылки'; + $lang['stryes'] = 'Π”Π°'; + $lang['strno'] = 'НСт'; + $lang['strtrue'] = 'Π˜ΡΡ‚ΠΈΠ½Π°'; + $lang['strfalse'] = 'Π›ΠΎΠΆΡŒ'; + $lang['stredit'] = 'Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ'; + $lang['strcolumns'] = 'Атрибуты'; + $lang['strrows'] = 'запис(ь/ΠΈ/Π΅ΠΉ)'; + $lang['strrowsaff'] = 'запис(ь/ΠΈ/Π΅ΠΉ) ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ.'; + $lang['strobjects'] = 'ΠΎΠ±ΡŠΠ΅ΠΊΡ‚(Π°/ΠΎΠ²)'; + $lang['strexample'] = 'ΠΈ Ρ‚.Π΄.'; + $lang['strback'] = 'Назад'; + $lang['strqueryresults'] = 'Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ запроса'; + $lang['strshow'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ'; + $lang['strempty'] = 'ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ'; + $lang['strlanguage'] = 'Π―Π·Ρ‹ΠΊ'; + $lang['strencoding'] = 'ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°'; + $lang['strvalue'] = 'Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Π°'; + $lang['strunique'] = 'Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ'; + $lang['strprimary'] = 'ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ'; + $lang['strexport'] = 'Экспорт'; + $lang['strimport'] = 'Π˜ΠΌΠΏΠΎΡ€Ρ‚'; + $lang['strsql'] = 'SQL'; + $lang['strgo'] = 'Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ'; + $lang['stradmin'] = 'Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅'; + $lang['strvacuum'] = 'ΠŸΠ΅Ρ€Π΅ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ'; + $lang['stranalyze'] = 'ΠΠ½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ'; + $lang['strclusterindex'] = 'ΠšΠ»Π°ΡΡ‚Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ'; + $lang['strclustered'] = 'ΠšΠ»Π°ΡΡ‚Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Π½?'; + $lang['strreindex'] = 'ΠŸΠ΅Ρ€Π΅ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ индСкс'; + $lang['strrun'] = 'Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ'; + $lang['stradd'] = 'Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ'; + $lang['strevent'] = 'Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅'; + $lang['strwhere'] = 'Π“Π΄Π΅'; + $lang['strinstead'] = 'Π”Π΅Π»Π°Ρ‚ΡŒ вмСсто'; + $lang['strwhen'] = 'Когда'; + $lang['strformat'] = 'Π€ΠΎΡ€ΠΌΠ°Ρ‚'; + $lang['strdata'] = 'Π”Π°Π½Π½Ρ‹Π΅'; + $lang['strconfirm'] = 'ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ'; + $lang['strexpression'] = 'Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅'; + $lang['strellipsis'] = '...'; + $lang['strexpand'] = 'Π Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ'; + $lang['strcollapse'] = 'Π‘Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ'; + $lang['strexplain'] = 'ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ'; + $lang['strexplainanalyze'] = 'ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ Π°Π½Π°Π»ΠΈΠ·'; + $lang['strfind'] = 'Найти'; + $lang['stroptions'] = 'ΠžΠΏΡ†ΠΈΠΈ'; + $lang['strrefresh'] = 'ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ'; + $lang['strdownload'] = 'Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ'; + $lang['strdownloadgzipped'] = 'Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π°Ρ€Ρ…ΠΈΠ² gzip'; + $lang['strinfo'] = 'БвСдСния'; + $lang['stroids'] = 'OIDs'; + $lang['stradvanced'] = 'Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ'; + $lang['strvariables'] = 'ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅'; + $lang['strprocess'] = 'ΠŸΡ€ΠΎΡ†Π΅ΡΡ'; + $lang['strprocesses'] = 'ΠŸΡ€ΠΎΡ†Π΅ΡΡΡ‹'; + $lang['strsetting'] = 'ΠžΠΏΡ†ΠΈΠΈ'; + $lang['streditsql'] = 'Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ SQL'; + $lang['strruntime'] = 'ВрСмя выполнСния: %s мсСк'; + $lang['strpaginate'] = 'ΠΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Ρ‚ΡŒ страницы с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ'; + $lang['struploadscript'] = 'ΠΈΠ»ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ SQL-скрипт:'; + $lang['strstarttime'] = 'ВрСмя Π½Π°Ρ‡Π°Π»Π°'; + $lang['strfile'] = 'Π€Π°ΠΉΠ»'; + $lang['strfileimported'] = 'Π€Π°ΠΉΠ» ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½.'; + + // Error handling + $lang['strbadconfig'] = 'Π’Π°Ρˆ config.inc.php являСтся ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ. Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ· config.inc.php-dist.'; + $lang['strnotloaded'] = 'Π’Π°ΡˆΠ° инсталяция PHP Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ PostgreSQL. Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ PHP, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --with-pgsql для configure.'; + $lang['strbadschema'] = 'ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° нСвСрная схСма.'; + $lang['strbadencoding'] = 'Failed to set client encoding in database.'; + $lang['strsqlerror'] = 'Ошибка SQL:'; + $lang['strinstatement'] = 'Π’ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅:'; + $lang['strinvalidparam'] = 'НСвСрный ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ скрипта.'; + $lang['strnodata'] = 'Π”Π°Π½Π½Ρ‹Ρ… Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strnoobjects'] = 'ΠžΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strrownotunique'] = 'НСт ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° для этой записи.'; + $lang['strnouploads'] = 'Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„Π°ΠΉΠ»Π° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°.'; + $lang['strimporterror'] = 'Ошибка ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°.'; + $lang['strimporterrorline'] = 'Ошибка ΠΊΠ°Π½Π°Π»Π° ΠΏΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ %s.'; + + // Tables + $lang['strtable'] = 'Π’Π°Π±Π»ΠΈΡ†Π°'; + $lang['strtables'] = 'Π’Π°Π±Π»ΠΈΡ†Ρ‹'; + $lang['strshowalltables'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹'; + $lang['strnotables'] = 'Π’Π°Π±Π»ΠΈΡ† Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strnotable'] = ' Π’Π°Π±Π»ΠΈΡ†Π° Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π°.'; + $lang['strcreatetable'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ'; + $lang['strtablename'] = 'Имя Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹'; + $lang['strtableneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ имя Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.'; + $lang['strtableneedsfield'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»Π΅.'; + $lang['strtableneedscols'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ допустимоС число Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ².'; + $lang['strtablecreated'] = 'Π’Π°Π±Π»ΠΈΡ†Π° создана.'; + $lang['strtablecreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdroptable'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ "%s"?'; + $lang['strtabledropped'] = 'Π’Π°Π±Π»ΠΈΡ†Π° ΡƒΠ΄Π°Π»Π΅Π½Π°.'; + $lang['strtabledroppedbad'] = 'Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfemptytable'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ "%s"?'; + $lang['strtableemptied'] = 'Π’Π°Π±Π»ΠΈΡ†Π° ΠΎΡ‡ΠΈΡ‰Π΅Π½Π°.'; + $lang['strtableemptiedbad'] = 'ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΡ€Π΅Ρ€Π²Π°Π½Π°.'; + $lang['strinsertrow'] = 'Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ запись'; + $lang['strrowinserted'] = 'Π—Π°ΠΏΠΈΡΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π°.'; + $lang['strrowinsertedbad'] = 'Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ записи ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['streditrow'] = 'Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ запись'; + $lang['strrowupdated'] = 'Π—Π°ΠΏΠΈΡΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π°.'; + $lang['strrowupdatedbad'] = 'ОбновлСниС записи ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strdeleterow'] = 'Π£Π΄Π°Π»ΠΈΡ‚ΡŒ запись'; + $lang['strconfdeleterow'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ запись?'; + $lang['strrowdeleted'] = 'Π—Π°ΠΏΠΈΡΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π°.'; + $lang['strrowdeletedbad'] = 'Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ записи ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strsaveandrepeat'] = 'Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ'; + $lang['strfield'] = 'ПолС'; + $lang['strfields'] = 'Поля'; + $lang['strnumfields'] = 'Кол-Π²ΠΎ ΠΏΠΎΠ»Π΅ΠΉ'; + $lang['strfieldneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅'; + $lang['strselectallfields'] = 'Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ всС поля'; + $lang['strselectneedscol'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄ΠΈΠ½ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚'; + $lang['strselectunary'] = 'Π£Π½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ.'; + $lang['straltercolumn'] = 'Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚'; + $lang['strcolumnaltered'] = 'Атрибут ΠΈΠ·ΠΌΠ΅Π½Π΅Π½.'; + $lang['strcolumnalteredbad'] = 'ИзмСнСниС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropcolumn'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ "%s" Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ "%s"?'; + $lang['strcolumndropped'] = 'Атрибут ΡƒΠ΄Π°Π»Π΅Π½.'; + $lang['strcolumndroppedbad'] = 'Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['straddcolumn'] = 'Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚'; + $lang['strcolumnadded'] = 'Атрибут Π΄ΠΎΠ±Π°Π²Π»Π΅Π½.'; + $lang['strcolumnaddedbad'] = 'Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strdataonly'] = 'Волько Π΄Π°Π½Π½Ρ‹Π΅'; + $lang['strcascade'] = 'Каскадом'; + $lang['strtablealtered'] = 'Π’Π°Π±Π»ΠΈΡ†Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π°.'; + $lang['strtablealteredbad'] = 'ИзмСнСниС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strdataonly'] = 'Волько Π΄Π°Π½Π½Ρ‹Π΅'; + $lang['strstructureonly'] = 'Волько структуру'; + $lang['strstructureanddata'] = 'Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρƒ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅'; + $lang['strtabbed'] = 'Π§Π΅Ρ€Π΅Π· Ρ‚Π°Π±ΡƒΠ»ΡΡ†ΠΈΡŽ'; + $lang['strauto'] = 'Авто'; + + // Users + $lang['struser'] = 'ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ'; + $lang['strusers'] = 'ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ'; + $lang['strusername'] = 'Имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ'; + $lang['strpassword'] = 'ΠŸΠ°Ρ€ΠΎΠ»ΡŒ'; + $lang['strsuper'] = 'Π‘ΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ?'; + $lang['strcreatedb'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…?'; + $lang['strexpires'] = 'Π‘Ρ€ΠΎΠΊ дСйствия'; + $lang['strsessiondefaults'] = 'ΠžΠΏΡ†ΠΈΠΈ сСанса ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ'; + $lang['strnousers'] = 'НСт Ρ‚Π°ΠΊΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.'; + $lang['struserupdated'] = 'ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½.'; + $lang['struserupdatedbad'] = 'ОбновлСниС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strshowallusers'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ'; + $lang['strcreateuser'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ'; + $lang['struserneedsname'] = 'Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ввСсти имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.'; + $lang['strusercreated'] = 'ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ создан.'; + $lang['strusercreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropuser'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ "%s"?'; + $lang['struserdropped'] = 'ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΡƒΠ΄Π°Π»Π΅Π½.'; + $lang['struserdroppedbad'] = 'Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['straccount'] = 'Аккаунт'; + $lang['strchangepassword'] = 'Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ'; + $lang['strpasswordchanged'] = 'ΠŸΠ°Ρ€ΠΎΠ»ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½.'; + $lang['strpasswordchangedbad'] = 'ИзмСнСниС пароля ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strpasswordshort'] = 'ΠŸΠ°Ρ€ΠΎΠ»ΡŒ слишком ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ.'; + $lang['strpasswordconfirm'] = 'ΠŸΠ°Ρ€ΠΎΠ»ΡŒ Π½Π΅ соотвСтствуСт ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΡŽ.'; + + // Groups + $lang['strgroup'] = 'Π“Ρ€ΡƒΠΏΠΏΠ°'; + $lang['strgroups'] = 'Π“Ρ€ΡƒΠΏΠΏΡ‹'; + $lang['strnogroup'] = 'Π“Ρ€ΡƒΠΏΠΏΠ° Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π°.'; + $lang['strnogroups'] = 'Ни ΠΎΠ΄Π½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strcreategroup'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡƒ'; + $lang['strshowallgroups'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС Π³Ρ€ΡƒΠΏΠΏΡ‹'; + $lang['strgroupneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π³Ρ€ΡƒΠΏΠΏΡ‹.'; + $lang['strgroupcreated'] = 'Π“Ρ€ΡƒΠΏΠΏΠ° создана.'; + $lang['strgroupcreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropgroup'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡƒ "%s"?'; + $lang['strgroupdropped'] = 'Π“Ρ€ΡƒΠΏΠΏΠ° ΡƒΠ΄Π°Π»Π΅Π½Π°.'; + $lang['strgroupdroppedbad'] = 'Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strmembers'] = 'Участников'; + $lang['straddmember'] = 'Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ участника'; + $lang['strmemberadded'] = 'Участник Π΄ΠΎΠ±Π°Π²Π»Π΅Π½.'; + $lang['strmemberaddedbad'] = 'Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ участника ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strdropmember'] = 'Π£Π΄Π°Π»ΠΈΡ‚ΡŒ участника'; + $lang['strconfdropmember'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ участника "%s" ΠΈΠ· Π³Ρ€ΡƒΠΏΠΏΡ‹ "%s"?'; + $lang['strmemberdropped'] = 'Участник ΡƒΠ΄Π°Π»Π΅Π½.'; + $lang['strmemberdroppedbad'] = 'Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ участника ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + + // Privilges + $lang['strprivilege'] = 'ΠŸΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ'; + $lang['strprivileges'] = 'ΠŸΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ'; + $lang['strnoprivileges'] = 'ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ.'; + $lang['strgrant'] = 'Π£ΡΠΈΠ»ΠΈΡ‚ΡŒ'; + $lang['strrevoke'] = 'ΠžΡΠ»Π°Π±ΠΈΡ‚ΡŒ'; + $lang['strgranted'] = 'ΠŸΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹.'; + $lang['strgrantfailed'] = 'ИзмСнСниС ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strgrantbad'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΈ хотя Π±Ρ‹ ΠΎΠ΄Π½Ρƒ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡŽ.'; + $lang['stralterprivs'] = 'Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ'; + $lang['strgrantor'] = 'Π”ΠΎΠ½ΠΎΡ€'; + $lang['strasterisk'] = '*'; + + // Databases + $lang['strdatabase'] = 'Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…'; + $lang['strdatabases'] = 'Π‘Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…'; + $lang['strshowalldatabases'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…'; + $lang['strnodatabase'] = 'Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π°.'; + $lang['strnodatabases'] = 'Ни ΠΎΠ΄Π½ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strcreatedatabase'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…'; + $lang['strdatabasename'] = 'Имя Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…'; + $lang['strdatabaseneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ имя Π’Π°ΡˆΠ΅ΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ….'; + $lang['strdatabasecreated'] = 'Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… создана.'; + $lang['strdatabasecreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropdatabase'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… "%s"?'; + $lang['strdatabasedropped'] = ' Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½Π°.'; + $lang['strdatabasedroppedbad'] = 'Π£Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strentersql'] = 'Π’Π²Π΅Π΄ΠΈΡ‚Π΅ SQL-запрос Π½ΠΈΠΆΠ΅:'; + $lang['strsqlexecuted'] = 'SQL-запрос Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½.'; + $lang['strvacuumgood'] = 'ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ пСрСстройки Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°.'; + $lang['strvacuumbad'] = 'ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ пСрСстройки ΠΏΡ€Π΅Ρ€Π²Π°Π½Π°.'; + $lang['stranalyzegood'] = ' ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°.'; + $lang['stranalyzebad'] = ' ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°.'; + $lang['strreindexgood'] = 'ΠŸΠ΅Ρ€Π΅ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°.'; + $lang['strreindexbad'] = 'ΠŸΠ΅Ρ€Π΅ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ ΠΏΡ€Π΅Ρ€Π²Π°Π½Π°.'; + $lang['strfull'] = 'ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ'; + $lang['strfreeze'] = 'Π—Π°ΠΌΠΎΡ€ΠΎΠ·ΠΈΡ‚ΡŒ'; + $lang['strforce'] = 'ΠŸΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ'; + + // Views + $lang['strview'] = 'ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅'; + $lang['strviews'] = 'ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡ'; + $lang['strshowallviews'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС прСдставлСния'; + $lang['strnoview'] = 'ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strnoviews'] = 'Ни ΠΎΠ΄Π½ΠΎΠ³ΠΎ прСдставлСния Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strcreateview'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ прСдставлСниС'; + $lang['strviewname'] = 'Имя прСдставлСния'; + $lang['strviewneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя прСдставлСния.'; + $lang['strviewneedsdef'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ прСдставлСния.'; + $lang['strviewneedsfields'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ для Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π² вашС прСдставлСниС.'; + $lang['strviewcreated'] = 'ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ создано.'; + $lang['strviewcreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ прСдставлСния ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropview'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ прСдставлСниС "%s"?'; + $lang['strviewdropped'] = 'ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΎ.'; + $lang['strviewdroppedbad'] = 'Π£Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ прСдставлСния ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strviewupdated'] = 'ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΎ.'; + $lang['strviewupdatedbad'] = 'ОбновлСниС прСдставлСния ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strviewlink'] = 'БвязанныС ΠΊΠ»ΡŽΡ‡ΠΈ'; + $lang['strviewconditions'] = 'Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ условия'; + $lang['strcreateviewwiz'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ прСдставлСниС ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠΎΠΌ'; + + // Sequences + $lang['strsequence'] = 'ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ'; + $lang['strsequences'] = ' ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ'; + $lang['strshowallsequences'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ'; + $lang['strnosequence'] = 'ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π°.'; + $lang['strnosequences'] = 'Ни ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strcreatesequence'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ'; + $lang['strlastvalue'] = 'ПослСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅'; + $lang['strincrementby'] = 'Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π°'; + $lang['strstartvalue'] = 'ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅'; + $lang['strmaxvalue'] = 'Макс. Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°'; + $lang['strminvalue'] = 'Мин. Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°'; + $lang['strcachevalue'] = 'Π Π°Π·ΠΌΠ΅Ρ€ кэша'; + $lang['strlogcount'] = 'Log Count'; + $lang['striscycled'] = 'Π—Π°Ρ†ΠΈΠΊΠ»ΠΈΡ‚ΡŒ?'; + $lang['strsequenceneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.'; + $lang['strsequencecreated'] = 'ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ создана.'; + $lang['strsequencecreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropsequence'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ "%s"?'; + $lang['strsequencedropped'] = 'ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½Π°.'; + $lang['strsequencedroppedbad'] = 'Π£Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strsequencereset'] = 'ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΡΠ±Ρ€ΠΎΡˆΠ΅Π½Π°.'; + $lang['strsequenceresetbad'] = 'Бброс ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€Π΅Ρ€Π²Π°Π½.'; + + // Indexes + $lang['strindex'] = 'ИндСкс'; + $lang['strindexes'] = 'Π˜Π½Π΄Π΅ΠΊΡΡ‹'; + $lang['strindexname'] = 'Имя индСкса'; + $lang['strshowallindexes'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС индСксы'; + $lang['strnoindex'] = 'ИндСкс Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½.'; + $lang['strnoindexes'] = 'Ни ΠΎΠ΄Π½ΠΎΠ³ΠΎ индСкса Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strcreateindex'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ индСкс'; + $lang['strtabname'] = 'Имя Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹'; + $lang['strcolumnname'] = 'Имя Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°'; + $lang['strindexneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя индСкса'; + $lang['strindexneedscols'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ допустимоС количСство Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ².'; + $lang['strindexcreated'] = 'ИндСкс создан.'; + $lang['strindexcreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ индСкса ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropindex'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ индСкс "%s"?'; + $lang['strindexdropped'] = 'ИндСкс ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½.'; + $lang['strindexdroppedbad'] = 'Π£Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ индСкса ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strkeyname'] = 'Имя ΠΊΠ»ΡŽΡ‡Π°'; + $lang['struniquekey'] = 'Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡'; + $lang['strprimarykey'] = 'ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡'; + $lang['strindextype'] = 'Π’ΠΈΠ΄ индСкса'; + $lang['strindexname'] = 'Имя индСкса'; + $lang['strtablecolumnlist'] = 'Атрибутов Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅'; + $lang['strindexcolumnlist'] = 'Атрибутов Π² индСксС'; + $lang['strconfcluster'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΊΠ»Π°ΡΡ‚Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ "%s"?'; + $lang['strclusteredgood'] = 'ΠšΠ»Π°ΡΡ‚Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°.'; + $lang['strclusteredbad'] = 'ΠšΠ»Π°ΡΡ‚Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€Π΅Ρ€Π²Π°Π½Π°.'; + + // Rules + $lang['strrules'] = 'ΠŸΡ€Π°Π²ΠΈΠ»Π°'; + $lang['strrule'] = 'ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ'; + $lang['strshowallrules'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС ΠΏΡ€Π°Π²ΠΈΠ»Π°'; + $lang['strnorule'] = 'ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strnorules'] = 'Ни ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strcreaterule'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ'; + $lang['strrulename'] = 'Имя ΠΏΡ€Π°Π²ΠΈΠ»Π°'; + $lang['strruleneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя ΠΏΡ€Π°Π²ΠΈΠ»Π°.'; + $lang['strrulecreated'] = 'ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ создано.'; + $lang['strrulecreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdroprule'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ "%s" on "%s"?'; + $lang['strruledropped'] = 'ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΎ.'; + $lang['strruledroppedbad'] = 'Π£Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + + // Constraints + $lang['strconstraints'] = 'ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ'; + $lang['strshowallconstraints'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС ограничСния'; + $lang['strnoconstraints'] = 'Ни ΠΎΠ΄Π½ΠΎΠ³ΠΎ ограничСния Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strcreateconstraint'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅'; + $lang['strconstraintcreated'] = 'ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ создано.'; + $lang['strconstraintcreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ограничСния ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropconstraint'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ "%s" on "%s"?'; + $lang['strconstraintdropped'] = 'ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΎ.'; + $lang['strconstraintdroppedbad'] = 'Π£Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ ограничСния ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['straddcheck'] = 'Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ'; + $lang['strcheckneedsdefinition'] = 'ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ нуТдаСтся Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ.'; + $lang['strcheckadded'] = 'ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ.'; + $lang['strcheckaddedbad'] = 'Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ограничСния ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['straddpk'] = 'Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡'; + $lang['strpkneedscols'] = 'ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚.'; + $lang['strpkadded'] = 'ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½.'; + $lang['strpkaddedbad'] = 'Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['stradduniq'] = 'Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡'; + $lang['struniqneedscols'] = 'Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚.'; + $lang['struniqadded'] = 'Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½.'; + $lang['struniqaddedbad'] = 'Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['straddfk'] = 'Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ внСшний ΠΊΠ»ΡŽΡ‡'; + $lang['strfkneedscols'] = 'Π’Π½Π΅ΡˆΠ½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚.'; + $lang['strfkneedstarget'] = 'Π’Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ†Π΅Π»Π΅Π²ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ.'; + $lang['strfkadded'] = 'Π’Π½Π΅ΡˆΠ½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½.'; + $lang['strfkaddedbad'] = 'Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ внСшнСго ΠΊΠ»ΡŽΡ‡Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strfktarget'] = 'ЦСлСвая Ρ‚Π°Π±Π»ΠΈΡ†Π°'; + $lang['strfkcolumnlist'] = 'Атрибуты Π² ΠΊΠ»ΡŽΡ‡Π΅'; + $lang['strondelete'] = 'ON DELETE'; + $lang['stronupdate'] = 'ON UPDATE'; + + // Functions + $lang['strfunction'] = 'Ѐункция'; + $lang['strfunctions'] = ' Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ'; + $lang['strshowallfunctions'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ'; + $lang['strnofunction'] = 'Ѐункция Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π°.'; + $lang['strnofunctions'] = 'Ни ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strcreatefunction'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ'; + $lang['strfunctionname'] = 'Имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ'; + $lang['strreturns'] = 'Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅'; + $lang['strarguments'] = 'АргумСнты'; + $lang['strproglanguage'] = 'Π―Π·Ρ‹ΠΊ программирования'; + $lang['strproglanguage'] = 'Π―Π·Ρ‹ΠΊ'; + $lang['strfunctionneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.'; + $lang['strfunctionneedsdef'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.'; + $lang['strfunctioncreated'] = 'Ѐункция создана.'; + $lang['strfunctioncreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropfunction'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ "%s"?'; + $lang['strfunctiondropped'] = 'Ѐункция ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½Π°.'; + $lang['strfunctiondroppedbad'] = 'Π£Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strfunctionupdated'] = 'Ѐункция ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π°.'; + $lang['strfunctionupdatedbad'] = 'ОбновлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + + // Triggers + $lang['strtrigger'] = 'Π’Ρ€ΠΈΠ³Π³Π΅Ρ€'; + $lang['strtriggers'] = ' Π’Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹'; + $lang['strshowalltriggers'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹'; + $lang['strnotrigger'] = 'Π’Ρ€ΠΈΠ³Π³Π΅Ρ€ Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½.'; + $lang['strnotriggers'] = 'Ни ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strcreatetrigger'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€'; + $lang['strtriggerneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π°.'; + $lang['strtriggerneedsfunc'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π°.'; + $lang['strtriggercreated'] = 'Π’Ρ€ΠΈΠ³Π³Π΅Ρ€ создан.'; + $lang['strtriggercreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdroptrigger'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ "%s" Π½Π° "%s"?'; + $lang['strtriggerdropped'] = 'Π’Ρ€ΠΈΠ³Π³Π΅Ρ€ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½.'; + $lang['strtriggerdroppedbad'] = 'Π£Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strtriggeraltered'] = 'Π’Ρ€ΠΈΠ³Π³Π΅Ρ€ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½.'; + $lang['strtriggeralteredbad'] = 'ИзмСнСниС Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + + // Types + $lang['strtype'] = 'Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…'; + $lang['strtypes'] = 'Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…'; + $lang['strshowalltypes'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…'; + $lang['strnotype'] = 'Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½.'; + $lang['strnotypes'] = 'Ни ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strcreatetype'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…'; + $lang['strtypename'] = 'Имя Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…'; + $lang['strinputfn'] = 'Ѐункция Π²Π²ΠΎΠ΄Π°'; + $lang['stroutputfn'] = 'Ѐункция Π²Ρ‹Π²ΠΎΠ΄Π°'; + $lang['strpassbyval'] = 'ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ?'; + $lang['stralignment'] = 'Π’Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅'; + $lang['strelement'] = 'Π­Π»Π΅ΠΌΠ΅Π½Ρ‚'; + $lang['strdelimiter'] = 'Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ'; + $lang['strstorage'] = 'Storage'; + $lang['strtypeneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ….'; + $lang['strtypeneedslen'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ для Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ….'; + $lang['strtypecreated'] = 'Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… создан.'; + $lang['strtypecreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdroptype'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… "%s"?'; + $lang['strtypedropped'] = 'Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½.'; + $lang['strtypedroppedbad'] = 'Π£Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + + // Schemas + $lang['strschema'] = 'Π‘Ρ…Π΅ΠΌΠ°'; + $lang['strschemas'] = 'Π‘Ρ…Π΅ΠΌΡ‹'; + $lang['strshowallschemas'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС схСмы'; + $lang['strnoschema'] = 'Π‘Ρ…Π΅ΠΌΠ° Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π°.'; + $lang['strnoschemas'] = 'Ни ΠΎΠ΄Π½ΠΎΠΉ схСмы Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strcreateschema'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ схСму'; + $lang['strschemaname'] = 'Имя схСмы'; + $lang['strschemaneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя схСмы.'; + $lang['strschemacreated'] = 'Π‘Ρ…Π΅ΠΌΠ° создана.'; + $lang['strschemacreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ схСмы ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropschema'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ схСму "%s"?'; + $lang['strschemadropped'] = 'Π‘Ρ…Π΅ΠΌΠ° ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½Π°.'; + $lang['strschemadroppedbad'] = 'Π£Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ схСмы ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strschemaaltered'] = 'Π‘Ρ…Π΅ΠΌΠ° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π°.'; + $lang['strschemaalteredbad'] = 'ОбновлСниС схСмы ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + + // Reports + + // Domains + $lang['strdomain'] = 'Π”ΠΎΠΌΠ΅Π½'; + $lang['strdomains'] = 'Π”ΠΎΠΌΠ΅Π½Ρ‹'; + $lang['strshowalldomains'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС Π΄ΠΎΠΌΠ΅Π½Ρ‹'; + $lang['strnodomains'] = 'Ни ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strcreatedomain'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄ΠΎΠΌΠ΅Π½'; + $lang['strdomaindropped'] = 'Π”ΠΎΠΌΠ΅Π½ ΡƒΠ΄Π°Π»Π΅Π½.'; + $lang['strdomaindroppedbad'] = 'Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΌΠ΅Π½Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropdomain'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΄ΠΎΠΌΠ΅Π½ "%s"?'; + $lang['strdomainneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя Π΄ΠΎΠΌΠ΅Π½Π°.'; + $lang['strdomaincreated'] = 'Π”ΠΎΠΌΠ΅Π½ создан.'; + $lang['strdomaincreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄ΠΎΠΌΠ΅Π½Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strdomainaltered'] = 'Π”ΠΎΠΌΠ΅Π½ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½.'; + $lang['strdomainalteredbad'] = 'ИзмСнСниС Π΄ΠΎΠΌΠ΅Π½Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + + // Operators + $lang['stroperator'] = 'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€'; + $lang['stroperators'] = 'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹'; + $lang['strshowalloperators'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹'; + $lang['strnooperator'] = 'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½.'; + $lang['strnooperators'] = 'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Ρ‹.'; + $lang['strcreateoperator'] = 'Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€'; + $lang['strleftarg'] = 'Π’ΠΈΠΏ Π»Π΅Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°'; + $lang['strrightarg'] = 'Π’ΠΈΠΏ ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°'; + $lang['strcommutator'] = 'ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅'; + $lang['strnegator'] = 'ΠžΡ‚Ρ€ΠΈΡ†Π°Π½ΠΈΠ΅'; + $lang['strrestrict'] = 'ОслаблСниС'; + $lang['strjoin'] = 'ОбъСдинСниС'; + $lang['strhashes'] = 'Π₯Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅'; + $lang['strmerges'] = 'БлияниС'; + $lang['strleftsort'] = 'Π‘ΠΎΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ Π»Π΅Π²ΠΎΠΌΡƒ'; + $lang['strrightsort'] = 'Π‘ΠΎΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ ΠΏΡ€Π°Π²ΠΎΠΌΡƒ'; + $lang['strlessthan'] = 'МСньшС'; + $lang['strgreaterthan'] = 'Π‘ΠΎΠ»ΡŒΡˆΠ΅'; + $lang['stroperatorneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°.'; + $lang['stroperatorcreated'] = 'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ создан'; + $lang['stroperatorcreatedbad'] = 'Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropoperator'] = 'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ "%s"?'; + $lang['stroperatordropped'] = 'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΡƒΠ΄Π°Π»Π΅Π½.'; + $lang['stroperatordroppedbad'] = 'Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + + // Casts + $lang['strcasts'] = 'ΠžΠ±Ρ€Π°Π·Ρ†Ρ‹'; + $lang['strnocasts'] = 'ΠžΠ±Ρ€Π°Π·Ρ†ΠΎΠ² Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strsourcetype'] = 'Π’ΠΈΠΏ источника'; + $lang['strtargettype'] = 'Π’ΠΈΠΏ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ°'; + $lang['strimplicit'] = 'НСявный'; + $lang['strinassignment'] = 'Π’ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ'; + $lang['strbinarycompat'] = '(Π΄Π²ΠΎΠΈΡ‡Π½ΠΎ совмСстимый)'; + + // Conversions + $lang['strconversions'] = 'ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅'; + $lang['strnoconversions'] = 'ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strsourceencoding'] = 'ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° источника'; + $lang['strtargetencoding'] = 'ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ°'; + + // Languages + $lang['strlanguages'] = 'Π―Π·Ρ‹ΠΊΠΈ'; + $lang['strnolanguages'] = 'Π―Π·Ρ‹ΠΊΠΎΠ² Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strtrusted'] = 'ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ'; + + // Info + $lang['strnoinfo'] = 'НСт доступной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.'; + $lang['strreferringtables'] = 'Π‘ΡΡ‹Π»Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹'; + $lang['strparenttables'] = 'Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹'; + $lang['strchildtables'] = 'Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹'; + + // Aggregates + $lang['straggregates'] = 'АгрСгатныС выраТСния'; + $lang['strnoaggregates'] = 'АгрСгатных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['stralltypes'] = '(ВсС Ρ‚ΠΈΠΏΡ‹)'; + + // Operator Classes + $lang['stropclasses'] = 'ΠšΠ»Π°ΡΡΡ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²'; + $lang['strnoopclasses'] = 'Классов ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['straccessmethod'] = 'ΠœΠ΅Ρ‚ΠΎΠ΄ доступа'; + + // Stats and performance + $lang['strrowperf'] = 'ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ записи'; + $lang['strioperf'] = 'ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°'; + $lang['stridxrowperf'] = 'ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ индСкса записи'; + $lang['stridxioperf'] = 'ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ индСкса Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°'; + $lang['strpercent'] = '%'; + $lang['strsequential'] = 'ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ'; + $lang['strscan'] = 'Π‘ΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ'; + $lang['strread'] = 'Π§ΠΈΡ‚Π°Ρ‚ΡŒ'; + $lang['strfetch'] = 'Π˜Π·Π²Π»Π΅Ρ‡ΡŒ'; + $lang['strheap'] = 'ΠœΡƒΡΠΎΡ€'; + $lang['strtoast'] = 'TOAST'; + $lang['strtoastindex'] = 'TOAST индСкс'; + $lang['strcache'] = 'КСш'; + $lang['strdisk'] = 'Диск'; + $lang['strrows2'] = 'Записи'; + + // Miscellaneous + $lang['strtopbar'] = '%s выполняСтся Π½Π° %s:%s -- Π’Ρ‹ зарСгистрированы ΠΊΠ°ΠΊ "%s"'; + $lang['strtimefmt'] = ' j-m-Y g:i'; + $lang['strhelp'] = 'ΠŸΠΎΠΌΠΎΡ‰ΡŒ'; + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/slovak.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/slovak.php new file mode 100644 index 00000000..51a3f6b3 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/slovak.php @@ -0,0 +1,648 @@ +>'; + $lang['strfailed'] = 'Chyba.'; + $lang['strcreate'] = 'VytvoriΕ₯'; + $lang['strcreated'] = 'VytvorenΓ©'; + $lang['strcomment'] = 'KomentΓ‘r'; + $lang['strlength'] = 'DΔΊΕΎka'; + $lang['strdefault'] = 'PredvolenΓ©'; + $lang['stralter'] = 'ZmeniΕ₯'; + $lang['strok'] = 'OK'; + $lang['strcancel'] = 'ZruΕ‘iΕ₯'; + $lang['strsave'] = 'UloΕΎiΕ₯'; + $lang['strreset'] = 'Reset'; + $lang['strinsert'] = 'VloΕΎiΕ₯'; + $lang['strselect'] = 'VybraΕ₯'; + $lang['strdelete'] = 'ZmazaΕ₯'; + $lang['strupdate'] = 'AktualizovaΕ₯'; + $lang['strreferences'] = 'Referencie'; + $lang['stryes'] = 'Áno'; + $lang['strno'] = 'Nie'; + $lang['strtrue'] = 'True'; + $lang['strfalse'] = 'False'; + $lang['stredit'] = 'UpraviΕ₯'; + $lang['strcolumn'] = 'StΔΊpec'; + $lang['strcolumns'] = 'StΔΊpce'; + $lang['strrows'] = 'riadky'; + $lang['strrowsaff'] = 'riadkov ovplyvnenΓ½ch.'; + $lang['strobjects'] = 'objekt(y)'; + $lang['strback'] = 'SpΓ€Ε₯'; + $lang['strqueryresults'] = 'VΓ½sledky Dotazu'; + $lang['strshow'] = 'UkΓ‘zaΕ₯'; + $lang['strempty'] = 'VyprΓ‘zdniΕ₯'; + $lang['strlanguage'] = 'Jazyk'; + $lang['strencoding'] = 'KΓ³dovanie'; + $lang['strvalue'] = 'Hodnota'; + $lang['strunique'] = 'UnikΓ‘tny'; + $lang['strprimary'] = 'PrimΓ‘rny'; + $lang['strexport'] = 'ExportovaΕ₯'; + $lang['strimport'] = 'Import'; + $lang['strallowednulls'] = 'PovolenΓ½ NULL znak'; + $lang['strbackslashn'] = '\N'; + $lang['strnull'] = 'Null'; + $lang['strnull'] = 'NULL (slovo)'; + $lang['stremptystring'] = 'PrΓ‘zdny reΕ₯azec/pole'; + $lang['strsql'] = 'SQL'; + $lang['stradmin'] = 'Admin'; + $lang['strvacuum'] = 'VyčistiΕ₯'; + $lang['stranalyze'] = 'AnalyzovaΕ₯'; + $lang['strclusterindex'] = 'Cluster'; + $lang['strclustered'] = 'Clustered?'; + $lang['strreindex'] = 'Reindex'; + $lang['strrun'] = 'SpustiΕ₯'; + $lang['stradd'] = 'PridaΕ₯'; + $lang['strremove'] = 'ZmazaΕ₯'; + $lang['strevent'] = 'PrΓ­padne'; + $lang['strwhere'] = 'Kde'; + $lang['strinstead'] = 'UrobiΕ₯ Namiesto'; + $lang['strwhen'] = 'Kedy'; + $lang['strformat'] = 'FormΓ‘t'; + $lang['strdata'] = 'DΓ‘ta'; + $lang['strconfirm'] = 'PotvrdiΕ₯'; + $lang['strexpression'] = 'VΓ½raz'; + $lang['strellipsis'] = '...'; + $lang['strseparator'] = ': '; + $lang['strexpand'] = 'RozΕ‘Γ­riΕ₯'; + $lang['strcollapse'] = 'ZbaliΕ₯'; + $lang['strexplain'] = 'VysvetliΕ₯'; + $lang['strexplainanalyze'] = 'VysvetliΕ₯ Analyze'; + $lang['strfind'] = 'NΓ‘jsΕ₯'; + $lang['stroptions'] = 'Nastavenia'; + $lang['strrefresh'] = 'ObnoviΕ₯'; + $lang['strdownload'] = 'Download'; + $lang['strdownloadgzipped'] = 'StiahnuΕ₯ skomprimovanΓ© pomocou gzip'; + $lang['strinfo'] = 'Info'; + $lang['stroids'] = 'OIDs'; + $lang['stradvanced'] = 'Viac'; + $lang['strvariables'] = 'PremennΓ©'; + $lang['strprocess'] = 'Proces'; + $lang['strprocesses'] = 'Procesy'; + $lang['strsetting'] = 'Nastavenie'; + $lang['streditsql'] = 'UpraviΕ₯ SQL'; + $lang['strruntime'] = 'CelkovΓ½ beh: %s ms'; + $lang['strpaginate'] = 'VΓ½sledky strΓ‘nkovania'; + $lang['struploadscript'] = 'alebo uploadni SQL skript:'; + $lang['strstarttime'] = 'Čas Ε‘tartu'; + $lang['strfile'] = 'SΓΊbor'; + $lang['strfileimported'] = 'SΓΊbor importovanΓ½.'; + $lang['strtrycred'] = 'PouΕΎiΕ₯ tieto hodnoty pre vΕ‘etky hodnoty'; +$lang['strexecute'] = 'Execute'; + + // Error handling + $lang['strnoframes'] = 'TΓ‘to aplikΓ‘cia funguje najlapΕ‘ie s prehliadačom, ktorΓ½ podporuje technolΓ³giu frame-ov, no mΓ΄ΕΎe byΕ₯ pouΕΎitΓ½ aj takΓ½m, ktorΓ½ to nepodporuje nasledovanΓ­m tohto odkazu:'; + $lang['strnoframeslink'] = 'NepouΕΎΓ­vaΕ₯ frame-y'; + $lang['strbadconfig'] = 'Tvoj config.inc.php je zastaralΓ½. MusΓ­Ε‘ vygenerovaΕ₯ novΓ½ zo sΓΊboru config.inc.php-dist.'; + $lang['strnotloaded'] = 'Tvoje PHP nie je skompilovanΓ© s potrebnou podporou databΓ‘z.'; + $lang['strpostgresqlversionnotsupported'] = 'Tvoja verzia PostgreSQL nie je podporovanΓ‘. ProsΓ­m aktualizuj ju na verziu %s alebo vyΕ‘Ε‘iu.'; + $lang['strbadschema'] = 'Ε pecifikovanΓ‘ chybnΓ‘ schΓ©ma.'; + $lang['strbadencoding'] = 'Nastavenie kΓ³dovania v databΓ‘ze zlyhalo.'; + $lang['strsqlerror'] = 'SQL chyba:'; + $lang['strinstatement'] = 'Vo vΓ½raze:'; + $lang['strinvalidparam'] = 'ChybnΓ© parametre skriptu.'; + $lang['strnodata'] = 'NenΓ‘jdenΓ© ΕΎiadne zΓ‘znamy.'; + $lang['strnoobjects'] = 'NenΓ‘jdenΓ© ΕΎiadne objekty.'; + $lang['strrownotunique'] = 'Ε½iadny unikΓ‘tny identifikΓ‘rot pre tento riadok.'; + $lang['strnouploads'] = 'Upload sΓΊborov je vypnutΓ½.'; + $lang['strimporterror'] = 'Chyba Import-u.'; + $lang['strimporterror-fileformat'] = 'Chyba importu: AutomatickΓ© určenie formΓ‘tu sΓΊboru zlyhalo.'; + $lang['strimporterrorline'] = 'Chyba Import-u na riadku %s.'; + $lang['strimporterrorline-badcolumnnum'] = 'Chyba importu na riadku %s: Riadok nemΓ‘ sprΓ‘vny počet stΔΊpcov.'; + $lang['strimporterror-uploadedfile'] = 'Chyba importu: SΓΊbor nemΓ΄ΕΎe byΕ₯ upload-nutΓ½ k serveru'; + $lang['strcannotdumponwindows'] = 'Dump komplexnΓ½ch tabuliek a schΓ©m nie je na platforme Windows podporovanΓ½.'; + + // Tables + $lang['strtable'] = 'TabuΔΎka'; + $lang['strtables'] = 'TabuΔΎky'; + $lang['strshowalltables'] = 'ZobraziΕ₯ VΕ‘etky TabuΔΎky'; + $lang['strnotables'] = 'NenΓ‘jdenΓ© ΕΎiadne tabuΔΎky.'; + $lang['strnotable'] = 'NenΓ‘jdenΓ‘ ΕΎiadna tabuΔΎka.'; + $lang['strcreatetable'] = 'VytvoriΕ₯ tabuΔΎku'; + $lang['strtablename'] = 'NΓ‘zov tabuΔΎky'; + $lang['strtableneedsname'] = 'MusΓ­Ε‘ zadaΕ₯ nΓ‘zov pre tvoju tabuΔΎku.'; + $lang['strtableneedsfield'] = 'MusΓ­Ε‘ Ε‘pecifikovaΕ₯ aspoň jedno pole.'; + $lang['strtableneedscols'] = 'TabuΔΎky vyΕΎadujΓΊ vyhovujΓΊci počet stΔΊpcov.'; + $lang['strtablecreated'] = 'TabuΔΎka vytvorenΓ‘.'; + $lang['strtablecreatedbad'] = 'TabuΔΎka nebola vytvorenΓ‘.'; + $lang['strconfdroptable'] = 'Naozaj chceΕ‘ odstrΓ‘niΕ₯ tabuΔΎku "%s"?'; + $lang['strtabledropped'] = 'TabuΔΎka odstrΓ‘nenΓ‘.'; + $lang['strtabledroppedbad'] = 'TabuΔΎka nebola odstrΓ‘nenΓ‘.'; + $lang['strconfemptytable'] = 'Si si istΓ½, ΕΎe chceΕ‘ vyprΓ‘zdniΕ₯ tabuΔΎku "%s"?'; + $lang['strtableemptied'] = 'TabuΔΎka vyprΓ‘zdnenΓ‘.'; + $lang['strtableemptiedbad'] = 'TabuΔΎka nebola vyprΓ‘zdnenΓ‘.'; + $lang['strinsertrow'] = 'VloΕΎiΕ₯ Riadok'; + $lang['strrowinserted'] = 'Riadok vloΕΎenΓ½.'; + $lang['strrowinsertedbad'] = 'Riadok nebol vloΕΎenΓ½.'; + $lang['strrowduplicate'] = 'VloΕΎenie riadku zlyhalo, pokus o duplikΓ‘tny insert.'; + $lang['streditrow'] = 'UpraviΕ₯ Riadok'; + $lang['strrowupdated'] = 'Riadok upravenΓ½.'; + $lang['strrowupdatedbad'] = 'Riadok nebol upravenΓ½.'; + $lang['strdeleterow'] = 'ZmazaΕ₯ Riadok'; + $lang['strconfdeleterow'] = 'Si si istΓ½, ΕΎe chceΕ‘ zmazaΕ₯ tento riadok?'; + $lang['strrowdeleted'] = 'Riadok zmazanΓ½.'; + $lang['strrowdeletedbad'] = 'Riadok nebol zmazanΓ½.'; + $lang['strinsertandrepeat'] = 'VloΕΎiΕ₯ & ZopakovaΕ₯'; + $lang['strnumcols'] = 'Počet stΔΊpcov'; + $lang['strcolneedsname'] = 'MusΓ­Ε‘ zadaΕ₯ nΓ‘zov pre tvoj stΔΊpec'; + $lang['strselectallfields'] = 'VybraΕ₯ vΕ‘etky polia'; + $lang['strselectneedscol'] = 'MusΓ­Ε‘ označiΕ₯ aspoň jeden stΔΊpec.'; + $lang['strselectunary'] = 'UnΓ‘rne operΓ‘tory nemΓ΄ΕΎu maΕ₯ hodnoty.'; + $lang['straltercolumn'] = 'ZmeniΕ₯ StΔΊpec'; + $lang['strcolumnaltered'] = 'StΔΊpec zmenenΓ½.'; + $lang['strcolumnalteredbad'] = 'StΔΊpec nebol zmenenΓ½.'; + $lang['strconfdropcolumn'] = 'Naozaj chceΕ‘ zmazaΕ₯ stΔΊpec "%s" z tabuΔΎky "%s"?'; + $lang['strcolumndropped'] = 'StΔΊpec zmenenΓ½.'; + $lang['strcolumndroppedbad'] = 'StΔΊpec nebol zmazanΓ½.'; + $lang['straddcolumn'] = 'PridaΕ₯ StΔΊpec'; + $lang['strcolumnadded'] = 'StΔΊpec pridanΓ½.'; + $lang['strcolumnaddedbad'] = 'StΔΊpec nebol pridanΓ½.'; + $lang['strcascade'] = 'CASCADE'; + $lang['strtablealtered'] = 'TabuΔΎka zmenenΓ‘.'; + $lang['strtablealteredbad'] = 'TabuΔΎka nebola zmenenΓ‘.'; + $lang['strdataonly'] = 'Iba DΓ‘ta'; + $lang['strstructureonly'] = 'Iba Ε truktΓΊra'; + $lang['strstructureanddata'] = 'Ε truktΓΊra a DΓ‘ta'; + $lang['strtabbed'] = 'Tabbed'; + $lang['strauto'] = 'Auto'; + $lang['strconfvacuumtable'] = 'Naozaj chceΕ‘ vyčistiΕ₯ "%s"?'; + $lang['strestimatedrowcount'] = 'OdhadovanΓ½ počet riadkov'; + + // Users + $lang['struser'] = 'PouΕΎΓ­vateΔΎ'; + $lang['strusers'] = 'PouΕΎΓ­vatelia'; + $lang['strusername'] = 'Meno pouΕΎΓ­vateΔΎa'; + $lang['strpassword'] = 'Heslo'; + $lang['strsuper'] = 'Superuser?'; + $lang['strcreatedb'] = 'VytvΓ‘ranie DB?'; + $lang['strexpires'] = 'Expiruje'; + $lang['strsessiondefaults'] = 'Sessions defaults'; //s cim to tak suvis??:) + $lang['strnousers'] = 'NenΓ‘jdenΓ­ ΕΎiadni pouΕΎΓ­vatelia.'; + $lang['struserupdated'] = 'PoΕΎΓ­vatelia zmenenΓ­.'; + $lang['struserupdatedbad'] = 'PouΕΎivatelia neboli zmenenΓ­.'; + $lang['strshowallusers'] = 'ZobraziΕ₯ VΕ‘etkΓ½ch PouΕΎΓ­vateΔΎov'; + $lang['strcreateuser'] = 'VytvoriΕ₯ pouΕΎΓ­vateΔΎa'; + $lang['struserneedsname'] = 'MusΓ­Ε‘ zadaΕ₯ meno pre svojho pouΕΎΓ­vateΔΎa.'; + $lang['strusercreated'] = 'PouΕΎΓ­vateΔΎ vytvorenΓ½.'; + $lang['strusercreatedbad'] = 'PouΕΎΓ­vateΔΎ nebol vytvorenΓ½.'; + $lang['strconfdropuser'] = 'Naozaj chceΕ‘ zmazaΕ₯ pouΕΎΓ­vateΔΎa "%s"?'; + $lang['struserdropped'] = 'PouΕΎΓ­vateΔΎ zmazanΓ½.'; + $lang['struserdroppedbad'] = 'PouΕΎΓ­vateΔΎ nebol zmazanΓ½.'; + + // Groups + $lang['straccount'] = 'Konto'; + $lang['strchangepassword'] = 'ZmeniΕ₯ Heslo'; + $lang['strpasswordchanged'] = 'Heslo zmenenΓ©.'; + $lang['strpasswordchangedbad'] = 'Heslo NEBOLO zmenenΓ©.'; + $lang['strpasswordshort'] = 'Heslo je prΓ­liΕ‘ krΓ‘tke.'; + $lang['strpasswordconfirm'] = 'Heslo sa nezhoduje so zadanΓ½m overovacΓ­m heslom.'; + + // Groups + $lang['strgroup'] = 'Skupina'; + $lang['strgroups'] = 'Skupiny'; + $lang['strnogroup'] = 'Skupina nenΓ‘jdenΓ‘.'; + $lang['strnogroups'] = 'Ε½iadne skupiny nenΓ‘jdenΓ©.'; + $lang['strcreategroup'] = 'VytvoriΕ₯ Skupinu'; + $lang['strshowallgroups'] = 'ZobraziΕ₯ VΕ‘etky Skupiny'; + $lang['strgroupneedsname'] = 'MusΓ­Ε‘ zadaΕ₯ nΓ‘zov pre tvoju skupinu.'; + $lang['strgroupcreated'] = 'Skupina VytvorenΓ‘.'; + $lang['strgroupcreatedbad'] = 'Skupina nebola vytvorenΓ‘.'; + $lang['strconfdropgroup'] = 'Naozaj chceΕ‘ zmazaΕ₯ skupinu "%s"?'; + $lang['strgroupdropped'] = 'Skupina zmazanΓ‘.'; + $lang['strgroupdroppedbad'] = 'Skupina nebola zmazanΓ‘.'; + $lang['strmembers'] = 'Členovia'; + $lang['straddmember'] = 'PridaΕ₯ člena'; + $lang['strmemberadded'] = 'Člen pridanΓ½.'; + $lang['strmemberaddedbad'] = 'Člen nebol pridanΓ½.'; + $lang['strdropmember'] = 'ZmazaΕ₯ člena'; + $lang['strconfdropmember'] = 'Naozaj chceΕ‘ zmazaΕ₯ cΔΎena "%s" zo skupiny "%s"?'; + $lang['strmemberdropped'] = 'Člen zmazanΓ½.'; + $lang['strmemberdroppedbad'] = 'Člen nebol zmazanΓ½.'; + + // Privilges + $lang['strprivilege'] = 'PrivilΓ©giΓ‘'; + $lang['strprivileges'] = 'PrivilΓ©giΓ‘'; + $lang['strnoprivileges'] = 'Tento objekt nemΓ‘ privilΓ©giΓ‘.'; + $lang['strgrant'] = 'PovoliΕ₯'; + $lang['strrevoke'] = 'OdobraΕ₯'; + $lang['strgranted'] = 'PrivilΓ©giΓ‘ pridanΓ©.'; + $lang['strgrantfailed'] = 'PrivilΓ©giΓ‘ neboli pridanΓ©.'; + $lang['strgrantbad'] = 'MusΓ­Ε‘ Ε‘pecifikovat aspoň jednΓ©ho uΕΎΓ­vateΔΎa/skupinu a aspoň jedno privilΓ©gium.'; + $lang['strgrantor'] = 'PrideΔΎovateΔΎ'; + $lang['strasterisk'] = '*'; + + // Databases + $lang['strdatabase'] = 'DatabΓ‘za'; + $lang['strdatabases'] = 'DatabΓ‘zy'; + $lang['strshowalldatabases'] = 'ZobraziΕ₯ vΕ‘etky databΓ‘zy'; + $lang['strnodatabase'] = 'NenΓ‘jdenΓ‘ ΕΎiadna DatabΓ‘za.'; + $lang['strnodatabases'] = 'NenΓ‘jdenΓ© ΕΎiadne DatabΓ‘zy.'; + $lang['strcreatedatabase'] = 'VytvoriΕ₯ databΓ‘zu'; + $lang['strdatabasename'] = 'NΓ‘zov databΓ‘zy'; + $lang['strdatabaseneedsname'] = 'MusΓ­Ε‘ zadaΕ₯ nΓ‘zov pre tvoju databΓ‘zu.'; + $lang['strdatabasecreated'] = 'DatabΓ‘za vytvorenΓ‘.'; + $lang['strdatabasecreatedbad'] = 'DatabΓ‘za nebola vytvorenΓ‘.'; + $lang['strconfdropdatabase'] = 'Naozaj chceΕ‘ zmazaΕ₯ databΓ‘zu "%s"?'; + $lang['strdatabasedropped'] = 'DatabΓ‘ze zmazanΓ‘.'; + $lang['strdatabasedroppedbad'] = 'DatabΓ‘za nebola zmazanΓ‘.'; + $lang['strentersql'] = 'VloΕΎiΕ₯ SQL dotaz:'; + $lang['strsqlexecuted'] = 'SQL dotaz vykonanΓ½.'; + $lang['strvacuumgood'] = 'Vyčistenie kompletnΓ©.'; + $lang['strvacuumbad'] = 'Vyčistnie zlyhalo.'; + $lang['stranalyzegood'] = 'Analyzovanie kompletnΓ©.'; + $lang['stranalyzebad'] = 'Analyzovanie zlyhalo.'; + $lang['strreindexgood'] = 'Reindex hotovΓ½.'; + $lang['strreindexbad'] = 'Reindex zlyhal.'; + $lang['strfull'] = 'Full'; //todo - konzultovat!! + $lang['strfreeze'] = 'Freeze'; //deto + $lang['strforce'] = 'Force'; // -||- + $lang['strsignalsent'] = 'SignΓ‘l odoslanΓ½.'; + $lang['strsignalsentbad'] = 'Odoslanie signΓ‘lu zlyhalo.'; + $lang['strallobjects'] = 'VΕ‘etky objekty'; + $lang['strdatabasealtered'] = 'DatabΓ‘za zmenenΓ‘.'; + $lang['strdatabasealteredbad'] = 'DatabΓ‘za nebola zmenenΓ‘.'; + + // Views + $lang['strview'] = 'NΓ‘hΔΎad'; + $lang['strviews'] = 'NΓ‘hΔΎady'; + $lang['strshowallviews'] = 'ZobraziΕ₯ VΕ‘etky NΓ‘hΔΎady'; + $lang['strnoview'] = 'NenΓ‘jdenΓ½ ΕΎiadny nΓ‘hΔΎad.'; + $lang['strnoviews'] = 'NenΓ‘jdenΓ© ΕΎiadne nΓ‘hΔΎady.'; + $lang['strcreateview'] = 'VytvoriΕ₯ NΓ‘hΔΎad'; + $lang['strviewname'] = 'NΓ‘zov nΓ‘hΔΎadu'; + $lang['strviewneedsname'] = 'MusΓ­Ε‘ zadaΕ₯ nΓ‘zov pre tvoj nΓ‘hΔΎad.'; + $lang['strviewneedsdef'] = 'MusΓ­Ε‘ zadaΕ₯ definΓ­ciu pre tvoj nΓ‘hΔΎad.'; + $lang['strviewneedsfields'] = 'MuΕ‘Γ­Ε‘ zvoliΕ₯ stΔΊpce, ktorΓ© chceΕ‘ maΕ₯ vo svojom nΓ‘hΔΎade.'; + $lang['strviewcreated'] = 'NΓ‘hΔΎad vytvorenΓ½.'; + $lang['strviewcreatedbad'] = 'NΓ‘hΔΎad nebol vytvorenΓ½.'; + $lang['strconfdropview'] = 'Naozaj chceΕ‘ zmazaΕ₯ nΓ‘hΔΎad "%s"?'; + $lang['strviewdropped'] = 'NΓ‘hΔΎad zmazanΓ½.'; + $lang['strviewdroppedbad'] = 'NΓ‘hΔΎad nebol zmazanΓ½.'; + $lang['strviewupdated'] = 'NΓ‘hΔΎad upravenΓ½.'; + $lang['strviewupdatedbad'] = 'NΓ‘hΔΎad nebol upravenΓ½.'; + $lang['strviewlink'] = 'LinkujΓΊce Kľúče'; + $lang['strviewconditions'] = 'DoplňujΓΊce Podmienky'; + $lang['strcreateviewwiz'] = 'VytvoriΕ₯ nΓ‘hΔΎad cez \"pomocnΓ­ka\"'; + + // Sequences + $lang['strsequence'] = 'Sekvencia'; + $lang['strsequences'] = 'Sekvencie'; + $lang['strshowallsequences'] = 'ZobraziΕ₯ VΕ‘etky Sekvencie'; + $lang['strnosequence'] = 'NenΓ‘jdenΓ‘ ΕΎiadna sekvencia.'; + $lang['strnosequences'] = 'nenΓ‘jdenΓ© ΕΎiadne sekvencie.'; + $lang['strcreatesequence'] = 'VytvoriΕ₯ Sekvenciu'; + $lang['strlastvalue'] = 'PoslednΓ‘ Hodnota'; + $lang['strincrementby'] = 'InkrementovaΕ₯ od'; + $lang['strstartvalue'] = 'Start Hodnota'; + $lang['strmaxvalue'] = 'Max Hodnota'; + $lang['strminvalue'] = 'Min Hodnota'; + $lang['strcachevalue'] = 'Cache Hodnota'; + $lang['strlogcount'] = 'Log Súčet'; + $lang['striscycled'] = 'Je Cycled?'; + $lang['strsequenceneedsname'] = 'MusΓ­Ε‘ zadaΕ₯ nΓ‘zov pre tvoju sekvenciu.'; + $lang['strsequencecreated'] = 'Sekvencia vytvorenΓ‘.'; + $lang['strsequencecreatedbad'] = 'Sekvencia nebola vytvorenΓ‘.'; + $lang['strconfdropsequence'] = 'Naozaj chceΕ‘ zmazaΕ₯ sekvenciu "%s"?'; + $lang['strsequencedropped'] = 'Sekvencia zmazanΓ‘.'; + $lang['strsequencedroppedbad'] = 'Sekvencia nebola zmazanΓ‘.'; + $lang['strsequencereset'] = 'Sekvencia resetovanΓ‘.'; + $lang['strsequenceresetbad'] = 'Sekvencia nebola resetovanΓ‘.'; + + // Indexes + $lang['strindex'] = 'Index'; + $lang['strindexes'] = 'Indexy'; + $lang['strindexname'] = 'NΓ‘zov Indexu'; + $lang['strshowallindexes'] = 'ZobraziΕ₯ VΕ‘etky Indexy'; + $lang['strnoindex'] = 'NenΓ‘jdenΓ½ ΕΎiadny index.'; + $lang['strnoindexes'] = 'NenΓ‘jdenΓ© ΕΎiadne indexy.'; + $lang['strcreateindex'] = 'VytvoriΕ₯ Index'; + $lang['strtabname'] = 'Tab Meno'; + $lang['strcolumnname'] = 'NΓ‘zov stΓ₯pca'; + $lang['strindexneedsname'] = 'MusΓ­Ε‘ zadaΕ₯ nΓ‘zov pre tvoj index'; + $lang['strindexneedscols'] = 'Index vyΕΎaduje vyhovujΓΊci počet stΔΊpcov.'; + $lang['strindexcreated'] = 'Index vytvorenΓ½'; + $lang['strindexcreatedbad'] = 'Index nebol vytvorenΓ½.'; + $lang['strconfdropindex'] = 'Naozaj chceΕ‘ zmazaΕ₯ index "%s"?'; + $lang['strindexdropped'] = 'Index zmazanΓ½.'; + $lang['strindexdroppedbad'] = 'Index nebol zmazanΓ½.'; + $lang['strkeyname'] = 'NΓ‘zov Kľúču'; + $lang['struniquekey'] = 'UnikΓ‘tny Kľúč'; + $lang['strprimarykey'] = 'PrimΓ‘rny Kľúč'; + $lang['strindextype'] = 'Typ indexu'; + $lang['strtablecolumnlist'] = 'StΔΊpce v TabuΔΎke'; + $lang['strindexcolumnlist'] = 'StΔΎpce v Indexe'; + $lang['strconfcluster'] = 'Naozaj chceΕ‘ vytvoriΕ₯ cluster "%s"?'; + $lang['strclusteredgood'] = 'Cluster hotovΓ½.'; + $lang['strclusteredbad'] = 'Cluster nebol vytvorenΓ½.'; +$lang['strcluster'] = 'Cluster'; + + // Rules + $lang['strrules'] = 'PravidlΓ‘'; + $lang['strrule'] = 'Pravidlo'; + $lang['strshowallrules'] = 'ZobraziΕ₯ VΕ‘etky PravidlΓ‘'; + $lang['strnorule'] = 'NenΓ‘jdenΓ© ΕΎiadne pravidlo.'; + $lang['strnorules'] = 'NenΓ‘jdenΓ© ΕΎiadne pravidlΓ‘.'; + $lang['strcreaterule'] = 'VytvoriΕ₯ pravidlo'; + $lang['strrulename'] = 'NΓ‘zov pravidla'; + $lang['strruleneedsname'] = 'MusΓ­Ε‘ zadaΕ₯ nΓ‘zov pre tvoje pravidlo.'; + $lang['strrulecreated'] = 'Pravidlo vytvorenΓ©.'; + $lang['strrulecreatedbad'] = 'Pravidlo nebolo vytvorenΓ©.'; + $lang['strconfdroprule'] = 'Naozaj chceΕ‘ zmazaΕ₯ pravidlo "%s" na "%s"?'; + $lang['strruledropped'] = 'Pravidlo zmazanΓ©.'; + $lang['strruledroppedbad'] = 'Pravidlo nebolo zmazanΓ©.'; + + // Constraints + $lang['strconstraint'] = 'Obmedzenie'; + $lang['strconstraints'] = 'Obmedzenia'; + $lang['strshowallconstraints'] = 'ZobraziΕ₯ VΕ‘etky Obmedzenia'; + $lang['strnoconstraints'] = 'NenΓ‘jdenΓ© ΕΎiadne obmedzenie.'; + $lang['strcreateconstraint'] = 'VytvoriΕ₯ Obmedzenie'; + $lang['strconstraintcreated'] = 'Obmedzenie vytvorenΓ©.'; + $lang['strconstraintcreatedbad'] = 'Obmedzenie nebolo vytvorenΓ©.'; + $lang['strconfdropconstraint'] = 'Naozaj chceΕ‘ zmazaΕ₯ obmedzenie "%s" na "%s"?'; + $lang['strconstraintdropped'] = 'Obmedzenie zmazanΓ©.'; + $lang['strconstraintdroppedbad'] = 'Obmedzenie nebolo zmazanΓ©.'; + $lang['straddcheck'] = 'PridaΕ₯ Overovanie'; + $lang['strcheckneedsdefinition'] = 'Overovanie Obmedzenia vyΕΎaduje jeho definovanie.'; + $lang['strcheckadded'] = 'Overovanie obmedzenia pridanΓ©.'; + $lang['strcheckaddedbad'] = 'Overovanie obmedzenia nebolo pridanΓ©.'; + $lang['straddpk'] = 'PridaΕ₯ PrimΓ‘rny Kľúč'; + $lang['strpkneedscols'] = 'PrimΓ‘rny kľúč vyΕΎaduje aspoň jeden stΔΊpec.'; + $lang['strpkadded'] = 'PrimΓ‘rny kľúč pridanΓ½.'; + $lang['strpkaddedbad'] = 'PrimΓ‘rny kľúč nebol pridanΓ½.'; + $lang['stradduniq'] = 'PridaΕ₯ UnikΓ‘tny Kľúč'; + $lang['struniqneedscols'] = 'UnikΓ‘tny kľúč vyΕΎaduje aspoň jeden stΔΊpec.'; + $lang['struniqadded'] = 'UnikΓ‘tny kľúč pridanΓ½.'; + $lang['struniqaddedbad'] = 'UnikΓ‘tny kľúč nebol pridanΓ½.'; + $lang['straddfk'] = 'PridaΕ₯ CudzΓ­ Kľúč'; + $lang['strfkneedscols'] = 'CudzΓ­ kľúč vyΕΎaduje aspoň jeden stΔΊpec.'; + $lang['strfkneedstarget'] = 'CudzΓ­ kľúč vyΕΎaduje cieΔΎovΓΊ tabuΔΎku.'; + $lang['strfkadded'] = 'CudzΓ­ kľúč pridanΓ½.'; + $lang['strfkaddedbad'] = 'CudzΓ­ kľúč nebol pridanΓ½.'; + $lang['strfktarget'] = 'CieΔΎovΓ‘ tabuΔΎka'; + $lang['strfkcolumnlist'] = 'StΔΎpce v kľúči'; + $lang['strondelete'] = 'ON DELETE'; + $lang['stronupdate'] = 'ON UPDATE'; + + // Functions + $lang['strfunction'] = 'Funkcia'; + $lang['strfunctions'] = 'Funkcie'; + $lang['strshowallfunctions'] = 'ZobraziΕ₯ vΕ etky funkcie'; + $lang['strnofunction'] = 'NenΓ‘jdenΓ‘ ΕΎiadna funkcia.'; + $lang['strnofunctions'] = 'NenΓ‘jdenΓ© ΕΎiadne funkcie.'; + $lang['strcreateplfunction'] = 'VytvoriΕ₯ SQL/PL funkciu'; + $lang['strcreateinternalfunction'] = 'VytvoriΕ₯ internΓΊ funkciu'; + $lang['strcreatecfunction'] = 'VytvoriΕ₯ C funkciu'; + $lang['strfunctionname'] = 'NΓ‘zov funkcie'; + $lang['strreturns'] = 'Vracia'; + $lang['strarguments'] = 'Argumenty'; + $lang['strproglanguage'] = 'Jazyk'; + $lang['strfunctionneedsname'] = 'MusΓ­Ε‘ zadaΕ₯ nΓ‘zov pre tvoju funkciu.'; + $lang['strfunctionneedsdef'] = 'MusΓ­Ε‘ zadaΕ₯ definΓ­ciu pre tvoju funkciu.'; + $lang['strfunctioncreated'] = 'Funkcia vytvorenΓ‘.'; + $lang['strfunctioncreatedbad'] = 'Funkcia nebola vytvorenΓ‘.'; + $lang['strconfdropfunction'] = 'Si si istΓ½, ΕΎe chceΕ‘ zmazaΕ₯ funkciu "%s"?'; + $lang['strfunctiondropped'] = 'Funkcia zmazanΓ‘.'; + $lang['strfunctiondroppedbad'] = 'Funkcia nebola zmazanΓ‘.'; + $lang['strfunctionupdated'] = 'Funkcia upravenΓ‘.'; + $lang['strfunctionupdatedbad'] = 'Funkcia nebola upravenΓ‘.'; + $lang['strobjectfile'] = 'ObjektovΓ½ sΓΊbor'; + $lang['strlinksymbol'] = 'Link symbol'; + + // Triggers + $lang['strtrigger'] = 'Trigger'; //su to medzipravidla ?? po cesky spouste.. + $lang['strtriggers'] = 'Trigger-y'; + $lang['strshowalltriggers'] = 'ZobraziΕ₯ VΕ‘etky Trigger-y'; + $lang['strnotrigger'] = 'NenΓ‘jdenΓ½ ΕΎiadny Trigger.'; + $lang['strnotriggers'] = 'NenΓ‘jdenΓ© ΕΎiadne Trigger-y.'; + $lang['strcreatetrigger'] = 'VytvoriΕ₯ Trigger'; + $lang['strtriggerneedsname'] = 'MusΓ­Ε‘ zadaΕ₯ nΓ‘zov pre tvoj Trigger.'; + $lang['strtriggerneedsfunc'] = 'MusΓ­Ε‘ zadaΕ₯ funkciu pre tvoj Trigger.'; + $lang['strtriggercreated'] = 'Trigger vytvorenΓ½.'; + $lang['strtriggercreatedbad'] = 'Trigger nebol vytvorenΓ½.'; + $lang['strconfdroptrigger'] = 'Naozaj chceΕ‘ zmazaΕ₯ Trigger "%s" na "%s"?'; + $lang['strtriggerdropped'] = 'Trigger zmazanΓ½.'; + $lang['strtriggerdroppedbad'] = 'Trigger nebol zmazanΓ½.'; + $lang['strtriggeraltered'] = 'Trigger zmenenΓ½.'; + $lang['strtriggeralteredbad'] = 'Trigger nebol zmenenΓ½.'; + $lang['strforeach'] = 'Pre kaΕΎdΓ½ch'; + + // Types + $lang['strtype'] = 'Typ'; + $lang['strtypes'] = 'Typy'; + $lang['strshowalltypes'] = 'ZobraziΕ₯ VΕ‘etky typy'; + $lang['strnotype'] = 'NenΓ‘jdenΓ½ ΕΎiadny typ.'; + $lang['strnotypes'] = 'NenΓ‘jdenΓ© ΕΎiadne typy.'; + $lang['strcreatetype'] = 'VytvoriΕ₯ Typ'; + $lang['strcreatecomptype'] = 'VytvoriΕ₯ kompozitnΓ½ typ'; + $lang['strtypeneedsfield'] = 'MusΓ­Ε‘ vybraΕ₯ aspoň jedno pole.'; + $lang['strtypeneedscols'] = 'MusΓ­Ε‘ zadaΕ₯ sprΓ‘vny počet polΓ­.'; + $lang['strtypename'] = 'NΓ‘zov typu'; + $lang['strinputfn'] = 'VstupnΓ‘ funkcia'; + $lang['stroutputfn'] = 'VΓ½stupnΓ‘ funkcia'; + $lang['strpassbyval'] = 'Passed by val?'; + $lang['stralignment'] = 'Alignment'; + $lang['strelement'] = 'Element'; + $lang['strdelimiter'] = 'Delimiter'; + $lang['strstorage'] = 'Storage'; + $lang['strfield'] = 'Pole'; + $lang['strnumfields'] = 'Počet polΓ­'; + $lang['strtypeneedsname'] = 'MusΓ­Ε‘ zadaΕ₯ nΓ‘zov pre tvoj typ.'; + $lang['strtypeneedslen'] = 'MusΓ­Ε‘ zadaΕ₯ dΔΊΕΎku pre tvoj typ.'; + $lang['strtypecreated'] = 'Typ VytvorenΓ½'; + $lang['strtypecreatedbad'] = 'Typ nebol vytvorenΓ½.'; + $lang['strconfdroptype'] = 'Naozaj chceΕ‘ zmazaΕ₯ typ "%s"?'; + $lang['strtypedropped'] = 'Typ zmazanΓ½.'; + $lang['strtypedroppedbad'] = 'Typ nebol zmazanΓ½.'; + $lang['strflavor'] = 'Flavor'; //todo + $lang['strbasetype'] = 'ZΓ‘kladnΓ½'; + $lang['strcompositetype'] = 'KompozitnΓ½'; + $lang['strpseudotype'] = 'Pseudo'; + + // Schemas + $lang['strschema'] = 'SchΓ©ma'; + $lang['strschemas'] = 'SchΓ©my'; + $lang['strshowallschemas'] = 'ZobraziΕ₯ VΕ‘etky SchΓ©my'; + $lang['strnoschema'] = 'NenΓ‘jdenΓ‘ ΕΎiadna schΓ©ma.'; + $lang['strnoschemas'] = 'NenΓ‘jdenΓ© ΕΎiadne schΓ©my.'; + $lang['strcreateschema'] = 'VytvoriΕ₯ SchΓ©mu'; + $lang['strschemaname'] = 'NΓ‘zov SchΓ©my'; + $lang['strschemaneedsname'] = 'MusΓ­Ε‘ zadaΕ₯ nΓ‘zov pre tvoju schΓ©mu.'; + $lang['strschemacreated'] = 'SchΓ©ma vytvorenΓ‘'; + $lang['strschemacreatedbad'] = 'SchΓ©ma nebola vytvorenΓ‘.'; + $lang['strconfdropschema'] = 'Naozaj chceΕ‘ zmazaΕ₯ schΓ©mu "%s"?'; + $lang['strschemadropped'] = 'SchΓ©ma zmazanΓ‘.'; + $lang['strschemadroppedbad'] = 'SchΓ©ma nebola zmazanΓ‘.'; + $lang['strschemaaltered'] = 'SchΓ©ma zmenenΓ‘.'; + $lang['strschemaalteredbad'] = 'SchΓ©ma nebola zmenenΓ‘.'; + $lang['strsearchpath'] = 'Cesta k nΓ‘jdeniu SchΓ©my'; + + // Reports + + //Domains + $lang['strdomain'] = 'DomΓ©na'; + $lang['strdomains'] = 'DomΓ©ny'; + $lang['strshowalldomains'] = 'ZobraziΕ₯ VΕ‘etky DomΓ©ny'; + $lang['strnodomains'] = 'NenΓ‘jdenΓ© ΕΎiadne domΓ©ny.'; + $lang['strcreatedomain'] = 'VytvoriΕ₯ domΓ©nu'; + $lang['strdomaindropped'] = 'DomΓ©na zmazanΓ‘.'; + $lang['strdomaindroppedbad'] = 'DomΓ©na nebola zmazanΓ‘.'; + $lang['strconfdropdomain'] = 'Naozaj chceΕ‘ zmazaΕ₯ domΓ©nu "%s"?'; + $lang['strdomainneedsname'] = 'MusΓ­Ε‘ zadaΕ₯ nΓ‘zov pre tvoju domΓ©nu.'; + $lang['strdomaincreated'] = 'DomΓ©na vytvorenΓ‘.'; + $lang['strdomaincreatedbad'] = 'DomΓ©na nebola vytvorenΓ‘.'; + $lang['strdomainaltered'] = 'DomΓ©na zmenenΓ‘.'; + $lang['strdomainalteredbad'] = 'DomΓ©na nebola zmenenΓ‘.'; + + //Operators + $lang['stroperator'] = 'OperΓ‘tor'; + $lang['stroperators'] = 'OperΓ‘tory'; + $lang['strshowalloperators'] = 'ZobraziΕ₯ VΕ‘etky OperΓ‘tory'; + $lang['strnooperator'] = 'NenΓ‘jdenΓ½ ΕΎiadny operΓ‘tor.'; + $lang['strnooperators'] = 'NenΓ‘jdenΓ© ΕΎiadne operΓ‘tory.'; + $lang['strcreateoperator'] = 'VytvoriΕ₯ OperΓ‘tor'; + $lang['strleftarg'] = 'Δ½avΓ½ Arg Typ'; + $lang['strrightarg'] = 'PravΓ½ Arg Typ'; + $lang['strcommutator'] = 'KomutΓ‘tor'; + $lang['strnegator'] = 'NegΓ‘tor'; + $lang['strrestrict'] = 'ObmedziΕ₯'; + $lang['strjoin'] = 'Join'; + $lang['strhashes'] = 'Hashes'; + $lang['strmerges'] = 'Merges'; + $lang['strleftsort'] = 'Δ½avΓ½ sort'; + $lang['strrightsort'] = 'PravΓ½ sort'; + $lang['strlessthan'] = 'Menej ako'; + $lang['strgreaterthan'] = 'Viac ako'; + $lang['stroperatorneedsname'] = 'MusΓ­Ε‘ zadaΕ₯ nΓ‘zov pre tvoj operΓ‘tor.'; + $lang['stroperatorcreated'] = 'OperΓ‘tor vytvorenΓ½'; + $lang['stroperatorcreatedbad'] = 'OperΓ‘tor nebol vytvorenΓ½.'; + $lang['strconfdropoperator'] = 'Naozaj chceΕ‘ zmazaΕ₯ operΓ‘tor "%s"?'; + $lang['stroperatordropped'] = 'OperΓ‘tor zmazanΓ½.'; + $lang['stroperatordroppedbad'] = 'OperΓ‘tor nebol zmazanΓ½.'; + + //Casts + $lang['strcasts'] = 'Cast-y'; + $lang['strnocasts'] = 'NenΓ‘jdenΓ© ΕΎiadne Cast-y.'; + $lang['strsourcetype'] = 'ZdrojovΓ½ typ'; + $lang['strtargettype'] = 'CieΔΎovΓ½ typ'; + $lang['strimplicit'] = 'ImplicitnΓ½'; + $lang['strinassignment'] = 'V priradenΓ­'; + $lang['strbinarycompat'] = '(BinΓ‘rne identickΓ©)'; + + // Conversions + $lang['strconversions'] = 'Konverzie'; + $lang['strnoconversions'] = 'NenΓ‘jdenΓ© ΕΎiadne konverzie.'; + $lang['strsourceencoding'] = 'ZdojovΓ© kΓ³dovanie'; + $lang['strtargetencoding'] = 'CieΔΎovΓ© kΓ³dovanie'; + + // Languages + $lang['strlanguages'] = 'Jazyky'; + $lang['strnolanguages'] = 'NenΓ‘jdenΓ© ΕΎiadne jazyky.'; + $lang['strtrusted'] = 'Trusted'; + + // Info + $lang['strnoinfo'] = 'InformΓ‘cie nedostupnΓ©.'; + $lang['strreferringtables'] = 'ReferujΓΊce tabuΔΎky'; + $lang['strparenttables'] = 'RodičovskΓ© tabuΔΎky'; + $lang['strchildtables'] = 'DcΓ©rske tabuΔΎky'; + + // Aggregates + $lang['straggregates'] = 'AgregΓ‘ty'; + $lang['strnoaggregates'] = 'NenΓ‘jdenΓ© ΕΎiadne agregΓ‘ty.'; + $lang['stralltypes'] = '(VΕ‘etky typy)'; + + // Operator Classes + $lang['stropclasses'] = 'Op Triedy'; + $lang['strnoopclasses'] = 'NenΓ‘jdenΓ© ΕΎiadne op. triedy.'; + $lang['straccessmethod'] = 'PrΓ­stupovΓ© metΓ³dy'; + + // Stats and performance + $lang['strrowperf'] = 'VΓ½konnosΕ₯ Riadku'; //to znie dost tupo.. + $lang['strioperf'] = 'I/O VΓ½kon'; + $lang['stridxrowperf'] = 'VΓ½konnosΕ₯ Indexovania Riadkov'; + $lang['stridxioperf'] = 'Index I/O VΓ½kon'; + $lang['strpercent'] = '%'; + $lang['strsequential'] = 'SekvenčnΓ½'; + $lang['strscan'] = 'Scan'; //co s tymto tu??? + $lang['strread'] = 'NačítaΕ₯'; + $lang['strfetch'] = 'ZΓ­skaΕ₯'; + $lang['strheap'] = 'Heap'; + $lang['strtoast'] = 'TOAST'; + $lang['strtoastindex'] = 'TOAST Index'; + $lang['strcache'] = 'Cache'; + $lang['strdisk'] = 'Disk'; + $lang['strrows2'] = 'Riadkov'; + + // Tablespaces + $lang['strtablespace'] = 'Priestor pre tabuΔΎku'; + $lang['strtablespaces'] = 'Priestory tabuliek'; + $lang['strshowalltablespaces'] = 'ZobraziΕ₯ vΕ‘etky priestory pre tabuΔΎky'; + $lang['strnotablespaces'] = 'NenΓ‘jdenΓ© ΕΎiadne priestory tabuliek.'; + $lang['strcreatetablespace'] = 'VytvoriΕ₯ priestor pre tabuΔΎku'; + $lang['strlocation'] = 'Umiestnenie'; + $lang['strtablespaceneedsname'] = 'MusΓ­Ε‘ zadaΕ₯ nΓ‘zov priestoru tabuΔΎky.'; + $lang['strtablespaceneedsloc'] = 'MusΓ­Ε‘ zadaΕ₯ adresΓ‘r, vktorom sa mΓ‘ vytvoriΕ₯ priestor pre tabuΔΎku.'; + $lang['strtablespacecreated'] = 'Priestor pre tabuΔΎku bol vytvorenΓ½.'; + $lang['strtablespacecreatedbad'] = 'Vytvorenie priestoru pre tabuΔΎku zlyhalo.'; + $lang['strconfdroptablespace'] = 'Naozaj chceΕ‘ odstrΓ‘niΕ₯ priestor tabuΔΎky "%s"?'; + $lang['strtablespacedropped'] = 'Priestor pre tabuΔΎku bol odstrΓ‘nenΓ½.'; + $lang['strtablespacedroppedbad'] = 'OdstrΓ‘nenie priestoru zlyhalo.'; + $lang['strtablespacealtered'] = 'Priestor tabuΔΎky zmenenΓ½.'; + $lang['strtablespacealteredbad'] = 'Zmenenie priestoru tabuΔΎky zlyhalo.'; + + + // Miscellaneous + $lang['strtopbar'] = '%s beΕΎΓ­ na %s:%s -- si prihlΓ‘senΓ½ ako "%s"'; + $lang['strtimefmt'] = 'jS M, Y g:iA'; + $lang['strhelp'] = 'Pomoc'; + $lang['strhelpicon'] = '?'; + $lang['strlogintitle'] = 'Prihlasujem do %s'; + $lang['strlogoutmsg'] = 'OdhlΓ‘senΓ½ z %s'; + $lang['strloading'] = 'SpracuvΓ‘vam...'; + $lang['strerrorloading'] = 'Chyba spracovania'; + $lang['strclicktoreload'] = 'Klikni pre obnovenie'; + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/spanish.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/spanish.php new file mode 100644 index 00000000..e4dcb5af --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/spanish.php @@ -0,0 +1,905 @@ +'; + $lang['strfirst'] = '<< Principio'; + $lang['strlast'] = 'Fin >>'; + $lang['strfailed'] = 'FallΓ³'; + $lang['strcreate'] = 'Crear'; + $lang['strcreated'] = 'Creado'; + $lang['strcomment'] = 'Comentario'; + $lang['strlength'] = 'Longitud'; + $lang['strdefault'] = 'Predeterminado'; + $lang['stralter'] = 'Modificar'; + $lang['strok'] = 'Aceptar'; + $lang['strcancel'] = 'Cancelar'; + $lang['strkill'] = 'Terminar'; + $lang['strac'] = 'Activar AutoCompletado'; + $lang['strsave'] = 'Guardar'; + $lang['strreset'] = 'Reestablecer'; + $lang['strrestart'] = 'Reiniciar'; + $lang['strinsert'] = 'Insertar'; + $lang['strselect'] = 'Seleccionar'; + $lang['strdelete'] = 'Eliminar'; + $lang['strupdate'] = 'Actualizar'; + $lang['strreferences'] = 'Referencia'; + $lang['stryes'] = 'Si'; + $lang['strno'] = 'No'; + $lang['strtrue'] = 'VERDADERO'; + $lang['strfalse'] = 'FALSO'; + $lang['stredit'] = 'Editar'; + $lang['strcolumn'] = 'Columna'; + $lang['strcolumns'] = 'Columnas'; + $lang['strrows'] = 'fila(s)'; + $lang['strrowsaff'] = 'fila(s) afectadas.'; + $lang['strobjects'] = 'objeto(s)'; + $lang['strback'] = 'AtrΓ‘s'; + $lang['strqueryresults'] = 'Resultado de la consulta'; + $lang['strshow'] = 'Mostrar'; + $lang['strempty'] = 'Vaciar'; + $lang['strlanguage'] = 'Idioma'; + $lang['strencoding'] = 'CodificaciΓ³n'; + $lang['strvalue'] = 'Valor'; + $lang['strunique'] = 'Único'; + $lang['strprimary'] = 'Primaria'; + $lang['strexport'] = 'Exportar'; + $lang['strimport'] = 'Importar'; + $lang['strallowednulls'] = 'Permitir valores nulos'; + $lang['strbackslashn'] = '\N'; + $lang['stremptystring'] = 'Cadena o campo vacio'; + $lang['strsql'] = 'SQL'; + $lang['stradmin'] = 'Admin'; + $lang['strvacuum'] = 'Limpiar'; + $lang['stranalyze'] = 'Analizar'; + $lang['strclusterindex'] = 'ClΓΊster'; + $lang['strclustered'] = 'ΒΏEn ClΓΊster?'; + $lang['strreindex'] = 'Actualizar Γ­ndices'; + $lang['strexecute'] = 'Ejecutar'; + $lang['stradd'] = 'Agregar'; + $lang['strevent'] = 'Evento'; + $lang['strwhere'] = 'DΓ³nde'; + $lang['strinstead'] = 'Hacer en su lugar'; + $lang['strwhen'] = 'CuΓ‘ndo'; + $lang['strformat'] = 'Formato'; + $lang['strdata'] = 'Dato'; + $lang['strconfirm'] = 'Confirmar'; + $lang['strexpression'] = 'ExpresiΓ³n'; + $lang['strellipsis'] = '...'; + $lang['strseparator'] = ': '; + $lang['strexpand'] = 'Expandir'; + $lang['strcollapse'] = 'Contraer'; + $lang['strfind'] = 'Buscar'; + $lang['stroptions'] = 'Opciones'; + $lang['strrefresh'] = 'Refrescar'; + $lang['strdownload'] = 'Descargar'; + $lang['strdownloadgzipped'] = 'Descargar comprimido con gzip'; + $lang['strinfo'] = 'InformaciΓ³n'; + $lang['stroids'] = 'OIDs'; + $lang['stradvanced'] = 'Avanzado'; + $lang['strvariables'] = 'Variables'; + $lang['strprocess'] = 'Proceso'; + $lang['strprocesses'] = 'Procesos'; + $lang['strblocked'] = 'Bloqueados'; + $lang['strsetting'] = 'ConfiguraciΓ³n'; + $lang['streditsql'] = 'Editar SQL'; + $lang['strruntime'] = 'Tiempo total de ejecuciΓ³n: %s ms'; + $lang['strpaginate'] = 'Paginar resultados'; + $lang['struploadscript'] = 'o subir un script SQL:'; + $lang['strstarttime'] = 'Hora de comienzo'; + $lang['strfile'] = 'Archivo'; + $lang['strfileimported'] = 'Archivo importado.'; + $lang['strtrycred'] = 'Usar estas crendeciales para todos los servidores'; + $lang['strconfdropcred'] = 'Por razones de seguridad, al desconectar se destruirΓ‘ tu informaciΓ³n compartida. ΒΏEstΓ‘s seguro que desea desconectarse?'; + $lang['stractionsonmultiplelines'] = 'Acciones en mΓΊltiples lΓ­neas'; + $lang['strselectall'] = 'Seleccionar todos'; + $lang['strunselectall'] = 'Seleccionar ninguno'; + $lang['strlocale'] = 'LocalizaciΓ³n'; + $lang['strcollation'] = 'ColaciΓ³n'; + $lang['strctype'] = 'Tipo de caracter'; + $lang['strdefaultvalues'] = 'Valores por defecto'; + $lang['strnewvalues'] = 'Nuevos valores'; + $lang['strstart'] = 'Iniciar'; + $lang['strstop'] = 'Detener'; + $lang['strgotoppage'] = 'subir al inicio'; + $lang['strtheme'] = 'Tema'; + $lang['strcluster'] = 'ClΓΊster'; + + // Admin + $lang['stradminondatabase'] = 'Las siguientes tareas administrativas aplican a toda la base de datos %s.'; + $lang['stradminontable'] = 'Las siguientes tareas administrativas aplican a la tabla %s.'; + + // User-supplied SQL history + $lang['strhistory'] = 'Historial'; + $lang['strnohistory'] = 'Sin historial.'; + $lang['strclearhistory'] = 'Borrar historial'; + $lang['strdelhistory'] = 'Borrar del historial'; + $lang['strconfdelhistory'] = 'ΒΏDesea borrar esta solicitud del historial?'; + $lang['strconfclearhistory'] = 'ΒΏDesea borrar el historial?'; + $lang['strnodatabaseselected'] = 'Por favor, seleccione una base de datos.'; + + // Database sizes + $lang['strnoaccess'] = 'Sin acceso'; + $lang['strsize'] = 'TamaΓ±o'; + $lang['strbytes'] = 'bytes'; + $lang['strkb'] = 'kB'; + $lang['strmb'] = 'MB'; + $lang['strgb'] = 'GB'; + $lang['strtb'] = 'TB'; + + // Error handling + $lang['strnoframes'] = 'Esta aplicaciΓ³n funciona mejor con un navegador con soporte para marcos, pero puede usarse sin marcos siguiendo el link de abajo.'; + $lang['strnoframeslink'] = 'Usar sin marcos'; + $lang['strbadconfig'] = 'Su archivo config.inc.php estΓ‘ desactualizado. DeberΓ‘ regenerarlo a partir del nuevo archivo config.inc.php-dist.'; + $lang['strnotloaded'] = 'Su instalaciΓ³n de PHP no tiene el soporte correcto para PostgreSQL. DeberΓ‘ recompilar PHP usando la opciΓ³n --with-pgsql en el configure.'; + $lang['strpostgresqlversionnotsupported'] = 'Su versiΓ³n de PostgreSQL no estΓ‘ soportada. Por favor actualice a la versiΓ³n %s o mas reciente.'; + $lang['strbadschema'] = 'El esquema especificado es invΓ‘lido.'; + $lang['strbadencoding'] = 'No se pudo configurar la codificaciΓ³n del cliente en la base de datos.'; + $lang['strsqlerror'] = 'Error de SQL:'; + $lang['strinstatement'] = 'En la setencia:'; + $lang['strinvalidparam'] = 'ParΓ‘metros invΓ‘lidos del script.'; + $lang['strnodata'] = 'No se encontraron filas.'; + $lang['strnoobjects'] = 'No se encontraron objetos.'; + $lang['strrownotunique'] = 'No existe un identificador ΓΊnico para este registro.'; + $lang['strnouploads'] = 'EstΓ‘ deshabilitada la subida de archivos.'; + $lang['strimporterror'] = 'Error de importaciΓ³n.'; + $lang['strimporterror-fileformat'] = 'Error de importacion: FallΓ³ la detecciΓ³n del formato del archivo.'; + $lang['strimporterrorline'] = 'Error de importaciΓ³n en la lΓ­nea %s.'; + $lang['strimporterrorline-badcolumnnum'] = 'Error de importaciΓ³n en la lΓ­nea %s: La lΓ­nea no posee un nΓΊmero incorrecto de columnas.'; + $lang['strimporterror-uploadedfile'] = 'Error de importaciΓ³n: No se pudo subir el archivo al servidor'; + $lang['strcannotdumponwindows'] = 'El volcado de datos de tablas y esquemas con nombres complejos no esta soportado en Windows.'; + $lang['strinvalidserverparam'] = 'Intento de conexiΓ³n al servidor con un parΓ‘metro invΓ‘lido. Posiblemente alguien estΓ‘ intentando atacar tu sistema.'; + $lang['strnoserversupplied'] = 'No se suministrΓ³ un servidor'; + $lang['strbadpgdumppath'] = 'Error de exportaciΓ³n: FallΓ³ la ejecuciΓ³n de execute pg_dump (segΓΊn la ruta dada en conf/config.inc.php : %s). Por favor, arregla esta ruta en tu configuraciΓ³n y vuelve a iniciar sesiΓ³n.'; + $lang['strbadpgdumpallpath'] = 'Error de exportaciΓ³n: FallΓ³ la ejecuciΓ³n de pg_dumpall (segΓΊn la ruta dada en conf/config.inc.php : %s). Por favor, arregla esta ruta en tu configuraciΓ³n y vuelve a iniciar sesiΓ³n.'; + $lang['strconnectionfail'] = 'No se puede conectar al servidor.'; + + // Tables + $lang['strtable'] = 'Tabla'; + $lang['strtables'] = 'Tablas'; + $lang['strshowalltables'] = 'Mostrar todas las tablas'; + $lang['strnotables'] = 'No se encontraron tablas.'; + $lang['strnotable'] = 'No se encontrΓ³ la tabla.'; + $lang['strcreatetable'] = 'Crear tabla'; + $lang['strcreatetablelike'] = 'Crear una tabla a partir de una existente'; + $lang['strcreatetablelikeparent'] = 'Tabla de origen'; + $lang['strcreatelikewithdefaults'] = 'INCLUIR VALORES POR DEFECTO'; + $lang['strcreatelikewithconstraints'] = 'INCLUIR RESTRICCIONES'; + $lang['strcreatelikewithindexes'] = 'INCLUIR ÍNDICES'; + $lang['strtablename'] = 'Nombre de la tabla'; + $lang['strtableneedsname'] = 'Debes darle un nombre a la tabla.'; + $lang['strtablelikeneedslike'] = 'Debes especificar una tabla para copiar sus propiedades.'; + $lang['strtableneedsfield'] = 'Debes especificar al menos un campo.'; + $lang['strtableneedscols'] = 'Debes especificar un nΓΊmero vΓ‘lido de columnas.'; + $lang['strtablecreated'] = 'Tabla creada.'; + $lang['strtablecreatedbad'] = 'FallΓ³ la creaciΓ³n de la tabla.'; + $lang['strconfdroptable'] = 'ΒΏEstΓ‘s seguro que desea eliminar la tabla "%s"?'; + $lang['strtabledropped'] = 'Tabla eliminada.'; + $lang['strtabledroppedbad'] = 'FallΓ³ la eliminaciΓ³n de la tabla.'; + $lang['strconfemptytable'] = 'ΒΏEstΓ‘s seguro que desea vaciar la tabla "%s"?'; + $lang['strtableemptied'] = 'Tabla vaciada.'; + $lang['strtableemptiedbad'] = 'FallΓ³ el vaciado de la tabla.'; + $lang['strinsertrow'] = 'Insertar Fila'; + $lang['strrowinserted'] = 'Fila insertada.'; + $lang['strrowinsertedbad'] = 'FallΓ³ la inserciΓ³n de fila.'; + $lang['strnofkref'] = 'No se hay un valor coincidente en la clave forΓ‘nea %s.'; + $lang['strrowduplicate'] = 'FallΓ³ la inserciΓ³n de fila , se intentΓ³ hacer una inserciΓ³n duplicada.'; + $lang['streditrow'] = 'Editar fila'; + $lang['strrowupdated'] = 'Fila actualizada.'; + $lang['strrowupdatedbad'] = 'FallΓ³ la actualizaciΓ³n de la fila.'; + $lang['strdeleterow'] = 'Eliminar Fila'; + $lang['strconfdeleterow'] = 'ΒΏEstΓ‘s seguro que quiere eliminar esta fila?'; + $lang['strrowdeleted'] = 'Fila eliminada.'; + $lang['strrowdeletedbad'] = 'FallΓ³ la eliminaciΓ³n de fila.'; + $lang['strinsertandrepeat'] = 'Insertar y Repite'; + $lang['strnumcols'] = 'NΓΊmero de columnas'; + $lang['strcolneedsname'] = 'Debes especificar un nombre para la columna'; + $lang['strselectallfields'] = 'Seleccionar todos los campos.'; + $lang['strselectneedscol'] = 'Debes elegir al menos una columna'; + $lang['strselectunary'] = 'Los operadores unarios no pueden tener valores.'; + $lang['strcolumnaltered'] = 'Columna Modificada.'; + $lang['strcolumnalteredbad'] = 'FallΓ³ la modificaciΓ³n de columna.'; + $lang['strconfdropcolumn'] = 'ΒΏEstΓ‘s seguro que quiere eliminar la columna "%s" de la tabla "%s"?'; + $lang['strcolumndropped'] = 'Columna eliminada.'; + $lang['strcolumndroppedbad'] = 'FallΓ³ la eliminaciΓ³n de columna.'; + $lang['straddcolumn'] = 'Agregar Columna'; + $lang['strcolumnadded'] = 'Columna agregada.'; + $lang['strcolumnaddedbad'] = 'FallΓ³ el agregado de columna.'; + $lang['strcascade'] = 'EN CASCADA'; + $lang['strtablealtered'] = 'Tabla modificada.'; + $lang['strtablealteredbad'] = 'FallΓ³ la modificaciΓ³n de la Tabla.'; + $lang['strdataonly'] = 'Solamente datos'; + $lang['strstructureonly'] = 'Solo la estructura'; + $lang['strstructureanddata'] = 'Estructura y datos'; + $lang['strtabbed'] = 'Tabulado'; + $lang['strauto'] = 'AutomΓ‘tico'; + $lang['strconfvacuumtable'] = 'ΒΏEstΓ‘s seguro que quiere limpiar "%s"?'; + $lang['strconfanalyzetable'] = 'ΒΏEstΓ‘s seguro que quiere analizar "%s"?'; + $lang['strconfreindextable'] = 'ΒΏEstΓ‘s seguro que quiere actualizar los Γ­ndices "%s"?'; + $lang['strconfclustertable'] = 'ΒΏEstΓ‘s seguro que quiere clusterizar "%s"?'; + $lang['strestimatedrowcount'] = 'Cantidad de filas estimadas'; + $lang['strspecifytabletoanalyze'] = 'Debes especificar al menos una tabla para analizar.'; + $lang['strspecifytabletoempty'] = 'Debes especificar al menos una tabla para vaciar.'; + $lang['strspecifytabletodrop'] = 'Debes especificar al menos una tabla para eliminar.'; + $lang['strspecifytabletovacuum'] = 'Debes especificar al menos una tabla para limpiar.'; + $lang['strspecifytabletoreindex'] = 'Debes especificar al menos una tabla para actualizar sus Γ­ndices.'; + $lang['strspecifytabletocluster'] = 'Debes especificar al menos una tabla para clusterizar.'; + $lang['strnofieldsforinsert'] = 'No puedes insertar un registro en una tabla sin columnas.'; + + // Columns + $lang['strcolprop'] = 'Propiedades de la Columna'; + $lang['strnotableprovided'] = 'Β‘No se suministrΓ³ al menos una tabla!'; + + // Users + $lang['struser'] = 'Usuario'; + $lang['strusers'] = 'Usuarios'; + $lang['strusername'] = 'Nombre de usuario'; + $lang['strpassword'] = 'ContraseΓ±a'; + $lang['strsuper'] = 'ΒΏSuperusuario?'; + $lang['strcreatedb'] = 'ΒΏPuede crear BD?'; + $lang['strexpires'] = 'Expira'; + $lang['strsessiondefaults'] = 'Valores predeterminados de la sesiΓ³n.'; + $lang['strnousers'] = 'No se encontraron usuarios.'; + $lang['struserupdated'] = 'Usuario actualizado.'; + $lang['struserupdatedbad'] = 'FallΓ³ la actualizaciΓ³n del usuario.'; + $lang['strshowallusers'] = 'Mostrar todos los usuarios'; + $lang['strcreateuser'] = 'Crear usuario'; + $lang['struserneedsname'] = 'Debes dar un nombre a su usuario.'; + $lang['strusercreated'] = 'Usuario creado.'; + $lang['strusercreatedbad'] = 'FallΓ³ la creaciΓ³n del usuario.'; + $lang['strconfdropuser'] = 'ΒΏEstΓ‘s seguro de querer eliminar el usuario "%s"?'; + $lang['struserdropped'] = 'Usuario eliminado.'; + $lang['struserdroppedbad'] = 'FallΓ³ la eliminaciΓ³n del usuario.'; + $lang['straccount'] = 'Cuenta'; + $lang['strchangepassword'] = 'Cambiar ContraseΓ±a'; + $lang['strpasswordchanged'] = 'ContraseΓ±a modificada.'; + $lang['strpasswordchangedbad'] = 'FallΓ³ al modificar contraseΓ±a.'; + $lang['strpasswordshort'] = 'La contraseΓ±a es muy corta.'; + $lang['strpasswordconfirm'] = 'Las contraseΓ±as no coinciden.'; + + // Groups + $lang['strgroup'] = 'Grupo'; + $lang['strgroups'] = 'Grupos'; + $lang['strgroupgroups'] = 'Groups in group "%s"'; + $lang['strshowallgroups'] = 'Mostrar todos los grupos'; + $lang['strnogroup'] = 'Grupo no encontrado.'; + $lang['strnogroups'] = 'No se encontraron grupos.'; + $lang['strcreategroup'] = 'Crear Grupo'; + $lang['strgroupneedsname'] = 'Debes darle un nombre al grupo.'; + $lang['strgroupcreated'] = 'Grupo creado.'; + $lang['strgroupcreatedbad'] = 'FallΓ³ la creaciΓ³n del grupo.'; + $lang['strconfdropgroup'] = 'ΒΏEstΓ‘s seguro de querer eliminar el grupo "%s"?'; + $lang['strgroupdropped'] = 'Grupo eliminado.'; + $lang['strgroupdroppedbad'] = 'FallΓ³ la eliminaciΓ³n del grupo.'; + $lang['strmembers'] = 'Miembros'; + $lang['strmemberof'] = 'Miembro de'; + $lang['stradminmembers'] = 'Administadores '; + $lang['straddmember'] = 'Agregar miembro'; + $lang['strmemberadded'] = 'Miembro agregado.'; + $lang['strmemberaddedbad'] = 'FallΓ³ la agregaciΓ³n de un nuevo miembro.'; + $lang['strdropmember'] = 'Retirar miembro'; + $lang['strconfdropmember'] = 'ΒΏEstΓ‘s seguro de retirar el miembro "%s" del grupo "%s"?'; + $lang['strmemberdropped'] = 'Miembro retirado.'; + $lang['strmemberdroppedbad'] = 'FallΓ³ al retirar un miembro del grupo.'; + + // Roles + $lang['strrole'] = 'Rol'; + $lang['strroles'] = 'Roles'; + $lang['strshowallroles'] = 'Mostrar todas los roles'; + $lang['strnoroles'] = 'No se encontraron roles.'; + $lang['strinheritsprivs'] = 'ΒΏHereda privilegios?'; + $lang['strcreaterole'] = 'Crear rol'; + $lang['strcancreaterole'] = 'ΒΏPuede crear roles?'; + $lang['strrolecreated'] = 'Rol creado.'; + $lang['strrolecreatedbad'] = 'FallΓ³ la creaciΓ³n del rol.'; + $lang['strrolealtered'] = 'Rol modificado.'; + $lang['strrolealteredbad'] = 'FallΓ³ la modificaciΓ³n del rol.'; + $lang['strcanlogin'] = 'ΒΏPuede iniciar sesiΓ³n?'; + $lang['strconnlimit'] = 'LΓ­mite de conexiΓ³n'; + $lang['strdroprole'] = 'Eliminar rol'; + $lang['strconfdroprole'] = 'ΒΏEstΓ‘s seguro de que desea eliminar el rol "%s"?'; + $lang['strroledropped'] = 'Rol eliminado.'; + $lang['strroledroppedbad'] = 'FallΓ³ la eliminaciΓ³n del rol.'; + $lang['strnolimit'] = 'Sin lΓ­mite'; + $lang['strnever'] = 'Nunca'; + $lang['strroleneedsname'] = 'Debes darle un nombre al rol.'; + + // Privileges + $lang['strprivilege'] = 'Privilegio'; + $lang['strprivileges'] = 'Privilegios'; + $lang['strnoprivileges'] = 'Por defecto, este objeto tiene privilegios de usuario.'; + $lang['strgrant'] = 'Otorgar'; + $lang['strrevoke'] = 'Revocar'; + $lang['strgranted'] = 'Los privilegios cambiaron.'; + $lang['strgrantfailed'] = 'FallΓ³ la actualizaciΓ³n de los privilegios.'; + $lang['strgrantbad'] = 'Debes especificar al menos un usuario o grupo y al menos un privilegio.'; + $lang['strgrantor'] = 'Cedente'; + $lang['strasterisk'] = '*'; + + // Databases + $lang['strdatabase'] = 'Base de Datos'; + $lang['strdatabases'] = 'Bases de Datos'; + $lang['strshowalldatabases'] = 'Mostrar todas las bases de datos'; + $lang['strnodatabases'] = 'No se encontraron las bases de datos.'; + $lang['strcreatedatabase'] = 'Crear base de datos'; + $lang['strdatabasename'] = 'Nombre de la base de datos'; + $lang['strdatabaseneedsname'] = 'Debes darle un nombre a la base de datos.'; + $lang['strdatabasecreated'] = 'Base de datos creada.'; + $lang['strdatabasecreatedbad'] = 'FallΓ³ la creaciΓ³n de la base de datos.'; + $lang['strconfdropdatabase'] = 'ΒΏEstΓ‘s seguro que quiere eliminar la base de datos "%s"?'; + $lang['strdatabasedropped'] = 'Base de datos eliminada.'; + $lang['strdatabasedroppedbad'] = 'FallΓ³ al eliminar la base de datos.'; + $lang['strentersql'] = 'Ingrese la sentencia de SQL para ejecutar:'; + $lang['strsqlexecuted'] = 'SQL ejecutada.'; + $lang['strvacuumgood'] = 'Limpieza completada.'; + $lang['strvacuumbad'] = 'FallΓ³ la limpieza.'; + $lang['stranalyzegood'] = 'AnΓ‘lisis completado.'; + $lang['stranalyzebad'] = 'El analisis fallΓ³.'; + $lang['strreindexgood'] = 'ActualizaciΓ³n de Γ­ndices completada.'; + $lang['strreindexbad'] = 'FallΓ³ la actualizaciΓ³n de Γ­ndices.'; + $lang['strfull'] = 'Llena'; + $lang['strfreeze'] = 'Congelar'; + $lang['strforce'] = 'Forzar'; + $lang['strsignalsent'] = 'SeΓ±al enviada.'; + $lang['strsignalsentbad'] = 'FallΓ³ el envΓ­o de la seΓ±al.'; + $lang['strallobjects'] = 'Todos los objetos'; + $lang['strdatabasealtered'] = 'Base de Datos modificada.'; + $lang['strdatabasealteredbad'] = 'FallΓ³ al intentar modificar la base de datos.'; + $lang['strspecifydatabasetodrop'] = 'Debes especificar al menos una base de datos para eliminar.'; + $lang['strtemplatedb'] = 'Plantilla'; + $lang['strconfanalyzedatabase'] = 'ΒΏEstΓ‘s seguro que desea analizar todas las tablas en la base de datos "%s"?'; + $lang['strconfvacuumdatabase'] = 'ΒΏEstΓ‘s seguro que desea limpiar todas las tablas en la base de datos "%s"?'; + $lang['strconfreindexdatabase'] = 'ΒΏEstΓ‘s seguro que desea actualizar los Γ­ndices de todas las tablas en la base de datos "%s"?'; + $lang['strconfclusterdatabase'] = 'ΒΏEstΓ‘s seguro que desea ordenar todas las tablas en la base de datos "%s"?'; + + // Views + $lang['strview'] = 'Vista'; + $lang['strviews'] = 'Vistas'; + $lang['strshowallviews'] = 'Mostrar todas las vistas'; + $lang['strnoview'] = 'No se encontrΓ³ la vista.'; + $lang['strnoviews'] = 'No se encontraron vistas.'; + $lang['strcreateview'] = 'Crear Vista'; + $lang['strviewname'] = 'Ver el nombre'; + $lang['strviewneedsname'] = 'Debes darle un nombre a la vista.'; + $lang['strviewneedsdef'] = 'Debes darle una definiciΓ³n a su vista.'; + $lang['strviewneedsfields'] = 'Debes seleccionar las columnas deseadas en su vista.'; + $lang['strviewcreated'] = 'Vista creada.'; + $lang['strviewcreatedbad'] = 'FallΓ³ al crear la vista.'; + $lang['strconfdropview'] = 'ΒΏEstΓ‘s seguro que quiere eliminar la vista "%s"?'; + $lang['strviewdropped'] = 'Vista eliminada.'; + $lang['strviewdroppedbad'] = 'FallΓ³ al intentar eliminar la vista.'; + $lang['strviewupdated'] = 'Vista actualizada.'; + $lang['strviewupdatedbad'] = 'FallΓ³ al actualizar la vista.'; + $lang['strviewlink'] = 'Claves de enlace'; + $lang['strviewconditions'] = 'Condiciones adicionales'; + $lang['strcreateviewwiz'] = 'Crear vista usando el asistente'; + $lang['strrenamedupfields'] = 'Renombrar campos duplicados'; + $lang['strdropdupfields'] = 'Eliminar campos duplicados'; + $lang['strerrordupfields'] = 'Error en campos duplicados'; + $lang['strviewaltered'] = 'Vista modificada.'; + $lang['strviewalteredbad'] = 'FallΓ³ en la modificaciΓ³n de la vista.'; + $lang['strspecifyviewtodrop'] = 'Debes especificar al menos una vista a eliminar.'; + + // Sequences + $lang['strsequence'] = 'Secuencia'; + $lang['strsequences'] = 'Secuencias'; + $lang['strshowallsequences'] = 'Mostrar todas las secuencias'; + $lang['strnosequence'] = 'No se encontrΓ³ la secuencia.'; + $lang['strnosequences'] = 'No se encontraron las secuencias.'; + $lang['strcreatesequence'] = 'Crear secuencia'; + $lang['strlastvalue'] = 'Último Valor'; + $lang['strincrementby'] = 'Incremento'; + $lang['strstartvalue'] = 'Valor inicial'; + $lang['strrestartvalue'] = 'Reiniciar valor'; + $lang['strmaxvalue'] = 'Valor mΓ‘ximo'; + $lang['strminvalue'] = 'Valor mΓ­nimo'; + $lang['strcachevalue'] = 'Valor de la cachΓ©'; + $lang['strlogcount'] = 'Registrar cuenta'; + $lang['strcancycle'] = 'ΒΏCΓ­clica?'; + $lang['striscalled'] = 'ΒΏIncrementarΓ‘ el ΓΊltimo valor antes de ser llamado (is_called)?'; + $lang['strsequenceneedsname'] = 'Debes especificar el nombre de la secuencia.'; + $lang['strsequencecreated'] = 'Secuencia creada.'; + $lang['strsequencecreatedbad'] = 'FallΓ³ la creaciΓ³n de la secuencia.'; + $lang['strconfdropsequence'] = 'ΒΏEstΓ‘s seguro que quiere eliminar la secuencia "%s"?'; + $lang['strsequencedropped'] = 'Secuencia eliminada.'; + $lang['strsequencedroppedbad'] = 'FallΓ³ la eliminaciΓ³n de la secuencia.'; + $lang['strsequencerestart'] = 'Secuencia restablecida.'; + $lang['strsequencerestartbad'] = 'FallΓ³ al restablecer la secuencia.'; + $lang['strsequencereset'] = 'Secuencia reiniciada.'; + $lang['strsequenceresetbad'] = 'FallΓ³ al intentar reiniciar la secuencia.'; + $lang['strsequencealtered'] = 'Secuencia modificada.'; + $lang['strsequencealteredbad'] = 'FallΓ³ la modificaciΓ³n de la secuencia.'; + $lang['strsetval'] = 'Fijar el valor'; + $lang['strsequencesetval'] = 'Fijar el valor de la secuencia.'; + $lang['strsequencesetvalbad'] = 'FallΓ³ la fijaciΓ³n del valor en la secuencia.'; + $lang['strnextval'] = 'Valor de incremento'; + $lang['strsequencenextval'] = 'Secuencia incrementada.'; + $lang['strsequencenextvalbad'] = 'FallΓ³ el incremento de la secuencia.'; + $lang['strspecifysequencetodrop'] = 'Debes especificar al menos una secuencia a eliminar.'; + + // Indexes + $lang['strindex'] = 'Índice'; + $lang['strindexes'] = 'Índices'; + $lang['strindexname'] = 'Nombre del Índice'; + $lang['strshowallindexes'] = 'Mostrar Todos los Índices'; + $lang['strnoindex'] = 'No se encontrΓ³ el Γ­ndice.'; + $lang['strnoindexes'] = 'No se encontraron Γ­ndices.'; + $lang['strcreateindex'] = 'Crear Índice'; + $lang['strtabname'] = 'Nombre de la pestaΓ±a'; + $lang['strcolumnname'] = 'Nombre de Columna'; + $lang['strindexneedsname'] = 'Debes darle un nombre al Γ­ndice'; + $lang['strindexneedscols'] = 'Los Γ­ndices requieren un nΓΊmero vΓ‘lido de columnas.'; + $lang['strindexcreated'] = 'Índice creado'; + $lang['strindexcreatedbad'] = 'FallΓ³ la creaciΓ³n del Γ­ndice.'; + $lang['strconfdropindex'] = 'ΒΏEstΓ‘s seguro d eliminar el Γ­ndice "%s"?'; + $lang['strindexdropped'] = 'Índice eliminado.'; + $lang['strindexdroppedbad'] = 'FallΓ³ la eliminaciΓ³n del Γ­ndice.'; + $lang['strkeyname'] = 'Nombre de la clave'; + $lang['struniquekey'] = 'Clave ΓΊnica'; + $lang['strprimarykey'] = 'Clave primaria'; + $lang['strindextype'] = 'Tipo de Γ­ndice'; + $lang['strtablecolumnlist'] = 'Columnas en tabla'; + $lang['strindexcolumnlist'] = 'Columnas en el Γ­ndice'; + $lang['strconfcluster'] = 'ΒΏEstΓ‘s seguro de querer clusterizar en "%s"?'; + $lang['strclusteredgood'] = 'ClusterizaciΓ³n completa.'; + $lang['strclusteredbad'] = 'FallΓ³ la clusterizaciΓ³n de la tabla.'; + $lang['strconcurrently'] = 'Concurrente'; + $lang['strnoclusteravailable'] = 'Tabla no ordenada en un Γ­ndice.'; + + // Rules + $lang['strrules'] = 'Reglas'; + $lang['strrule'] = 'Regla'; + $lang['strshowallrules'] = 'Mostrar todas las reglas'; + $lang['strnorule'] = 'No se encontrΓ³ la regla.'; + $lang['strnorules'] = 'No se encontraron las reglas.'; + $lang['strcreaterule'] = 'Crear regla'; + $lang['strrulename'] = 'Nombre de regla'; + $lang['strruleneedsname'] = 'Debes darle un nombre a la regla.'; + $lang['strrulecreated'] = 'Regla creada.'; + $lang['strrulecreatedbad'] = 'FallΓ³ la creaciΓ³n de la regla.'; + $lang['strconfdroprule'] = 'ΒΏEstΓ‘s seguro de querer eliminar la regla "%s" en "%s"?'; + $lang['strruledropped'] = 'Regla eliminada.'; + $lang['strruledroppedbad'] = 'FallΓ³ la eliminaciΓ³n de la regla.'; + + // Constraints + $lang['strconstraint'] = 'RestricciΓ³n'; + $lang['strconstraints'] = 'Restricciones'; + $lang['strshowallconstraints'] = 'Mostrar todas las restricciones'; + $lang['strnoconstraints'] = 'No se encontraron restricciones.'; + $lang['strcreateconstraint'] = 'Crear restricciΓ³n'; + $lang['strconstraintcreated'] = 'RestricciΓ³n creada.'; + $lang['strconstraintcreatedbad'] = 'FallΓ³ la creaciΓ³n de la restricciΓ³n.'; + $lang['strconfdropconstraint'] = 'ΒΏEstΓ‘s seguro que quiere eliminar la restricciΓ³n "%s" de "%s"?'; + $lang['strconstraintdropped'] = 'RestricciΓ³n eliminada.'; + $lang['strconstraintdroppedbad'] = 'FallΓ³ al eliminar la restricciΓ³n.'; + $lang['straddcheck'] = 'Agregar chequeo'; + $lang['strcheckneedsdefinition'] = 'La restricciΓ³n de chequeo necesita una definiciΓ³n.'; + $lang['strcheckadded'] = 'RestricciΓ³n de chequeo agregada.'; + $lang['strcheckaddedbad'] = 'Fallo al intentar agregar restricciΓ³n de chequeo.'; + $lang['straddpk'] = 'Agregar clave primaria'; + $lang['strpkneedscols'] = 'La clave primaria necesita al menos un campo.'; + $lang['strpkadded'] = 'Clave primaria agregada.'; + $lang['strpkaddedbad'] = 'FallΓ³ al intentar crear la clave primaria.'; + $lang['stradduniq'] = 'Agregar clave ΓΊnica'; + $lang['struniqneedscols'] = 'La clave ΓΊnica necesita al menos un campo.'; + $lang['struniqadded'] = 'Clave ΓΊnica agregada.'; + $lang['struniqaddedbad'] = 'FallΓ³ al intentar agregar la clave ΓΊnica.'; + $lang['straddfk'] = 'Agregar clave forΓ‘nea'; + $lang['strfkneedscols'] = 'La clave forΓ‘nea necesita al menos un campo.'; + $lang['strfkneedstarget'] = 'La clave forΓ‘nea necesita una tabla para referenciar.'; + $lang['strfkadded'] = 'Clave forΓ‘nea agregada.'; + $lang['strfkaddedbad'] = 'Fallo al agregar la clave forΓ‘nea.'; + $lang['strfktarget'] = 'Tabla de destino'; + $lang['strfkcolumnlist'] = 'Campos en la clave'; + $lang['strondelete'] = 'AL ELIMINAR'; + $lang['stronupdate'] = 'AL ACTUALIZAR'; + + // Functions + $lang['strfunction'] = 'FunciΓ³n'; + $lang['strfunctions'] = 'Funciones'; + $lang['strshowallfunctions'] = 'Mostrar todas las funciones'; + $lang['strnofunction'] = 'No se encontrΓ³ la funciΓ³n.'; + $lang['strnofunctions'] = 'No se encontraron funciones.'; + $lang['strcreateplfunction'] = 'Crear funciΓ³n SQL/PL'; + $lang['strcreateinternalfunction'] = 'Crear funciΓ³n interna'; + $lang['strcreatecfunction'] = 'Crear funciΓ³n en C'; + $lang['strfunctionname'] = 'Nombre de la funciΓ³n'; + $lang['strreturns'] = 'Retorna'; + $lang['strproglanguage'] = 'Lenguaje de programaciΓ³n'; + $lang['strfunctionneedsname'] = 'Debes darle un nombre a la funciΓ³n.'; + $lang['strfunctionneedsdef'] = 'Debes darle una definiciΓ³n a la funciΓ³n.'; + $lang['strfunctioncreated'] = 'FunciΓ³n creada.'; + $lang['strfunctioncreatedbad'] = 'FallΓ³ la creaciΓ³n de la funciΓ³n.'; + $lang['strconfdropfunction'] = 'ΒΏEstΓ‘s seguro que quiere eliminar la funciΓ³n "%s"?'; + $lang['strfunctiondropped'] = 'FunciΓ³n eliminada.'; + $lang['strfunctiondroppedbad'] = 'FallΓ³ al eliminar la funciΓ³n.'; + $lang['strfunctionupdated'] = 'FunciΓ³n actualizada.'; + $lang['strfunctionupdatedbad'] = 'FallΓ³ al actualizar la funciΓ³n.'; + $lang['strobjectfile'] = 'Archivo de objeto'; + $lang['strlinksymbol'] = 'Vinculo simbΓ³lico'; + $lang['strarguments'] = 'Argumentos'; + $lang['strargmode'] = 'Modo'; + $lang['strargtype'] = 'Tipo'; + $lang['strargadd'] = 'Agregar otro argumento'; + $lang['strargremove'] = 'Eliminar este argumento'; + $lang['strargnoargs'] = 'Esta funciΓ³n no tendrΓ‘ argumentos.'; + $lang['strargenableargs'] = 'Habilitar argumentos pasados a esta funciΓ³n.'; + $lang['strargnorowabove'] = 'Debe existir una fila por encima de esta fila.'; + $lang['strargnorowbelow'] = 'Debe exisitr una fila por debajo de esta fila.'; + $lang['strargraise'] = 'Mover arriba.'; + $lang['strarglower'] = 'Mover abajo.'; + $lang['strargremoveconfirm'] = 'ΒΏEsta seguro que quiere eliminar este argumento? Esto NO se puede deshacer.'; + $lang['strfunctioncosting'] = 'Costo de la funciΓ³n'; + $lang['strresultrows'] = 'Filas en el resultado'; + $lang['strexecutioncost'] = 'Costo de ejecuciΓ³n'; + $lang['strspecifyfunctiontodrop'] = 'Debes especificar al menos una funciΓ³n a eliminar.'; + + // Triggers + $lang['strtrigger'] = 'Disparador'; + $lang['strtriggers'] = 'Disparadores'; + $lang['strshowalltriggers'] = 'Mostrar todos los disparadores'; + $lang['strnotrigger'] = 'No se encontrΓ³ el disparador.'; + $lang['strnotriggers'] = 'No se encontraron disparadores.'; + $lang['strcreatetrigger'] = 'Crear Disparador'; + $lang['strtriggerneedsname'] = 'Debes darle un nombre al disparador.'; + $lang['strtriggerneedsfunc'] = 'Debes especificar una funciΓ³n para el disparador.'; + $lang['strtriggercreated'] = 'Disparador creado.'; + $lang['strtriggercreatedbad'] = 'FallΓ³ la creaciΓ³n del disparador.'; + $lang['strconfdroptrigger'] = 'ΒΏEstΓ‘s seguro que quiere eliminar el disparador "%s" en "%s"?'; + $lang['strconfenabletrigger'] = 'ΒΏEstΓ‘s seguro que desea activar el disparador "%s" en "%s"?'; + $lang['strconfdisabletrigger'] = 'ΒΏEstΓ‘s seguro que desea desactivar el disparador "%s" en "%s"?'; + $lang['strtriggerdropped'] = 'Disparador eliminado.'; + $lang['strtriggerdroppedbad'] = 'FallΓ³ al eliminar el disparador.'; + $lang['strtriggerenabled'] = 'Disparador activado.'; + $lang['strtriggerenabledbad'] = 'FallΓ³ la activaciΓ³n del disparador.'; + $lang['strtriggerdisabled'] = 'Disparador desactivado.'; + $lang['strtriggerdisabledbad'] = 'FallΓ³ la desactivaciΓ³n del disparador.'; + $lang['strtriggeraltered'] = 'Disparador modificado.'; + $lang['strtriggeralteredbad'] = 'FallΓ³ la modificaciΓ³n del disparador.'; + $lang['strforeach'] = 'Para cada uno'; + + // Types + $lang['strtype'] = 'Tipo de dato'; + $lang['strtypes'] = 'Tipos de datos'; + $lang['strshowalltypes'] = 'Mostrar todos los tipos'; + $lang['strnotype'] = 'No se encontrΓ³ el tipo.'; + $lang['strnotypes'] = 'No se encontraron tipos.'; + $lang['strcreatetype'] = 'Crear Tipo'; + $lang['strcreatecomptype'] = 'Crear tipo compuesto'; + $lang['strcreateenumtype'] = 'Crear tipo enumerado'; + $lang['strtypeneedsfield'] = 'Debes especificar al menos un campo.'; + $lang['strtypeneedsvalue'] = 'Debes especificar al menos un valor.'; + $lang['strtypeneedscols'] = 'Tipos compuestos requieren de un nΓΊmero vΓ‘lido de columnas.'; + $lang['strtypeneedsvals'] = 'Debes especificar un nΓΊmero vΓ‘lido de valores.'; + $lang['strinputfn'] = 'FunciΓ³n de entrada'; + $lang['stroutputfn'] = 'FunciΓ³n de salida'; + $lang['strpassbyval'] = 'ΒΏPasar por valor?'; + $lang['stralignment'] = 'Alineamiento'; + $lang['strelement'] = 'Elemento'; + $lang['strdelimiter'] = 'Delimitador'; + $lang['strstorage'] = 'Almacenamiento'; + $lang['strfield'] = 'Campo'; + $lang['strnumfields'] = 'NΓΊmero de campos'; + $lang['strnumvalues'] = 'NΓΊmero de valores'; + $lang['strtypeneedsname'] = 'Debes especificar un nombre para el tipo.'; + $lang['strtypeneedslen'] = 'Debes especificar una longitud para el tipo.'; + $lang['strtypecreated'] = 'Tipo creado'; + $lang['strtypecreatedbad'] = 'FallΓ³ la creaciΓ³n del tipo.'; + $lang['strconfdroptype'] = 'ΒΏEstΓ‘s seguro de querer eliminar el tipo "%s"?'; + $lang['strtypedropped'] = 'Tipo eliminado.'; + $lang['strtypedroppedbad'] = 'FallΓ³ al eliminar el tipo.'; + $lang['strflavor'] = 'Tipo'; + $lang['strbasetype'] = 'Base'; + $lang['strcompositetype'] = 'Compuesto'; + $lang['strpseudotype'] = 'Seudo'; + $lang['strenum'] = 'Enumerado'; + $lang['strenumvalues'] = 'Valores enumerados'; + + // Schemas + $lang['strschema'] = 'Esquema'; + $lang['strschemas'] = 'Esquemas'; + $lang['strshowallschemas'] = 'Mostrar Todos los Esquemas'; + $lang['strnoschema'] = 'No se encontrΓ³ el esquema.'; + $lang['strnoschemas'] = 'No se encontraron esquemas.'; + $lang['strcreateschema'] = 'Crear Esquema'; + $lang['strschemaname'] = 'Nombre del esquema'; + $lang['strschemaneedsname'] = 'Debes especificar un nombre para el esquema.'; + $lang['strschemacreated'] = 'Esquema creado'; + $lang['strschemacreatedbad'] = 'FallΓ³ la creaciΓ³n del esquema.'; + $lang['strconfdropschema'] = 'ΒΏEstΓ‘s seguro que quiere eliminar el esquema "%s"?'; + $lang['strschemadropped'] = 'Esquema eliminado.'; + $lang['strschemadroppedbad'] = 'FallΓ³ la eliminaciΓ³n del esquema.'; + $lang['strschemaaltered'] = 'Esquema actualizado.'; + $lang['strschemaalteredbad'] = 'FallΓ³ la actualizaciΓ³n del esquema.'; + $lang['strsearchpath'] = 'Ruta de la bΓΊsqueda en los esquemas'; + $lang['strspecifyschematodrop'] = 'Debes especificar al menos un esquema a eliminar.'; + + // Reports + + //Domains + $lang['strdomain'] = 'Dominio'; + $lang['strdomains'] = 'Dominios'; + $lang['strshowalldomains'] = 'Mostrar todos los dominios'; + $lang['strnodomains'] = 'No se encontraron dominios.'; + $lang['strcreatedomain'] = 'Crear dominio'; + $lang['strdomaindropped'] = 'Dominio eliminado.'; + $lang['strdomaindroppedbad'] = 'FallΓ³ la eliminaciΓ³n del dominio.'; + $lang['strconfdropdomain'] = 'ΒΏEsta seguro de querer eliminar el dominio "%s"?'; + $lang['strdomainneedsname'] = 'Debes dar un nombre para el dominio.'; + $lang['strdomaincreated'] = 'Dominio creado.'; + $lang['strdomaincreatedbad'] = 'FallΓ³ la creaciΓ³n del dominio.'; + $lang['strdomainaltered'] = 'Dominio modificado.'; + $lang['strdomainalteredbad'] = 'FallΓ³ al intentar modificar el dominio.'; + + // Operators + $lang['stroperator'] = 'Operador'; + $lang['stroperators'] = 'Operadores'; + $lang['strshowalloperators'] = 'Mostrar todos los operadores'; + $lang['strnooperator'] = 'No se encontrΓ³ el operador.'; + $lang['strnooperators'] = 'No se encontraron operadores.'; + $lang['strcreateoperator'] = 'Crear operador'; + $lang['strleftarg'] = 'Tipo de datos del arg. izquierdo'; + $lang['strrightarg'] = 'Tipo de datos del arg. derecho'; + $lang['strcommutator'] = 'Conmutador'; + $lang['strnegator'] = 'NegaciΓ³n'; + $lang['strrestrict'] = 'Restringir'; + $lang['strjoin'] = 'UniΓ³n'; + $lang['strhashes'] = 'Llaves (Hash)'; + $lang['strmerges'] = 'Fusiones'; + $lang['strleftsort'] = 'Ordenado izquierdo'; + $lang['strrightsort'] = 'Ordenado derecho'; + $lang['strlessthan'] = 'Menor que'; + $lang['strgreaterthan'] = 'Mayor que'; + $lang['stroperatorneedsname'] = 'Debes darle un nombre al operador.'; + $lang['stroperatorcreated'] = 'Operador creado'; + $lang['stroperatorcreatedbad'] = 'FallΓ³ la creaciΓ³n del operador.'; + $lang['strconfdropoperator'] = 'ΒΏEstΓ‘s seguro de querer eliminar el operador "%s"?'; + $lang['stroperatordropped'] = 'Operador eliminado.'; + $lang['stroperatordroppedbad'] = 'FallΓ³ en la eliminaciΓ³n del operador.'; + + // Casts + $lang['strcasts'] = 'ConversiΓ³n de tipos'; + $lang['strnocasts'] = 'No se encontraron conversiones.'; + $lang['strsourcetype'] = 'Tipo del origen'; + $lang['strtargettype'] = 'Tipo del destino'; + $lang['strimplicit'] = 'ImplΓ­cito'; + $lang['strinassignment'] = 'En asignaciΓ³n'; + $lang['strbinarycompat'] = '(Compatible con binario)'; + + // Conversions + $lang['strconversions'] = 'Conversiones'; + $lang['strnoconversions'] = 'No se encontraron conversiones.'; + $lang['strsourceencoding'] = 'CodificaciΓ³n de la fuente'; + $lang['strtargetencoding'] = 'CodificaciΓ³n del destino'; + + // Languages + $lang['strlanguages'] = 'Lenguajes'; + $lang['strnolanguages'] = 'No se encontraron lenguajes.'; + $lang['strtrusted'] = 'Confiable'; + + // Info + $lang['strnoinfo'] = 'No hay informaciΓ³n disponible.'; + $lang['strreferringtables'] = 'Tablas referenciales'; + $lang['strparenttables'] = 'Tablas padre'; + $lang['strchildtables'] = 'Tablas hija'; + + // Aggregates + $lang['straggregate'] = 'AgregaciΓ³n'; + $lang['straggregates'] = 'Agregaciones'; + $lang['strnoaggregates'] = 'No se encontraron agregaciones.'; + $lang['stralltypes'] = '(Todos los tipos)'; + $lang['strcreateaggregate'] = 'Crear AgregaciΓ³n'; + $lang['straggrbasetype'] = 'Tipo del dato de entrada'; + $lang['straggrsfunc'] = 'FunciΓ³n de transiciΓ³n de estado'; + $lang['straggrstype'] = 'Tipo de dato para el valor de estado'; + $lang['straggrffunc'] = 'FunciΓ³n final'; + $lang['straggrinitcond'] = 'CondiciΓ³n inicial'; + $lang['straggrsortop'] = 'Operador de ordenamiento'; + $lang['strconfdropaggregate'] = 'ΒΏEstΓ‘s seguro que desea eliminar la agregaciΓ³n "%s"?'; + $lang['straggregatedropped'] = 'AgregaciΓ³n eliminada.'; + $lang['straggregatedroppedbad'] = 'FallΓ³ en la eliminaciΓ³n de la agregaciΓ³n.'; + $lang['straggraltered'] = 'AgregaciΓ³n modificada.'; + $lang['straggralteredbad'] = 'FallΓ³ la modificaciΓ³n de la agregaciΓ³n.'; + $lang['straggrneedsname'] = 'Debes especificar un nombre para la agregaciΓ³n.'; + $lang['straggrneedsbasetype'] = 'Debes especificar un tipo de dato de entrada para la agregaciΓ³n.'; + $lang['straggrneedssfunc'] = 'Debes especificar el nombre de la funciΓ³n de transiciΓ³n de estado de la agregaciΓ³n.'; + $lang['straggrneedsstype'] = 'Debes especificar el tipo de dato para la el valor de estado de la agregaciΓ³n.'; + $lang['straggrcreated'] = 'AgregaciΓ³n creada.'; + $lang['straggrcreatedbad'] = 'FallΓ³ la creaciΓ³n de la agregaciΓ³n.'; + $lang['straggrshowall'] = 'Mostrar todas las agregaciones'; + + // Operator Classes + $lang['stropclasses'] = 'Clases de operadores'; + $lang['strnoopclasses'] = 'No se encontraron las clases de operadores.'; + $lang['straccessmethod'] = 'MΓ©todo de acceso'; + + // Stats and performance + $lang['strrowperf'] = 'Rendimiento de fila'; + $lang['strioperf'] = 'Rentimiento de E/S'; + $lang['stridxrowperf'] = 'Rendimiento de Γ­ndice de la fila'; + $lang['stridxioperf'] = 'Rendimiento de indexado de E/S'; + $lang['strpercent'] = '%'; + $lang['strsequential'] = 'Secuencial'; + $lang['strscan'] = 'Escanear'; + $lang['strread'] = 'Leer'; + $lang['strfetch'] = 'Extraer'; + $lang['strheap'] = 'Salto'; + $lang['strtoast'] = 'TOAST'; + $lang['strtoastindex'] = 'Indice TOAST'; + $lang['strcache'] = 'CachΓ©'; + $lang['strdisk'] = 'Disco'; + $lang['strrows2'] = 'Filas'; + + // Tablespaces + $lang['strtablespace'] = 'Tablespace'; + $lang['strtablespaces'] = 'Tablespaces'; + $lang['strshowalltablespaces'] = 'Mostrar todos los tablespaces'; + $lang['strnotablespaces'] = 'No se encontraron tablespaces.'; + $lang['strcreatetablespace'] = 'Crear tablespace'; + $lang['strlocation'] = 'UbicaciΓ³n'; + $lang['strtablespaceneedsname'] = 'Debes darle un nombre al tablespace.'; + $lang['strtablespaceneedsloc'] = 'Debes dar un directorio en donde crear el tablespace.'; + $lang['strtablespacecreated'] = 'Tablespace creado.'; + $lang['strtablespacecreatedbad'] = 'FallΓ³ la creaciΓ³n del tablespace.'; + $lang['strconfdroptablespace'] = 'ΒΏEsta seguro que quiere eliminar el tablespace "%s"?'; + $lang['strtablespacedropped'] = 'Tablespace eliminado.'; + $lang['strtablespacedroppedbad'] = 'FallΓ³ la eliminaciΓ³n del tablespace.'; + $lang['strtablespacealtered'] = 'Tablespace modificado.'; + $lang['strtablespacealteredbad'] = 'FallΓ³ la modificaciΓ³n del Tablespace.'; + + // Miscellaneous + $lang['strtopbar'] = '%s corriendo en %s:%s -- Usted ha iniciado sesiΓ³n con el usuario "%s"'; + $lang['strtimefmt'] = 'd/m/Y, G:i:s'; + $lang['strhelp'] = 'Ayuda'; + $lang['strhelpicon'] = '?'; + $lang['strhelppagebrowser'] = 'Buscador de la pΓ‘gina de ayΓΊda'; + $lang['strselecthelppage'] = 'Seleccione una pΓ‘gina de ayuda'; + $lang['strinvalidhelppage'] = 'PΓ‘gina de ayuda invΓ‘lida.'; + $lang['strlogintitle'] = 'Iniciar sesiΓ³n en %s'; + $lang['strlogoutmsg'] = 'Saliendo de %s'; + $lang['strloading'] = 'Cargando...'; + $lang['strerrorloading'] = 'Error al cargar'; + $lang['strclicktoreload'] = 'Clic para recargar'; + + // Autovacuum + $lang['strautovacuum'] = 'Autolimpiado'; + $lang['strturnedon'] = 'Encendido'; + $lang['strturnedoff'] = 'Apagado'; + $lang['strenabled'] = 'Habilitado'; + $lang['strnovacuumconf'] = 'No se encontrΓ³ configuraciΓ³n para autolimpiar.'; + $lang['strvacuumbasethreshold'] = 'Umbral de limpiar'; + $lang['strvacuumscalefactor'] = 'Factor de escala de limpiado'; + $lang['stranalybasethreshold'] = 'Analizar umbral base'; + $lang['stranalyzescalefactor'] = 'Analizar Facor de Escala'; + $lang['strvacuumcostdelay'] = 'Tiempo de retraso para limpiar'; + $lang['strvacuumcostlimit'] = 'Limite del costo de limpiar'; + $lang['strvacuumpertable'] = 'ConfiguraciΓ³n de autolimpiar de cada tabla'; + $lang['straddvacuumtable'] = 'Agregar configuraciΓ³n de autolimpiar a una tabla'; + $lang['streditvacuumtable'] = 'Editar configuraciΓ³n de autolimpiar para la tabla %s'; + $lang['strdelvacuumtable'] = 'ΒΏEliminar configuraciΓ³n de autolimpiar para la tabla %s ?'; + $lang['strvacuumtablereset'] = 'Reiniciar configuraciΓ³n de autolimpiar para la tabla %s '; + $lang['strdelvacuumtablefail'] = 'FallΓ³ al remover la configuraciΓ³n de autolimpiar para la tabla %s'; + $lang['strsetvacuumtablesaved'] = 'ConfiguraciΓ³n de autolimpiar %s guardada.'; + $lang['strsetvacuumtablefail'] = 'FallΓ³ la configuraciΓ³n de autolimpiar para la tabla %s.'; + $lang['strspecifydelvacuumtable'] = 'Debes especificar la tabla a la que deseas removerle los parΓ‘metros de autolimpiar.'; + $lang['strspecifyeditvacuumtable'] = 'Debes especificar la tabla a la que deseeas editarle los parΓ‘metros de autolimpiar.'; + $lang['strnotdefaultinred'] = 'Los valores en rojo no son los valores por defecto.'; + + // Table-level Locks + $lang['strlocks'] = 'Bloqueos'; + $lang['strtransaction'] = 'ID de la transacciΓ³n'; + $lang['strvirtualtransaction'] = 'ID de la transacciΓ³n virtual'; + $lang['strprocessid'] = 'ID de proceso'; + $lang['strmode'] = 'Modo de bloqueo'; + $lang['strislockheld'] = 'ΒΏSe mantiene el bloqueo?'; + + // Prepared transactions + $lang['strpreparedxacts'] = 'Transacciones preparadas'; + $lang['strxactid'] = 'ID de la TransacciΓ³n'; + $lang['strgid'] = 'ID Global'; + + // Fulltext search + $lang['strfulltext'] = 'BΓΊsqueda de texto completo'; + $lang['strftsconfig'] = 'ConfiguraciΓ³n de BTC'; + $lang['strftsconfigs'] = 'Configuraciones'; + $lang['strftscreateconfig'] = 'Crear configuraciΓ³n de BTC'; + $lang['strftscreatedict'] = 'Crear diccionario'; + $lang['strftscreatedicttemplate'] = 'Crear plantilla de dicionario'; + $lang['strftscreateparser'] = 'Crear analizador'; + $lang['strftsnoconfigs'] = 'No se encontrΓ³ configuraciΓ³n de bΓΊsqueda de texto completo.'; + $lang['strftsconfigdropped'] = 'ConfiguraciΓ³n de bΓΊsqueda de texto completo eliminada.'; + $lang['strftsconfigdroppedbad'] = 'FallΓ³ la eliminaciΓ³n de la configuraciΓ³n de bΓΊsqueda de texto completo.'; + $lang['strconfdropftsconfig'] = 'ΒΏEstΓ‘s seguro de eliminar la configuraciΓ³n de bΓΊsqueda de texto completo "%s"?'; + $lang['strconfdropftsdict'] = 'ΒΏEstΓ‘s seguro eliminar el diccionario de BTC "%s"?'; + $lang['strconfdropftsmapping'] = 'ΒΏEstΓ‘s seguro de eliminar la asignaciΓ³n "%s" de la configuraciΓ³n de BTC "%s"?'; + $lang['strftstemplate'] = 'Plantilla'; + $lang['strftsparser'] = 'Analizador'; + $lang['strftsconfigneedsname'] = 'Debes suministrar un nombre para la configuraciΓ³n de la BTC.'; + $lang['strftsconfigcreated'] = 'ConfiguraciΓ³n de BTC creada.'; + $lang['strftsconfigcreatedbad'] = 'FallΓ³ la creaciΓ³n de BTC.'; + $lang['strftsmapping'] = 'Mapeo'; + $lang['strftsdicts'] = 'Diccionarios'; + $lang['strftsdict'] = 'Diccionario'; + $lang['strftsemptymap'] = 'ConfiguraciΓ³n vacΓ­a de la asignaciΓ³n de BTC .'; + $lang['strftsconfigaltered'] = 'ConfiguraciΓ³n de BTC modificada.'; + $lang['strftsconfigalteredbad'] = 'FallΓ³ la modificaciΓ³n de la configuraciΓ³n de BTC.'; + $lang['strftsconfigmap'] = 'ConfiguraciΓ³n de asignaciΓ³n de BTC'; + $lang['strftsparsers'] = 'Analizadores de BTC'; + $lang['strftsnoparsers'] = 'No hay analizadores de BTC disponibles.'; + $lang['strftsnodicts'] = 'No hay diccionarios de BTC disponibles.'; + $lang['strftsdictcreated'] = 'Diccionario de BTC creado.'; + $lang['strftsdictcreatedbad'] = 'FallΓ³ la creaciΓ³n del diccionario BTC.'; + $lang['strftslexize'] = 'Analizar lΓ©xicamente'; + $lang['strftsinit'] = 'Iniciar'; + $lang['strftsoptionsvalues'] = 'Opciones y valores'; + $lang['strftsdictneedsname'] = 'Debes suministrar un nombre para el diccionario de BTC.'; + $lang['strftsdictdropped'] = 'Diccionario de BTC eliminado.'; + $lang['strftsdictdroppedbad'] = 'FallΓ³ la eliminaciΓ³n del diccionario de BTC.'; + $lang['strftsdictaltered'] = 'Diccionario de BTC modificado.'; + $lang['strftsdictalteredbad'] = 'FallΓ³ la modificaciΓ³n del diccionario de BTC.'; + $lang['strftsaddmapping'] = 'Agregar nueva asignaciΓ³n'; + $lang['strftsspecifymappingtodrop'] = 'Debes especificar al menos una asignaciΓ³n a eliminar.'; + $lang['strftsspecifyconfigtoalter'] = 'Debes especificar una configuraciΓ³n de BTC a modificar'; + $lang['strftsmappingdropped'] = 'AsignaciΓ³n de BTC eliminada.'; + $lang['strftsmappingdroppedbad'] = 'FallΓ³ la eliminaciΓ³n de la asignaciΓ³n de BTC.'; + $lang['strftsnodictionaries'] = 'No se encontrarΓ³n diccionarios.'; + $lang['strftsmappingaltered'] = 'AsignaciΓ³n de BTC modificada.'; + $lang['strftsmappingalteredbad'] = 'FallΓ³ la modificaciΓ³n de la asignaciΓ³n de BTC.'; + $lang['strftsmappingadded'] = 'AsignaciΓ³n de BTC agregada.'; + $lang['strftsmappingaddedbad'] = 'FallΓ³ la asignaciΓ³n de BTC.'; + $lang['strftstabconfigs'] = 'Configuraciones'; + $lang['strftstabdicts'] = 'Diccionarios'; + $lang['strftstabparsers'] = 'Analizadores'; + $lang['strftscantparsercopy'] = 'No se puede especificar tanto el analizador como la plantilla durante la creaciΓ³n de la configuraciΓ³n de la bΓΊsqueda de texto.'; + + //Plugins + $lang['strpluginnotfound'] = 'Error: el plugin \'%s\' no se encontrΓ³. Chequea si existe en la carpeta plugins/ , o si el plugin contiene un archivo llamado plugin.php. Los nombres de los plugin son sensibles a las mayΓΊsculas'; + $lang['stractionnotfound'] = 'Error: la acciΓ³n \'%s\' no se encontrΓ³ en el \'%s\' del plugin, o no se especificΓ³ como acciΓ³n.'; + $lang['strhooknotfound'] = 'Error: el hook \'%s\' no estΓ‘ disponible.'; +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/swedish.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/swedish.php new file mode 100644 index 00000000..bed040ce --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/swedish.php @@ -0,0 +1,565 @@ + + * Due to lack of SQL knowledge som translations may be wrong, mail me the correct one and ill fix it + * + * $Id: swedish.php,v 1.11 2007/04/24 11:42:07 soranzo Exp $ + */ + + // Language and character set + $lang['applang'] = 'Swedish'; + $lang['applocale'] = 'sv-SE'; + $lang['applangdir'] = 'ltr'; + + // Welcome + $lang['strintro'] = 'VΓ€lkommen till phpPgAdmin.'; + $lang['strppahome'] = 'phpPgAdmins Hemsida'; + $lang['strpgsqlhome'] = 'PostgreSQLs Hemsida'; + $lang['strpgsqlhome_url'] = 'http://www.postgresql.org/'; + $lang['strlocaldocs'] = 'PostgreSQLs Dokumentation (lokalt)'; + $lang['strreportbug'] = 'Rapportera ett fel'; + $lang['strviewfaq'] = 'Visa FrΓ₯gor & Svar'; + $lang['strviewfaq_url'] = 'http://phppgadmin.sourceforge.net/doku.php?id=faq'; + + // Basic strings + $lang['strlogin'] = 'Logga in'; + $lang['strloginfailed'] = 'Inloggningen misslyckades'; + $lang['strlogindisallowed'] = 'Inloggningen ej tillΓ₯ten'; + $lang['strserver'] = 'Server'; + $lang['strlogout'] = 'Logga ut'; + $lang['strowner'] = 'Γ„gare'; + $lang['straction'] = 'Γ…tgΓ€rd'; + $lang['stractions'] = 'Γ…tgΓ€rder'; + $lang['strname'] = 'Namn'; + $lang['strdefinition'] = 'Definition'; + $lang['strproperties'] = 'Egenskaper'; + $lang['strbrowse'] = 'BlΓ€ddra'; + $lang['strdrop'] = 'Ta bort'; + $lang['strdropped'] = 'Borttagen'; + $lang['strnull'] = 'Ingenting'; + $lang['strnotnull'] = 'Inte Ingenting'; + $lang['strfirst'] = '<< FΓΆrsta'; + $lang['strlast'] = 'Sista >>'; + $lang['strprev'] = 'FΓΆregΓ₯ende'; + $lang['strfailed'] = 'Misslyckades'; + $lang['strnext'] = 'NΓ€sta'; + $lang['strcreate'] = 'Skapa'; + $lang['strcreated'] = 'Skapad'; + $lang['strcomment'] = 'Kommentar'; + $lang['strlength'] = 'LΓ€ngd'; + $lang['strdefault'] = 'StandardvΓ€rde'; + $lang['stralter'] = 'Γ„ndra'; + $lang['strok'] = 'OK'; + $lang['strcancel'] = 'Γ…ngra'; + $lang['strsave'] = 'Spara'; + $lang['strreset'] = 'NollstΓ€ll'; + $lang['strinsert'] = 'Infoga'; + $lang['strselect'] = 'VΓ€lj'; + $lang['strdelete'] = 'Radera'; + $lang['strupdate'] = 'Uppdatera'; + $lang['strreferences'] = 'Referencer'; + $lang['stryes'] = 'Ja'; + $lang['strno'] = 'Nej'; + $lang['strtrue'] = 'Sant'; + $lang['strfalse'] = 'Falskt'; + $lang['stredit'] = 'Redigera'; + $lang['strcolumns'] = 'Kolumner'; + $lang['strrows'] = 'Rad(er)'; + $lang['strrowsaff'] = 'Rad(er) PΓ₯verkade.'; + $lang['strobjects'] = 'Objekt'; + $lang['strexample'] = 't. ex.'; + $lang['strback'] = 'BakΓ₯t'; + $lang['strqueryresults'] = 'SΓΆkresultat'; + $lang['strshow'] = 'Visa'; + $lang['strempty'] = 'Tom'; + $lang['strlanguage'] = 'SprΓ₯k'; + $lang['strencoding'] = 'Kodning'; + $lang['strvalue'] = 'VΓ€rde'; + $lang['strunique'] = 'Unik'; + $lang['strprimary'] = 'PrimΓ€r'; + $lang['strexport'] = 'Exportera'; + $lang['strimport'] = 'Importera'; + $lang['strsql'] = 'SQL'; + $lang['strgo'] = 'KΓΆr'; + $lang['stradmin'] = 'Admin'; + $lang['strvacuum'] = 'StΓ€da upp'; + $lang['stranalyze'] = 'Analysera'; + $lang['strclusterindex'] = 'Kluster'; + $lang['strclustered'] = 'Klustrat?'; + $lang['strreindex'] = 'Γ…terindexera'; + $lang['strrun'] = 'KΓΆr'; + $lang['stradd'] = 'LΓ€gg till'; + $lang['strinstead'] = 'GΓΆr IstΓ€llet'; + $lang['strevent'] = 'HΓ€ndelse'; + $lang['strformat'] = 'Format'; + $lang['strwhen'] = 'NΓ€r'; + $lang['strdata'] = 'Data'; + $lang['strconfirm'] = 'BekrΓ€fta'; + $lang['strexpression'] = 'Uttryck'; + $lang['strellipsis'] = '...'; + $lang['strwhere'] = 'NΓ€r'; + $lang['strexplain'] = 'FΓΆrklara'; + $lang['strfind'] = 'SΓΆk'; + $lang['stroptions'] = 'Alternativ'; + $lang['strrefresh'] = 'Uppdatera'; + $lang['strcollapse'] = 'FΓΆrminska'; + $lang['strexpand'] = 'UtΓΆka'; + $lang['strdownload'] = 'Ladda ner'; + $lang['strdownloadgzipped'] = 'Ladda ner komprimerat med gzip'; + $lang['strinfo'] = 'Info'; + $lang['stroids'] = 'OIDs'; + $lang['stradvanced'] = 'Avancerat'; + $lang['strvariables'] = 'Variabler'; + $lang['strprocess'] = 'Process'; + $lang['strprocesses'] = 'Processer'; + $lang['strsetting'] = 'InstΓ€llning'; + $lang['strparameters'] = 'Parametrar'; + + // Error handling + $lang['strnotloaded'] = 'Du har inte kompilerat in korrekt databasstΓΆd i din PHP-installation.'; + $lang['strbadconfig'] = 'Din config.inc.php Γ€r ej uppdaterad. Du mΓ₯ste Γ₯terskapa den frΓ₯n den nya config.inc.php-dist.'; + $lang['strbadencoding'] = 'Misslyckades att sΓ€tta klientkodning i databasen.'; + $lang['strbadschema'] = 'OtillΓ₯tet schema angett.'; + $lang['strinstatement'] = 'I pΓ₯stΓ₯ende:'; + $lang['strsqlerror'] = 'SQL fel:'; + $lang['strinvalidparam'] = 'OtillΓ₯tna scriptparametrar.'; + $lang['strnodata'] = 'Hittade inga rader.'; + $lang['strnoobjects'] = 'Hittade inga objekt.'; + $lang['strrownotunique'] = 'Ingen unik nyckel fΓΆr denna rad.'; + + // Tables + $lang['strtable'] = 'Tabell'; + $lang['strtables'] = 'Tabeller'; + $lang['strshowalltables'] = 'Visa alla tabeller'; + $lang['strnotables'] = 'Hittade inga tabeller.'; + $lang['strnotable'] = 'Hittade ingen tabell.'; + $lang['strcreatetable'] = 'Skapa tabell'; + $lang['strtablename'] = 'Tabellnamn'; + $lang['strtableneedsname'] = 'Du mΓ₯ste ge ett namn till din tabell.'; + $lang['strtableneedsfield'] = 'Du mΓ₯ste ange minst ett fΓ€lt.'; + $lang['strtableneedscols'] = 'tabeller krΓ€ver ett tillΓ₯tet antal kolumner.'; + $lang['strtablecreated'] = 'Tabell skapad.'; + $lang['strtablecreatedbad'] = 'Misslyckades med att skapa Tabell.'; + $lang['strconfdroptable'] = 'Γ„r du sΓ€ker pΓ₯ att du vill ta bort tabellen "%s"?'; + $lang['strtabledropped'] = 'Tabellen borttagen.'; + $lang['strinsertrow'] = 'Infoga rad'; + $lang['strtabledroppedbad'] = 'Misslyckades med att ta bort tabellen.'; + $lang['strrowinserted'] = 'Rad infogad.'; + $lang['strconfemptytable'] = 'Γ„r du sΓ€ker pΓ₯ att du vill tΓΆmma tabellen "%s"?'; + $lang['strrowupdated'] = 'Rad uppdaterad.'; + $lang['strrowinsertedbad'] = 'Misslyckades att infoga rad.'; + $lang['strtableemptied'] = 'Tabellen tΓΆmd.'; + $lang['strrowupdatedbad'] = 'Misslyckades att uppdatera rad.'; + $lang['streditrow'] = 'Γ„ndra rad'; + $lang['strrowdeleted'] = 'Rad raderad.'; + $lang['strrowdeletedbad'] = 'Misslyckades att radera rad.'; + $lang['strfield'] = 'FΓ€lt'; + $lang['strconfdeleterow'] = 'Γ„r du sΓ€ker pΓ₯ att du vill ta bort denna rad?'; + $lang['strnumfields'] = 'Antal fΓ€lt'; + $lang['strsaveandrepeat'] = 'Infoga & Upprepa'; + $lang['strtableemptiedbad'] = 'Misslyckades med att tΓΆmma tabellen'; + $lang['strdeleterow'] = 'Radera rad'; + $lang['strfields'] = 'FΓ€lt'; + $lang['strfieldneedsname'] = 'Du mΓ₯ste namnge fΓ€ltet'; + $lang['strcolumndropped'] = 'Kolumn raderad.'; + $lang['strselectallfields'] = 'VΓ€lj alla fΓ€lt'; + $lang['strselectneedscol'] = 'Du mΓ₯ste visa minst en kolumn'; + $lang['strselectunary'] = 'UnΓ€ra operander kan ej ha vΓ€rden.'; + $lang['strcolumnaltered'] = 'Kolumn Γ€ndrad.'; + $lang['straltercolumn'] = 'Γ„ndra kolumn'; + $lang['strcolumnalteredbad'] = 'Misslyckades att Γ€ndra kolumn.'; + $lang['strconfdropcolumn'] = 'Γ„r du sΓ€ker pΓ₯ att du vill radera kolumn "%s" frΓ₯n tabell "%s"?'; + $lang['strcolumndroppedbad'] = 'Misslyckades att radera kolumn.'; + $lang['straddcolumn'] = 'LΓ€gg till kolumn'; + $lang['strcolumnadded'] = 'Kolumn inlagd.'; + $lang['strcolumnaddedbad'] = 'Misslyckades att lΓ€gga till kolumne.'; + $lang['strcascade'] = 'KASKAD'; + $lang['strdataonly'] = 'Endast Data'; + $lang['strtablealtered'] = 'Tabell Γ€ndrad.'; + $lang['strtablealteredbad'] = 'Misslyckades att Γ€ndra tabell.'; + + // Users + $lang['struser'] = 'AnvΓ€ndare'; + $lang['strusers'] = 'AnvΓ€ndare'; + $lang['strusername'] = 'AnvΓ€ndarnamn'; + $lang['strpassword'] = 'LΓΆsenord'; + $lang['strsuper'] = 'SuperanvΓ€ndare?'; + $lang['strcreatedb'] = 'Skapa Databas?'; + $lang['strexpires'] = 'UtgΓ₯ngsdatum'; + $lang['strsessiondefaults'] = 'SessionsinstΓ€llningar'; + $lang['strnewname'] = 'Nytt namn'; + $lang['strnousers'] = 'Hittade inga anvΓ€ndare.'; + $lang['strrename'] = 'DΓΆp om'; + $lang['struserrenamed'] = 'AnvΓ€ndarnamn Γ€ndrat.'; + $lang['struserrenamedbad'] = 'Misslyckades att dΓΆpa om anvΓ€ndare.'; + $lang['struserupdated'] = 'AnvΓ€ndare uppdaterad.'; + $lang['struserupdatedbad'] = 'Misslyckades att uppdatera anvΓ€ndare.'; + $lang['strshowallusers'] = 'Visa alla anvΓ€ndare'; + $lang['strcreateuser'] = 'Skapa anvΓ€ndare'; + $lang['struserneedsname'] = 'Du mΓ₯ste namnge anvΓ€ndaren.'; + $lang['strconfdropuser'] = 'Γ„r du sΓ€ker pΓ₯ att du vill radera anvΓ€ndaren "%s"?'; + $lang['strusercreated'] = 'AnvΓ€ndare skapad.'; + $lang['strusercreatedbad'] = 'Misslyckades att skapa anvΓ€ndare.'; + $lang['struserdropped'] = 'AnvΓ€ndare raderad.'; + $lang['struserdroppedbad'] = 'Misslyckades att radera anvΓ€ndare.'; + $lang['straccount'] = 'Konton'; + $lang['strchangepassword'] = 'Γ„ndra lΓΆsenord'; + $lang['strpasswordchanged'] = 'LΓΆsenord Γ€ndrat.'; + $lang['strpasswordchangedbad'] = 'Misslyckades att Γ€ndra lΓΆsenord.'; + $lang['strpasswordshort'] = 'FΓΆr fΓ₯ tecken i lΓΆsenordet.'; + $lang['strpasswordconfirm'] = 'LΓΆsenordet Γ€r inte samma som bekrΓ€ftelsen.'; + $lang['strgroup'] = 'Grupp'; + $lang['strgroups'] = 'Grupper'; + $lang['strnogroup'] = 'Hittade ej grupp.'; + $lang['strnogroups'] = 'Hittade inga grupper.'; + $lang['strcreategroup'] = 'Skapa grupp'; + $lang['strshowallgroups'] = 'Visa alla grupper'; + $lang['strgroupneedsname'] = 'Du mΓ₯ste namnge din grupp.'; + $lang['strgroupcreated'] = 'Grupp skapad.'; + $lang['strgroupdropped'] = 'Grupp raderad.'; + $lang['strgroupcreatedbad'] = 'Misslyckades att skapa grupp.'; + $lang['strconfdropgroup'] = 'Γ„r du sΓ€ker pΓ₯ att du vill radera grupp "%s"?'; + $lang['strprivileges'] = 'RΓ€ttigheter'; + $lang['strgrant'] = 'TillΓ₯t'; + $lang['strgranted'] = 'RΓ€ttigheter Γ€ndrade.'; + $lang['strgroupdroppedbad'] = 'Misslyckades att radera grupp.'; + $lang['straddmember'] = 'LΓ€gg till medlem'; + $lang['strmemberadded'] = 'Medlem inlagd.'; + $lang['strmemberaddedbad'] = 'Misslyckades att lΓ€gga till medlem.'; + $lang['strdropmember'] = 'Radera medlem'; + $lang['strconfdropmember'] = 'Γ„r du sΓ€ker pΓ₯ att du vill radera medlem "%s" frΓ₯n gruppen "%s"?'; + $lang['strmemberdropped'] = 'Medlem raderad.'; + $lang['strmemberdroppedbad'] = 'Misslyckades att radera medlem.'; + $lang['strprivilege'] = 'RΓ€ttighet'; + $lang['strnoprivileges'] = 'Detta objekt har standard Γ€garrΓ€ttigheter.'; + $lang['strmembers'] = 'Medelemmar'; + $lang['strrevoke'] = 'Ta tillbaka'; + $lang['strgrantbad'] = 'Du mΓ₯ste ange minst en anvΓ€ndare eller grupp och minst en rΓ€ttighet.'; + $lang['strgrantfailed'] = 'Misslyckades att Γ€ndra rΓ€ttigheter.'; + $lang['stralterprivs'] = 'Γ„ndra rΓ€ttigheter'; + $lang['strdatabase'] = 'Databas'; + $lang['strdatabasedropped'] = 'Databas raderad.'; + $lang['strdatabases'] = 'Databaser'; + $lang['strentersql'] = 'Ange SQL att kΓΆra:'; + $lang['strgrantor'] = 'TillstΓ₯ndsgivare'; + $lang['strasterisk'] = '*'; + $lang['strshowalldatabases'] = 'Visa alla databaser'; + $lang['strnodatabase'] = 'Hittade ingen databas.'; + $lang['strnodatabases'] = 'Hittade inga databaser.'; + $lang['strcreatedatabase'] = 'Skapa databas'; + $lang['strdatabasename'] = 'Databasnamn'; + $lang['strdatabaseneedsname'] = 'Du mΓ₯ste namnge databasen.'; + $lang['strdatabasecreated'] = 'Databas skapad.'; + $lang['strdatabasecreatedbad'] = 'Misslyckades att skapa databas.'; + $lang['strconfdropdatabase'] = 'Γ„r du sΓ€ker pΓ₯ att du vill radera databas "%s"?'; + $lang['strdatabasedroppedbad'] = 'Misslyckades att radera databas.'; + $lang['strsqlexecuted'] = 'SQL-kommando utfΓΆrt.'; + $lang['strvacuumgood'] = 'UppstΓ€dning utfΓΆrd.'; + $lang['strvacuumbad'] = 'UppstΓ€dning misslyckades.'; + $lang['stranalyzegood'] = 'Analysen lyckades.'; + $lang['stranalyzebad'] = 'Analysen misslyckades.'; + $lang['strstructureonly'] = 'Endast struktur'; + $lang['strstructureanddata'] = 'Struktur och data'; + + // Views + $lang['strview'] = 'Vy'; + $lang['strviews'] = 'Vyer'; + $lang['strshowallviews'] = 'Visa alla vyer'; + $lang['strnoview'] = 'Hittade ingen vy.'; + $lang['strnoviews'] = 'Hittade inga vyer.'; + $lang['strcreateview'] = 'Skapa vy'; + $lang['strviewname'] = 'Vynamn'; + $lang['strviewneedsname'] = 'Du mΓ₯ste namnge Vy.'; + $lang['strviewneedsdef'] = 'Du mΓ₯ste ange en definition fΓΆr din vy.'; + $lang['strviewcreated'] = 'Vy skapad.'; + $lang['strviewcreatedbad'] = 'Misslyckades att skapa vy.'; + $lang['strconfdropview'] = 'Γ„r du sΓ€ker pΓ₯ att du vill radera vyn "%s"?'; + $lang['strviewdropped'] = 'Vy raderad.'; + $lang['strviewdroppedbad'] = 'Misslyckades att radera vy.'; + $lang['strviewupdated'] = 'Vy uppdaterad.'; + $lang['strviewupdatedbad'] = 'Misslyckades att uppdatera vy.'; + $lang['strviewlink'] = 'LΓ€nkade nycklar'; + $lang['strviewconditions'] = 'Ytterligare villkor'; + + // Sequences + $lang['strsequence'] = 'Sekvens'; + $lang['strsequences'] = 'Sekvenser'; + $lang['strshowallsequences'] = 'Visa alla sekvenser'; + $lang['strnosequence'] = 'Hittade ingen sekvens.'; + $lang['strnosequences'] = 'Hittade inga sekvenser.'; + $lang['strcreatesequence'] = 'Skapa sekvens'; + $lang['strlastvalue'] = 'Senaste vΓ€rde'; + $lang['strincrementby'] = 'Γ–ka med'; + $lang['strstartvalue'] = 'StartvΓ€rde'; + $lang['strmaxvalue'] = 'StΓΆrsta vΓ€rde'; + $lang['strminvalue'] = 'Minsta vΓ€rde'; + $lang['strcachevalue'] = 'VΓ€rde pΓ₯ cache'; + $lang['strlogcount'] = 'RΓ€kna log'; + $lang['striscycled'] = 'Γ„r upprepad?'; + $lang['strsequenceneedsname'] = 'Du mΓ₯ste ge ett namn till din sekvens.'; + $lang['strsequencecreated'] = 'Sekvens skapad.'; + $lang['strsequencecreatedbad'] = 'Misslyckades att skapa sekvens.'; + $lang['strconfdropsequence'] = 'Γ„r du sΓ€ker pΓ₯ att du vill radera sekvensen "%s"?'; + $lang['strsequencedropped'] = 'Sekvensen borrtagen.'; + $lang['strsequencedroppedbad'] = 'Misslyckades att radera sekvens.'; + + // Indexes + $lang['strindex'] = 'Index'; + $lang['strindexes'] = 'Index'; + $lang['strindexname'] = 'Indexnamn'; + $lang['strshowallindexes'] = 'Visa alla index'; + $lang['strnoindex'] = 'Hittade inget index.'; + $lang['strsequencereset'] = 'NollstΓ€ll sekvens.'; + $lang['strsequenceresetbad'] = 'Misslyckades att nollstΓ€lla sekvens.'; + $lang['strnoindexes'] = 'Hittade inga index.'; + $lang['strcreateindex'] = 'Skapa index'; + $lang['strindexname'] = 'Indexnamn'; + $lang['strtabname'] = 'Tabellnamn'; + $lang['strcolumnname'] = 'Kolumnnamn'; + $lang['strindexneedsname'] = 'Du mΓ₯ste ge ett namn fΓΆr ditt index'; + $lang['strindexneedscols'] = 'Det krΓ€vs ett giltigt antal kolumner fΓΆr index.'; + $lang['strindexcreated'] = 'Index skapat'; + $lang['strindexcreatedbad'] = 'Misslyckades att skapa index.'; + $lang['strconfdropindex'] = 'Γ„r du sΓ€ker pΓ₯ att du vill radera index "%s"?'; + $lang['strindexdropped'] = 'Index raderat.'; + $lang['strindexdroppedbad'] = 'Misslyckades att radera index.'; + $lang['strkeyname'] = 'NyckelvΓ€rdesnamn'; + $lang['struniquekey'] = 'Unikt nyckelvΓ€rde'; + $lang['strprimarykey'] = 'PrimΓ€rnyckel'; + $lang['strindextype'] = 'Typ av index'; + $lang['strindexname'] = 'Indexnamn'; + $lang['strtablecolumnlist'] = 'Tabellkolumner'; + $lang['strindexcolumnlist'] = 'Indexkolumner'; + $lang['strconfcluster'] = 'Γ„r du sΓ€ker pΓ₯ att du vill klustra "%s"?'; + $lang['strclusteredgood'] = 'Klustring avslutad.'; + $lang['strclusteredbad'] = 'Klustring misslyckades.'; + + // Rules + $lang['strrules'] = 'Regler'; + $lang['strrule'] = 'Regel'; + $lang['strshowallrules'] = 'Visa alla regler'; + $lang['strnorule'] = 'Hittade ingen regel.'; + $lang['strnorules'] = 'Hittade inga regler.'; + $lang['strcreaterule'] = 'Skapa regel'; + $lang['strrulename'] = 'Regelnamn'; + $lang['strruleneedsname'] = 'Du mΓ₯ste ge ett namn till din regel.'; + $lang['strrulecreated'] = 'Regel skapad.'; + $lang['strrulecreatedbad'] = 'Misslyckades att skapa regel.'; + $lang['strconfdroprule'] = 'Γ„r du sΓ€ker pΓ₯ att du vill radera regel "%s" fΓΆr "%s"?'; + $lang['strruledropped'] = 'Regel raderat.'; + $lang['strruledroppedbad'] = 'Misslyckades att radera regel.'; + + // Constraints + $lang['strconstraints'] = 'BegrΓ€nsningar'; + $lang['strshowallconstraints'] = 'Visa alla begrΓ€nsningar'; + $lang['strnoconstraints'] = 'Hittade inga begrΓ€nsningar.'; + $lang['strcreateconstraint'] = 'Skapa begrΓ€nsning'; + $lang['strconstraintcreated'] = 'BegrΓ€nsning skapad.'; + $lang['strconstraintcreatedbad'] = 'Misslyckades att skapa begrΓ€nsning.'; + $lang['strconfdropconstraint'] = 'Γ„r du sΓ€ker pΓ₯ att du vill radera begrΓ€nsning "%s" fΓΆr "%s"?'; + $lang['strconstraintdropped'] = 'BegrΓ€nsning raderad.'; + $lang['strconstraintdroppedbad'] = 'Misslyckades att radera begrΓ€nsning.'; + $lang['straddcheck'] = 'LΓ€gg till en koll'; + $lang['strcheckneedsdefinition'] = 'En kollbegrΓ€nsning behΓΆver definieras.'; + $lang['strcheckadded'] = 'KollbegrΓ€nsning inlagd.'; + $lang['strcheckaddedbad'] = 'Misslyckades att lΓ€gga till en koll.'; + $lang['straddpk'] = 'LΓ€gg till primΓ€rnyckel'; + $lang['strpkneedscols'] = 'PrimΓ€rnyckel behΓΆver minst en kolumn.'; + $lang['strpkadded'] = 'PrimΓ€rnyckel inlagd.'; + $lang['strpkaddedbad'] = 'Misslyckades att lΓ€gga till primΓ€rnyckel.'; + $lang['stradduniq'] = 'LΓ€gg till Unikt nyckelvΓ€rde'; + $lang['struniqneedscols'] = 'Unikt nyckelvΓ€rde behΓΆver minst en kolumn.'; + $lang['struniqadded'] = 'Unikt nyckelvΓ€rde inlagt.'; + $lang['struniqaddedbad'] = 'Misslyckades att lΓ€gga till unikt nyckelvΓ€rde.'; + $lang['straddfk'] = 'LΓ€gg till utomstΓ₯ende nyckel'; + $lang['strfkneedscols'] = 'UtomstΓ₯ende nyckel behΓΆver minst en kolumn.'; + $lang['strfkneedstarget'] = 'UtomstΓ₯ende nycket behΓΆver en mΓ₯ltabell.'; + $lang['strfkadded'] = 'UtomstΓ₯ende nyckel inlagd.'; + $lang['strfkaddedbad'] = 'Misslyckades att lΓ€gga till utomstΓ₯ende nyckel.'; + $lang['strfktarget'] = 'MΓ₯ltabell'; + $lang['strfkcolumnlist'] = 'Kolumner i nyckel'; + $lang['strondelete'] = 'VID RADERING'; + $lang['stronupdate'] = 'VID UPPDATERING'; + + // Functions + $lang['strfunction'] = 'Funktion'; + $lang['strfunctions'] = 'Funktioner'; + $lang['strshowallfunctions'] = 'Visa alla funktioner'; + $lang['strnofunction'] = 'Hittade ingen funktion.'; + $lang['strnofunctions'] = 'Hittade inga funktioner.'; + $lang['strcreatefunction'] = 'Skapa funktion'; + $lang['strfunctionname'] = 'Funktionsnamn'; + $lang['strreturns'] = 'Γ…terger'; + $lang['strarguments'] = 'Argument'; + $lang['strfunctionneedsname'] = 'Du mΓ₯ste namnge din funktion.'; + $lang['strfunctionneedsdef'] = 'Du mΓ₯ste definiera din funktion.'; + $lang['strfunctioncreated'] = 'Funktion skapad.'; + $lang['strfunctioncreatedbad'] = 'Misslyckades att skapa funktion.'; + $lang['strconfdropfunction'] = 'Γ„r du sΓ€ker pΓ₯ att du vill radera funktionen "%s"?'; + $lang['strproglanguage'] = 'ProgrammeringssprΓ₯k'; + $lang['strfunctiondropped'] = 'Funktionen raderad.'; + $lang['strfunctiondroppedbad'] = 'Misslyckades att radera funktion.'; + $lang['strfunctionupdated'] = 'Funktion uppdaterad.'; + $lang['strfunctionupdatedbad'] = 'Misslyckades att uppdatera funktion.'; + + // Triggers + $lang['strtrigger'] = 'Mekanism'; + $lang['strtriggers'] = 'Mekanismer'; + $lang['strshowalltriggers'] = 'Visa alla Mekanismer'; + $lang['strnotrigger'] = 'Hittade ingen mekanism.'; + $lang['strnotriggers'] = 'Hittade inga mekanismer.'; + $lang['strcreatetrigger'] = 'Skapa mekanism'; + $lang['strtriggerneedsname'] = 'Du mΓ₯ste namnge din mekanism.'; + $lang['strtriggerneedsfunc'] = 'Du mΓ₯ste specificera en funktion fΓΆr din mekanism.'; + $lang['strtriggercreated'] = 'Mekanism skapad.'; + $lang['strtriggerdropped'] = 'Mekanism raderad.'; + $lang['strtriggercreatedbad'] = 'Misslyckades att skapa mekanism.'; + $lang['strconfdroptrigger'] = 'Γ„r du sΓ€ker pΓ₯ att du vill radera mekanismen "%s" pΓ₯ "%s"?'; + $lang['strtriggerdroppedbad'] = 'Misslyckades att radera mekanism.'; + + // Types + $lang['strtype'] = 'Typ'; + $lang['strstorage'] = 'Lagring'; + $lang['strtriggeraltered'] = 'Mekanism Γ€ndrad.'; + $lang['strtriggeralteredbad'] = 'Misslyckades att Γ€ndra mekanism.'; + $lang['strtypes'] = 'Typer'; + $lang['strtypeneedslen'] = 'Du mΓ₯ste ange typens lΓ€ngd.'; + $lang['strshowalltypes'] = 'Visa alla typer'; + $lang['strnotype'] = 'Hittade ingen typ.'; + $lang['strnotypes'] = 'Hittade inga typer.'; + $lang['strcreatetype'] = 'Skapa typ'; + $lang['strtypename'] = 'Namn pΓ₯ typen'; + $lang['strinputfn'] = 'Infogande funktion'; + $lang['stroutputfn'] = 'Funktion fΓΆr utvΓ€rden'; + $lang['strpassbyval'] = 'GenomgΓ₯tt utvΓ€rdering?'; + $lang['stralignment'] = 'Justering'; + $lang['strelement'] = 'Element'; + $lang['strdelimiter'] = 'AvgrΓ€nsare'; + $lang['strtypeneedsname'] = 'Du mΓ₯ste namnge din typ.'; + $lang['strtypecreated'] = 'Typ skapad'; + $lang['strtypecreatedbad'] = 'Misslyckades att skapa typ.'; + $lang['strconfdroptype'] = 'Γ„r du sΓ€ker pΓ₯ att du vill radera typen "%s"?'; + $lang['strtypedropped'] = 'Typ raderad.'; + $lang['strtypedroppedbad'] = 'Misslyckades att radera typ.'; + + // Schemas + $lang['strschema'] = 'Schema'; + $lang['strschemas'] = 'Scheman'; + $lang['strshowallschemas'] = 'Visa alla scheman'; + $lang['strnoschema'] = 'Hittade inget schema.'; + $lang['strnoschemas'] = 'Hittade inga scheman.'; + $lang['strcreateschema'] = 'Skapa Schema'; + $lang['strschemaname'] = 'Schemanamn'; + $lang['strschemaneedsname'] = 'Du mΓ₯ste namnge ditt Schema.'; + $lang['strschemacreated'] = 'Schema skapat'; + $lang['strschemacreatedbad'] = 'Misslyckades att skapa schema.'; + $lang['strconfdropschema'] = 'Γ„r du sΓ€ker pΓ₯ att du vill radera schemat "%s"?'; + $lang['strschemadropped'] = 'Schema raderat.'; + $lang['strschemadroppedbad'] = 'Misslyckades att radera schema.'; + + // Reports + $lang['strtopbar'] = '%s kΓΆrs pΓ₯ %s:%s -- Du Γ€r inloggad som anvΓ€ndare "%s"'; + $lang['strtimefmt'] = 'jS M, Y g:iA'; + + // Domains + $lang['strdomain'] = 'DomΓ€n'; + $lang['strdomains'] = 'DomΓ€ner'; + $lang['strshowalldomains'] = 'Visa alla domΓ€ner'; + $lang['strnodomains'] = 'Hittade inga domΓ€ner.'; + $lang['strcreatedomain'] = 'Skapa domΓ€n'; + $lang['strdomaindropped'] = 'DomΓ€n raderad.'; + $lang['strdomaindroppedbad'] = 'Misslyckades att radera domΓ€n.'; + $lang['strconfdropdomain'] = 'Γ„r du sΓ€ker pΓ₯ att du vill radera domΓ€nen "%s"?'; + $lang['strdomainneedsname'] = 'Du mΓ₯ste ange ett domΓ€nnamn.'; + $lang['strdomaincreated'] = 'DomΓ€n skapad.'; + $lang['strdomaincreatedbad'] = 'Misslyckades att skapa domΓ€n.'; + $lang['strdomainaltered'] = 'DomΓ€n Γ€ndrad.'; + $lang['strdomainalteredbad'] = 'Misslyckades att Γ€ndra domΓ€n.'; + + // Operators + $lang['stroperator'] = 'Operand'; + $lang['stroperators'] = 'Operander'; + $lang['strshowalloperators'] = 'Visa alla operander'; + $lang['strnooperator'] = 'Hittade ingen operand.'; + $lang['strnooperators'] = 'Hittade inga operander.'; + $lang['strcreateoperator'] = 'Skapa operand'; + $lang['strleftarg'] = 'Arg Typ VΓ€nster'; + $lang['strrightarg'] = 'Arg Typ HΓΆger'; + $lang['strcommutator'] = 'VΓ€xlare'; + $lang['strnegator'] = 'Negerande'; + $lang['strrestrict'] = 'SpΓ€rra'; + $lang['strjoin'] = 'SlΓ₯ ihop'; + $lang['strhashes'] = 'Hashtabeller'; + $lang['strmerges'] = 'Sammanslagningar'; + $lang['strleftsort'] = 'Sortera vΓ€nster'; + $lang['strrightsort'] = 'Sortera hΓΆger'; + $lang['strlessthan'] = 'Mindre Γ€n'; + $lang['strgreaterthan'] = 'StΓΆrre Γ€n'; + $lang['stroperatorneedsname'] = 'Du mΓ₯ste namnge operanden.'; + $lang['stroperatorcreated'] = 'Operand skapad'; + $lang['stroperatorcreatedbad'] = 'Misslyckades att skapa operand.'; + $lang['strconfdropoperator'] = 'Γ„r du sΓ€ker pΓ₯ att du vill radera operanden "%s"?'; + $lang['stroperatordropped'] = 'Operand raderad.'; + $lang['stroperatordroppedbad'] = 'Misslyckades att radera operand.'; + + // Casts + $lang['strcasts'] = 'Typomvandlingar'; + $lang['strnocasts'] = 'Hittade inga typomvandlingar.'; + $lang['strsourcetype'] = 'KΓ€lltyp'; + $lang['strtargettype'] = 'MΓ₯ltyp'; + $lang['strimplicit'] = 'Implicit'; + $lang['strinassignment'] = 'Tilldelat i'; + $lang['strbinarycompat'] = '(BinΓ€rt kompatibel)'; + + // Conversions + $lang['strconversions'] = 'Omkodningar'; + $lang['strnoconversions'] = 'Hittade inga omkodningar.'; + $lang['strsourceencoding'] = 'KΓ€llkodning'; + $lang['strtargetencoding'] = 'MΓ₯lkodning'; + + // Languages + $lang['strlanguages'] = 'SprΓ₯k'; + $lang['strnolanguages'] = 'Hittade inga sprΓ₯k.'; + $lang['strtrusted'] = 'PΓ₯litlig(a)'; + + // Info + $lang['strnoinfo'] = 'Ingen information tillgΓ€nglig.'; + $lang['strreferringtables'] = 'Refererande tabeller'; + $lang['strparenttables'] = 'OvanstΓ₯ende tabeller'; + $lang['strchildtables'] = 'Underliggande tabeller'; + + // Aggregates + $lang['straggregates'] = 'Sammanslagningar'; + $lang['strnoaggregates'] = 'Hittade inga sammanslagningar.'; + $lang['stralltypes'] = '(Alla typer)'; + + // Operator Classes + $lang['stropclasses'] = 'Op Klasser'; + $lang['strnoopclasses'] = 'Hittade inga operandklasser.'; + $lang['straccessmethod'] = 'Kopplingsmetod'; + + // Stats and performance + $lang['strrowperf'] = 'Radprestanda'; + $lang['strioperf'] = 'I/O Prestanda'; + $lang['stridxrowperf'] = 'Index Radprestanda'; + $lang['stridxioperf'] = 'Index I/O Prestanda'; + $lang['strpercent'] = '%'; + $lang['strsequential'] = 'Sekventiell'; + $lang['strscan'] = 'Scanna'; + $lang['strread'] = 'LΓ€s'; + $lang['strfetch'] = 'HΓ€mta'; + $lang['strheap'] = 'Bunt'; + $lang['strtoast'] = 'BrΓ€nn'; + $lang['strtoastindex'] = 'BrΓ€nn Index'; + $lang['strcache'] = 'Cache'; + $lang['strdisk'] = 'Disk'; + $lang['strrows2'] = 'Rader'; + + // Miscellaneous + $lang['strtopbar'] = '%s KΓΆrs pΓ₯ %s:%s -- Du Γ€r inloggad som anvΓ€ndare "%s", %s'; + $lang['strtimefmt'] = 'jS M, Y g:iA'; + $lang['strhelp'] = 'HjΓ€lp'; + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/synch b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/synch new file mode 100755 index 00000000..7e07d226 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/synch @@ -0,0 +1,71 @@ +#!/bin/bash +# This script will synchronize language file with the master +# english translation using diff(1) utility. +# It doesn't translate strings, only inserts english versions +# to proper positions and deletes removed. And it doesn't +# synchronize commented lines. +# You need to have GNU ed and diff installed in $PATH. +# +# Usage: synch +# +# is the filename without the .php extension +# +# BTW, diff should create better ed scripts than previous +# version of synch (that one with awk code). If it will not, +# be frightened about patching Linux kernel sources ;-) + +if [ -z $1 ] ; then + echo "You must tell me which language I should synchronize." + echo -e "for example: \n\t$0 polish" + exit +fi + +if [ ! -f $1.php ] ; then + echo "Sorry, I cannot find $1.php" + exit +fi + +echo "Making backup of $1.php" +cp $1.php $1.php.old + +# Find variables names ( "$lang['strfoo']" part ) +cat english.php | awk -F"=" '{print $1}' > english.tmp +cat $1.php | awk -F"=" '{print $1}' > $1.tmp + +# diff variable names and create ed script +diff --ignore-case --ignore-all-space --ignore-blank-lines \ + --ignore-matching-lines="*" \ + --ignore-matching-lines="[^:]//" \ + --ed \ + $1.tmp english.tmp > diff.ed + +# No more need for .tmp files +rm *.tmp + +# Add english values and ed destination file +cat diff.ed | awk ' +function grep_n(what, where, n, ln) { +# Returns line with searched text + + while ( (getline line < where ) > 0 ) { + if (index(line, what)>0) { + gsub("^\t","",what); + split(line,a,"="); + print what" = "a[2]; + } +} + close(where); +} + +BEGIN { FS="=" } + +/\$lang/{ grep_n($1, "english.php") ; + next; } + + { print } +END { print "w" }' \ +| ed $1.php + +# Clean temporary files +rm diff.ed + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/translations.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/translations.php new file mode 100644 index 00000000..4c694286 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/translations.php @@ -0,0 +1,86 @@ + 'Afrikaans', + 'arabic' => 'عربي', + 'catalan' => 'Català', + 'chinese-tr' => '繁體中文', + 'chinese-sim' => '简体中文', + 'chinese-utf8-zh_TW' => '正體中文(UTF-8)', + 'chinese-utf8-zh_CN' => '简体中文(UTF-8)', + 'czech' => 'Česky', + 'danish' => 'Danish', + 'dutch' => 'Nederlands', + 'english' => 'English', + 'french' => 'FranΓ§ais', + 'galician' => 'Galego', + 'german' => 'Deutsch', + 'greek' => 'Ελληνικά', + 'hebrew' => 'Hebrew', + 'hungarian' => 'Magyar', + 'italian' => 'Italiano', + 'japanese' => '日本語', + 'lithuanian' => 'Lietuvių', + 'mongol' => 'Mongolian', + 'polish' => 'Polski', + 'portuguese-br' => 'Português-Brasileiro', + 'romanian' => 'Română', + 'russian' => 'Русский', + 'russian-utf8' => 'Русский (UTF-8)', + 'slovak' => 'Slovensky', + 'swedish' => 'Svenska', + 'spanish' => 'Español', + 'turkish' => 'Türkçe', + 'ukrainian' => 'Українська' + ); + + + // ISO639 language code to language file mapping. + // See http://www.w3.org/WAI/ER/IG/ert/iso639.htm for language codes + + // If it's available 'language-country', but not general + // 'language' translation (eg. 'portuguese-br', but not 'portuguese') + // specify both 'la' => 'language-country' and 'la-co' => 'language-country'. + + $availableLanguages = array( + 'af' => 'afrikaans', + 'ar' => 'arabic', + 'ca' => 'catalan', + 'zh' => 'chinese-tr', + 'zh-cn' => 'chinese-sim', + 'utf8-zh-cn' => 'chinese-utf8-cn', + 'utf8-zh-tw' => 'chinese-utf8-tw', + 'cs' => 'czech', + 'da' => 'danish', + 'nl' => 'dutch', + 'en' => 'english', + 'fr' => 'french', + 'gl' => 'galician', + 'de' => 'german', + 'el' => 'greek', + 'he' => 'hebrew', + 'hu' => 'hungarian', + 'it' => 'italian', + 'ja' => 'japanese', + 'lt' => 'lithuanian', + 'mn' => 'mongol', + 'pl' => 'polish', + 'pt' => 'portuguese-br', + 'pt-br' => 'portuguese-br', + 'ro' => 'romanian', + 'ru' => 'russian', + 'sk' => 'slovak', + 'sv' => 'swedish', + 'es' => 'spanish', + 'tr' => 'turkish', + 'uk' => 'ukrainian' + ); +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/turkish.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/turkish.php new file mode 100644 index 00000000..83773890 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/turkish.php @@ -0,0 +1,641 @@ +>'; + $lang['strfailed'] = 'BaşarΔ±sΔ±z oldu.'; + $lang['strcreate'] = 'Yarat'; + $lang['strcreated'] = 'YaratΔ±ldΔ±'; + $lang['strcomment'] = 'Yorum'; + $lang['strlength'] = 'Uzunluk'; + $lang['strdefault'] = 'Γ–n tanΔ±mlΔ± değer'; + $lang['stralter'] = 'Değiştir'; + $lang['strok'] = 'Tamam'; + $lang['strcancel'] = 'Δ°ptal Et'; + $lang['strsave'] = 'Kaydet'; + $lang['strreset'] = 'Temizle'; + $lang['strinsert'] = 'Ekle'; + $lang['strselect'] = 'SeΓ§'; + $lang['strdelete'] = 'Sil'; + $lang['strupdate'] = 'GΓΌncelle'; + $lang['strreferences'] = 'References'; + $lang['stryes'] = 'Evet'; + $lang['strno'] = 'HayΔ±r'; + $lang['strtrue'] = 'TRUE'; + $lang['strfalse'] = 'FALSE'; + $lang['stredit'] = 'DΓΌzenle'; + $lang['strcolumn'] = 'KolonF'; + $lang['strcolumns'] = 'Kolonlar'; + $lang['strrows'] = 'satΔ±r'; + $lang['strrowsaff'] = 'satΔ±r işlendi.'; + $lang['strobjects'] = 'nesne(ler)'; + $lang['strback'] = 'Geri'; + $lang['strqueryresults'] = 'Sorgu sonuΓ§larΔ±'; + $lang['strshow'] = 'GΓΆster'; + $lang['strempty'] = 'Boşalt'; + $lang['strlanguage'] = 'Dil'; + $lang['strencoding'] = 'Karakter kodlamasΔ±'; + $lang['strvalue'] = 'Değer'; + $lang['strunique'] = 'Tekil'; + $lang['strprimary'] = 'Birincil'; + $lang['strexport'] = 'Export'; + $lang['strimport'] = 'Import'; + $lang['strallowednulls'] = 'Δ°zin verilen NULL karakterler'; + $lang['strbackslashn'] = '\N'; + $lang['strnull'] = 'Null'; + $lang['strnull'] = 'NULL (sΓΆzcΓΌk)'; + $lang['stremptystring'] = 'Boş metin/alan'; + $lang['strsql'] = 'SQL'; + $lang['stradmin'] = 'YΓΆnetici'; + $lang['strvacuum'] = 'Vacuum'; + $lang['stranalyze'] = 'Analyze'; + $lang['strclusterindex'] = 'Cluster'; + $lang['strclustered'] = 'Cluster edildi mi?'; + $lang['strreindex'] = 'Reindex'; + $lang['strrun'] = 'Γ‡alıştΔ±r'; + $lang['stradd'] = 'Ekle'; + $lang['strremove'] = 'KaldΔ±r'; + $lang['strevent'] = 'Event'; + $lang['strwhere'] = 'Where'; + $lang['strinstead'] = 'Do Instead'; + $lang['strwhen'] = 'When'; + $lang['strformat'] = 'Format'; + $lang['strdata'] = 'Veri'; + $lang['strconfirm'] = 'Onayla'; + $lang['strexpression'] = 'Δ°fade'; + $lang['strellipsis'] = '...'; + $lang['strseparator'] = ': '; + $lang['strexpand'] = 'Genişlet'; + $lang['strcollapse'] = 'Dar gΓΆrΓΌnΓΌm'; + $lang['strexplain'] = 'Explain'; + $lang['strexplainanalyze'] = 'Explain Analyze'; + $lang['strfind'] = 'Bul'; + $lang['stroptions'] = 'SeΓ§enekler'; + $lang['strrefresh'] = 'Yenile'; + $lang['strdownload'] = 'Δ°ndir'; + $lang['strdownloadgzipped'] = 'gzip ile sΔ±kıştΔ±rΔ±lmış halde indir'; + $lang['strinfo'] = 'Bilgi'; + $lang['stroids'] = 'OIDler'; + $lang['stradvanced'] = 'Gelişmiş'; + $lang['strvariables'] = 'Değişkenler'; + $lang['strprocess'] = 'SΓΌreΓ§'; + $lang['strprocesses'] = 'SΓΌreΓ§ler'; + $lang['strsetting'] = 'Ayar'; + $lang['streditsql'] = 'SQL DΓΌzenle'; + $lang['strruntime'] = 'Toplam Γ§alışma sΓΌresi: %s ms'; + $lang['strpaginate'] = 'SonuΓ§larΔ± sayfalandΔ±r.'; + $lang['struploadscript'] = 'ya da bir SQL betiği yΓΌkleyin:'; + $lang['strstarttime'] = 'BaşlangΔ±Γ§ zamanΔ±'; + $lang['strfile'] = 'Dosya'; + $lang['strfileimported'] = 'Dosya import edildi.'; + $lang['strtrycred'] = 'Giriş bilgilerini tΓΌm sunucular iΓ§in kullan'; +$lang['strexecute'] = 'Execute'; + + // Error handling + $lang['strnoframes'] = 'Bu uygulama en iyi olarak frame destekli bir tarayΔ±cΔ± ile kullanΔ±labilir; ancak frameler ile kullanmak istemiyorsanΔ±z aşağıdaki linke tΔ±klayabilirsiniz.'; + $lang['strnoframeslink'] = 'Frame olmadan kullan'; + $lang['strbadconfig'] = 'config.inc.php dosyaniz gΓΌncel değil. Bu dosyayΔ± yeni config.inc.php-dist dosyasΔ±ndan yaratmanΔ±z gerekmektedir.'; + $lang['strnotloaded'] = 'PHP kurulumunuzda PostgreSQL desteği bulunamamıştΔ±r.'; + $lang['strpostgresqlversionnotsupported'] = 'Bu PostgreSQL sΓΌrΓΌmΓΌ desteklenmemektedir. LΓΌtfen %s ya da ΓΌstΓΌ bir sΓΌrΓΌme gΓΌncelleyiniz.'; + $lang['strbadschema'] = 'GeΓ§ersiz şema.'; + $lang['strbadencoding'] = 'Δ°stemci dil kodlamasΔ±nΔ± ayarlamaya Γ§alışırken bir hata oluştu.'; + $lang['strsqlerror'] = 'SQL hatasΔ±:'; + $lang['strinstatement'] = 'Üstteki hata, aşağıdaki ifade iΓ§inde oluştu:'; + $lang['strinvalidparam'] = 'GeΓ§ersiz betik parametreleri.'; + $lang['strnodata'] = 'SatΔ±r bulunamadΔ±.'; + $lang['strnoobjects'] = 'HiΓ§bir nesne bulunamadΔ±..'; + $lang['strrownotunique'] = 'Bu satΔ±r iΓ§in hiΓ§bir tekil belirtici bulunamadΔ±.'; + $lang['strnouploads'] = 'Dosya yΓΌkleme ΓΆzelliği etkin değil.'; + $lang['strimporterror'] = 'Import hatasΔ±.'; + $lang['strimporterror-fileformat'] = 'Import hatasΔ±: Dosya tipi otomatik olarak belirlenemedi.'; + $lang['strimporterrorline'] = '%s numaralΔ± satΔ±rda import hatasΔ±.'; +$lang['strimporterrorline-badcolumnnum'] = 'Import error on line %s: Line does not possess the correct number of columns.'; +$lang['strimporterror-uploadedfile'] = 'Import error: File could not be uploaded to the server'; +$lang['strcannotdumponwindows'] = 'Dumping of complex table and schema names on Windows is not supported.'; + + // Tables + $lang['strtable'] = 'Tablo'; + $lang['strtables'] = 'Tablolar'; + $lang['strshowalltables'] = 'TΓΌm tablolarΔ± gΓΆster'; + $lang['strnotables'] = 'VeritabanΔ±nda tablo bulunamadΔ±.'; + $lang['strnotable'] = 'VeritabanΔ±nda tablo bulunamadΔ±.'; + $lang['strcreatetable'] = 'Yeni tablo yarat'; + $lang['strtablename'] = 'Tablo adΔ±'; + $lang['strtableneedsname'] = 'Tablonuza bir ad vermeniz gerekmektedir.'; + $lang['strtableneedsfield'] = 'En az bir alan belirtmeniz gerekmektedir.'; + $lang['strtableneedscols'] = 'GeΓ§erli miktarda kolon sayΔ±sΔ± belirtmeniz gerekmektedir.'; + $lang['strtablecreated'] = 'Tablo yaratΔ±ldΔ±.'; + $lang['strtablecreatedbad'] = 'Tablo yaratΔ±lamadΔ±.'; + $lang['strconfdroptable'] = '"%s" tablosunu kaldΔ±rmak istediğinizden emin misiniz?'; + $lang['strtabledropped'] = 'Tablo kaldΔ±rΔ±ldΔ±.'; + $lang['strtabledroppedbad'] = 'Tablo kaldΔ±rΔ±lamadΔ±.'; + $lang['strconfemptytable'] = '"%s" tablosunu boşaltmak istediğinizden emin misiniz?'; + $lang['strtableemptied'] = 'Tablo boşaltΔ±ldΔ±.'; + $lang['strtableemptiedbad'] = 'Tablo boşaltΔ±lamadΔ±.'; + $lang['strinsertrow'] = 'Yeni kayΔ±t gir'; + $lang['strrowinserted'] = 'Yeni kayΔ±t girildi.'; + $lang['strrowinsertedbad'] = 'Yeni kayΔ±t girme işlemi başarΔ±sΔ±z oldu.'; + $lang['strrowduplicate'] = 'SatΔ±r ekleme başarΔ±sΔ±z oldu, birbirinin aynΔ± iki kayΔ±t girilmek istendi.'; + $lang['streditrow'] = 'KayΔ±dΔ±n iΓ§eriğini değiştir.'; + $lang['strrowupdated'] = 'KayΔ±t gΓΌncellendi.'; + $lang['strrowupdatedbad'] = 'KayΔ±t gΓΌncelleme işleme başarΔ±sΔ±z oldu.'; + $lang['strdeleterow'] = 'KaydΔ± sil'; + $lang['strconfdeleterow'] = 'Bu kaydΔ± silmek istediğinize emin misiniz?'; + $lang['strrowdeleted'] = 'KayΔ±t silindi.'; + $lang['strrowdeletedbad'] = 'KayΔ±t silinme işlemi başarΔ±sΔ±z oldu.'; + $lang['strinsertandrepeat'] = 'Ekle ve Tekrarla'; + $lang['strnumcols'] = 'Kolon sayΔ±sΔ±'; + $lang['strcolneedsname'] = 'Kolon iΓ§in bir ad vermelisiniz.'; + $lang['strselectallfields'] = 'TΓΌm alanlarΔ± seΓ§'; + $lang['strselectneedscol'] = 'En az bir kolon işaretlemelisiniz'; + $lang['strselectunary'] = 'Unary operatΓΆrlerin değeri olamaz.'; + $lang['straltercolumn'] = 'Kolonu değiştir (alter)'; + $lang['strcolumnaltered'] = 'Kolon değiştirildi (alter)'; + $lang['strcolumnalteredbad'] = 'Kolon değiştirilme işlemi başarΔ±sΔ±z oldu.'; + $lang['strconfdropcolumn'] = '"%s" kolonunu "%s" tablosundan silmek istediğinize emin misiniz?'; + $lang['strcolumndropped'] = 'Kolon silindi.'; + $lang['strcolumndroppedbad'] = 'Kolon silme işlemi başarΔ±sΔ±z oldu.'; + $lang['straddcolumn'] = 'Yeni kolon ekle'; + $lang['strcolumnadded'] = 'Kolon eklendi.'; + $lang['strcolumnaddedbad'] = 'Kolon eklenemedi.'; + $lang['strcascade'] = 'CASCADE'; + $lang['strtablealtered'] = 'Tablo alter edildi..'; + $lang['strtablealteredbad'] = 'Tablo alteration işlemi başarΔ±sΔ±z oldu.'; + $lang['strdataonly'] = 'Sadece veri'; + $lang['strstructureonly'] = 'Sadece yapΔ±'; + $lang['strstructureanddata'] = 'YapΔ± ve veri'; + $lang['strtabbed'] = 'Tabbed'; + $lang['strauto'] = 'Otomatik'; + $lang['strconfvacuumtable'] = '"%s" tablosunu vakumlamak istediğiniz emin misiniz?'; + $lang['strestimatedrowcount'] = 'Yaklaşık satΔ±r sayΔ±sΔ±'; + + // Users + $lang['struser'] = 'KullanΔ±cΔ±'; + $lang['strusers'] = 'KullanΔ±cΔ±lar'; + $lang['strusername'] = 'KullanΔ±cΔ± AdΔ±'; + $lang['strpassword'] = 'Şifresi'; + $lang['strsuper'] = 'Superuser mΔ±?'; + $lang['strcreatedb'] = 'VeritabanΔ± yaratabilsin mi?'; + $lang['strexpires'] = 'Expires'; + $lang['strsessiondefaults'] = 'Oturum varsayΔ±lanlarΔ±'; + $lang['strnousers'] = 'HiΓ§bir kullanΔ±cΔ± bulunamadΔ±.'; + $lang['struserupdated'] = 'KullanΔ±cΔ± gΓΌncellendi.'; + $lang['struserupdatedbad'] = 'KullanΔ±cΔ± gΓΌncelleme işlemi başarΔ±sΔ±z oldu.'; + $lang['strshowallusers'] = 'TΓΌm kullanΔ±cΔ±larΔ± gΓΆster.'; + $lang['strcreateuser'] = 'Yeni kullanΔ±cΔ± yarat'; + $lang['struserneedsname'] = 'KullanΔ±cΔ±nΔ±z iΓ§in bir ad vermelisiniz.'; + $lang['strusercreated'] = 'KullanΔ±cΔ± yaratΔ±ldΔ±.'; + $lang['strusercreatedbad'] = 'KullanΔ±cΔ± yaratΔ±lma işlemi başarΔ±sΔ±z oldu.'; + $lang['strconfdropuser'] = '"%s" kullanΔ±cΔ±sΔ±nΔ± silmek istediğinize emin misiniz?'; + $lang['struserdropped'] = 'KullanΔ±cΔ± silindi.'; + $lang['struserdroppedbad'] = 'KullanΔ±cΔ± silme işlemi başarΔ±sΔ±z oldu.'; + $lang['straccount'] = 'Hesap'; + $lang['strchangepassword'] = 'Şifre Değiştir'; + $lang['strpasswordchanged'] = 'Şifre değiştirildi.'; + $lang['strpasswordchangedbad'] = 'Şifre değiştirme başarΔ±sΔ±z oldu.'; + $lang['strpasswordshort'] = 'Şifre Γ§ok kΔ±sa.'; + $lang['strpasswordconfirm'] = 'Şifreler uyuşmadΔ±.'; + + // Groups + $lang['strgroup'] = 'Grup'; + $lang['strgroups'] = 'Gruplar'; + $lang['strnogroup'] = 'Grup bulunamadΔ±.'; + $lang['strnogroups'] = 'Grup bulunamadΔ±.'; + $lang['strcreategroup'] = 'Yeni grup yarat'; + $lang['strshowallgroups'] = 'TΓΌm gruplarΔ± gΓΆster'; + $lang['strgroupneedsname'] = 'Grup yaratabilmek iΓ§in bir ad vermelisiniz.'; + $lang['strgroupcreated'] = 'Grup yaratΔ±ldΔ±.'; + $lang['strgroupcreatedbad'] = 'Grup yaratma işlemi başarΔ±sΔ±z oldu.'; + $lang['strconfdropgroup'] = '"%s" grubunu silmek istediğinize emin misiniz?'; + $lang['strgroupdropped'] = 'Grup silindi.'; + $lang['strgroupdroppedbad'] = 'Grup silme işlemi başarΔ±sΔ±z oldu.'; + $lang['strmembers'] = 'Üyeler'; + $lang['straddmember'] = 'Üye ekle'; + $lang['strmemberadded'] = 'Üye eklendi.'; + $lang['strmemberaddedbad'] = 'Üye ekleme başarΔ±sΔ±z oldu.'; + $lang['strdropmember'] = 'Üyeyi kaldΔ±r'; + $lang['strconfdropmember'] = '"%s" ΓΌyesini "%s" grubundan silmek istediğinize emin misiniz?'; + $lang['strmemberdropped'] = 'Üye silindi.'; + $lang['strmemberdroppedbad'] = 'Üye silme başarΔ±sΔ±z oldu.'; + + // Privilges + $lang['strprivilege'] = 'Δ°zni'; + $lang['strprivileges'] = 'Δ°zinler'; + $lang['strnoprivileges'] = 'Bu nesnenin bir izni yoktur.'; + $lang['strgrant'] = 'Δ°zni ver'; + $lang['strrevoke'] = 'Δ°zni kaldΔ±r'; + $lang['strgranted'] = 'Δ°zimler verildi.'; + $lang['strgrantfailed'] = 'Δ°zinlerin grant işlemi başarΔ±sΔ±z oldu.'; + + $lang['strgrantbad'] = 'En az bir kullanΔ±cΔ± ya da grup ve en az bir izin belirtmelisiniz.'; + $lang['strgrantor'] = 'Grantor'; + $lang['strasterisk'] = '*'; + + // Databases + $lang['strdatabase'] = 'VeritabanΔ±'; + $lang['strdatabases'] = 'VeritabanlarΔ±'; + $lang['strshowalldatabases'] = 'TΓΌm veritabanlarΔ±nΔ± gΓΆster'; + $lang['strnodatabase'] = 'VeritabanΔ± bulunamadΔ±.'; + $lang['strnodatabases'] = 'VeritabanΔ± bulunamadΔ±.'; + $lang['strcreatedatabase'] = 'VeritabanΔ± yarat'; + $lang['strdatabasename'] = 'VeritabanΔ± adΔ±'; + $lang['strdatabaseneedsname'] = 'VeritabanΔ±nΔ±za bir ad vermelisiniz.'; + $lang['strdatabasecreated'] = 'VeritabanΔ± yaratΔ±ldΔ±.'; + $lang['strdatabasecreatedbad'] = 'VeritabanΔ± yaratΔ±lamadΔ±.'; + $lang['strconfdropdatabase'] = '"%s" veritabanΔ±nΔ± kaldΔ±rmak istediğinize emin misiniz?'; + $lang['strdatabasedropped'] = 'VeritabanΔ± kaldΔ±rΔ±ldΔ±.'; + $lang['strdatabasedroppedbad'] = 'VeritabanΔ± kaldΔ±rma başarΔ±sΔ±z oldu.'; + $lang['strentersql'] = 'VeritabanΔ± ΓΌzerinde Γ§alıştΔ±rΔ±lacak sorgu/sorgularΔ± aşağıya yazΔ±nΔ±z:'; + $lang['strsqlexecuted'] = 'SQL Γ§alıştΔ±rΔ±ldΔ±.'; + $lang['strvacuumgood'] = 'Vacuum tamamlandΔ±.'; + $lang['strvacuumbad'] = 'Vacuum işlemi başarΔ±sΔ±z oldu.'; + $lang['stranalyzegood'] = 'Analyze işlemi tamamlandΔ±.'; + $lang['stranalyzebad'] = 'Analyze işlemi başarΔ±sΔ±z oldu.'; + $lang['strreindexgood'] = 'Reindex tamamlandΔ±.'; + $lang['strreindexbad'] = 'Reindex başarΔ±sΔ±z oldu.'; + $lang['strfull'] = 'Full'; + $lang['strfreeze'] = 'Freeze'; + $lang['strforce'] = 'Force'; + $lang['strsignalsent'] = 'Sinyal gΓΆnderildi.'; + $lang['strsignalsentbad'] = 'Sinyal gΓΆnderme işlemi başarΔ±sΔ±z oldu'; + $lang['strallobjects'] = 'TΓΌm nesneler'; + $lang['strdatabasealtered'] = 'VeritabanΔ± değiştirildi.'; + $lang['strdatabasealteredbad'] = 'VeritabanΔ± değiştirme başarΔ±sΔ±z oldu.'; + + // Views + $lang['strview'] = 'View'; + $lang['strviews'] = 'Viewlar'; + $lang['strshowallviews'] = 'TΓΌm viewlarΔ± gΓΆster'; + $lang['strnoview'] = 'Bir view bulunamadΔ±.'; + $lang['strnoviews'] = 'Bir view bulunamadΔ±.'; + $lang['strcreateview'] = 'View yarat'; + $lang['strviewname'] = 'View adΔ±'; + $lang['strviewneedsname'] = 'View iΓ§in bir ad belirtmelisiniz.'; + $lang['strviewneedsdef'] = 'View iΓ§in bir tanΔ±m belirtmelisiniz.'; + $lang['strviewneedsfields'] = 'View iΓ§inde gΓΆrΓΌnmesini istediğiniz kolonlarΔ± belirtmelisiniz.'; + $lang['strviewcreated'] = 'View yaratΔ±ldΔ±.'; + $lang['strviewcreatedbad'] = 'View yaratma işlemi başarΔ±sΔ±z oldu.'; + $lang['strconfdropview'] = '"%s" viewini kaldΔ±rmak istediğinize emin misiniz?'; + $lang['strviewdropped'] = 'View kaldΔ±rΔ±ldΔ±.'; + $lang['strviewdroppedbad'] = 'View kaldΔ±rma işlemi başarΔ±sΔ±z oldu.'; + $lang['strviewupdated'] = 'View gΓΌncellendi.'; + $lang['strviewupdatedbad'] = 'View gΓΌncelleme işlemi başarΔ±sΔ±z oldu.'; + $lang['strviewlink'] = 'Linking Keys'; + $lang['strviewconditions'] = 'Ek durumlar'; + $lang['strcreateviewwiz'] = 'Sihirbaz ile view yaratΔ±n'; + + // Sequences + $lang['strsequence'] = 'Sequence'; + $lang['strsequences'] = 'Sequences'; + $lang['strshowallsequences'] = 'Show all sequences'; + $lang['strnosequence'] = 'No sequence found.'; + $lang['strnosequences'] = 'No sequences found.'; + $lang['strcreatesequence'] = 'Create sequence'; + $lang['strlastvalue'] = 'Son değer'; + $lang['strincrementby'] = 'ArttΔ±rma değeri'; + $lang['strstartvalue'] = 'BaşlangΔ±Γ§ Değeri'; + $lang['strmaxvalue'] = 'Max Değer'; + $lang['strminvalue'] = 'Min Değer'; + $lang['strcachevalue'] = 'Cache Değeri'; + $lang['strlogcount'] = 'Log Count'; + $lang['striscycled'] = 'Is Cycled?'; + $lang['strsequenceneedsname'] = 'Sequence iΓ§in bir ad belirtmelisiniz.'; + $lang['strsequencecreated'] = 'Sequence yaratΔ±ldΔ±.'; + $lang['strsequencecreatedbad'] = 'Sequence yaratma işlemi başarΔ±sΔ±z oldu.'; + $lang['strconfdropsequence'] = '"%s" sequence ini kaldΔ±rmak istediğinize emin misiniz?'; + $lang['strsequencedropped'] = 'Sequence kaldΔ±rΔ±ldΔ±.'; + $lang['strsequencedroppedbad'] = 'Sequence kaldΔ±rma işlemi başarΔ±sΔ±z oldu.'; + $lang['strsequencereset'] = 'Sequence sΔ±fΔ±rlandΔ±.'; + $lang['strsequenceresetbad'] = 'Sequence sΔ±fΔ±rlama başarΔ±sΔ±z oldu.'; + + // Indexes + $lang['strindex'] = 'Index'; + $lang['strindexes'] = 'Indeksler'; + $lang['strindexname'] = 'Indeks adΔ±'; + $lang['strshowallindexes'] = 'TΓΌm indeksleri gΓΆster'; + $lang['strnoindex'] = 'HiΓ§bir indeks bulunamadΔ±.'; + $lang['strnoindexes'] = 'HiΓ§bir indeks bulunamadΔ±.'; + $lang['strcreateindex'] = 'Indeks yarat'; + $lang['strtabname'] = 'Tab AdΔ±'; + $lang['strcolumnname'] = 'Kolon adΔ±'; + $lang['strindexneedsname'] = 'Indeksinize bir ad vermeniz gerekmektedir.'; + $lang['strindexneedscols'] = 'GeΓ§erli kolΔ±n sayΔ±sΔ± vermeniz gerekmektedir.'; + $lang['strindexcreated'] = 'Indeks yaratΔ±ldΔ±.'; + $lang['strindexcreatedbad'] = 'Index creation failed.'; + $lang['strconfdropindex'] = '"%s" indeksini kaldΔ±rmak istediğinize emin misiniz?'; + $lang['strindexdropped'] = 'Indeks kaldΔ±rΔ±ldΔ±.'; + $lang['strindexdroppedbad'] = 'Indeks kaldΔ±rΔ±lamadΔ±.'; + $lang['strkeyname'] = 'Anahtar adΔ±'; + $lang['struniquekey'] = 'Tekil (Unique) Anahtar'; + $lang['strprimarykey'] = 'Birincil Anahtar (Primary Key)'; + $lang['strindextype'] = 'Indeksin tipi'; + $lang['strtablecolumnlist'] = 'Tablodaki kolonlar'; + $lang['strindexcolumnlist'] = 'Indeksteki kolonlar'; + $lang['strconfcluster'] = '"%s" tablosunu cluster etmek istiyor musunuz?'; + $lang['strclusteredgood'] = 'Cluster tamamlandΔ±.'; + $lang['strclusteredbad'] = 'Cluster başarΔ±sΔ±z oldu.'; + $lang['strcluster'] = 'KΓΌme'; + + // Rules + $lang['strrules'] = 'Rules'; + $lang['strrule'] = 'Rule'; + $lang['strshowallrules'] = 'Show all Rules'; + $lang['strnorule'] = 'Rule bulunamadΔ±.'; + $lang['strnorules'] = 'Rule bulunamadΔ±.'; + $lang['strcreaterule'] = 'Rule yarat'; + $lang['strrulename'] = 'Rule adΔ±'; + $lang['strruleneedsname'] = 'Rule iΓ§in bir ad belirtmelisiniz.'; + $lang['strrulecreated'] = 'Rule yaratΔ±ldΔ±.'; + $lang['strrulecreatedbad'] = 'Rule yaratma işlemi başarΔ±sΔ±z oldu.'; + $lang['strconfdroprule'] = '"%s" kuralΔ±nΔ± "%s" tablosundan silmek istediğinize emin misiniz?'; + $lang['strruledropped'] = 'Rule silindi'; + $lang['strruledroppedbad'] = 'Rule silinme işlemi başarΔ±sΔ±z oldu.'; + + // Constraints + $lang['strconstraint'] = 'KΔ±sΔ±tlama'; + $lang['strconstraints'] = 'KΔ±sΔ±tlamalar'; + $lang['strshowallconstraints'] = 'TΓΌm kΔ±sΔ±tlamalarΔ± (constraint) gΓΆster.'; + $lang['strnoconstraints'] = 'HiΓ§bir kΔ±sΔ±tlama (constraint) bulunamadΔ±.'; + $lang['strcreateconstraint'] = 'KΔ±sΔ±tlama (Constraint) yarat'; + $lang['strconstraintcreated'] = 'KΔ±sΔ±tlama (Constraint) yaratΔ±ldΔ±.'; + $lang['strconstraintcreatedbad'] = 'KΔ±sΔ±tlama (Constraint) yaratma işlemi başarΔ±sΔ±z oldu.'; + $lang['strconfdropconstraint'] = '"%s" ΓΌzerindeki "%s" kΔ±sΔ±tlamasΔ±nΔ± (constraint) kaldΔ±rmak istiyor musunuz?'; + $lang['strconstraintdropped'] = 'KΔ±sΔ±tlama (Constraint) kaldΔ±rΔ±ldΔ±'; + $lang['strconstraintdroppedbad'] = 'KΔ±sΔ±tlama (Constraint) işlemi başarΔ±sΔ±z oldu.'; + $lang['straddcheck'] = 'Kontrol (Check) ekle'; + $lang['strcheckneedsdefinition'] = 'Kontrol (Check) kΔ±sΔ±tlamasΔ± (constraint) iΓ§in bir tanΔ±m girilmelidir.'; + $lang['strcheckadded'] = 'Kontrol kΔ±sΔ±tlamasΔ± (Check constraint) eklendi.'; + $lang['strcheckaddedbad'] = 'Kontrol kΔ±sΔ±tlamasΔ± (Check constraint) ekleme işlemi başarΔ±sΔ±z oldu.'; + $lang['straddpk'] = 'Birincil Anahtar Ekle'; + $lang['strpkneedscols'] = 'Birincil anahtar iΓ§in en az bir kolon gereklidir.'; + $lang['strpkadded'] = 'Birincil anahtar eklendi.'; + $lang['strpkaddedbad'] = 'Birincil anahtar eklenemedi.'; + $lang['stradduniq'] = 'Tekil (Unique) anahtar ekle'; + $lang['struniqneedscols'] = 'Tekil anahtar yaratmak iΓ§in en az bir kolon gerekir.'; + $lang['struniqadded'] = 'Tekil anahtar eklendi.'; + $lang['struniqaddedbad'] = 'Tekil anahtar eklenemedi.'; + $lang['straddfk'] = 'Δ°kincil anahtar ekle'; + $lang['strfkneedscols'] = 'Δ°kincil anahtar yaratmak iΓ§in en az bir kolon gerekir.'; + $lang['strfkneedstarget'] = 'Δ°kincil anahtar hedef bir tablo gerektirir.'; + $lang['strfkadded'] = 'Δ°kincil anahtar eklendi.'; + $lang['strfkaddedbad'] = 'Δ°kincil anahtar eklenemedi.'; + $lang['strfktarget'] = 'Hedef tablo'; + + $lang['strfkcolumnlist'] = 'Anahtardaki kolonlar'; + $lang['strondelete'] = 'ON DELETE'; + $lang['stronupdate'] = 'ON UPDATE'; + // Functions + $lang['strfunction'] = 'Fonksiyon'; + $lang['strfunctions'] = 'Fonksiyonlar'; + $lang['strshowallfunctions'] = 'TΓΌm fonksiyonlarΔ± gΓΆster'; + $lang['strnofunction'] = 'Fonksiyon bulunamadΔ±.'; + $lang['strnofunctions'] = 'Fonksiyon bulunamadΔ±.'; + $lang['strcreateplfunction'] = 'SQL/PL fonksiyonu yarat'; + $lang['strcreateinternalfunction'] = 'Δ°Γ§ (internal) fonksiyon yarat'; + $lang['strcreatecfunction'] = 'C fonksiyonu yarat'; + $lang['strfunctionname'] = 'Fonksiyon adΔ±'; + $lang['strreturns'] = 'DΓΆnderilen değer'; + $lang['strarguments'] = 'ArgΓΌmanlar'; + $lang['strproglanguage'] = 'Dil'; + $lang['strfunctionneedsname'] = 'Fonksiyona bir ad vermelisiniz.'; + $lang['strfunctionneedsdef'] = 'Fonksiyona bir tanΔ±m vermelisiniz.'; + $lang['strfunctioncreated'] = 'Fonksiyon yaratΔ±ldΔ±.'; + $lang['strfunctioncreatedbad'] = 'Fonksiyon yaratma işlemi başarΔ±sΔ±z oldu.'; + $lang['strconfdropfunction'] = '"%s" fonksiyonunu kaldΔ±rmak istediğinize emin misiniz?'; + $lang['strfunctiondropped'] = 'Fonksiyon kaldΔ±rΔ±ldΔ±.'; + $lang['strfunctiondroppedbad'] = 'Fonksiyon kaldΔ±rma işlemi başarΔ±sΔ±z oldu.'; + $lang['strfunctionupdated'] = 'Fonksiyon gΓΌncellendi.'; + $lang['strfunctionupdatedbad'] = 'Function gΓΌncelleme işlemi başarΔ±sΔ±z oldu.'; + $lang['strobjectfile'] = 'Nesne dosyasΔ±'; + $lang['strlinksymbol'] = 'BağlantΔ± sembolΓΌ'; + + // Triggers + $lang['strtrigger'] = 'Trigger'; + $lang['strtriggers'] = 'Triggerlar'; + $lang['strshowalltriggers'] = 'TΓΌm triggerlarΔ± gΓΆster'; + $lang['strnotrigger'] = 'Trigger bulunamadΔ±.'; + $lang['strnotriggers'] = 'Trigger bulunamadΔ±.'; + $lang['strcreatetrigger'] = 'Yeni trigger yarat'; + $lang['strtriggerneedsname'] = 'Trigger iΓ§in bir ad belirtmelisiniz.'; + $lang['strtriggerneedsfunc'] = 'Trigger iΓ§in bir fonksiyon belirtmelisiniz.'; + $lang['strtriggercreated'] = 'Trigger yaratΔ±ldΔ±.'; + $lang['strtriggercreatedbad'] = 'Trigger yaratΔ±lamadΔ±.'; + $lang['strconfdroptrigger'] = '"%s" triggerini "%s" tablosundan kaldΔ±rmak istediğinize emin misiniz?'; + $lang['strtriggerdropped'] = 'Trigger silindi.'; + $lang['strtriggerdroppedbad'] = 'Trigger silinme işlemi başarΔ±sΔ±z oldu.'; + $lang['strtriggeraltered'] = 'Trigger değiştirildi.'; + $lang['strtriggeralteredbad'] = 'Trigger değiştirilme işlemi başarΔ±sΔ±z oldu.'; + $lang['strforeach'] = 'Her bir'; + + // Types + $lang['strtype'] = 'Veri tipi'; + $lang['strtypes'] = 'Veri tipleri'; + $lang['strshowalltypes'] = 'TΓΌm veri tiplerini gΓΆster'; + $lang['strnotype'] = 'HiΓ§ veri tipi bulunamadΔ±.'; + $lang['strnotypes'] = 'HiΓ§ veri tipi bulunamadΔ±.'; + $lang['strcreatetype'] = 'Yeni veri tipi yarat'; + $lang['strcreatecomptype'] = 'Karmaşık veri tipi yarat'; + $lang['strtypeneedsfield'] = 'En az bir alan belirtmelisiniz.'; + $lang['strtypeneedscols'] = 'GeΓ§erli bir alan sayΔ±sΔ± belirtmelisiniz.'; + $lang['strtypename'] = 'Veri tipi adΔ±'; + $lang['strinputfn'] = 'Giriş (Input) fonksiyonu'; + $lang['stroutputfn'] = 'Γ‡Δ±kış (Output) fonksiyonu'; + $lang['strpassbyval'] = 'Passed by val?'; + $lang['stralignment'] = 'Alignment'; + $lang['strelement'] = 'Eleman'; + $lang['strdelimiter'] = 'Delimiter'; + $lang['strstorage'] = 'Storage'; + $lang['strfield'] = 'Alan'; + $lang['strnumfields'] = 'AlanlarΔ±n sayΔ±sΔ±'; + + $lang['strtypeneedsname'] = 'Veri tipi iΓ§in bir ad vermelisiniz.'; + $lang['strtypeneedslen'] = 'Veri tipiniz iΓ§in bir uzunluk belirtmelisiniz.'; + $lang['strtypecreated'] = 'Veri tipi yaratΔ±ldΔ±'; + $lang['strtypecreatedbad'] = 'Veri tipi yaratΔ±lamadΔ±.'; + $lang['strconfdroptype'] = '"%s" veri tipini kaldΔ±rmak istediğinize emin misiniz?'; + $lang['strtypedropped'] = 'Veri tipi kaldΔ±rΔ±ldΔ±.'; + $lang['strtypedroppedbad'] = 'Veri tipi kaldΔ±rΔ±lamadΔ±.'; + $lang['strflavor'] = 'Flavor'; + $lang['strbasetype'] = 'Base'; + $lang['strcompositetype'] = 'Composite'; + $lang['strpseudotype'] = 'Pseudo'; + + // Schemas + $lang['strschema'] = 'Şema'; + $lang['strschemas'] = 'Şemalar'; + $lang['strshowallschemas'] = 'TΓΌm şemalarΔ± gΓΆster'; + $lang['strnoschema'] = 'Bir şema bulunamadΔ±.'; + $lang['strnoschemas'] = 'Bir şema bulunamadΔ±.'; + $lang['strcreateschema'] = 'Şema yarat'; + $lang['strschemaname'] = 'Şema adΔ±'; + $lang['strschemaneedsname'] = 'Şema iΓ§in bir ad belirtmelisiniz.'; + $lang['strschemacreated'] = 'Şema yaratΔ±ldΔ±'; + $lang['strschemacreatedbad'] = 'Şema yaratma işlemi başarΔ±sΔ±z oldu'; + $lang['strconfdropschema'] = '"%s" şemasΔ±nΔ± kaldΔ±rmak istediğinize emin misiniz?'; + $lang['strschemadropped'] = 'Şema kaldΔ±rΔ±ldΔ±.'; + $lang['strschemadroppedbad'] = 'Şema kaldΔ±rma işlemi başarΔ±sΔ±z oldu.'; + $lang['strschemaaltered'] = 'Schema değiştirildi.'; + $lang['strschemaalteredbad'] = 'Schema değiştirilme işlemi başarΔ±sΔ±z oldu.'; + $lang['strsearchpath'] = 'Şema arama yolu'; + + // Reports + $lang['strdomain'] = 'Domain'; + $lang['strdomains'] = 'Domainler'; + $lang['strshowalldomains'] = 'TΓΌm domainleri gΓΆster.'; + $lang['strnodomains'] = 'HiΓ§bir domain bulunamadΔ±.'; + $lang['strcreatedomain'] = 'Domain yarat'; + $lang['strdomaindropped'] = 'Domain silindi.'; + $lang['strdomaindroppedbad'] = 'Domain silme başarΔ±sΔ±z oldu.'; + $lang['strconfdropdomain'] = '"%s" domain\'ini silmek istediğinize emin misiniz??'; + $lang['strdomainneedsname'] = 'Domain iΓ§in bir ad vermelisiniz.'; + $lang['strdomaincreated'] = 'Domain yaratΔ±ldΔ±.'; + $lang['strdomaincreatedbad'] = 'Domain yaratma başarΔ±sΔ±z oldu.'; + $lang['strdomainaltered'] = 'Domain alter edildi.'; + $lang['strdomainalteredbad'] = 'Domain alter işlemi başarΔ±sΔ±z oldu.'; + + $lang['stroperator'] = 'OperatΓΆr'; + $lang['stroperators'] = 'OperatΓΆrler'; + $lang['strshowalloperators'] = 'TΓΌm operatΓΆrleri gΓΆster'; + $lang['strnooperator'] = 'OperatΓΆr bulunamadΔ±.'; + $lang['strnooperators'] = 'OperatΓΆr bulunamadΔ±.'; + $lang['strcreateoperator'] = 'OperatΓΆr yaratΔ±ldΔ±.'; + $lang['strleftarg'] = 'Sol Arg Tipi'; + $lang['strrightarg'] = 'Sağ Arg Tipi'; + $lang['strcommutator'] = 'Commutator'; + $lang['strnegator'] = 'Negator'; + $lang['strrestrict'] = 'Restrict'; + $lang['strjoin'] = 'Join'; + $lang['strhashes'] = 'Hashes'; + $lang['strmerges'] = 'Merges'; + $lang['strleftsort'] = 'Left sort'; + $lang['strrightsort'] = 'Right sort'; + $lang['strlessthan'] = 'küçüktΓΌr'; + $lang['strgreaterthan'] = 'bΓΌyΓΌktΓΌr'; + $lang['stroperatorneedsname'] = 'OperatΓΆre bir ad vermelisiniz.'; + $lang['stroperatorcreated'] = 'OperatΓΆr yaratΔ±ldΔ±'; + $lang['stroperatorcreatedbad'] = 'OperatΓΆr yaratma işlemi başarΔ±sΔ±z oldu.'; + $lang['strconfdropoperator'] = '"%s" operatΓΆrΓΌnΓΌ kaldΔ±rmak istediğinize emin misiniz?'; + $lang['stroperatordropped'] = 'OperatΓΆr kaldΔ±rΔ±ldΔ±.'; + $lang['stroperatordroppedbad'] = 'Operator kaldΔ±rma işlemi başarΔ±sΔ±z oldu.'; + + // Casts + $lang['strcasts'] = 'Casts'; + $lang['strnocasts'] = 'HiΓ§ cast bulunamadΔ±.'; + $lang['strsourcetype'] = 'Kaynak tip'; + $lang['strtargettype'] = 'Hedef tip'; + $lang['strimplicit'] = 'Implicit'; + $lang['strinassignment'] = 'In assignment'; + $lang['strbinarycompat'] = '(Binary uyumlu)'; + + // Conversions + $lang['strconversions'] = 'DΓΆnüşümleri'; + $lang['strnoconversions'] = 'HiΓ§ dΓΆnüşüm bulunamadΔ±.'; + $lang['strsourceencoding'] = 'Kaynak dil kodlamasΔ±'; + $lang['strtargetencoding'] = 'Hedef dil kodlamasΔ±'; + + // Languages + $lang['strlanguages'] = 'Diller'; + $lang['strnolanguages'] = 'HiΓ§ bir dil bulunamadΔ±.'; + $lang['strtrusted'] = 'GΓΌvenilir'; + + // Info + $lang['strnoinfo'] = 'HiΓ§ bir bilgi yok.'; + $lang['strreferringtables'] = 'Referring tables'; + $lang['strparenttables'] = 'Parent tablolar'; + $lang['strchildtables'] = 'Child tablolar'; + + // Aggregates + $lang['straggregates'] = 'Aggregate'; + $lang['strnoaggregates'] = 'HiΓ§ aggregate bulunamadΔ±.'; + $lang['stralltypes'] = '(TΓΌm veri tipleri)'; + $lang['stropclasses'] = 'Op sΔ±nΔ±flarΔ±'; + $lang['strnoopclasses'] = 'HiΓ§ operatΓΆr sΔ±nΔ±fΔ± bulunamadΔ±.'; + $lang['straccessmethod'] = 'Erişim YΓΆntemi'; + $lang['strrowperf'] = 'SatΔ±r BaşarΔ±mΔ±'; + $lang['strioperf'] = 'I/O BaşarΔ±mΔ±'; + $lang['stridxrowperf'] = 'Index SatΔ±r BaşarΔ±mΔ±'; + $lang['stridxioperf'] = 'Index I/O BaşarΔ±mΔ±'; + $lang['strpercent'] = '%'; + $lang['strsequential'] = 'Sequential'; + $lang['strscan'] = 'Scan'; + $lang['strread'] = 'Read'; + $lang['strfetch'] = 'Fetch'; + $lang['strheap'] = 'Heap'; + $lang['strtoast'] = 'TOAST'; + $lang['strtoastindex'] = 'TOAST Index'; + $lang['strcache'] = 'Cache'; + $lang['strdisk'] = 'Disk'; + $lang['strrows2'] = 'Rows'; + + // Tablespaces + $lang['strtablespace'] = 'Tablespace'; + $lang['strtablespaces'] = 'Tablespaceler'; + $lang['strshowalltablespaces'] = 'TΓΌm tablespaceleri gΓΆster'; + $lang['strnotablespaces'] = 'HiΓ§ tablespace bulunamadΔ±.'; + $lang['strcreatetablespace'] = 'Tablespace yarat'; + $lang['strlocation'] = 'Yer'; + $lang['strtablespaceneedsname'] = 'Tablespace\'e bir ad vermelisiniz.'; + $lang['strtablespaceneedsloc'] = 'Tablespace\'in yaratΔ±lacağı dizini belirtmelisiniz'; + $lang['strtablespacecreated'] = 'Tablespace yaratΔ±ldΔ±.'; + $lang['strtablespacecreatedbad'] = 'Tablespace yaratΔ±lamadΔ±.'; + $lang['strconfdroptablespace'] = '"%s" adlΔ± tablespace\'i kaldΔ±rmak istediğinize emin misiniz?'; + $lang['strtablespacedropped'] = 'Tablespace kaldΔ±rΔ±ldΔ±.'; + $lang['strtablespacedroppedbad'] = 'Tablespace kaldΔ±rΔ±lamadΔ±.'; + $lang['strtablespacealtered'] = 'Tablespace değiştirildi.'; + $lang['strtablespacealteredbad'] = 'Tablespace değiştirilemedi.'; + + // Miscellaneous + $lang['strtopbar'] = '%s, %s:%s ΓΌzerinde Γ§alışıyor-- "%s" kullanΔ±cΔ±sΔ± ile sisteme giriş yaptΔ±nΔ±z.'; + $lang['strtimefmt'] = 'jS M, Y g:iA'; + $lang['strhelp'] = 'YardΔ±m'; + $lang['strhelpicon'] = '?'; + $lang['strlogintitle'] = '%s\'e giriş yap'; + $lang['strlogoutmsg'] = '%s\'den Γ§Δ±kΔ±ldΔ±.'; + $lang['strloading'] = 'YΓΌkleniyor...'; + $lang['strerrorloading'] = 'YΓΌkleme hatasΔ±'; + $lang['strclicktoreload'] = 'Yeniden yΓΌklemek iΓ§in tΔ±klayΔ±n.'; +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/ukrainian.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/ukrainian.php new file mode 100644 index 00000000..b4a6d361 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/lang/ukrainian.php @@ -0,0 +1,584 @@ +'; + $lang['strfirst'] = '<< ΠŸΠ΅Ρ€ΡˆΠΈΠΉ'; + $lang['strlast'] = 'ΠžΡΡ‚Π°Π½. >>'; + $lang['strfailed'] = 'ΠŸΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ'; + $lang['strcreate'] = 'Π‘Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΠΈ'; + $lang['strcreated'] = 'Π‘Ρ‚Π²ΠΎΡ€Π΅Π½ΠΎ'; + $lang['strcomment'] = 'ΠšΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€'; + $lang['strlength'] = 'Π”ΠΎΠ²ΠΆΠΈΠ½Π°'; + $lang['strdefault'] = 'По Π·Π°ΠΌΠΎΠ²Ρ‡ΡƒΠ²Π°Π½Π½ΡŽ'; + $lang['stralter'] = 'Π—ΠΌΡ–Π½ΠΈΡ‚ΠΈ'; + $lang['strok'] = 'Π“Π°Ρ€Π°Π·Π΄'; + $lang['strcancel'] = 'Π’Ρ–Π΄ΠΌΡ–Π½ΠΈΡ‚ΠΈ'; + $lang['strsave'] = 'Π—Π±Π΅Ρ€Π΅Π³Ρ‚ΠΈ'; + $lang['strreset'] = 'Π‘ΠΊΠΈΠ½ΡƒΡ‚ΠΈ'; + $lang['strinsert'] = 'Вставити'; + $lang['strselect'] = 'Π’ΠΈΠ±Ρ€Π°Ρ‚ΠΈ'; + $lang['strdelete'] = 'Π’ΠΈΠ΄Π°Π»ΠΈΡ‚ΠΈ'; + $lang['strupdate'] = 'ΠžΠ½ΠΎΠ²ΠΈΡ‚ΠΈ'; + $lang['strreferences'] = 'Посилання'; + $lang['stryes'] = 'Π’Π°ΠΊ'; + $lang['strno'] = 'Ні'; + $lang['strtrue'] = 'Істина'; + $lang['strfalse'] = 'Ѐальш'; + $lang['stredit'] = 'Π Π΅Π΄Π°Π³ΡƒΠ²Π°Ρ‚ΠΈ'; + $lang['strcolumns'] = 'Атрибути'; + $lang['strrows'] = 'запис(ΠΈ/Ρ–Π²)'; + $lang['strrowsaff'] = 'запис(ΠΈ/Ρ–Π²) ΠΎΠΏΡ€Π°Ρ†ΡŒΠΎΠ²Π°Π½ΠΎ.'; + $lang['strobjects'] = 'ΠΎΠ±"Ρ”ΠΊΡ‚(ΠΈ/Ρ–Π²)'; + $lang['strexample'] = 'Ρ– Ρ‚.Π΄.'; + $lang['strback'] = 'Назад'; + $lang['strqueryresults'] = 'Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΈ Π·Π°ΠΏΠΈΡ‚Ρƒ'; + $lang['strshow'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΠΈ'; + $lang['strempty'] = 'ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΠΈ'; + $lang['strlanguage'] = 'Мова'; + $lang['strencoding'] = 'ΠšΠΎΠ΄ΡƒΠ²Π°Π½Π½Ρ'; + $lang['strvalue'] = 'ЗначСння'; + $lang['strunique'] = 'Π£Π½Ρ–ΠΊΠ°Π»ΡŒΠ½ΠΈΠΉ'; + $lang['strprimary'] = 'ΠŸΠ΅Ρ€Π²ΠΈΠ½Π½ΠΈΠΉ'; + $lang['strexport'] = 'Експорт'; + $lang['strimport'] = 'Π†ΠΌΠΏΠΎΡ€Ρ‚'; + $lang['strsql'] = 'SQL'; + $lang['strgo'] = 'Π’ΠΈΠΊΠΎΠ½Π°Ρ‚ΠΈ'; + $lang['stradmin'] = 'Управління'; + $lang['strvacuum'] = 'ΠŸΠ΅Ρ€Π΅Π±ΡƒΠ΄ΡƒΠ²Π°Ρ‚ΠΈ'; + $lang['stranalyze'] = 'Аналізувати'; + $lang['strclusterindex'] = 'ΠšΠ»Π°ΡΡ‚Π΅Ρ€ΠΈΠ·ΡƒΠ²Π°Ρ‚ΠΈ'; + $lang['strclustered'] = 'ΠšΠ»Π°ΡΡ‚Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ?'; + $lang['strreindex'] = 'ΠŸΠ΅Ρ€Π΅Π±ΡƒΠ΄ΡƒΠ²Π°Ρ‚ΠΈ індСкс'; + $lang['strrun'] = 'Π’ΠΈΠΊΠΎΠ½Π°Ρ‚ΠΈ'; + $lang['stradd'] = 'Π”ΠΎΠ΄Π°Ρ‚ΠΈ'; + $lang['strevent'] = 'ΠŸΠΎΠ΄Ρ–Ρ'; + $lang['strwhere'] = 'Π”Π΅'; + $lang['strinstead'] = 'Π ΠΎΠ±ΠΈΡ‚ΠΈ Π·Π°ΠΌΡ–ΡΡ‚ΡŒ'; + $lang['strwhen'] = 'Коли'; + $lang['strformat'] = 'Π€ΠΎΡ€ΠΌΠ°Ρ‚'; + $lang['strdata'] = 'Π”Π°Π½Π½Ρ–'; + $lang['strconfirm'] = 'ΠŸΡ–Π΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΠΈ'; + $lang['strexpression'] = 'Π’ΠΈΡ€Π°Π·'; + $lang['strellipsis'] = '...'; + $lang['strexpand'] = 'Π Π°Π·ΡˆΠΈΡ€ΠΈΡ‚ΠΈ'; + $lang['strcollapse'] = 'Π—Π³ΠΎΡ€Π½ΡƒΡ‚ΠΈ'; + $lang['strexplain'] = 'ΠŸΠΎΡΡΠ½ΠΈΡ‚ΠΈ'; + $lang['strexplainanalyze'] = 'ΠŸΠΎΡΡΠ½ΠΈΡ‚ΠΈ Π°Π½Π°Π»Ρ–Π·'; + $lang['strfind'] = 'Π—Π½Π°ΠΉΡ‚ΠΈ'; + $lang['stroptions'] = 'ΠžΠΏΡ†Ρ–Ρ—'; + $lang['strrefresh'] = 'ΠžΠ½ΠΎΠ²ΠΈΡ‚ΠΈ'; + $lang['strdownload'] = 'Π—Π°Π²Π°Π½Ρ‚Π°ΠΆΠΈΡ‚ΠΈ'; + $lang['strdownloadgzipped'] = 'Π—Π°Π²Π°Π½Ρ‚Π°ΠΆΠΈΡ‚ΠΈ Π°Ρ€Ρ…Ρ–Π² gzip'; + $lang['strinfo'] = 'Відомості'; + $lang['stroids'] = 'OIDs'; + $lang['stradvanced'] = 'Π”ΠΎΠ΄Π°Ρ‚ΠΊΠΎΠ²ΠΎ'; + $lang['strvariables'] = 'Π—ΠΌΡ–Π½Π½Ρ–'; + $lang['strprocess'] = 'ΠŸΡ€ΠΎΡ†Π΅Ρ'; + $lang['strprocesses'] = 'ΠŸΡ€ΠΎΡ†Π΅ΡΠΈ'; + $lang['strsetting'] = 'ΠΠ°Π»Π°ΡˆΡ‚ΡƒΠ²Π°Π½Π½Ρ'; + $lang['streditsql'] = 'Π Π΅Π΄Π°Π³ΡƒΠ²Π°Ρ‚ΠΈ SQL'; + $lang['strruntime'] = 'Час виконання: %s мсСк'; + $lang['strpaginate'] = 'НумСрувати сторінки Π· Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ'; + $lang['struploadscript'] = 'Ρ‡ΠΈ Π·Π°Π²Π°Π½Ρ‚Π°ΠΆΠΈΡ‚ΠΈ SQL-скрипт:'; + $lang['strstarttime'] = 'Час ΠΏΠΎΡ‡Π°Ρ‚ΠΊΡƒ'; + $lang['strfile'] = 'Π€Π°ΠΉΠ»'; + $lang['strfileimported'] = 'Π€Π°ΠΉΠ» Ρ–ΠΌΠΏΠΎΡ€Ρ‚ΠΎΠ²Π°Π½ΠΎ.'; + + // Error handling + $lang['strbadconfig'] = 'Π’Π°Ρˆ config.inc.php застарів. Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ ΠΎΠ½ΠΎΠ²ΠΈΡ‚ΠΈ ΠΉΠΎΠ³ΠΎ Ρ–Π· config.inc.php-dist.'; + $lang['strnotloaded'] = 'Π’Π°ΡˆΠ° інсталяція PHP Π½Π΅ ΠΏΡ–Π΄Ρ‚Ρ€ΠΈΠΌΡƒΡ” PostgreSQL. Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΡ–Π»ΡŽΠ²Π°Ρ‚ΠΈ PHP, Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚Π°Π²ΡˆΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --with-pgsql для configure.'; + $lang['strbadschema'] = 'ВиявлСно Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρƒ схСму.'; + $lang['strbadencoding'] = 'НСмоТливо встановити Π’Π°ΡˆΠ΅ кодування Π² Π±Π°Π·Ρ– Π΄Π°Π½ΠΈΡ….'; + $lang['strsqlerror'] = 'Помилка SQL:'; + $lang['strinstatement'] = 'Π’ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ–:'; + $lang['strinvalidparam'] = 'ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ скрипта.'; + $lang['strnodata'] = 'Π”Π°Π½ΠΈΡ… Π½Π΅ виявлСно.'; + $lang['strnoobjects'] = 'Об"Ρ”ΠΊΡ‚Ρ–Π² Π½Π΅ виявлСно.'; + $lang['strrownotunique'] = 'НСмає ΡƒΠ½Ρ–ΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ–Π΄Π΅Π½Ρ‚ΠΈΡ„Ρ–ΠΊΠ°Ρ‚ΠΎΡ€Π° для Ρ†ΡŒΠΎΠ³ΠΎ запису.'; + $lang['strnouploads'] = 'ЗавантаТСння Ρ„Π°ΠΉΠ»Π° Π½Π΅ΠΌΠΎΠΆΠ»ΠΈΠ²Π΅.'; + $lang['strimporterror'] = 'Помилка ΠΏΡ€ΠΈ Ρ–ΠΌΠΏΠΎΡ€Ρ‚ΡƒΠ²Π°Π½Π½Ρ–.'; + $lang['strimporterrorline'] = 'Помилка ΠΊΠ°Π½Π°Π»Ρƒ ΠΏΡ€ΠΈ Ρ–ΠΌΠΏΠΎΡ€Ρ‚ΠΎΠ²Ρ– %s.'; + + // Tables + $lang['strtable'] = 'Ваблиця'; + $lang['strtables'] = 'Π’Π°Π±Π»ΠΈΡ†Ρ–'; + $lang['strshowalltables'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΠΈ всі Ρ‚Π°Π±Π»ΠΈΡ†Ρ–'; + $lang['strnotables'] = 'Π’Π°Π±Π»ΠΈΡ†ΡŒ Π½Π΅ виявлСно.'; + $lang['strnotable'] = ' Π’Π°Π±Π»ΠΈΡ†ΡŽ Π½Π΅ Π·Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strcreatetable'] = 'Π‘Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†ΡŽ'; + $lang['strtablename'] = 'Π†ΠΌ"я Ρ‚Π°Π±Π»ΠΈΡ†Ρ–'; + $lang['strtableneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ Π²ΠΈΠ·Π½Π°Ρ‡ΠΈΡ‚ΠΈ Ρ–ΠΌ"я Ρ‚Π°Π±Π»ΠΈΡ†Ρ–.'; + $lang['strtableneedsfield'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ Π²ΠΈΠ·Π½Π°Ρ‡ΠΈΡ‚ΠΈ Ρ‰ΠΎΠ½Π°ΠΉΠΌΠ΅Π½ΡˆΠ΅ ΠΎΠ΄Π½Π΅ ΠΏΠΎΠ»Π΅.'; + $lang['strtableneedscols'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ Π²ΠΊΠ°Π·Π°Ρ‚ΠΈ допустимС число Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ–Π².'; + $lang['strtablecreated'] = 'Π’Π°Π±Π»ΠΈΡ†ΡŽ створСно.'; + $lang['strtablecreatedbad'] = 'БтворСння Ρ‚Π°Π±Π»ΠΈΡ†Ρ– ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdroptable'] = 'Π’ΠΈ Π²ΠΏΠ΅Π²Π½Π΅Π½Ρ–, Ρ‰ΠΎ Π±Π°ΠΆΠ°Ρ”Ρ‚Π΅ Π²ΠΈΠ΄Π°Π»ΠΈΡ‚ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†ΡŽ "%s"?'; + $lang['strtabledropped'] = 'Π’Π°Π±Π»ΠΈΡ†ΡŽ Π²ΠΈΠ΄Π°Π»Π΅Π½ΠΎ.'; + $lang['strtabledroppedbad'] = 'ВидалСння Ρ‚Π°Π±Π»ΠΈΡ†Ρ– ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfemptytable'] = 'Π’ΠΈ Π²ΠΏΠ΅Π²Π½Π΅Π½Ρ–, Ρ‰ΠΎ Π±Π°ΠΆΠ°Ρ”Ρ‚Π΅ очистити Ρ‚Π°Π±Π»ΠΈΡ†ΡŽ "%s"?'; + $lang['strtableemptied'] = 'Π’Π°Π±Π»ΠΈΡ†ΡŽ ΠΎΡ‡ΠΈΡ‰Π΅Π½ΠΎ.'; + $lang['strtableemptiedbad'] = 'ΠžΡ‡ΠΈΡ‰Π΅Π½Π½Ρ Ρ‚Π°Π±Π»ΠΈΡ†Ρ– ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strinsertrow'] = 'Π”ΠΎΠ΄Π°Ρ‚ΠΈ запис'; + $lang['strrowinserted'] = 'Запис Π΄ΠΎΠ΄Π°Π½ΠΎ.'; + $lang['strrowinsertedbad'] = 'Додавання запису ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['streditrow'] = 'Π Π΅Π΄Π°Π³ΡƒΠ²Π°Ρ‚ΠΈ запис'; + $lang['strrowupdated'] = 'Запис ΠΎΠ½ΠΎΠ²Π»Π΅Π½ΠΎ.'; + $lang['strrowupdatedbad'] = 'ОновлСння запису ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strdeleterow'] = 'Π’ΠΈΠ΄Π°Π»ΠΈΡ‚ΠΈ запис'; + $lang['strconfdeleterow'] = 'Π’ΠΈ Π²ΠΏΠ΅Π²Π½Π΅Π½Ρ–, Ρ‰ΠΎ Π±Π°ΠΆΠ°Ρ”Ρ‚Π΅ Π²ΠΈΠ΄Π°Π»ΠΈΡ‚ΠΈ запис?'; + $lang['strrowdeleted'] = 'Запис Π²ΠΈΠ΄Π°Π»Π΅Π½ΠΎ.'; + $lang['strrowdeletedbad'] = 'ВидалСння запису ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strsaveandrepeat'] = 'Вставити Ρ– ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΠΈ'; + $lang['strfield'] = 'ПолС'; + $lang['strfields'] = 'Поля'; + $lang['strnumfields'] = 'К-Ρ‚ΡŒ ΠΏΠΎΠ»Ρ–Π²'; + $lang['strfieldneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΠΈ ΠΏΠΎΠ»Π΅'; + $lang['strselectallfields'] = 'Π’ΠΈΠ±Ρ€Π°Ρ‚ΠΈ всі поля'; + $lang['strselectneedscol'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ Π²ΠΊΠ°Π·Π°Ρ‚ΠΈ Ρ‰ΠΎΠ½Π°ΠΉΠΌΠ΅Π½ΡˆΠ΅ ΠΎΠ΄ΠΈΠ½ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚'; + $lang['strselectunary'] = 'Π£Π½Π°Ρ€Π½ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ°Ρ‚ΠΈ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ.'; + $lang['straltercolumn'] = 'Π—ΠΌΡ–Π½ΠΈΡ‚ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚'; + $lang['strcolumnaltered'] = 'Атрибут Π·ΠΌΡ–Π½Π΅Π½ΠΎ.'; + $lang['strcolumnalteredbad'] = 'Π—ΠΌΡ–Π½Ρƒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropcolumn'] = 'Π’ΠΈ Π²ΠΏΠ΅Π²Π½Π΅Π½Ρ–, Ρ‰ΠΎ Π±Π°ΠΆΠ°Ρ”Ρ‚Π΅ Π²ΠΈΠ΄Π°Π»ΠΈΡ‚ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ "%s" Ρ‚Π°Π±Π»ΠΈΡ†Ρ– "%s"?'; + $lang['strcolumndropped'] = 'Атрибут Π²ΠΈΠ΄Π°Π»Π΅Π½ΠΎ.'; + $lang['strcolumndroppedbad'] = 'ВидалСння Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['straddcolumn'] = 'Π”ΠΎΠ΄Π°Ρ‚ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚'; + $lang['strcolumnadded'] = 'Атрибут Π΄ΠΎΠ΄Π°Π½ΠΎ.'; + $lang['strcolumnaddedbad'] = 'Додавання Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strdataonly'] = 'Π’Ρ–Π»ΡŒΠΊΠΈ Π΄Π°Π½Ρ–'; + $lang['strcascade'] = 'Каскадом'; + $lang['strtablealtered'] = 'Π’Π°Π±Π»ΠΈΡ†ΡŽ Π·ΠΌΡ–Π½Π΅Π½ΠΎ.'; + $lang['strtablealteredbad'] = 'Π—ΠΌΡ–Π½Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ– ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strdataonly'] = 'Π›ΠΈΡˆΠ΅ Π΄Π°Π½Ρ–'; + $lang['strstructureonly'] = 'Π›ΠΈΡˆΠ΅ структуру'; + $lang['strstructureanddata'] = 'Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρƒ Ρ– Π΄Π°Π½Ρ–'; + $lang['strtabbed'] = 'Π§Π΅Ρ€Π΅Π· Ρ‚Π°Π±ΡƒΠ»ΡΡ†Ρ–ΡŽ'; + $lang['strauto'] = 'Авто'; + + // Users + $lang['struser'] = 'ΠšΠΎΡ€ΠΈΡΡ‚ΡƒΠ²Π°Ρ‡'; + $lang['strusers'] = 'ΠšΠΎΡ€ΠΈΡΡ‚ΡƒΠ²Π°Ρ‡Ρ–'; + $lang['strusername'] = 'Π†ΠΌ"я користувача'; + $lang['strpassword'] = 'ΠŸΠ°Ρ€ΠΎΠ»ΡŒ'; + $lang['strsuper'] = 'БупСркористувач?'; + $lang['strcreatedb'] = 'Π‘Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΠΈ Π±Π°Π·Ρƒ Π΄Π°Π½ΠΈΡ…?'; + $lang['strexpires'] = 'Π’Π΅Ρ€ΠΌΡ–Π½ Π΄Ρ–Ρ—'; + $lang['strsessiondefaults'] = 'ΠžΠΏΡ†Ρ–Ρ— сСансу Π·Π° замовчуванням'; + $lang['strnousers'] = 'НСмає Ρ‚Π°ΠΊΠΈΡ… користувачів.'; + $lang['struserupdated'] = 'ΠšΠΎΡ€ΠΈΡΡ‚ΡƒΠ²Π°Ρ‡Π° ΠΎΠ½ΠΎΠ²Π»Π΅Π½ΠΎ.'; + $lang['struserupdatedbad'] = 'ОновлСння користувача ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strshowallusers'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΠΈ всіх користувачів'; + $lang['strcreateuser'] = 'Π‘Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΠΈ користувача'; + $lang['struserneedsname'] = 'Π’ΠΈ ΠΏΠΎΠ²ΠΈΠ½Π½Ρ– ввСсти Ρ–ΠΌ"я користувача.'; + $lang['strusercreated'] = 'ΠšΠΎΡ€ΠΈΡΡ‚ΡƒΠ²Π°Ρ‡Π° створСно.'; + $lang['strusercreatedbad'] = 'БтворСння користувача ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropuser'] = 'Π’ΠΈ Π²ΠΏΠ΅Π²Π½Π΅Π½Ρ–, Ρ‰ΠΎ Π±Π°ΠΆΠ°Ρ”Ρ‚Π΅ Π²ΠΈΠ΄Π°Π»ΠΈΡ‚ΠΈ користувача "%s"?'; + $lang['struserdropped'] = 'ΠšΠΎΡ€ΠΈΡΡ‚ΡƒΠ²Π°Ρ‡Π° Π²ΠΈΠ΄Π°Π»Π΅Π½ΠΎ.'; + $lang['struserdroppedbad'] = 'ВидалСння користувача ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['straccount'] = 'ΠžΠ±Π»Ρ–ΠΊΠΎΠ²ΠΈΠΉ запис'; + $lang['strchangepassword'] = 'Π—ΠΌΡ–Π½ΠΈΡ‚ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ'; + $lang['strpasswordchanged'] = 'ΠŸΠ°Ρ€ΠΎΠ»ΡŒ Π·ΠΌΡ–Π½Π΅Π½ΠΎ.'; + $lang['strpasswordchangedbad'] = 'Π—ΠΌΡ–Π½Ρƒ пароля ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strpasswordshort'] = 'ΠŸΠ°Ρ€ΠΎΠ»ΡŒ Π·Π°ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ.'; + $lang['strpasswordconfirm'] = 'ΠŸΠ°Ρ€ΠΎΠ»ΡŒ Π½Π΅ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Π°Ρ” ΠΏΡ–Π΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Π½ΡŽ.'; + + // Groups + $lang['strgroup'] = 'Π“Ρ€ΡƒΠΏΠ°'; + $lang['strgroups'] = 'Π“Ρ€ΡƒΠΏΠΈ'; + $lang['strnogroup'] = 'Π“Ρ€ΡƒΠΏΡƒ Π½Π΅ виявлСно.'; + $lang['strnogroups'] = 'Π–ΠΎΠ΄Π½ΠΎΡ— Π³Ρ€ΡƒΠΏΠΈ Π½Π΅ виявлСно.'; + $lang['strcreategroup'] = 'Π‘Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΠΈ Π³Ρ€ΡƒΠΏΡƒ'; + $lang['strshowallgroups'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΠΈ всі Π³Ρ€ΡƒΠΏΠΈ'; + $lang['strgroupneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ Π²ΠΊΠ°Π·Π°Ρ‚ΠΈ Π½Π°Π·Π²Ρƒ Π³Ρ€ΡƒΠΏΠΈ.'; + $lang['strgroupcreated'] = 'Π“Ρ€ΡƒΠΏΡƒ створСно.'; + $lang['strgroupcreatedbad'] = 'БтворСння Π³Ρ€ΡƒΠΏΠΈ ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropgroup'] = 'Π’ΠΈ Π²ΠΏΠ΅Π²Π½Π΅Π½Π½Ρ–, Ρ‰ΠΎ Π±Π°ΠΆΠ°Ρ”Ρ‚Π΅ Π²ΠΈΠ΄Π°Π»ΠΈΡ‚ΠΈ Π³Ρ€ΡƒΠΏΡƒ "%s"?'; + $lang['strgroupdropped'] = 'Π“Ρ€ΡƒΠΏΡƒ Π²ΠΈΠ΄Π°Π»Π΅Π½ΠΎ.'; + $lang['strgroupdroppedbad'] = 'ВидалСння Π³Ρ€ΡƒΠΏΠΈ ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strmembers'] = 'Учасників'; + $lang['straddmember'] = 'Π”ΠΎΠ΄Π°Ρ‚ΠΈ учасника'; + $lang['strmemberadded'] = 'Учасника Π΄ΠΎΠ΄Π°Π½ΠΎ.'; + $lang['strmemberaddedbad'] = 'Додавання учасника ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strdropmember'] = 'Π’ΠΈΠ΄Π°Π»ΠΈΡ‚ΠΈ учасника'; + $lang['strconfdropmember'] = 'Π’ΠΈ Π²ΠΏΠ΅Π²Π½Π΅Π½Π½Ρ–, Ρ‰ΠΎ Π±Π°ΠΆΠ°Ρ”Ρ‚Π΅ Π²ΠΈΠ΄Π°Π»ΠΈΡ‚ΠΈ учасника "%s" Ρ–Π· Π³Ρ€ΡƒΠΏΠΈ "%s"?'; + $lang['strmemberdropped'] = 'Учасника Π²ΠΈΠ΄Π°Π»Π΅Π½ΠΎ.'; + $lang['strmemberdroppedbad'] = 'ВидалСння учасника ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + + // Privileges + $lang['strprivilege'] = 'ΠŸΡ€ΠΈΠ²Ρ–Π»Π΅ΠΉ'; + $lang['strprivileges'] = 'ΠŸΡ€ΠΈΠ²Ρ–Π»Π΅Ρ—'; + $lang['strnoprivileges'] = 'Об"Ρ”ΠΊΡ‚ Π½Π΅ Π²ΠΎΠ»ΠΎΠ΄Ρ–Ρ” привілСями.'; + $lang['strgrant'] = 'ΠŸΡ–Π΄ΡΠΈΠ»ΠΈΡ‚ΠΈ'; + $lang['strrevoke'] = 'ΠŸΠΎΡΠ»Π°Π±ΠΈΡ‚ΠΈ'; + $lang['strgranted'] = 'ΠŸΡ€ΠΈΠ²Ρ–Π»Π΅Ρ— Π·ΠΌΡ–Π½Π΅Π½ΠΎ.'; + $lang['strgrantfailed'] = 'Π—ΠΌΡ–Π½Ρƒ ΠΏΡ€ΠΈΠ²Ρ–Π»Π΅Ρ—Π² ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strgrantbad'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ Π²ΠΊΠ°Π·Π°Ρ‚ΠΈ Ρ‰ΠΎΠ½Π°ΠΉΠΌΠ΅Π½ΡˆΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ користувача Ρ‡ΠΈ Π³Ρ€ΡƒΠΏΡƒ Ρ– Ρ‰ΠΎΠ½Π°ΠΉΠΌΠ΅Π½ΡˆΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠ²Ρ–Π»Π΅ΠΉ.'; + $lang['stralterprivs'] = 'Π—ΠΌΡ–Π½ΠΈΡ‚ΠΈ ΠΏΡ€ΠΈΠ²Ρ–Π»Π΅Ρ—'; + $lang['strgrantor'] = 'Π”ΠΎΠ½ΠΎΡ€'; + $lang['strasterisk'] = '*'; + + // Databases + $lang['strdatabase'] = 'Π‘Π°Π·Π° Π΄Π°Π½ΠΈΡ…'; + $lang['strdatabases'] = 'Π‘Π°Π·ΠΈ Π΄Π°Π½ΠΈΡ…'; + $lang['strshowalldatabases'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΠΈ всі Π±Π°Π·ΠΈ Π΄Π°Π½ΠΈΡ…'; + $lang['strnodatabase'] = 'Π‘Π°Π·Ρƒ Π΄Π°Π½ΠΈΡ… Π½Π΅ виявлСно.'; + $lang['strnodatabases'] = 'Π–ΠΎΠ΄Π½ΠΎΡ— Π±Π°Π·ΠΈ Π΄Π°Π½ΠΈΡ… Π½Π΅ виявлСно.'; + $lang['strcreatedatabase'] = 'Π‘Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΠΈ Π±Π°Π·Ρƒ Π΄Π°Π½ΠΈΡ…'; + $lang['strdatabasename'] = 'Π†ΠΌ"я Π±Π°Π·ΠΈ Π΄Π°Π½ΠΈΡ…'; + $lang['strdatabaseneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ присвоїти Ρ–ΠΌ"я Π’Π°ΡˆΡ–ΠΉ Π±Π°Π·Ρ– Π΄Π°Π½ΠΈΡ….'; + $lang['strdatabasecreated'] = 'Π‘Π°Π·Ρƒ Π΄Π°Π½ΠΈΡ… створСно.'; + $lang['strdatabasecreatedbad'] = 'БтворСння Π±Π°Π·ΠΈ Π΄Π°Π½ΠΈΡ… ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropdatabase'] = 'Π’ΠΈ Π²ΠΏΠ΅Π²Π½Π΅Π½Π½Ρ–, Ρ‰ΠΎ Π±Π°ΠΆΠ°Ρ”Ρ‚Π΅ Π²ΠΈΠ΄Π°Π»ΠΈΡ‚ΠΈ Π±Π°Π·Ρƒ Π΄Π°Π½ΠΈΡ… "%s"?'; + $lang['strdatabasedropped'] = ' Π‘Π°Π·Ρƒ Π΄Π°Π½ΠΈΡ… Π²ΠΈΠ΄Π°Π»Π΅Π½ΠΎ.'; + $lang['strdatabasedroppedbad'] = 'ВидалСння Π±Π°Π·ΠΈ Π΄Π°Π½ΠΈΡ… ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strentersql'] = 'Π’Π²Π΅Π΄Ρ–Ρ‚ΡŒ SQL-Π·Π°ΠΏΠΈΡ‚:'; + $lang['strsqlexecuted'] = 'SQL-Π·Π°ΠΏΠΈΡ‚ Π²ΠΈΠΊΠΎΠ½Π°Π½ΠΎ.'; + $lang['strvacuumgood'] = 'ΠžΠΏΠ΅Ρ€Π°Ρ†Ρ–ΡŽ ΠΏΠ΅Ρ€Π΅Π±ΡƒΠ΄ΠΎΠ²ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ.'; + $lang['strvacuumbad'] = 'ΠžΠΏΠ΅Ρ€Π°Ρ†Ρ–ΡŽ ΠΏΠ΅Ρ€Π΅Π±ΡƒΠ΄ΠΎΠ²ΠΈ ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['stranalyzegood'] = ' ΠžΠΏΠ΅Ρ€Π°Ρ†Ρ–ΡŽ Π°Π½Π°Π»Ρ–Π·Ρƒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ.'; + $lang['stranalyzebad'] = ' ΠžΠΏΠ΅Ρ€Π°Ρ†Ρ–ΡŽ Π°Π½Π°Π»Ρ–Π·Ρƒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ.'; + $lang['strreindexgood'] = 'ΠŸΠ΅Ρ€Π΅Ρ–Π½Π΄Π΅ΠΊΡΠ°Ρ†Ρ–ΡŽ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ.'; + $lang['strreindexbad'] = 'ΠŸΠ΅Ρ€Π΅Ρ–Π½Π΄Π΅ΠΊΡΠ°Ρ†Ρ–ΡŽ ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strfull'] = 'ΠŸΠΎΠ²Π½Ρ–ΡΡ‚ΡŽ'; + $lang['strfreeze'] = 'Π—Π°ΠΌΠΎΡ€ΠΎΠ·ΠΈΡ‚ΠΈ'; + $lang['strforce'] = 'ΠŸΡ€ΠΈΠΌΡƒΡΠΎΠ²ΠΎ'; + + // Views + $lang['strview'] = 'Показ'; + $lang['strviews'] = 'Покази'; + $lang['strshowallviews'] = 'ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΠΈ всі ΠΏΠΎΠΊΠ°Π·ΠΈ'; + $lang['strnoview'] = 'ΠŸΠΎΠΊΠ°Π·Ρƒ Π½Π΅ виявлСно.'; + $lang['strnoviews'] = 'Π–ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΠΊΠ°Π·Ρƒ Π½Π΅ виявлСно.'; + $lang['strcreateview'] = 'Π‘Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΠΈ ΠΏΠΎΠΊΠ°Π·'; + $lang['strviewname'] = 'Π†ΠΌ"я ΠΏΠΎΠΊΠ°Π·Ρƒ'; + $lang['strviewneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ Π²ΠΊΠ°Π·Π°Ρ‚ΠΈ Ρ–ΠΌ"я ΠΏΠΎΠΊΠ°Π·Ρƒ.'; + $lang['strviewneedsdef'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ Π²ΠΈΠ·Π½Π°Ρ‡ΠΈΡ‚ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΏΠΎΠΊΠ°Π·Ρƒ.'; + $lang['strviewneedsfields'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ Π²ΠΈΠ·Π½Π°Ρ‡ΠΈΡ‚ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ для Π²ΠΈΠ±Ρ–Ρ€ΠΊΠΈ Π² ваш ΠΏΠΎΠΊΠ°Π·.'; + $lang['strviewcreated'] = 'Показ створСно.'; + $lang['strviewcreatedbad'] = 'БтворСння ΠΏΠΎΠΊΠ°Π·Ρƒ ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropview'] = 'Π’ΠΈ Π²ΠΏΠ΅Π²Π½Π΅Π½Ρ–, Ρ‰ΠΎ Π±Π°ΠΆΠ°Ρ”Ρ‚Π΅ Π²ΠΈΠ΄Π°Π»ΠΈΡ‚ΠΈ ΠΏΠΎΠΊΠ°Π· "%s"?'; + $lang['strviewdropped'] = 'Показ Π²ΠΈΠ΄Π°Π»Π΅Π½ΠΎ.'; + $lang['strviewdroppedbad'] = 'ВидалСння ΠΏΠΎΠΊΠ°Π·Ρƒ ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strviewupdated'] = 'Показ ΠΎΠ½ΠΎΠ²Π»Π΅Π½ΠΎ.'; + $lang['strviewupdatedbad'] = 'ОновлСння ΠΏΠΎΠΊΠ°Π·Ρƒ ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strviewlink'] = 'Пов"язані ΠΊΠ»ΡŽΡ‡Ρ–'; + $lang['strviewconditions'] = 'Π”ΠΎΠ΄Π°Ρ‚ΠΊΠΎΠ²Ρ– ΡƒΠΌΠΎΠ²ΠΈ'; + $lang['strcreateviewwiz'] = 'Π‘Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΠΈ ΠΏΠΎΠΊΠ°Π·, ΡΠΊΠΎΡ€ΠΈΡΡ‚Π°Π²ΡˆΠΈΡΡŒ майстром'; + + // Sequences + $lang['strsequence'] = 'ΠŸΠΎΡΠ»Ρ–Π΄ΠΎΠ²Π½Ρ–ΡΡ‚ΡŒ'; + $lang['strsequences'] = ' ΠŸΠΎΡΠ»Ρ–Π΄ΠΎΠ²Π½ΠΎΡΡ‚Ρ–'; + $lang['strshowallsequences'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΠΈ всі послідовності'; + $lang['strnosequence'] = 'ΠŸΠΎΡΠ»Ρ–Π΄ΠΎΠ²Π½Ρ–ΡΡ‚ΡŒ Π½Π΅ виявлСно.'; + $lang['strnosequences'] = 'Π–ΠΎΠ΄Π½ΠΎΡ— послідовності Π½Π΅ виявлСно.'; + $lang['strcreatesequence'] = 'Π‘Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΠΈ ΠΏΠΎΡΠ»Ρ–Π΄ΠΎΠ²Π½Ρ–ΡΡ‚ΡŒ'; + $lang['strlastvalue'] = 'ΠžΡΡ‚Π°Π½Π½Ρ” значСння'; + $lang['strincrementby'] = 'Π—Π±Ρ–Π»ΡŒΡˆΠ΅Π½Π½Ρ Π½Π°'; + $lang['strstartvalue'] = 'ΠŸΠΎΡ‡Π°Ρ‚ΠΊΠΎΠ²Π΅ значСння'; + $lang['strmaxvalue'] = 'Макс. значСння'; + $lang['strminvalue'] = 'ΠœΡ–Π½. значСння'; + $lang['strcachevalue'] = 'Π ΠΎΠ·ΠΌΡ–Ρ€ кСша'; + $lang['strlogcount'] = 'Log Count'; + $lang['striscycled'] = 'Π—Π°Ρ†ΠΈΠΊΠ»ΠΈΡ‚ΠΈ?'; + $lang['strsequenceneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ Π²ΠΊΠ°Π·Π°Ρ‚ΠΈ Ρ–ΠΌ"я послідовності.'; + $lang['strsequencecreated'] = 'ΠŸΠΎΡΠ»Ρ–Π΄ΠΎΠ²Π½Ρ–ΡΡ‚ΡŒ створСно.'; + $lang['strsequencecreatedbad'] = 'БтворСння послідовності ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropsequence'] = 'Π’ΠΈ Π²ΠΏΠ΅Π²Π½Π΅Π½Ρ–, Ρ‰ΠΎ Π±Π°ΠΆΠ°Ρ”Ρ‚Π΅ Π²ΠΈΠ΄Π°Π»ΠΈΡ‚ΠΈ ΠΏΠΎΡΠ»Ρ–Π΄ΠΎΠ²Π½Ρ–ΡΡ‚ΡŒ "%s"?'; + $lang['strsequencedropped'] = 'ΠŸΠΎΡΠ»Ρ–Π΄ΠΎΠ²Π½Ρ–ΡΡ‚ΡŒ Π²ΠΈΠ΄Π°Π»Π΅Π½ΠΎ.'; + $lang['strsequencedroppedbad'] = 'ВидалСння послідовності ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strsequencereset'] = 'ΠŸΠΎΡΠ»Ρ–Π΄ΠΎΠ²Π½Ρ–ΡΡ‚ΡŒ скинуто.'; + $lang['strsequenceresetbad'] = 'БкинСння послідовності ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + + // Indexes + $lang['strindex'] = 'ІндСкс'; + $lang['strindexes'] = 'ІндСкси'; + $lang['strindexname'] = 'Π†ΠΌ"я індСкса'; + $lang['strshowallindexes'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΠΈ всі індСкси'; + $lang['strnoindex'] = 'ІндСкс Π½Π΅ виявлСно.'; + $lang['strnoindexes'] = 'Π–ΠΎΠ΄Π½ΠΎΠ³ΠΎ індСкса Π½Π΅ Π·Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.'; + $lang['strcreateindex'] = 'Π‘Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΠΈ індСкс'; + $lang['strtabname'] = 'Π†ΠΌ"я Ρ‚Π°Π±Π»ΠΈΡ†Ρ–'; + $lang['strcolumnname'] = 'Π†ΠΌ"я Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°'; + $lang['strindexneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ Π²ΠΊΠ°Π·Π°Ρ‚ΠΈ Ρ–ΠΌ"я індСкса'; + $lang['strindexneedscols'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ Π²ΠΊΠ°Π·Π°Ρ‚ΠΈ ΠΌΠΎΠΆΠ»ΠΈΠ²Ρƒ ΠΊΡ–Π»ΡŒΠΊΡ–ΡΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ–Π².'; + $lang['strindexcreated'] = 'ІндСкс створСно.'; + $lang['strindexcreatedbad'] = 'БтворСння індСкса ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropindex'] = 'Π’ΠΈ Π²ΠΏΠ΅Π²Π½Π΅Π½Ρ–, Ρ‰ΠΎ Π±Π°ΠΆΠ°Ρ”Ρ‚Π΅ Π²ΠΈΠ΄Π°Π»ΠΈΡ‚ΠΈ індСкс "%s"?'; + $lang['strindexdropped'] = 'ІндСкс Π²ΠΈΠ΄Π°Π»Π΅Π½ΠΎ.'; + $lang['strindexdroppedbad'] = 'ВидалСння індСкса ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strkeyname'] = 'Π†ΠΌ"я ΠΊΠ»ΡŽΡ‡Π°'; + $lang['struniquekey'] = 'Π£Π½Ρ–ΠΊΠ°Π»ΡŒΠ½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡'; + $lang['strprimarykey'] = 'ΠŸΠ΅Ρ€Π²ΠΈΠ½Π½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡'; + $lang['strindextype'] = 'Π’ΠΈΠ΄ індСкса'; + $lang['strindexname'] = 'Π†ΠΌ"я індСкса'; + $lang['strtablecolumnlist'] = 'Атрибутів Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρ–'; + $lang['strindexcolumnlist'] = 'Атрибутів Π² індСксі'; + $lang['strconfcluster'] = 'Π’ΠΈ Π²ΠΏΠ΅Π²Π½Π΅Π½Ρ–, Ρ‰ΠΎ Π±Π°ΠΆΠ°Ρ”Ρ‚Π΅ кластСризувати "%s"?'; + $lang['strclusteredgood'] = 'ΠšΠ»Π°ΡΡ‚Π΅Ρ€ΠΈΠ·Π°Ρ†Ρ–ΡŽ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ.'; + $lang['strclusteredbad'] = 'ΠšΠ»Π°ΡΡ‚Π΅Ρ€ΠΈΠ·Π°Ρ†Ρ–ΡŽ ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + + // Rules + $lang['strrules'] = 'ΠŸΡ€Π°Π²ΠΈΠ»Π°'; + $lang['strrule'] = 'ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ'; + $lang['strshowallrules'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΠΈ всі ΠΏΡ€Π°Π²ΠΈΠ»Π°'; + $lang['strnorule'] = 'ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ Π½Π΅ виявлСно.'; + $lang['strnorules'] = 'Π–ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π½Π΅ виявлСно.'; + $lang['strcreaterule'] = 'Π‘Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ'; + $lang['strrulename'] = 'Π†ΠΌ"я ΠΏΡ€Π°Π²ΠΈΠ»Π°'; + $lang['strruleneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ Π²ΠΊΠ°Π·Π°Ρ‚ΠΈ Ρ–ΠΌ"я ΠΏΡ€Π°Π²ΠΈΠ»Π°.'; + $lang['strrulecreated'] = 'ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ створСно.'; + $lang['strrulecreatedbad'] = 'БтворСння ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdroprule'] = 'Π’ΠΈ Π²ΠΏΠ΅Π²Π½Π΅Π½Ρ–, Ρ‰ΠΎ Π±Π°ΠΆΠ°Ρ”Ρ‚Π΅ Π²ΠΈΠ΄Π°Π»ΠΈΡ‚ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ "%s" Π· "%s"?'; + $lang['strruledropped'] = 'ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ Π²ΠΈΠ΄Π°Π»Π΅Π½ΠΎ.'; + $lang['strruledroppedbad'] = 'ВидалСння ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + + // Constraints + $lang['strconstraints'] = 'ОбмСТСння'; + $lang['strshowallconstraints'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΠΈ всі обмСТСння'; + $lang['strnoconstraints'] = 'Π–ΠΎΠ΄Π½ΠΎΠ³ΠΎ обмСТСння Π½Π΅ виявлСно.'; + $lang['strcreateconstraint'] = 'Π‘Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΠΈ обмСТСння'; + $lang['strconstraintcreated'] = 'ОбмСТСння створСно.'; + $lang['strconstraintcreatedbad'] = 'БтворСння обмСТСння ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropconstraint'] = 'Π’ΠΈ Π²ΠΏΠ΅Π²Π½Π΅Π½Ρ–, Ρ‰ΠΎ Π±Π°ΠΆΠ°Ρ”Ρ‚Π΅ Π²ΠΈΠ΄Π°Π»ΠΈΡ‚ΠΈ обмСТСння "%s" Π· "%s"?'; + $lang['strconstraintdropped'] = 'ОбмСТСння Π²ΠΈΠ΄Π°Π»Π΅Π½ΠΎ.'; + $lang['strconstraintdroppedbad'] = 'ВидалСння обмСТСння ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['straddcheck'] = 'Π”ΠΎΠ΄Π°Ρ‚ΠΈ ΠΏΠ΅Ρ€Π΅Π²Ρ–Ρ€ΠΊΡƒ'; + $lang['strcheckneedsdefinition'] = 'ОбмСТСння ΠΏΠ΅Ρ€Π΅Π²Ρ–Ρ€ΠΊΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡ” визначСння.'; + $lang['strcheckadded'] = 'ОбмСТСння ΠΏΠ΅Ρ€Π΅Π²Ρ–Ρ€ΠΊΠΈ Π΄ΠΎΠ΄Π°Π½ΠΎ.'; + $lang['strcheckaddedbad'] = 'Додавання обмСТСння ΠΏΠ΅Ρ€Π΅Π²Ρ–Ρ€ΠΊΠΈ ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['straddpk'] = 'Π”ΠΎΠ΄Π°Ρ‚ΠΈ ΠΏΠ΅Ρ€Π²ΠΈΠ½Π½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡'; + $lang['strpkneedscols'] = 'ΠŸΠ΅Ρ€Π²ΠΈΠ½Π½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡ ΠΏΠΎΠ²ΠΈΠ½Π΅Π½ містити хочя Π± ΠΎΠ΄ΠΈΠ½ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚.'; + $lang['strpkadded'] = 'ΠŸΠ΅Ρ€Π²ΠΈΠ½Π½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡ Π΄ΠΎΠ΄Π°Π½ΠΎ.'; + $lang['strpkaddedbad'] = 'Додавання ΠΏΠ΅Ρ€Π²ΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['stradduniq'] = 'Π”ΠΎΠ΄Π°Ρ‚ΠΈ ΡƒΠ½Ρ–ΠΊΠ°Π»ΡŒΠ½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡'; + $lang['struniqneedscols'] = 'Π£Π½Ρ–ΠΊΠ°Π»ΡŒΠ½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡ ΠΏΠΎΠ²ΠΈΠ½Π΅Π½ містити Ρ…ΠΎΡ‡Π° Π± ΠΎΠ΄ΠΈΠ½ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚.'; + $lang['struniqadded'] = 'Π£Π½Ρ–ΠΊΠ°Π»ΡŒΠ½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡ Π΄ΠΎΠ΄Π°Π½ΠΎ.'; + $lang['struniqaddedbad'] = 'Додавання ΡƒΠ½Ρ–ΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['straddfk'] = 'Π”ΠΎΠ΄Π°Ρ‚ΠΈ Π·ΠΎΠ²Π½Ρ–ΡˆΠ½Ρ–ΠΉ ΠΊΠ»ΡŽΡ‡'; + $lang['strfkneedscols'] = 'Π—ΠΎΠ²Π½Ρ–ΡˆΠ½Ρ–ΠΉ ΠΊΠ»ΡŽΡ‡ ΠΏΠΎΠ²ΠΈΠ½Π΅Π½ містити Ρ…ΠΎΡ‡Π° Π± ΠΎΠ΄ΠΈΠ½ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚.'; + $lang['strfkneedstarget'] = 'Π—ΠΎΠ²Π½Ρ–ΡˆΠ½ΡŒΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ– Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ Π²ΠΊΠ°Π·Π°Ρ‚ΠΈ Ρ†Ρ–Π»ΡŒΠΎΠ²Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†ΡŽ.'; + $lang['strfkadded'] = 'Π—ΠΎΠ²Π½Ρ–ΡˆΠ½Ρ–ΠΉ ΠΊΠ»ΡŽΡ‡ Π΄ΠΎΠ΄Π°Π½ΠΎ.'; + $lang['strfkaddedbad'] = 'Додавання Π·ΠΎΠ²Π½Ρ–ΡˆΠ½ΡŒΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strfktarget'] = 'Π¦Ρ–Π»ΡŒΠΎΠ²Π° таблиця'; + $lang['strfkcolumnlist'] = 'Атрибуты Π² ΠΊΠ»ΡŽΡ‡Ρ–'; + $lang['strondelete'] = 'ON DELETE'; + $lang['stronupdate'] = 'ON UPDATE'; + + // Functions + $lang['strfunction'] = 'Ѐункція'; + $lang['strfunctions'] = ' Π€ΡƒΠ½ΠΊΡ†Ρ–Ρ—'; + $lang['strshowallfunctions'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΠΈ всі Ρ„ΡƒΠ½ΠΊΡ†Ρ–Ρ—'; + $lang['strnofunction'] = 'Π€ΡƒΠ½ΠΊΡ†Ρ–ΡŽ Π½Π΅ виявлСно.'; + $lang['strnofunctions'] = 'Π–ΠΎΠ΄Π½ΠΎΡ— Ρ„ΡƒΠ½ΠΊΡ†Ρ–Ρ— Π½Π΅ виявлСно.'; + $lang['strcreatefunction'] = 'Π‘Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†Ρ–ΡŽ'; + $lang['strfunctionname'] = 'Π†ΠΌ"я Ρ„ΡƒΠ½ΠΊΡ†Ρ–Ρ—'; + $lang['strreturns'] = 'Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Ρ‰ΠΎ ΠΏΠΎΠ²Π΅Ρ€Ρ‚Π°Ρ”'; + $lang['strarguments'] = 'АргумСнти'; + $lang['strproglanguage'] = 'Мова програмування'; + $lang['strproglanguage'] = 'Мова'; + $lang['strfunctionneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ Π²ΠΊΠ°Π·Π°Ρ‚ΠΈ Ρ–ΠΌ"я Ρ„ΡƒΠ½ΠΊΡ†Ρ–Ρ—.'; + $lang['strfunctionneedsdef'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ Π²ΠΈΠ·Π½Π°Ρ‡ΠΈΡ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†Ρ–ΡŽ.'; + $lang['strfunctioncreated'] = 'Π€ΡƒΠ½ΠΊΡ†Ρ–ΡŽ створСно.'; + $lang['strfunctioncreatedbad'] = 'БтворСння Ρ„ΡƒΠ½ΠΊΡ†Ρ–Ρ— ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropfunction'] = 'Π’ΠΈ Π²ΠΏΠ΅Π²Π½Π΅Π½Ρ–, Ρ‰ΠΎ Π±Π°ΠΆΠ°Ρ”Ρ‚Π΅ Π²ΠΈΠ΄Π°Π»ΠΈΡ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†Ρ–ΡŽ "%s"?'; + $lang['strfunctiondropped'] = 'Π€ΡƒΠ½ΠΊΡ†Ρ–ΡŽ Π²ΠΈΠ΄Π°Π»Π΅Π½ΠΎ.'; + $lang['strfunctiondroppedbad'] = 'ВидалСння Ρ„ΡƒΠ½ΠΊΡ†Ρ–Ρ— ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strfunctionupdated'] = 'Π€ΡƒΠ½ΠΊΡ†Ρ–ΡŽ ΠΎΠ½ΠΎΠ²Π»Π΅Π½ΠΎ.'; + $lang['strfunctionupdatedbad'] = 'ОновлСння Ρ„ΡƒΠ½ΠΊΡ†Ρ–Ρ— ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + + // Triggers + $lang['strtrigger'] = 'Π’Ρ€Ρ–Π³Π΅Ρ€'; + $lang['strtriggers'] = ' Π’Ρ€Ρ–Π³Π΅Ρ€ΠΈ'; + $lang['strshowalltriggers'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΠΈ всі Ρ‚Ρ€Ρ–Π³Π΅Ρ€ΠΈ'; + $lang['strnotrigger'] = 'Π’Ρ€Ρ–Π³Π΅Ρ€ Π½Π΅ виявлСно.'; + $lang['strnotriggers'] = 'Π–ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚Ρ€Ρ–Π³Π΅Ρ€Π° Π½Π΅ виявлСно.'; + $lang['strcreatetrigger'] = 'Π‘Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΠΈ Ρ‚Ρ€Ρ–Π³Π΅Ρ€'; + $lang['strtriggerneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ Π²ΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ–ΠΌ"я Ρ‚Ρ€Ρ–Π³Π΅Ρ€Π°.'; + $lang['strtriggerneedsfunc'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ Π²ΠΈΠ·Π½Π°Ρ‡ΠΈΡ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†Ρ–ΡŽ Ρ‚Ρ€Ρ–Π³Π΅Ρ€Π°.'; + $lang['strtriggercreated'] = 'Π’Ρ€Ρ–Π³Π΅Ρ€ створСно.'; + $lang['strtriggercreatedbad'] = 'БтворСння Ρ‚Ρ€Ρ–Π³Π΅Ρ€Π° ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdroptrigger'] = 'Π’ΠΈ Π²ΠΏΠ΅Π²Π½Π΅Π½Ρ–, Ρ‰ΠΎ Π±Π°ΠΆΠ°Ρ”Ρ‚Π΅Π΅ Π²ΠΈΠ΄Π°Π»ΠΈΡ‚ΠΈ Ρ‚Ρ€Ρ–Π³Π΅Ρ€ "%s" Π½Π° "%s"?'; + $lang['strtriggerdropped'] = 'Π’Ρ€Ρ–Π³Π΅Ρ€ Π²ΠΈΠ΄Π°Π»Π΅Π½ΠΎ.'; + $lang['strtriggerdroppedbad'] = 'ВидалСння Ρ‚Ρ€Ρ–Π³Π΅Ρ€Π° ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strtriggeraltered'] = 'Π’Ρ€Ρ–Π³Π΅Ρ€ Π·ΠΌΡ–Π½Π΅Π½ΠΎ.'; + $lang['strtriggeralteredbad'] = 'Π—ΠΌΡ–Π½Ρƒ Ρ‚Ρ€Ρ–Π³Π΅Ρ€Π° ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + + // Types + $lang['strtype'] = 'Π’ΠΈΠΏ Π΄Π°Π½ΠΈΡ…'; + $lang['strtypes'] = 'Π’ΠΈΠΏΠΈ Π΄Π°Π½ΠΈΡ…'; + $lang['strshowalltypes'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΠΈ всі Ρ‚ΠΈΠΏΠΈ Π΄Π°Π½ΠΈΡ…'; + $lang['strnotype'] = 'Π’ΠΈΠΏ Π΄Π°Π½ΠΈΡ… Π½Π΅ виявлСно.'; + $lang['strnotypes'] = 'Π–ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½ΠΈΡ… Π½Π΅ виявлСно.'; + $lang['strcreatetype'] = 'Π‘Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΠΈ Ρ‚ΠΈΠΏ Π΄Π°Π½ΠΈΡ…'; + $lang['strtypename'] = 'Π†ΠΌ"я Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½ΠΈΡ…'; + $lang['strinputfn'] = 'Ѐункція Π²Π²ΠΎΠ΄Ρƒ'; + $lang['stroutputfn'] = 'Ѐункція Π²ΠΈΠ²ΠΎΠ΄Ρƒ'; + $lang['strpassbyval'] = 'ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‚ΠΈ Π·Π° значСнням?'; + $lang['stralignment'] = 'Π’ΠΈΡ€Ρ–Π²Π½ΡŽΠ²Π°Π½Π½Ρ'; + $lang['strelement'] = 'Π•Π»Π΅ΠΌΠ΅Π½Ρ‚'; + $lang['strdelimiter'] = 'Π ΠΎΠ·Π΄Ρ–Π»ΡŒΠ½ΠΈΠΊ'; + $lang['strstorage'] = 'ЗбСрігання'; + $lang['strtypeneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ Π²ΠΊΠ°Π·Π°Ρ‚ΠΈ Ρ–ΠΌ"я Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½ΠΈΡ….'; + $lang['strtypeneedslen'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ Π²ΠΊΠ°Π·Π°Ρ‚ΠΈ Ρ€ΠΎΠ·ΠΌΡ–Ρ€ для Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½ΠΈΡ….'; + $lang['strtypecreated'] = 'Π’ΠΈΠΏ Π΄Π°Π½ΠΈΡ… створСно.'; + $lang['strtypecreatedbad'] = 'БтворСння Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½ΠΈΡ… ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdroptype'] = 'Π’ΠΈ Π²ΠΏΠ΅Π²Π½Π΅Π½Ρ–, Ρ‰ΠΎ Π±Π°ΠΆΠ°Ρ”Ρ‚Π΅ Π²ΠΈΠ΄Π°Π»ΠΈΡ‚ΠΈ Ρ‚ΠΈΠΏ Π΄Π°Π½ΠΈΡ… "%s"?'; + $lang['strtypedropped'] = 'Π’ΠΈΠΏ Π΄Π°Π½ΠΈΡ… Π²ΠΈΠ΄Π°Π»Π΅Π½ΠΎ.'; + $lang['strtypedroppedbad'] = 'ВидалСння Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½ΠΈΡ… ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + + // Schemas + $lang['strschema'] = 'Π‘Ρ…Π΅ΠΌΠ°'; + $lang['strschemas'] = 'Π‘Ρ…Π΅ΠΌΠΈ'; + $lang['strshowallschemas'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΠΈ всі схСми'; + $lang['strnoschema'] = 'Π‘Ρ…Π΅ΠΌΡƒ Π½Π΅ виявлСно.'; + $lang['strnoschemas'] = 'Π–ΠΎΠ΄Π½ΠΎΡ— схСми Π½Π΅ виявлСно.'; + $lang['strcreateschema'] = 'Π‘Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΠΈ схСму'; + $lang['strschemaname'] = 'Π†ΠΌ"я схСми'; + $lang['strschemaneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ Π²ΠΊΠ°Π·Π°Ρ‚ΠΈ Ρ–ΠΌ"я схСми.'; + $lang['strschemacreated'] = 'Π‘Ρ…Π΅ΠΌΡƒ створСно.'; + $lang['strschemacreatedbad'] = 'БтворСння схСми ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropschema'] = 'Π’ΠΈ Π²ΠΏΠ΅Π²Π½Π΅Π½Ρ–, Ρ‰ΠΎ Π±Π°ΠΆΠ°Ρ”Ρ‚Π΅ Π²ΠΈΠ΄Π°Π»ΠΈΡ‚ΠΈ схСму "%s"?'; + $lang['strschemadropped'] = 'Π‘Ρ…Π΅ΠΌΡƒ Π²ΠΈΠ΄Π°Π»Π΅Π½ΠΎ.'; + $lang['strschemadroppedbad'] = 'ВидалСння схСми ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strschemaaltered'] = 'Π‘Ρ…Π΅ΠΌΡƒ ΠΎΠ½ΠΎΠ²Π»Π΅Π½ΠΎ.'; + $lang['strschemaalteredbad'] = 'ОновлСння схСми ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + + // Reports + + // Domains + $lang['strdomain'] = 'Π”ΠΎΠΌΠ΅Π½'; + $lang['strdomains'] = 'Π”ΠΎΠΌΠ΅Π½ΠΈ'; + $lang['strshowalldomains'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΠΈ всі Π΄ΠΎΠΌΠ΅Π½ΠΈ'; + $lang['strnodomains'] = 'Π–ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π° Π½Π΅ виявлСно.'; + $lang['strcreatedomain'] = 'Π‘Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΠΈ Π΄ΠΎΠΌΠ΅Π½'; + $lang['strdomaindropped'] = 'Π”ΠΎΠΌΠ΅Π½ Π²ΠΈΠ΄Π°Π»Π΅Π½ΠΎ.'; + $lang['strdomaindroppedbad'] = 'ВидалСння Π΄ΠΎΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropdomain'] = 'Π’ΠΈ Π²ΠΏΠ΅Π²Π½Π΅Π½Ρ–, Ρ‰ΠΎ Π±Π°ΠΆΠ°Ρ”Ρ‚Π΅ Π²ΠΈΠ΄Π°Π»ΠΈΡ‚ΠΈ Π΄ΠΎΠΌΠ΅Π½ "%s"?'; + $lang['strdomainneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ Π²ΠΊΠ°Π·Π°Ρ‚ΠΈ Ρ–ΠΌ"я Π΄ΠΎΠΌΠ΅Π½Π°.'; + $lang['strdomaincreated'] = 'Π”ΠΎΠΌΠ΅Π½ створСно.'; + $lang['strdomaincreatedbad'] = 'БтворСння Π΄ΠΎΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strdomainaltered'] = 'Π”ΠΎΠΌΠ΅Π½ Π·ΠΌΡ–Π½Π΅Π½ΠΎ.'; + $lang['strdomainalteredbad'] = 'Π—ΠΌΡ–Π½Ρƒ Π΄ΠΎΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + + // Operators + $lang['stroperator'] = 'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€'; + $lang['stroperators'] = 'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ'; + $lang['strshowalloperators'] = 'ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΠΈ всі ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ'; + $lang['strnooperator'] = 'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π΅ виявлСно.'; + $lang['strnooperators'] = 'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ–Π² Π½Π΅ виявлСно.'; + $lang['strcreateoperator'] = 'Π‘Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€'; + $lang['strleftarg'] = 'Π’ΠΈΠΏ Π»Ρ–Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°'; + $lang['strrightarg'] = 'Π’ΠΈΠΏ ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°'; + $lang['strcommutator'] = 'ΠŸΠ΅Ρ€Π΅Ρ‚Π²ΠΎΡ€Π΅Π½Π½Ρ'; + $lang['strnegator'] = 'ЗапСрСчСння'; + $lang['strrestrict'] = 'ПослаблСння'; + $lang['strjoin'] = 'Об"єднання'; + $lang['strhashes'] = 'Π₯Π΅ΡˆΡƒΠ²Π°Π½Π½Ρ'; + $lang['strmerges'] = 'Об"єднання'; + $lang['strleftsort'] = 'Бортування Π·Π° Π»Ρ–Π²ΠΈΠΌ'; + $lang['strrightsort'] = 'Бортування Π·Π° ΠΏΡ€Π°Π²ΠΈΠΌ'; + $lang['strlessthan'] = 'МСншС'; + $lang['strgreaterthan'] = 'Π‘Ρ–Π»ΡŒΡˆΠ΅'; + $lang['stroperatorneedsname'] = 'Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ Π²ΠΊΠ°Π·Π°Ρ‚ΠΈ Π½Π°Π·Π²Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°.'; + $lang['stroperatorcreated'] = 'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ створСно'; + $lang['stroperatorcreatedbad'] = 'БтворСння ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + $lang['strconfdropoperator'] = 'Π’ΠΈ Π²ΠΏΠ΅Π²Π½Π΅Π½Ρ–, Ρ‰ΠΎ Π±Π°ΠΆΠ°Ρ”Ρ‚Π΅Π΅ Π²ΠΈΠ΄Π°Π»ΠΈΡ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ "%s"?'; + $lang['stroperatordropped'] = 'ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²ΠΈΠ΄Π°Π»Π΅Π½ΠΎ.'; + $lang['stroperatordroppedbad'] = 'ВидалСння ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Π½ΠΎ.'; + + // Casts + $lang['strcasts'] = 'Π’Π·Ρ–Ρ€Ρ†Ρ–'; + $lang['strnocasts'] = 'Π’Π·Ρ–Ρ€Ρ†Ρ–Π² Π½Π΅ виявлСно.'; + $lang['strsourcetype'] = 'Π’ΠΈΠΏ Π΄ΠΆΠ΅Ρ€Π΅Π»Π°'; + $lang['strtargettype'] = 'Π’ΠΈΠΏ ΠΏΡ€ΠΈΠΉΠΌΠ°Ρ‡Π°'; + $lang['strimplicit'] = 'НСявний'; + $lang['strinassignment'] = 'Π’ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‡Π΅Π½Π½Ρ–'; + $lang['strbinarycompat'] = '(Π΄Π²Ρ–ΠΉΠΊΠΎΠ²ΠΎ сумісний)'; + + // Conversions + $lang['strconversions'] = 'ΠŸΠ΅Ρ€Π΅Ρ‚Π²ΠΎΡ€Π΅Π½Π½Ρ'; + $lang['strnoconversions'] = 'ΠŸΠ΅Ρ€Π΅Ρ‚Π²ΠΎΡ€Π΅Π½ΡŒ Π½Π΅ виявлСно.'; + $lang['strsourceencoding'] = 'ΠšΠΎΠ΄ΡƒΠ²Π°Π½Π½Ρ Π΄ΠΆΠ΅Ρ€Π΅Π»Π°'; + $lang['strtargetencoding'] = 'ΠšΠΎΠ΄ΡƒΠ²Π°Π½Π½Ρ ΠΏΡ€ΠΈΠΉΠΌΠ°Ρ‡Π°'; + + // Languages + $lang['strlanguages'] = 'Мови'; + $lang['strnolanguages'] = 'Мов Π½Π΅ виявлСно.'; + $lang['strtrusted'] = 'ΠŸΠ΅Ρ€Π΅Π²Ρ–Ρ€Π΅Π½ΠΎ'; + + // Info + $lang['strnoinfo'] = 'НСмає доступної Ρ–Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†Ρ–Ρ—.'; + $lang['strreferringtables'] = 'Π’Π°Π±Π»ΠΈΡ†Ρ–, Ρ‰ΠΎ ΠΏΠΎΡΠΈΠ»Π°ΡŽΡ‚ΡŒΡΡ'; + $lang['strparenttables'] = 'Π‘Π°Ρ‚ΡŒΠΊΡ–Π²ΡΡŒΠΊΡ– Ρ‚Π°Π±Π»ΠΈΡ†Ρ–'; + $lang['strchildtables'] = 'Π”ΠΎΡ‡Ρ–Ρ€Π½Ρ– Ρ‚Π°Π±Π»ΠΈΡ†Ρ–'; + + // Aggregates + $lang['straggregates'] = 'АгрСгатні Π²ΠΈΡ€Π°Π·ΠΈ'; + $lang['strnoaggregates'] = 'АгрСгатних Π²ΠΈΡ€Π°Π·Ρ–Π² Π½Π΅ виявлСно.'; + $lang['stralltypes'] = '(Всі Ρ‚ΠΈΠΏΠΈ)'; + + // Operator Classes + $lang['stropclasses'] = 'Класи ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ–Π²'; + $lang['strnoopclasses'] = 'ΠšΠ»Π°ΡΡ–Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ–Π² Π½Π΅ виявлСно.'; + $lang['straccessmethod'] = 'ΠœΠ΅Ρ‚ΠΎΠ΄ доступа'; + + // Stats and performance + $lang['strrowperf'] = 'Показ запису'; + $lang['strioperf'] = 'Показ Π²Π²ΠΎΠ΄Ρƒ/Π²ΠΈΠ²ΠΎΠ΄Ρƒ'; + $lang['stridxrowperf'] = 'Показ індСкса запису'; + $lang['stridxioperf'] = 'Показ індСкса Π²Π²ΠΎΠ΄Ρƒ/Π²ΠΈΠ²ΠΎΠ΄Ρƒ'; + $lang['strpercent'] = '%'; + $lang['strsequential'] = 'ΠŸΠΎΡΠ»Ρ–Π΄ΠΎΠ²Π½ΠΈΠΉ'; + $lang['strscan'] = 'Π‘ΠΊΠ°Π½ΡƒΠ²Π°Ρ‚ΠΈ'; + $lang['strread'] = 'Π§ΠΈΡ‚Π°Ρ‚ΠΈ'; + $lang['strfetch'] = 'Витягнути'; + $lang['strheap'] = 'Бміття'; + $lang['strtoast'] = 'TOAST'; + $lang['strtoastindex'] = 'TOAST індСкс'; + $lang['strcache'] = 'КСш'; + $lang['strdisk'] = 'Диск'; + $lang['strrows2'] = 'Записи'; + + // Miscellaneous + $lang['strtopbar'] = '%s Π²ΠΈΠΊΠΎΠ½ΡƒΡ”Ρ‚ΡŒΡΡ Π½Π° %s:%s -- Π’ΠΈ Π·Π°Ρ€Π΅Ρ”ΡΡ‚Ρ€ΡƒΠ²Π°Π»ΠΈΡΡŒ як "%s"'; + $lang['strtimefmt'] = ' j-m-Y g:i'; + $lang['strhelp'] = 'Π”ΠΎΠΏΠΎΠΌΠΎΠ³Π°'; + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/languages.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/languages.php new file mode 100644 index 00000000..b337638b --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/languages.php @@ -0,0 +1,79 @@ +printTrail('database'); + $misc->printTabs('database','languages'); + $misc->printMsg($msg); + + $languages = $data->getLanguages(); + + $columns = array( + 'language' => array( + 'title' => $lang['strname'], + 'field' => field('lanname'), + ), + 'trusted' => array( + 'title' => $lang['strtrusted'], + 'field' => field('lanpltrusted'), + 'type' => 'yesno', + ), + 'function' => array( + 'title' => $lang['strfunction'], + 'field' => field('lanplcallf'), + ), + ); + + $actions = array(); + + $misc->printTable($languages, $columns, $actions, 'languages-languages', $lang['strnolanguages']); + } + + /** + * Generate XML for the browser tree. + */ + function doTree() { + global $misc, $data; + + $languages = $data->getLanguages(); + + $attrs = array( + 'text' => field('lanname'), + 'icon' => 'Language' + ); + + $misc->printTree($languages, $attrs, 'languages'); + exit; + } + + if ($action == 'tree') doTree(); + + $misc->printHeader($lang['strlanguages']); + $misc->printBody(); + + switch ($action) { + default: + doDefault(); + break; + } + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/adodb-csvlib.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/adodb-csvlib.inc.php new file mode 100644 index 00000000..1c0d0818 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/adodb-csvlib.inc.php @@ -0,0 +1,318 @@ +FieldCount() : 0; + + if ($sql) $sql = urlencode($sql); + // metadata setup + + if ($max <= 0 || $rs->dataProvider == 'empty') { // is insert/update/delete + if (is_object($conn)) { + $sql .= ','.$conn->Affected_Rows(); + $sql .= ','.$conn->Insert_ID(); + } else + $sql .= ',,'; + + $text = "====-1,0,$sql\n"; + return $text; + } + $tt = ($rs->timeCreated) ? $rs->timeCreated : time(); + + ## changed format from ====0 to ====1 + $line = "====1,$tt,$sql\n"; + + if ($rs->databaseType == 'array') { + $rows = $rs->_array; + } else { + $rows = array(); + while (!$rs->EOF) { + $rows[] = $rs->fields; + $rs->MoveNext(); + } + } + + for($i=0; $i < $max; $i++) { + $o = $rs->FetchField($i); + $flds[] = $o; + } + + $savefetch = isset($rs->adodbFetchMode) ? $rs->adodbFetchMode : $rs->fetchMode; + $class = $rs->connection->arrayClass; + $rs2 = new $class(); + $rs2->timeCreated = $rs->timeCreated; # memcache fix + $rs2->sql = $rs->sql; + $rs2->oldProvider = $rs->dataProvider; + $rs2->InitArrayFields($rows,$flds); + $rs2->fetchMode = $savefetch; + return $line.serialize($rs2); + } + + +/** +* Open CSV file and convert it into Data. +* +* @param url file/ftp/http url +* @param err returns the error message +* @param timeout dispose if recordset has been alive for $timeout secs +* +* @return recordset, or false if error occured. If no +* error occurred in sql INSERT/UPDATE/DELETE, +* empty recordset is returned +*/ + function csv2rs($url,&$err,$timeout=0, $rsclass='ADORecordSet_array') + { + $false = false; + $err = false; + $fp = @fopen($url,'rb'); + if (!$fp) { + $err = $url.' file/URL not found'; + return $false; + } + @flock($fp, LOCK_SH); + $arr = array(); + $ttl = 0; + + if ($meta = fgetcsv($fp, 32000, ",")) { + // check if error message + if (strncmp($meta[0],'****',4) === 0) { + $err = trim(substr($meta[0],4,1024)); + fclose($fp); + return $false; + } + // check for meta data + // $meta[0] is -1 means return an empty recordset + // $meta[1] contains a time + + if (strncmp($meta[0], '====',4) === 0) { + + if ($meta[0] == "====-1") { + if (sizeof($meta) < 5) { + $err = "Corrupt first line for format -1"; + fclose($fp); + return $false; + } + fclose($fp); + + if ($timeout > 0) { + $err = " Illegal Timeout $timeout "; + return $false; + } + + $rs = new $rsclass($val=true); + $rs->fields = array(); + $rs->timeCreated = $meta[1]; + $rs->EOF = true; + $rs->_numOfFields = 0; + $rs->sql = urldecode($meta[2]); + $rs->affectedrows = (integer)$meta[3]; + $rs->insertid = $meta[4]; + return $rs; + } + # Under high volume loads, we want only 1 thread/process to _write_file + # so that we don't have 50 processes queueing to write the same data. + # We use probabilistic timeout, ahead of time. + # + # -4 sec before timeout, give processes 1/32 chance of timing out + # -2 sec before timeout, give processes 1/16 chance of timing out + # -1 sec after timeout give processes 1/4 chance of timing out + # +0 sec after timeout, give processes 100% chance of timing out + if (sizeof($meta) > 1) { + if($timeout >0){ + $tdiff = (integer)( $meta[1]+$timeout - time()); + if ($tdiff <= 2) { + switch($tdiff) { + case 4: + case 3: + if ((rand() & 31) == 0) { + fclose($fp); + $err = "Timeout 3"; + return $false; + } + break; + case 2: + if ((rand() & 15) == 0) { + fclose($fp); + $err = "Timeout 2"; + return $false; + } + break; + case 1: + if ((rand() & 3) == 0) { + fclose($fp); + $err = "Timeout 1"; + return $false; + } + break; + default: + fclose($fp); + $err = "Timeout 0"; + return $false; + } // switch + + } // if check flush cache + }// (timeout>0) + $ttl = $meta[1]; + } + //================================================ + // new cache format - use serialize extensively... + if ($meta[0] === '====1') { + // slurp in the data + $MAXSIZE = 128000; + + $text = fread($fp,$MAXSIZE); + if (strlen($text)) { + while ($txt = fread($fp,$MAXSIZE)) { + $text .= $txt; + } + } + fclose($fp); + $rs = unserialize($text); + if (is_object($rs)) $rs->timeCreated = $ttl; + else { + $err = "Unable to unserialize recordset"; + //echo htmlspecialchars($text),' !--END--!

'; + } + return $rs; + } + + $meta = false; + $meta = fgetcsv($fp, 32000, ","); + if (!$meta) { + fclose($fp); + $err = "Unexpected EOF 1"; + return $false; + } + } + + // Get Column definitions + $flds = array(); + foreach($meta as $o) { + $o2 = explode(':',$o); + if (sizeof($o2)!=3) { + $arr[] = $meta; + $flds = false; + break; + } + $fld = new ADOFieldObject(); + $fld->name = urldecode($o2[0]); + $fld->type = $o2[1]; + $fld->max_length = $o2[2]; + $flds[] = $fld; + } + } else { + fclose($fp); + $err = "Recordset had unexpected EOF 2"; + return $false; + } + + // slurp in the data + $MAXSIZE = 128000; + + $text = ''; + while ($txt = fread($fp,$MAXSIZE)) { + $text .= $txt; + } + + fclose($fp); + @$arr = unserialize($text); + //var_dump($arr); + if (!is_array($arr)) { + $err = "Recordset had unexpected EOF (in serialized recordset)"; + if (get_magic_quotes_runtime()) $err .= ". Magic Quotes Runtime should be disabled!"; + return $false; + } + $rs = new $rsclass(); + $rs->timeCreated = $ttl; + $rs->InitArrayFields($arr,$flds); + return $rs; + } + + + /** + * Save a file $filename and its $contents (normally for caching) with file locking + * Returns true if ok, false if fopen/fwrite error, 0 if rename error (eg. file is locked) + */ + function adodb_write_file($filename, $contents,$debug=false) + { + # http://www.php.net/bugs.php?id=9203 Bug that flock fails on Windows + # So to simulate locking, we assume that rename is an atomic operation. + # First we delete $filename, then we create a $tempfile write to it and + # rename to the desired $filename. If the rename works, then we successfully + # modified the file exclusively. + # What a stupid need - having to simulate locking. + # Risks: + # 1. $tempfile name is not unique -- very very low + # 2. unlink($filename) fails -- ok, rename will fail + # 3. adodb reads stale file because unlink fails -- ok, $rs timeout occurs + # 4. another process creates $filename between unlink() and rename() -- ok, rename() fails and cache updated + if (strncmp(PHP_OS,'WIN',3) === 0) { + // skip the decimal place + $mtime = substr(str_replace(' ','_',microtime()),2); + // getmypid() actually returns 0 on Win98 - never mind! + $tmpname = $filename.uniqid($mtime).getmypid(); + if (!($fd = @fopen($tmpname,'w'))) return false; + if (fwrite($fd,$contents)) $ok = true; + else $ok = false; + fclose($fd); + + if ($ok) { + @chmod($tmpname,0644); + // the tricky moment + @unlink($filename); + if (!@rename($tmpname,$filename)) { + unlink($tmpname); + $ok = 0; + } + if (!$ok) { + if ($debug) ADOConnection::outp( " Rename $tmpname ".($ok? 'ok' : 'failed')); + } + } + return $ok; + } + if (!($fd = @fopen($filename, 'a'))) return false; + if (flock($fd, LOCK_EX) && ftruncate($fd, 0)) { + if (fwrite( $fd, $contents )) $ok = true; + else $ok = false; + fclose($fd); + @chmod($filename,0644); + }else { + fclose($fd); + if ($debug)ADOConnection::outp( " Failed acquiring lock for $filename
\n"); + $ok = false; + } + + return $ok; + } +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/adodb-datadict.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/adodb-datadict.inc.php new file mode 100644 index 00000000..69060c5c --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/adodb-datadict.inc.php @@ -0,0 +1,1032 @@ +$str

"; +$a= Lens_ParseArgs($str); +print "
";
+print_r($a);
+print "
"; +} + + +if (!function_exists('ctype_alnum')) { + function ctype_alnum($text) { + return preg_match('/^[a-z0-9]*$/i', $text); + } +} + +//Lens_ParseTest(); + +/** + Parse arguments, treat "text" (text) and 'text' as quotation marks. + To escape, use "" or '' or )) + + Will read in "abc def" sans quotes, as: abc def + Same with 'abc def'. + However if `abc def`, then will read in as `abc def` + + @param endstmtchar Character that indicates end of statement + @param tokenchars Include the following characters in tokens apart from A-Z and 0-9 + @returns 2 dimensional array containing parsed tokens. +*/ +function Lens_ParseArgs($args,$endstmtchar=',',$tokenchars='_.-') +{ + $pos = 0; + $intoken = false; + $stmtno = 0; + $endquote = false; + $tokens = array(); + $tokens[$stmtno] = array(); + $max = strlen($args); + $quoted = false; + $tokarr = array(); + + while ($pos < $max) { + $ch = substr($args,$pos,1); + switch($ch) { + case ' ': + case "\t": + case "\n": + case "\r": + if (!$quoted) { + if ($intoken) { + $intoken = false; + $tokens[$stmtno][] = implode('',$tokarr); + } + break; + } + + $tokarr[] = $ch; + break; + + case '`': + if ($intoken) $tokarr[] = $ch; + case '(': + case ')': + case '"': + case "'": + + if ($intoken) { + if (empty($endquote)) { + $tokens[$stmtno][] = implode('',$tokarr); + if ($ch == '(') $endquote = ')'; + else $endquote = $ch; + $quoted = true; + $intoken = true; + $tokarr = array(); + } else if ($endquote == $ch) { + $ch2 = substr($args,$pos+1,1); + if ($ch2 == $endquote) { + $pos += 1; + $tokarr[] = $ch2; + } else { + $quoted = false; + $intoken = false; + $tokens[$stmtno][] = implode('',$tokarr); + $endquote = ''; + } + } else + $tokarr[] = $ch; + + }else { + + if ($ch == '(') $endquote = ')'; + else $endquote = $ch; + $quoted = true; + $intoken = true; + $tokarr = array(); + if ($ch == '`') $tokarr[] = '`'; + } + break; + + default: + + if (!$intoken) { + if ($ch == $endstmtchar) { + $stmtno += 1; + $tokens[$stmtno] = array(); + break; + } + + $intoken = true; + $quoted = false; + $endquote = false; + $tokarr = array(); + + } + + if ($quoted) $tokarr[] = $ch; + else if (ctype_alnum($ch) || strpos($tokenchars,$ch) !== false) $tokarr[] = $ch; + else { + if ($ch == $endstmtchar) { + $tokens[$stmtno][] = implode('',$tokarr); + $stmtno += 1; + $tokens[$stmtno] = array(); + $intoken = false; + $tokarr = array(); + break; + } + $tokens[$stmtno][] = implode('',$tokarr); + $tokens[$stmtno][] = $ch; + $intoken = false; + } + } + $pos += 1; + } + if ($intoken) $tokens[$stmtno][] = implode('',$tokarr); + + return $tokens; +} + + +class ADODB_DataDict { + var $connection; + var $debug = false; + var $dropTable = 'DROP TABLE %s'; + var $renameTable = 'RENAME TABLE %s TO %s'; + var $dropIndex = 'DROP INDEX %s'; + var $addCol = ' ADD'; + var $alterCol = ' ALTER COLUMN'; + var $dropCol = ' DROP COLUMN'; + var $renameColumn = 'ALTER TABLE %s RENAME COLUMN %s TO %s'; // table, old-column, new-column, column-definitions (not used by default) + var $nameRegex = '\w'; + var $nameRegexBrackets = 'a-zA-Z0-9_\(\)'; + var $schema = false; + var $serverInfo = array(); + var $autoIncrement = false; + var $dataProvider; + var $invalidResizeTypes4 = array('CLOB','BLOB','TEXT','DATE','TIME'); // for changetablesql + var $blobSize = 100; /// any varchar/char field this size or greater is treated as a blob + /// in other words, we use a text area for editting. + + function GetCommentSQL($table,$col) + { + return false; + } + + function SetCommentSQL($table,$col,$cmt) + { + return false; + } + + function MetaTables() + { + if (!$this->connection->IsConnected()) return array(); + return $this->connection->MetaTables(); + } + + function MetaColumns($tab, $upper=true, $schema=false) + { + if (!$this->connection->IsConnected()) return array(); + return $this->connection->MetaColumns($this->TableName($tab), $upper, $schema); + } + + function MetaPrimaryKeys($tab,$owner=false,$intkey=false) + { + if (!$this->connection->IsConnected()) return array(); + return $this->connection->MetaPrimaryKeys($this->TableName($tab), $owner, $intkey); + } + + function MetaIndexes($table, $primary = false, $owner = false) + { + if (!$this->connection->IsConnected()) return array(); + return $this->connection->MetaIndexes($this->TableName($table), $primary, $owner); + } + + function MetaType($t,$len=-1,$fieldobj=false) + { + static $typeMap = array( + 'VARCHAR' => 'C', + 'VARCHAR2' => 'C', + 'CHAR' => 'C', + 'C' => 'C', + 'STRING' => 'C', + 'NCHAR' => 'C', + 'NVARCHAR' => 'C', + 'VARYING' => 'C', + 'BPCHAR' => 'C', + 'CHARACTER' => 'C', + 'INTERVAL' => 'C', # Postgres + 'MACADDR' => 'C', # postgres + 'VAR_STRING' => 'C', # mysql + ## + 'LONGCHAR' => 'X', + 'TEXT' => 'X', + 'NTEXT' => 'X', + 'M' => 'X', + 'X' => 'X', + 'CLOB' => 'X', + 'NCLOB' => 'X', + 'LVARCHAR' => 'X', + ## + 'BLOB' => 'B', + 'IMAGE' => 'B', + 'BINARY' => 'B', + 'VARBINARY' => 'B', + 'LONGBINARY' => 'B', + 'B' => 'B', + ## + 'YEAR' => 'D', // mysql + 'DATE' => 'D', + 'D' => 'D', + ## + 'UNIQUEIDENTIFIER' => 'C', # MS SQL Server + ## + 'TIME' => 'T', + 'TIMESTAMP' => 'T', + 'DATETIME' => 'T', + 'TIMESTAMPTZ' => 'T', + 'SMALLDATETIME' => 'T', + 'T' => 'T', + 'TIMESTAMP WITHOUT TIME ZONE' => 'T', // postgresql + ## + 'BOOL' => 'L', + 'BOOLEAN' => 'L', + 'BIT' => 'L', + 'L' => 'L', + ## + 'COUNTER' => 'R', + 'R' => 'R', + 'SERIAL' => 'R', // ifx + 'INT IDENTITY' => 'R', + ## + 'INT' => 'I', + 'INT2' => 'I', + 'INT4' => 'I', + 'INT8' => 'I', + 'INTEGER' => 'I', + 'INTEGER UNSIGNED' => 'I', + 'SHORT' => 'I', + 'TINYINT' => 'I', + 'SMALLINT' => 'I', + 'I' => 'I', + ## + 'LONG' => 'N', // interbase is numeric, oci8 is blob + 'BIGINT' => 'N', // this is bigger than PHP 32-bit integers + 'DECIMAL' => 'N', + 'DEC' => 'N', + 'REAL' => 'N', + 'DOUBLE' => 'N', + 'DOUBLE PRECISION' => 'N', + 'SMALLFLOAT' => 'N', + 'FLOAT' => 'N', + 'NUMBER' => 'N', + 'NUM' => 'N', + 'NUMERIC' => 'N', + 'MONEY' => 'N', + + ## informix 9.2 + 'SQLINT' => 'I', + 'SQLSERIAL' => 'I', + 'SQLSMINT' => 'I', + 'SQLSMFLOAT' => 'N', + 'SQLFLOAT' => 'N', + 'SQLMONEY' => 'N', + 'SQLDECIMAL' => 'N', + 'SQLDATE' => 'D', + 'SQLVCHAR' => 'C', + 'SQLCHAR' => 'C', + 'SQLDTIME' => 'T', + 'SQLINTERVAL' => 'N', + 'SQLBYTES' => 'B', + 'SQLTEXT' => 'X', + ## informix 10 + "SQLINT8" => 'I8', + "SQLSERIAL8" => 'I8', + "SQLNCHAR" => 'C', + "SQLNVCHAR" => 'C', + "SQLLVARCHAR" => 'X', + "SQLBOOL" => 'L' + ); + + if (!$this->connection->IsConnected()) { + $t = strtoupper($t); + if (isset($typeMap[$t])) return $typeMap[$t]; + return 'N'; + } + return $this->connection->MetaType($t,$len,$fieldobj); + } + + function NameQuote($name = NULL,$allowBrackets=false) + { + if (!is_string($name)) { + return FALSE; + } + + $name = trim($name); + + if ( !is_object($this->connection) ) { + return $name; + } + + $quote = $this->connection->nameQuote; + + // if name is of the form `name`, quote it + if ( preg_match('/^`(.+)`$/', $name, $matches) ) { + return $quote . $matches[1] . $quote; + } + + // if name contains special characters, quote it + $regex = ($allowBrackets) ? $this->nameRegexBrackets : $this->nameRegex; + + if ( !preg_match('/^[' . $regex . ']+$/', $name) ) { + return $quote . $name . $quote; + } + + return $name; + } + + function TableName($name) + { + if ( $this->schema ) { + return $this->NameQuote($this->schema) .'.'. $this->NameQuote($name); + } + return $this->NameQuote($name); + } + + // Executes the sql array returned by GetTableSQL and GetIndexSQL + function ExecuteSQLArray($sql, $continueOnError = true) + { + $rez = 2; + $conn = $this->connection; + $saved = $conn->debug; + foreach($sql as $line) { + + if ($this->debug) $conn->debug = true; + $ok = $conn->Execute($line); + $conn->debug = $saved; + if (!$ok) { + if ($this->debug) ADOConnection::outp($conn->ErrorMsg()); + if (!$continueOnError) return 0; + $rez = 1; + } + } + return $rez; + } + + /** + Returns the actual type given a character code. + + C: varchar + X: CLOB (character large object) or largest varchar size if CLOB is not supported + C2: Multibyte varchar + X2: Multibyte CLOB + + B: BLOB (binary large object) + + D: Date + T: Date-time + L: Integer field suitable for storing booleans (0 or 1) + I: Integer + F: Floating point number + N: Numeric or decimal number + */ + + function ActualType($meta) + { + return $meta; + } + + function CreateDatabase($dbname,$options=false) + { + $options = $this->_Options($options); + $sql = array(); + + $s = 'CREATE DATABASE ' . $this->NameQuote($dbname); + if (isset($options[$this->upperName])) + $s .= ' '.$options[$this->upperName]; + + $sql[] = $s; + return $sql; + } + + /* + Generates the SQL to create index. Returns an array of sql strings. + */ + function CreateIndexSQL($idxname, $tabname, $flds, $idxoptions = false) + { + if (!is_array($flds)) { + $flds = explode(',',$flds); + } + + foreach($flds as $key => $fld) { + # some indexes can use partial fields, eg. index first 32 chars of "name" with NAME(32) + $flds[$key] = $this->NameQuote($fld,$allowBrackets=true); + } + + return $this->_IndexSQL($this->NameQuote($idxname), $this->TableName($tabname), $flds, $this->_Options($idxoptions)); + } + + function DropIndexSQL ($idxname, $tabname = NULL) + { + return array(sprintf($this->dropIndex, $this->NameQuote($idxname), $this->TableName($tabname))); + } + + function SetSchema($schema) + { + $this->schema = $schema; + } + + function AddColumnSQL($tabname, $flds) + { + $tabname = $this->TableName ($tabname); + $sql = array(); + list($lines,$pkey,$idxs) = $this->_GenFields($flds); + // genfields can return FALSE at times + if ($lines == null) $lines = array(); + $alter = 'ALTER TABLE ' . $tabname . $this->addCol . ' '; + foreach($lines as $v) { + $sql[] = $alter . $v; + } + if (is_array($idxs)) { + foreach($idxs as $idx => $idxdef) { + $sql_idxs = $this->CreateIndexSql($idx, $tabname, $idxdef['cols'], $idxdef['opts']); + $sql = array_merge($sql, $sql_idxs); + } + } + return $sql; + } + + /** + * Change the definition of one column + * + * As some DBM's can't do that on there own, you need to supply the complete defintion of the new table, + * to allow, recreating the table and copying the content over to the new table + * @param string $tabname table-name + * @param string $flds column-name and type for the changed column + * @param string $tableflds='' complete defintion of the new table, eg. for postgres, default '' + * @param array/string $tableoptions='' options for the new table see CreateTableSQL, default '' + * @return array with SQL strings + */ + function AlterColumnSQL($tabname, $flds, $tableflds='',$tableoptions='') + { + $tabname = $this->TableName ($tabname); + $sql = array(); + list($lines,$pkey,$idxs) = $this->_GenFields($flds); + // genfields can return FALSE at times + if ($lines == null) $lines = array(); + $alter = 'ALTER TABLE ' . $tabname . $this->alterCol . ' '; + foreach($lines as $v) { + $sql[] = $alter . $v; + } + if (is_array($idxs)) { + foreach($idxs as $idx => $idxdef) { + $sql_idxs = $this->CreateIndexSql($idx, $tabname, $idxdef['cols'], $idxdef['opts']); + $sql = array_merge($sql, $sql_idxs); + } + + } + return $sql; + } + + /** + * Rename one column + * + * Some DBM's can only do this together with changeing the type of the column (even if that stays the same, eg. mysql) + * @param string $tabname table-name + * @param string $oldcolumn column-name to be renamed + * @param string $newcolumn new column-name + * @param string $flds='' complete column-defintion-string like for AddColumnSQL, only used by mysql atm., default='' + * @return array with SQL strings + */ + function RenameColumnSQL($tabname,$oldcolumn,$newcolumn,$flds='') + { + $tabname = $this->TableName ($tabname); + if ($flds) { + list($lines,$pkey,$idxs) = $this->_GenFields($flds); + // genfields can return FALSE at times + if ($lines == null) $lines = array(); + list(,$first) = each($lines); + list(,$column_def) = preg_split("/[\t ]+/",$first,2); + } + return array(sprintf($this->renameColumn,$tabname,$this->NameQuote($oldcolumn),$this->NameQuote($newcolumn),$column_def)); + } + + /** + * Drop one column + * + * Some DBM's can't do that on there own, you need to supply the complete defintion of the new table, + * to allow, recreating the table and copying the content over to the new table + * @param string $tabname table-name + * @param string $flds column-name and type for the changed column + * @param string $tableflds='' complete defintion of the new table, eg. for postgres, default '' + * @param array/string $tableoptions='' options for the new table see CreateTableSQL, default '' + * @return array with SQL strings + */ + function DropColumnSQL($tabname, $flds, $tableflds='',$tableoptions='') + { + $tabname = $this->TableName ($tabname); + if (!is_array($flds)) $flds = explode(',',$flds); + $sql = array(); + $alter = 'ALTER TABLE ' . $tabname . $this->dropCol . ' '; + foreach($flds as $v) { + $sql[] = $alter . $this->NameQuote($v); + } + return $sql; + } + + function DropTableSQL($tabname) + { + return array (sprintf($this->dropTable, $this->TableName($tabname))); + } + + function RenameTableSQL($tabname,$newname) + { + return array (sprintf($this->renameTable, $this->TableName($tabname),$this->TableName($newname))); + } + + /** + Generate the SQL to create table. Returns an array of sql strings. + */ + function CreateTableSQL($tabname, $flds, $tableoptions=array()) + { + list($lines,$pkey,$idxs) = $this->_GenFields($flds, true); + // genfields can return FALSE at times + if ($lines == null) $lines = array(); + + $taboptions = $this->_Options($tableoptions); + $tabname = $this->TableName ($tabname); + $sql = $this->_TableSQL($tabname,$lines,$pkey,$taboptions); + + // ggiunta - 2006/10/12 - KLUDGE: + // if we are on autoincrement, and table options includes REPLACE, the + // autoincrement sequence has already been dropped on table creation sql, so + // we avoid passing REPLACE to trigger creation code. This prevents + // creating sql that double-drops the sequence + if ($this->autoIncrement && isset($taboptions['REPLACE'])) + unset($taboptions['REPLACE']); + $tsql = $this->_Triggers($tabname,$taboptions); + foreach($tsql as $s) $sql[] = $s; + + if (is_array($idxs)) { + foreach($idxs as $idx => $idxdef) { + $sql_idxs = $this->CreateIndexSql($idx, $tabname, $idxdef['cols'], $idxdef['opts']); + $sql = array_merge($sql, $sql_idxs); + } + } + + return $sql; + } + + + + function _GenFields($flds,$widespacing=false) + { + if (is_string($flds)) { + $padding = ' '; + $txt = $flds.$padding; + $flds = array(); + $flds0 = Lens_ParseArgs($txt,','); + $hasparam = false; + foreach($flds0 as $f0) { + $f1 = array(); + foreach($f0 as $token) { + switch (strtoupper($token)) { + case 'INDEX': + $f1['INDEX'] = ''; + // fall through intentionally + case 'CONSTRAINT': + case 'DEFAULT': + $hasparam = $token; + break; + default: + if ($hasparam) $f1[$hasparam] = $token; + else $f1[] = $token; + $hasparam = false; + break; + } + } + // 'index' token without a name means single column index: name it after column + if (array_key_exists('INDEX', $f1) && $f1['INDEX'] == '') { + $f1['INDEX'] = isset($f0['NAME']) ? $f0['NAME'] : $f0[0]; + // check if column name used to create an index name was quoted + if (($f1['INDEX'][0] == '"' || $f1['INDEX'][0] == "'" || $f1['INDEX'][0] == "`") && + ($f1['INDEX'][0] == substr($f1['INDEX'], -1))) { + $f1['INDEX'] = $f1['INDEX'][0].'idx_'.substr($f1['INDEX'], 1, -1).$f1['INDEX'][0]; + } + else + $f1['INDEX'] = 'idx_'.$f1['INDEX']; + } + // reset it, so we don't get next field 1st token as INDEX... + $hasparam = false; + + $flds[] = $f1; + + } + } + $this->autoIncrement = false; + $lines = array(); + $pkey = array(); + $idxs = array(); + foreach($flds as $fld) { + $fld = _array_change_key_case($fld); + + $fname = false; + $fdefault = false; + $fautoinc = false; + $ftype = false; + $fsize = false; + $fprec = false; + $fprimary = false; + $fnoquote = false; + $fdefts = false; + $fdefdate = false; + $fconstraint = false; + $fnotnull = false; + $funsigned = false; + $findex = ''; + $funiqueindex = false; + + //----------------- + // Parse attributes + foreach($fld as $attr => $v) { + if ($attr == 2 && is_numeric($v)) $attr = 'SIZE'; + else if (is_numeric($attr) && $attr > 1 && !is_numeric($v)) $attr = strtoupper($v); + + switch($attr) { + case '0': + case 'NAME': $fname = $v; break; + case '1': + case 'TYPE': $ty = $v; $ftype = $this->ActualType(strtoupper($v)); break; + + case 'SIZE': + $dotat = strpos($v,'.'); if ($dotat === false) $dotat = strpos($v,','); + if ($dotat === false) $fsize = $v; + else { + $fsize = substr($v,0,$dotat); + $fprec = substr($v,$dotat+1); + } + break; + case 'UNSIGNED': $funsigned = true; break; + case 'AUTOINCREMENT': + case 'AUTO': $fautoinc = true; $fnotnull = true; break; + case 'KEY': + // a primary key col can be non unique in itself (if key spans many cols...) + case 'PRIMARY': $fprimary = $v; $fnotnull = true; /*$funiqueindex = true;*/ break; + case 'DEF': + case 'DEFAULT': $fdefault = $v; break; + case 'NOTNULL': $fnotnull = $v; break; + case 'NOQUOTE': $fnoquote = $v; break; + case 'DEFDATE': $fdefdate = $v; break; + case 'DEFTIMESTAMP': $fdefts = $v; break; + case 'CONSTRAINT': $fconstraint = $v; break; + // let INDEX keyword create a 'very standard' index on column + case 'INDEX': $findex = $v; break; + case 'UNIQUE': $funiqueindex = true; break; + } //switch + } // foreach $fld + + //-------------------- + // VALIDATE FIELD INFO + if (!strlen($fname)) { + if ($this->debug) ADOConnection::outp("Undefined NAME"); + return false; + } + + $fid = strtoupper(preg_replace('/^`(.+)`$/', '$1', $fname)); + $fname = $this->NameQuote($fname); + + if (!strlen($ftype)) { + if ($this->debug) ADOConnection::outp("Undefined TYPE for field '$fname'"); + return false; + } else { + $ftype = strtoupper($ftype); + } + + $ftype = $this->_GetSize($ftype, $ty, $fsize, $fprec); + + if ($ty == 'X' || $ty == 'X2' || $ty == 'B') $fnotnull = false; // some blob types do not accept nulls + + if ($fprimary) $pkey[] = $fname; + + // some databases do not allow blobs to have defaults + if ($ty == 'X') $fdefault = false; + + // build list of indexes + if ($findex != '') { + if (array_key_exists($findex, $idxs)) { + $idxs[$findex]['cols'][] = ($fname); + if (in_array('UNIQUE', $idxs[$findex]['opts']) != $funiqueindex) { + if ($this->debug) ADOConnection::outp("Index $findex defined once UNIQUE and once not"); + } + if ($funiqueindex && !in_array('UNIQUE', $idxs[$findex]['opts'])) + $idxs[$findex]['opts'][] = 'UNIQUE'; + } + else + { + $idxs[$findex] = array(); + $idxs[$findex]['cols'] = array($fname); + if ($funiqueindex) + $idxs[$findex]['opts'] = array('UNIQUE'); + else + $idxs[$findex]['opts'] = array(); + } + } + + //-------------------- + // CONSTRUCT FIELD SQL + if ($fdefts) { + if (substr($this->connection->databaseType,0,5) == 'mysql') { + $ftype = 'TIMESTAMP'; + } else { + $fdefault = $this->connection->sysTimeStamp; + } + } else if ($fdefdate) { + if (substr($this->connection->databaseType,0,5) == 'mysql') { + $ftype = 'TIMESTAMP'; + } else { + $fdefault = $this->connection->sysDate; + } + } else if ($fdefault !== false && !$fnoquote) { + if ($ty == 'C' or $ty == 'X' or + ( substr($fdefault,0,1) != "'" && !is_numeric($fdefault))) { + + if (($ty == 'D' || $ty == 'T') && strtolower($fdefault) != 'null') { + // convert default date into database-aware code + if ($ty == 'T') + { + $fdefault = $this->connection->DBTimeStamp($fdefault); + } + else + { + $fdefault = $this->connection->DBDate($fdefault); + } + } + else + if (strlen($fdefault) != 1 && substr($fdefault,0,1) == ' ' && substr($fdefault,strlen($fdefault)-1) == ' ') + $fdefault = trim($fdefault); + else if (strtolower($fdefault) != 'null') + $fdefault = $this->connection->qstr($fdefault); + } + } + $suffix = $this->_CreateSuffix($fname,$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint,$funsigned); + + // add index creation + if ($widespacing) $fname = str_pad($fname,24); + + // check for field names appearing twice + if (array_key_exists($fid, $lines)) { + ADOConnection::outp("Field '$fname' defined twice"); + } + + $lines[$fid] = $fname.' '.$ftype.$suffix; + + if ($fautoinc) $this->autoIncrement = true; + } // foreach $flds + + return array($lines,$pkey,$idxs); + } + + /** + GENERATE THE SIZE PART OF THE DATATYPE + $ftype is the actual type + $ty is the type defined originally in the DDL + */ + function _GetSize($ftype, $ty, $fsize, $fprec) + { + if (strlen($fsize) && $ty != 'X' && $ty != 'B' && strpos($ftype,'(') === false) { + $ftype .= "(".$fsize; + if (strlen($fprec)) $ftype .= ",".$fprec; + $ftype .= ')'; + } + return $ftype; + } + + + // return string must begin with space + function _CreateSuffix($fname,&$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint,$funsigned) + { + $suffix = ''; + if (strlen($fdefault)) $suffix .= " DEFAULT $fdefault"; + if ($fnotnull) $suffix .= ' NOT NULL'; + if ($fconstraint) $suffix .= ' '.$fconstraint; + return $suffix; + } + + function _IndexSQL($idxname, $tabname, $flds, $idxoptions) + { + $sql = array(); + + if ( isset($idxoptions['REPLACE']) || isset($idxoptions['DROP']) ) { + $sql[] = sprintf ($this->dropIndex, $idxname); + if ( isset($idxoptions['DROP']) ) + return $sql; + } + + if ( empty ($flds) ) { + return $sql; + } + + $unique = isset($idxoptions['UNIQUE']) ? ' UNIQUE' : ''; + + $s = 'CREATE' . $unique . ' INDEX ' . $idxname . ' ON ' . $tabname . ' '; + + if ( isset($idxoptions[$this->upperName]) ) + $s .= $idxoptions[$this->upperName]; + + if ( is_array($flds) ) + $flds = implode(', ',$flds); + $s .= '(' . $flds . ')'; + $sql[] = $s; + + return $sql; + } + + function _DropAutoIncrement($tabname) + { + return false; + } + + function _TableSQL($tabname,$lines,$pkey,$tableoptions) + { + $sql = array(); + + if (isset($tableoptions['REPLACE']) || isset ($tableoptions['DROP'])) { + $sql[] = sprintf($this->dropTable,$tabname); + if ($this->autoIncrement) { + $sInc = $this->_DropAutoIncrement($tabname); + if ($sInc) $sql[] = $sInc; + } + if ( isset ($tableoptions['DROP']) ) { + return $sql; + } + } + $s = "CREATE TABLE $tabname (\n"; + $s .= implode(",\n", $lines); + if (sizeof($pkey)>0) { + $s .= ",\n PRIMARY KEY ("; + $s .= implode(", ",$pkey).")"; + } + if (isset($tableoptions['CONSTRAINTS'])) + $s .= "\n".$tableoptions['CONSTRAINTS']; + + if (isset($tableoptions[$this->upperName.'_CONSTRAINTS'])) + $s .= "\n".$tableoptions[$this->upperName.'_CONSTRAINTS']; + + $s .= "\n)"; + if (isset($tableoptions[$this->upperName])) $s .= $tableoptions[$this->upperName]; + $sql[] = $s; + + return $sql; + } + + /** + GENERATE TRIGGERS IF NEEDED + used when table has auto-incrementing field that is emulated using triggers + */ + function _Triggers($tabname,$taboptions) + { + return array(); + } + + /** + Sanitize options, so that array elements with no keys are promoted to keys + */ + function _Options($opts) + { + if (!is_array($opts)) return array(); + $newopts = array(); + foreach($opts as $k => $v) { + if (is_numeric($k)) $newopts[strtoupper($v)] = $v; + else $newopts[strtoupper($k)] = $v; + } + return $newopts; + } + + + function _getSizePrec($size) + { + $fsize = false; + $fprec = false; + $dotat = strpos($size,'.'); + if ($dotat === false) $dotat = strpos($size,','); + if ($dotat === false) $fsize = $size; + else { + $fsize = substr($size,0,$dotat); + $fprec = substr($size,$dotat+1); + } + return array($fsize, $fprec); + } + + /** + "Florian Buzin [ easywe ]" + + This function changes/adds new fields to your table. You don't + have to know if the col is new or not. It will check on its own. + */ + function ChangeTableSQL($tablename, $flds, $tableoptions = false, $dropOldFlds=false) + { + global $ADODB_FETCH_MODE; + + $save = $ADODB_FETCH_MODE; + $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC; + if ($this->connection->fetchMode !== false) $savem = $this->connection->SetFetchMode(false); + + // check table exists + $save_handler = $this->connection->raiseErrorFn; + $this->connection->raiseErrorFn = ''; + $cols = $this->MetaColumns($tablename); + $this->connection->raiseErrorFn = $save_handler; + + if (isset($savem)) $this->connection->SetFetchMode($savem); + $ADODB_FETCH_MODE = $save; + + if ( empty($cols)) { + return $this->CreateTableSQL($tablename, $flds, $tableoptions); + } + + if (is_array($flds)) { + // Cycle through the update fields, comparing + // existing fields to fields to update. + // if the Metatype and size is exactly the + // same, ignore - by Mark Newham + $holdflds = array(); + foreach($flds as $k=>$v) { + if ( isset($cols[$k]) && is_object($cols[$k]) ) { + // If already not allowing nulls, then don't change + $obj = $cols[$k]; + if (isset($obj->not_null) && $obj->not_null) + $v = str_replace('NOT NULL','',$v); + if (isset($obj->auto_increment) && $obj->auto_increment && empty($v['AUTOINCREMENT'])) + $v = str_replace('AUTOINCREMENT','',$v); + + $c = $cols[$k]; + $ml = $c->max_length; + $mt = $this->MetaType($c->type,$ml); + + if (isset($c->scale)) $sc = $c->scale; + else $sc = 99; // always force change if scale not known. + + if ($sc == -1) $sc = false; + list($fsize, $fprec) = $this->_getSizePrec($v['SIZE']); + + if ($ml == -1) $ml = ''; + if ($mt == 'X') $ml = $v['SIZE']; + if (($mt != $v['TYPE']) || ($ml != $fsize || $sc != $fprec) || (isset($v['AUTOINCREMENT']) && $v['AUTOINCREMENT'] != $obj->auto_increment)) { + $holdflds[$k] = $v; + } + } else { + $holdflds[$k] = $v; + } + } + $flds = $holdflds; + } + + + // already exists, alter table instead + list($lines,$pkey,$idxs) = $this->_GenFields($flds); + // genfields can return FALSE at times + if ($lines == null) $lines = array(); + $alter = 'ALTER TABLE ' . $this->TableName($tablename); + $sql = array(); + + foreach ( $lines as $id => $v ) { + if ( isset($cols[$id]) && is_object($cols[$id]) ) { + + $flds = Lens_ParseArgs($v,','); + + // We are trying to change the size of the field, if not allowed, simply ignore the request. + // $flds[1] holds the type, $flds[2] holds the size -postnuke addition + if ($flds && in_array(strtoupper(substr($flds[0][1],0,4)),$this->invalidResizeTypes4) + && (isset($flds[0][2]) && is_numeric($flds[0][2]))) { + if ($this->debug) ADOConnection::outp(sprintf("

%s cannot be changed to %s currently

", $flds[0][0], $flds[0][1])); + #echo "

$this->alterCol cannot be changed to $flds currently

"; + continue; + } + $sql[] = $alter . $this->alterCol . ' ' . $v; + } else { + $sql[] = $alter . $this->addCol . ' ' . $v; + } + } + + if ($dropOldFlds) { + foreach ( $cols as $id => $v ) + if ( !isset($lines[$id]) ) + $sql[] = $alter . $this->dropCol . ' ' . $v->name; + } + return $sql; + } +} // class +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/adodb-error.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/adodb-error.inc.php new file mode 100644 index 00000000..6ec614d2 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/adodb-error.inc.php @@ -0,0 +1,258 @@ + DB_ERROR_NOSUCHTABLE, + '/Relation [\"\'].*[\"\'] already exists|Cannot insert a duplicate key into (a )?unique index.*/i' => DB_ERROR_ALREADY_EXISTS, + '/divide by zero$/i' => DB_ERROR_DIVZERO, + '/pg_atoi: error in .*: can\'t parse /i' => DB_ERROR_INVALID_NUMBER, + '/ttribute [\"\'].*[\"\'] not found|Relation [\"\'].*[\"\'] does not have attribute [\"\'].*[\"\']/i' => DB_ERROR_NOSUCHFIELD, + '/parser: parse error at or near \"/i' => DB_ERROR_SYNTAX, + '/referential integrity violation/i' => DB_ERROR_CONSTRAINT, + '/Relation [\"\'].*[\"\'] already exists|Cannot insert a duplicate key into (a )?unique index.*|duplicate key.*violates unique constraint/i' + => DB_ERROR_ALREADY_EXISTS + ); + reset($error_regexps); + while (list($regexp,$code) = each($error_regexps)) { + if (preg_match($regexp, $errormsg)) { + return $code; + } + } + // Fall back to DB_ERROR if there was no mapping. + return DB_ERROR; +} + +function adodb_error_odbc() +{ +static $MAP = array( + '01004' => DB_ERROR_TRUNCATED, + '07001' => DB_ERROR_MISMATCH, + '21S01' => DB_ERROR_MISMATCH, + '21S02' => DB_ERROR_MISMATCH, + '22003' => DB_ERROR_INVALID_NUMBER, + '22008' => DB_ERROR_INVALID_DATE, + '22012' => DB_ERROR_DIVZERO, + '23000' => DB_ERROR_CONSTRAINT, + '24000' => DB_ERROR_INVALID, + '34000' => DB_ERROR_INVALID, + '37000' => DB_ERROR_SYNTAX, + '42000' => DB_ERROR_SYNTAX, + 'IM001' => DB_ERROR_UNSUPPORTED, + 'S0000' => DB_ERROR_NOSUCHTABLE, + 'S0001' => DB_ERROR_NOT_FOUND, + 'S0002' => DB_ERROR_NOSUCHTABLE, + 'S0011' => DB_ERROR_ALREADY_EXISTS, + 'S0012' => DB_ERROR_NOT_FOUND, + 'S0021' => DB_ERROR_ALREADY_EXISTS, + 'S0022' => DB_ERROR_NOT_FOUND, + 'S1000' => DB_ERROR_NOSUCHTABLE, + 'S1009' => DB_ERROR_INVALID, + 'S1090' => DB_ERROR_INVALID, + 'S1C00' => DB_ERROR_NOT_CAPABLE + ); + return $MAP; +} + +function adodb_error_ibase() +{ +static $MAP = array( + -104 => DB_ERROR_SYNTAX, + -150 => DB_ERROR_ACCESS_VIOLATION, + -151 => DB_ERROR_ACCESS_VIOLATION, + -155 => DB_ERROR_NOSUCHTABLE, + -157 => DB_ERROR_NOSUCHFIELD, + -158 => DB_ERROR_VALUE_COUNT_ON_ROW, + -170 => DB_ERROR_MISMATCH, + -171 => DB_ERROR_MISMATCH, + -172 => DB_ERROR_INVALID, + -204 => DB_ERROR_INVALID, + -205 => DB_ERROR_NOSUCHFIELD, + -206 => DB_ERROR_NOSUCHFIELD, + -208 => DB_ERROR_INVALID, + -219 => DB_ERROR_NOSUCHTABLE, + -297 => DB_ERROR_CONSTRAINT, + -530 => DB_ERROR_CONSTRAINT, + -803 => DB_ERROR_CONSTRAINT, + -551 => DB_ERROR_ACCESS_VIOLATION, + -552 => DB_ERROR_ACCESS_VIOLATION, + -922 => DB_ERROR_NOSUCHDB, + -923 => DB_ERROR_CONNECT_FAILED, + -924 => DB_ERROR_CONNECT_FAILED + ); + + return $MAP; +} + +function adodb_error_ifx() +{ +static $MAP = array( + '-201' => DB_ERROR_SYNTAX, + '-206' => DB_ERROR_NOSUCHTABLE, + '-217' => DB_ERROR_NOSUCHFIELD, + '-329' => DB_ERROR_NODBSELECTED, + '-1204' => DB_ERROR_INVALID_DATE, + '-1205' => DB_ERROR_INVALID_DATE, + '-1206' => DB_ERROR_INVALID_DATE, + '-1209' => DB_ERROR_INVALID_DATE, + '-1210' => DB_ERROR_INVALID_DATE, + '-1212' => DB_ERROR_INVALID_DATE + ); + + return $MAP; +} + +function adodb_error_oci8() +{ +static $MAP = array( + 1 => DB_ERROR_ALREADY_EXISTS, + 900 => DB_ERROR_SYNTAX, + 904 => DB_ERROR_NOSUCHFIELD, + 923 => DB_ERROR_SYNTAX, + 942 => DB_ERROR_NOSUCHTABLE, + 955 => DB_ERROR_ALREADY_EXISTS, + 1476 => DB_ERROR_DIVZERO, + 1722 => DB_ERROR_INVALID_NUMBER, + 2289 => DB_ERROR_NOSUCHTABLE, + 2291 => DB_ERROR_CONSTRAINT, + 2449 => DB_ERROR_CONSTRAINT + ); + + return $MAP; +} + +function adodb_error_mssql() +{ +static $MAP = array( + 208 => DB_ERROR_NOSUCHTABLE, + 2601 => DB_ERROR_ALREADY_EXISTS + ); + + return $MAP; +} + +function adodb_error_sqlite() +{ +static $MAP = array( + 1 => DB_ERROR_SYNTAX + ); + + return $MAP; +} + +function adodb_error_mysql() +{ +static $MAP = array( + 1004 => DB_ERROR_CANNOT_CREATE, + 1005 => DB_ERROR_CANNOT_CREATE, + 1006 => DB_ERROR_CANNOT_CREATE, + 1007 => DB_ERROR_ALREADY_EXISTS, + 1008 => DB_ERROR_CANNOT_DROP, + 1045 => DB_ERROR_ACCESS_VIOLATION, + 1046 => DB_ERROR_NODBSELECTED, + 1049 => DB_ERROR_NOSUCHDB, + 1050 => DB_ERROR_ALREADY_EXISTS, + 1051 => DB_ERROR_NOSUCHTABLE, + 1054 => DB_ERROR_NOSUCHFIELD, + 1062 => DB_ERROR_ALREADY_EXISTS, + 1064 => DB_ERROR_SYNTAX, + 1100 => DB_ERROR_NOT_LOCKED, + 1136 => DB_ERROR_VALUE_COUNT_ON_ROW, + 1146 => DB_ERROR_NOSUCHTABLE, + 1048 => DB_ERROR_CONSTRAINT, + 2002 => DB_ERROR_CONNECT_FAILED, + 2005 => DB_ERROR_CONNECT_FAILED + ); + + return $MAP; +} +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/adodb-iterator.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/adodb-iterator.inc.php new file mode 100644 index 00000000..e8b5e57b --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/adodb-iterator.inc.php @@ -0,0 +1,30 @@ +Execute("select * from adoxyz"); + foreach($rs as $k => $v) { + echo $k; print_r($v); echo "
"; + } + + + Iterator code based on http://cvs.php.net/cvs.php/php-src/ext/spl/examples/cachingiterator.inc?login=2 + + + Moved to adodb.inc.php to improve performance. + */ + + + + + +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/adodb-lib.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/adodb-lib.inc.php new file mode 100644 index 00000000..6b2e8910 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/adodb-lib.inc.php @@ -0,0 +1,1197 @@ + sizeof($array)) $max = sizeof($array); + else $max = $probe; + + + for ($j=0;$j < $max; $j++) { + $row = $array[$j]; + if (!$row) break; + $i = -1; + foreach($row as $v) { + $i += 1; + + if (isset($types[$i]) && $types[$i]=='C') continue; + + //print " ($i ".$types[$i]. "$v) "; + $v = trim($v); + + if (!preg_match('/^[+-]{0,1}[0-9\.]+$/',$v)) { + $types[$i] = 'C'; // once C, always C + + continue; + } + if ($j == 0) { + // If empty string, we presume is character + // test for integer for 1st row only + // after that it is up to testing other rows to prove + // that it is not an integer + if (strlen($v) == 0) $types[$i] = 'C'; + if (strpos($v,'.') !== false) $types[$i] = 'N'; + else $types[$i] = 'I'; + continue; + } + + if (strpos($v,'.') !== false) $types[$i] = 'N'; + + } + } + +} + +function adodb_transpose(&$arr, &$newarr, &$hdr, &$fobjs) +{ + $oldX = sizeof(reset($arr)); + $oldY = sizeof($arr); + + if ($hdr) { + $startx = 1; + $hdr = array('Fields'); + for ($y = 0; $y < $oldY; $y++) { + $hdr[] = $arr[$y][0]; + } + } else + $startx = 0; + + for ($x = $startx; $x < $oldX; $x++) { + if ($fobjs) { + $o = $fobjs[$x]; + $newarr[] = array($o->name); + } else + $newarr[] = array(); + + for ($y = 0; $y < $oldY; $y++) { + $newarr[$x-$startx][] = $arr[$y][$x]; + } + } +} + +// Force key to upper. +// See also http://www.php.net/manual/en/function.array-change-key-case.php +function _array_change_key_case($an_array) +{ + if (is_array($an_array)) { + $new_array = array(); + foreach($an_array as $key=>$value) + $new_array[strtoupper($key)] = $value; + + return $new_array; + } + + return $an_array; +} + +function _adodb_replace(&$zthis, $table, $fieldArray, $keyCol, $autoQuote, $has_autoinc) +{ + if (count($fieldArray) == 0) return 0; + $first = true; + $uSet = ''; + + if (!is_array($keyCol)) { + $keyCol = array($keyCol); + } + foreach($fieldArray as $k => $v) { + if ($v === null) { + $v = 'NULL'; + $fieldArray[$k] = $v; + } else if ($autoQuote && /*!is_numeric($v) /*and strncmp($v,"'",1) !== 0 -- sql injection risk*/ strcasecmp($v,$zthis->null2null)!=0) { + $v = $zthis->qstr($v); + $fieldArray[$k] = $v; + } + if (in_array($k,$keyCol)) continue; // skip UPDATE if is key + + if ($first) { + $first = false; + $uSet = "$k=$v"; + } else + $uSet .= ",$k=$v"; + } + + $where = false; + foreach ($keyCol as $v) { + if (isset($fieldArray[$v])) { + if ($where) $where .= ' and '.$v.'='.$fieldArray[$v]; + else $where = $v.'='.$fieldArray[$v]; + } + } + + if ($uSet && $where) { + $update = "UPDATE $table SET $uSet WHERE $where"; + + $rs = $zthis->Execute($update); + + + if ($rs) { + if ($zthis->poorAffectedRows) { + /* + The Select count(*) wipes out any errors that the update would have returned. + http://phplens.com/lens/lensforum/msgs.php?id=5696 + */ + if ($zthis->ErrorNo()<>0) return 0; + + # affected_rows == 0 if update field values identical to old values + # for mysql - which is silly. + + $cnt = $zthis->GetOne("select count(*) from $table where $where"); + if ($cnt > 0) return 1; // record already exists + } else { + if (($zthis->Affected_Rows()>0)) return 1; + } + } else + return 0; + } + + // print "

Error=".$this->ErrorNo().'

'; + $first = true; + foreach($fieldArray as $k => $v) { + if ($has_autoinc && in_array($k,$keyCol)) continue; // skip autoinc col + + if ($first) { + $first = false; + $iCols = "$k"; + $iVals = "$v"; + } else { + $iCols .= ",$k"; + $iVals .= ",$v"; + } + } + $insert = "INSERT INTO $table ($iCols) VALUES ($iVals)"; + $rs = $zthis->Execute($insert); + return ($rs) ? 2 : 0; +} + +// Requires $ADODB_FETCH_MODE = ADODB_FETCH_NUM +function _adodb_getmenu(&$zthis, $name,$defstr='',$blank1stItem=true,$multiple=false, + $size=0, $selectAttr='',$compareFields0=true) +{ + $hasvalue = false; + + if ($multiple or is_array($defstr)) { + if ($size==0) $size=5; + $attr = ' multiple size="'.$size.'"'; + if (!strpos($name,'[]')) $name .= '[]'; + } else if ($size) $attr = ' size="'.$size.'"'; + else $attr =''; + + $s = '\n"; +} + +// Requires $ADODB_FETCH_MODE = ADODB_FETCH_NUM +function _adodb_getmenu_gp(&$zthis, $name,$defstr='',$blank1stItem=true,$multiple=false, + $size=0, $selectAttr='',$compareFields0=true) +{ + $hasvalue = false; + + if ($multiple or is_array($defstr)) { + if ($size==0) $size=5; + $attr = ' multiple size="'.$size.'"'; + if (!strpos($name,'[]')) $name .= '[]'; + } else if ($size) $attr = ' size="'.$size.'"'; + else $attr =''; + + $s = '\n"; +} + + +/* + Count the number of records this sql statement will return by using + query rewriting heuristics... + + Does not work with UNIONs, except with postgresql and oracle. + + Usage: + + $conn->Connect(...); + $cnt = _adodb_getcount($conn, $sql); + +*/ +function _adodb_getcount(&$zthis, $sql,$inputarr=false,$secs2cache=0) +{ + $qryRecs = 0; + + if (!empty($zthis->_nestedSQL) || preg_match("/^\s*SELECT\s+DISTINCT/is", $sql) || + preg_match('/\s+GROUP\s+BY\s+/is',$sql) || + preg_match('/\s+UNION\s+/is',$sql)) { + + $rewritesql = adodb_strip_order_by($sql); + + // ok, has SELECT DISTINCT or GROUP BY so see if we can use a table alias + // but this is only supported by oracle and postgresql... + if ($zthis->dataProvider == 'oci8') { + // Allow Oracle hints to be used for query optimization, Chris Wrye + if (preg_match('#/\\*+.*?\\*\\/#', $sql, $hint)) { + $rewritesql = "SELECT ".$hint[0]." COUNT(*) FROM (".$rewritesql.")"; + } else + $rewritesql = "SELECT COUNT(*) FROM (".$rewritesql.")"; + + } else if (strncmp($zthis->databaseType,'postgres',8) == 0 || strncmp($zthis->databaseType,'mysql',5) == 0) { + $rewritesql = "SELECT COUNT(*) FROM ($rewritesql) _ADODB_ALIAS_"; + } else { + $rewritesql = "SELECT COUNT(*) FROM ($rewritesql)"; + } + } else { + // now replace SELECT ... FROM with SELECT COUNT(*) FROM + $rewritesql = preg_replace( + '/^\s*SELECT\s.*\s+FROM\s/Uis','SELECT COUNT(*) FROM ',$sql); + // fix by alexander zhukov, alex#unipack.ru, because count(*) and 'order by' fails + // with mssql, access and postgresql. Also a good speedup optimization - skips sorting! + // also see http://phplens.com/lens/lensforum/msgs.php?id=12752 + $rewritesql = adodb_strip_order_by($rewritesql); + } + + if (isset($rewritesql) && $rewritesql != $sql) { + if (preg_match('/\sLIMIT\s+[0-9]+/i',$sql,$limitarr)) $rewritesql .= $limitarr[0]; + + if ($secs2cache) { + // we only use half the time of secs2cache because the count can quickly + // become inaccurate if new records are added + $qryRecs = $zthis->CacheGetOne($secs2cache/2,$rewritesql,$inputarr); + + } else { + $qryRecs = $zthis->GetOne($rewritesql,$inputarr); + } + if ($qryRecs !== false) return $qryRecs; + } + //-------------------------------------------- + // query rewrite failed - so try slower way... + + + // strip off unneeded ORDER BY if no UNION + if (preg_match('/\s*UNION\s*/is', $sql)) $rewritesql = $sql; + else $rewritesql = $rewritesql = adodb_strip_order_by($sql); + + if (preg_match('/\sLIMIT\s+[0-9]+/i',$sql,$limitarr)) $rewritesql .= $limitarr[0]; + + if ($secs2cache) { + $rstest = $zthis->CacheExecute($secs2cache,$rewritesql,$inputarr); + if (!$rstest) $rstest = $zthis->CacheExecute($secs2cache,$sql,$inputarr); + } else { + $rstest = $zthis->Execute($rewritesql,$inputarr); + if (!$rstest) $rstest = $zthis->Execute($sql,$inputarr); + } + if ($rstest) { + $qryRecs = $rstest->RecordCount(); + if ($qryRecs == -1) { + global $ADODB_EXTENSION; + // some databases will return -1 on MoveLast() - change to MoveNext() + if ($ADODB_EXTENSION) { + while(!$rstest->EOF) { + adodb_movenext($rstest); + } + } else { + while(!$rstest->EOF) { + $rstest->MoveNext(); + } + } + $qryRecs = $rstest->_currentRow; + } + $rstest->Close(); + if ($qryRecs == -1) return 0; + } + return $qryRecs; +} + +/* + Code originally from "Cornel G" + + This code might not work with SQL that has UNION in it + + Also if you are using CachePageExecute(), there is a strong possibility that + data will get out of synch. use CachePageExecute() only with tables that + rarely change. +*/ +function _adodb_pageexecute_all_rows(&$zthis, $sql, $nrows, $page, + $inputarr=false, $secs2cache=0) +{ + $atfirstpage = false; + $atlastpage = false; + $lastpageno=1; + + // If an invalid nrows is supplied, + // we assume a default value of 10 rows per page + if (!isset($nrows) || $nrows <= 0) $nrows = 10; + + $qryRecs = false; //count records for no offset + + $qryRecs = _adodb_getcount($zthis,$sql,$inputarr,$secs2cache); + $lastpageno = (int) ceil($qryRecs / $nrows); + $zthis->_maxRecordCount = $qryRecs; + + + + // ***** Here we check whether $page is the last page or + // whether we are trying to retrieve + // a page number greater than the last page number. + if ($page >= $lastpageno) { + $page = $lastpageno; + $atlastpage = true; + } + + // If page number <= 1, then we are at the first page + if (empty($page) || $page <= 1) { + $page = 1; + $atfirstpage = true; + } + + // We get the data we want + $offset = $nrows * ($page-1); + if ($secs2cache > 0) + $rsreturn = $zthis->CacheSelectLimit($secs2cache, $sql, $nrows, $offset, $inputarr); + else + $rsreturn = $zthis->SelectLimit($sql, $nrows, $offset, $inputarr, $secs2cache); + + + // Before returning the RecordSet, we set the pagination properties we need + if ($rsreturn) { + $rsreturn->_maxRecordCount = $qryRecs; + $rsreturn->rowsPerPage = $nrows; + $rsreturn->AbsolutePage($page); + $rsreturn->AtFirstPage($atfirstpage); + $rsreturn->AtLastPage($atlastpage); + $rsreturn->LastPageNo($lastpageno); + } + return $rsreturn; +} + +// Ivαn Oliva version +function _adodb_pageexecute_no_last_page(&$zthis, $sql, $nrows, $page, $inputarr=false, $secs2cache=0) +{ + + $atfirstpage = false; + $atlastpage = false; + + if (!isset($page) || $page <= 1) { // If page number <= 1, then we are at the first page + $page = 1; + $atfirstpage = true; + } + if ($nrows <= 0) $nrows = 10; // If an invalid nrows is supplied, we assume a default value of 10 rows per page + + // ***** Here we check whether $page is the last page or whether we are trying to retrieve a page number greater than + // the last page number. + $pagecounter = $page + 1; + $pagecounteroffset = ($pagecounter * $nrows) - $nrows; + if ($secs2cache>0) $rstest = $zthis->CacheSelectLimit($secs2cache, $sql, $nrows, $pagecounteroffset, $inputarr); + else $rstest = $zthis->SelectLimit($sql, $nrows, $pagecounteroffset, $inputarr, $secs2cache); + if ($rstest) { + while ($rstest && $rstest->EOF && $pagecounter>0) { + $atlastpage = true; + $pagecounter--; + $pagecounteroffset = $nrows * ($pagecounter - 1); + $rstest->Close(); + if ($secs2cache>0) $rstest = $zthis->CacheSelectLimit($secs2cache, $sql, $nrows, $pagecounteroffset, $inputarr); + else $rstest = $zthis->SelectLimit($sql, $nrows, $pagecounteroffset, $inputarr, $secs2cache); + } + if ($rstest) $rstest->Close(); + } + if ($atlastpage) { // If we are at the last page or beyond it, we are going to retrieve it + $page = $pagecounter; + if ($page == 1) $atfirstpage = true; // We have to do this again in case the last page is the same as the first + //... page, that is, the recordset has only 1 page. + } + + // We get the data we want + $offset = $nrows * ($page-1); + if ($secs2cache > 0) $rsreturn = $zthis->CacheSelectLimit($secs2cache, $sql, $nrows, $offset, $inputarr); + else $rsreturn = $zthis->SelectLimit($sql, $nrows, $offset, $inputarr, $secs2cache); + + // Before returning the RecordSet, we set the pagination properties we need + if ($rsreturn) { + $rsreturn->rowsPerPage = $nrows; + $rsreturn->AbsolutePage($page); + $rsreturn->AtFirstPage($atfirstpage); + $rsreturn->AtLastPage($atlastpage); + } + return $rsreturn; +} + +function _adodb_getupdatesql(&$zthis,&$rs, $arrFields,$forceUpdate=false,$magicq=false,$force=2) +{ + global $ADODB_QUOTE_FIELDNAMES; + + if (!$rs) { + printf(ADODB_BAD_RS,'GetUpdateSQL'); + return false; + } + + $fieldUpdatedCount = 0; + $arrFields = _array_change_key_case($arrFields); + + $hasnumeric = isset($rs->fields[0]); + $setFields = ''; + + // Loop through all of the fields in the recordset + for ($i=0, $max=$rs->FieldCount(); $i < $max; $i++) { + // Get the field from the recordset + $field = $rs->FetchField($i); + + // If the recordset field is one + // of the fields passed in then process. + $upperfname = strtoupper($field->name); + if (adodb_key_exists($upperfname,$arrFields,$force)) { + + // If the existing field value in the recordset + // is different from the value passed in then + // go ahead and append the field name and new value to + // the update query. + + if ($hasnumeric) $val = $rs->fields[$i]; + else if (isset($rs->fields[$upperfname])) $val = $rs->fields[$upperfname]; + else if (isset($rs->fields[$field->name])) $val = $rs->fields[$field->name]; + else if (isset($rs->fields[strtolower($upperfname)])) $val = $rs->fields[strtolower($upperfname)]; + else $val = ''; + + + if ($forceUpdate || strcmp($val, $arrFields[$upperfname])) { + // Set the counter for the number of fields that will be updated. + $fieldUpdatedCount++; + + // Based on the datatype of the field + // Format the value properly for the database + $type = $rs->MetaType($field->type); + + + if ($type == 'null') { + $type = 'C'; + } + + if ((strpos($upperfname,' ') !== false) || ($ADODB_QUOTE_FIELDNAMES)) + $fnameq = $zthis->nameQuote.$upperfname.$zthis->nameQuote; + else + $fnameq = $upperfname; + + + // is_null requires php 4.0.4 + //********************************************************// + if (is_null($arrFields[$upperfname]) + || (empty($arrFields[$upperfname]) && strlen($arrFields[$upperfname]) == 0) + || $arrFields[$upperfname] === $zthis->null2null + ) + { + switch ($force) { + + //case 0: + // //Ignore empty values. This is allready handled in "adodb_key_exists" function. + //break; + + case 1: + //Set null + $setFields .= $field->name . " = null, "; + break; + + case 2: + //Set empty + $arrFields[$upperfname] = ""; + $setFields .= _adodb_column_sql($zthis, 'U', $type, $upperfname, $fnameq,$arrFields, $magicq); + break; + default: + case 3: + //Set the value that was given in array, so you can give both null and empty values + if (is_null($arrFields[$upperfname]) || $arrFields[$upperfname] === $zthis->null2null) { + $setFields .= $field->name . " = null, "; + } else { + $setFields .= _adodb_column_sql($zthis, 'U', $type, $upperfname, $fnameq,$arrFields, $magicq); + } + break; + } + //********************************************************// + } else { + //we do this so each driver can customize the sql for + //DB specific column types. + //Oracle needs BLOB types to be handled with a returning clause + //postgres has special needs as well + $setFields .= _adodb_column_sql($zthis, 'U', $type, $upperfname, $fnameq, + $arrFields, $magicq); + } + } + } + } + + // If there were any modified fields then build the rest of the update query. + if ($fieldUpdatedCount > 0 || $forceUpdate) { + // Get the table name from the existing query. + if (!empty($rs->tableName)) $tableName = $rs->tableName; + else { + preg_match("/FROM\s+".ADODB_TABLE_REGEX."/is", $rs->sql, $tableName); + $tableName = $tableName[1]; + } + // Get the full where clause excluding the word "WHERE" from + // the existing query. + preg_match('/\sWHERE\s(.*)/is', $rs->sql, $whereClause); + + $discard = false; + // not a good hack, improvements? + if ($whereClause) { + #var_dump($whereClause); + if (preg_match('/\s(ORDER\s.*)/is', $whereClause[1], $discard)); + else if (preg_match('/\s(LIMIT\s.*)/is', $whereClause[1], $discard)); + else if (preg_match('/\s(FOR UPDATE.*)/is', $whereClause[1], $discard)); + else preg_match('/\s.*(\) WHERE .*)/is', $whereClause[1], $discard); # see http://sourceforge.net/tracker/index.php?func=detail&aid=1379638&group_id=42718&atid=433976 + } else + $whereClause = array(false,false); + + if ($discard) + $whereClause[1] = substr($whereClause[1], 0, strlen($whereClause[1]) - strlen($discard[1])); + + $sql = 'UPDATE '.$tableName.' SET '.substr($setFields, 0, -2); + if (strlen($whereClause[1]) > 0) + $sql .= ' WHERE '.$whereClause[1]; + + return $sql; + + } else { + return false; + } +} + +function adodb_key_exists($key, &$arr,$force=2) +{ + if ($force<=0) { + // the following is the old behaviour where null or empty fields are ignored + return (!empty($arr[$key])) || (isset($arr[$key]) && strlen($arr[$key])>0); + } + + if (isset($arr[$key])) return true; + ## null check below + if (ADODB_PHPVER >= 0x4010) return array_key_exists($key,$arr); + return false; +} + +/** + * There is a special case of this function for the oci8 driver. + * The proper way to handle an insert w/ a blob in oracle requires + * a returning clause with bind variables and a descriptor blob. + * + * + */ +function _adodb_getinsertsql(&$zthis,&$rs,$arrFields,$magicq=false,$force=2) +{ +static $cacheRS = false; +static $cacheSig = 0; +static $cacheCols; + global $ADODB_QUOTE_FIELDNAMES; + + $tableName = ''; + $values = ''; + $fields = ''; + $recordSet = null; + $arrFields = _array_change_key_case($arrFields); + $fieldInsertedCount = 0; + + if (is_string($rs)) { + //ok we have a table name + //try and get the column info ourself. + $tableName = $rs; + + //we need an object for the recordSet + //because we have to call MetaType. + //php can't do a $rsclass::MetaType() + $rsclass = $zthis->rsPrefix.$zthis->databaseType; + $recordSet = new $rsclass(-1,$zthis->fetchMode); + $recordSet->connection = $zthis; + + if (is_string($cacheRS) && $cacheRS == $rs) { + $columns = $cacheCols; + } else { + $columns = $zthis->MetaColumns( $tableName ); + $cacheRS = $tableName; + $cacheCols = $columns; + } + } else if (is_subclass_of($rs, 'adorecordset')) { + if (isset($rs->insertSig) && is_integer($cacheRS) && $cacheRS == $rs->insertSig) { + $columns = $cacheCols; + } else { + for ($i=0, $max=$rs->FieldCount(); $i < $max; $i++) + $columns[] = $rs->FetchField($i); + $cacheRS = $cacheSig; + $cacheCols = $columns; + $rs->insertSig = $cacheSig++; + } + $recordSet = $rs; + + } else { + printf(ADODB_BAD_RS,'GetInsertSQL'); + return false; + } + + // Loop through all of the fields in the recordset + foreach( $columns as $field ) { + $upperfname = strtoupper($field->name); + if (adodb_key_exists($upperfname,$arrFields,$force)) { + $bad = false; + if ((strpos($upperfname,' ') !== false) || ($ADODB_QUOTE_FIELDNAMES)) + $fnameq = $zthis->nameQuote.$upperfname.$zthis->nameQuote; + else + $fnameq = $upperfname; + + $type = $recordSet->MetaType($field->type); + + /********************************************************/ + if (is_null($arrFields[$upperfname]) + || (empty($arrFields[$upperfname]) && strlen($arrFields[$upperfname]) == 0) + || $arrFields[$upperfname] === $zthis->null2null + ) + { + switch ($force) { + + case 0: // we must always set null if missing + $bad = true; + break; + + case 1: + $values .= "null, "; + break; + + case 2: + //Set empty + $arrFields[$upperfname] = ""; + $values .= _adodb_column_sql($zthis, 'I', $type, $upperfname, $fnameq,$arrFields, $magicq); + break; + + default: + case 3: + //Set the value that was given in array, so you can give both null and empty values + if (is_null($arrFields[$upperfname]) || $arrFields[$upperfname] === $zthis->null2null) { + $values .= "null, "; + } else { + $values .= _adodb_column_sql($zthis, 'I', $type, $upperfname, $fnameq, $arrFields, $magicq); + } + break; + } // switch + + /*********************************************************/ + } else { + //we do this so each driver can customize the sql for + //DB specific column types. + //Oracle needs BLOB types to be handled with a returning clause + //postgres has special needs as well + $values .= _adodb_column_sql($zthis, 'I', $type, $upperfname, $fnameq, + $arrFields, $magicq); + } + + if ($bad) continue; + // Set the counter for the number of fields that will be inserted. + $fieldInsertedCount++; + + + // Get the name of the fields to insert + $fields .= $fnameq . ", "; + } + } + + + // If there were any inserted fields then build the rest of the insert query. + if ($fieldInsertedCount <= 0) return false; + + // Get the table name from the existing query. + if (!$tableName) { + if (!empty($rs->tableName)) $tableName = $rs->tableName; + else if (preg_match("/FROM\s+".ADODB_TABLE_REGEX."/is", $rs->sql, $tableName)) + $tableName = $tableName[1]; + else + return false; + } + + // Strip off the comma and space on the end of both the fields + // and their values. + $fields = substr($fields, 0, -2); + $values = substr($values, 0, -2); + + // Append the fields and their values to the insert query. + return 'INSERT INTO '.$tableName.' ( '.$fields.' ) VALUES ( '.$values.' )'; +} + + +/** + * This private method is used to help construct + * the update/sql which is generated by GetInsertSQL and GetUpdateSQL. + * It handles the string construction of 1 column -> sql string based on + * the column type. We want to do 'safe' handling of BLOBs + * + * @param string the type of sql we are trying to create + * 'I' or 'U'. + * @param string column data type from the db::MetaType() method + * @param string the column name + * @param array the column value + * + * @return string + * + */ +function _adodb_column_sql_oci8(&$zthis,$action, $type, $fname, $fnameq, $arrFields, $magicq) +{ + $sql = ''; + + // Based on the datatype of the field + // Format the value properly for the database + switch($type) { + case 'B': + //in order to handle Blobs correctly, we need + //to do some magic for Oracle + + //we need to create a new descriptor to handle + //this properly + if (!empty($zthis->hasReturningInto)) { + if ($action == 'I') { + $sql = 'empty_blob(), '; + } else { + $sql = $fnameq. '=empty_blob(), '; + } + //add the variable to the returning clause array + //so the user can build this later in + //case they want to add more to it + $zthis->_returningArray[$fname] = ':xx'.$fname.'xx'; + } else if (empty($arrFields[$fname])){ + if ($action == 'I') { + $sql = 'empty_blob(), '; + } else { + $sql = $fnameq. '=empty_blob(), '; + } + } else { + //this is to maintain compatibility + //with older adodb versions. + $sql = _adodb_column_sql($zthis, $action, $type, $fname, $fnameq, $arrFields, $magicq,false); + } + break; + + case "X": + //we need to do some more magic here for long variables + //to handle these correctly in oracle. + + //create a safe bind var name + //to avoid conflicts w/ dupes. + if (!empty($zthis->hasReturningInto)) { + if ($action == 'I') { + $sql = ':xx'.$fname.'xx, '; + } else { + $sql = $fnameq.'=:xx'.$fname.'xx, '; + } + //add the variable to the returning clause array + //so the user can build this later in + //case they want to add more to it + $zthis->_returningArray[$fname] = ':xx'.$fname.'xx'; + } else { + //this is to maintain compatibility + //with older adodb versions. + $sql = _adodb_column_sql($zthis, $action, $type, $fname, $fnameq, $arrFields, $magicq,false); + } + break; + + default: + $sql = _adodb_column_sql($zthis, $action, $type, $fname, $fnameq, $arrFields, $magicq,false); + break; + } + + return $sql; +} + +function _adodb_column_sql(&$zthis, $action, $type, $fname, $fnameq, $arrFields, $magicq, $recurse=true) +{ + + if ($recurse) { + switch($zthis->dataProvider) { + case 'postgres': + if ($type == 'L') $type = 'C'; + break; + case 'oci8': + return _adodb_column_sql_oci8($zthis, $action, $type, $fname, $fnameq, $arrFields, $magicq); + + } + } + + switch($type) { + case "C": + case "X": + case 'B': + $val = $zthis->qstr($arrFields[$fname],$magicq); + break; + + case "D": + $val = $zthis->DBDate($arrFields[$fname]); + break; + + case "T": + $val = $zthis->DBTimeStamp($arrFields[$fname]); + break; + + case "N": + $val = $arrFields[$fname]; + if (!is_numeric($val)) $val = str_replace(',', '.', (float)$val); + break; + + case "I": + case "R": + $val = $arrFields[$fname]; + if (!is_numeric($val)) $val = (integer) $val; + break; + + default: + $val = str_replace(array("'"," ","("),"",$arrFields[$fname]); // basic sql injection defence + if (empty($val)) $val = '0'; + break; + } + + if ($action == 'I') return $val . ", "; + + + return $fnameq . "=" . $val . ", "; + +} + + + +function _adodb_debug_execute(&$zthis, $sql, $inputarr) +{ + $ss = ''; + if ($inputarr) { + foreach($inputarr as $kk=>$vv) { + if (is_string($vv) && strlen($vv)>64) $vv = substr($vv,0,64).'...'; + if (is_null($vv)) $ss .= "($kk=>null) "; + else $ss .= "($kk=>'$vv') "; + } + $ss = "[ $ss ]"; + } + $sqlTxt = is_array($sql) ? $sql[0] : $sql; + /*str_replace(', ','##1#__^LF',is_array($sql) ? $sql[0] : $sql); + $sqlTxt = str_replace(',',', ',$sqlTxt); + $sqlTxt = str_replace('##1#__^LF', ', ' ,$sqlTxt); + */ + // check if running from browser or command-line + $inBrowser = isset($_SERVER['HTTP_USER_AGENT']); + + $dbt = $zthis->databaseType; + if (isset($zthis->dsnType)) $dbt .= '-'.$zthis->dsnType; + if ($inBrowser) { + if ($ss) { + $ss = ''.htmlspecialchars($ss).''; + } + if ($zthis->debug === -1) + ADOConnection::outp( "
\n($dbt): ".htmlspecialchars($sqlTxt)."   $ss\n
\n",false); + else if ($zthis->debug !== -99) + ADOConnection::outp( "


\n($dbt): ".htmlspecialchars($sqlTxt)."   $ss\n
\n",false); + } else { + $ss = "\n ".$ss; + if ($zthis->debug !== -99) + ADOConnection::outp("-----
\n($dbt): ".$sqlTxt." $ss\n-----
\n",false); + } + + $qID = $zthis->_query($sql,$inputarr); + + /* + Alexios Fakios notes that ErrorMsg() must be called before ErrorNo() for mssql + because ErrorNo() calls Execute('SELECT @ERROR'), causing recursion + */ + if ($zthis->databaseType == 'mssql') { + // ErrorNo is a slow function call in mssql, and not reliable in PHP 4.0.6 + + if($emsg = $zthis->ErrorMsg()) { + if ($err = $zthis->ErrorNo()) { + if ($zthis->debug === -99) + ADOConnection::outp( "
\n($dbt): ".htmlspecialchars($sqlTxt)."   $ss\n
\n",false); + + ADOConnection::outp($err.': '.$emsg); + } + } + } else if (!$qID) { + + if ($zthis->debug === -99) + if ($inBrowser) ADOConnection::outp( "
\n($dbt): ".htmlspecialchars($sqlTxt)."   $ss\n
\n",false); + else ADOConnection::outp("-----
\n($dbt): ".$sqlTxt."$ss\n-----
\n",false); + + ADOConnection::outp($zthis->ErrorNo() .': '. $zthis->ErrorMsg()); + } + + if ($zthis->debug === 99) _adodb_backtrace(true,9999,2); + return $qID; +} + +# pretty print the debug_backtrace function +function _adodb_backtrace($printOrArr=true,$levels=9999,$skippy=0,$ishtml=null) +{ + if (!function_exists('debug_backtrace')) return ''; + + if ($ishtml === null) $html = (isset($_SERVER['HTTP_USER_AGENT'])); + else $html = $ishtml; + + $fmt = ($html) ? " %% line %4d, file: %s" : "%% line %4d, file: %s"; + + $MAXSTRLEN = 128; + + $s = ($html) ? '
' : '';
+	
+	if (is_array($printOrArr)) $traceArr = $printOrArr;
+	else $traceArr = debug_backtrace();
+	array_shift($traceArr);
+	array_shift($traceArr);
+	$tabs = sizeof($traceArr)-2;
+	
+	foreach ($traceArr as $arr) {
+		if ($skippy) {$skippy -= 1; continue;}
+		$levels -= 1;
+		if ($levels < 0) break;
+		
+		$args = array();
+		for ($i=0; $i < $tabs; $i++) $s .=  ($html) ? '   ' : "\t";
+		$tabs -= 1;
+		if ($html) $s .= '';
+		if (isset($arr['class'])) $s .= $arr['class'].'.';
+		if (isset($arr['args']))
+		 foreach($arr['args'] as $v) {
+			if (is_null($v)) $args[] = 'null';
+			else if (is_array($v)) $args[] = 'Array['.sizeof($v).']';
+			else if (is_object($v)) $args[] = 'Object:'.get_class($v);
+			else if (is_bool($v)) $args[] = $v ? 'true' : 'false';
+			else {
+				$v = (string) @$v;
+				$str = htmlspecialchars(str_replace(array("\r","\n"),' ',substr($v,0,$MAXSTRLEN)));
+				if (strlen($v) > $MAXSTRLEN) $str .= '...';
+				$args[] = $str;
+			}
+		}
+		$s .= $arr['function'].'('.implode(', ',$args).')';
+		
+		
+		$s .= @sprintf($fmt, $arr['line'],$arr['file'],basename($arr['file']));
+			
+		$s .= "\n";
+	}	
+	if ($html) $s .= '
'; + if ($printOrArr) print $s; + + return $s; +} +/* +function _adodb_find_from($sql) +{ + + $sql = str_replace(array("\n","\r"), ' ', $sql); + $charCount = strlen($sql); + + $inString = false; + $quote = ''; + $parentheseCount = 0; + $prevChars = ''; + $nextChars = ''; + + + for($i = 0; $i < $charCount; $i++) { + + $char = substr($sql,$i,1); + $prevChars = substr($sql,0,$i); + $nextChars = substr($sql,$i+1); + + if((($char == "'" || $char == '"' || $char == '`') && substr($prevChars,-1,1) != '\\') && $inString === false) { + $quote = $char; + $inString = true; + } + + elseif((($char == "'" || $char == '"' || $char == '`') && substr($prevChars,-1,1) != '\\') && $inString === true && $quote == $char) { + $quote = ""; + $inString = false; + } + + elseif($char == "(" && $inString === false) + $parentheseCount++; + + elseif($char == ")" && $inString === false && $parentheseCount > 0) + $parentheseCount--; + + elseif($parentheseCount <= 0 && $inString === false && $char == " " && strtoupper(substr($prevChars,-5,5)) == " FROM") + return $i; + + } +} +*/ + +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/adodb-time.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/adodb-time.inc.php new file mode 100644 index 00000000..51bcf195 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/adodb-time.inc.php @@ -0,0 +1,1432 @@ + 4 digit year conversion. The maximum is billions of years in the +future, but this is a theoretical limit as the computation of that year +would take too long with the current implementation of adodb_mktime(). + +This library replaces native functions as follows: + +
	
+	getdate()  with  adodb_getdate()
+	date()     with  adodb_date() 
+	gmdate()   with  adodb_gmdate()
+	mktime()   with  adodb_mktime()
+	gmmktime() with  adodb_gmmktime()
+	strftime() with  adodb_strftime()
+	strftime() with  adodb_gmstrftime()
+
+ +The parameters are identical, except that adodb_date() accepts a subset +of date()'s field formats. Mktime() will convert from local time to GMT, +and date() will convert from GMT to local time, but daylight savings is +not handled currently. + +This library is independant of the rest of ADOdb, and can be used +as standalone code. + +PERFORMANCE + +For high speed, this library uses the native date functions where +possible, and only switches to PHP code when the dates fall outside +the 32-bit signed integer range. + +GREGORIAN CORRECTION + +Pope Gregory shortened October of A.D. 1582 by ten days. Thursday, +October 4, 1582 (Julian) was followed immediately by Friday, October 15, +1582 (Gregorian). + +Since 0.06, we handle this correctly, so: + +adodb_mktime(0,0,0,10,15,1582) - adodb_mktime(0,0,0,10,4,1582) + == 24 * 3600 (1 day) + +============================================================================= + +COPYRIGHT + +(c) 2003-2005 John Lim and released under BSD-style license except for code by +jackbbs, which includes adodb_mktime, adodb_get_gmt_diff, adodb_is_leap_year +and originally found at http://www.php.net/manual/en/function.mktime.php + +============================================================================= + +BUG REPORTS + +These should be posted to the ADOdb forums at + + http://phplens.com/lens/lensforum/topics.php?id=4 + +============================================================================= + +FUNCTION DESCRIPTIONS + + +** FUNCTION adodb_getdate($date=false) + +Returns an array containing date information, as getdate(), but supports +dates greater than 1901 to 2038. The local date/time format is derived from a +heuristic the first time adodb_getdate is called. + + +** FUNCTION adodb_date($fmt, $timestamp = false) + +Convert a timestamp to a formatted local date. If $timestamp is not defined, the +current timestamp is used. Unlike the function date(), it supports dates +outside the 1901 to 2038 range. + +The format fields that adodb_date supports: + +
+	a - "am" or "pm" 
+	A - "AM" or "PM" 
+	d - day of the month, 2 digits with leading zeros; i.e. "01" to "31" 
+	D - day of the week, textual, 3 letters; e.g. "Fri" 
+	F - month, textual, long; e.g. "January" 
+	g - hour, 12-hour format without leading zeros; i.e. "1" to "12" 
+	G - hour, 24-hour format without leading zeros; i.e. "0" to "23" 
+	h - hour, 12-hour format; i.e. "01" to "12" 
+	H - hour, 24-hour format; i.e. "00" to "23" 
+	i - minutes; i.e. "00" to "59" 
+	j - day of the month without leading zeros; i.e. "1" to "31" 
+	l (lowercase 'L') - day of the week, textual, long; e.g. "Friday"  
+	L - boolean for whether it is a leap year; i.e. "0" or "1" 
+	m - month; i.e. "01" to "12" 
+	M - month, textual, 3 letters; e.g. "Jan" 
+	n - month without leading zeros; i.e. "1" to "12" 
+	O - Difference to Greenwich time in hours; e.g. "+0200" 
+	Q - Quarter, as in 1, 2, 3, 4 
+	r - RFC 2822 formatted date; e.g. "Thu, 21 Dec 2000 16:01:07 +0200" 
+	s - seconds; i.e. "00" to "59" 
+	S - English ordinal suffix for the day of the month, 2 characters; 
+	   			i.e. "st", "nd", "rd" or "th" 
+	t - number of days in the given month; i.e. "28" to "31"
+	T - Timezone setting of this machine; e.g. "EST" or "MDT" 
+	U - seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)  
+	w - day of the week, numeric, i.e. "0" (Sunday) to "6" (Saturday) 
+	Y - year, 4 digits; e.g. "1999" 
+	y - year, 2 digits; e.g. "99" 
+	z - day of the year; i.e. "0" to "365" 
+	Z - timezone offset in seconds (i.e. "-43200" to "43200"). 
+	   			The offset for timezones west of UTC is always negative, 
+				and for those east of UTC is always positive. 
+
+ +Unsupported: +
+	B - Swatch Internet time 
+	I (capital i) - "1" if Daylight Savings Time, "0" otherwise.
+	W - ISO-8601 week number of year, weeks starting on Monday 
+
+
+ + +** FUNCTION adodb_date2($fmt, $isoDateString = false) +Same as adodb_date, but 2nd parameter accepts iso date, eg. + + adodb_date2('d-M-Y H:i','2003-12-25 13:01:34'); + + +** FUNCTION adodb_gmdate($fmt, $timestamp = false) + +Convert a timestamp to a formatted GMT date. If $timestamp is not defined, the +current timestamp is used. Unlike the function date(), it supports dates +outside the 1901 to 2038 range. + + +** FUNCTION adodb_mktime($hr, $min, $sec[, $month, $day, $year]) + +Converts a local date to a unix timestamp. Unlike the function mktime(), it supports +dates outside the 1901 to 2038 range. All parameters are optional. + + +** FUNCTION adodb_gmmktime($hr, $min, $sec [, $month, $day, $year]) + +Converts a gmt date to a unix timestamp. Unlike the function gmmktime(), it supports +dates outside the 1901 to 2038 range. Differs from gmmktime() in that all parameters +are currently compulsory. + +** FUNCTION adodb_gmstrftime($fmt, $timestamp = false) +Convert a timestamp to a formatted GMT date. + +** FUNCTION adodb_strftime($fmt, $timestamp = false) + +Convert a timestamp to a formatted local date. Internally converts $fmt into +adodb_date format, then echo result. + +For best results, you can define the local date format yourself. Define a global +variable $ADODB_DATE_LOCALE which is an array, 1st element is date format using +adodb_date syntax, and 2nd element is the time format, also in adodb_date syntax. + + eg. $ADODB_DATE_LOCALE = array('d/m/Y','H:i:s'); + + Supported format codes: + +
+	%a - abbreviated weekday name according to the current locale 
+	%A - full weekday name according to the current locale 
+	%b - abbreviated month name according to the current locale 
+	%B - full month name according to the current locale 
+	%c - preferred date and time representation for the current locale 
+	%d - day of the month as a decimal number (range 01 to 31) 
+	%D - same as %m/%d/%y 
+	%e - day of the month as a decimal number, a single digit is preceded by a space (range ' 1' to '31') 
+	%h - same as %b
+	%H - hour as a decimal number using a 24-hour clock (range 00 to 23) 
+	%I - hour as a decimal number using a 12-hour clock (range 01 to 12) 
+	%m - month as a decimal number (range 01 to 12) 
+	%M - minute as a decimal number 
+	%n - newline character 
+	%p - either `am' or `pm' according to the given time value, or the corresponding strings for the current locale 
+	%r - time in a.m. and p.m. notation 
+	%R - time in 24 hour notation 
+	%S - second as a decimal number 
+	%t - tab character 
+	%T - current time, equal to %H:%M:%S 
+	%x - preferred date representation for the current locale without the time 
+	%X - preferred time representation for the current locale without the date 
+	%y - year as a decimal number without a century (range 00 to 99) 
+	%Y - year as a decimal number including the century 
+	%Z - time zone or name or abbreviation 
+	%% - a literal `%' character 
+
+ + Unsupported codes: +
+	%C - century number (the year divided by 100 and truncated to an integer, range 00 to 99) 
+	%g - like %G, but without the century. 
+	%G - The 4-digit year corresponding to the ISO week number (see %V). 
+	     This has the same format and value as %Y, except that if the ISO week number belongs 
+		 to the previous or next year, that year is used instead. 
+	%j - day of the year as a decimal number (range 001 to 366) 
+	%u - weekday as a decimal number [1,7], with 1 representing Monday 
+	%U - week number of the current year as a decimal number, starting 
+	    with the first Sunday as the first day of the first week 
+	%V - The ISO 8601:1988 week number of the current year as a decimal number, 
+	     range 01 to 53, where week 1 is the first week that has at least 4 days in the 
+		 current year, and with Monday as the first day of the week. (Use %G or %g for 
+		 the year component that corresponds to the week number for the specified timestamp.) 
+	%w - day of the week as a decimal, Sunday being 0 
+	%W - week number of the current year as a decimal number, starting with the 
+	     first Monday as the first day of the first week 
+
+ +============================================================================= + +NOTES + +Useful url for generating test timestamps: + http://www.4webhelp.net/us/timestamp.php + +Possible future optimizations include + +a. Using an algorithm similar to Plauger's in "The Standard C Library" +(page 428, xttotm.c _Ttotm() function). Plauger's algorithm will not +work outside 32-bit signed range, so i decided not to implement it. + +b. Implement daylight savings, which looks awfully complicated, see + http://webexhibits.org/daylightsaving/ + + +CHANGELOG + +- 11 Feb 2008 0.33 +* Bug in 0.32 fix for hour handling. Fixed. + +- 1 Feb 2008 0.32 +* Now adodb_mktime(0,0,0,12+$m,20,2040) works properly. + +- 10 Jan 2008 0.31 +* Now adodb_mktime(0,0,0,24,1,2037) works correctly. + +- 15 July 2007 0.30 +Added PHP 5.2.0 compatability fixes. + * gmtime behaviour for 1970 has changed. We use the actual date if it is between 1970 to 2038 to get the + * timezone, otherwise we use the current year as the baseline to retrieve the timezone. + * Also the timezone's in php 5.2.* support historical data better, eg. if timezone today was +8, but + in 1970 it was +7:30, then php 5.2 return +7:30, while this library will use +8. + * + +- 19 March 2006 0.24 +Changed strftime() locale detection, because some locales prepend the day of week to the date when %c is used. + +- 10 Feb 2006 0.23 +PHP5 compat: when we detect PHP5, the RFC2822 format for gmt 0000hrs is changed from -0000 to +0000. + In PHP4, we will still use -0000 for 100% compat with PHP4. + +- 08 Sept 2005 0.22 +In adodb_date2(), $is_gmt not supported properly. Fixed. + +- 18 July 2005 0.21 +In PHP 4.3.11, the 'r' format has changed. Leading 0 in day is added. Changed for compat. +Added support for negative months in adodb_mktime(). + +- 24 Feb 2005 0.20 +Added limited strftime/gmstrftime support. x10 improvement in performance of adodb_date(). + +- 21 Dec 2004 0.17 +In adodb_getdate(), the timestamp was accidentally converted to gmt when $is_gmt is false. +Also adodb_mktime(0,0,0) did not work properly. Both fixed thx Mauro. + +- 17 Nov 2004 0.16 +Removed intval typecast in adodb_mktime() for secs, allowing: + adodb_mktime(0,0,0 + 2236672153,1,1,1934); +Suggested by Ryan. + +- 18 July 2004 0.15 +All params in adodb_mktime were formerly compulsory. Now only the hour, min, secs is compulsory. +This brings it more in line with mktime (still not identical). + +- 23 June 2004 0.14 + +Allow you to define your own daylights savings function, adodb_daylight_sv. +If the function is defined (somewhere in an include), then you can correct for daylights savings. + +In this example, we apply daylights savings in June or July, adding one hour. This is extremely +unrealistic as it does not take into account time-zone, geographic location, current year. + +function adodb_daylight_sv(&$arr, $is_gmt) +{ + if ($is_gmt) return; + $m = $arr['mon']; + if ($m == 6 || $m == 7) $arr['hours'] += 1; +} + +This is only called by adodb_date() and not by adodb_mktime(). + +The format of $arr is +Array ( + [seconds] => 0 + [minutes] => 0 + [hours] => 0 + [mday] => 1 # day of month, eg 1st day of the month + [mon] => 2 # month (eg. Feb) + [year] => 2102 + [yday] => 31 # days in current year + [leap] => # true if leap year + [ndays] => 28 # no of days in current month + ) + + +- 28 Apr 2004 0.13 +Fixed adodb_date to properly support $is_gmt. Thx to Dimitar Angelov. + +- 20 Mar 2004 0.12 +Fixed month calculation error in adodb_date. 2102-June-01 appeared as 2102-May-32. + +- 26 Oct 2003 0.11 +Because of daylight savings problems (some systems apply daylight savings to +January!!!), changed adodb_get_gmt_diff() to ignore daylight savings. + +- 9 Aug 2003 0.10 +Fixed bug with dates after 2038. +See http://phplens.com/lens/lensforum/msgs.php?id=6980 + +- 1 July 2003 0.09 +Added support for Q (Quarter). +Added adodb_date2(), which accepts ISO date in 2nd param + +- 3 March 2003 0.08 +Added support for 'S' adodb_date() format char. Added constant ADODB_ALLOW_NEGATIVE_TS +if you want PHP to handle negative timestamps between 1901 to 1969. + +- 27 Feb 2003 0.07 +All negative numbers handled by adodb now because of RH 7.3+ problems. +See http://bugs.php.net/bug.php?id=20048&edit=2 + +- 4 Feb 2003 0.06 +Fixed a typo, 1852 changed to 1582! This means that pre-1852 dates +are now correctly handled. + +- 29 Jan 2003 0.05 + +Leap year checking differs under Julian calendar (pre 1582). Also +leap year code optimized by checking for most common case first. + +We also handle month overflow correctly in mktime (eg month set to 13). + +Day overflow for less than one month's days is supported. + +- 28 Jan 2003 0.04 + +Gregorian correction handled. In PHP5, we might throw an error if +mktime uses invalid dates around 5-14 Oct 1582. Released with ADOdb 3.10. +Added limbo 5-14 Oct 1582 check, when we set to 15 Oct 1582. + +- 27 Jan 2003 0.03 + +Fixed some more month problems due to gmt issues. Added constant ADODB_DATE_VERSION. +Fixed calculation of days since start of year for <1970. + +- 27 Jan 2003 0.02 + +Changed _adodb_getdate() to inline leap year checking for better performance. +Fixed problem with time-zones west of GMT +0000. + +- 24 Jan 2003 0.01 + +First implementation. +*/ + + +/* Initialization */ + +/* + Version Number +*/ +define('ADODB_DATE_VERSION',0.33); + +$ADODB_DATETIME_CLASS = (PHP_VERSION >= 5.2); + +/* + This code was originally for windows. But apparently this problem happens + also with Linux, RH 7.3 and later! + + glibc-2.2.5-34 and greater has been changed to return -1 for dates < + 1970. This used to work. The problem exists with RedHat 7.3 and 8.0 + echo (mktime(0, 0, 0, 1, 1, 1960)); // prints -1 + + References: + http://bugs.php.net/bug.php?id=20048&edit=2 + http://lists.debian.org/debian-glibc/2002/debian-glibc-200205/msg00010.html +*/ + +if (!defined('ADODB_ALLOW_NEGATIVE_TS')) define('ADODB_NO_NEGATIVE_TS',1); + +function adodb_date_test_date($y1,$m,$d=13) +{ + $h = round(rand()% 24); + $t = adodb_mktime($h,0,0,$m,$d,$y1); + $rez = adodb_date('Y-n-j H:i:s',$t); + if ($h == 0) $h = '00'; + else if ($h < 10) $h = '0'.$h; + if ("$y1-$m-$d $h:00:00" != $rez) { + print "$y1 error, expected=$y1-$m-$d $h:00:00, adodb=$rez
"; + return false; + } + return true; +} + +function adodb_date_test_strftime($fmt) +{ + $s1 = strftime($fmt); + $s2 = adodb_strftime($fmt); + + if ($s1 == $s2) return true; + + echo "error for $fmt, strftime=$s1, adodb=$s2
"; + return false; +} + +/** + Test Suite +*/ +function adodb_date_test() +{ + + for ($m=-24; $m<=24; $m++) + echo "$m :",adodb_date('d-m-Y',adodb_mktime(0,0,0,1+$m,20,2040)),"
"; + + // cytopia edit + error_reporting(E_ERROR | E_WARNING | E_PARSE); + //error_reporting(E_ALL & ~E_DEPRECATED); + //error_reporting(E_ALL); + print "

Testing adodb_date and adodb_mktime. version=".ADODB_DATE_VERSION.' PHP='.PHP_VERSION."

"; + @set_time_limit(0); + $fail = false; + + // This flag disables calling of PHP native functions, so we can properly test the code + if (!defined('ADODB_TEST_DATES')) define('ADODB_TEST_DATES',1); + + $t = time(); + + + $fmt = 'Y-m-d H:i:s'; + echo '
';
+	echo 'adodb: ',adodb_date($fmt,$t),'
'; + echo 'php : ',date($fmt,$t),'
'; + echo '
'; + + adodb_date_test_strftime('%Y %m %x %X'); + adodb_date_test_strftime("%A %d %B %Y"); + adodb_date_test_strftime("%H %M S"); + + $t = adodb_mktime(0,0,0); + if (!(adodb_date('Y-m-d') == date('Y-m-d'))) print 'Error in '.adodb_mktime(0,0,0).'
'; + + $t = adodb_mktime(0,0,0,6,1,2102); + if (!(adodb_date('Y-m-d',$t) == '2102-06-01')) print 'Error in '.adodb_date('Y-m-d',$t).'
'; + + $t = adodb_mktime(0,0,0,2,1,2102); + if (!(adodb_date('Y-m-d',$t) == '2102-02-01')) print 'Error in '.adodb_date('Y-m-d',$t).'
'; + + + print "

Testing gregorian <=> julian conversion

"; + $t = adodb_mktime(0,0,0,10,11,1492); + //http://www.holidayorigins.com/html/columbus_day.html - Friday check + if (!(adodb_date('D Y-m-d',$t) == 'Fri 1492-10-11')) print 'Error in Columbus landing
'; + + $t = adodb_mktime(0,0,0,2,29,1500); + if (!(adodb_date('Y-m-d',$t) == '1500-02-29')) print 'Error in julian leap years
'; + + $t = adodb_mktime(0,0,0,2,29,1700); + if (!(adodb_date('Y-m-d',$t) == '1700-03-01')) print 'Error in gregorian leap years
'; + + print adodb_mktime(0,0,0,10,4,1582).' '; + print adodb_mktime(0,0,0,10,15,1582); + $diff = (adodb_mktime(0,0,0,10,15,1582) - adodb_mktime(0,0,0,10,4,1582)); + if ($diff != 3600*24) print " Error in gregorian correction = ".($diff/3600/24)." days
"; + + print " 15 Oct 1582, Fri=".(adodb_dow(1582,10,15) == 5 ? 'Fri' : 'Error')."
"; + print " 4 Oct 1582, Thu=".(adodb_dow(1582,10,4) == 4 ? 'Thu' : 'Error')."
"; + + print "

Testing overflow

"; + + $t = adodb_mktime(0,0,0,3,33,1965); + if (!(adodb_date('Y-m-d',$t) == '1965-04-02')) print 'Error in day overflow 1
'; + $t = adodb_mktime(0,0,0,4,33,1971); + if (!(adodb_date('Y-m-d',$t) == '1971-05-03')) print 'Error in day overflow 2
'; + $t = adodb_mktime(0,0,0,1,60,1965); + if (!(adodb_date('Y-m-d',$t) == '1965-03-01')) print 'Error in day overflow 3 '.adodb_date('Y-m-d',$t).'
'; + $t = adodb_mktime(0,0,0,12,32,1965); + if (!(adodb_date('Y-m-d',$t) == '1966-01-01')) print 'Error in day overflow 4 '.adodb_date('Y-m-d',$t).'
'; + $t = adodb_mktime(0,0,0,12,63,1965); + if (!(adodb_date('Y-m-d',$t) == '1966-02-01')) print 'Error in day overflow 5 '.adodb_date('Y-m-d',$t).'
'; + $t = adodb_mktime(0,0,0,13,3,1965); + if (!(adodb_date('Y-m-d',$t) == '1966-01-03')) print 'Error in mth overflow 1
'; + + print "Testing 2-digit => 4-digit year conversion

"; + if (adodb_year_digit_check(00) != 2000) print "Err 2-digit 2000
"; + if (adodb_year_digit_check(10) != 2010) print "Err 2-digit 2010
"; + if (adodb_year_digit_check(20) != 2020) print "Err 2-digit 2020
"; + if (adodb_year_digit_check(30) != 2030) print "Err 2-digit 2030
"; + if (adodb_year_digit_check(40) != 1940) print "Err 2-digit 1940
"; + if (adodb_year_digit_check(50) != 1950) print "Err 2-digit 1950
"; + if (adodb_year_digit_check(90) != 1990) print "Err 2-digit 1990
"; + + // Test string formating + print "

Testing date formating

"; + + $fmt = '\d\a\t\e T Y-m-d H:i:s a A d D F g G h H i j l L m M n O \R\F\C2822 r s t U w y Y z Z 2003'; + $s1 = date($fmt,0); + $s2 = adodb_date($fmt,0); + if ($s1 != $s2) { + print " date() 0 failed
$s1
$s2
"; + } + flush(); + for ($i=100; --$i > 0; ) { + + $ts = 3600.0*((rand()%60000)+(rand()%60000))+(rand()%60000); + $s1 = date($fmt,$ts); + $s2 = adodb_date($fmt,$ts); + //print "$s1
$s2

"; + $pos = strcmp($s1,$s2); + + if (($s1) != ($s2)) { + for ($j=0,$k=strlen($s1); $j < $k; $j++) { + if ($s1[$j] != $s2[$j]) { + print substr($s1,$j).' '; + break; + } + } + print "Error date(): $ts

 
+  \"$s1\" (date len=".strlen($s1).")
+  \"$s2\" (adodb_date len=".strlen($s2).")

"; + $fail = true; + } + + $a1 = getdate($ts); + $a2 = adodb_getdate($ts); + $rez = array_diff($a1,$a2); + if (sizeof($rez)>0) { + print "Error getdate() $ts
"; + print_r($a1); + print "
"; + print_r($a2); + print "

"; + $fail = true; + } + } + + // Test generation of dates outside 1901-2038 + print "

Testing random dates between 100 and 4000

"; + adodb_date_test_date(100,1); + for ($i=100; --$i >= 0;) { + $y1 = 100+rand(0,1970-100); + $m = rand(1,12); + adodb_date_test_date($y1,$m); + + $y1 = 3000-rand(0,3000-1970); + adodb_date_test_date($y1,$m); + } + print '

'; + $start = 1960+rand(0,10); + $yrs = 12; + $i = 365.25*86400*($start-1970); + $offset = 36000+rand(10000,60000); + $max = 365*$yrs*86400; + $lastyear = 0; + + // we generate a timestamp, convert it to a date, and convert it back to a timestamp + // and check if the roundtrip broke the original timestamp value. + print "Testing $start to ".($start+$yrs).", or $max seconds, offset=$offset: "; + $cnt = 0; + for ($max += $i; $i < $max; $i += $offset) { + $ret = adodb_date('m,d,Y,H,i,s',$i); + $arr = explode(',',$ret); + if ($lastyear != $arr[2]) { + $lastyear = $arr[2]; + print " $lastyear "; + flush(); + } + $newi = adodb_mktime($arr[3],$arr[4],$arr[5],$arr[0],$arr[1],$arr[2]); + if ($i != $newi) { + print "Error at $i, adodb_mktime returned $newi ($ret)"; + $fail = true; + break; + } + $cnt += 1; + } + echo "Tested $cnt dates
"; + if (!$fail) print "

Passed !

"; + else print "

Failed :-(

"; +} + +/** + Returns day of week, 0 = Sunday,... 6=Saturday. + Algorithm from PEAR::Date_Calc +*/ +function adodb_dow($year, $month, $day) +{ +/* +Pope Gregory removed 10 days - October 5 to October 14 - from the year 1582 and +proclaimed that from that time onwards 3 days would be dropped from the calendar +every 400 years. + +Thursday, October 4, 1582 (Julian) was followed immediately by Friday, October 15, 1582 (Gregorian). +*/ + if ($year <= 1582) { + if ($year < 1582 || + ($year == 1582 && ($month < 10 || ($month == 10 && $day < 15)))) $greg_correction = 3; + else + $greg_correction = 0; + } else + $greg_correction = 0; + + if($month > 2) + $month -= 2; + else { + $month += 10; + $year--; + } + + $day = floor((13 * $month - 1) / 5) + + $day + ($year % 100) + + floor(($year % 100) / 4) + + floor(($year / 100) / 4) - 2 * + floor($year / 100) + 77 + $greg_correction; + + return $day - 7 * floor($day / 7); +} + + +/** + Checks for leap year, returns true if it is. No 2-digit year check. Also + handles julian calendar correctly. +*/ +function _adodb_is_leap_year($year) +{ + if ($year % 4 != 0) return false; + + if ($year % 400 == 0) { + return true; + // if gregorian calendar (>1582), century not-divisible by 400 is not leap + } else if ($year > 1582 && $year % 100 == 0 ) { + return false; + } + + return true; +} + + +/** + checks for leap year, returns true if it is. Has 2-digit year check +*/ +function adodb_is_leap_year($year) +{ + return _adodb_is_leap_year(adodb_year_digit_check($year)); +} + +/** + Fix 2-digit years. Works for any century. + Assumes that if 2-digit is more than 30 years in future, then previous century. +*/ +function adodb_year_digit_check($y) +{ + if ($y < 100) { + + $yr = (integer) date("Y"); + $century = (integer) ($yr /100); + + if ($yr%100 > 50) { + $c1 = $century + 1; + $c0 = $century; + } else { + $c1 = $century; + $c0 = $century - 1; + } + $c1 *= 100; + // if 2-digit year is less than 30 years in future, set it to this century + // otherwise if more than 30 years in future, then we set 2-digit year to the prev century. + if (($y + $c1) < $yr+30) $y = $y + $c1; + else $y = $y + $c0*100; + } + return $y; +} + +function adodb_get_gmt_diff_ts($ts) +{ + if (0 <= $ts && $ts <= 0x7FFFFFFF) { // check if number in 32-bit signed range) { + $arr = getdate($ts); + $y = $arr['year']; + $m = $arr['mon']; + $d = $arr['mday']; + return adodb_get_gmt_diff($y,$m,$d); + } else { + return adodb_get_gmt_diff(false,false,false); + } + +} + +/** + get local time zone offset from GMT. Does not handle historical timezones before 1970. +*/ +function adodb_get_gmt_diff($y,$m,$d) +{ +static $TZ,$tzo; +global $ADODB_DATETIME_CLASS; + + if (!defined('ADODB_TEST_DATES')) $y = false; + else if ($y < 1970 || $y >= 2038) $y = false; + + if ($ADODB_DATETIME_CLASS && $y !== false) { + $dt = new DateTime(); + $dt->setISODate($y,$m,$d); + if (empty($tzo)) { + $tzo = new DateTimeZone(date_default_timezone_get()); + # $tzt = timezone_transitions_get( $tzo ); + } + return -$tzo->getOffset($dt); + } else { + if (isset($TZ)) return $TZ; + $y = date('Y'); + $TZ = mktime(0,0,0,12,2,$y,0) - gmmktime(0,0,0,12,2,$y,0); + } + + return $TZ; +} + +/** + Returns an array with date info. +*/ +function adodb_getdate($d=false,$fast=false) +{ + if ($d === false) return getdate(); + if (!defined('ADODB_TEST_DATES')) { + if ((abs($d) <= 0x7FFFFFFF)) { // check if number in 32-bit signed range + if (!defined('ADODB_NO_NEGATIVE_TS') || $d >= 0) // if windows, must be +ve integer + return @getdate($d); + } + } + return _adodb_getdate($d); +} + +/* +// generate $YRS table for _adodb_getdate() +function adodb_date_gentable($out=true) +{ + + for ($i=1970; $i >= 1600; $i-=10) { + $s = adodb_gmmktime(0,0,0,1,1,$i); + echo "$i => $s,
"; + } +} +adodb_date_gentable(); + +for ($i=1970; $i > 1500; $i--) { + +echo "
$i "; + adodb_date_test_date($i,1,1); +} + +*/ + + +$_month_table_normal = array("",31,28,31,30,31,30,31,31,30,31,30,31); +$_month_table_leaf = array("",31,29,31,30,31,30,31,31,30,31,30,31); + +function adodb_validdate($y,$m,$d) +{ +global $_month_table_normal,$_month_table_leaf; + + if (_adodb_is_leap_year($y)) $marr = $_month_table_leaf; + else $marr = $_month_table_normal; + + if ($m > 12 || $m < 1) return false; + + if ($d > 31 || $d < 1) return false; + + if ($marr[$m] < $d) return false; + + if ($y < 1000 && $y > 3000) return false; + + return true; +} + +/** + Low-level function that returns the getdate() array. We have a special + $fast flag, which if set to true, will return fewer array values, + and is much faster as it does not calculate dow, etc. +*/ +function _adodb_getdate($origd=false,$fast=false,$is_gmt=false) +{ +static $YRS; +global $_month_table_normal,$_month_table_leaf; + + $d = $origd - ($is_gmt ? 0 : adodb_get_gmt_diff_ts($origd)); + $_day_power = 86400; + $_hour_power = 3600; + $_min_power = 60; + + if ($d < -12219321600) $d -= 86400*10; // if 15 Oct 1582 or earlier, gregorian correction + + $_month_table_normal = array("",31,28,31,30,31,30,31,31,30,31,30,31); + $_month_table_leaf = array("",31,29,31,30,31,30,31,31,30,31,30,31); + + $d366 = $_day_power * 366; + $d365 = $_day_power * 365; + + if ($d < 0) { + + if (empty($YRS)) $YRS = array( + 1970 => 0, + 1960 => -315619200, + 1950 => -631152000, + 1940 => -946771200, + 1930 => -1262304000, + 1920 => -1577923200, + 1910 => -1893456000, + 1900 => -2208988800, + 1890 => -2524521600, + 1880 => -2840140800, + 1870 => -3155673600, + 1860 => -3471292800, + 1850 => -3786825600, + 1840 => -4102444800, + 1830 => -4417977600, + 1820 => -4733596800, + 1810 => -5049129600, + 1800 => -5364662400, + 1790 => -5680195200, + 1780 => -5995814400, + 1770 => -6311347200, + 1760 => -6626966400, + 1750 => -6942499200, + 1740 => -7258118400, + 1730 => -7573651200, + 1720 => -7889270400, + 1710 => -8204803200, + 1700 => -8520336000, + 1690 => -8835868800, + 1680 => -9151488000, + 1670 => -9467020800, + 1660 => -9782640000, + 1650 => -10098172800, + 1640 => -10413792000, + 1630 => -10729324800, + 1620 => -11044944000, + 1610 => -11360476800, + 1600 => -11676096000); + + if ($is_gmt) $origd = $d; + // The valid range of a 32bit signed timestamp is typically from + // Fri, 13 Dec 1901 20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT + // + + # old algorithm iterates through all years. new algorithm does it in + # 10 year blocks + + /* + # old algo + for ($a = 1970 ; --$a >= 0;) { + $lastd = $d; + + if ($leaf = _adodb_is_leap_year($a)) $d += $d366; + else $d += $d365; + + if ($d >= 0) { + $year = $a; + break; + } + } + */ + + $lastsecs = 0; + $lastyear = 1970; + foreach($YRS as $year => $secs) { + if ($d >= $secs) { + $a = $lastyear; + break; + } + $lastsecs = $secs; + $lastyear = $year; + } + + $d -= $lastsecs; + if (!isset($a)) $a = $lastyear; + + //echo ' yr=',$a,' ', $d,'.'; + + for (; --$a >= 0;) { + $lastd = $d; + + if ($leaf = _adodb_is_leap_year($a)) $d += $d366; + else $d += $d365; + + if ($d >= 0) { + $year = $a; + break; + } + } + /**/ + + $secsInYear = 86400 * ($leaf ? 366 : 365) + $lastd; + + $d = $lastd; + $mtab = ($leaf) ? $_month_table_leaf : $_month_table_normal; + for ($a = 13 ; --$a > 0;) { + $lastd = $d; + $d += $mtab[$a] * $_day_power; + if ($d >= 0) { + $month = $a; + $ndays = $mtab[$a]; + break; + } + } + + $d = $lastd; + $day = $ndays + ceil(($d+1) / ($_day_power)); + + $d += ($ndays - $day+1)* $_day_power; + $hour = floor($d/$_hour_power); + + } else { + for ($a = 1970 ;; $a++) { + $lastd = $d; + + if ($leaf = _adodb_is_leap_year($a)) $d -= $d366; + else $d -= $d365; + if ($d < 0) { + $year = $a; + break; + } + } + $secsInYear = $lastd; + $d = $lastd; + $mtab = ($leaf) ? $_month_table_leaf : $_month_table_normal; + for ($a = 1 ; $a <= 12; $a++) { + $lastd = $d; + $d -= $mtab[$a] * $_day_power; + if ($d < 0) { + $month = $a; + $ndays = $mtab[$a]; + break; + } + } + $d = $lastd; + $day = ceil(($d+1) / $_day_power); + $d = $d - ($day-1) * $_day_power; + $hour = floor($d /$_hour_power); + } + + $d -= $hour * $_hour_power; + $min = floor($d/$_min_power); + $secs = $d - $min * $_min_power; + if ($fast) { + return array( + 'seconds' => $secs, + 'minutes' => $min, + 'hours' => $hour, + 'mday' => $day, + 'mon' => $month, + 'year' => $year, + 'yday' => floor($secsInYear/$_day_power), + 'leap' => $leaf, + 'ndays' => $ndays + ); + } + + + $dow = adodb_dow($year,$month,$day); + + return array( + 'seconds' => $secs, + 'minutes' => $min, + 'hours' => $hour, + 'mday' => $day, + 'wday' => $dow, + 'mon' => $month, + 'year' => $year, + 'yday' => floor($secsInYear/$_day_power), + 'weekday' => gmdate('l',$_day_power*(3+$dow)), + 'month' => gmdate('F',mktime(0,0,0,$month,2,1971)), + 0 => $origd + ); +} +/* + if ($isphp5) + $dates .= sprintf('%s%04d',($gmt<=0)?'+':'-',abs($gmt)/36); + else + $dates .= sprintf('%s%04d',($gmt<0)?'+':'-',abs($gmt)/36); + break;*/ +function adodb_tz_offset($gmt,$isphp5) +{ + $zhrs = abs($gmt)/3600; + $hrs = floor($zhrs); + if ($isphp5) + return sprintf('%s%02d%02d',($gmt<=0)?'+':'-',floor($zhrs),($zhrs-$hrs)*60); + else + return sprintf('%s%02d%02d',($gmt<0)?'+':'-',floor($zhrs),($zhrs-$hrs)*60); +} + + +function adodb_gmdate($fmt,$d=false) +{ + return adodb_date($fmt,$d,true); +} + +// accepts unix timestamp and iso date format in $d +function adodb_date2($fmt, $d=false, $is_gmt=false) +{ + if ($d !== false) { + if (!preg_match( + "|^([0-9]{4})[-/\.]?([0-9]{1,2})[-/\.]?([0-9]{1,2})[ -]?(([0-9]{1,2}):?([0-9]{1,2}):?([0-9\.]{1,4}))?|", + ($d), $rr)) return adodb_date($fmt,false,$is_gmt); + + if ($rr[1] <= 100 && $rr[2]<= 1) return adodb_date($fmt,false,$is_gmt); + + // h-m-s-MM-DD-YY + if (!isset($rr[5])) $d = adodb_mktime(0,0,0,$rr[2],$rr[3],$rr[1],false,$is_gmt); + else $d = @adodb_mktime($rr[5],$rr[6],$rr[7],$rr[2],$rr[3],$rr[1],false,$is_gmt); + } + + return adodb_date($fmt,$d,$is_gmt); +} + + +/** + Return formatted date based on timestamp $d +*/ +function adodb_date($fmt,$d=false,$is_gmt=false) +{ +static $daylight; +global $ADODB_DATETIME_CLASS; + + if ($d === false) return ($is_gmt)? @gmdate($fmt): @date($fmt); + if (!defined('ADODB_TEST_DATES')) { + if ((abs($d) <= 0x7FFFFFFF)) { // check if number in 32-bit signed range + if (!defined('ADODB_NO_NEGATIVE_TS') || $d >= 0) // if windows, must be +ve integer + return ($is_gmt)? @gmdate($fmt,$d): @date($fmt,$d); + + } + } + $_day_power = 86400; + + $arr = _adodb_getdate($d,true,$is_gmt); + + if (!isset($daylight)) $daylight = function_exists('adodb_daylight_sv'); + if ($daylight) adodb_daylight_sv($arr, $is_gmt); + + $year = $arr['year']; + $month = $arr['mon']; + $day = $arr['mday']; + $hour = $arr['hours']; + $min = $arr['minutes']; + $secs = $arr['seconds']; + + $max = strlen($fmt); + $dates = ''; + + $isphp5 = PHP_VERSION >= 5; + + /* + at this point, we have the following integer vars to manipulate: + $year, $month, $day, $hour, $min, $secs + */ + for ($i=0; $i < $max; $i++) { + switch($fmt[$i]) { + case 'e': + $dates .= date('e'); + break; + case 'T': + if ($ADODB_DATETIME_CLASS) { + $dt = new DateTime(); + $dt->SetDate($year,$month,$day); + $dates .= $dt->Format('T'); + } else + $dates .= date('T'); + break; + // YEAR + case 'L': $dates .= $arr['leap'] ? '1' : '0'; break; + case 'r': // Thu, 21 Dec 2000 16:01:07 +0200 + + // 4.3.11 uses '04 Jun 2004' + // 4.3.8 uses ' 4 Jun 2004' + $dates .= gmdate('D',$_day_power*(3+adodb_dow($year,$month,$day))).', ' + . ($day<10?'0'.$day:$day) . ' '.date('M',mktime(0,0,0,$month,2,1971)).' '.$year.' '; + + if ($hour < 10) $dates .= '0'.$hour; else $dates .= $hour; + + if ($min < 10) $dates .= ':0'.$min; else $dates .= ':'.$min; + + if ($secs < 10) $dates .= ':0'.$secs; else $dates .= ':'.$secs; + + $gmt = adodb_get_gmt_diff($year,$month,$day); + + $dates .= ' '.adodb_tz_offset($gmt,$isphp5); + break; + + case 'Y': $dates .= $year; break; + case 'y': $dates .= substr($year,strlen($year)-2,2); break; + // MONTH + case 'm': if ($month<10) $dates .= '0'.$month; else $dates .= $month; break; + case 'Q': $dates .= ($month+3)>>2; break; + case 'n': $dates .= $month; break; + case 'M': $dates .= date('M',mktime(0,0,0,$month,2,1971)); break; + case 'F': $dates .= date('F',mktime(0,0,0,$month,2,1971)); break; + // DAY + case 't': $dates .= $arr['ndays']; break; + case 'z': $dates .= $arr['yday']; break; + case 'w': $dates .= adodb_dow($year,$month,$day); break; + case 'l': $dates .= gmdate('l',$_day_power*(3+adodb_dow($year,$month,$day))); break; + case 'D': $dates .= gmdate('D',$_day_power*(3+adodb_dow($year,$month,$day))); break; + case 'j': $dates .= $day; break; + case 'd': if ($day<10) $dates .= '0'.$day; else $dates .= $day; break; + case 'S': + $d10 = $day % 10; + if ($d10 == 1) $dates .= 'st'; + else if ($d10 == 2 && $day != 12) $dates .= 'nd'; + else if ($d10 == 3) $dates .= 'rd'; + else $dates .= 'th'; + break; + + // HOUR + case 'Z': + $dates .= ($is_gmt) ? 0 : -adodb_get_gmt_diff($year,$month,$day); break; + case 'O': + $gmt = ($is_gmt) ? 0 : adodb_get_gmt_diff($year,$month,$day); + + $dates .= adodb_tz_offset($gmt,$isphp5); + break; + + case 'H': + if ($hour < 10) $dates .= '0'.$hour; + else $dates .= $hour; + break; + case 'h': + if ($hour > 12) $hh = $hour - 12; + else { + if ($hour == 0) $hh = '12'; + else $hh = $hour; + } + + if ($hh < 10) $dates .= '0'.$hh; + else $dates .= $hh; + break; + + case 'G': + $dates .= $hour; + break; + + case 'g': + if ($hour > 12) $hh = $hour - 12; + else { + if ($hour == 0) $hh = '12'; + else $hh = $hour; + } + $dates .= $hh; + break; + // MINUTES + case 'i': if ($min < 10) $dates .= '0'.$min; else $dates .= $min; break; + // SECONDS + case 'U': $dates .= $d; break; + case 's': if ($secs < 10) $dates .= '0'.$secs; else $dates .= $secs; break; + // AM/PM + // Note 00:00 to 11:59 is AM, while 12:00 to 23:59 is PM + case 'a': + if ($hour>=12) $dates .= 'pm'; + else $dates .= 'am'; + break; + case 'A': + if ($hour>=12) $dates .= 'PM'; + else $dates .= 'AM'; + break; + default: + $dates .= $fmt[$i]; break; + // ESCAPE + case "\\": + $i++; + if ($i < $max) $dates .= $fmt[$i]; + break; + } + } + return $dates; +} + +/** + Returns a timestamp given a GMT/UTC time. + Note that $is_dst is not implemented and is ignored. +*/ +function adodb_gmmktime($hr,$min,$sec,$mon=false,$day=false,$year=false,$is_dst=false) +{ + return adodb_mktime($hr,$min,$sec,$mon,$day,$year,$is_dst,true); +} + +/** + Return a timestamp given a local time. Originally by jackbbs. + Note that $is_dst is not implemented and is ignored. + + Not a very fast algorithm - O(n) operation. Could be optimized to O(1). +*/ +function adodb_mktime($hr,$min,$sec,$mon=false,$day=false,$year=false,$is_dst=false,$is_gmt=false) +{ + if (!defined('ADODB_TEST_DATES')) { + + if ($mon === false) { + return $is_gmt? @gmmktime($hr,$min,$sec): @mktime($hr,$min,$sec); + } + + // for windows, we don't check 1970 because with timezone differences, + // 1 Jan 1970 could generate negative timestamp, which is illegal + $usephpfns = (1970 < $year && $year < 2038 + || !defined('ADODB_NO_NEGATIVE_TS') && (1901 < $year && $year < 2038) + ); + + + if ($usephpfns && ($year + $mon/12+$day/365.25+$hr/(24*365.25) >= 2038)) $usephpfns = false; + + if ($usephpfns) { + return $is_gmt ? + @gmmktime($hr,$min,$sec,$mon,$day,$year): + @mktime($hr,$min,$sec,$mon,$day,$year); + } + } + + $gmt_different = ($is_gmt) ? 0 : adodb_get_gmt_diff($year,$mon,$day); + + /* + # disabled because some people place large values in $sec. + # however we need it for $mon because we use an array... + $hr = intval($hr); + $min = intval($min); + $sec = intval($sec); + */ + $mon = intval($mon); + $day = intval($day); + $year = intval($year); + + + $year = adodb_year_digit_check($year); + + if ($mon > 12) { + $y = floor(($mon-1)/ 12); + $year += $y; + $mon -= $y*12; + } else if ($mon < 1) { + $y = ceil((1-$mon) / 12); + $year -= $y; + $mon += $y*12; + } + + $_day_power = 86400; + $_hour_power = 3600; + $_min_power = 60; + + $_month_table_normal = array("",31,28,31,30,31,30,31,31,30,31,30,31); + $_month_table_leaf = array("",31,29,31,30,31,30,31,31,30,31,30,31); + + $_total_date = 0; + if ($year >= 1970) { + for ($a = 1970 ; $a <= $year; $a++) { + $leaf = _adodb_is_leap_year($a); + if ($leaf == true) { + $loop_table = $_month_table_leaf; + $_add_date = 366; + } else { + $loop_table = $_month_table_normal; + $_add_date = 365; + } + if ($a < $year) { + $_total_date += $_add_date; + } else { + for($b=1;$b<$mon;$b++) { + $_total_date += $loop_table[$b]; + } + } + } + $_total_date +=$day-1; + $ret = $_total_date * $_day_power + $hr * $_hour_power + $min * $_min_power + $sec + $gmt_different; + + } else { + for ($a = 1969 ; $a >= $year; $a--) { + $leaf = _adodb_is_leap_year($a); + if ($leaf == true) { + $loop_table = $_month_table_leaf; + $_add_date = 366; + } else { + $loop_table = $_month_table_normal; + $_add_date = 365; + } + if ($a > $year) { $_total_date += $_add_date; + } else { + for($b=12;$b>$mon;$b--) { + $_total_date += $loop_table[$b]; + } + } + } + $_total_date += $loop_table[$mon] - $day; + + $_day_time = $hr * $_hour_power + $min * $_min_power + $sec; + $_day_time = $_day_power - $_day_time; + $ret = -( $_total_date * $_day_power + $_day_time - $gmt_different); + if ($ret < -12220185600) $ret += 10*86400; // if earlier than 5 Oct 1582 - gregorian correction + else if ($ret < -12219321600) $ret = -12219321600; // if in limbo, reset to 15 Oct 1582. + } + //print " dmy=$day/$mon/$year $hr:$min:$sec => " .$ret; + return $ret; +} + +function adodb_gmstrftime($fmt, $ts=false) +{ + return adodb_strftime($fmt,$ts,true); +} + +// hack - convert to adodb_date +function adodb_strftime($fmt, $ts=false,$is_gmt=false) +{ +global $ADODB_DATE_LOCALE; + + if (!defined('ADODB_TEST_DATES')) { + if ((abs($ts) <= 0x7FFFFFFF)) { // check if number in 32-bit signed range + if (!defined('ADODB_NO_NEGATIVE_TS') || $ts >= 0) // if windows, must be +ve integer + return ($is_gmt)? @gmstrftime($fmt,$ts): @strftime($fmt,$ts); + + } + } + + if (empty($ADODB_DATE_LOCALE)) { + /* + $tstr = strtoupper(gmstrftime('%c',31366800)); // 30 Dec 1970, 1 am + $sep = substr($tstr,2,1); + $hasAM = strrpos($tstr,'M') !== false; + */ + # see http://phplens.com/lens/lensforum/msgs.php?id=14865 for reasoning, and changelog for version 0.24 + $dstr = gmstrftime('%x',31366800); // 30 Dec 1970, 1 am + $sep = substr($dstr,2,1); + $tstr = strtoupper(gmstrftime('%X',31366800)); // 30 Dec 1970, 1 am + $hasAM = strrpos($tstr,'M') !== false; + + $ADODB_DATE_LOCALE = array(); + $ADODB_DATE_LOCALE[] = strncmp($tstr,'30',2) == 0 ? 'd'.$sep.'m'.$sep.'y' : 'm'.$sep.'d'.$sep.'y'; + $ADODB_DATE_LOCALE[] = ($hasAM) ? 'h:i:s a' : 'H:i:s'; + + } + $inpct = false; + $fmtdate = ''; + for ($i=0,$max = strlen($fmt); $i < $max; $i++) { + $ch = $fmt[$i]; + if ($ch == '%') { + if ($inpct) { + $fmtdate .= '%'; + $inpct = false; + } else + $inpct = true; + } else if ($inpct) { + + $inpct = false; + switch($ch) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case 'E': + case 'O': + /* ignore format modifiers */ + $inpct = true; + break; + + case 'a': $fmtdate .= 'D'; break; + case 'A': $fmtdate .= 'l'; break; + case 'h': + case 'b': $fmtdate .= 'M'; break; + case 'B': $fmtdate .= 'F'; break; + case 'c': $fmtdate .= $ADODB_DATE_LOCALE[0].$ADODB_DATE_LOCALE[1]; break; + case 'C': $fmtdate .= '\C?'; break; // century + case 'd': $fmtdate .= 'd'; break; + case 'D': $fmtdate .= 'm/d/y'; break; + case 'e': $fmtdate .= 'j'; break; + case 'g': $fmtdate .= '\g?'; break; //? + case 'G': $fmtdate .= '\G?'; break; //? + case 'H': $fmtdate .= 'H'; break; + case 'I': $fmtdate .= 'h'; break; + case 'j': $fmtdate .= '?z'; $parsej = true; break; // wrong as j=1-based, z=0-basd + case 'm': $fmtdate .= 'm'; break; + case 'M': $fmtdate .= 'i'; break; + case 'n': $fmtdate .= "\n"; break; + case 'p': $fmtdate .= 'a'; break; + case 'r': $fmtdate .= 'h:i:s a'; break; + case 'R': $fmtdate .= 'H:i:s'; break; + case 'S': $fmtdate .= 's'; break; + case 't': $fmtdate .= "\t"; break; + case 'T': $fmtdate .= 'H:i:s'; break; + case 'u': $fmtdate .= '?u'; $parseu = true; break; // wrong strftime=1-based, date=0-based + case 'U': $fmtdate .= '?U'; $parseU = true; break;// wrong strftime=1-based, date=0-based + case 'x': $fmtdate .= $ADODB_DATE_LOCALE[0]; break; + case 'X': $fmtdate .= $ADODB_DATE_LOCALE[1]; break; + case 'w': $fmtdate .= '?w'; $parseu = true; break; // wrong strftime=1-based, date=0-based + case 'W': $fmtdate .= '?W'; $parseU = true; break;// wrong strftime=1-based, date=0-based + case 'y': $fmtdate .= 'y'; break; + case 'Y': $fmtdate .= 'Y'; break; + case 'Z': $fmtdate .= 'T'; break; + } + } else if (('A' <= ($ch) && ($ch) <= 'Z' ) || ('a' <= ($ch) && ($ch) <= 'z' )) + $fmtdate .= "\\".$ch; + else + $fmtdate .= $ch; + } + //echo "fmt=",$fmtdate,"
"; + if ($ts === false) $ts = time(); + $ret = adodb_date($fmtdate, $ts, $is_gmt); + return $ret; +} + + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/adodb.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/adodb.inc.php new file mode 100644 index 00000000..0187f55c --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/adodb.inc.php @@ -0,0 +1,4416 @@ +fields is available on EOF + $ADODB_FETCH_MODE, // DEFAULT, NUM, ASSOC or BOTH. Default follows native driver default... + $ADODB_GETONE_EOF, + $ADODB_QUOTE_FIELDNAMES; // Allows you to force quotes (backticks) around field names in queries generated by getinsertsql and getupdatesql. + + //============================================================================================== + // GLOBAL SETUP + //============================================================================================== + + $ADODB_EXTENSION = defined('ADODB_EXTENSION'); + + //********************************************************// + /* + Controls $ADODB_FORCE_TYPE mode. Default is ADODB_FORCE_VALUE (3). + Used in GetUpdateSql and GetInsertSql functions. Thx to Niko, nuko#mbnet.fi + + 0 = ignore empty fields. All empty fields in array are ignored. + 1 = force null. All empty, php null and string 'null' fields are changed to sql NULL values. + 2 = force empty. All empty, php null and string 'null' fields are changed to sql empty '' or 0 values. + 3 = force value. Value is left as it is. Php null and string 'null' are set to sql NULL values and empty fields '' are set to empty '' sql values. + */ + define('ADODB_FORCE_IGNORE',0); + define('ADODB_FORCE_NULL',1); + define('ADODB_FORCE_EMPTY',2); + define('ADODB_FORCE_VALUE',3); + //********************************************************// + + + if (!$ADODB_EXTENSION || ADODB_EXTENSION < 4.0) { + + define('ADODB_BAD_RS','

Bad $rs in %s. Connection or SQL invalid. Try using $connection->debug=true;

'); + + // allow [ ] @ ` " and . in table names + define('ADODB_TABLE_REGEX','([]0-9a-z_\:\"\`\.\@\[-]*)'); + + // prefetching used by oracle + if (!defined('ADODB_PREFETCH_ROWS')) define('ADODB_PREFETCH_ROWS',10); + + + /* + Controls ADODB_FETCH_ASSOC field-name case. Default is 2, use native case-names. + This currently works only with mssql, odbc, oci8po and ibase derived drivers. + + 0 = assoc lowercase field names. $rs->fields['orderid'] + 1 = assoc uppercase field names. $rs->fields['ORDERID'] + 2 = use native-case field names. $rs->fields['OrderID'] + */ + + define('ADODB_FETCH_DEFAULT',0); + define('ADODB_FETCH_NUM',1); + define('ADODB_FETCH_ASSOC',2); + define('ADODB_FETCH_BOTH',3); + + if (!defined('TIMESTAMP_FIRST_YEAR')) define('TIMESTAMP_FIRST_YEAR',100); + + // PHP's version scheme makes converting to numbers difficult - workaround + $_adodb_ver = (float) PHP_VERSION; + if ($_adodb_ver >= 5.2) { + define('ADODB_PHPVER',0x5200); + } else if ($_adodb_ver >= 5.0) { + define('ADODB_PHPVER',0x5000); + } else + die("PHP5 or later required. You are running ".PHP_VERSION); + } + + + //if (!defined('ADODB_ASSOC_CASE')) define('ADODB_ASSOC_CASE',2); + + + /** + Accepts $src and $dest arrays, replacing string $data + */ + function ADODB_str_replace($src, $dest, $data) + { + if (ADODB_PHPVER >= 0x4050) return str_replace($src,$dest,$data); + + $s = reset($src); + $d = reset($dest); + while ($s !== false) { + $data = str_replace($s,$d,$data); + $s = next($src); + $d = next($dest); + } + return $data; + } + + function ADODB_Setup() + { + GLOBAL + $ADODB_vers, // database version + $ADODB_COUNTRECS, // count number of records returned - slows down query + $ADODB_CACHE_DIR, // directory to cache recordsets + $ADODB_FETCH_MODE, + $ADODB_CACHE, + $ADODB_CACHE_CLASS, + $ADODB_FORCE_TYPE, + $ADODB_GETONE_EOF, + $ADODB_QUOTE_FIELDNAMES; + + if (empty($ADODB_CACHE_CLASS)) $ADODB_CACHE_CLASS = 'ADODB_Cache_File' ; + $ADODB_FETCH_MODE = ADODB_FETCH_DEFAULT; + $ADODB_FORCE_TYPE = ADODB_FORCE_VALUE; + $ADODB_GETONE_EOF = null; + + if (!isset($ADODB_CACHE_DIR)) { + $ADODB_CACHE_DIR = '/tmp'; //(isset($_ENV['TMP'])) ? $_ENV['TMP'] : '/tmp'; + } else { + // do not accept url based paths, eg. http:/ or ftp:/ + if (strpos($ADODB_CACHE_DIR,'://') !== false) + die("Illegal path http:// or ftp://"); + } + + + // Initialize random number generator for randomizing cache flushes + // -- note Since PHP 4.2.0, the seed becomes optional and defaults to a random value if omitted. + srand(((double)microtime())*1000000); + + /** + * ADODB version as a string. + */ + $ADODB_vers = 'V5.11 5 May 2010 (c) 2000-2010 John Lim (jlim#natsoft.com). All rights reserved. Released BSD & LGPL.'; + + /** + * Determines whether recordset->RecordCount() is used. + * Set to false for highest performance -- RecordCount() will always return -1 then + * for databases that provide "virtual" recordcounts... + */ + if (!isset($ADODB_COUNTRECS)) $ADODB_COUNTRECS = true; + } + + + //============================================================================================== + // CHANGE NOTHING BELOW UNLESS YOU ARE DESIGNING ADODB + //============================================================================================== + + ADODB_Setup(); + + //============================================================================================== + // CLASS ADOFieldObject + //============================================================================================== + /** + * Helper class for FetchFields -- holds info on a column + */ + class ADOFieldObject { + var $name = ''; + var $max_length=0; + var $type=""; +/* + // additional fields by dannym... (danny_milo@yahoo.com) + var $not_null = false; + // actually, this has already been built-in in the postgres, fbsql AND mysql module? ^-^ + // so we can as well make not_null standard (leaving it at "false" does not harm anyways) + + var $has_default = false; // this one I have done only in mysql and postgres for now ... + // others to come (dannym) + var $default_value; // default, if any, and supported. Check has_default first. +*/ + } + + // for transaction handling + + function ADODB_TransMonitor($dbms, $fn, $errno, $errmsg, $p1, $p2, &$thisConnection) + { + //print "Errorno ($fn errno=$errno m=$errmsg) "; + $thisConnection->_transOK = false; + if ($thisConnection->_oldRaiseFn) { + $fn = $thisConnection->_oldRaiseFn; + $fn($dbms, $fn, $errno, $errmsg, $p1, $p2,$thisConnection); + } + } + + //------------------ + // class for caching + class ADODB_Cache_File { + + var $createdir = true; // requires creation of temp dirs + + function ADODB_Cache_File() + { + global $ADODB_INCLUDED_CSV; + if (empty($ADODB_INCLUDED_CSV)) include_once(ADODB_DIR.'/adodb-csvlib.inc.php'); + } + + // write serialised recordset to cache item/file + function writecache($filename, $contents, $debug, $secs2cache) + { + return adodb_write_file($filename, $contents,$debug); + } + + // load serialised recordset and unserialise it + function &readcache($filename, &$err, $secs2cache, $rsClass) + { + $rs = csv2rs($filename,$err,$secs2cache,$rsClass); + return $rs; + } + + // flush all items in cache + function flushall($debug=false) + { + global $ADODB_CACHE_DIR; + + $rez = false; + + if (strlen($ADODB_CACHE_DIR) > 1) { + $rez = $this->_dirFlush($ADODB_CACHE_DIR); + if ($debug) ADOConnection::outp( "flushall: $dir
\n". $rez."
"); + } + return $rez; + } + + // flush one file in cache + function flushcache($f, $debug=false) + { + if (!@unlink($f)) { + if ($debug) ADOConnection::outp( "flushcache: failed for $f"); + } + } + + function getdirname($hash) + { + global $ADODB_CACHE_DIR; + if (!isset($this->notSafeMode)) $this->notSafeMode = !ini_get('safe_mode'); + return ($this->notSafeMode) ? $ADODB_CACHE_DIR.'/'.substr($hash,0,2) : $ADODB_CACHE_DIR; + } + + // create temp directories + function createdir($hash, $debug) + { + $dir = $this->getdirname($hash); + if ($this->notSafeMode && !file_exists($dir)) { + $oldu = umask(0); + if (!@mkdir($dir,0771)) if(!is_dir($dir) && $debug) ADOConnection::outp("Cannot create $dir"); + umask($oldu); + } + + return $dir; + } + + /** + * Private function to erase all of the files and subdirectories in a directory. + * + * Just specify the directory, and tell it if you want to delete the directory or just clear it out. + * Note: $kill_top_level is used internally in the function to flush subdirectories. + */ + function _dirFlush($dir, $kill_top_level = false) + { + if(!$dh = @opendir($dir)) return; + + while (($obj = readdir($dh))) { + if($obj=='.' || $obj=='..') continue; + $f = $dir.'/'.$obj; + + if (strpos($obj,'.cache')) @unlink($f); + if (is_dir($f)) $this->_dirFlush($f, true); + } + if ($kill_top_level === true) @rmdir($dir); + return true; + } + } + + //============================================================================================== + // CLASS ADOConnection + //============================================================================================== + + /** + * Connection object. For connecting to databases, and executing queries. + */ + class ADOConnection { + // + // PUBLIC VARS + // + var $dataProvider = 'native'; + var $databaseType = ''; /// RDBMS currently in use, eg. odbc, mysql, mssql + var $database = ''; /// Name of database to be used. + var $host = ''; /// The hostname of the database server + var $user = ''; /// The username which is used to connect to the database server. + var $password = ''; /// Password for the username. For security, we no longer store it. + var $debug = false; /// if set to true will output sql statements + var $maxblobsize = 262144; /// maximum size of blobs or large text fields (262144 = 256K)-- some db's die otherwise like foxpro + var $concat_operator = '+'; /// default concat operator -- change to || for Oracle/Interbase + var $substr = 'substr'; /// substring operator + var $length = 'length'; /// string length ofperator + var $random = 'rand()'; /// random function + var $upperCase = 'upper'; /// uppercase function + var $fmtDate = "'Y-m-d'"; /// used by DBDate() as the default date format used by the database + var $fmtTimeStamp = "'Y-m-d, h:i:s A'"; /// used by DBTimeStamp as the default timestamp fmt. + var $true = '1'; /// string that represents TRUE for a database + var $false = '0'; /// string that represents FALSE for a database + var $replaceQuote = "\\'"; /// string to use to replace quotes + var $nameQuote = '"'; /// string to use to quote identifiers and names + var $charSet=false; /// character set to use - only for interbase, postgres and oci8 + var $metaDatabasesSQL = ''; + var $metaTablesSQL = ''; + var $uniqueOrderBy = false; /// All order by columns have to be unique + var $emptyDate = ' '; + var $emptyTimeStamp = ' '; + var $lastInsID = false; + //-- + var $hasInsertID = false; /// supports autoincrement ID? + var $hasAffectedRows = false; /// supports affected rows for update/delete? + var $hasTop = false; /// support mssql/access SELECT TOP 10 * FROM TABLE + var $hasLimit = false; /// support pgsql/mysql SELECT * FROM TABLE LIMIT 10 + var $readOnly = false; /// this is a readonly database - used by phpLens + var $hasMoveFirst = false; /// has ability to run MoveFirst(), scrolling backwards + var $hasGenID = false; /// can generate sequences using GenID(); + var $hasTransactions = true; /// has transactions + //-- + var $genID = 0; /// sequence id used by GenID(); + var $raiseErrorFn = false; /// error function to call + var $isoDates = false; /// accepts dates in ISO format + var $cacheSecs = 3600; /// cache for 1 hour + + // memcache + var $memCache = false; /// should we use memCache instead of caching in files + var $memCacheHost; /// memCache host + var $memCachePort = 11211; /// memCache port + var $memCacheCompress = false; /// Use 'true' to store the item compressed (uses zlib) + + var $sysDate = false; /// name of function that returns the current date + var $sysTimeStamp = false; /// name of function that returns the current timestamp + var $sysUTimeStamp = false; // name of function that returns the current timestamp accurate to the microsecond or nearest fraction + var $arrayClass = 'ADORecordSet_array'; /// name of class used to generate array recordsets, which are pre-downloaded recordsets + + var $noNullStrings = false; /// oracle specific stuff - if true ensures that '' is converted to ' ' + var $numCacheHits = 0; + var $numCacheMisses = 0; + var $pageExecuteCountRows = true; + var $uniqueSort = false; /// indicates that all fields in order by must be unique + var $leftOuter = false; /// operator to use for left outer join in WHERE clause + var $rightOuter = false; /// operator to use for right outer join in WHERE clause + var $ansiOuter = false; /// whether ansi outer join syntax supported + var $autoRollback = false; // autoRollback on PConnect(). + var $poorAffectedRows = false; // affectedRows not working or unreliable + + var $fnExecute = false; + var $fnCacheExecute = false; + var $blobEncodeType = false; // false=not required, 'I'=encode to integer, 'C'=encode to char + var $rsPrefix = "ADORecordSet_"; + + var $autoCommit = true; /// do not modify this yourself - actually private + var $transOff = 0; /// temporarily disable transactions + var $transCnt = 0; /// count of nested transactions + + var $fetchMode=false; + + var $null2null = 'null'; // in autoexecute/getinsertsql/getupdatesql, this value will be converted to a null + var $bulkBind = false; // enable 2D Execute array + // + // PRIVATE VARS + // + var $_oldRaiseFn = false; + var $_transOK = null; + var $_connectionID = false; /// The returned link identifier whenever a successful database connection is made. + var $_errorMsg = false; /// A variable which was used to keep the returned last error message. The value will + /// then returned by the errorMsg() function + var $_errorCode = false; /// Last error code, not guaranteed to be used - only by oci8 + var $_queryID = false; /// This variable keeps the last created result link identifier + + var $_isPersistentConnection = false; /// A boolean variable to state whether its a persistent connection or normal connection. */ + var $_bindInputArray = false; /// set to true if ADOConnection.Execute() permits binding of array parameters. + var $_evalAll = false; + var $_affected = false; + var $_logsql = false; + var $_transmode = ''; // transaction mode + + + + /** + * Constructor + */ + function ADOConnection() + { + die('Virtual Class -- cannot instantiate'); + } + + static function Version() + { + global $ADODB_vers; + + $ok = preg_match( '/^[Vv]([0-9\.]+)/', $ADODB_vers, $matches ); + if (!$ok) return (float) substr($ADODB_vers,1); + else return $matches[1]; + } + + /** + Get server version info... + + @returns An array with 2 elements: $arr['string'] is the description string, + and $arr[version] is the version (also a string). + */ + function ServerInfo() + { + return array('description' => '', 'version' => ''); + } + + function IsConnected() + { + return !empty($this->_connectionID); + } + + function _findvers($str) + { + if (preg_match('/([0-9]+\.([0-9\.])+)/',$str, $arr)) return $arr[1]; + else return ''; + } + + /** + * All error messages go through this bottleneck function. + * You can define your own handler by defining the function name in ADODB_OUTP. + */ + static function outp($msg,$newline=true) + { + global $ADODB_FLUSH,$ADODB_OUTP; + + if (defined('ADODB_OUTP')) { + $fn = ADODB_OUTP; + $fn($msg,$newline); + return; + } else if (isset($ADODB_OUTP)) { + $fn = $ADODB_OUTP; + $fn($msg,$newline); + return; + } + + if ($newline) $msg .= "
\n"; + + if (isset($_SERVER['HTTP_USER_AGENT']) || !$newline) echo $msg; + else echo strip_tags($msg); + + + if (!empty($ADODB_FLUSH) && ob_get_length() !== false) flush(); // do not flush if output buffering enabled - useless - thx to Jesse Mullan + + } + + function Time() + { + $rs = $this->_Execute("select $this->sysTimeStamp"); + if ($rs && !$rs->EOF) return $this->UnixTimeStamp(reset($rs->fields)); + + return false; + } + + /** + * Connect to database + * + * @param [argHostname] Host to connect to + * @param [argUsername] Userid to login + * @param [argPassword] Associated password + * @param [argDatabaseName] database + * @param [forceNew] force new connection + * + * @return true or false + */ + function Connect($argHostname = "", $argUsername = "", $argPassword = "", $argDatabaseName = "", $forceNew = false) + { + if ($argHostname != "") $this->host = $argHostname; + if ($argUsername != "") $this->user = $argUsername; + if ($argPassword != "") $this->password = 'not stored'; // not stored for security reasons + if ($argDatabaseName != "") $this->database = $argDatabaseName; + + $this->_isPersistentConnection = false; + + if ($forceNew) { + if ($rez=$this->_nconnect($this->host, $this->user, $argPassword, $this->database)) return true; + } else { + if ($rez=$this->_connect($this->host, $this->user, $argPassword, $this->database)) return true; + } + if (isset($rez)) { + $err = $this->ErrorMsg(); + if (empty($err)) $err = "Connection error to server '$argHostname' with user '$argUsername'"; + $ret = false; + } else { + $err = "Missing extension for ".$this->dataProvider; + $ret = 0; + } + if ($fn = $this->raiseErrorFn) + $fn($this->databaseType,'CONNECT',$this->ErrorNo(),$err,$this->host,$this->database,$this); + + + $this->_connectionID = false; + if ($this->debug) ADOConnection::outp( $this->host.': '.$err); + return $ret; + } + + function _nconnect($argHostname, $argUsername, $argPassword, $argDatabaseName) + { + return $this->_connect($argHostname, $argUsername, $argPassword, $argDatabaseName); + } + + + /** + * Always force a new connection to database - currently only works with oracle + * + * @param [argHostname] Host to connect to + * @param [argUsername] Userid to login + * @param [argPassword] Associated password + * @param [argDatabaseName] database + * + * @return true or false + */ + function NConnect($argHostname = "", $argUsername = "", $argPassword = "", $argDatabaseName = "") + { + return $this->Connect($argHostname, $argUsername, $argPassword, $argDatabaseName, true); + } + + /** + * Establish persistent connect to database + * + * @param [argHostname] Host to connect to + * @param [argUsername] Userid to login + * @param [argPassword] Associated password + * @param [argDatabaseName] database + * + * @return return true or false + */ + function PConnect($argHostname = "", $argUsername = "", $argPassword = "", $argDatabaseName = "") + { + + if (defined('ADODB_NEVER_PERSIST')) + return $this->Connect($argHostname,$argUsername,$argPassword,$argDatabaseName); + + if ($argHostname != "") $this->host = $argHostname; + if ($argUsername != "") $this->user = $argUsername; + if ($argPassword != "") $this->password = 'not stored'; + if ($argDatabaseName != "") $this->database = $argDatabaseName; + + $this->_isPersistentConnection = true; + + if ($rez = $this->_pconnect($this->host, $this->user, $argPassword, $this->database)) return true; + if (isset($rez)) { + $err = $this->ErrorMsg(); + if (empty($err)) $err = "Connection error to server '$argHostname' with user '$argUsername'"; + $ret = false; + } else { + $err = "Missing extension for ".$this->dataProvider; + $ret = 0; + } + if ($fn = $this->raiseErrorFn) { + $fn($this->databaseType,'PCONNECT',$this->ErrorNo(),$err,$this->host,$this->database,$this); + } + + $this->_connectionID = false; + if ($this->debug) ADOConnection::outp( $this->host.': '.$err); + return $ret; + } + + function outp_throw($msg,$src='WARN',$sql='') + { + if (defined('ADODB_ERROR_HANDLER') && ADODB_ERROR_HANDLER == 'adodb_throw') { + adodb_throw($this->databaseType,$src,-9999,$msg,$sql,false,$this); + return; + } + ADOConnection::outp($msg); + } + + // create cache class. Code is backward compat with old memcache implementation + function _CreateCache() + { + global $ADODB_CACHE, $ADODB_CACHE_CLASS; + + if ($this->memCache) { + global $ADODB_INCLUDED_MEMCACHE; + + if (empty($ADODB_INCLUDED_MEMCACHE)) include(ADODB_DIR.'/adodb-memcache.lib.inc.php'); + $ADODB_CACHE = new ADODB_Cache_MemCache($this); + } else + $ADODB_CACHE = new $ADODB_CACHE_CLASS($this); + + } + + // Format date column in sql string given an input format that understands Y M D + function SQLDate($fmt, $col=false) + { + if (!$col) $col = $this->sysDate; + return $col; // child class implement + } + + /** + * Should prepare the sql statement and return the stmt resource. + * For databases that do not support this, we return the $sql. To ensure + * compatibility with databases that do not support prepare: + * + * $stmt = $db->Prepare("insert into table (id, name) values (?,?)"); + * $db->Execute($stmt,array(1,'Jill')) or die('insert failed'); + * $db->Execute($stmt,array(2,'Joe')) or die('insert failed'); + * + * @param sql SQL to send to database + * + * @return return FALSE, or the prepared statement, or the original sql if + * if the database does not support prepare. + * + */ + function Prepare($sql) + { + return $sql; + } + + /** + * Some databases, eg. mssql require a different function for preparing + * stored procedures. So we cannot use Prepare(). + * + * Should prepare the stored procedure and return the stmt resource. + * For databases that do not support this, we return the $sql. To ensure + * compatibility with databases that do not support prepare: + * + * @param sql SQL to send to database + * + * @return return FALSE, or the prepared statement, or the original sql if + * if the database does not support prepare. + * + */ + function PrepareSP($sql,$param=true) + { + return $this->Prepare($sql,$param); + } + + /** + * PEAR DB Compat + */ + function Quote($s) + { + return $this->qstr($s,false); + } + + /** + Requested by "Karsten Dambekalns" + */ + function QMagic($s) + { + return $this->qstr($s,get_magic_quotes_gpc()); + } + + function q(&$s) + { + #if (!empty($this->qNull)) if ($s == 'null') return $s; + $s = $this->qstr($s,false); + } + + /** + * PEAR DB Compat - do not use internally. + */ + function ErrorNative() + { + return $this->ErrorNo(); + } + + + /** + * PEAR DB Compat - do not use internally. + */ + function nextId($seq_name) + { + return $this->GenID($seq_name); + } + + /** + * Lock a row, will escalate and lock the table if row locking not supported + * will normally free the lock at the end of the transaction + * + * @param $table name of table to lock + * @param $where where clause to use, eg: "WHERE row=12". If left empty, will escalate to table lock + */ + function RowLock($table,$where,$col='1 as adodbignore') + { + return false; + } + + function CommitLock($table) + { + return $this->CommitTrans(); + } + + function RollbackLock($table) + { + return $this->RollbackTrans(); + } + + /** + * PEAR DB Compat - do not use internally. + * + * The fetch modes for NUMERIC and ASSOC for PEAR DB and ADODB are identical + * for easy porting :-) + * + * @param mode The fetchmode ADODB_FETCH_ASSOC or ADODB_FETCH_NUM + * @returns The previous fetch mode + */ + function SetFetchMode($mode) + { + $old = $this->fetchMode; + $this->fetchMode = $mode; + + if ($old === false) { + global $ADODB_FETCH_MODE; + return $ADODB_FETCH_MODE; + } + return $old; + } + + + /** + * PEAR DB Compat - do not use internally. + */ + function Query($sql, $inputarr=false) + { + $rs = $this->Execute($sql, $inputarr); + if (!$rs && defined('ADODB_PEAR')) return ADODB_PEAR_Error(); + return $rs; + } + + + /** + * PEAR DB Compat - do not use internally + */ + function LimitQuery($sql, $offset, $count, $params=false) + { + $rs = $this->SelectLimit($sql, $count, $offset, $params); + if (!$rs && defined('ADODB_PEAR')) return ADODB_PEAR_Error(); + return $rs; + } + + + /** + * PEAR DB Compat - do not use internally + */ + function Disconnect() + { + return $this->Close(); + } + + /* + Returns placeholder for parameter, eg. + $DB->Param('a') + + will return ':a' for Oracle, and '?' for most other databases... + + For databases that require positioned params, eg $1, $2, $3 for postgresql, + pass in Param(false) before setting the first parameter. + */ + function Param($name,$type='C') + { + return '?'; + } + + /* + InParameter and OutParameter are self-documenting versions of Parameter(). + */ + function InParameter(&$stmt,&$var,$name,$maxLen=4000,$type=false) + { + return $this->Parameter($stmt,$var,$name,false,$maxLen,$type); + } + + /* + */ + function OutParameter(&$stmt,&$var,$name,$maxLen=4000,$type=false) + { + return $this->Parameter($stmt,$var,$name,true,$maxLen,$type); + + } + + + /* + Usage in oracle + $stmt = $db->Prepare('select * from table where id =:myid and group=:group'); + $db->Parameter($stmt,$id,'myid'); + $db->Parameter($stmt,$group,'group',64); + $db->Execute(); + + @param $stmt Statement returned by Prepare() or PrepareSP(). + @param $var PHP variable to bind to + @param $name Name of stored procedure variable name to bind to. + @param [$isOutput] Indicates direction of parameter 0/false=IN 1=OUT 2= IN/OUT. This is ignored in oci8. + @param [$maxLen] Holds an maximum length of the variable. + @param [$type] The data type of $var. Legal values depend on driver. + + */ + function Parameter(&$stmt,&$var,$name,$isOutput=false,$maxLen=4000,$type=false) + { + return false; + } + + + function IgnoreErrors($saveErrs=false) + { + if (!$saveErrs) { + $saveErrs = array($this->raiseErrorFn,$this->_transOK); + $this->raiseErrorFn = false; + return $saveErrs; + } else { + $this->raiseErrorFn = $saveErrs[0]; + $this->_transOK = $saveErrs[1]; + } + } + + /** + Improved method of initiating a transaction. Used together with CompleteTrans(). + Advantages include: + + a. StartTrans/CompleteTrans is nestable, unlike BeginTrans/CommitTrans/RollbackTrans. + Only the outermost block is treated as a transaction.
+ b. CompleteTrans auto-detects SQL errors, and will rollback on errors, commit otherwise.
+ c. All BeginTrans/CommitTrans/RollbackTrans inside a StartTrans/CompleteTrans block + are disabled, making it backward compatible. + */ + function StartTrans($errfn = 'ADODB_TransMonitor') + { + if ($this->transOff > 0) { + $this->transOff += 1; + return true; + } + + $this->_oldRaiseFn = $this->raiseErrorFn; + $this->raiseErrorFn = $errfn; + $this->_transOK = true; + + if ($this->debug && $this->transCnt > 0) ADOConnection::outp("Bad Transaction: StartTrans called within BeginTrans"); + $ok = $this->BeginTrans(); + $this->transOff = 1; + return $ok; + } + + + /** + Used together with StartTrans() to end a transaction. Monitors connection + for sql errors, and will commit or rollback as appropriate. + + @autoComplete if true, monitor sql errors and commit and rollback as appropriate, + and if set to false force rollback even if no SQL error detected. + @returns true on commit, false on rollback. + */ + function CompleteTrans($autoComplete = true) + { + if ($this->transOff > 1) { + $this->transOff -= 1; + return true; + } + $this->raiseErrorFn = $this->_oldRaiseFn; + + $this->transOff = 0; + if ($this->_transOK && $autoComplete) { + if (!$this->CommitTrans()) { + $this->_transOK = false; + if ($this->debug) ADOConnection::outp("Smart Commit failed"); + } else + if ($this->debug) ADOConnection::outp("Smart Commit occurred"); + } else { + $this->_transOK = false; + $this->RollbackTrans(); + if ($this->debug) ADOCOnnection::outp("Smart Rollback occurred"); + } + + return $this->_transOK; + } + + /* + At the end of a StartTrans/CompleteTrans block, perform a rollback. + */ + function FailTrans() + { + if ($this->debug) + if ($this->transOff == 0) { + ADOConnection::outp("FailTrans outside StartTrans/CompleteTrans"); + } else { + ADOConnection::outp("FailTrans was called"); + adodb_backtrace(); + } + $this->_transOK = false; + } + + /** + Check if transaction has failed, only for Smart Transactions. + */ + function HasFailedTrans() + { + if ($this->transOff > 0) return $this->_transOK == false; + return false; + } + + /** + * Execute SQL + * + * @param sql SQL statement to execute, or possibly an array holding prepared statement ($sql[0] will hold sql text) + * @param [inputarr] holds the input data to bind to. Null elements will be set to null. + * @return RecordSet or false + */ + function Execute($sql,$inputarr=false) + { + if ($this->fnExecute) { + $fn = $this->fnExecute; + $ret = $fn($this,$sql,$inputarr); + if (isset($ret)) return $ret; + } + if ($inputarr) { + if (!is_array($inputarr)) $inputarr = array($inputarr); + + $element0 = reset($inputarr); + # is_object check because oci8 descriptors can be passed in + $array_2d = $this->bulkBind && is_array($element0) && !is_object(reset($element0)); + //remove extra memory copy of input -mikefedyk + unset($element0); + + if (!is_array($sql) && !$this->_bindInputArray) { + $sqlarr = explode('?',$sql); + $nparams = sizeof($sqlarr)-1; + if (!$array_2d) $inputarr = array($inputarr); + foreach($inputarr as $arr) { + $sql = ''; $i = 0; + //Use each() instead of foreach to reduce memory usage -mikefedyk + while(list(, $v) = each($arr)) { + $sql .= $sqlarr[$i]; + // from Ron Baldwin + // Only quote string types + $typ = gettype($v); + if ($typ == 'string') + //New memory copy of input created here -mikefedyk + $sql .= $this->qstr($v); + else if ($typ == 'double') + $sql .= str_replace(',','.',$v); // locales fix so 1.1 does not get converted to 1,1 + else if ($typ == 'boolean') + $sql .= $v ? $this->true : $this->false; + else if ($typ == 'object') { + if (method_exists($v, '__toString')) $sql .= $this->qstr($v->__toString()); + else $sql .= $this->qstr((string) $v); + } else if ($v === null) + $sql .= 'NULL'; + else + $sql .= $v; + $i += 1; + + if ($i == $nparams) break; + } // while + if (isset($sqlarr[$i])) { + $sql .= $sqlarr[$i]; + if ($i+1 != sizeof($sqlarr)) $this->outp_throw( "Input Array does not match ?: ".htmlspecialchars($sql),'Execute'); + } else if ($i != sizeof($sqlarr)) + $this->outp_throw( "Input array does not match ?: ".htmlspecialchars($sql),'Execute'); + + $ret = $this->_Execute($sql); + if (!$ret) return $ret; + } + } else { + if ($array_2d) { + if (is_string($sql)) + $stmt = $this->Prepare($sql); + else + $stmt = $sql; + + foreach($inputarr as $arr) { + $ret = $this->_Execute($stmt,$arr); + if (!$ret) return $ret; + } + } else { + $ret = $this->_Execute($sql,$inputarr); + } + } + } else { + $ret = $this->_Execute($sql,false); + } + + return $ret; + } + + + function _Execute($sql,$inputarr=false) + { + if ($this->debug) { + global $ADODB_INCLUDED_LIB; + if (empty($ADODB_INCLUDED_LIB)) include(ADODB_DIR.'/adodb-lib.inc.php'); + $this->_queryID = _adodb_debug_execute($this, $sql,$inputarr); + } else { + $this->_queryID = @$this->_query($sql,$inputarr); + } + + /************************ + // OK, query executed + *************************/ + + if ($this->_queryID === false) { // error handling if query fails + if ($this->debug == 99) adodb_backtrace(true,5); + $fn = $this->raiseErrorFn; + if ($fn) { + $fn($this->databaseType,'EXECUTE',$this->ErrorNo(),$this->ErrorMsg(),$sql,$inputarr,$this); + } + $false = false; + return $false; + } + + if ($this->_queryID === true) { // return simplified recordset for inserts/updates/deletes with lower overhead + $rsclass = $this->rsPrefix.'empty'; + $rs = (class_exists($rsclass)) ? new $rsclass(): new ADORecordSet_empty(); + + return $rs; + } + + // return real recordset from select statement + $rsclass = $this->rsPrefix.$this->databaseType; + $rs = new $rsclass($this->_queryID,$this->fetchMode); + $rs->connection = $this; // Pablo suggestion + $rs->Init(); + if (is_array($sql)) $rs->sql = $sql[0]; + else $rs->sql = $sql; + if ($rs->_numOfRows <= 0) { + global $ADODB_COUNTRECS; + if ($ADODB_COUNTRECS) { + if (!$rs->EOF) { + $rs = $this->_rs2rs($rs,-1,-1,!is_array($sql)); + $rs->_queryID = $this->_queryID; + } else + $rs->_numOfRows = 0; + } + } + return $rs; + } + + function CreateSequence($seqname='adodbseq',$startID=1) + { + if (empty($this->_genSeqSQL)) return false; + return $this->Execute(sprintf($this->_genSeqSQL,$seqname,$startID)); + } + + function DropSequence($seqname='adodbseq') + { + if (empty($this->_dropSeqSQL)) return false; + return $this->Execute(sprintf($this->_dropSeqSQL,$seqname)); + } + + /** + * Generates a sequence id and stores it in $this->genID; + * GenID is only available if $this->hasGenID = true; + * + * @param seqname name of sequence to use + * @param startID if sequence does not exist, start at this ID + * @return 0 if not supported, otherwise a sequence id + */ + function GenID($seqname='adodbseq',$startID=1) + { + if (!$this->hasGenID) { + return 0; // formerly returns false pre 1.60 + } + + $getnext = sprintf($this->_genIDSQL,$seqname); + + $holdtransOK = $this->_transOK; + + $save_handler = $this->raiseErrorFn; + $this->raiseErrorFn = ''; + @($rs = $this->Execute($getnext)); + $this->raiseErrorFn = $save_handler; + + if (!$rs) { + $this->_transOK = $holdtransOK; //if the status was ok before reset + $createseq = $this->Execute(sprintf($this->_genSeqSQL,$seqname,$startID)); + $rs = $this->Execute($getnext); + } + if ($rs && !$rs->EOF) $this->genID = reset($rs->fields); + else $this->genID = 0; // false + + if ($rs) $rs->Close(); + + return $this->genID; + } + + /** + * @param $table string name of the table, not needed by all databases (eg. mysql), default '' + * @param $column string name of the column, not needed by all databases (eg. mysql), default '' + * @return the last inserted ID. Not all databases support this. + */ + function Insert_ID($table='',$column='') + { + if ($this->_logsql && $this->lastInsID) return $this->lastInsID; + if ($this->hasInsertID) return $this->_insertid($table,$column); + if ($this->debug) { + ADOConnection::outp( '

Insert_ID error

'); + adodb_backtrace(); + } + return false; + } + + + /** + * Portable Insert ID. Pablo Roca + * + * @return the last inserted ID. All databases support this. But aware possible + * problems in multiuser environments. Heavy test this before deploying. + */ + function PO_Insert_ID($table="", $id="") + { + if ($this->hasInsertID){ + return $this->Insert_ID($table,$id); + } else { + return $this->GetOne("SELECT MAX($id) FROM $table"); + } + } + + /** + * @return # rows affected by UPDATE/DELETE + */ + function Affected_Rows() + { + if ($this->hasAffectedRows) { + if ($this->fnExecute === 'adodb_log_sql') { + if ($this->_logsql && $this->_affected !== false) return $this->_affected; + } + $val = $this->_affectedrows(); + return ($val < 0) ? false : $val; + } + + if ($this->debug) ADOConnection::outp( '

Affected_Rows error

',false); + return false; + } + + + /** + * @return the last error message + */ + function ErrorMsg() + { + if ($this->_errorMsg) return '!! '.strtoupper($this->dataProvider.' '.$this->databaseType).': '.$this->_errorMsg; + else return ''; + } + + + /** + * @return the last error number. Normally 0 means no error. + */ + function ErrorNo() + { + return ($this->_errorMsg) ? -1 : 0; + } + + function MetaError($err=false) + { + include_once(ADODB_DIR."/adodb-error.inc.php"); + if ($err === false) $err = $this->ErrorNo(); + return adodb_error($this->dataProvider,$this->databaseType,$err); + } + + function MetaErrorMsg($errno) + { + include_once(ADODB_DIR."/adodb-error.inc.php"); + return adodb_errormsg($errno); + } + + /** + * @returns an array with the primary key columns in it. + */ + function MetaPrimaryKeys($table, $owner=false) + { + // owner not used in base class - see oci8 + $p = array(); + $objs = $this->MetaColumns($table); + if ($objs) { + foreach($objs as $v) { + if (!empty($v->primary_key)) + $p[] = $v->name; + } + } + if (sizeof($p)) return $p; + if (function_exists('ADODB_VIEW_PRIMARYKEYS')) + return ADODB_VIEW_PRIMARYKEYS($this->databaseType, $this->database, $table, $owner); + return false; + } + + /** + * @returns assoc array where keys are tables, and values are foreign keys + */ + function MetaForeignKeys($table, $owner=false, $upper=false) + { + return false; + } + /** + * Choose a database to connect to. Many databases do not support this. + * + * @param dbName is the name of the database to select + * @return true or false + */ + function SelectDB($dbName) + {return false;} + + + /** + * Will select, getting rows from $offset (1-based), for $nrows. + * This simulates the MySQL "select * from table limit $offset,$nrows" , and + * the PostgreSQL "select * from table limit $nrows offset $offset". Note that + * MySQL and PostgreSQL parameter ordering is the opposite of the other. + * eg. + * SelectLimit('select * from table',3); will return rows 1 to 3 (1-based) + * SelectLimit('select * from table',3,2); will return rows 3 to 5 (1-based) + * + * Uses SELECT TOP for Microsoft databases (when $this->hasTop is set) + * BUG: Currently SelectLimit fails with $sql with LIMIT or TOP clause already set + * + * @param sql + * @param [offset] is the row to start calculations from (1-based) + * @param [nrows] is the number of rows to get + * @param [inputarr] array of bind variables + * @param [secs2cache] is a private parameter only used by jlim + * @return the recordset ($rs->databaseType == 'array') + */ + function SelectLimit($sql,$nrows=-1,$offset=-1, $inputarr=false,$secs2cache=0) + { + if ($this->hasTop && $nrows > 0) { + // suggested by Reinhard Balling. Access requires top after distinct + // Informix requires first before distinct - F Riosa + $ismssql = (strpos($this->databaseType,'mssql') !== false); + if ($ismssql) $isaccess = false; + else $isaccess = (strpos($this->databaseType,'access') !== false); + + if ($offset <= 0) { + + // access includes ties in result + if ($isaccess) { + $sql = preg_replace( + '/(^\s*select\s+(distinctrow|distinct)?)/i','\\1 '.$this->hasTop.' '.((integer)$nrows).' ',$sql); + + if ($secs2cache != 0) { + $ret = $this->CacheExecute($secs2cache, $sql,$inputarr); + } else { + $ret = $this->Execute($sql,$inputarr); + } + return $ret; // PHP5 fix + } else if ($ismssql){ + $sql = preg_replace( + '/(^\s*select\s+(distinctrow|distinct)?)/i','\\1 '.$this->hasTop.' '.((integer)$nrows).' ',$sql); + } else { + $sql = preg_replace( + '/(^\s*select\s)/i','\\1 '.$this->hasTop.' '.((integer)$nrows).' ',$sql); + } + } else { + $nn = $nrows + $offset; + if ($isaccess || $ismssql) { + $sql = preg_replace( + '/(^\s*select\s+(distinctrow|distinct)?)/i','\\1 '.$this->hasTop.' '.$nn.' ',$sql); + } else { + $sql = preg_replace( + '/(^\s*select\s)/i','\\1 '.$this->hasTop.' '.$nn.' ',$sql); + } + } + } + + // if $offset>0, we want to skip rows, and $ADODB_COUNTRECS is set, we buffer rows + // 0 to offset-1 which will be discarded anyway. So we disable $ADODB_COUNTRECS. + global $ADODB_COUNTRECS; + + $savec = $ADODB_COUNTRECS; + $ADODB_COUNTRECS = false; + + + if ($secs2cache != 0) $rs = $this->CacheExecute($secs2cache,$sql,$inputarr); + else $rs = $this->Execute($sql,$inputarr); + + $ADODB_COUNTRECS = $savec; + if ($rs && !$rs->EOF) { + $rs = $this->_rs2rs($rs,$nrows,$offset); + } + //print_r($rs); + return $rs; + } + + /** + * Create serializable recordset. Breaks rs link to connection. + * + * @param rs the recordset to serialize + */ + function SerializableRS(&$rs) + { + $rs2 = $this->_rs2rs($rs); + $ignore = false; + $rs2->connection = $ignore; + + return $rs2; + } + + /** + * Convert database recordset to an array recordset + * input recordset's cursor should be at beginning, and + * old $rs will be closed. + * + * @param rs the recordset to copy + * @param [nrows] number of rows to retrieve (optional) + * @param [offset] offset by number of rows (optional) + * @return the new recordset + */ + function &_rs2rs(&$rs,$nrows=-1,$offset=-1,$close=true) + { + if (! $rs) { + $false = false; + return $false; + } + $dbtype = $rs->databaseType; + if (!$dbtype) { + $rs = $rs; // required to prevent crashing in 4.2.1, but does not happen in 4.3.1 -- why ? + return $rs; + } + if (($dbtype == 'array' || $dbtype == 'csv') && $nrows == -1 && $offset == -1) { + $rs->MoveFirst(); + $rs = $rs; // required to prevent crashing in 4.2.1, but does not happen in 4.3.1-- why ? + return $rs; + } + $flds = array(); + for ($i=0, $max=$rs->FieldCount(); $i < $max; $i++) { + $flds[] = $rs->FetchField($i); + } + + $arr = $rs->GetArrayLimit($nrows,$offset); + //print_r($arr); + if ($close) $rs->Close(); + + $arrayClass = $this->arrayClass; + + $rs2 = new $arrayClass(); + $rs2->connection = $this; + $rs2->sql = $rs->sql; + $rs2->dataProvider = $this->dataProvider; + $rs2->InitArrayFields($arr,$flds); + $rs2->fetchMode = isset($rs->adodbFetchMode) ? $rs->adodbFetchMode : $rs->fetchMode; + return $rs2; + } + + /* + * Return all rows. Compat with PEAR DB + */ + function GetAll($sql, $inputarr=false) + { + $arr = $this->GetArray($sql,$inputarr); + return $arr; + } + + function GetAssoc($sql, $inputarr=false,$force_array = false, $first2cols = false) + { + $rs = $this->Execute($sql, $inputarr); + if (!$rs) { + $false = false; + return $false; + } + $arr = $rs->GetAssoc($force_array,$first2cols); + return $arr; + } + + function CacheGetAssoc($secs2cache, $sql=false, $inputarr=false,$force_array = false, $first2cols = false) + { + if (!is_numeric($secs2cache)) { + $first2cols = $force_array; + $force_array = $inputarr; + } + $rs = $this->CacheExecute($secs2cache, $sql, $inputarr); + if (!$rs) { + $false = false; + return $false; + } + $arr = $rs->GetAssoc($force_array,$first2cols); + return $arr; + } + + /** + * Return first element of first row of sql statement. Recordset is disposed + * for you. + * + * @param sql SQL statement + * @param [inputarr] input bind array + */ + function GetOne($sql,$inputarr=false) + { + global $ADODB_COUNTRECS,$ADODB_GETONE_EOF; + $crecs = $ADODB_COUNTRECS; + $ADODB_COUNTRECS = false; + + $ret = false; + $rs = $this->Execute($sql,$inputarr); + if ($rs) { + if ($rs->EOF) $ret = $ADODB_GETONE_EOF; + else $ret = reset($rs->fields); + + $rs->Close(); + } + $ADODB_COUNTRECS = $crecs; + return $ret; + } + + // $where should include 'WHERE fld=value' + function GetMedian($table, $field,$where = '') + { + $total = $this->GetOne("select count(*) from $table $where"); + if (!$total) return false; + + $midrow = (integer) ($total/2); + $rs = $this->SelectLimit("select $field from $table $where order by 1",1,$midrow); + if ($rs && !$rs->EOF) return reset($rs->fields); + return false; + } + + + function CacheGetOne($secs2cache,$sql=false,$inputarr=false) + { + global $ADODB_GETONE_EOF; + $ret = false; + $rs = $this->CacheExecute($secs2cache,$sql,$inputarr); + if ($rs) { + if ($rs->EOF) $ret = $ADODB_GETONE_EOF; + else $ret = reset($rs->fields); + $rs->Close(); + } + + return $ret; + } + + function GetCol($sql, $inputarr = false, $trim = false) + { + + $rs = $this->Execute($sql, $inputarr); + if ($rs) { + $rv = array(); + if ($trim) { + while (!$rs->EOF) { + $rv[] = trim(reset($rs->fields)); + $rs->MoveNext(); + } + } else { + while (!$rs->EOF) { + $rv[] = reset($rs->fields); + $rs->MoveNext(); + } + } + $rs->Close(); + } else + $rv = false; + return $rv; + } + + function CacheGetCol($secs, $sql = false, $inputarr = false,$trim=false) + { + $rs = $this->CacheExecute($secs, $sql, $inputarr); + if ($rs) { + $rv = array(); + if ($trim) { + while (!$rs->EOF) { + $rv[] = trim(reset($rs->fields)); + $rs->MoveNext(); + } + } else { + while (!$rs->EOF) { + $rv[] = reset($rs->fields); + $rs->MoveNext(); + } + } + $rs->Close(); + } else + $rv = false; + + return $rv; + } + + function Transpose(&$rs,$addfieldnames=true) + { + $rs2 = $this->_rs2rs($rs); + $false = false; + if (!$rs2) return $false; + + $rs2->_transpose($addfieldnames); + return $rs2; + } + + /* + Calculate the offset of a date for a particular database and generate + appropriate SQL. Useful for calculating future/past dates and storing + in a database. + + If dayFraction=1.5 means 1.5 days from now, 1.0/24 for 1 hour. + */ + function OffsetDate($dayFraction,$date=false) + { + if (!$date) $date = $this->sysDate; + return '('.$date.'+'.$dayFraction.')'; + } + + + /** + * + * @param sql SQL statement + * @param [inputarr] input bind array + */ + function GetArray($sql,$inputarr=false) + { + global $ADODB_COUNTRECS; + + $savec = $ADODB_COUNTRECS; + $ADODB_COUNTRECS = false; + $rs = $this->Execute($sql,$inputarr); + $ADODB_COUNTRECS = $savec; + if (!$rs) + if (defined('ADODB_PEAR')) { + $cls = ADODB_PEAR_Error(); + return $cls; + } else { + $false = false; + return $false; + } + $arr = $rs->GetArray(); + $rs->Close(); + return $arr; + } + + function CacheGetAll($secs2cache,$sql=false,$inputarr=false) + { + $arr = $this->CacheGetArray($secs2cache,$sql,$inputarr); + return $arr; + } + + function CacheGetArray($secs2cache,$sql=false,$inputarr=false) + { + global $ADODB_COUNTRECS; + + $savec = $ADODB_COUNTRECS; + $ADODB_COUNTRECS = false; + $rs = $this->CacheExecute($secs2cache,$sql,$inputarr); + $ADODB_COUNTRECS = $savec; + + if (!$rs) + if (defined('ADODB_PEAR')) { + $cls = ADODB_PEAR_Error(); + return $cls; + } else { + $false = false; + return $false; + } + $arr = $rs->GetArray(); + $rs->Close(); + return $arr; + } + + function GetRandRow($sql, $arr= false) + { + $rezarr = $this->GetAll($sql, $arr); + $sz = sizeof($rezarr); + return $rezarr[abs(rand()) % $sz]; + } + + /** + * Return one row of sql statement. Recordset is disposed for you. + * + * @param sql SQL statement + * @param [inputarr] input bind array + */ + function GetRow($sql,$inputarr=false) + { + global $ADODB_COUNTRECS; + $crecs = $ADODB_COUNTRECS; + $ADODB_COUNTRECS = false; + + $rs = $this->Execute($sql,$inputarr); + + $ADODB_COUNTRECS = $crecs; + if ($rs) { + if (!$rs->EOF) $arr = $rs->fields; + else $arr = array(); + $rs->Close(); + return $arr; + } + + $false = false; + return $false; + } + + function CacheGetRow($secs2cache,$sql=false,$inputarr=false) + { + $rs = $this->CacheExecute($secs2cache,$sql,$inputarr); + if ($rs) { + if (!$rs->EOF) $arr = $rs->fields; + else $arr = array(); + + $rs->Close(); + return $arr; + } + $false = false; + return $false; + } + + /** + * Insert or replace a single record. Note: this is not the same as MySQL's replace. + * ADOdb's Replace() uses update-insert semantics, not insert-delete-duplicates of MySQL. + * Also note that no table locking is done currently, so it is possible that the + * record be inserted twice by two programs... + * + * $this->Replace('products', array('prodname' =>"'Nails'","price" => 3.99), 'prodname'); + * + * $table table name + * $fieldArray associative array of data (you must quote strings yourself). + * $keyCol the primary key field name or if compound key, array of field names + * autoQuote set to true to use a hueristic to quote strings. Works with nulls and numbers + * but does not work with dates nor SQL functions. + * has_autoinc the primary key is an auto-inc field, so skip in insert. + * + * Currently blob replace not supported + * + * returns 0 = fail, 1 = update, 2 = insert + */ + + function Replace($table, $fieldArray, $keyCol, $autoQuote=false, $has_autoinc=false) + { + global $ADODB_INCLUDED_LIB; + if (empty($ADODB_INCLUDED_LIB)) include(ADODB_DIR.'/adodb-lib.inc.php'); + + return _adodb_replace($this, $table, $fieldArray, $keyCol, $autoQuote, $has_autoinc); + } + + + /** + * Will select, getting rows from $offset (1-based), for $nrows. + * This simulates the MySQL "select * from table limit $offset,$nrows" , and + * the PostgreSQL "select * from table limit $nrows offset $offset". Note that + * MySQL and PostgreSQL parameter ordering is the opposite of the other. + * eg. + * CacheSelectLimit(15,'select * from table',3); will return rows 1 to 3 (1-based) + * CacheSelectLimit(15,'select * from table',3,2); will return rows 3 to 5 (1-based) + * + * BUG: Currently CacheSelectLimit fails with $sql with LIMIT or TOP clause already set + * + * @param [secs2cache] seconds to cache data, set to 0 to force query. This is optional + * @param sql + * @param [offset] is the row to start calculations from (1-based) + * @param [nrows] is the number of rows to get + * @param [inputarr] array of bind variables + * @return the recordset ($rs->databaseType == 'array') + */ + function CacheSelectLimit($secs2cache,$sql,$nrows=-1,$offset=-1,$inputarr=false) + { + if (!is_numeric($secs2cache)) { + if ($sql === false) $sql = -1; + if ($offset == -1) $offset = false; + // sql, nrows, offset,inputarr + $rs = $this->SelectLimit($secs2cache,$sql,$nrows,$offset,$this->cacheSecs); + } else { + if ($sql === false) $this->outp_throw("Warning: \$sql missing from CacheSelectLimit()",'CacheSelectLimit'); + $rs = $this->SelectLimit($sql,$nrows,$offset,$inputarr,$secs2cache); + } + return $rs; + } + + + /** + * Flush cached recordsets that match a particular $sql statement. + * If $sql == false, then we purge all files in the cache. + */ + + /** + * Flush cached recordsets that match a particular $sql statement. + * If $sql == false, then we purge all files in the cache. + */ + function CacheFlush($sql=false,$inputarr=false) + { + global $ADODB_CACHE_DIR, $ADODB_CACHE; + + if (empty($ADODB_CACHE)) return false; + + if (!$sql) { + $ADODB_CACHE->flushall($this->debug); + return; + } + + $f = $this->_gencachename($sql.serialize($inputarr),false); + return $ADODB_CACHE->flushcache($f, $this->debug); + } + + + /** + * Private function to generate filename for caching. + * Filename is generated based on: + * + * - sql statement + * - database type (oci8, ibase, ifx, etc) + * - database name + * - userid + * - setFetchMode (adodb 4.23) + * + * When not in safe mode, we create 256 sub-directories in the cache directory ($ADODB_CACHE_DIR). + * Assuming that we can have 50,000 files per directory with good performance, + * then we can scale to 12.8 million unique cached recordsets. Wow! + */ + function _gencachename($sql,$createdir) + { + global $ADODB_CACHE, $ADODB_CACHE_DIR; + + if ($this->fetchMode === false) { + global $ADODB_FETCH_MODE; + $mode = $ADODB_FETCH_MODE; + } else { + $mode = $this->fetchMode; + } + $m = md5($sql.$this->databaseType.$this->database.$this->user.$mode); + if (!$ADODB_CACHE->createdir) return $m; + if (!$createdir) $dir = $ADODB_CACHE->getdirname($m); + else $dir = $ADODB_CACHE->createdir($m, $this->debug); + + return $dir.'/adodb_'.$m.'.cache'; + } + + + /** + * Execute SQL, caching recordsets. + * + * @param [secs2cache] seconds to cache data, set to 0 to force query. + * This is an optional parameter. + * @param sql SQL statement to execute + * @param [inputarr] holds the input data to bind to + * @return RecordSet or false + */ + function CacheExecute($secs2cache,$sql=false,$inputarr=false) + { + global $ADODB_CACHE; + + if (empty($ADODB_CACHE)) $this->_CreateCache(); + + if (!is_numeric($secs2cache)) { + $inputarr = $sql; + $sql = $secs2cache; + $secs2cache = $this->cacheSecs; + } + + if (is_array($sql)) { + $sqlparam = $sql; + $sql = $sql[0]; + } else + $sqlparam = $sql; + + + $md5file = $this->_gencachename($sql.serialize($inputarr),true); + $err = ''; + + if ($secs2cache > 0){ + $rs = $ADODB_CACHE->readcache($md5file,$err,$secs2cache,$this->arrayClass); + $this->numCacheHits += 1; + } else { + $err='Timeout 1'; + $rs = false; + $this->numCacheMisses += 1; + } + + if (!$rs) { + // no cached rs found + if ($this->debug) { + if (get_magic_quotes_runtime() && !$this->memCache) { + ADOConnection::outp("Please disable magic_quotes_runtime - it corrupts cache files :("); + } + if ($this->debug !== -1) ADOConnection::outp( " $md5file cache failure: $err (see sql below)"); + } + + $rs = $this->Execute($sqlparam,$inputarr); + + if ($rs) { + + $eof = $rs->EOF; + $rs = $this->_rs2rs($rs); // read entire recordset into memory immediately + $rs->timeCreated = time(); // used by caching + $txt = _rs2serialize($rs,false,$sql); // serialize + + $ok = $ADODB_CACHE->writecache($md5file,$txt,$this->debug, $secs2cache); + if (!$ok) { + if ($ok === false) { + $em = 'Cache write error'; + $en = -32000; + + if ($fn = $this->raiseErrorFn) { + $fn($this->databaseType,'CacheExecute', $en, $em, $md5file,$sql,$this); + } + } else { + $em = 'Cache file locked warning'; + $en = -32001; + // do not call error handling for just a warning + } + + if ($this->debug) ADOConnection::outp( " ".$em); + } + if ($rs->EOF && !$eof) { + $rs->MoveFirst(); + //$rs = csv2rs($md5file,$err); + $rs->connection = $this; // Pablo suggestion + } + + } else if (!$this->memCache) + $ADODB_CACHE->flushcache($md5file); + } else { + $this->_errorMsg = ''; + $this->_errorCode = 0; + + if ($this->fnCacheExecute) { + $fn = $this->fnCacheExecute; + $fn($this, $secs2cache, $sql, $inputarr); + } + // ok, set cached object found + $rs->connection = $this; // Pablo suggestion + if ($this->debug){ + if ($this->debug == 99) adodb_backtrace(); + $inBrowser = isset($_SERVER['HTTP_USER_AGENT']); + $ttl = $rs->timeCreated + $secs2cache - time(); + $s = is_array($sql) ? $sql[0] : $sql; + if ($inBrowser) $s = ''.htmlspecialchars($s).''; + + ADOConnection::outp( " $md5file reloaded, ttl=$ttl [ $s ]"); + } + } + return $rs; + } + + + /* + Similar to PEAR DB's autoExecute(), except that + $mode can be 'INSERT' or 'UPDATE' or DB_AUTOQUERY_INSERT or DB_AUTOQUERY_UPDATE + If $mode == 'UPDATE', then $where is compulsory as a safety measure. + + $forceUpdate means that even if the data has not changed, perform update. + */ + function AutoExecute($table, $fields_values, $mode = 'INSERT', $where = FALSE, $forceUpdate=true, $magicq=false) + { + $false = false; + $sql = 'SELECT * FROM '.$table; + if ($where!==FALSE) $sql .= ' WHERE '.$where; + else if ($mode == 'UPDATE' || $mode == 2 /* DB_AUTOQUERY_UPDATE */) { + $this->outp_throw('AutoExecute: Illegal mode=UPDATE with empty WHERE clause','AutoExecute'); + return $false; + } + + $rs = $this->SelectLimit($sql,1); + if (!$rs) return $false; // table does not exist + $rs->tableName = $table; + $rs->sql = $sql; + + switch((string) $mode) { + case 'UPDATE': + case '2': + $sql = $this->GetUpdateSQL($rs, $fields_values, $forceUpdate, $magicq); + break; + case 'INSERT': + case '1': + $sql = $this->GetInsertSQL($rs, $fields_values, $magicq); + break; + default: + $this->outp_throw("AutoExecute: Unknown mode=$mode",'AutoExecute'); + return $false; + } + $ret = false; + if ($sql) $ret = $this->Execute($sql); + if ($ret) $ret = true; + return $ret; + } + + + /** + * Generates an Update Query based on an existing recordset. + * $arrFields is an associative array of fields with the value + * that should be assigned. + * + * Note: This function should only be used on a recordset + * that is run against a single table and sql should only + * be a simple select stmt with no groupby/orderby/limit + * + * "Jonathan Younger" + */ + function GetUpdateSQL(&$rs, $arrFields,$forceUpdate=false,$magicq=false,$force=null) + { + global $ADODB_INCLUDED_LIB; + + //********************************************************// + //This is here to maintain compatibility + //with older adodb versions. Sets force type to force nulls if $forcenulls is set. + if (!isset($force)) { + global $ADODB_FORCE_TYPE; + $force = $ADODB_FORCE_TYPE; + } + //********************************************************// + + if (empty($ADODB_INCLUDED_LIB)) include(ADODB_DIR.'/adodb-lib.inc.php'); + return _adodb_getupdatesql($this,$rs,$arrFields,$forceUpdate,$magicq,$force); + } + + /** + * Generates an Insert Query based on an existing recordset. + * $arrFields is an associative array of fields with the value + * that should be assigned. + * + * Note: This function should only be used on a recordset + * that is run against a single table. + */ + function GetInsertSQL(&$rs, $arrFields,$magicq=false,$force=null) + { + global $ADODB_INCLUDED_LIB; + if (!isset($force)) { + global $ADODB_FORCE_TYPE; + $force = $ADODB_FORCE_TYPE; + + } + if (empty($ADODB_INCLUDED_LIB)) include(ADODB_DIR.'/adodb-lib.inc.php'); + return _adodb_getinsertsql($this,$rs,$arrFields,$magicq,$force); + } + + + /** + * Update a blob column, given a where clause. There are more sophisticated + * blob handling functions that we could have implemented, but all require + * a very complex API. Instead we have chosen something that is extremely + * simple to understand and use. + * + * Note: $blobtype supports 'BLOB' and 'CLOB', default is BLOB of course. + * + * Usage to update a $blobvalue which has a primary key blob_id=1 into a + * field blobtable.blobcolumn: + * + * UpdateBlob('blobtable', 'blobcolumn', $blobvalue, 'blob_id=1'); + * + * Insert example: + * + * $conn->Execute('INSERT INTO blobtable (id, blobcol) VALUES (1, null)'); + * $conn->UpdateBlob('blobtable','blobcol',$blob,'id=1'); + */ + + function UpdateBlob($table,$column,$val,$where,$blobtype='BLOB') + { + return $this->Execute("UPDATE $table SET $column=? WHERE $where",array($val)) != false; + } + + /** + * Usage: + * UpdateBlob('TABLE', 'COLUMN', '/path/to/file', 'ID=1'); + * + * $blobtype supports 'BLOB' and 'CLOB' + * + * $conn->Execute('INSERT INTO blobtable (id, blobcol) VALUES (1, null)'); + * $conn->UpdateBlob('blobtable','blobcol',$blobpath,'id=1'); + */ + function UpdateBlobFile($table,$column,$path,$where,$blobtype='BLOB') + { + $fd = fopen($path,'rb'); + if ($fd === false) return false; + $val = fread($fd,filesize($path)); + fclose($fd); + return $this->UpdateBlob($table,$column,$val,$where,$blobtype); + } + + function BlobDecode($blob) + { + return $blob; + } + + function BlobEncode($blob) + { + return $blob; + } + + function SetCharSet($charset) + { + return false; + } + + function IfNull( $field, $ifNull ) + { + return " CASE WHEN $field is null THEN $ifNull ELSE $field END "; + } + + function LogSQL($enable=true) + { + include_once(ADODB_DIR.'/adodb-perf.inc.php'); + + if ($enable) $this->fnExecute = 'adodb_log_sql'; + else $this->fnExecute = false; + + $old = $this->_logsql; + $this->_logsql = $enable; + if ($enable && !$old) $this->_affected = false; + return $old; + } + + function GetCharSet() + { + return false; + } + + /** + * Usage: + * UpdateClob('TABLE', 'COLUMN', $var, 'ID=1', 'CLOB'); + * + * $conn->Execute('INSERT INTO clobtable (id, clobcol) VALUES (1, null)'); + * $conn->UpdateClob('clobtable','clobcol',$clob,'id=1'); + */ + function UpdateClob($table,$column,$val,$where) + { + return $this->UpdateBlob($table,$column,$val,$where,'CLOB'); + } + + // not the fastest implementation - quick and dirty - jlim + // for best performance, use the actual $rs->MetaType(). + function MetaType($t,$len=-1,$fieldobj=false) + { + + if (empty($this->_metars)) { + $rsclass = $this->rsPrefix.$this->databaseType; + $this->_metars = new $rsclass(false,$this->fetchMode); + $this->_metars->connection = $this; + } + return $this->_metars->MetaType($t,$len,$fieldobj); + } + + + /** + * Change the SQL connection locale to a specified locale. + * This is used to get the date formats written depending on the client locale. + */ + function SetDateLocale($locale = 'En') + { + $this->locale = $locale; + switch (strtoupper($locale)) + { + case 'EN': + $this->fmtDate="'Y-m-d'"; + $this->fmtTimeStamp = "'Y-m-d H:i:s'"; + break; + + case 'US': + $this->fmtDate = "'m-d-Y'"; + $this->fmtTimeStamp = "'m-d-Y H:i:s'"; + break; + + case 'PT_BR': + case 'NL': + case 'FR': + case 'RO': + case 'IT': + $this->fmtDate="'d-m-Y'"; + $this->fmtTimeStamp = "'d-m-Y H:i:s'"; + break; + + case 'GE': + $this->fmtDate="'d.m.Y'"; + $this->fmtTimeStamp = "'d.m.Y H:i:s'"; + break; + + default: + $this->fmtDate="'Y-m-d'"; + $this->fmtTimeStamp = "'Y-m-d H:i:s'"; + break; + } + } + + /** + * GetActiveRecordsClass Performs an 'ALL' query + * + * @param mixed $class This string represents the class of the current active record + * @param mixed $table Table used by the active record object + * @param mixed $whereOrderBy Where, order, by clauses + * @param mixed $bindarr + * @param mixed $primkeyArr + * @param array $extra Query extras: limit, offset... + * @param mixed $relations Associative array: table's foreign name, "hasMany", "belongsTo" + * @access public + * @return void + */ + function GetActiveRecordsClass( + $class, $table,$whereOrderBy=false,$bindarr=false, $primkeyArr=false, + $extra=array(), + $relations=array()) + { + global $_ADODB_ACTIVE_DBS; + ## reduce overhead of adodb.inc.php -- moved to adodb-active-record.inc.php + ## if adodb-active-recordx is loaded -- should be no issue as they will probably use Find() + if (!isset($_ADODB_ACTIVE_DBS))include_once(ADODB_DIR.'/adodb-active-record.inc.php'); + return adodb_GetActiveRecordsClass($this, $class, $table, $whereOrderBy, $bindarr, $primkeyArr, $extra, $relations); + } + + function GetActiveRecords($table,$where=false,$bindarr=false,$primkeyArr=false) + { + $arr = $this->GetActiveRecordsClass('ADODB_Active_Record', $table, $where, $bindarr, $primkeyArr); + return $arr; + } + + /** + * Close Connection + */ + function Close() + { + $rez = $this->_close(); + $this->_connectionID = false; + return $rez; + } + + /** + * Begin a Transaction. Must be followed by CommitTrans() or RollbackTrans(). + * + * @return true if succeeded or false if database does not support transactions + */ + function BeginTrans() + { + if ($this->debug) ADOConnection::outp("BeginTrans: Transactions not supported for this driver"); + return false; + } + + /* set transaction mode */ + function SetTransactionMode( $transaction_mode ) + { + $transaction_mode = $this->MetaTransaction($transaction_mode, $this->dataProvider); + $this->_transmode = $transaction_mode; + } +/* +http://msdn2.microsoft.com/en-US/ms173763.aspx +http://dev.mysql.com/doc/refman/5.0/en/innodb-transaction-isolation.html +http://www.postgresql.org/docs/8.1/interactive/sql-set-transaction.html +http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10759/statements_10005.htm +*/ + function MetaTransaction($mode,$db) + { + $mode = strtoupper($mode); + $mode = str_replace('ISOLATION LEVEL ','',$mode); + + switch($mode) { + + case 'READ UNCOMMITTED': + switch($db) { + case 'oci8': + case 'oracle': + return 'ISOLATION LEVEL READ COMMITTED'; + default: + return 'ISOLATION LEVEL READ UNCOMMITTED'; + } + break; + + case 'READ COMMITTED': + return 'ISOLATION LEVEL READ COMMITTED'; + break; + + case 'REPEATABLE READ': + switch($db) { + case 'oci8': + case 'oracle': + return 'ISOLATION LEVEL SERIALIZABLE'; + default: + return 'ISOLATION LEVEL REPEATABLE READ'; + } + break; + + case 'SERIALIZABLE': + return 'ISOLATION LEVEL SERIALIZABLE'; + break; + + default: + return $mode; + } + } + + /** + * If database does not support transactions, always return true as data always commited + * + * @param $ok set to false to rollback transaction, true to commit + * + * @return true/false. + */ + function CommitTrans($ok=true) + { return true;} + + + /** + * If database does not support transactions, rollbacks always fail, so return false + * + * @return true/false. + */ + function RollbackTrans() + { return false;} + + + /** + * return the databases that the driver can connect to. + * Some databases will return an empty array. + * + * @return an array of database names. + */ + function MetaDatabases() + { + global $ADODB_FETCH_MODE; + + if ($this->metaDatabasesSQL) { + $save = $ADODB_FETCH_MODE; + $ADODB_FETCH_MODE = ADODB_FETCH_NUM; + + if ($this->fetchMode !== false) $savem = $this->SetFetchMode(false); + + $arr = $this->GetCol($this->metaDatabasesSQL); + if (isset($savem)) $this->SetFetchMode($savem); + $ADODB_FETCH_MODE = $save; + + return $arr; + } + + return false; + } + + + /** + * @param ttype can either be 'VIEW' or 'TABLE' or false. + * If false, both views and tables are returned. + * "VIEW" returns only views + * "TABLE" returns only tables + * @param showSchema returns the schema/user with the table name, eg. USER.TABLE + * @param mask is the input mask - only supported by oci8 and postgresql + * + * @return array of tables for current database. + */ + function MetaTables($ttype=false,$showSchema=false,$mask=false) + { + global $ADODB_FETCH_MODE; + + + $false = false; + if ($mask) { + return $false; + } + if ($this->metaTablesSQL) { + $save = $ADODB_FETCH_MODE; + $ADODB_FETCH_MODE = ADODB_FETCH_NUM; + + if ($this->fetchMode !== false) $savem = $this->SetFetchMode(false); + + $rs = $this->Execute($this->metaTablesSQL); + if (isset($savem)) $this->SetFetchMode($savem); + $ADODB_FETCH_MODE = $save; + + if ($rs === false) return $false; + $arr = $rs->GetArray(); + $arr2 = array(); + + if ($hast = ($ttype && isset($arr[0][1]))) { + $showt = strncmp($ttype,'T',1); + } + + for ($i=0; $i < sizeof($arr); $i++) { + if ($hast) { + if ($showt == 0) { + if (strncmp($arr[$i][1],'T',1) == 0) $arr2[] = trim($arr[$i][0]); + } else { + if (strncmp($arr[$i][1],'V',1) == 0) $arr2[] = trim($arr[$i][0]); + } + } else + $arr2[] = trim($arr[$i][0]); + } + $rs->Close(); + return $arr2; + } + return $false; + } + + + function _findschema(&$table,&$schema) + { + if (!$schema && ($at = strpos($table,'.')) !== false) { + $schema = substr($table,0,$at); + $table = substr($table,$at+1); + } + } + + /** + * List columns in a database as an array of ADOFieldObjects. + * See top of file for definition of object. + * + * @param $table table name to query + * @param $normalize makes table name case-insensitive (required by some databases) + * @schema is optional database schema to use - not supported by all databases. + * + * @return array of ADOFieldObjects for current table. + */ + function MetaColumns($table,$normalize=true) + { + global $ADODB_FETCH_MODE; + + $false = false; + + if (!empty($this->metaColumnsSQL)) { + + $schema = false; + $this->_findschema($table,$schema); + + $save = $ADODB_FETCH_MODE; + $ADODB_FETCH_MODE = ADODB_FETCH_NUM; + if ($this->fetchMode !== false) $savem = $this->SetFetchMode(false); + $rs = $this->Execute(sprintf($this->metaColumnsSQL,($normalize)?strtoupper($table):$table)); + if (isset($savem)) $this->SetFetchMode($savem); + $ADODB_FETCH_MODE = $save; + if ($rs === false || $rs->EOF) return $false; + + $retarr = array(); + while (!$rs->EOF) { //print_r($rs->fields); + $fld = new ADOFieldObject(); + $fld->name = $rs->fields[0]; + $fld->type = $rs->fields[1]; + if (isset($rs->fields[3]) && $rs->fields[3]) { + if ($rs->fields[3]>0) $fld->max_length = $rs->fields[3]; + $fld->scale = $rs->fields[4]; + if ($fld->scale>0) $fld->max_length += 1; + } else + $fld->max_length = $rs->fields[2]; + + if ($ADODB_FETCH_MODE == ADODB_FETCH_NUM) $retarr[] = $fld; + else $retarr[strtoupper($fld->name)] = $fld; + $rs->MoveNext(); + } + $rs->Close(); + return $retarr; + } + return $false; + } + + /** + * List indexes on a table as an array. + * @param table table name to query + * @param primary true to only show primary keys. Not actually used for most databases + * + * @return array of indexes on current table. Each element represents an index, and is itself an associative array. + + Array ( + [name_of_index] => Array + ( + [unique] => true or false + [columns] => Array + ( + [0] => firstname + [1] => lastname + ) + ) + */ + function MetaIndexes($table, $primary = false, $owner = false) + { + $false = false; + return $false; + } + + /** + * List columns names in a table as an array. + * @param table table name to query + * + * @return array of column names for current table. + */ + function MetaColumnNames($table, $numIndexes=false,$useattnum=false /* only for postgres */) + { + $objarr = $this->MetaColumns($table); + if (!is_array($objarr)) { + $false = false; + return $false; + } + $arr = array(); + if ($numIndexes) { + $i = 0; + if ($useattnum) { + foreach($objarr as $v) + $arr[$v->attnum] = $v->name; + + } else + foreach($objarr as $v) $arr[$i++] = $v->name; + } else + foreach($objarr as $v) $arr[strtoupper($v->name)] = $v->name; + + return $arr; + } + + /** + * Different SQL databases used different methods to combine strings together. + * This function provides a wrapper. + * + * param s variable number of string parameters + * + * Usage: $db->Concat($str1,$str2); + * + * @return concatenated string + */ + function Concat() + { + $arr = func_get_args(); + return implode($this->concat_operator, $arr); + } + + + /** + * Converts a date "d" to a string that the database can understand. + * + * @param d a date in Unix date time format. + * + * @return date string in database date format + */ + function DBDate($d, $isfld=false) + { + if (empty($d) && $d !== 0) return 'null'; + if ($isfld) return $d; + + if (is_object($d)) return $d->format($this->fmtDate); + + + if (is_string($d) && !is_numeric($d)) { + if ($d === 'null' || strncmp($d,"'",1) === 0) return $d; + if ($this->isoDates) return "'$d'"; + $d = ADOConnection::UnixDate($d); + } + + return adodb_date($this->fmtDate,$d); + } + + function BindDate($d) + { + $d = $this->DBDate($d); + if (strncmp($d,"'",1)) return $d; + + return substr($d,1,strlen($d)-2); + } + + function BindTimeStamp($d) + { + $d = $this->DBTimeStamp($d); + if (strncmp($d,"'",1)) return $d; + + return substr($d,1,strlen($d)-2); + } + + + /** + * Converts a timestamp "ts" to a string that the database can understand. + * + * @param ts a timestamp in Unix date time format. + * + * @return timestamp string in database timestamp format + */ + function DBTimeStamp($ts,$isfld=false) + { + if (empty($ts) && $ts !== 0) return 'null'; + if ($isfld) return $ts; + if (is_object($ts)) return $ts->format($this->fmtTimeStamp); + + # strlen(14) allows YYYYMMDDHHMMSS format + if (!is_string($ts) || (is_numeric($ts) && strlen($ts)<14)) + return adodb_date($this->fmtTimeStamp,$ts); + + if ($ts === 'null') return $ts; + if ($this->isoDates && strlen($ts) !== 14) return "'$ts'"; + + $ts = ADOConnection::UnixTimeStamp($ts); + return adodb_date($this->fmtTimeStamp,$ts); + } + + /** + * Also in ADORecordSet. + * @param $v is a date string in YYYY-MM-DD format + * + * @return date in unix timestamp format, or 0 if before TIMESTAMP_FIRST_YEAR, or false if invalid date format + */ + static function UnixDate($v) + { + if (is_object($v)) { + // odbtp support + //( [year] => 2004 [month] => 9 [day] => 4 [hour] => 12 [minute] => 44 [second] => 8 [fraction] => 0 ) + return adodb_mktime($v->hour,$v->minute,$v->second,$v->month,$v->day, $v->year); + } + + if (is_numeric($v) && strlen($v) !== 8) return $v; + if (!preg_match( "|^([0-9]{4})[-/\.]?([0-9]{1,2})[-/\.]?([0-9]{1,2})|", + ($v), $rr)) return false; + + if ($rr[1] <= TIMESTAMP_FIRST_YEAR) return 0; + // h-m-s-MM-DD-YY + return @adodb_mktime(0,0,0,$rr[2],$rr[3],$rr[1]); + } + + + /** + * Also in ADORecordSet. + * @param $v is a timestamp string in YYYY-MM-DD HH-NN-SS format + * + * @return date in unix timestamp format, or 0 if before TIMESTAMP_FIRST_YEAR, or false if invalid date format + */ + static function UnixTimeStamp($v) + { + if (is_object($v)) { + // odbtp support + //( [year] => 2004 [month] => 9 [day] => 4 [hour] => 12 [minute] => 44 [second] => 8 [fraction] => 0 ) + return adodb_mktime($v->hour,$v->minute,$v->second,$v->month,$v->day, $v->year); + } + + if (!preg_match( + "|^([0-9]{4})[-/\.]?([0-9]{1,2})[-/\.]?([0-9]{1,2})[ ,-]*(([0-9]{1,2}):?([0-9]{1,2}):?([0-9\.]{1,4}))?|", + ($v), $rr)) return false; + + if ($rr[1] <= TIMESTAMP_FIRST_YEAR && $rr[2]<= 1) return 0; + + // h-m-s-MM-DD-YY + if (!isset($rr[5])) return adodb_mktime(0,0,0,$rr[2],$rr[3],$rr[1]); + return @adodb_mktime($rr[5],$rr[6],$rr[7],$rr[2],$rr[3],$rr[1]); + } + + /** + * Also in ADORecordSet. + * + * Format database date based on user defined format. + * + * @param v is the character date in YYYY-MM-DD format, returned by database + * @param fmt is the format to apply to it, using date() + * + * @return a date formated as user desires + */ + + function UserDate($v,$fmt='Y-m-d',$gmt=false) + { + $tt = $this->UnixDate($v); + + // $tt == -1 if pre TIMESTAMP_FIRST_YEAR + if (($tt === false || $tt == -1) && $v != false) return $v; + else if ($tt == 0) return $this->emptyDate; + else if ($tt == -1) { // pre-TIMESTAMP_FIRST_YEAR + } + + return ($gmt) ? adodb_gmdate($fmt,$tt) : adodb_date($fmt,$tt); + + } + + /** + * + * @param v is the character timestamp in YYYY-MM-DD hh:mm:ss format + * @param fmt is the format to apply to it, using date() + * + * @return a timestamp formated as user desires + */ + function UserTimeStamp($v,$fmt='Y-m-d H:i:s',$gmt=false) + { + if (!isset($v)) return $this->emptyTimeStamp; + # strlen(14) allows YYYYMMDDHHMMSS format + if (is_numeric($v) && strlen($v)<14) return ($gmt) ? adodb_gmdate($fmt,$v) : adodb_date($fmt,$v); + $tt = $this->UnixTimeStamp($v); + // $tt == -1 if pre TIMESTAMP_FIRST_YEAR + if (($tt === false || $tt == -1) && $v != false) return $v; + if ($tt == 0) return $this->emptyTimeStamp; + return ($gmt) ? adodb_gmdate($fmt,$tt) : adodb_date($fmt,$tt); + } + + function escape($s,$magic_quotes=false) + { + return $this->addq($s,$magic_quotes); + } + + /** + * Quotes a string, without prefixing nor appending quotes. + */ + function addq($s,$magic_quotes=false) + { + if (!$magic_quotes) { + + if ($this->replaceQuote[0] == '\\'){ + // only since php 4.0.5 + $s = adodb_str_replace(array('\\',"\0"),array('\\\\',"\\\0"),$s); + //$s = str_replace("\0","\\\0", str_replace('\\','\\\\',$s)); + } + return str_replace("'",$this->replaceQuote,$s); + } + + // undo magic quotes for " + $s = str_replace('\\"','"',$s); + + if ($this->replaceQuote == "\\'" || ini_get('magic_quotes_sybase')) // ' already quoted, no need to change anything + return $s; + else {// change \' to '' for sybase/mssql + $s = str_replace('\\\\','\\',$s); + return str_replace("\\'",$this->replaceQuote,$s); + } + } + + /** + * Correctly quotes a string so that all strings are escaped. We prefix and append + * to the string single-quotes. + * An example is $db->qstr("Don't bother",magic_quotes_runtime()); + * + * @param s the string to quote + * @param [magic_quotes] if $s is GET/POST var, set to get_magic_quotes_gpc(). + * This undoes the stupidity of magic quotes for GPC. + * + * @return quoted string to be sent back to database + */ + function qstr($s,$magic_quotes=false) + { + if (!$magic_quotes) { + + if ($this->replaceQuote[0] == '\\'){ + // only since php 4.0.5 + $s = adodb_str_replace(array('\\',"\0"),array('\\\\',"\\\0"),$s); + //$s = str_replace("\0","\\\0", str_replace('\\','\\\\',$s)); + } + return "'".str_replace("'",$this->replaceQuote,$s)."'"; + } + + // undo magic quotes for " + $s = str_replace('\\"','"',$s); + + if ($this->replaceQuote == "\\'" || ini_get('magic_quotes_sybase')) // ' already quoted, no need to change anything + return "'$s'"; + else {// change \' to '' for sybase/mssql + $s = str_replace('\\\\','\\',$s); + return "'".str_replace("\\'",$this->replaceQuote,$s)."'"; + } + } + + + /** + * Will select the supplied $page number from a recordset, given that it is paginated in pages of + * $nrows rows per page. It also saves two boolean values saying if the given page is the first + * and/or last one of the recordset. Added by Ivαn Oliva to provide recordset pagination. + * + * See readme.htm#ex8 for an example of usage. + * + * @param sql + * @param nrows is the number of rows per page to get + * @param page is the page number to get (1-based) + * @param [inputarr] array of bind variables + * @param [secs2cache] is a private parameter only used by jlim + * @return the recordset ($rs->databaseType == 'array') + * + * NOTE: phpLens uses a different algorithm and does not use PageExecute(). + * + */ + function PageExecute($sql, $nrows, $page, $inputarr=false, $secs2cache=0) + { + global $ADODB_INCLUDED_LIB; + if (empty($ADODB_INCLUDED_LIB)) include(ADODB_DIR.'/adodb-lib.inc.php'); + if ($this->pageExecuteCountRows) $rs = _adodb_pageexecute_all_rows($this, $sql, $nrows, $page, $inputarr, $secs2cache); + else $rs = _adodb_pageexecute_no_last_page($this, $sql, $nrows, $page, $inputarr, $secs2cache); + return $rs; + } + + + /** + * Will select the supplied $page number from a recordset, given that it is paginated in pages of + * $nrows rows per page. It also saves two boolean values saying if the given page is the first + * and/or last one of the recordset. Added by Ivαn Oliva to provide recordset pagination. + * + * @param secs2cache seconds to cache data, set to 0 to force query + * @param sql + * @param nrows is the number of rows per page to get + * @param page is the page number to get (1-based) + * @param [inputarr] array of bind variables + * @return the recordset ($rs->databaseType == 'array') + */ + function CachePageExecute($secs2cache, $sql, $nrows, $page,$inputarr=false) + { + /*switch($this->dataProvider) { + case 'postgres': + case 'mysql': + break; + default: $secs2cache = 0; break; + }*/ + $rs = $this->PageExecute($sql,$nrows,$page,$inputarr,$secs2cache); + return $rs; + } + +} // end class ADOConnection + + + + //============================================================================================== + // CLASS ADOFetchObj + //============================================================================================== + + /** + * Internal placeholder for record objects. Used by ADORecordSet->FetchObj(). + */ + class ADOFetchObj { + }; + + //============================================================================================== + // CLASS ADORecordSet_empty + //============================================================================================== + + class ADODB_Iterator_empty implements Iterator { + + private $rs; + + function __construct($rs) + { + $this->rs = $rs; + } + function rewind() + { + } + + function valid() + { + return !$this->rs->EOF; + } + + function key() + { + return false; + } + + function current() + { + return false; + } + + function next() + { + } + + function __call($func, $params) + { + return call_user_func_array(array($this->rs, $func), $params); + } + + function hasMore() + { + return false; + } + + } + + + /** + * Lightweight recordset when there are no records to be returned + */ + class ADORecordSet_empty implements IteratorAggregate + { + var $dataProvider = 'empty'; + var $databaseType = false; + var $EOF = true; + var $_numOfRows = 0; + var $fields = false; + var $connection = false; + function RowCount() {return 0;} + function RecordCount() {return 0;} + function PO_RecordCount(){return 0;} + function Close(){return true;} + function FetchRow() {return false;} + function FieldCount(){ return 0;} + function Init() {} + function getIterator() {return new ADODB_Iterator_empty($this);} + } + + //============================================================================================== + // DATE AND TIME FUNCTIONS + //============================================================================================== + if (!defined('ADODB_DATE_VERSION')) include(ADODB_DIR.'/adodb-time.inc.php'); + + //============================================================================================== + // CLASS ADORecordSet + //============================================================================================== + + class ADODB_Iterator implements Iterator { + + private $rs; + + function __construct($rs) + { + $this->rs = $rs; + } + function rewind() + { + $this->rs->MoveFirst(); + } + + function valid() + { + return !$this->rs->EOF; + } + + function key() + { + return $this->rs->_currentRow; + } + + function current() + { + return $this->rs->fields; + } + + function next() + { + $this->rs->MoveNext(); + } + + function __call($func, $params) + { + return call_user_func_array(array($this->rs, $func), $params); + } + + + function hasMore() + { + return !$this->rs->EOF; + } + + } + + + + /** + * RecordSet class that represents the dataset returned by the database. + * To keep memory overhead low, this class holds only the current row in memory. + * No prefetching of data is done, so the RecordCount() can return -1 ( which + * means recordcount not known). + */ + class ADORecordSet implements IteratorAggregate { + /* + * public variables + */ + var $dataProvider = "native"; + var $fields = false; /// holds the current row data + var $blobSize = 100; /// any varchar/char field this size or greater is treated as a blob + /// in other words, we use a text area for editing. + var $canSeek = false; /// indicates that seek is supported + var $sql; /// sql text + var $EOF = false; /// Indicates that the current record position is after the last record in a Recordset object. + + var $emptyTimeStamp = ' '; /// what to display when $time==0 + var $emptyDate = ' '; /// what to display when $time==0 + var $debug = false; + var $timeCreated=0; /// datetime in Unix format rs created -- for cached recordsets + + var $bind = false; /// used by Fields() to hold array - should be private? + var $fetchMode; /// default fetch mode + var $connection = false; /// the parent connection + /* + * private variables + */ + var $_numOfRows = -1; /** number of rows, or -1 */ + var $_numOfFields = -1; /** number of fields in recordset */ + var $_queryID = -1; /** This variable keeps the result link identifier. */ + var $_currentRow = -1; /** This variable keeps the current row in the Recordset. */ + var $_closed = false; /** has recordset been closed */ + var $_inited = false; /** Init() should only be called once */ + var $_obj; /** Used by FetchObj */ + var $_names; /** Used by FetchObj */ + + var $_currentPage = -1; /** Added by Ivαn Oliva to implement recordset pagination */ + var $_atFirstPage = false; /** Added by Ivαn Oliva to implement recordset pagination */ + var $_atLastPage = false; /** Added by Ivαn Oliva to implement recordset pagination */ + var $_lastPageNo = -1; + var $_maxRecordCount = 0; + var $datetime = false; + + /** + * Constructor + * + * @param queryID this is the queryID returned by ADOConnection->_query() + * + */ + function ADORecordSet($queryID) + { + $this->_queryID = $queryID; + } + + function getIterator() + { + return new ADODB_Iterator($this); + } + + /* this is experimental - i don't really know what to return... */ + function __toString() + { + include_once(ADODB_DIR.'/toexport.inc.php'); + return _adodb_export($this,',',',',false,true); + } + + + function Init() + { + if ($this->_inited) return; + $this->_inited = true; + if ($this->_queryID) @$this->_initrs(); + else { + $this->_numOfRows = 0; + $this->_numOfFields = 0; + } + if ($this->_numOfRows != 0 && $this->_numOfFields && $this->_currentRow == -1) { + + $this->_currentRow = 0; + if ($this->EOF = ($this->_fetch() === false)) { + $this->_numOfRows = 0; // _numOfRows could be -1 + } + } else { + $this->EOF = true; + } + } + + + /** + * Generate a SELECT tag string from a recordset, and return the string. + * If the recordset has 2 cols, we treat the 1st col as the containing + * the text to display to the user, and 2nd col as the return value. Default + * strings are compared with the FIRST column. + * + * @param name name of SELECT tag + * @param [defstr] the value to hilite. Use an array for multiple hilites for listbox. + * @param [blank1stItem] true to leave the 1st item in list empty + * @param [multiple] true for listbox, false for popup + * @param [size] #rows to show for listbox. not used by popup + * @param [selectAttr] additional attributes to defined for SELECT tag. + * useful for holding javascript onChange='...' handlers. + & @param [compareFields0] when we have 2 cols in recordset, we compare the defstr with + * column 0 (1st col) if this is true. This is not documented. + * + * @return HTML + * + * changes by glen.davies@cce.ac.nz to support multiple hilited items + */ + function GetMenu($name,$defstr='',$blank1stItem=true,$multiple=false, + $size=0, $selectAttr='',$compareFields0=true) + { + global $ADODB_INCLUDED_LIB; + if (empty($ADODB_INCLUDED_LIB)) include(ADODB_DIR.'/adodb-lib.inc.php'); + return _adodb_getmenu($this, $name,$defstr,$blank1stItem,$multiple, + $size, $selectAttr,$compareFields0); + } + + + + /** + * Generate a SELECT tag string from a recordset, and return the string. + * If the recordset has 2 cols, we treat the 1st col as the containing + * the text to display to the user, and 2nd col as the return value. Default + * strings are compared with the SECOND column. + * + */ + function GetMenu2($name,$defstr='',$blank1stItem=true,$multiple=false,$size=0, $selectAttr='') + { + return $this->GetMenu($name,$defstr,$blank1stItem,$multiple, + $size, $selectAttr,false); + } + + /* + Grouped Menu + */ + function GetMenu3($name,$defstr='',$blank1stItem=true,$multiple=false, + $size=0, $selectAttr='') + { + global $ADODB_INCLUDED_LIB; + if (empty($ADODB_INCLUDED_LIB)) include(ADODB_DIR.'/adodb-lib.inc.php'); + return _adodb_getmenu_gp($this, $name,$defstr,$blank1stItem,$multiple, + $size, $selectAttr,false); + } + + /** + * return recordset as a 2-dimensional array. + * + * @param [nRows] is the number of rows to return. -1 means every row. + * + * @return an array indexed by the rows (0-based) from the recordset + */ + function GetArray($nRows = -1) + { + global $ADODB_EXTENSION; if ($ADODB_EXTENSION) { + $results = adodb_getall($this,$nRows); + return $results; + } + $results = array(); + $cnt = 0; + while (!$this->EOF && $nRows != $cnt) { + $results[] = $this->fields; + $this->MoveNext(); + $cnt++; + } + return $results; + } + + function GetAll($nRows = -1) + { + $arr = $this->GetArray($nRows); + return $arr; + } + + /* + * Some databases allow multiple recordsets to be returned. This function + * will return true if there is a next recordset, or false if no more. + */ + function NextRecordSet() + { + return false; + } + + /** + * return recordset as a 2-dimensional array. + * Helper function for ADOConnection->SelectLimit() + * + * @param offset is the row to start calculations from (1-based) + * @param [nrows] is the number of rows to return + * + * @return an array indexed by the rows (0-based) from the recordset + */ + function GetArrayLimit($nrows,$offset=-1) + { + if ($offset <= 0) { + $arr = $this->GetArray($nrows); + return $arr; + } + + $this->Move($offset); + + $results = array(); + $cnt = 0; + while (!$this->EOF && $nrows != $cnt) { + $results[$cnt++] = $this->fields; + $this->MoveNext(); + } + + return $results; + } + + + /** + * Synonym for GetArray() for compatibility with ADO. + * + * @param [nRows] is the number of rows to return. -1 means every row. + * + * @return an array indexed by the rows (0-based) from the recordset + */ + function GetRows($nRows = -1) + { + $arr = $this->GetArray($nRows); + return $arr; + } + + /** + * return whole recordset as a 2-dimensional associative array if there are more than 2 columns. + * The first column is treated as the key and is not included in the array. + * If there is only 2 columns, it will return a 1 dimensional array of key-value pairs unless + * $force_array == true. + * + * @param [force_array] has only meaning if we have 2 data columns. If false, a 1 dimensional + * array is returned, otherwise a 2 dimensional array is returned. If this sounds confusing, + * read the source. + * + * @param [first2cols] means if there are more than 2 cols, ignore the remaining cols and + * instead of returning array[col0] => array(remaining cols), return array[col0] => col1 + * + * @return an associative array indexed by the first column of the array, + * or false if the data has less than 2 cols. + */ + function GetAssoc($force_array = false, $first2cols = false) + { + global $ADODB_EXTENSION; + + $cols = $this->_numOfFields; + if ($cols < 2) { + $false = false; + return $false; + } + $numIndex = isset($this->fields[0]); + $results = array(); + + if (!$first2cols && ($cols > 2 || $force_array)) { + if ($ADODB_EXTENSION) { + if ($numIndex) { + while (!$this->EOF) { + $results[trim($this->fields[0])] = array_slice($this->fields, 1); + adodb_movenext($this); + } + } else { + while (!$this->EOF) { + // Fix for array_slice re-numbering numeric associative keys + $keys = array_slice(array_keys($this->fields), 1); + $sliced_array = array(); + + foreach($keys as $key) { + $sliced_array[$key] = $this->fields[$key]; + } + + $results[trim(reset($this->fields))] = $sliced_array; + adodb_movenext($this); + } + } + } else { + if ($numIndex) { + while (!$this->EOF) { + $results[trim($this->fields[0])] = array_slice($this->fields, 1); + $this->MoveNext(); + } + } else { + while (!$this->EOF) { + // Fix for array_slice re-numbering numeric associative keys + $keys = array_slice(array_keys($this->fields), 1); + $sliced_array = array(); + + foreach($keys as $key) { + $sliced_array[$key] = $this->fields[$key]; + } + + $results[trim(reset($this->fields))] = $sliced_array; + $this->MoveNext(); + } + } + } + } else { + if ($ADODB_EXTENSION) { + // return scalar values + if ($numIndex) { + while (!$this->EOF) { + // some bug in mssql PHP 4.02 -- doesn't handle references properly so we FORCE creating a new string + $results[trim(($this->fields[0]))] = $this->fields[1]; + adodb_movenext($this); + } + } else { + while (!$this->EOF) { + // some bug in mssql PHP 4.02 -- doesn't handle references properly so we FORCE creating a new string + $v1 = trim(reset($this->fields)); + $v2 = ''.next($this->fields); + $results[$v1] = $v2; + adodb_movenext($this); + } + } + } else { + if ($numIndex) { + while (!$this->EOF) { + // some bug in mssql PHP 4.02 -- doesn't handle references properly so we FORCE creating a new string + $results[trim(($this->fields[0]))] = $this->fields[1]; + $this->MoveNext(); + } + } else { + while (!$this->EOF) { + // some bug in mssql PHP 4.02 -- doesn't handle references properly so we FORCE creating a new string + $v1 = trim(reset($this->fields)); + $v2 = ''.next($this->fields); + $results[$v1] = $v2; + $this->MoveNext(); + } + } + } + } + + $ref = $results; # workaround accelerator incompat with PHP 4.4 :( + return $ref; + } + + + /** + * + * @param v is the character timestamp in YYYY-MM-DD hh:mm:ss format + * @param fmt is the format to apply to it, using date() + * + * @return a timestamp formated as user desires + */ + function UserTimeStamp($v,$fmt='Y-m-d H:i:s') + { + if (is_numeric($v) && strlen($v)<14) return adodb_date($fmt,$v); + $tt = $this->UnixTimeStamp($v); + // $tt == -1 if pre TIMESTAMP_FIRST_YEAR + if (($tt === false || $tt == -1) && $v != false) return $v; + if ($tt === 0) return $this->emptyTimeStamp; + return adodb_date($fmt,$tt); + } + + + /** + * @param v is the character date in YYYY-MM-DD format, returned by database + * @param fmt is the format to apply to it, using date() + * + * @return a date formated as user desires + */ + function UserDate($v,$fmt='Y-m-d') + { + $tt = $this->UnixDate($v); + // $tt == -1 if pre TIMESTAMP_FIRST_YEAR + if (($tt === false || $tt == -1) && $v != false) return $v; + else if ($tt == 0) return $this->emptyDate; + else if ($tt == -1) { // pre-TIMESTAMP_FIRST_YEAR + } + return adodb_date($fmt,$tt); + } + + + /** + * @param $v is a date string in YYYY-MM-DD format + * + * @return date in unix timestamp format, or 0 if before TIMESTAMP_FIRST_YEAR, or false if invalid date format + */ + static function UnixDate($v) + { + return ADOConnection::UnixDate($v); + } + + + /** + * @param $v is a timestamp string in YYYY-MM-DD HH-NN-SS format + * + * @return date in unix timestamp format, or 0 if before TIMESTAMP_FIRST_YEAR, or false if invalid date format + */ + static function UnixTimeStamp($v) + { + return ADOConnection::UnixTimeStamp($v); + } + + + /** + * PEAR DB Compat - do not use internally + */ + function Free() + { + return $this->Close(); + } + + + /** + * PEAR DB compat, number of rows + */ + function NumRows() + { + return $this->_numOfRows; + } + + + /** + * PEAR DB compat, number of cols + */ + function NumCols() + { + return $this->_numOfFields; + } + + /** + * Fetch a row, returning false if no more rows. + * This is PEAR DB compat mode. + * + * @return false or array containing the current record + */ + function FetchRow() + { + if ($this->EOF) { + $false = false; + return $false; + } + $arr = $this->fields; + $this->_currentRow++; + if (!$this->_fetch()) $this->EOF = true; + return $arr; + } + + + /** + * Fetch a row, returning PEAR_Error if no more rows. + * This is PEAR DB compat mode. + * + * @return DB_OK or error object + */ + function FetchInto(&$arr) + { + if ($this->EOF) return (defined('PEAR_ERROR_RETURN')) ? new PEAR_Error('EOF',-1): false; + $arr = $this->fields; + $this->MoveNext(); + return 1; // DB_OK + } + + + /** + * Move to the first row in the recordset. Many databases do NOT support this. + * + * @return true or false + */ + function MoveFirst() + { + if ($this->_currentRow == 0) return true; + return $this->Move(0); + } + + + /** + * Move to the last row in the recordset. + * + * @return true or false + */ + function MoveLast() + { + if ($this->_numOfRows >= 0) return $this->Move($this->_numOfRows-1); + if ($this->EOF) return false; + while (!$this->EOF) { + $f = $this->fields; + $this->MoveNext(); + } + $this->fields = $f; + $this->EOF = false; + return true; + } + + + /** + * Move to next record in the recordset. + * + * @return true if there still rows available, or false if there are no more rows (EOF). + */ + function MoveNext() + { + if (!$this->EOF) { + $this->_currentRow++; + if ($this->_fetch()) return true; + } + $this->EOF = true; + /* -- tested error handling when scrolling cursor -- seems useless. + $conn = $this->connection; + if ($conn && $conn->raiseErrorFn && ($errno = $conn->ErrorNo())) { + $fn = $conn->raiseErrorFn; + $fn($conn->databaseType,'MOVENEXT',$errno,$conn->ErrorMsg().' ('.$this->sql.')',$conn->host,$conn->database); + } + */ + return false; + } + + + /** + * Random access to a specific row in the recordset. Some databases do not support + * access to previous rows in the databases (no scrolling backwards). + * + * @param rowNumber is the row to move to (0-based) + * + * @return true if there still rows available, or false if there are no more rows (EOF). + */ + function Move($rowNumber = 0) + { + $this->EOF = false; + if ($rowNumber == $this->_currentRow) return true; + if ($rowNumber >= $this->_numOfRows) + if ($this->_numOfRows != -1) $rowNumber = $this->_numOfRows-2; + + if ($this->canSeek) { + + if ($this->_seek($rowNumber)) { + $this->_currentRow = $rowNumber; + if ($this->_fetch()) { + return true; + } + } else { + $this->EOF = true; + return false; + } + } else { + if ($rowNumber < $this->_currentRow) return false; + global $ADODB_EXTENSION; + if ($ADODB_EXTENSION) { + while (!$this->EOF && $this->_currentRow < $rowNumber) { + adodb_movenext($this); + } + } else { + + while (! $this->EOF && $this->_currentRow < $rowNumber) { + $this->_currentRow++; + + if (!$this->_fetch()) $this->EOF = true; + } + } + return !($this->EOF); + } + + $this->fields = false; + $this->EOF = true; + return false; + } + + + /** + * Get the value of a field in the current row by column name. + * Will not work if ADODB_FETCH_MODE is set to ADODB_FETCH_NUM. + * + * @param colname is the field to access + * + * @return the value of $colname column + */ + function Fields($colname) + { + return $this->fields[$colname]; + } + + function GetAssocKeys($upper=true) + { + $this->bind = array(); + for ($i=0; $i < $this->_numOfFields; $i++) { + $o = $this->FetchField($i); + if ($upper === 2) $this->bind[$o->name] = $i; + else $this->bind[($upper) ? strtoupper($o->name) : strtolower($o->name)] = $i; + } + } + + /** + * Use associative array to get fields array for databases that do not support + * associative arrays. Submitted by Paolo S. Asioli paolo.asioli#libero.it + * + * If you don't want uppercase cols, set $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC + * before you execute your SQL statement, and access $rs->fields['col'] directly. + * + * $upper 0 = lowercase, 1 = uppercase, 2 = whatever is returned by FetchField + */ + function GetRowAssoc($upper=1) + { + $record = array(); + // if (!$this->fields) return $record; + + if (!$this->bind) { + $this->GetAssocKeys($upper); + } + + foreach($this->bind as $k => $v) { + $record[$k] = $this->fields[$v]; + } + + return $record; + } + + + /** + * Clean up recordset + * + * @return true or false + */ + function Close() + { + // free connection object - this seems to globally free the object + // and not merely the reference, so don't do this... + // $this->connection = false; + if (!$this->_closed) { + $this->_closed = true; + return $this->_close(); + } else + return true; + } + + /** + * synonyms RecordCount and RowCount + * + * @return the number of rows or -1 if this is not supported + */ + function RecordCount() {return $this->_numOfRows;} + + + /* + * If we are using PageExecute(), this will return the maximum possible rows + * that can be returned when paging a recordset. + */ + function MaxRecordCount() + { + return ($this->_maxRecordCount) ? $this->_maxRecordCount : $this->RecordCount(); + } + + /** + * synonyms RecordCount and RowCount + * + * @return the number of rows or -1 if this is not supported + */ + function RowCount() {return $this->_numOfRows;} + + + /** + * Portable RecordCount. Pablo Roca + * + * @return the number of records from a previous SELECT. All databases support this. + * + * But aware possible problems in multiuser environments. For better speed the table + * must be indexed by the condition. Heavy test this before deploying. + */ + function PO_RecordCount($table="", $condition="") { + + $lnumrows = $this->_numOfRows; + // the database doesn't support native recordcount, so we do a workaround + if ($lnumrows == -1 && $this->connection) { + IF ($table) { + if ($condition) $condition = " WHERE " . $condition; + $resultrows = $this->connection->Execute("SELECT COUNT(*) FROM $table $condition"); + if ($resultrows) $lnumrows = reset($resultrows->fields); + } + } + return $lnumrows; + } + + + /** + * @return the current row in the recordset. If at EOF, will return the last row. 0-based. + */ + function CurrentRow() {return $this->_currentRow;} + + /** + * synonym for CurrentRow -- for ADO compat + * + * @return the current row in the recordset. If at EOF, will return the last row. 0-based. + */ + function AbsolutePosition() {return $this->_currentRow;} + + /** + * @return the number of columns in the recordset. Some databases will set this to 0 + * if no records are returned, others will return the number of columns in the query. + */ + function FieldCount() {return $this->_numOfFields;} + + + /** + * Get the ADOFieldObject of a specific column. + * + * @param fieldoffset is the column position to access(0-based). + * + * @return the ADOFieldObject for that column, or false. + */ + function FetchField($fieldoffset = -1) + { + // must be defined by child class + + $false = false; + return $false; + } + + /** + * Get the ADOFieldObjects of all columns in an array. + * + */ + function FieldTypesArray() + { + $arr = array(); + for ($i=0, $max=$this->_numOfFields; $i < $max; $i++) + $arr[] = $this->FetchField($i); + return $arr; + } + + /** + * Return the fields array of the current row as an object for convenience. + * The default case is lowercase field names. + * + * @return the object with the properties set to the fields of the current row + */ + function FetchObj() + { + $o = $this->FetchObject(false); + return $o; + } + + /** + * Return the fields array of the current row as an object for convenience. + * The default case is uppercase. + * + * @param $isupper to set the object property names to uppercase + * + * @return the object with the properties set to the fields of the current row + */ + function FetchObject($isupper=true) + { + if (empty($this->_obj)) { + $this->_obj = new ADOFetchObj(); + $this->_names = array(); + for ($i=0; $i <$this->_numOfFields; $i++) { + $f = $this->FetchField($i); + $this->_names[] = $f->name; + } + } + $i = 0; + if (PHP_VERSION >= 5) $o = clone($this->_obj); + else $o = $this->_obj; + + for ($i=0; $i <$this->_numOfFields; $i++) { + $name = $this->_names[$i]; + if ($isupper) $n = strtoupper($name); + else $n = $name; + + $o->$n = $this->Fields($name); + } + return $o; + } + + /** + * Return the fields array of the current row as an object for convenience. + * The default is lower-case field names. + * + * @return the object with the properties set to the fields of the current row, + * or false if EOF + * + * Fixed bug reported by tim@orotech.net + */ + function FetchNextObj() + { + $o = $this->FetchNextObject(false); + return $o; + } + + + /** + * Return the fields array of the current row as an object for convenience. + * The default is upper case field names. + * + * @param $isupper to set the object property names to uppercase + * + * @return the object with the properties set to the fields of the current row, + * or false if EOF + * + * Fixed bug reported by tim@orotech.net + */ + function FetchNextObject($isupper=true) + { + $o = false; + if ($this->_numOfRows != 0 && !$this->EOF) { + $o = $this->FetchObject($isupper); + $this->_currentRow++; + if ($this->_fetch()) return $o; + } + $this->EOF = true; + return $o; + } + + /** + * Get the metatype of the column. This is used for formatting. This is because + * many databases use different names for the same type, so we transform the original + * type to our standardised version which uses 1 character codes: + * + * @param t is the type passed in. Normally is ADOFieldObject->type. + * @param len is the maximum length of that field. This is because we treat character + * fields bigger than a certain size as a 'B' (blob). + * @param fieldobj is the field object returned by the database driver. Can hold + * additional info (eg. primary_key for mysql). + * + * @return the general type of the data: + * C for character < 250 chars + * X for teXt (>= 250 chars) + * B for Binary + * N for numeric or floating point + * D for date + * T for timestamp + * L for logical/Boolean + * I for integer + * R for autoincrement counter/integer + * + * + */ + function MetaType($t,$len=-1,$fieldobj=false) + { + if (is_object($t)) { + $fieldobj = $t; + $t = $fieldobj->type; + $len = $fieldobj->max_length; + } + // changed in 2.32 to hashing instead of switch stmt for speed... + static $typeMap = array( + 'VARCHAR' => 'C', + 'VARCHAR2' => 'C', + 'CHAR' => 'C', + 'C' => 'C', + 'STRING' => 'C', + 'NCHAR' => 'C', + 'NVARCHAR' => 'C', + 'VARYING' => 'C', + 'BPCHAR' => 'C', + 'CHARACTER' => 'C', + 'INTERVAL' => 'C', # Postgres + 'MACADDR' => 'C', # postgres + 'VAR_STRING' => 'C', # mysql + ## + 'LONGCHAR' => 'X', + 'TEXT' => 'X', + 'NTEXT' => 'X', + 'M' => 'X', + 'X' => 'X', + 'CLOB' => 'X', + 'NCLOB' => 'X', + 'LVARCHAR' => 'X', + ## + 'BLOB' => 'B', + 'IMAGE' => 'B', + 'BINARY' => 'B', + 'VARBINARY' => 'B', + 'LONGBINARY' => 'B', + 'B' => 'B', + ## + 'YEAR' => 'D', // mysql + 'DATE' => 'D', + 'D' => 'D', + ## + 'UNIQUEIDENTIFIER' => 'C', # MS SQL Server + ## + 'SMALLDATETIME' => 'T', + 'TIME' => 'T', + 'TIMESTAMP' => 'T', + 'DATETIME' => 'T', + 'TIMESTAMPTZ' => 'T', + 'T' => 'T', + 'TIMESTAMP WITHOUT TIME ZONE' => 'T', // postgresql + ## + 'BOOL' => 'L', + 'BOOLEAN' => 'L', + 'BIT' => 'L', + 'L' => 'L', + ## + 'COUNTER' => 'R', + 'R' => 'R', + 'SERIAL' => 'R', // ifx + 'INT IDENTITY' => 'R', + ## + 'INT' => 'I', + 'INT2' => 'I', + 'INT4' => 'I', + 'INT8' => 'I', + 'INTEGER' => 'I', + 'INTEGER UNSIGNED' => 'I', + 'SHORT' => 'I', + 'TINYINT' => 'I', + 'SMALLINT' => 'I', + 'I' => 'I', + ## + 'LONG' => 'N', // interbase is numeric, oci8 is blob + 'BIGINT' => 'N', // this is bigger than PHP 32-bit integers + 'DECIMAL' => 'N', + 'DEC' => 'N', + 'REAL' => 'N', + 'DOUBLE' => 'N', + 'DOUBLE PRECISION' => 'N', + 'SMALLFLOAT' => 'N', + 'FLOAT' => 'N', + 'NUMBER' => 'N', + 'NUM' => 'N', + 'NUMERIC' => 'N', + 'MONEY' => 'N', + + ## informix 9.2 + 'SQLINT' => 'I', + 'SQLSERIAL' => 'I', + 'SQLSMINT' => 'I', + 'SQLSMFLOAT' => 'N', + 'SQLFLOAT' => 'N', + 'SQLMONEY' => 'N', + 'SQLDECIMAL' => 'N', + 'SQLDATE' => 'D', + 'SQLVCHAR' => 'C', + 'SQLCHAR' => 'C', + 'SQLDTIME' => 'T', + 'SQLINTERVAL' => 'N', + 'SQLBYTES' => 'B', + 'SQLTEXT' => 'X', + ## informix 10 + "SQLINT8" => 'I8', + "SQLSERIAL8" => 'I8', + "SQLNCHAR" => 'C', + "SQLNVCHAR" => 'C', + "SQLLVARCHAR" => 'X', + "SQLBOOL" => 'L' + ); + + $tmap = false; + $t = strtoupper($t); + $tmap = (isset($typeMap[$t])) ? $typeMap[$t] : 'N'; + switch ($tmap) { + case 'C': + + // is the char field is too long, return as text field... + if ($this->blobSize >= 0) { + if ($len > $this->blobSize) return 'X'; + } else if ($len > 250) { + return 'X'; + } + return 'C'; + + case 'I': + if (!empty($fieldobj->primary_key)) return 'R'; + return 'I'; + + case false: + return 'N'; + + case 'B': + if (isset($fieldobj->binary)) + return ($fieldobj->binary) ? 'B' : 'X'; + return 'B'; + + case 'D': + if (!empty($this->connection) && !empty($this->connection->datetime)) return 'T'; + return 'D'; + + default: + if ($t == 'LONG' && $this->dataProvider == 'oci8') return 'B'; + return $tmap; + } + } + + + function _close() {} + + /** + * set/returns the current recordset page when paginating + */ + function AbsolutePage($page=-1) + { + if ($page != -1) $this->_currentPage = $page; + return $this->_currentPage; + } + + /** + * set/returns the status of the atFirstPage flag when paginating + */ + function AtFirstPage($status=false) + { + if ($status != false) $this->_atFirstPage = $status; + return $this->_atFirstPage; + } + + function LastPageNo($page = false) + { + if ($page != false) $this->_lastPageNo = $page; + return $this->_lastPageNo; + } + + /** + * set/returns the status of the atLastPage flag when paginating + */ + function AtLastPage($status=false) + { + if ($status != false) $this->_atLastPage = $status; + return $this->_atLastPage; + } + +} // end class ADORecordSet + + //============================================================================================== + // CLASS ADORecordSet_array + //============================================================================================== + + /** + * This class encapsulates the concept of a recordset created in memory + * as an array. This is useful for the creation of cached recordsets. + * + * Note that the constructor is different from the standard ADORecordSet + */ + + class ADORecordSet_array extends ADORecordSet + { + var $databaseType = 'array'; + + var $_array; // holds the 2-dimensional data array + var $_types; // the array of types of each column (C B I L M) + var $_colnames; // names of each column in array + var $_skiprow1; // skip 1st row because it holds column names + var $_fieldobjects; // holds array of field objects + var $canSeek = true; + var $affectedrows = false; + var $insertid = false; + var $sql = ''; + var $compat = false; + /** + * Constructor + * + */ + function ADORecordSet_array($fakeid=1) + { + global $ADODB_FETCH_MODE,$ADODB_COMPAT_FETCH; + + // fetch() on EOF does not delete $this->fields + $this->compat = !empty($ADODB_COMPAT_FETCH); + $this->ADORecordSet($fakeid); // fake queryID + $this->fetchMode = $ADODB_FETCH_MODE; + } + + function _transpose($addfieldnames=true) + { + global $ADODB_INCLUDED_LIB; + + if (empty($ADODB_INCLUDED_LIB)) include(ADODB_DIR.'/adodb-lib.inc.php'); + $hdr = true; + + $fobjs = $addfieldnames ? $this->_fieldobjects : false; + adodb_transpose($this->_array, $newarr, $hdr, $fobjs); + //adodb_pr($newarr); + + $this->_skiprow1 = false; + $this->_array = $newarr; + $this->_colnames = $hdr; + + adodb_probetypes($newarr,$this->_types); + + $this->_fieldobjects = array(); + + foreach($hdr as $k => $name) { + $f = new ADOFieldObject(); + $f->name = $name; + $f->type = $this->_types[$k]; + $f->max_length = -1; + $this->_fieldobjects[] = $f; + } + $this->fields = reset($this->_array); + + $this->_initrs(); + + } + + /** + * Setup the array. + * + * @param array is a 2-dimensional array holding the data. + * The first row should hold the column names + * unless paramter $colnames is used. + * @param typearr holds an array of types. These are the same types + * used in MetaTypes (C,B,L,I,N). + * @param [colnames] array of column names. If set, then the first row of + * $array should not hold the column names. + */ + function InitArray($array,$typearr,$colnames=false) + { + $this->_array = $array; + $this->_types = $typearr; + if ($colnames) { + $this->_skiprow1 = false; + $this->_colnames = $colnames; + } else { + $this->_skiprow1 = true; + $this->_colnames = $array[0]; + } + $this->Init(); + } + /** + * Setup the Array and datatype file objects + * + * @param array is a 2-dimensional array holding the data. + * The first row should hold the column names + * unless paramter $colnames is used. + * @param fieldarr holds an array of ADOFieldObject's. + */ + function InitArrayFields(&$array,&$fieldarr) + { + $this->_array = $array; + $this->_skiprow1= false; + if ($fieldarr) { + $this->_fieldobjects = $fieldarr; + } + $this->Init(); + } + + function GetArray($nRows=-1) + { + if ($nRows == -1 && $this->_currentRow <= 0 && !$this->_skiprow1) { + return $this->_array; + } else { + $arr = ADORecordSet::GetArray($nRows); + return $arr; + } + } + + function _initrs() + { + $this->_numOfRows = sizeof($this->_array); + if ($this->_skiprow1) $this->_numOfRows -= 1; + + $this->_numOfFields =(isset($this->_fieldobjects)) ? + sizeof($this->_fieldobjects):sizeof($this->_types); + } + + /* Use associative array to get fields array */ + function Fields($colname) + { + $mode = isset($this->adodbFetchMode) ? $this->adodbFetchMode : $this->fetchMode; + + if ($mode & ADODB_FETCH_ASSOC) { + if (!isset($this->fields[$colname]) && !is_null($this->fields[$colname])) $colname = strtolower($colname); + return $this->fields[$colname]; + } + if (!$this->bind) { + $this->bind = array(); + for ($i=0; $i < $this->_numOfFields; $i++) { + $o = $this->FetchField($i); + $this->bind[strtoupper($o->name)] = $i; + } + } + return $this->fields[$this->bind[strtoupper($colname)]]; + } + + function FetchField($fieldOffset = -1) + { + if (isset($this->_fieldobjects)) { + return $this->_fieldobjects[$fieldOffset]; + } + $o = new ADOFieldObject(); + $o->name = $this->_colnames[$fieldOffset]; + $o->type = $this->_types[$fieldOffset]; + $o->max_length = -1; // length not known + + return $o; + } + + function _seek($row) + { + if (sizeof($this->_array) && 0 <= $row && $row < $this->_numOfRows) { + $this->_currentRow = $row; + if ($this->_skiprow1) $row += 1; + $this->fields = $this->_array[$row]; + return true; + } + return false; + } + + function MoveNext() + { + if (!$this->EOF) { + $this->_currentRow++; + + $pos = $this->_currentRow; + + if ($this->_numOfRows <= $pos) { + if (!$this->compat) $this->fields = false; + } else { + if ($this->_skiprow1) $pos += 1; + $this->fields = $this->_array[$pos]; + return true; + } + $this->EOF = true; + } + + return false; + } + + function _fetch() + { + $pos = $this->_currentRow; + + if ($this->_numOfRows <= $pos) { + if (!$this->compat) $this->fields = false; + return false; + } + if ($this->_skiprow1) $pos += 1; + $this->fields = $this->_array[$pos]; + return true; + } + + function _close() + { + return true; + } + + } // ADORecordSet_array + + //============================================================================================== + // HELPER FUNCTIONS + //============================================================================================== + + /** + * Synonym for ADOLoadCode. Private function. Do not use. + * + * @deprecated + */ + function ADOLoadDB($dbType) + { + return ADOLoadCode($dbType); + } + + /** + * Load the code for a specific database driver. Private function. Do not use. + */ + function ADOLoadCode($dbType) + { + global $ADODB_LASTDB; + + if (!$dbType) return false; + $db = strtolower($dbType); + switch ($db) { + case 'ado': + if (PHP_VERSION >= 5) $db = 'ado5'; + $class = 'ado'; + break; + case 'ifx': + case 'maxsql': $class = $db = 'mysqlt'; break; + case 'postgres': + case 'postgres8': + case 'pgsql': $class = $db = 'postgres7'; break; + default: + $class = $db; break; + } + + $file = ADODB_DIR."/drivers/adodb-".$db.".inc.php"; + @include_once($file); + $ADODB_LASTDB = $class; + if (class_exists("ADODB_" . $class)) return $class; + + //ADOConnection::outp(adodb_pr(get_declared_classes(),true)); + if (!file_exists($file)) ADOConnection::outp("Missing file: $file"); + else ADOConnection::outp("Syntax error in file: $file"); + return false; + } + + /** + * synonym for ADONewConnection for people like me who cannot remember the correct name + */ + function NewADOConnection($db='') + { + $tmp = ADONewConnection($db); + return $tmp; + } + + /** + * Instantiate a new Connection class for a specific database driver. + * + * @param [db] is the database Connection object to create. If undefined, + * use the last database driver that was loaded by ADOLoadCode(). + * + * @return the freshly created instance of the Connection class. + */ + function ADONewConnection($db='') + { + GLOBAL $ADODB_NEWCONNECTION, $ADODB_LASTDB; + + if (!defined('ADODB_ASSOC_CASE')) define('ADODB_ASSOC_CASE',2); + $errorfn = (defined('ADODB_ERROR_HANDLER')) ? ADODB_ERROR_HANDLER : false; + $false = false; + if (($at = strpos($db,'://')) !== FALSE) { + $origdsn = $db; + $fakedsn = 'fake'.substr($origdsn,$at); + if (($at2 = strpos($origdsn,'@/')) !== FALSE) { + // special handling of oracle, which might not have host + $fakedsn = str_replace('@/','@adodb-fakehost/',$fakedsn); + } + + if ((strpos($origdsn, 'sqlite')) !== FALSE) { + // special handling for SQLite, it only might have the path to the database file. + // If you try to connect to a SQLite database using a dsn like 'sqlite:///path/to/database', the 'parse_url' php function + // will throw you an exception with a message such as "unable to parse url" + list($scheme, $path) = explode('://', $origdsn); + $dsna['scheme'] = $scheme; + if ($qmark = strpos($path,'?')) { + $dsn['query'] = substr($path,$qmark+1); + $path = substr($path,0,$qmark); + } + $dsna['path'] = '/' . urlencode($path); + } else + $dsna = @parse_url($fakedsn); + + if (!$dsna) { + return $false; + } + $dsna['scheme'] = substr($origdsn,0,$at); + if ($at2 !== FALSE) { + $dsna['host'] = ''; + } + + if (strncmp($origdsn,'pdo',3) == 0) { + $sch = explode('_',$dsna['scheme']); + if (sizeof($sch)>1) { + + $dsna['host'] = isset($dsna['host']) ? rawurldecode($dsna['host']) : ''; + if ($sch[1] == 'sqlite') + $dsna['host'] = rawurlencode($sch[1].':'.rawurldecode($dsna['host'])); + else + $dsna['host'] = rawurlencode($sch[1].':host='.rawurldecode($dsna['host'])); + $dsna['scheme'] = 'pdo'; + } + } + + $db = @$dsna['scheme']; + if (!$db) return $false; + $dsna['host'] = isset($dsna['host']) ? rawurldecode($dsna['host']) : ''; + $dsna['user'] = isset($dsna['user']) ? rawurldecode($dsna['user']) : ''; + $dsna['pass'] = isset($dsna['pass']) ? rawurldecode($dsna['pass']) : ''; + $dsna['path'] = isset($dsna['path']) ? rawurldecode(substr($dsna['path'],1)) : ''; # strip off initial / + + if (isset($dsna['query'])) { + $opt1 = explode('&',$dsna['query']); + foreach($opt1 as $k => $v) { + $arr = explode('=',$v); + $opt[$arr[0]] = isset($arr[1]) ? rawurldecode($arr[1]) : 1; + } + } else $opt = array(); + } + /* + * phptype: Database backend used in PHP (mysql, odbc etc.) + * dbsyntax: Database used with regards to SQL syntax etc. + * protocol: Communication protocol to use (tcp, unix etc.) + * hostspec: Host specification (hostname[:port]) + * database: Database to use on the DBMS server + * username: User name for login + * password: Password for login + */ + if (!empty($ADODB_NEWCONNECTION)) { + $obj = $ADODB_NEWCONNECTION($db); + + } + + if(empty($obj)) { + + if (!isset($ADODB_LASTDB)) $ADODB_LASTDB = ''; + if (empty($db)) $db = $ADODB_LASTDB; + + if ($db != $ADODB_LASTDB) $db = ADOLoadCode($db); + + if (!$db) { + if (isset($origdsn)) $db = $origdsn; + if ($errorfn) { + // raise an error + $ignore = false; + $errorfn('ADONewConnection', 'ADONewConnection', -998, + "could not load the database driver for '$db'", + $db,false,$ignore); + } else + ADOConnection::outp( "

ADONewConnection: Unable to load database driver '$db'

",false); + + return $false; + } + + $cls = 'ADODB_'.$db; + if (!class_exists($cls)) { + adodb_backtrace(); + return $false; + } + + $obj = new $cls(); + } + + # constructor should not fail + if ($obj) { + if ($errorfn) $obj->raiseErrorFn = $errorfn; + if (isset($dsna)) { + if (isset($dsna['port'])) $obj->port = $dsna['port']; + foreach($opt as $k => $v) { + switch(strtolower($k)) { + case 'new': + $nconnect = true; $persist = true; break; + case 'persist': + case 'persistent': $persist = $v; break; + case 'debug': $obj->debug = (integer) $v; break; + #ibase + case 'role': $obj->role = $v; break; + case 'dialect': $obj->dialect = (integer) $v; break; + case 'charset': $obj->charset = $v; $obj->charSet=$v; break; + case 'buffers': $obj->buffers = $v; break; + case 'fetchmode': $obj->SetFetchMode($v); break; + #ado + case 'charpage': $obj->charPage = $v; break; + #mysql, mysqli + case 'clientflags': $obj->clientFlags = $v; break; + #mysql, mysqli, postgres + case 'port': $obj->port = $v; break; + #mysqli + case 'socket': $obj->socket = $v; break; + #oci8 + case 'nls_date_format': $obj->NLS_DATE_FORMAT = $v; break; + case 'cachesecs': $obj->cacheSecs = $v; break; + case 'memcache': + $varr = explode(':',$v); + $vlen = sizeof($varr); + if ($vlen == 0) break; + $obj->memCache = true; + $obj->memCacheHost = explode(',',$varr[0]); + if ($vlen == 1) break; + $obj->memCachePort = $varr[1]; + if ($vlen == 2) break; + $obj->memCacheCompress = $varr[2] ? true : false; + break; + } + } + if (empty($persist)) + $ok = $obj->Connect($dsna['host'], $dsna['user'], $dsna['pass'], $dsna['path']); + else if (empty($nconnect)) + $ok = $obj->PConnect($dsna['host'], $dsna['user'], $dsna['pass'], $dsna['path']); + else + $ok = $obj->NConnect($dsna['host'], $dsna['user'], $dsna['pass'], $dsna['path']); + + if (!$ok) return $false; + } + } + return $obj; + } + + + + // $perf == true means called by NewPerfMonitor(), otherwise for data dictionary + function _adodb_getdriver($provider,$drivername,$perf=false) + { + switch ($provider) { + case 'odbtp': if (strncmp('odbtp_',$drivername,6)==0) return substr($drivername,6); + case 'odbc' : if (strncmp('odbc_',$drivername,5)==0) return substr($drivername,5); + case 'ado' : if (strncmp('ado_',$drivername,4)==0) return substr($drivername,4); + case 'native': break; + default: + return $provider; + } + + switch($drivername) { + case 'mysqlt': + case 'mysqli': + $drivername='mysql'; + break; + case 'postgres7': + case 'postgres8': + $drivername = 'postgres'; + break; + case 'firebird15': $drivername = 'firebird'; break; + case 'oracle': $drivername = 'oci8'; break; + case 'access': if ($perf) $drivername = ''; break; + case 'db2' : break; + case 'sapdb' : break; + default: + $drivername = 'generic'; + break; + } + return $drivername; + } + + function NewPerfMonitor(&$conn) + { + $false = false; + $drivername = _adodb_getdriver($conn->dataProvider,$conn->databaseType,true); + if (!$drivername || $drivername == 'generic') return $false; + include_once(ADODB_DIR.'/adodb-perf.inc.php'); + @include_once(ADODB_DIR."/perf/perf-$drivername.inc.php"); + $class = "Perf_$drivername"; + if (!class_exists($class)) return $false; + $perf = new $class($conn); + + return $perf; + } + + function NewDataDictionary(&$conn,$drivername=false) + { + $false = false; + if (!$drivername) $drivername = _adodb_getdriver($conn->dataProvider,$conn->databaseType); + + include_once(ADODB_DIR.'/adodb-lib.inc.php'); + include_once(ADODB_DIR.'/adodb-datadict.inc.php'); + $path = ADODB_DIR."/datadict/datadict-$drivername.inc.php"; + + if (!file_exists($path)) { + ADOConnection::outp("Dictionary driver '$path' not available"); + return $false; + } + include_once($path); + $class = "ADODB2_$drivername"; + $dict = new $class(); + $dict->dataProvider = $conn->dataProvider; + $dict->connection = $conn; + $dict->upperName = strtoupper($drivername); + $dict->quote = $conn->nameQuote; + if (!empty($conn->_connectionID)) + $dict->serverInfo = $conn->ServerInfo(); + + return $dict; + } + + + + /* + Perform a print_r, with pre tags for better formatting. + */ + function adodb_pr($var,$as_string=false) + { + if ($as_string) ob_start(); + + if (isset($_SERVER['HTTP_USER_AGENT'])) { + echo "
\n";print_r($var);echo "
\n"; + } else + print_r($var); + + if ($as_string) { + $s = ob_get_contents(); + ob_end_clean(); + return $s; + } + } + + /* + Perform a stack-crawl and pretty print it. + + @param printOrArr Pass in a boolean to indicate print, or an $exception->trace array (assumes that print is true then). + @param levels Number of levels to display + */ + function adodb_backtrace($printOrArr=true,$levels=9999,$ishtml=null) + { + global $ADODB_INCLUDED_LIB; + if (empty($ADODB_INCLUDED_LIB)) include(ADODB_DIR.'/adodb-lib.inc.php'); + return _adodb_backtrace($printOrArr,$levels,0,$ishtml); + } + + +} +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/drivers/adodb-postgres.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/drivers/adodb-postgres.inc.php new file mode 100644 index 00000000..6f580ff6 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/drivers/adodb-postgres.inc.php @@ -0,0 +1,14 @@ + \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/drivers/adodb-postgres64.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/drivers/adodb-postgres64.inc.php new file mode 100644 index 00000000..6846303a --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/drivers/adodb-postgres64.inc.php @@ -0,0 +1,1074 @@ + + jlim - changed concat operator to || and data types to MetaType to match documented pgsql types + see http://www.postgresql.org/devel-corner/docs/postgres/datatype.htm + 22 Nov 2000 jlim - added changes to FetchField() and MetaTables() contributed by "raser" + 27 Nov 2000 jlim - added changes to _connect/_pconnect from ideas by "Lennie" + 15 Dec 2000 jlim - added changes suggested by Additional code changes by "Eric G. Werk" egw@netguide.dk. + 31 Jan 2002 jlim - finally installed postgresql. testing + 01 Mar 2001 jlim - Freek Dijkstra changes, also support for text type + + See http://www.varlena.com/varlena/GeneralBits/47.php + + -- What indexes are on my table? + select * from pg_indexes where tablename = 'tablename'; + + -- What triggers are on my table? + select c.relname as "Table", t.tgname as "Trigger Name", + t.tgconstrname as "Constraint Name", t.tgenabled as "Enabled", + t.tgisconstraint as "Is Constraint", cc.relname as "Referenced Table", + p.proname as "Function Name" + from pg_trigger t, pg_class c, pg_class cc, pg_proc p + where t.tgfoid = p.oid and t.tgrelid = c.oid + and t.tgconstrrelid = cc.oid + and c.relname = 'tablename'; + + -- What constraints are on my table? + select r.relname as "Table", c.conname as "Constraint Name", + contype as "Constraint Type", conkey as "Key Columns", + confkey as "Foreign Columns", consrc as "Source" + from pg_class r, pg_constraint c + where r.oid = c.conrelid + and relname = 'tablename'; + +*/ + +// security - hide paths +if (!defined('ADODB_DIR')) die(); + +function adodb_addslashes($s) +{ + $len = strlen($s); + if ($len == 0) return "''"; + if (strncmp($s,"'",1) === 0 && substr($s,$len-1) == "'") return $s; // already quoted + + return "'".addslashes($s)."'"; +} + +class ADODB_postgres64 extends ADOConnection{ + var $databaseType = 'postgres64'; + var $dataProvider = 'postgres'; + var $hasInsertID = true; + var $_resultid = false; + var $concat_operator='||'; + var $metaDatabasesSQL = "select datname from pg_database where datname not in ('template0','template1') order by 1"; + var $metaTablesSQL = "select tablename,'T' from pg_tables where tablename not like 'pg\_%' + and tablename not in ('sql_features', 'sql_implementation_info', 'sql_languages', + 'sql_packages', 'sql_sizing', 'sql_sizing_profiles') + union + select viewname,'V' from pg_views where viewname not like 'pg\_%'"; + //"select tablename from pg_tables where tablename not like 'pg_%' order by 1"; + var $isoDates = true; // accepts dates in ISO format + var $sysDate = "CURRENT_DATE"; + var $sysTimeStamp = "CURRENT_TIMESTAMP"; + var $blobEncodeType = 'C'; + var $metaColumnsSQL = "SELECT a.attname,t.typname,a.attlen,a.atttypmod,a.attnotnull,a.atthasdef,a.attnum + FROM pg_class c, pg_attribute a,pg_type t + WHERE relkind in ('r','v') AND (c.relname='%s' or c.relname = lower('%s')) and a.attname not like '....%%' +AND a.attnum > 0 AND a.atttypid = t.oid AND a.attrelid = c.oid ORDER BY a.attnum"; + + // used when schema defined + var $metaColumnsSQL1 = "SELECT a.attname, t.typname, a.attlen, a.atttypmod, a.attnotnull, a.atthasdef, a.attnum +FROM pg_class c, pg_attribute a, pg_type t, pg_namespace n +WHERE relkind in ('r','v') AND (c.relname='%s' or c.relname = lower('%s')) + and c.relnamespace=n.oid and n.nspname='%s' + and a.attname not like '....%%' AND a.attnum > 0 + AND a.atttypid = t.oid AND a.attrelid = c.oid ORDER BY a.attnum"; + + // get primary key etc -- from Freek Dijkstra + var $metaKeySQL = "SELECT ic.relname AS index_name, a.attname AS column_name,i.indisunique AS unique_key, i.indisprimary AS primary_key + FROM pg_class bc, pg_class ic, pg_index i, pg_attribute a WHERE bc.oid = i.indrelid AND ic.oid = i.indexrelid AND (i.indkey[0] = a.attnum OR i.indkey[1] = a.attnum OR i.indkey[2] = a.attnum OR i.indkey[3] = a.attnum OR i.indkey[4] = a.attnum OR i.indkey[5] = a.attnum OR i.indkey[6] = a.attnum OR i.indkey[7] = a.attnum) AND a.attrelid = bc.oid AND bc.relname = '%s'"; + + var $hasAffectedRows = true; + var $hasLimit = false; // set to true for pgsql 7 only. support pgsql/mysql SELECT * FROM TABLE LIMIT 10 + // below suggested by Freek Dijkstra + var $true = 'TRUE'; // string that represents TRUE for a database + var $false = 'FALSE'; // string that represents FALSE for a database + var $fmtDate = "'Y-m-d'"; // used by DBDate() as the default date format used by the database + var $fmtTimeStamp = "'Y-m-d H:i:s'"; // used by DBTimeStamp as the default timestamp fmt. + var $hasMoveFirst = true; + var $hasGenID = true; + var $_genIDSQL = "SELECT NEXTVAL('%s')"; + var $_genSeqSQL = "CREATE SEQUENCE %s START %s"; + var $_dropSeqSQL = "DROP SEQUENCE %s"; + var $metaDefaultsSQL = "SELECT d.adnum as num, d.adsrc as def from pg_attrdef d, pg_class c where d.adrelid=c.oid and c.relname='%s' order by d.adnum"; + var $random = 'random()'; /// random function + var $autoRollback = true; // apparently pgsql does not autorollback properly before php 4.3.4 + // http://bugs.php.net/bug.php?id=25404 + + var $uniqueIisR = true; + var $_bindInputArray = false; // requires postgresql 7.3+ and ability to modify database + var $disableBlobs = false; // set to true to disable blob checking, resulting in 2-5% improvement in performance. + + // The last (fmtTimeStamp is not entirely correct: + // PostgreSQL also has support for time zones, + // and writes these time in this format: "2001-03-01 18:59:26+02". + // There is no code for the "+02" time zone information, so I just left that out. + // I'm not familiar enough with both ADODB as well as Postgres + // to know what the concequences are. The other values are correct (wheren't in 0.94) + // -- Freek Dijkstra + + function ADODB_postgres64() + { + // changes the metaColumnsSQL, adds columns: attnum[6] + } + + function ServerInfo() + { + if (isset($this->version)) return $this->version; + + $arr['description'] = $this->GetOne("select version()"); + $arr['version'] = ADOConnection::_findvers($arr['description']); + $this->version = $arr; + return $arr; + } + + function IfNull( $field, $ifNull ) + { + return " coalesce($field, $ifNull) "; + } + + // get the last id - never tested + function pg_insert_id($tablename,$fieldname) + { + $result=pg_exec($this->_connectionID, "SELECT last_value FROM ${tablename}_${fieldname}_seq"); + if ($result) { + $arr = @pg_fetch_row($result,0); + pg_freeresult($result); + if (isset($arr[0])) return $arr[0]; + } + return false; + } + +/* Warning from http://www.php.net/manual/function.pg-getlastoid.php: +Using a OID as a unique identifier is not generally wise. +Unless you are very careful, you might end up with a tuple having +a different OID if a database must be reloaded. */ + function _insertid($table,$column) + { + if (!is_resource($this->_resultid) || get_resource_type($this->_resultid) !== 'pgsql result') return false; + $oid = pg_getlastoid($this->_resultid); + // to really return the id, we need the table and column-name, else we can only return the oid != id + return empty($table) || empty($column) ? $oid : $this->GetOne("SELECT $column FROM $table WHERE oid=".(int)$oid); + } + +// I get this error with PHP before 4.0.6 - jlim +// Warning: This compilation does not support pg_cmdtuples() in adodb-postgres.inc.php on line 44 + function _affectedrows() + { + if (!is_resource($this->_resultid) || get_resource_type($this->_resultid) !== 'pgsql result') return false; + return pg_cmdtuples($this->_resultid); + } + + + // returns true/false + function BeginTrans() + { + if ($this->transOff) return true; + $this->transCnt += 1; + return @pg_Exec($this->_connectionID, "begin ".$this->_transmode); + } + + function RowLock($tables,$where,$col='1 as adodbignore') + { + if (!$this->transCnt) $this->BeginTrans(); + return $this->GetOne("select $col from $tables where $where for update"); + } + + // returns true/false. + function CommitTrans($ok=true) + { + if ($this->transOff) return true; + if (!$ok) return $this->RollbackTrans(); + + $this->transCnt -= 1; + return @pg_Exec($this->_connectionID, "commit"); + } + + // returns true/false + function RollbackTrans() + { + if ($this->transOff) return true; + $this->transCnt -= 1; + return @pg_Exec($this->_connectionID, "rollback"); + } + + function MetaTables($ttype=false,$showSchema=false,$mask=false) + { + $info = $this->ServerInfo(); + if ($info['version'] >= 7.3) { + $this->metaTablesSQL = "select tablename,'T' from pg_tables where tablename not like 'pg\_%' + and schemaname not in ( 'pg_catalog','information_schema') + union + select viewname,'V' from pg_views where viewname not like 'pg\_%' and schemaname not in ( 'pg_catalog','information_schema') "; + } + if ($mask) { + $save = $this->metaTablesSQL; + $mask = $this->qstr(strtolower($mask)); + if ($info['version']>=7.3) + $this->metaTablesSQL = " +select tablename,'T' from pg_tables where tablename like $mask and schemaname not in ( 'pg_catalog','information_schema') + union +select viewname,'V' from pg_views where viewname like $mask and schemaname not in ( 'pg_catalog','information_schema') "; + else + $this->metaTablesSQL = " +select tablename,'T' from pg_tables where tablename like $mask + union +select viewname,'V' from pg_views where viewname like $mask"; + } + $ret = ADOConnection::MetaTables($ttype,$showSchema); + + if ($mask) { + $this->metaTablesSQL = $save; + } + return $ret; + } + + + // if magic quotes disabled, use pg_escape_string() + function qstr($s,$magic_quotes=false) + { + if (is_bool($s)) return $s ? 'true' : 'false'; + + if (!$magic_quotes) { + if (ADODB_PHPVER >= 0x5200) { + return "'".pg_escape_string($this->_connectionID,$s)."'"; + } + if (ADODB_PHPVER >= 0x4200) { + return "'".pg_escape_string($s)."'"; + } + if ($this->replaceQuote[0] == '\\'){ + $s = adodb_str_replace(array('\\',"\0"),array('\\\\',"\\\\000"),$s); + } + return "'".str_replace("'",$this->replaceQuote,$s)."'"; + } + + // undo magic quotes for " + $s = str_replace('\\"','"',$s); + return "'$s'"; + } + + + + // Format date column in sql string given an input format that understands Y M D + function SQLDate($fmt, $col=false) + { + if (!$col) $col = $this->sysTimeStamp; + $s = 'TO_CHAR('.$col.",'"; + + $len = strlen($fmt); + for ($i=0; $i < $len; $i++) { + $ch = $fmt[$i]; + switch($ch) { + case 'Y': + case 'y': + $s .= 'YYYY'; + break; + case 'Q': + case 'q': + $s .= 'Q'; + break; + + case 'M': + $s .= 'Mon'; + break; + + case 'm': + $s .= 'MM'; + break; + case 'D': + case 'd': + $s .= 'DD'; + break; + + case 'H': + $s.= 'HH24'; + break; + + case 'h': + $s .= 'HH'; + break; + + case 'i': + $s .= 'MI'; + break; + + case 's': + $s .= 'SS'; + break; + + case 'a': + case 'A': + $s .= 'AM'; + break; + + case 'w': + $s .= 'D'; + break; + + case 'l': + $s .= 'DAY'; + break; + + case 'W': + $s .= 'WW'; + break; + + default: + // handle escape characters... + if ($ch == '\\') { + $i++; + $ch = substr($fmt,$i,1); + } + if (strpos('-/.:;, ',$ch) !== false) $s .= $ch; + else $s .= '"'.$ch.'"'; + + } + } + return $s. "')"; + } + + + + /* + * Load a Large Object from a file + * - the procedure stores the object id in the table and imports the object using + * postgres proprietary blob handling routines + * + * contributed by Mattia Rossi mattia@technologist.com + * modified for safe mode by juraj chlebec + */ + function UpdateBlobFile($table,$column,$path,$where,$blobtype='BLOB') + { + pg_exec ($this->_connectionID, "begin"); + + $fd = fopen($path,'r'); + $contents = fread($fd,filesize($path)); + fclose($fd); + + $oid = pg_lo_create($this->_connectionID); + $handle = pg_lo_open($this->_connectionID, $oid, 'w'); + pg_lo_write($handle, $contents); + pg_lo_close($handle); + + // $oid = pg_lo_import ($path); + pg_exec($this->_connectionID, "commit"); + $rs = ADOConnection::UpdateBlob($table,$column,$oid,$where,$blobtype); + $rez = !empty($rs); + return $rez; + } + + /* + * Deletes/Unlinks a Blob from the database, otherwise it + * will be left behind + * + * Returns TRUE on success or FALSE on failure. + * + * contributed by Todd Rogers todd#windfox.net + */ + function BlobDelete( $blob ) + { + pg_exec ($this->_connectionID, "begin"); + $result = @pg_lo_unlink($blob); + pg_exec ($this->_connectionID, "commit"); + return( $result ); + } + + /* + Hueristic - not guaranteed to work. + */ + function GuessOID($oid) + { + if (strlen($oid)>16) return false; + return is_numeric($oid); + } + + /* + * If an OID is detected, then we use pg_lo_* to open the oid file and read the + * real blob from the db using the oid supplied as a parameter. If you are storing + * blobs using bytea, we autodetect and process it so this function is not needed. + * + * contributed by Mattia Rossi mattia@technologist.com + * + * see http://www.postgresql.org/idocs/index.php?largeobjects.html + * + * Since adodb 4.54, this returns the blob, instead of sending it to stdout. Also + * added maxsize parameter, which defaults to $db->maxblobsize if not defined. + */ + function BlobDecode($blob,$maxsize=false,$hastrans=true) + { + if (!$this->GuessOID($blob)) return $blob; + + if ($hastrans) @pg_exec($this->_connectionID,"begin"); + $fd = @pg_lo_open($this->_connectionID,$blob,"r"); + if ($fd === false) { + if ($hastrans) @pg_exec($this->_connectionID,"commit"); + return $blob; + } + if (!$maxsize) $maxsize = $this->maxblobsize; + $realblob = @pg_loread($fd,$maxsize); + @pg_loclose($fd); + if ($hastrans) @pg_exec($this->_connectionID,"commit"); + return $realblob; + } + + /* + See http://www.postgresql.org/idocs/index.php?datatype-binary.html + + NOTE: SQL string literals (input strings) must be preceded with two backslashes + due to the fact that they must pass through two parsers in the PostgreSQL + backend. + */ + function BlobEncode($blob) + { + if (ADODB_PHPVER >= 0x5200) return pg_escape_bytea($this->_connectionID, $blob); + if (ADODB_PHPVER >= 0x4200) return pg_escape_bytea($blob); + + /*92=backslash, 0=null, 39=single-quote*/ + $badch = array(chr(92),chr(0),chr(39)); # \ null ' + $fixch = array('\\\\134','\\\\000','\\\\047'); + return adodb_str_replace($badch,$fixch,$blob); + + // note that there is a pg_escape_bytea function only for php 4.2.0 or later + } + + // assumes bytea for blob, and varchar for clob + function UpdateBlob($table,$column,$val,$where,$blobtype='BLOB') + { + + if ($blobtype == 'CLOB') { + return $this->Execute("UPDATE $table SET $column=" . $this->qstr($val) . " WHERE $where"); + } + // do not use bind params which uses qstr(), as blobencode() already quotes data + return $this->Execute("UPDATE $table SET $column='".$this->BlobEncode($val)."'::bytea WHERE $where"); + } + + function OffsetDate($dayFraction,$date=false) + { + if (!$date) $date = $this->sysDate; + else if (strncmp($date,"'",1) == 0) { + $len = strlen($date); + if (10 <= $len && $len <= 12) $date = 'date '.$date; + else $date = 'timestamp '.$date; + } + + + return "($date+interval'".($dayFraction * 1440)." minutes')"; + #return "($date+interval'$dayFraction days')"; + } + + + // for schema support, pass in the $table param "$schema.$tabname". + // converts field names to lowercase, $upper is ignored + // see http://phplens.com/lens/lensforum/msgs.php?id=14018 for more info + function MetaColumns($table,$normalize=true) + { + global $ADODB_FETCH_MODE; + + $schema = false; + $false = false; + $this->_findschema($table,$schema); + + if ($normalize) $table = strtolower($table); + + $save = $ADODB_FETCH_MODE; + $ADODB_FETCH_MODE = ADODB_FETCH_NUM; + if ($this->fetchMode !== false) $savem = $this->SetFetchMode(false); + + if ($schema) $rs = $this->Execute(sprintf($this->metaColumnsSQL1,$table,$table,$schema)); + else $rs = $this->Execute(sprintf($this->metaColumnsSQL,$table,$table)); + if (isset($savem)) $this->SetFetchMode($savem); + $ADODB_FETCH_MODE = $save; + + if ($rs === false) { + return $false; + } + if (!empty($this->metaKeySQL)) { + // If we want the primary keys, we have to issue a separate query + // Of course, a modified version of the metaColumnsSQL query using a + // LEFT JOIN would have been much more elegant, but postgres does + // not support OUTER JOINS. So here is the clumsy way. + + $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC; + + $rskey = $this->Execute(sprintf($this->metaKeySQL,($table))); + // fetch all result in once for performance. + $keys = $rskey->GetArray(); + if (isset($savem)) $this->SetFetchMode($savem); + $ADODB_FETCH_MODE = $save; + + $rskey->Close(); + unset($rskey); + } + + $rsdefa = array(); + if (!empty($this->metaDefaultsSQL)) { + $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC; + $sql = sprintf($this->metaDefaultsSQL, ($table)); + $rsdef = $this->Execute($sql); + if (isset($savem)) $this->SetFetchMode($savem); + $ADODB_FETCH_MODE = $save; + + if ($rsdef) { + while (!$rsdef->EOF) { + $num = $rsdef->fields['num']; + $s = $rsdef->fields['def']; + if (strpos($s,'::')===false && substr($s, 0, 1) == "'") { /* quoted strings hack... for now... fixme */ + $s = substr($s, 1); + $s = substr($s, 0, strlen($s) - 1); + } + + $rsdefa[$num] = $s; + $rsdef->MoveNext(); + } + } else { + ADOConnection::outp( "==> SQL => " . $sql); + } + unset($rsdef); + } + + $retarr = array(); + while (!$rs->EOF) { + $fld = new ADOFieldObject(); + $fld->name = $rs->fields[0]; + $fld->type = $rs->fields[1]; + $fld->max_length = $rs->fields[2]; + $fld->attnum = $rs->fields[6]; + + if ($fld->max_length <= 0) $fld->max_length = $rs->fields[3]-4; + if ($fld->max_length <= 0) $fld->max_length = -1; + if ($fld->type == 'numeric') { + $fld->scale = $fld->max_length & 0xFFFF; + $fld->max_length >>= 16; + } + // dannym + // 5 hasdefault; 6 num-of-column + $fld->has_default = ($rs->fields[5] == 't'); + if ($fld->has_default) { + $fld->default_value = $rsdefa[$rs->fields[6]]; + } + + //Freek + $fld->not_null = $rs->fields[4] == 't'; + + + // Freek + if (is_array($keys)) { + foreach($keys as $key) { + if ($fld->name == $key['column_name'] AND $key['primary_key'] == 't') + $fld->primary_key = true; + if ($fld->name == $key['column_name'] AND $key['unique_key'] == 't') + $fld->unique = true; // What name is more compatible? + } + } + + if ($ADODB_FETCH_MODE == ADODB_FETCH_NUM) $retarr[] = $fld; + else $retarr[($normalize) ? strtoupper($fld->name) : $fld->name] = $fld; + + $rs->MoveNext(); + } + $rs->Close(); + if (empty($retarr)) + return $false; + else + return $retarr; + + } + + function MetaIndexes ($table, $primary = FALSE, $owner = false) + { + global $ADODB_FETCH_MODE; + + $schema = false; + $this->_findschema($table,$schema); + + if ($schema) { // requires pgsql 7.3+ - pg_namespace used. + $sql = ' +SELECT c.relname as "Name", i.indisunique as "Unique", i.indkey as "Columns" +FROM pg_catalog.pg_class c +JOIN pg_catalog.pg_index i ON i.indexrelid=c.oid +JOIN pg_catalog.pg_class c2 ON c2.oid=i.indrelid + ,pg_namespace n +WHERE (c2.relname=\'%s\' or c2.relname=lower(\'%s\')) and c.relnamespace=c2.relnamespace and c.relnamespace=n.oid and n.nspname=\'%s\''; + } else { + $sql = ' +SELECT c.relname as "Name", i.indisunique as "Unique", i.indkey as "Columns" +FROM pg_catalog.pg_class c +JOIN pg_catalog.pg_index i ON i.indexrelid=c.oid +JOIN pg_catalog.pg_class c2 ON c2.oid=i.indrelid +WHERE (c2.relname=\'%s\' or c2.relname=lower(\'%s\'))'; + } + + if ($primary == FALSE) { + $sql .= ' AND i.indisprimary=false;'; + } + + $save = $ADODB_FETCH_MODE; + $ADODB_FETCH_MODE = ADODB_FETCH_NUM; + if ($this->fetchMode !== FALSE) { + $savem = $this->SetFetchMode(FALSE); + } + + $rs = $this->Execute(sprintf($sql,$table,$table,$schema)); + if (isset($savem)) { + $this->SetFetchMode($savem); + } + $ADODB_FETCH_MODE = $save; + + if (!is_object($rs)) { + $false = false; + return $false; + } + + $col_names = $this->MetaColumnNames($table,true,true); + //3rd param is use attnum, + // see http://sourceforge.net/tracker/index.php?func=detail&aid=1451245&group_id=42718&atid=433976 + $indexes = array(); + while ($row = $rs->FetchRow()) { + $columns = array(); + foreach (explode(' ', $row[2]) as $col) { + $columns[] = $col_names[$col]; + } + + $indexes[$row[0]] = array( + 'unique' => ($row[1] == 't'), + 'columns' => $columns + ); + } + return $indexes; + } + + // returns true or false + // + // examples: + // $db->Connect("host=host1 user=user1 password=secret port=4341"); + // $db->Connect('host1','user1','secret'); + function _connect($str,$user='',$pwd='',$db='',$ctype=0) + { + + if (!function_exists('pg_connect')) return null; + + $this->_errorMsg = false; + + if ($user || $pwd || $db) { + $user = adodb_addslashes($user); + $pwd = adodb_addslashes($pwd); + if (strlen($db) == 0) $db = 'template1'; + $db = adodb_addslashes($db); + if ($str) { + $host = explode(":", $str); + if ($host[0]) $str = "host=".adodb_addslashes($host[0]); + else $str = ''; + if (isset($host[1])) $str .= " port=$host[1]"; + else if (!empty($this->port)) $str .= " port=".$this->port; + } + if ($user) $str .= " user=".$user; + if ($pwd) $str .= " password=".$pwd; + if ($db) $str .= " dbname=".$db; + } + + //if ($user) $linea = "user=$user host=$linea password=$pwd dbname=$db port=5432"; + + if ($ctype === 1) { // persistent + $this->_connectionID = pg_pconnect($str); + } else { + if ($ctype === -1) { // nconnect, we trick pgsql ext by changing the connection str + static $ncnt; + + if (empty($ncnt)) $ncnt = 1; + else $ncnt += 1; + + $str .= str_repeat(' ',$ncnt); + } + $this->_connectionID = @pg_connect($str); + } + if ($this->_connectionID === false) return false; + $this->Execute("set datestyle='ISO'"); + + $info = $this->ServerInfo(); + $this->pgVersion = (float) substr($info['version'],0,3); + if ($this->pgVersion >= 7.1) { // good till version 999 + $this->_nestedSQL = true; + } + return true; + } + + function _nconnect($argHostname, $argUsername, $argPassword, $argDatabaseName) + { + return $this->_connect($argHostname, $argUsername, $argPassword, $argDatabaseName,-1); + } + + // returns true or false + // + // examples: + // $db->PConnect("host=host1 user=user1 password=secret port=4341"); + // $db->PConnect('host1','user1','secret'); + function _pconnect($str,$user='',$pwd='',$db='') + { + return $this->_connect($str,$user,$pwd,$db,1); + } + + + // returns queryID or false + function _query($sql,$inputarr=false) + { + $this->_errorMsg = false; + if ($inputarr) { + /* + It appears that PREPARE/EXECUTE is slower for many queries. + + For query executed 1000 times: + "select id,firstname,lastname from adoxyz + where firstname not like ? and lastname not like ? and id = ?" + + with plan = 1.51861286163 secs + no plan = 1.26903700829 secs + + + + */ + $plan = 'P'.md5($sql); + + $execp = ''; + foreach($inputarr as $v) { + if ($execp) $execp .= ','; + if (is_string($v)) { + if (strncmp($v,"'",1) !== 0) $execp .= $this->qstr($v); + } else { + $execp .= $v; + } + } + + if ($execp) $exsql = "EXECUTE $plan ($execp)"; + else $exsql = "EXECUTE $plan"; + + + $rez = @pg_exec($this->_connectionID,$exsql); + if (!$rez) { + # Perhaps plan does not exist? Prepare/compile plan. + $params = ''; + foreach($inputarr as $v) { + if ($params) $params .= ','; + if (is_string($v)) { + $params .= 'VARCHAR'; + } else if (is_integer($v)) { + $params .= 'INTEGER'; + } else { + $params .= "REAL"; + } + } + $sqlarr = explode('?',$sql); + //print_r($sqlarr); + $sql = ''; + $i = 1; + foreach($sqlarr as $v) { + $sql .= $v.' $'.$i; + $i++; + } + $s = "PREPARE $plan ($params) AS ".substr($sql,0,strlen($sql)-2); + //adodb_pr($s); + $rez = pg_exec($this->_connectionID,$s); + //echo $this->ErrorMsg(); + } + if ($rez) + $rez = pg_exec($this->_connectionID,$exsql); + } else { + //adodb_backtrace(); + $rez = pg_exec($this->_connectionID,$sql); + } + // check if no data returned, then no need to create real recordset + if ($rez && pg_numfields($rez) <= 0) { + if (is_resource($this->_resultid) && get_resource_type($this->_resultid) === 'pgsql result') { + pg_freeresult($this->_resultid); + } + $this->_resultid = $rez; + return true; + } + + return $rez; + } + + function _errconnect() + { + if (defined('DB_ERROR_CONNECT_FAILED')) return DB_ERROR_CONNECT_FAILED; + else return 'Database connection failed'; + } + + /* Returns: the last error message from previous database operation */ + function ErrorMsg() + { + if ($this->_errorMsg !== false) return $this->_errorMsg; + if (ADODB_PHPVER >= 0x4300) { + if (!empty($this->_resultid)) { + $this->_errorMsg = @pg_result_error($this->_resultid); + if ($this->_errorMsg) return $this->_errorMsg; + } + + if (!empty($this->_connectionID)) { + $this->_errorMsg = @pg_last_error($this->_connectionID); + } else $this->_errorMsg = $this->_errconnect(); + } else { + if (empty($this->_connectionID)) $this->_errconnect(); + else $this->_errorMsg = @pg_errormessage($this->_connectionID); + } + return $this->_errorMsg; + } + + function ErrorNo() + { + $e = $this->ErrorMsg(); + if (strlen($e)) { + return ADOConnection::MetaError($e); + } + return 0; + } + + // returns true or false + function _close() + { + if ($this->transCnt) $this->RollbackTrans(); + if ($this->_resultid) { + @pg_freeresult($this->_resultid); + $this->_resultid = false; + } + @pg_close($this->_connectionID); + $this->_connectionID = false; + return true; + } + + + /* + * Maximum size of C field + */ + function CharMax() + { + return 1000000000; // should be 1 Gb? + } + + /* + * Maximum size of X field + */ + function TextMax() + { + return 1000000000; // should be 1 Gb? + } + + +} + +/*-------------------------------------------------------------------------------------- + Class Name: Recordset +--------------------------------------------------------------------------------------*/ + +class ADORecordSet_postgres64 extends ADORecordSet{ + var $_blobArr; + var $databaseType = "postgres64"; + var $canSeek = true; + function ADORecordSet_postgres64($queryID,$mode=false) + { + if ($mode === false) { + global $ADODB_FETCH_MODE; + $mode = $ADODB_FETCH_MODE; + } + switch ($mode) + { + case ADODB_FETCH_NUM: $this->fetchMode = PGSQL_NUM; break; + case ADODB_FETCH_ASSOC:$this->fetchMode = PGSQL_ASSOC; break; + + case ADODB_FETCH_DEFAULT: + case ADODB_FETCH_BOTH: + default: $this->fetchMode = PGSQL_BOTH; break; + } + $this->adodbFetchMode = $mode; + $this->ADORecordSet($queryID); + } + + function GetRowAssoc($upper=true) + { + if ($this->fetchMode == PGSQL_ASSOC && !$upper) return $this->fields; + $row = ADORecordSet::GetRowAssoc($upper); + return $row; + } + + function _initrs() + { + global $ADODB_COUNTRECS; + $qid = $this->_queryID; + $this->_numOfRows = ($ADODB_COUNTRECS)? @pg_numrows($qid):-1; + $this->_numOfFields = @pg_numfields($qid); + + // cache types for blob decode check + // apparently pg_fieldtype actually performs an sql query on the database to get the type. + if (empty($this->connection->noBlobs)) + for ($i=0, $max = $this->_numOfFields; $i < $max; $i++) { + if (pg_fieldtype($qid,$i) == 'bytea') { + $this->_blobArr[$i] = pg_fieldname($qid,$i); + } + } + } + + /* Use associative array to get fields array */ + function Fields($colname) + { + if ($this->fetchMode != PGSQL_NUM) return @$this->fields[$colname]; + + if (!$this->bind) { + $this->bind = array(); + for ($i=0; $i < $this->_numOfFields; $i++) { + $o = $this->FetchField($i); + $this->bind[strtoupper($o->name)] = $i; + } + } + return $this->fields[$this->bind[strtoupper($colname)]]; + } + + function FetchField($off = 0) + { + // offsets begin at 0 + + $o= new ADOFieldObject(); + $o->name = @pg_fieldname($this->_queryID,$off); + $o->type = @pg_fieldtype($this->_queryID,$off); + $o->max_length = @pg_fieldsize($this->_queryID,$off); + return $o; + } + + function _seek($row) + { + return @pg_fetch_row($this->_queryID,$row); + } + + function _decode($blob) + { + if ($blob === NULL) return NULL; + eval('$realblob="'.adodb_str_replace(array('"','$'),array('\"','\$'),$blob).'";'); + return $realblob; + } + + function _fixblobs() + { + + return; # bypass adodb's bytea handling, so we can handle it ourselves within PHP + + if ($this->fetchMode == PGSQL_NUM || $this->fetchMode == PGSQL_BOTH) { + foreach($this->_blobArr as $k => $v) { + $this->fields[$k] = ADORecordSet_postgres64::_decode($this->fields[$k]); + } + } + if ($this->fetchMode == PGSQL_ASSOC || $this->fetchMode == PGSQL_BOTH) { + foreach($this->_blobArr as $k => $v) { + $this->fields[$v] = ADORecordSet_postgres64::_decode($this->fields[$v]); + } + } + } + + // 10% speedup to move MoveNext to child class + function MoveNext() + { + if (!$this->EOF) { + $this->_currentRow++; + if ($this->_numOfRows < 0 || $this->_numOfRows > $this->_currentRow) { + $this->fields = @pg_fetch_array($this->_queryID,$this->_currentRow,$this->fetchMode); + if (is_array($this->fields) && $this->fields) { + if (isset($this->_blobArr)) $this->_fixblobs(); + return true; + } + } + $this->fields = false; + $this->EOF = true; + } + return false; + } + + function _fetch() + { + + if ($this->_currentRow >= $this->_numOfRows && $this->_numOfRows >= 0) + return false; + + $this->fields = @pg_fetch_array($this->_queryID,$this->_currentRow,$this->fetchMode); + + if ($this->fields && isset($this->_blobArr)) $this->_fixblobs(); + + return (is_array($this->fields)); + } + + function _close() + { + return @pg_freeresult($this->_queryID); + } + + function MetaType($t,$len=-1,$fieldobj=false) + { + if (is_object($t)) { + $fieldobj = $t; + $t = $fieldobj->type; + $len = $fieldobj->max_length; + } + switch (strtoupper($t)) { + case 'MONEY': // stupid, postgres expects money to be a string + case 'INTERVAL': + case 'CHAR': + case 'CHARACTER': + case 'VARCHAR': + case 'NAME': + case 'BPCHAR': + case '_VARCHAR': + case 'INET': + case 'MACADDR': + if ($len <= $this->blobSize) return 'C'; + + case 'TEXT': + return 'X'; + + case 'IMAGE': // user defined type + case 'BLOB': // user defined type + case 'BIT': // This is a bit string, not a single bit, so don't return 'L' + case 'VARBIT': + case 'BYTEA': + return 'B'; + + case 'BOOL': + case 'BOOLEAN': + return 'L'; + + case 'DATE': + return 'D'; + + + case 'TIMESTAMP WITHOUT TIME ZONE': + case 'TIME': + case 'DATETIME': + case 'TIMESTAMP': + case 'TIMESTAMPTZ': + return 'T'; + + case 'SMALLINT': + case 'BIGINT': + case 'INTEGER': + case 'INT8': + case 'INT4': + case 'INT2': + if (isset($fieldobj) && + empty($fieldobj->primary_key) && (!$this->connection->uniqueIisR || empty($fieldobj->unique))) return 'I'; + + case 'OID': + case 'SERIAL': + return 'R'; + + default: + return 'N'; + } + } + +} +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/drivers/adodb-postgres7.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/drivers/adodb-postgres7.inc.php new file mode 100644 index 00000000..eecfdc37 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/drivers/adodb-postgres7.inc.php @@ -0,0 +1,313 @@ +ADODB_postgres64(); + if (ADODB_ASSOC_CASE !== 2) { + $this->rsPrefix .= 'assoc_'; + } + $this->_bindInputArray = PHP_VERSION >= 5.1; + } + + + // the following should be compat with postgresql 7.2, + // which makes obsolete the LIMIT limit,offset syntax + function SelectLimit($sql,$nrows=-1,$offset=-1,$inputarr=false,$secs2cache=0) + { + $offsetStr = ($offset >= 0) ? " OFFSET ".((integer)$offset) : ''; + $limitStr = ($nrows >= 0) ? " LIMIT ".((integer)$nrows) : ''; + if ($secs2cache) + $rs = $this->CacheExecute($secs2cache,$sql."$limitStr$offsetStr",$inputarr); + else + $rs = $this->Execute($sql."$limitStr$offsetStr",$inputarr); + + return $rs; + } + /* + function Prepare($sql) + { + $info = $this->ServerInfo(); + if ($info['version']>=7.3) { + return array($sql,false); + } + return $sql; + } + */ + + /* + I discovered that the MetaForeignKeys method no longer worked for Postgres 8.3. + I went ahead and modified it to work for both 8.2 and 8.3. + Please feel free to include this change in your next release of adodb. + William Kolodny [William.Kolodny#gt-t.net] + */ + function MetaForeignKeys($table, $owner=false, $upper=false) + { + $sql=" + SELECT fum.ftblname AS lookup_table, split_part(fum.rf, ')'::text, 1) AS lookup_field, + fum.ltable AS dep_table, split_part(fum.lf, ')'::text, 1) AS dep_field + FROM ( + SELECT fee.ltable, fee.ftblname, fee.consrc, split_part(fee.consrc,'('::text, 2) AS lf, + split_part(fee.consrc, '('::text, 3) AS rf + FROM ( + SELECT foo.relname AS ltable, foo.ftblname, + pg_get_constraintdef(foo.oid) AS consrc + FROM ( + SELECT c.oid, c.conname AS name, t.relname, ft.relname AS ftblname + FROM pg_constraint c + JOIN pg_class t ON (t.oid = c.conrelid) + JOIN pg_class ft ON (ft.oid = c.confrelid) + JOIN pg_namespace nft ON (nft.oid = ft.relnamespace) + LEFT JOIN pg_description ds ON (ds.objoid = c.oid) + JOIN pg_namespace n ON (n.oid = t.relnamespace) + WHERE c.contype = 'f'::\"char\" + ORDER BY t.relname, n.nspname, c.conname, c.oid + ) foo + ) fee) fum + WHERE fum.ltable='".strtolower($table)."' + ORDER BY fum.ftblname, fum.ltable, split_part(fum.lf, ')'::text, 1) + "; + $rs = $this->Execute($sql); + + if (!$rs || $rs->EOF) return false; + + $a = array(); + while (!$rs->EOF) { + if ($upper) { + $a[strtoupper($rs->Fields('lookup_table'))][] = strtoupper(str_replace('"','',$rs->Fields('dep_field').'='.$rs->Fields('lookup_field'))); + } else { + $a[$rs->Fields('lookup_table')][] = str_replace('"','',$rs->Fields('dep_field').'='.$rs->Fields('lookup_field')); + } + $rs->MoveNext(); + } + + return $a; + + } + + // from Edward Jaramilla, improved version - works on pg 7.4 + function _old_MetaForeignKeys($table, $owner=false, $upper=false) + { + $sql = 'SELECT t.tgargs as args + FROM + pg_trigger t,pg_class c,pg_proc p + WHERE + t.tgenabled AND + t.tgrelid = c.oid AND + t.tgfoid = p.oid AND + p.proname = \'RI_FKey_check_ins\' AND + c.relname = \''.strtolower($table).'\' + ORDER BY + t.tgrelid'; + + $rs = $this->Execute($sql); + + if (!$rs || $rs->EOF) return false; + + $arr = $rs->GetArray(); + $a = array(); + foreach($arr as $v) { + $data = explode(chr(0), $v['args']); + $size = count($data)-1; //-1 because the last node is empty + for($i = 4; $i < $size; $i++) { + if ($upper) + $a[strtoupper($data[2])][] = strtoupper($data[$i].'='.$data[++$i]); + else + $a[$data[2]][] = $data[$i].'='.$data[++$i]; + } + } + return $a; + } + + function _query($sql,$inputarr=false) + { + if (! $this->_bindInputArray) { + // We don't have native support for parameterized queries, so let's emulate it at the parent + return ADODB_postgres64::_query($sql, $inputarr); + } + $this->_errorMsg = false; + // -- added Cristiano da Cunha Duarte + if ($inputarr) { + $sqlarr = explode('?',trim($sql)); + $sql = ''; + $i = 1; + $last = sizeof($sqlarr)-1; + foreach($sqlarr as $v) { + if ($last < $i) $sql .= $v; + else $sql .= $v.' $'.$i; + $i++; + } + + $rez = pg_query_params($this->_connectionID,$sql, $inputarr); + } else { + $rez = pg_query($this->_connectionID,$sql); + } + // check if no data returned, then no need to create real recordset + if ($rez && pg_numfields($rez) <= 0) { + if (is_resource($this->_resultid) && get_resource_type($this->_resultid) === 'pgsql result') { + pg_freeresult($this->_resultid); + } + $this->_resultid = $rez; + return true; + } + return $rez; + } + + // this is a set of functions for managing client encoding - very important if the encodings + // of your database and your output target (i.e. HTML) don't match + //for instance, you may have UNICODE database and server it on-site as WIN1251 etc. + // GetCharSet - get the name of the character set the client is using now + // the functions should work with Postgres 7.0 and above, the set of charsets supported + // depends on compile flags of postgres distribution - if no charsets were compiled into the server + // it will return 'SQL_ANSI' always + function GetCharSet() + { + //we will use ADO's builtin property charSet + $this->charSet = @pg_client_encoding($this->_connectionID); + if (!$this->charSet) { + return false; + } else { + return $this->charSet; + } + } + + // SetCharSet - switch the client encoding + function SetCharSet($charset_name) + { + $this->GetCharSet(); + if ($this->charSet !== $charset_name) { + $if = pg_set_client_encoding($this->_connectionID, $charset_name); + if ($if == "0" & $this->GetCharSet() == $charset_name) { + return true; + } else return false; + } else return true; + } + +} + +/*-------------------------------------------------------------------------------------- + Class Name: Recordset +--------------------------------------------------------------------------------------*/ + +class ADORecordSet_postgres7 extends ADORecordSet_postgres64{ + + var $databaseType = "postgres7"; + + + function ADORecordSet_postgres7($queryID,$mode=false) + { + $this->ADORecordSet_postgres64($queryID,$mode); + } + + // 10% speedup to move MoveNext to child class + function MoveNext() + { + if (!$this->EOF) { + $this->_currentRow++; + if ($this->_numOfRows < 0 || $this->_numOfRows > $this->_currentRow) { + $this->fields = @pg_fetch_array($this->_queryID,$this->_currentRow,$this->fetchMode); + + if (is_array($this->fields)) { + if ($this->fields && isset($this->_blobArr)) $this->_fixblobs(); + return true; + } + } + $this->fields = false; + $this->EOF = true; + } + return false; + } + +} + +class ADORecordSet_assoc_postgres7 extends ADORecordSet_postgres64{ + + var $databaseType = "postgres7"; + + + function ADORecordSet_assoc_postgres7($queryID,$mode=false) + { + $this->ADORecordSet_postgres64($queryID,$mode); + } + + function _fetch() + { + if ($this->_currentRow >= $this->_numOfRows && $this->_numOfRows >= 0) + return false; + + $this->fields = @pg_fetch_array($this->_queryID,$this->_currentRow,$this->fetchMode); + + if ($this->fields) { + if (isset($this->_blobArr)) $this->_fixblobs(); + $this->_updatefields(); + } + + return (is_array($this->fields)); + } + + // Create associative array + function _updatefields() + { + if (ADODB_ASSOC_CASE == 2) return; // native + + $arr = array(); + $lowercase = (ADODB_ASSOC_CASE == 0); + + foreach($this->fields as $k => $v) { + if (is_integer($k)) $arr[$k] = $v; + else { + if ($lowercase) + $arr[strtolower($k)] = $v; + else + $arr[strtoupper($k)] = $v; + } + } + $this->fields = $arr; + } + + function MoveNext() + { + if (!$this->EOF) { + $this->_currentRow++; + if ($this->_numOfRows < 0 || $this->_numOfRows > $this->_currentRow) { + $this->fields = @pg_fetch_array($this->_queryID,$this->_currentRow,$this->fetchMode); + + if (is_array($this->fields)) { + if ($this->fields) { + if (isset($this->_blobArr)) $this->_fixblobs(); + + $this->_updatefields(); + } + return true; + } + } + + + $this->fields = false; + $this->EOF = true; + } + return false; + } +} +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/drivers/adodb-postgres8.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/drivers/adodb-postgres8.inc.php new file mode 100644 index 00000000..3134e3c3 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/drivers/adodb-postgres8.inc.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-ar.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-ar.inc.php new file mode 100644 index 00000000..4b750952 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-ar.inc.php @@ -0,0 +1,33 @@ + +$ADODB_LANG_ARRAY = array ( + 'LANG' => 'ar', + DB_ERROR => 'ΞΨΓ ΫνΡ γΝΟΟ', + DB_ERROR_ALREADY_EXISTS => 'γζΜζΟ γΣΘήΗ', + DB_ERROR_CANNOT_CREATE => 'αΗ νγίδ ΕδΤΗΑ', + DB_ERROR_CANNOT_DELETE => 'αΗ νγίδ ΝΠέ', + DB_ERROR_CANNOT_DROP => 'αΗ νγίδ ΝΠέ', + DB_ERROR_CONSTRAINT => 'ΪγανΙ ΕΟΞΗα γγδζΪΙ', + DB_ERROR_DIVZERO => 'ΪγανΙ ΗαΚήΣνγ Ϊαμ ΥέΡ', + DB_ERROR_INVALID => 'ΫνΡ ΥΝνΝ', + DB_ERROR_INVALID_DATE => 'ΥνΫΙ ζήΚ Γζ ΚΗΡνΞ ΫνΡ ΥΝνΝΙ', + DB_ERROR_INVALID_NUMBER => 'ΥνΫΙ Ρήγ ΫνΡ ΥΝνΝΙ', + DB_ERROR_MISMATCH => 'ΫνΡ γΚΨΗΘή', + DB_ERROR_NODBSELECTED => 'αγ νΚγ ΕΞΚνΗΡ ήΗΪΟΙ ΗαΘνΗδΗΚ ΘΪΟ', + DB_ERROR_NOSUCHFIELD => 'ανΣ εδΗαί Νήα ΘεΠΗ ΗαΗΣγ', + DB_ERROR_NOSUCHTABLE => 'ανΣ εδΗαί ΜΟζα ΘεΠΗ ΗαΗΣγ', + DB_ERROR_NOT_CAPABLE => 'ήΗΪΟΙ ΗαΘνΗδΗΚ ΗαγΡΚΘΨ ΘεΗ ΫνΡ ήΗΟΡΙ', + DB_ERROR_NOT_FOUND => 'αγ νΚγ ΕνΜΗΟε', + DB_ERROR_NOT_LOCKED => 'ΫνΡ γήέζα', + DB_ERROR_SYNTAX => 'ΞΨΓ έν ΗαΥνΫΙ', + DB_ERROR_UNSUPPORTED => 'ΫνΡ γΟΪζγ', + DB_ERROR_VALUE_COUNT_ON_ROW => 'ΪΟΟ Ηαήνγ έν ΗαΣΜα', + DB_ERROR_INVALID_DSN => 'DSN ΫνΡ ΥΝνΝ', + DB_ERROR_CONNECT_FAILED => 'έΤα ΪγανΙ ΗαΕΚΥΗα', + 0 => 'ανΣ εδΗαί ΓΞΨΗΑ', // DB_OK + DB_ERROR_NEED_MORE_DATA => 'ΗαΘνΗδΗΚ ΗαγζΟΙ ΫνΡ ίΗένΙ', + DB_ERROR_EXTENSION_NOT_FOUND=> 'αγ νΚγ ΕνΜΗΟ ΗαΕΦΗέΙ ΗαγΚΪαήΙ', + DB_ERROR_NOSUCHDB => 'ανΣ εδΗαί ήΗΪΟΙ ΘνΗδΗΚ ΘεΠΗ ΗαΗΣγ', + DB_ERROR_ACCESS_VIOLATION => 'ΣγΗΝνΗΚ ΫνΡ ίΗένΙ' +); +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-bg.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-bg.inc.php new file mode 100644 index 00000000..ee307c13 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-bg.inc.php @@ -0,0 +1,37 @@ + +*/ + +$ADODB_LANG_ARRAY = array ( + 'LANG' => 'bg', + DB_ERROR => 'νεθηβερςνΰ γπεψκΰ', + DB_ERROR_ALREADY_EXISTS => 'βεχε ρϊωερςβσβΰ', + DB_ERROR_CANNOT_CREATE => 'νε μξζε δΰ αϊδε ρϊηδΰδενΰ', + DB_ERROR_CANNOT_DELETE => 'νε μξζε δΰ αϊδε θηςπθςΰ', + DB_ERROR_CANNOT_DROP => 'νε μξζε δΰ αϊδε σνθωξζενΰ', + DB_ERROR_CONSTRAINT => 'νΰπσψενξ σρλξβθε', + DB_ERROR_DIVZERO => 'δελενθε νΰ νσλΰ', + DB_ERROR_INVALID => 'νεοπΰβθλνξ', + DB_ERROR_INVALID_DATE => 'νεκξπεκςνΰ δΰςΰ θλθ χΰρ', + DB_ERROR_INVALID_NUMBER => 'νεβΰλθδεν νξμεπ', + DB_ERROR_MISMATCH => 'οξγπεψνΰ σοξςπεαΰ', + DB_ERROR_NODBSELECTED => 'νε ε θηαπΰνΰ αΰηΰ δΰννθ', + DB_ERROR_NOSUCHFIELD => 'νερϊωερςβσβΰωξ οξλε', + DB_ERROR_NOSUCHTABLE => 'νερϊωερςβσβΰωΰ ςΰαλθφΰ', + DB_ERROR_NOT_CAPABLE => 'DB backend not capable', + DB_ERROR_NOT_FOUND => 'νε ε νΰμεπενΰ', + DB_ERROR_NOT_LOCKED => 'νε ε ηΰκλώχενΰ', + DB_ERROR_SYNTAX => 'γπεψεν ρθνςΰκρθρ', + DB_ERROR_UNSUPPORTED => 'νε ρε οξδδϊπζΰ', + DB_ERROR_VALUE_COUNT_ON_ROW => 'νεκξπεκςεν απξι κξλξνθ β πεδΰ', + DB_ERROR_INVALID_DSN => 'νεβΰλθδεν DSN', + DB_ERROR_CONNECT_FAILED => 'βπϊηκΰςΰ νε μξζε δΰ αϊδε ξρϊωερςβενΰ', + 0 => 'νμΰ γπεψκθ', // DB_OK + DB_ERROR_NEED_MORE_DATA => 'οπεδξρςΰβενθςε δΰννθ ρΰ νεδξρςΰςϊχνθ', + DB_ERROR_EXTENSION_NOT_FOUND=> 'πΰηψθπενθεςξ νε ε νΰμεπενξ', + DB_ERROR_NOSUCHDB => 'νερϊωερςβσβΰωΰ αΰηΰ δΰννθ', + DB_ERROR_ACCESS_VIOLATION => 'νμΰςε δξρςΰςϊχνξ οπΰβΰ' +); +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-bgutf8.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-bgutf8.inc.php new file mode 100644 index 00000000..5281ed53 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-bgutf8.inc.php @@ -0,0 +1,37 @@ +ο»Ώ +*/ + +$ADODB_LANG_ARRAY = array ( + 'LANG' => 'bgutf8', + DB_ERROR => 'нСизвСстна Π³Ρ€Π΅ΡˆΠΊΠ°', + DB_ERROR_ALREADY_EXISTS => 'Π²Π΅Ρ‡Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°', + DB_ERROR_CANNOT_CREATE => 'Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС създадСна', + DB_ERROR_CANNOT_DELETE => 'Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΈΠ·Ρ‚Ρ€ΠΈΡ‚Π°', + DB_ERROR_CANNOT_DROP => 'Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΡƒΠ½ΠΈΡ‰ΠΎΠΆΠ΅Π½Π°', + DB_ERROR_CONSTRAINT => 'Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΎ условиС', + DB_ERROR_DIVZERO => 'Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Π½ΡƒΠ»Π°', + DB_ERROR_INVALID => 'Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ', + DB_ERROR_INVALID_DATE => 'Π½Π΅ΠΊΠΎΡ€Π΅ΠΊΡ‚Π½Π° Π΄Π°Ρ‚Π° ΠΈΠ»ΠΈ час', + DB_ERROR_INVALID_NUMBER => 'Π½Π΅Π²Π°Π»ΠΈΠ΄Π΅Π½ Π½ΠΎΠΌΠ΅Ρ€', + DB_ERROR_MISMATCH => 'ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°', + DB_ERROR_NODBSELECTED => 'Π½Π΅ Π΅ ΠΈΠ·Π±Ρ€Π°Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ', + DB_ERROR_NOSUCHFIELD => 'Π½Π΅ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΎ ΠΏΠΎΠ»Π΅', + DB_ERROR_NOSUCHTABLE => 'Π½Π΅ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°', + DB_ERROR_NOT_CAPABLE => 'DB backend not capable', + DB_ERROR_NOT_FOUND => 'Π½Π΅ Π΅ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π°', + DB_ERROR_NOT_LOCKED => 'Π½Π΅ Π΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π°', + DB_ERROR_SYNTAX => 'Π³Ρ€Π΅ΡˆΠ΅Π½ синтаксис', + DB_ERROR_UNSUPPORTED => 'Π½Π΅ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°', + DB_ERROR_VALUE_COUNT_ON_ROW => 'Π½Π΅ΠΊΠΎΡ€Π΅ΠΊΡ‚Π΅Π½ Π±Ρ€ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΈ Π² Ρ€Π΅Π΄Π°', + DB_ERROR_INVALID_DSN => 'Π½Π΅Π²Π°Π»ΠΈΠ΄Π΅Π½ DSN', + DB_ERROR_CONNECT_FAILED => 'Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΎΡΡŠΡ‰Π΅ΡΡ‚Π²Π΅Π½Π°', + 0 => 'няма Π³Ρ€Π΅ΡˆΠΊΠΈ', // DB_OK + DB_ERROR_NEED_MORE_DATA => 'прСдоставСнитС Π΄Π°Π½Π½ΠΈ са Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΈ', + DB_ERROR_EXTENSION_NOT_FOUND=> 'Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π΅ Π΅ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΎ', + DB_ERROR_NOSUCHDB => 'Π½Π΅ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ', + DB_ERROR_ACCESS_VIOLATION => 'няматС Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ ΠΏΡ€Π°Π²Π°' +); +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-ca.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-ca.inc.php new file mode 100644 index 00000000..3640ebd0 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-ca.inc.php @@ -0,0 +1,34 @@ + 'ca', + DB_ERROR => 'error desconegut', + DB_ERROR_ALREADY_EXISTS => 'ja existeix', + DB_ERROR_CANNOT_CREATE => 'no es pot crear', + DB_ERROR_CANNOT_DELETE => 'no es pot esborrar', + DB_ERROR_CANNOT_DROP => 'no es pot eliminar', + DB_ERROR_CONSTRAINT => 'violaciσ de constraint', + DB_ERROR_DIVZERO => 'divisiσ per zero', + DB_ERROR_INVALID => 'no ιs vΰlid', + DB_ERROR_INVALID_DATE => 'la data o l\'hora no sσn vΰlides', + DB_ERROR_INVALID_NUMBER => 'el nombre no ιs vΰlid', + DB_ERROR_MISMATCH => 'no hi ha coincidθncia', + DB_ERROR_NODBSELECTED => 'cap base de dades seleccionada', + DB_ERROR_NOSUCHFIELD => 'camp inexistent', + DB_ERROR_NOSUCHTABLE => 'taula inexistent', + DB_ERROR_NOT_CAPABLE => 'l\'execuciσ secundΰria de DB no pot', + DB_ERROR_NOT_FOUND => 'no trobat', + DB_ERROR_NOT_LOCKED => 'no blocat', + DB_ERROR_SYNTAX => 'error de sintaxi', + DB_ERROR_UNSUPPORTED => 'no suportat', + DB_ERROR_VALUE_COUNT_ON_ROW => 'el nombre de columnes no coincideix amb el nombre de valors en la fila', + DB_ERROR_INVALID_DSN => 'el DSN no ιs vΰlid', + DB_ERROR_CONNECT_FAILED => 'connexiσ fallida', + 0 => 'cap error', // DB_OK + DB_ERROR_NEED_MORE_DATA => 'les dades subministrades sσn insuficients', + DB_ERROR_EXTENSION_NOT_FOUND=> 'extensiσ no trobada', + DB_ERROR_NOSUCHDB => 'base de dades inexistent', + DB_ERROR_ACCESS_VIOLATION => 'permisos insuficients' +); +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-cn.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-cn.inc.php new file mode 100644 index 00000000..eb8c7de5 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-cn.inc.php @@ -0,0 +1,35 @@ + 'cn', + DB_ERROR => 'Ξ΄Φͺ΄νΞσ', + DB_ERROR_ALREADY_EXISTS => 'ΡΎ­΄ζΤΪ', + DB_ERROR_CANNOT_CREATE => '²»Δά΄΄½¨', + DB_ERROR_CANNOT_DELETE => '²»ΔάΙΎ³ύ', + DB_ERROR_CANNOT_DROP => '²»ΔάΆͺΖϊ', + DB_ERROR_CONSTRAINT => 'ΤΌΚψΟήΦΖ', + DB_ERROR_DIVZERO => '±»0³ύ', + DB_ERROR_INVALID => 'ΞήΠ§', + DB_ERROR_INVALID_DATE => 'ΞήΠ§΅ΔΘΥΖΪ»ςΥίΚ±Όδ', + DB_ERROR_INVALID_NUMBER => 'ΞήΠ§΅ΔΚύΧΦ', + DB_ERROR_MISMATCH => '²»Ζ₯Εδ', + DB_ERROR_NODBSELECTED => 'Γ»ΣΠΚύΎέΏβ±»Ρ‘Τρ', + DB_ERROR_NOSUCHFIELD => 'Γ»ΣΠΟΰΣ¦΅ΔΧΦΆΞ', + DB_ERROR_NOSUCHTABLE => 'Γ»ΣΠΟΰΣ¦΅Δ±ν', + DB_ERROR_NOT_CAPABLE => 'ΚύΎέΏβΊσΜ¨²»ΌζΘέ', + DB_ERROR_NOT_FOUND => 'Γ»ΣΠ·’ΟΦ', + DB_ERROR_NOT_LOCKED => 'Γ»ΣΠ±»ΛψΆ¨', + DB_ERROR_SYNTAX => 'Σο·¨΄νΞσ', + DB_ERROR_UNSUPPORTED => '²»Φ§³Φ', + DB_ERROR_VALUE_COUNT_ON_ROW => 'ΤΪΠΠΙΟΐΫΌΖΦ΅', + DB_ERROR_INVALID_DSN => 'ΞήΠ§΅ΔΚύΎέΤ΄ (DSN)', + DB_ERROR_CONNECT_FAILED => 'Α¬½ΣΚ§°ά', + 0 => 'Γ»ΣΠ΄νΞσ', // DB_OK + DB_ERROR_NEED_MORE_DATA => 'ΜαΉ©΅ΔΚύΎέ²»Δά·ϋΊΟͺΗσ', + DB_ERROR_EXTENSION_NOT_FOUND=> 'ΐ©ΥΉΓ»ΣΠ±»·’ΟΦ', + DB_ERROR_NOSUCHDB => 'Γ»ΣΠΟΰΣ¦΅ΔΚύΎέΏβ', + DB_ERROR_ACCESS_VIOLATION => 'Γ»ΣΠΊΟΚΚ΅ΔΘ¨Οή' +); +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-cz.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-cz.inc.php new file mode 100644 index 00000000..2424c244 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-cz.inc.php @@ -0,0 +1,40 @@ + + +$ADODB_LANG_ARRAY = array ( + 'LANG' => 'cz', + DB_ERROR => 'neznαmα chyba', + DB_ERROR_ALREADY_EXISTS => 'ji? existuje', + DB_ERROR_CANNOT_CREATE => 'nelze vytvo?it', + DB_ERROR_CANNOT_DELETE => 'nelze smazat', + DB_ERROR_CANNOT_DROP => 'nelze odstranit', + DB_ERROR_CONSTRAINT => 'poru?enν omezujνcν podmνnky', + DB_ERROR_DIVZERO => 'd?lenν nulou', + DB_ERROR_INVALID => 'neplatnι', + DB_ERROR_INVALID_DATE => 'neplatnι datum nebo ?as', + DB_ERROR_INVALID_NUMBER => 'neplatnι ?νslo', + DB_ERROR_MISMATCH => 'nesouhlasν', + DB_ERROR_NODBSELECTED => '?αdnα databαze nenν vybrαna', + DB_ERROR_NOSUCHFIELD => 'pole nenalezeno', + DB_ERROR_NOSUCHTABLE => 'tabulka nenalezena', + DB_ERROR_NOT_CAPABLE => 'nepodporovαno', + DB_ERROR_NOT_FOUND => 'nenalezeno', + DB_ERROR_NOT_LOCKED => 'nezam?eno', + DB_ERROR_SYNTAX => 'syntaktickα chyba', + DB_ERROR_UNSUPPORTED => 'nepodporovαno', + DB_ERROR_VALUE_COUNT_ON_ROW => '', + DB_ERROR_INVALID_DSN => 'neplatnι DSN', + DB_ERROR_CONNECT_FAILED => 'p?ipojenν selhalo', + 0 => 'bez chyb', // DB_OK + DB_ERROR_NEED_MORE_DATA => 'mαlo zdrojovύch dat', + DB_ERROR_EXTENSION_NOT_FOUND=> 'roz?ν?enν nenalezeno', + DB_ERROR_NOSUCHDB => 'databαze neexistuje', + DB_ERROR_ACCESS_VIOLATION => 'nedostate?nα prαva' +); +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-da.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-da.inc.php new file mode 100644 index 00000000..ca0e72d6 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-da.inc.php @@ -0,0 +1,33 @@ + 'da', + DB_ERROR => 'ukendt fejl', + DB_ERROR_ALREADY_EXISTS => 'eksisterer allerede', + DB_ERROR_CANNOT_CREATE => 'kan ikke oprette', + DB_ERROR_CANNOT_DELETE => 'kan ikke slette', + DB_ERROR_CANNOT_DROP => 'kan ikke droppe', + DB_ERROR_CONSTRAINT => 'begrænsning krænket', + DB_ERROR_DIVZERO => 'division med nul', + DB_ERROR_INVALID => 'ugyldig', + DB_ERROR_INVALID_DATE => 'ugyldig dato eller klokkeslet', + DB_ERROR_INVALID_NUMBER => 'ugyldigt tal', + DB_ERROR_MISMATCH => 'mismatch', + DB_ERROR_NODBSELECTED => 'ingen database valgt', + DB_ERROR_NOSUCHFIELD => 'felt findes ikke', + DB_ERROR_NOSUCHTABLE => 'tabel findes ikke', + DB_ERROR_NOT_CAPABLE => 'DB backend opgav', + DB_ERROR_NOT_FOUND => 'ikke fundet', + DB_ERROR_NOT_LOCKED => 'ikke låst', + DB_ERROR_SYNTAX => 'syntaksfejl', + DB_ERROR_UNSUPPORTED => 'ikke understøttet', + DB_ERROR_VALUE_COUNT_ON_ROW => 'resulterende antal felter svarer ikke til forespørgslens antal felter', + DB_ERROR_INVALID_DSN => 'ugyldig DSN', + DB_ERROR_CONNECT_FAILED => 'tilslutning mislykkedes', + 0 => 'ingen fejl', // DB_OK + DB_ERROR_NEED_MORE_DATA => 'utilstrækkelige data angivet', + DB_ERROR_EXTENSION_NOT_FOUND=> 'udvidelse ikke fundet', + DB_ERROR_NOSUCHDB => 'database ikke fundet', + DB_ERROR_ACCESS_VIOLATION => 'utilstrækkelige rettigheder' +); +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-de.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-de.inc.php new file mode 100644 index 00000000..244cb2f6 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-de.inc.php @@ -0,0 +1,33 @@ + +$ADODB_LANG_ARRAY = array ( + 'LANG' => 'de', + DB_ERROR => 'Unbekannter Fehler', + DB_ERROR_ALREADY_EXISTS => 'existiert bereits', + DB_ERROR_CANNOT_CREATE => 'kann nicht erstellen', + DB_ERROR_CANNOT_DELETE => 'kann nicht löschen', + DB_ERROR_CANNOT_DROP => 'Tabelle oder Index konnte nicht gelöscht werden', + DB_ERROR_CONSTRAINT => 'Constraint Verletzung', + DB_ERROR_DIVZERO => 'Division durch Null', + DB_ERROR_INVALID => 'ung¨ltig', + DB_ERROR_INVALID_DATE => 'ung¨ltiges Datum oder Zeit', + DB_ERROR_INVALID_NUMBER => 'ung¨ltige Zahl', + DB_ERROR_MISMATCH => 'Unverträglichkeit', + DB_ERROR_NODBSELECTED => 'keine Dantebank ausgewählt', + DB_ERROR_NOSUCHFIELD => 'Feld nicht vorhanden', + DB_ERROR_NOSUCHTABLE => 'Tabelle nicht vorhanden', + DB_ERROR_NOT_CAPABLE => 'Funktion nicht installiert', + DB_ERROR_NOT_FOUND => 'nicht gefunden', + DB_ERROR_NOT_LOCKED => 'nicht gesperrt', + DB_ERROR_SYNTAX => 'Syntaxfehler', + DB_ERROR_UNSUPPORTED => 'nicht Unterst¨tzt', + DB_ERROR_VALUE_COUNT_ON_ROW => 'Anzahl der zur¨ckgelieferten Felder entspricht nicht der Anzahl der Felder in der Abfrage', + DB_ERROR_INVALID_DSN => 'ung¨ltiger DSN', + DB_ERROR_CONNECT_FAILED => 'Verbindung konnte nicht hergestellt werden', + 0 => 'kein Fehler', // DB_OK + DB_ERROR_NEED_MORE_DATA => 'Nicht gen¨gend Daten geliefert', + DB_ERROR_EXTENSION_NOT_FOUND=> 'erweiterung nicht gefunden', + DB_ERROR_NOSUCHDB => 'keine Datenbank', + DB_ERROR_ACCESS_VIOLATION => 'ungen¨gende Rechte' +); +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-en.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-en.inc.php new file mode 100644 index 00000000..6895995e --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-en.inc.php @@ -0,0 +1,33 @@ + 'en', + DB_ERROR => 'unknown error', + DB_ERROR_ALREADY_EXISTS => 'already exists', + DB_ERROR_CANNOT_CREATE => 'can not create', + DB_ERROR_CANNOT_DELETE => 'can not delete', + DB_ERROR_CANNOT_DROP => 'can not drop', + DB_ERROR_CONSTRAINT => 'constraint violation', + DB_ERROR_DIVZERO => 'division by zero', + DB_ERROR_INVALID => 'invalid', + DB_ERROR_INVALID_DATE => 'invalid date or time', + DB_ERROR_INVALID_NUMBER => 'invalid number', + DB_ERROR_MISMATCH => 'mismatch', + DB_ERROR_NODBSELECTED => 'no database selected', + DB_ERROR_NOSUCHFIELD => 'no such field', + DB_ERROR_NOSUCHTABLE => 'no such table', + DB_ERROR_NOT_CAPABLE => 'DB backend not capable', + DB_ERROR_NOT_FOUND => 'not found', + DB_ERROR_NOT_LOCKED => 'not locked', + DB_ERROR_SYNTAX => 'syntax error', + DB_ERROR_UNSUPPORTED => 'not supported', + DB_ERROR_VALUE_COUNT_ON_ROW => 'value count on row', + DB_ERROR_INVALID_DSN => 'invalid DSN', + DB_ERROR_CONNECT_FAILED => 'connect failed', + 0 => 'no error', // DB_OK + DB_ERROR_NEED_MORE_DATA => 'insufficient data supplied', + DB_ERROR_EXTENSION_NOT_FOUND=> 'extension not found', + DB_ERROR_NOSUCHDB => 'no such database', + DB_ERROR_ACCESS_VIOLATION => 'insufficient permissions' +); +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-es.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-es.inc.php new file mode 100644 index 00000000..1e0afbb4 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-es.inc.php @@ -0,0 +1,33 @@ + +$ADODB_LANG_ARRAY = array ( + 'LANG' => 'es', + DB_ERROR => 'error desconocido', + DB_ERROR_ALREADY_EXISTS => 'ya existe', + DB_ERROR_CANNOT_CREATE => 'imposible crear', + DB_ERROR_CANNOT_DELETE => 'imposible borrar', + DB_ERROR_CANNOT_DROP => 'imposible hacer drop', + DB_ERROR_CONSTRAINT => 'violacion de constraint', + DB_ERROR_DIVZERO => 'division por cero', + DB_ERROR_INVALID => 'invalido', + DB_ERROR_INVALID_DATE => 'fecha u hora invalida', + DB_ERROR_INVALID_NUMBER => 'numero invalido', + DB_ERROR_MISMATCH => 'error', + DB_ERROR_NODBSELECTED => 'no hay base de datos seleccionada', + DB_ERROR_NOSUCHFIELD => 'campo invalido', + DB_ERROR_NOSUCHTABLE => 'tabla no existe', + DB_ERROR_NOT_CAPABLE => 'capacidad invalida para esta DB', + DB_ERROR_NOT_FOUND => 'no encontrado', + DB_ERROR_NOT_LOCKED => 'no bloqueado', + DB_ERROR_SYNTAX => 'error de sintaxis', + DB_ERROR_UNSUPPORTED => 'no soportado', + DB_ERROR_VALUE_COUNT_ON_ROW => 'la cantidad de columnas no corresponden a la cantidad de valores', + DB_ERROR_INVALID_DSN => 'DSN invalido', + DB_ERROR_CONNECT_FAILED => 'fallo la conexion', + 0 => 'sin error', // DB_OK + DB_ERROR_NEED_MORE_DATA => 'insuficientes datos', + DB_ERROR_EXTENSION_NOT_FOUND=> 'extension no encontrada', + DB_ERROR_NOSUCHDB => 'base de datos no encontrada', + DB_ERROR_ACCESS_VIOLATION => 'permisos insuficientes' +); +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-esperanto.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-esperanto.inc.php new file mode 100644 index 00000000..16ca00e2 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-esperanto.inc.php @@ -0,0 +1,35 @@ + 'eo', + DB_ERROR => 'nekonata eraro', + DB_ERROR_ALREADY_EXISTS => 'jam ekzistas', + DB_ERROR_CANNOT_CREATE => 'maleblas krei', + DB_ERROR_CANNOT_DELETE => 'maleblas elimini', + DB_ERROR_CANNOT_DROP => 'maleblas elimini (drop)', + DB_ERROR_CONSTRAINT => 'rompo de kondicxoj de provo', + DB_ERROR_DIVZERO => 'divido per 0 (nul)', + DB_ERROR_INVALID => 'malregule', + DB_ERROR_INVALID_DATE => 'malregula dato kaj tempo', + DB_ERROR_INVALID_NUMBER => 'malregula nombro', + DB_ERROR_MISMATCH => 'eraro', + DB_ERROR_NODBSELECTED => 'datumbazo ne elektita', + DB_ERROR_NOSUCHFIELD => 'ne ekzistas kampo', + DB_ERROR_NOSUCHTABLE => 'ne ekzistas tabelo', + DB_ERROR_NOT_CAPABLE => 'DBMS ne povas', + DB_ERROR_NOT_FOUND => 'ne trovita', + DB_ERROR_NOT_LOCKED => 'ne blokita', + DB_ERROR_SYNTAX => 'sintaksa eraro', + DB_ERROR_UNSUPPORTED => 'ne apogata', + DB_ERROR_VALUE_COUNT_ON_ROW => 'nombrilo de valoroj en linio', + DB_ERROR_INVALID_DSN => 'malregula DSN-o', + DB_ERROR_CONNECT_FAILED => 'konekto malsukcesa', + 0 => 'cxio bone', // DB_OK + DB_ERROR_NEED_MORE_DATA => 'ne suficxe da datumo', + DB_ERROR_EXTENSION_NOT_FOUND=> 'etendo ne trovita', + DB_ERROR_NOSUCHDB => 'datumbazo ne ekzistas', + DB_ERROR_ACCESS_VIOLATION => 'ne suficxe da rajto por atingo' +); +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-fa.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-fa.inc.php new file mode 100644 index 00000000..55943135 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-fa.inc.php @@ -0,0 +1,35 @@ + */ + +$ADODB_LANG_ARRAY = array ( + 'LANG' => 'fa', + DB_ERROR => 'Ψطای Ω†Ψ§Ψ΄Ω†Ψ§ΨΨͺΩ‡', + DB_ERROR_ALREADY_EXISTS => 'وجود Ψ―Ψ§Ψ±Ψ―', + DB_ERROR_CANNOT_CREATE => 'Ψ§Ω…Ϊ©Ψ§Ω† create وجود Ω†Ψ―Ψ§Ψ±Ψ―', + DB_ERROR_CANNOT_DELETE => 'Ψ§Ω…Ϊ©Ψ§Ω† حذف وجود Ω†Ψ―Ψ§Ψ±Ψ―', + DB_ERROR_CANNOT_DROP => 'Ψ§Ω…Ϊ©Ψ§Ω† drop وجود Ω†Ψ―Ψ§Ψ±Ψ―', + DB_ERROR_CONSTRAINT => 'Ω†Ω‚ΨΆ Ψ΄Ψ±Ψ·', + DB_ERROR_DIVZERO => 'ΨͺΩ‚Ψ³ΫŒΩ… Ψ¨Ψ± ءفر', + DB_ERROR_INVALID => 'Ω†Ψ§Ω…ΨΉΨͺΨ¨Ψ±', + DB_ERROR_INVALID_DATE => 'Ψ²Ω…Ψ§Ω† یا ΨͺΨ§Ψ±ΫŒΨ Ω†Ψ§Ω…ΨΉΨͺΨ¨Ψ±', + DB_ERROR_INVALID_NUMBER => 'ΨΉΨ―Ψ― Ω†Ψ§Ω…ΨΉΨͺΨ¨Ψ±', + DB_ERROR_MISMATCH => 'ΨΉΨ―Ω… Ω…Ψ·Ψ§Ψ¨Ω‚Ψͺ', + DB_ERROR_NODBSELECTED => 'Ψ¨Ψ§Ω†Ϊ© Ψ§Ψ·Ω„Ψ§ΨΉΨ§Ψͺی Ψ§Ω†ΨͺΨΨ§Ψ¨ Ω†Ψ΄Ψ―Ω‡ Ψ§Ψ³Ψͺ', + DB_ERROR_NOSUCHFIELD => 'Ϊ†Ω†ΫŒΩ† Ψ³ΨͺΩˆΩ†ΫŒ وجود Ω†Ψ―Ψ§Ψ±Ψ―', + DB_ERROR_NOSUCHTABLE => 'Ϊ†Ω†ΫŒΩ† Ψ¬Ψ―ΩˆΩ„ΫŒ وجود Ω†Ψ―Ψ§Ψ±Ψ―', + DB_ERROR_NOT_CAPABLE => 'backend Ψ¨Ψ§Ω†Ϊ© Ψ§Ψ·Ω„Ψ§ΨΉΨ§Ψͺی Ω‚Ψ§Ψ―Ψ± Ω†ΫŒΨ³Ψͺ', + DB_ERROR_NOT_FOUND => 'پیدا Ω†Ψ΄Ψ―', + DB_ERROR_NOT_LOCKED => 'قفل Ω†Ψ΄Ψ―Ω‡', + DB_ERROR_SYNTAX => 'Ψطای Ψ―Ψ³Ψͺوری', + DB_ERROR_UNSUPPORTED => 'ΩΎΨ΄ΨͺΫŒΨ¨Ψ§Ω†ΫŒ Ω†Ω…ΫŒ شود', + DB_ERROR_VALUE_COUNT_ON_ROW => 'Ψ΄Ω…Ψ§Ψ±Ψ΄ Ω…Ω‚Ψ§Ψ―ΫŒΨ± روی ردیف', + DB_ERROR_INVALID_DSN => 'DSN Ω†Ψ§Ω…ΨΉΨͺΨ¨Ψ±', + DB_ERROR_CONNECT_FAILED => 'Ψ§Ψ±ΨͺΨ¨Ψ§Ψ· Ψ¨Ψ±Ω‚Ψ±Ψ§Ψ± Ω†Ψ΄Ψ―', + 0 => 'Ψ¨Ψ―ΩˆΩ† ΨΨ·Ψ§', // DB_OK + DB_ERROR_NEED_MORE_DATA => 'Ψ―Ψ§Ψ―Ω‡ Ω†Ψ§Ϊ©Ψ§ΩΫŒ Ψ§Ψ³Ψͺ', + DB_ERROR_EXTENSION_NOT_FOUND=> 'extension پیدا Ω†Ψ΄Ψ―', + DB_ERROR_NOSUCHDB => 'Ϊ†Ω†ΫŒΩ† Ψ¨Ψ§Ω†Ϊ© Ψ§Ψ·Ω„Ψ§ΨΉΨ§Ψͺی وجود Ω†Ψ―Ψ§Ψ±Ψ―', + DB_ERROR_ACCESS_VIOLATION => 'Ψ­Ω‚ Ψ―Ψ³Ψͺرسی Ω†Ψ§Ϊ©Ψ§ΩΫŒ' +); +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-fr.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-fr.inc.php new file mode 100644 index 00000000..066a2a5e --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-fr.inc.php @@ -0,0 +1,33 @@ + 'fr', + DB_ERROR => 'erreur inconnue', + DB_ERROR_ALREADY_EXISTS => 'existe déjà', + DB_ERROR_CANNOT_CREATE => 'crétion impossible', + DB_ERROR_CANNOT_DELETE => 'effacement impossible', + DB_ERROR_CANNOT_DROP => 'suppression impossible', + DB_ERROR_CONSTRAINT => 'violation de contrainte', + DB_ERROR_DIVZERO => 'division par zéro', + DB_ERROR_INVALID => 'invalide', + DB_ERROR_INVALID_DATE => 'date ou heure invalide', + DB_ERROR_INVALID_NUMBER => 'nombre invalide', + DB_ERROR_MISMATCH => 'erreur de concordance', + DB_ERROR_NODBSELECTED => 'pas de base de donnéessélectionnée', + DB_ERROR_NOSUCHFIELD => 'nom de colonne invalide', + DB_ERROR_NOSUCHTABLE => 'table ou vue inexistante', + DB_ERROR_NOT_CAPABLE => 'fonction optionnelle non installée', + DB_ERROR_NOT_FOUND => 'pas trouvé', + DB_ERROR_NOT_LOCKED => 'non verrouillé', + DB_ERROR_SYNTAX => 'erreur de syntaxe', + DB_ERROR_UNSUPPORTED => 'non supporté', + DB_ERROR_VALUE_COUNT_ON_ROW => 'valeur insérée trop grande pour colonne', + DB_ERROR_INVALID_DSN => 'DSN invalide', + DB_ERROR_CONNECT_FAILED => 'échec à la connexion', + 0 => "pas d'erreur", // DB_OK + DB_ERROR_NEED_MORE_DATA => 'données fournies insuffisantes', + DB_ERROR_EXTENSION_NOT_FOUND=> 'extension non trouvée', + DB_ERROR_NOSUCHDB => 'base de données inconnue', + DB_ERROR_ACCESS_VIOLATION => 'droits insuffisants' +); +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-hu.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-hu.inc.php new file mode 100644 index 00000000..d6f0ef82 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-hu.inc.php @@ -0,0 +1,34 @@ + +$ADODB_LANG_ARRAY = array ( + 'LANG' => 'hu', + DB_ERROR => 'ismeretlen hiba', + DB_ERROR_ALREADY_EXISTS => 'mαr lιtezik', + DB_ERROR_CANNOT_CREATE => 'nem sikerόlt lιtrehozni', + DB_ERROR_CANNOT_DELETE => 'nem sikerόlt tφrφlni', + DB_ERROR_CANNOT_DROP => 'nem sikerόlt eldobni', + DB_ERROR_CONSTRAINT => 'szabαlyok megszegιse', + DB_ERROR_DIVZERO => 'osztαs nullαval', + DB_ERROR_INVALID => 'ιrvιnytelen', + DB_ERROR_INVALID_DATE => 'ιrvιnytelen dαtum vagy idυ', + DB_ERROR_INVALID_NUMBER => 'ιrvιnytelen szαm', + DB_ERROR_MISMATCH => 'nem megfelelυ', + DB_ERROR_NODBSELECTED => 'nincs kivαlasztott adatbαzis', + DB_ERROR_NOSUCHFIELD => 'nincs ilyen mezυ', + DB_ERROR_NOSUCHTABLE => 'nincs ilyen tαbla', + DB_ERROR_NOT_CAPABLE => 'DB backend nem tαmogatja', + DB_ERROR_NOT_FOUND => 'nem talαlhatσ', + DB_ERROR_NOT_LOCKED => 'nincs lezαrva', + DB_ERROR_SYNTAX => 'szintaktikai hiba', + DB_ERROR_UNSUPPORTED => 'nem tαmogatott', + DB_ERROR_VALUE_COUNT_ON_ROW => 'soron vιgzett ιrtιk szαmlαlαs', + DB_ERROR_INVALID_DSN => 'hibαs DSN', + DB_ERROR_CONNECT_FAILED => 'sikertelen csatlakozαs', + 0 => 'nincs hiba', // DB_OK + DB_ERROR_NEED_MORE_DATA => 'tϊl kevιs az adat', + DB_ERROR_EXTENSION_NOT_FOUND=> 'bυvνtmιny nem talαlhatσ', + DB_ERROR_NOSUCHDB => 'nincs ilyen adatbαzis', + DB_ERROR_ACCESS_VIOLATION => 'nincs jogosultsαg' +); +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-it.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-it.inc.php new file mode 100644 index 00000000..20c5b93b --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-it.inc.php @@ -0,0 +1,34 @@ + 'it', + DB_ERROR => 'errore sconosciuto', + DB_ERROR_ALREADY_EXISTS => 'esiste già', + DB_ERROR_CANNOT_CREATE => 'non posso creare', + DB_ERROR_CANNOT_DELETE => 'non posso cancellare', + DB_ERROR_CANNOT_DROP => 'non posso eliminare', + DB_ERROR_CONSTRAINT => 'violazione constraint', + DB_ERROR_DIVZERO => 'divisione per zero', + DB_ERROR_INVALID => 'non valido', + DB_ERROR_INVALID_DATE => 'data od ora non valida', + DB_ERROR_INVALID_NUMBER => 'numero non valido', + DB_ERROR_MISMATCH => 'diversi', + DB_ERROR_NODBSELECTED => 'nessun database selezionato', + DB_ERROR_NOSUCHFIELD => 'nessun campo trovato', + DB_ERROR_NOSUCHTABLE => 'nessuna tabella trovata', + DB_ERROR_NOT_CAPABLE => 'DB backend non abilitato', + DB_ERROR_NOT_FOUND => 'non trovato', + DB_ERROR_NOT_LOCKED => 'non bloccato', + DB_ERROR_SYNTAX => 'errore di sintassi', + DB_ERROR_UNSUPPORTED => 'non supportato', + DB_ERROR_VALUE_COUNT_ON_ROW => 'valore inserito troppo grande per una colonna', + DB_ERROR_INVALID_DSN => 'DSN non valido', + DB_ERROR_CONNECT_FAILED => 'connessione fallita', + 0 => 'nessun errore', // DB_OK + DB_ERROR_NEED_MORE_DATA => 'dati inseriti insufficienti', + DB_ERROR_EXTENSION_NOT_FOUND=> 'estensione non trovata', + DB_ERROR_NOSUCHDB => 'database non trovato', + DB_ERROR_ACCESS_VIOLATION => 'permessi insufficienti' +); +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-nl.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-nl.inc.php new file mode 100644 index 00000000..abe77b52 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-nl.inc.php @@ -0,0 +1,33 @@ + 'nl', + DB_ERROR => 'onbekende fout', + DB_ERROR_ALREADY_EXISTS => 'bestaat al', + DB_ERROR_CANNOT_CREATE => 'kan niet aanmaken', + DB_ERROR_CANNOT_DELETE => 'kan niet wissen', + DB_ERROR_CANNOT_DROP => 'kan niet verwijderen', + DB_ERROR_CONSTRAINT => 'constraint overtreding', + DB_ERROR_DIVZERO => 'poging tot delen door nul', + DB_ERROR_INVALID => 'ongeldig', + DB_ERROR_INVALID_DATE => 'ongeldige datum of tijd', + DB_ERROR_INVALID_NUMBER => 'ongeldig nummer', + DB_ERROR_MISMATCH => 'is incorrect', + DB_ERROR_NODBSELECTED => 'geen database geselecteerd', + DB_ERROR_NOSUCHFIELD => 'onbekend veld', + DB_ERROR_NOSUCHTABLE => 'onbekende tabel', + DB_ERROR_NOT_CAPABLE => 'database systeem is niet tot uitvoer in staat', + DB_ERROR_NOT_FOUND => 'niet gevonden', + DB_ERROR_NOT_LOCKED => 'niet vergrendeld', + DB_ERROR_SYNTAX => 'syntaxis fout', + DB_ERROR_UNSUPPORTED => 'niet ondersteund', + DB_ERROR_VALUE_COUNT_ON_ROW => 'waarde telling op rij', + DB_ERROR_INVALID_DSN => 'ongeldige DSN', + DB_ERROR_CONNECT_FAILED => 'connectie mislukt', + 0 => 'geen fout', // DB_OK + DB_ERROR_NEED_MORE_DATA => 'onvoldoende data gegeven', + DB_ERROR_EXTENSION_NOT_FOUND=> 'extensie niet gevonden', + DB_ERROR_NOSUCHDB => 'onbekende database', + DB_ERROR_ACCESS_VIOLATION => 'onvoldoende rechten' +); +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-pl.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-pl.inc.php new file mode 100644 index 00000000..9d9e3906 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-pl.inc.php @@ -0,0 +1,35 @@ + + +$ADODB_LANG_ARRAY = array ( + 'LANG' => 'pl', + DB_ERROR => 'niezidentyfikowany b³±d', + DB_ERROR_ALREADY_EXISTS => 'juΏ istniej±', + DB_ERROR_CANNOT_CREATE => 'nie moΏna stworzyζ', + DB_ERROR_CANNOT_DELETE => 'nie moΏna usun±ζ', + DB_ERROR_CANNOT_DROP => 'nie moΏna porzuciζ', + DB_ERROR_CONSTRAINT => 'pogwa³cenie uprawnieρ', + DB_ERROR_DIVZERO => 'dzielenie przez zero', + DB_ERROR_INVALID => 'b³κdny', + DB_ERROR_INVALID_DATE => 'b³κdna godzina lub data', + DB_ERROR_INVALID_NUMBER => 'b³κdny numer', + DB_ERROR_MISMATCH => 'niedopasowanie', + DB_ERROR_NODBSELECTED => 'baza danych nie zosta³a wybrana', + DB_ERROR_NOSUCHFIELD => 'nie znaleziono pola', + DB_ERROR_NOSUCHTABLE => 'nie znaleziono tabeli', + DB_ERROR_NOT_CAPABLE => 'nie zdolny', + DB_ERROR_NOT_FOUND => 'nie znaleziono', + DB_ERROR_NOT_LOCKED => 'nie zakmniκty', + DB_ERROR_SYNTAX => 'b³±d sk³adni', + DB_ERROR_UNSUPPORTED => 'nie obs³uguje', + DB_ERROR_VALUE_COUNT_ON_ROW => 'wartoΆζ liczona w szeregu', + DB_ERROR_INVALID_DSN => 'b³κdny DSN', + DB_ERROR_CONNECT_FAILED => 'po³±czenie nie zosta³o zrealizowane', + 0 => 'brak b³κdσw', // DB_OK + DB_ERROR_NEED_MORE_DATA => 'niedostateczna iloΆζ informacji', + DB_ERROR_EXTENSION_NOT_FOUND=> 'nie znaleziono rozszerzenia', + DB_ERROR_NOSUCHDB => 'nie znaleziono bazy', + DB_ERROR_ACCESS_VIOLATION => 'niedostateczne uprawnienia' +); +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-pt-br.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-pt-br.inc.php new file mode 100644 index 00000000..cd28f7e5 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-pt-br.inc.php @@ -0,0 +1,35 @@ + 'pt-br', + DB_ERROR => 'erro desconhecido', + DB_ERROR_ALREADY_EXISTS => 'jα existe', + DB_ERROR_CANNOT_CREATE => 'impossνvel criar', + DB_ERROR_CANNOT_DELETE => 'impossνvel excluνr', + DB_ERROR_CANNOT_DROP => 'impossνvel remover', + DB_ERROR_CONSTRAINT => 'violaηγo do confinamente', + DB_ERROR_DIVZERO => 'divisγo por zero', + DB_ERROR_INVALID => 'invαlido', + DB_ERROR_INVALID_DATE => 'data ou hora invαlida', + DB_ERROR_INVALID_NUMBER => 'nϊmero invαlido', + DB_ERROR_MISMATCH => 'erro', + DB_ERROR_NODBSELECTED => 'nenhum banco de dados selecionado', + DB_ERROR_NOSUCHFIELD => 'campo invαlido', + DB_ERROR_NOSUCHTABLE => 'tabela inexistente', + DB_ERROR_NOT_CAPABLE => 'capacidade invαlida para este BD', + DB_ERROR_NOT_FOUND => 'nγo encontrado', + DB_ERROR_NOT_LOCKED => 'nγo bloqueado', + DB_ERROR_SYNTAX => 'erro de sintaxe', + DB_ERROR_UNSUPPORTED => +'nγo suportado', + DB_ERROR_VALUE_COUNT_ON_ROW => 'a quantidade de colunas nγo corresponde ao de valores', + DB_ERROR_INVALID_DSN => 'DSN invαlido', + DB_ERROR_CONNECT_FAILED => 'falha na conexγo', + 0 => 'sem erro', // DB_OK + DB_ERROR_NEED_MORE_DATA => 'dados insuficientes', + DB_ERROR_EXTENSION_NOT_FOUND=> 'extensγo nγo encontrada', + DB_ERROR_NOSUCHDB => 'banco de dados nγo encontrado', + DB_ERROR_ACCESS_VIOLATION => 'permissγo insuficiente' +); +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-ro.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-ro.inc.php new file mode 100644 index 00000000..bcd7d132 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-ro.inc.php @@ -0,0 +1,35 @@ + */ + +$ADODB_LANG_ARRAY = array ( + 'LANG' => 'ro', + DB_ERROR => 'eroare necunoscuta', + DB_ERROR_ALREADY_EXISTS => 'deja exista', + DB_ERROR_CANNOT_CREATE => 'nu se poate creea', + DB_ERROR_CANNOT_DELETE => 'nu se poate sterge', + DB_ERROR_CANNOT_DROP => 'nu se poate executa drop', + DB_ERROR_CONSTRAINT => 'violare de constrain', + DB_ERROR_DIVZERO => 'se divide la zero', + DB_ERROR_INVALID => 'invalid', + DB_ERROR_INVALID_DATE => 'data sau timp invalide', + DB_ERROR_INVALID_NUMBER => 'numar invalid', + DB_ERROR_MISMATCH => 'nepotrivire-mismatch', + DB_ERROR_NODBSELECTED => 'nu exista baza de date selectata', + DB_ERROR_NOSUCHFIELD => 'camp inexistent', + DB_ERROR_NOSUCHTABLE => 'tabela inexistenta', + DB_ERROR_NOT_CAPABLE => 'functie optionala neinstalata', + DB_ERROR_NOT_FOUND => 'negasit', + DB_ERROR_NOT_LOCKED => 'neblocat', + DB_ERROR_SYNTAX => 'eroare de sintaxa', + DB_ERROR_UNSUPPORTED => 'nu e suportat', + DB_ERROR_VALUE_COUNT_ON_ROW => 'valoare prea mare pentru coloana', + DB_ERROR_INVALID_DSN => 'DSN invalid', + DB_ERROR_CONNECT_FAILED => 'conectare esuata', + 0 => 'fara eroare', // DB_OK + DB_ERROR_NEED_MORE_DATA => 'data introduse insuficiente', + DB_ERROR_EXTENSION_NOT_FOUND=> 'extensie negasita', + DB_ERROR_NOSUCHDB => 'nu exista baza de date', + DB_ERROR_ACCESS_VIOLATION => 'permisiuni insuficiente' +); +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-ru1251.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-ru1251.inc.php new file mode 100644 index 00000000..3a20538a --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-ru1251.inc.php @@ -0,0 +1,35 @@ + 'ru1251', + DB_ERROR => 'νεθηβερςνΰ ξψθακΰ', + DB_ERROR_ALREADY_EXISTS => 'σζε ρσωερςβσες', + DB_ERROR_CANNOT_CREATE => 'νεβξημξζνξ ρξηδΰςό', + DB_ERROR_CANNOT_DELETE => 'νεβξημξζνξ σδΰλθςό', + DB_ERROR_CANNOT_DROP => 'νεβξημξζνξ σδΰλθςό (drop)', + DB_ERROR_CONSTRAINT => 'νΰπσψενθε σρλξβθι οπξβεπκθ', + DB_ERROR_DIVZERO => 'δελενθε νΰ 0', + DB_ERROR_INVALID => 'νεοπΰβθλόνξ', + DB_ERROR_INVALID_DATE => 'νεκξππεκςνΰ δΰςΰ θλθ βπεμ', + DB_ERROR_INVALID_NUMBER => 'νεκξππεκςνξε χθρλξ', + DB_ERROR_MISMATCH => 'ξψθακΰ', + DB_ERROR_NODBSELECTED => 'ΑΔ νε βϋαπΰνΰ', + DB_ERROR_NOSUCHFIELD => 'νε ρσωερςβσες οξλε', + DB_ERROR_NOSUCHTABLE => 'νε ρσωερςβσες ςΰαλθφΰ', + DB_ERROR_NOT_CAPABLE => 'ΡΣΑΔ νε β ρξρςξνθθ', + DB_ERROR_NOT_FOUND => 'νε νΰιδενξ', + DB_ERROR_NOT_LOCKED => 'νε ηΰαλξκθπξβΰνξ', + DB_ERROR_SYNTAX => 'ρθνςΰκρθχερκΰ ξψθακΰ', + DB_ERROR_UNSUPPORTED => 'νε οξδδεπζθβΰεςρ', + DB_ERROR_VALUE_COUNT_ON_ROW => 'ρχεςχθκ ηνΰχενθι β ρςπξκε', + DB_ERROR_INVALID_DSN => 'νεοπΰβθλόνΰ DSN', + DB_ERROR_CONNECT_FAILED => 'ρξεδθνενθε νεσροεψνξ', + 0 => 'νες ξψθακθ', // DB_OK + DB_ERROR_NEED_MORE_DATA => 'οπεδξρςΰβλενξ νεδξρςΰςξχνξ δΰννϋυ', + DB_ERROR_EXTENSION_NOT_FOUND=> 'πΰρψθπενθε νε νΰιδενξ', + DB_ERROR_NOSUCHDB => 'νε ρσωερςβσες ΑΔ', + DB_ERROR_ACCESS_VIOLATION => 'νεδξρςΰςξχνξ οπΰβ δξρςσοΰ' +); +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-sv.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-sv.inc.php new file mode 100644 index 00000000..a9fd6981 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-sv.inc.php @@ -0,0 +1,33 @@ + 'en', + DB_ERROR => 'Okδnt fel', + DB_ERROR_ALREADY_EXISTS => 'finns redan', + DB_ERROR_CANNOT_CREATE => 'kan inte skapa', + DB_ERROR_CANNOT_DELETE => 'kan inte ta bort', + DB_ERROR_CANNOT_DROP => 'kan inte slδppa', + DB_ERROR_CONSTRAINT => 'begrδnsning krδnkt', + DB_ERROR_DIVZERO => 'division med noll', + DB_ERROR_INVALID => 'ogiltig', + DB_ERROR_INVALID_DATE => 'ogiltigt datum eller tid', + DB_ERROR_INVALID_NUMBER => 'ogiltigt tal', + DB_ERROR_MISMATCH => 'felaktig matchning', + DB_ERROR_NODBSELECTED => 'ingen databas vald', + DB_ERROR_NOSUCHFIELD => 'inget sεdant fδlt', + DB_ERROR_NOSUCHTABLE => 'ingen sεdan tabell', + DB_ERROR_NOT_CAPABLE => 'DB backend klarar det inte', + DB_ERROR_NOT_FOUND => 'finns inte', + DB_ERROR_NOT_LOCKED => 'inte lεst', + DB_ERROR_SYNTAX => 'syntaxfel', + DB_ERROR_UNSUPPORTED => 'stφds ej', + DB_ERROR_VALUE_COUNT_ON_ROW => 'vδrde rδknat pε rad', + DB_ERROR_INVALID_DSN => 'ogiltig DSN', + DB_ERROR_CONNECT_FAILED => 'anslutning misslyckades', + 0 => 'inget fel', // DB_OK + DB_ERROR_NEED_MORE_DATA => 'otillrδckligt med data angivet', + DB_ERROR_EXTENSION_NOT_FOUND=> 'utφkning hittades ej', + DB_ERROR_NOSUCHDB => 'ingen sεdan databas', + DB_ERROR_ACCESS_VIOLATION => 'otillrδckliga rδttigheter' +); +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-uk1251.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-uk1251.inc.php new file mode 100644 index 00000000..675016d1 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb-uk1251.inc.php @@ -0,0 +1,35 @@ + 'uk1251', + DB_ERROR => 'νεβ³δξμΰ οξμθλκΰ', + DB_ERROR_ALREADY_EXISTS => 'βζε ³ρνσΊ', + DB_ERROR_CANNOT_CREATE => 'νεμξζλθβξ ρςβξπθςθ', + DB_ERROR_CANNOT_DELETE => 'νεμξζλθβξ βθδΰλθςθ', + DB_ERROR_CANNOT_DROP => 'νεμξζλθβξ ηνθωθςθ (drop)', + DB_ERROR_CONSTRAINT => 'οξπσψενν σμξβ οεπεβ³πκθ', + DB_ERROR_DIVZERO => 'δ³λενν νΰ 0', + DB_ERROR_INVALID => 'νεοπΰβθλόνξ', + DB_ERROR_INVALID_DATE => 'νεοπΰβθλόνΰ δΰςΰ χθ χΰρ', + DB_ERROR_INVALID_NUMBER => 'νεοπΰβθλόνε χθρλξ', + DB_ERROR_MISMATCH => 'οξμθλκΰ', + DB_ERROR_NODBSELECTED => 'νε βθαπΰνξ ΑΔ', + DB_ERROR_NOSUCHFIELD => 'νε ³ρνσΊ οξλε', + DB_ERROR_NOSUCHTABLE => 'νε ³ρνσΊ ςΰαλθφ', + DB_ERROR_NOT_CAPABLE => 'ΡΣΑΔ νε β ρςΰν³', + DB_ERROR_NOT_FOUND => 'νε ηνΰιδενξ', + DB_ERROR_NOT_LOCKED => 'νε ηΰαλξκξβΰνξ', + DB_ERROR_SYNTAX => 'ρθνςΰκρθχνΰ οξμθλκΰ', + DB_ERROR_UNSUPPORTED => 'νε ο³δςπθμσΊςόρ', + DB_ERROR_VALUE_COUNT_ON_ROW => 'πΰυ³βνθκ ηνΰχενό β ρςπ³χφ³', + DB_ERROR_INVALID_DSN => 'νεοπΰβθλόνΰ DSN', + DB_ERROR_CONNECT_FAILED => 'η\'Ίδνΰνν νεσρο³ψνε', + 0 => 'βρε γΰπΰηδ', // DB_OK + DB_ERROR_NEED_MORE_DATA => 'νΰδΰνξ νεδξρςΰςνόξ δΰνθυ', + DB_ERROR_EXTENSION_NOT_FOUND=> 'πξηψθπενν νε ηνΰιδενξ', + DB_ERROR_NOSUCHDB => 'νε ³ρνσΊ ΑΔ', + DB_ERROR_ACCESS_VIOLATION => 'νεδξρςΰςνόξ οπΰβ δξρςσοΰ' +); +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb_th.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb_th.inc.php new file mode 100644 index 00000000..3fdd9970 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/lang/adodb_th.inc.php @@ -0,0 +1,33 @@ + +$ADODB_LANG_ARRAY = array ( + 'LANG' => 'th', + DB_ERROR => 'error ΰΉ„ΰΈ‘ΰΉˆΰΈ£ΰΈΉΰΉ‰ΰΈͺΰΈ²ΰΉ€ΰΈ«ΰΈ•ΰΈΈ', + DB_ERROR_ALREADY_EXISTS => 'ΰΈ‘ΰΈ΅ΰΉ?ΰΈ₯ΰΉ‰ΰΈ§', + DB_ERROR_CANNOT_CREATE => 'ΰΈͺΰΈ£ΰΉ‰ΰΈ²ΰΈ‡ΰΉ„ΰΈ‘ΰΉˆΰΉ„ΰΈ”ΰΉ‰', + DB_ERROR_CANNOT_DELETE => 'ΰΈ₯ΰΈšΰΉ„ΰΈ‘ΰΉˆΰΉ„ΰΈ”ΰΉ‰', + DB_ERROR_CANNOT_DROP => 'drop ΰΉ„ΰΈ‘ΰΉˆΰΉ„ΰΈ”ΰΉ‰', + DB_ERROR_CONSTRAINT => 'constraint violation', + DB_ERROR_DIVZERO => 'ΰΈ«ΰΈ²ΰΈ?ΰΈ”ΰΉ‰ΰΈ§ΰΈ’ΰΈͺΰΈΉΰΈ?', + DB_ERROR_INVALID => 'ΰΉ„ΰΈ‘ΰΉˆ valid', + DB_ERROR_INVALID_DATE => 'ΰΈ§ΰΈ±ΰΈ™ΰΈ—ΰΈ΅ΰΉˆ ΰΉ€ΰΈ§ΰΈ₯ΰΈ² ΰΉ„ΰΈ‘ΰΉˆ valid', + DB_ERROR_INVALID_NUMBER => 'ΰΉ€ΰΈ₯ΰΈ‚ΰΉ„ΰΈ‘ΰΉˆ valid', + DB_ERROR_MISMATCH => 'mismatch', + DB_ERROR_NODBSELECTED => 'ΰΉ„ΰΈ‘ΰΉˆΰΉ„ΰΈ”ΰΉ‰ΰΉ€ΰΈ₯ΰΈ·ΰΈ­ΰΈ?ΰΈ?ΰΈ²ΰΈ™ΰΈ‚ΰΉ‰ΰΈ­ΰΈ‘ΰΈΉΰΈ₯', + DB_ERROR_NOSUCHFIELD => 'ΰΉ„ΰΈ‘ΰΉˆΰΈ‘ΰΈ΅ΰΈŸΰΈ΅ΰΈ₯ΰΈ”ΰΉŒΰΈ™ΰΈ΅ΰΉ‰', + DB_ERROR_NOSUCHTABLE => 'ΰΉ„ΰΈ‘ΰΉˆΰΈ‘ΰΈ΅ΰΈ•ΰΈ²ΰΈ£ΰΈ²ΰΈ‡ΰΈ™ΰΈ΅ΰΉ‰', + DB_ERROR_NOT_CAPABLE => 'DB backend not capable', + DB_ERROR_NOT_FOUND => 'ΰΉ„ΰΈ‘ΰΉˆΰΈžΰΈš', + DB_ERROR_NOT_LOCKED => 'ΰΉ„ΰΈ‘ΰΉˆΰΉ„ΰΈ”ΰΉ‰ΰΈ₯๊อΰΈ?', + DB_ERROR_SYNTAX => 'ΰΈœΰΈ΄ΰΈ” syntax', + DB_ERROR_UNSUPPORTED => 'ΰΉ„ΰΈ‘ΰΉˆ support', + DB_ERROR_VALUE_COUNT_ON_ROW => 'value count on row', + DB_ERROR_INVALID_DSN => 'invalid DSN', + DB_ERROR_CONNECT_FAILED => 'ΰΉ„ΰΈ‘ΰΉˆΰΈͺΰΈ²ΰΈ‘ΰΈ²ΰΈ£ΰΈ– connect', + 0 => 'no error', // DB_OK + DB_ERROR_NEED_MORE_DATA => 'ΰΈ‚ΰΉ‰ΰΈ­ΰΈ‘ΰΈΉΰΈ₯ΰΉ„ΰΈ‘ΰΉˆΰΉ€ΰΈžΰΈ΅ΰΈ’ΰΈ‡ΰΈžΰΈ­', + DB_ERROR_EXTENSION_NOT_FOUND=> 'ΰΉ„ΰΈ‘ΰΉˆΰΈžΰΈš extension', + DB_ERROR_NOSUCHDB => 'ΰΉ„ΰΈ‘ΰΉˆΰΈ‘ΰΈ΅ΰΈ‚ΰΉ‰ΰΈ­ΰΈ‘ΰΈΉΰΈ₯ΰΈ™ΰΈ΅ΰΉ‰', + DB_ERROR_ACCESS_VIOLATION => 'permissions ΰΉ„ΰΈ‘ΰΉˆΰΈžΰΈ­' +); +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/license.txt b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/license.txt new file mode 100755 index 00000000..2353871c --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/license.txt @@ -0,0 +1,182 @@ +ADOdb is dual licensed using BSD and LGPL. + +In plain English, you do not need to distribute your application in source code form, nor do you need to distribute ADOdb source code, provided you follow the rest of terms of the BSD license. + +For more info about ADOdb, visit http://adodb.sourceforge.net/ + +BSD Style-License +================= + +Copyright (c) 2000, 2001, 2002, 2003, 2004 John Lim +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list +of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this list +of conditions and the following disclaimer in the documentation and/or other materials +provided with the distribution. + +Neither the name of the John Lim nor the names of its contributors may be used to +endorse or promote products derived from this software without specific prior written +permission. + +DISCLAIMER: +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +JOHN LIM OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +========================================================== +GNU LESSER GENERAL PUBLIC LICENSE +Version 2.1, February 1999 + +Copyright (C) 1991, 1999 Free Software Foundation, Inc. +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + +Preamble +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. + +This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. + +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. + +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. + +For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. + +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. + +To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. + +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. + +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. + +For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + +In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. + +Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. + +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. + + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". + +A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + +The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + +"Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. + +Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. + +1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. + +You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + +a) The modified work must itself be a software library. +b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. +c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. +d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. +(For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. + +3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. + +Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. + +This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + +4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. + +If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. + +5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. + +However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. + +When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. + +If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) + +Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. + +You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: + + +a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) +b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. +c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. +d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. +e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. +For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + +It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: + + +a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. +b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. +8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + +9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. + +10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. + +This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + +12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + +13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + +NO WARRANTY + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/readme.txt b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/readme.txt new file mode 100755 index 00000000..97bdd9ea --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/readme.txt @@ -0,0 +1,62 @@ +>> ADODB Library for PHP4 + +(c) 2000-2004 John Lim (jlim@natsoft.com.my) + +Released under both BSD and GNU Lesser GPL library license. +This means you can use it in proprietary products. + + +>> Introduction + +PHP's database access functions are not standardised. This creates a +need for a database class library to hide the differences between the +different databases (encapsulate the differences) so we can easily +switch databases. + +We currently support MySQL, Interbase, Sybase, PostgreSQL, Oracle, +Microsoft SQL server, Foxpro ODBC, Access ODBC, Informix, DB2, +Sybase SQL Anywhere, generic ODBC and Microsoft's ADO. + +We hope more people will contribute drivers to support other databases. + + +>> Documentation and Examples + +Refer to the adodb/docs directory for full documentation and examples. +There is also a tutorial tute.htm that contrasts ADODB code with +mysql code. + + +>>> Files +Adodb.inc.php is the main file. You need to include only this file. + +Adodb-*.inc.php are the database specific driver code. + +Test.php contains a list of test commands to exercise the class library. + +Adodb-session.php is the PHP4 session handling code. + +Testdatabases.inc.php contains the list of databases to apply the tests on. + +Benchmark.php is a simple benchmark to test the throughput of a simple SELECT +statement for databases described in testdatabases.inc.php. The benchmark +tables are created in test.php. + +readme.htm is the main documentation. + +tute.htm is the tutorial. + + +>> More Info + +For more information, including installation see readme.htm +or visit + http://adodb.sourceforge.net/ + + +>> Feature Requests and Bug Reports + +Email to jlim@natsoft.com.my + + + \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/toexport.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/toexport.inc.php new file mode 100644 index 00000000..6975b51a --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/toexport.inc.php @@ -0,0 +1,134 @@ +FieldTypesArray(); + reset($fieldTypes); + $i = 0; + while(list(,$o) = each($fieldTypes)) { + + $v = ($o) ? $o->name : 'Field'.($i++); + if ($escquote) $v = str_replace($quote,$escquotequote,$v); + $v = strip_tags(str_replace("\n", $replaceNewLine, str_replace("\r\n",$replaceNewLine,str_replace($sep,$sepreplace,$v)))); + $elements[] = $v; + + } + $s .= implode($sep, $elements).$NEWLINE; + } + $hasNumIndex = isset($rs->fields[0]); + + $line = 0; + $max = $rs->FieldCount(); + + while (!$rs->EOF) { + $elements = array(); + $i = 0; + + if ($hasNumIndex) { + for ($j=0; $j < $max; $j++) { + $v = $rs->fields[$j]; + if (!is_object($v)) $v = trim($v); + else $v = 'Object'; + if ($escquote) $v = str_replace($quote,$escquotequote,$v); + $v = strip_tags(str_replace("\n", $replaceNewLine, str_replace("\r\n",$replaceNewLine,str_replace($sep,$sepreplace,$v)))); + + if (strpos($v,$sep) !== false || strpos($v,$quote) !== false) $elements[] = "$quote$v$quote"; + else $elements[] = $v; + } + } else { // ASSOCIATIVE ARRAY + foreach($rs->fields as $v) { + if ($escquote) $v = str_replace($quote,$escquotequote,trim($v)); + $v = strip_tags(str_replace("\n", $replaceNewLine, str_replace("\r\n",$replaceNewLine,str_replace($sep,$sepreplace,$v)))); + + if (strpos($v,$sep) !== false || strpos($v,$quote) !== false) $elements[] = "$quote$v$quote"; + else $elements[] = $v; + } + } + $s .= implode($sep, $elements).$NEWLINE; + $rs->MoveNext(); + $line += 1; + if ($fp && ($line % $BUFLINES) == 0) { + if ($fp === true) echo $s; + else fwrite($fp,$s); + $s = ''; + } + } + + if ($fp) { + if ($fp === true) echo $s; + else fwrite($fp,$s); + $s = ''; + } + + return $s; +} +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/tohtml.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/tohtml.inc.php new file mode 100644 index 00000000..76245661 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/adodb/tohtml.inc.php @@ -0,0 +1,201 @@ + +*/ + +// specific code for tohtml +GLOBAL $gSQLMaxRows,$gSQLBlockRows,$ADODB_ROUND; + +$ADODB_ROUND=4; // rounding +$gSQLMaxRows = 1000; // max no of rows to download +$gSQLBlockRows=20; // max no of rows per table block + +// RecordSet to HTML Table +//------------------------------------------------------------ +// Convert a recordset to a html table. Multiple tables are generated +// if the number of rows is > $gSQLBlockRows. This is because +// web browsers normally require the whole table to be downloaded +// before it can be rendered, so we break the output into several +// smaller faster rendering tables. +// +// $rs: the recordset +// $ztabhtml: the table tag attributes (optional) +// $zheaderarray: contains the replacement strings for the headers (optional) +// +// USAGE: +// include('adodb.inc.php'); +// $db = ADONewConnection('mysql'); +// $db->Connect('mysql','userid','password','database'); +// $rs = $db->Execute('select col1,col2,col3 from table'); +// rs2html($rs, 'BORDER=2', array('Title1', 'Title2', 'Title3')); +// $rs->Close(); +// +// RETURNS: number of rows displayed + + +function rs2html(&$rs,$ztabhtml=false,$zheaderarray=false,$htmlspecialchars=true,$echo = true) +{ +$s ='';$rows=0;$docnt = false; +GLOBAL $gSQLMaxRows,$gSQLBlockRows,$ADODB_ROUND; + + if (!$rs) { + printf(ADODB_BAD_RS,'rs2html'); + return false; + } + + if (! $ztabhtml) $ztabhtml = "BORDER='1' WIDTH='98%'"; + //else $docnt = true; + $typearr = array(); + $ncols = $rs->FieldCount(); + $hdr = "\n\n"; + for ($i=0; $i < $ncols; $i++) { + $field = $rs->FetchField($i); + if ($field) { + if ($zheaderarray) $fname = $zheaderarray[$i]; + else $fname = htmlspecialchars($field->name); + $typearr[$i] = $rs->MetaType($field->type,$field->max_length); + //print " $field->name $field->type $typearr[$i] "; + } else { + $fname = 'Field '.($i+1); + $typearr[$i] = 'C'; + } + if (strlen($fname)==0) $fname = ' '; + $hdr .= ""; + } + $hdr .= "\n"; + if ($echo) print $hdr."\n\n"; + else $html = $hdr; + + // smart algorithm - handles ADODB_FETCH_MODE's correctly by probing... + $numoffset = isset($rs->fields[0]) ||isset($rs->fields[1]) || isset($rs->fields[2]); + while (!$rs->EOF) { + + $s .= "\n"; + + for ($i=0; $i < $ncols; $i++) { + if ($i===0) $v=($numoffset) ? $rs->fields[0] : reset($rs->fields); + else $v = ($numoffset) ? $rs->fields[$i] : next($rs->fields); + + $type = $typearr[$i]; + switch($type) { + case 'D': + if (strpos($v,':') !== false); + else { + if (empty($v)) { + $s .= "\n"; + } else { + $s .= " \n"; + } + break; + } + case 'T': + if (empty($v)) $s .= "\n"; + else $s .= " \n"; + break; + + case 'N': + if (abs(abs($v) - round($v,0)) < 0.00000001) + $v = round($v); + else + $v = round($v,$ADODB_ROUND); + case 'I': + $vv = stripslashes((trim($v))); + if (strlen($vv) == 0) $vv .= ' '; + $s .= " \n"; + + break; + /* + case 'B': + if (substr($v,8,2)=="BM" ) $v = substr($v,8); + $mtime = substr(str_replace(' ','_',microtime()),2); + $tmpname = "tmp/".uniqid($mtime).getmypid(); + $fd = @fopen($tmpname,'a'); + @ftruncate($fd,0); + @fwrite($fd,$v); + @fclose($fd); + if (!function_exists ("mime_content_type")) { + function mime_content_type ($file) { + return exec("file -bi ".escapeshellarg($file)); + } + } + $t = mime_content_type($tmpname); + $s .= (substr($t,0,5)=="image") ? " \\n" : " \\n"; + break; + */ + + default: + if ($htmlspecialchars) $v = htmlspecialchars(trim($v)); + $v = trim($v); + if (strlen($v) == 0) $v = ' '; + $s .= " \n"; + + } + } // for + $s .= "\n\n"; + + $rows += 1; + if ($rows >= $gSQLMaxRows) { + $rows = "

Truncated at $gSQLMaxRows

"; + break; + } // switch + + $rs->MoveNext(); + + // additional EOF check to prevent a widow header + if (!$rs->EOF && $rows % $gSQLBlockRows == 0) { + + //if (connection_aborted()) break;// not needed as PHP aborts script, unlike ASP + if ($echo) print $s . "
$fname
  ".$rs->UserDate($v,"D d, M Y") ."   ".$rs->UserTimeStamp($v,"D d, M Y, H:i:s") ."".$vv ."$t$t". str_replace("\n",'
',stripslashes($v)) ."
\n\n"; + else $html .= $s ."\n\n"; + $s = $hdr; + } + } // while + + if ($echo) print $s."\n\n"; + else $html .= $s."\n\n"; + + if ($docnt) if ($echo) print "

".$rows." Rows

"; + + return ($echo) ? $rows : $html; + } + +// pass in 2 dimensional array +function arr2html(&$arr,$ztabhtml='',$zheaderarray='') +{ + if (!$ztabhtml) $ztabhtml = 'BORDER=1'; + + $s = "";//';print_r($arr); + + if ($zheaderarray) { + $s .= ''; + for ($i=0; $i\n"; + } else $s .= " \n"; + $s .= "\n\n"; + } + $s .= '
 
'; + print $s; +} + +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/decorator.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/decorator.inc.php new file mode 100644 index 00000000..c31e6181 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/decorator.inc.php @@ -0,0 +1,215 @@ + 2) { + $v = func_get_args(); + array_shift($v); + return new UrlDecorator($base, new ArrayMergeDecorator($v)); + } + return new UrlDecorator($base, $vars); +} + +function replace($str, $params) { + return new replaceDecorator($str, $params); +} + +// Resolving functions: + +function value(&$var, &$fields, $esc = null) { + if (is_a($var, 'Decorator')) { + $val = $var->value($fields); + } else { + $val =& $var; + } + + if (is_string($val)) { + switch($esc) { + case 'xml': + return strtr($val, array( + '&' => '&', + "'" => ''', '"' => '"', + '<' => '<', '>' => '>' + )); + case 'html': + return htmlentities($val, ENT_COMPAT, 'UTF-8'); + case 'url': + return urlencode($val); + } + } + return $val; +} + +function value_xml(&$var, &$fields) { + return value($var, $fields, 'xml'); +} + +function value_xml_attr($attr, &$var, &$fields) { + $val = value($var, $fields, 'xml'); + if (!empty($val)) + return " {$attr}=\"{$val}\""; + else + return ''; +} + +function value_url(&$var, &$fields) { + return value($var, $fields, 'url'); +} + +// Underlying classes: + +class Decorator +{ + function Decorator($value) { + $this->v = $value; + } + + function value($fields) { + return $this->v; + } +} + +class FieldDecorator extends Decorator +{ + function FieldDecorator($fieldName, $default = null) { + $this->f = $fieldName; + if ($default !== null) $this->d = $default; + } + + function value($fields) { + return isset($fields[$this->f]) ? value($fields[$this->f], $fields) : (isset($this->d) ? $this->d : null); + } +} + +class ArrayMergeDecorator extends Decorator +{ + function ArrayMergeDecorator($arrays) { + $this->m = $arrays; + } + + function value($fields) { + $accum = array(); + foreach($this->m as $var) { + $accum = array_merge($accum, value($var, $fields)); + } + return $accum; + } +} + +class ConcatDecorator extends Decorator +{ + function ConcatDecorator($values) { + $this->c = $values; + } + + function value($fields) { + $accum = ''; + foreach($this->c as $var) { + $accum .= value($var, $fields); + } + return trim($accum); + } +} + +class CallbackDecorator extends Decorator +{ + function CallbackDecorator($callback, $param = null) { + $this->fn = $callback; + $this->p = $param; + } + + function value($fields) { + return call_user_func($this->fn, $fields, $this->p); + } +} + +class IfEmptyDecorator extends Decorator +{ + function IfEmptyDecorator($value, $empty, $full = null) { + $this->v = $value; + $this->e = $empty; + if ($full !== null) $this->f = $full; + } + + function value($fields) { + $val = value($this->v, $fields); + if (empty($val)) + return value($this->e, $fields); + else + return isset($this->f) ? value($this->f, $fields) : $val; + } +} + +class UrlDecorator extends Decorator +{ + function UrlDecorator($base, $queryVars = null) { + $this->b = $base; + if ($queryVars !== null) + $this->q = $queryVars; + } + + function value($fields) { + $url = value($this->b, $fields); + + if ($url === false) return ''; + + if (!empty($this->q)) { + $queryVars = value($this->q, $fields); + + $sep = '?'; + foreach ($queryVars as $var => $value) { + $url .= $sep . value_url($var, $fields) . '=' . value_url($value, $fields); + $sep = '&'; + } + } + return $url; + } +} + +class replaceDecorator extends Decorator +{ + function replaceDecorator($str, $params) { + $this->s = $str; + $this->p = $params; + } + + function value($fields) { + $str = $this->s; + foreach ($this->p as $k => $v) { + $str = str_replace($k, value($v, $fields), $str); + } + return $str; + } +} +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/errorhandler.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/errorhandler.inc.php new file mode 100644 index 00000000..11e93b2b --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/errorhandler.inc.php @@ -0,0 +1,78 @@ +{$lang['strsqlerror']}
" . $misc->printVal($errmsg,'errormsg') . "

+

{$lang['strinstatement']}
" . $misc->printVal($sql) . "

+ "; + echo "
{$s}

\n"; + + break; + + case 'PCONNECT': + case 'CONNECT': + $_failed = true; + global $_reload_browser; + $_reload_browser = true; + unset($_SESSION['sharedUsername']); + unset($_SESSION['sharedPassword']); + unset($_SESSION['webdbLogin'][$_REQUEST['server']]); + $msg = $lang['strloginfailed']; + include('./login.php'); + exit; + break; + default: + $s = "$dbms error: [$errno: $errmsg] in $fn($p1, $p2)\n"; + echo "
{$s}

\n"; + break; + } + /* + * Log connection error somewhere + * 0 message is sent to PHP's system logger, using the Operating System's system + * logging mechanism or a file, depending on what the error_log configuration + * directive is set to. + * 1 message is sent by email to the address in the destination parameter. + * This is the only message type where the fourth parameter, extra_headers is used. + * This message type uses the same internal function as mail() does. + * 2 message is sent through the PHP debugging connection. + * This option is only available if remote debugging has been enabled. + * In this case, the destination parameter specifies the host name or IP address + * and optionally, port number, of the socket receiving the debug information. + * 3 message is appended to the file destination + */ + if (defined('ADODB_ERROR_LOG_TYPE')) { + $t = date('Y-m-d H:i:s'); + if (defined('ADODB_ERROR_LOG_DEST')) + error_log("($t) $s", ADODB_ERROR_LOG_TYPE, ADODB_ERROR_LOG_DEST); + else + error_log("($t) $s", ADODB_ERROR_LOG_TYPE); + } +} +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/highlight.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/highlight.php new file mode 100644 index 00000000..74b93e30 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/highlight.php @@ -0,0 +1,1114 @@ +\\0'; + } + + $search[] = "/(\\bclass\s)/"; + $replace[] = '\\0'; + + return preg_replace($search, $replace, $text); +} + + +function preproc_replace($preproc, $text) +{ + foreach ($preproc as $proc) + { + $search[] = "/(\\s*#\s*$proc\\b)/"; + $replace[] = '\\0'; + } + + return preg_replace($search, $replace, $text); +} + + +function sch_syntax_helper($text) +{ + return $text; +} + + +function syntax_highlight_helper($text, $language) +{ + $preproc = array(); + $preproc["C++"] = array( + "if", "ifdef", "ifndef", "elif", "else", + "endif", "include", "define", "undef", "line", + "error", "pragma"); + $preproc["C89"] = & $preproc["C++"]; + $preproc["C"] = & $preproc["C89"]; + + $keywords = array( + "C++" => array( + "asm", "auto", "bool", "break", "case", + "catch", "char", /*class*/ "const", "const_cast", + "continue", "default", "delete", "do", "double", + "dynamic_cast", "else", "enum", "explicit", "export", + "extern", "false", "float", "for", "friend", + "goto", "if", "inline", "int", "long", + "mutable", "namespace", "new", "operator", "private", + "protected", "public", "register", "reinterpret_cast", "return", + "short", "signed", "sizeof", "static", "static_cast", + "struct", "switch", "template", "this", "throw", + "true", "try", "typedef", "typeid", "typename", + "union", "unsigned", "using", "virtual", "void", + "volatile", "wchar_t", "while"), + + "C89" => array( + "auto", "break", "case", "char", "const", + "continue", "default", "do", "double", "else", + "enum", "extern", "float", "for", "goto", + "if", "int", "long", "register", "return", + "short", "signed", "sizeof", "static", "struct", + "switch", "typedef", "union", "unsigned", "void", + "volatile", "while"), + + "C" => array( + "auto", "break", "case", "char", "const", + "continue", "default", "do", "double", "else", + "enum", "extern", "float", "for", "goto", + "if", "int", "long", "register", "return", + "short", "signed", "sizeof", "static", "struct", + "switch", "typedef", "union", "unsigned", "void", + "volatile", "while", "__restrict","_Bool"), + + "PHP" => array( + "and", "or", "xor", "__FILE__", "__LINE__", + "array", "as", "break", "case", "cfunction", + /*class*/ "const", "continue", "declare", "default", + "die", "do", "echo", "else", "elseif", + "empty", "enddeclare", "endfor", "endforeach", "endif", + "endswitch", "endwhile", "eval", "exit", "extends", + "for", "foreach", "function", "global", "if", + "include", "include_once", "isset", "list", "new", + "old_function", "print", "require", "require_once", "return", + "static", "switch", "unset", "use", "var", + "while", "__FUNCTION__", "__CLASS__"), + + "Perl" => array( + "-A", "-B", "-C", "-M", "-O", + "-R", "-S", "-T", "-W", "-X", + "-b", "-c", "-d", "-e", "-f", + "-g", "-k", "-l", "-o", "-p", + "-r", "-s", "-t", "-u", "-w", + "-x", "-z", "ARGV", "DATA", "ENV", + "SIG", "STDERR", "STDIN", "STDOUT", "atan2", + "bind", "binmode", "bless", "caller", "chdir", + "chmod", "chomp", "chop", "chown", "chr", + "chroot", "close", "closedir", "cmp", "connect", + "continue", "cos", "crypt", "dbmclose", "dbmopen", + "defined", "delete", "die", "do", "dump", + "each", "else", "elsif", "endgrent", "endhostent", + "endnetent", "endprotent", "endpwent", "endservent", "eof", + "eq", "eval", "exec", "exists", "exit", + "exp", "fcntl", "fileno", "flock", "for", + "foreach", "fork", "format", "formline", "ge", + "getc", "getgrent", "getgrid", "getgrnam", "gethostbyaddr", + "gethostbyname","gethostent", "getlogin", "getnetbyaddr", "getnetbyname", + "getnetent", "getpeername", "getpgrp", "getppid", "getpriority", + "getprotobyname","getprotobynumber","getprotoent","getpwent","getpwnam", + "getpwuid", "getservbyname","getservbyport","getservent","getsockname", + "getsockopt", "glob", "gmtime", "goto", "grep", + /*gt*/ "hex", "if", "import", "index", + "int", "ioctl", "join", "keys", "kill", + "last", "lc", "lcfirst", "le", "length", + "link", "listen", "local", "localtime", "log", + "lstat", /*lt*/ "m", "map", "mkdir", + "msgctl", "msgget", "msgrcv", "msgsnd", "my", + "ne", "next", "no", "oct", "open", + "opendir", "ord", "pack", "package", "pipe", + "pop", "pos", "print", "printf", "push", + "q", "qq", "quotemeta","qw", "qx", + "rand", "read", "readdir", "readlink", "recv", + "redo", "ref", "refname", "require", "reset", + "return", "reverse", "rewinddir","rindex", "rmdir", + "s", "scalar", "seek", "seekdir", "select", + "semctl", "semget", "semop", "send", "setgrent", + "sethostent", "setnetent", "setpgrp", "setpriority", "setprotoent", + "setpwent", "setservent", "setsockopt","shift", "shmctl", + "shmget", "shmread", "shmwrite", "shutdown", "sin", + "sleep", "socket", "socketpair","sort", "splice", + "split", "sprintf", "sqrt", "srand", "stat", + "study", "sub", "substr", "symlink", "syscall", + "sysopen", "sysread", "system", "syswrite", "tell", + "telldir", "tie", "tied", "time", "times", + "tr", "truncate", "uc", "ucfirst", "umask", + "undef", "unless", "unlink", "unpack", "unshift", + "untie", "until", "use", "utime", "values", + "vec", "wait", "waitpid", "wantarray", "warn", + "while", "write", "y", "or", "and", + "not"), + + "Java" => array( + "abstract", "boolean", "break", "byte", "case", + "catch", "char", /*class*/ "const", "continue", + "default", "do", "double", "else", "extends", + "final", "finally", "float", "for", "goto", + "if", "implements", "import", "instanceof", "int", + "interface", "long", "native", "new", "package", + "private", "protected", "public", "return", "short", + "static", "strictfp", "super", "switch", "synchronized", + "this", "throw", "throws", "transient", "try", + "void", "volatile", "while"), + + "VB" => array( + "AddressOf", "Alias", "And", "Any", "As", + "Binary", "Boolean", "ByRef", "Byte", "ByVal", + "Call", "Case", "CBool", "CByte", "CCur", + "CDate", "CDbl", "CInt", "CLng", "Close", + "Const", "CSng", "CStr", "Currency", "CVar", + "CVErr", "Date", "Debug", "Declare", "DefBool", + "DefByte", "DefCur", "DefDate", "DefDbl", "DefInt", + "DefLng", "DefObj", "DefSng", "DefStr", "DefVar", + "Dim", "Do", "Double", "Each", "Else", + "End", "Enum", "Eqv", "Erase", "Error", + "Event", "Exit", "For", "Friend", "Function", + "Get", "Get", "Global", "GoSub", "GoTo", + "If", "Imp", "Implements","In", "Input", + "Integer", "Is", "LBound", "Len", "Let", + "Lib", "Like", "Line", "Lock", "Long", + "Loop", "LSet", "Mod", "Name", "Next", + "Not", "Nothing", "Null", "Object", "On", + "Open", "Option Base 1","Option Compare Binary", + "Option Compare Database", "Option Compare Text", "Option Explicit", + "Option Private Module", "Optional", "Or", "Output", + "ParamArray", "Preserve", "Print", "Private", "Property", + "Public", "Put", "RaiseEvent","Random", "Read", + "ReDim", "Resume", "Return", "RSet", "Seek", + "Select", "Set", "Single", "Spc", "Static", + "Step", "Stop", "String", "Sub", "Tab", + "Then", "To", "Type", "UBound", "Unlock", + "Variant", "Wend", "While", "With", "WithEvents", + "Write", "Xor"), + + "C#" => array( + "abstract", "as", "base", "bool", "break", + "byte", "case", "catch", "char", "checked", + /*class*/ "const", "continue", "decimal", "default", + "delegate", "do", "double", "else", "enum", + "event", "explicit", "extern", "false", "finally", + "fixed", "float", "for", "foreach", "goto", + "if", "implicit", "in", "int", "interface", + "internal", "is", "lock", "long", "namespace", + "new", "null", "object", "operator", "out", + "override", "params", "private", "protected", "public", + "readonly", "ref", "return", "sbyte", "sealed", + "short", "sizeof", "stackalloc","static", "string", + "struct", "switch", "this", "throw", "true", + "try", "typeof", "uint", "ulong", "unchecked", + "unsafe", "ushort", "using", "virtual", "volatile", + "void", "while"), + + "Ruby" => array( + "alias", "and", "begin", "break", "case", + /*class*/ "def", "defined", "do", "else", + "elsif", "end", "ensure", "false", "for", + "if", "in", "module", "next", "module", + "next", "nil", "not", "or", "redo", + "rescue", "retry", "return", "self", "super", + "then", "true", "undef", "unless", "until", + "when", "while", "yield"), + + "Python" => array( + "and", "assert", "break", /*"class",*/ "continue", + "def", "del", "elif", "else", "except", + "exec", "finally", "for", "from", "global", + "if", "import", "in", "is", "lambda", + "not", "or", "pass", "print", "raise", + "return", "try", "while", "yield"), + + "Pascal" => array( + "Absolute", "Abstract", "All", "And", "And_then", + "Array", "Asm", "Begin", "Bindable", "Case", + /*"Class",*/ "Const", "Constructor","Destructor", "Div", + "Do", "Downto", "Else", "End", "Export", + "File", "For", "Function", "Goto", "If", + "Import", "Implementation","Inherited","In", "Inline", + "Interface", "Is", "Label", "Mod", "Module", + "Nil", "Not", "Object", "Of", "Only", + "Operator", "Or", "Or_else", "Otherwise", "Packed", + "Pow", "Procedure", "Program", "Property", "Protected", + "Qualified", "Record", "Repeat", "Restricted", "Set", + "Shl", "Shr", "Then", "To", "Type", + "Unit", "Until", "Uses", "Value", "Var", + "View", "Virtual", "While", "With", "Xor"), + + "mIRC" => array( + ), + + "PL/I" => array( + "A", "ABS", "ACOS", "%ACTIVATE", "ACTUALCOUNT", + "ADD", "ADDR", "ADDREL", "ALIGNED", "ALLOCATE", + "ALLOC", "ALLOCATION", "ALLOCN", "ANY", "ANYCONDITION", + "APPEND", "AREA", "ASIN", "ATAN", "ATAND", + "ATANH", "AUTOMATIC", "AUTO", "B", "B1", + "B2", "B3", "B4", "BACKUP_DATE", "BASED", + "BATCH", "BEGIN", "BINARY", "BIN", "BIT", + "BLOCK_BOUNDARY_FORMAT", "BLOCK_IO", "BLOCK_SIZE", "BOOL", + "BUCKET_SIZE", "BUILTIN", "BY", "BYTE", "BYTESIZE", + "CALL", "CANCEL_CONTROL_O", "CARRIAGE_RETURN_FORMAT", + "CEIL", "CHAR", "CHARACTER", "CLOSE", "COLLATE", "COLUMN", + "CONDITION", "CONTIGUOUS", "CONTIGUOUS_BEST_TRY", "CONTROLLED", + "CONVERSION", "COPY", "COS", "COSD", "COSH", + "CREATION_DATE", "CURRENT_POSITION", "DATE", + "DATETIME", "%DEACTIVATE", "DECIMAL", "DEC", "%DECLARE", + "%DCL", "DECLARE", "DCL", "DECODE", "DEFAULT_FILE_NAME", + "DEFERRED_WRITE", "DEFINED", "DEF", "DELETE", + "DESCRIPTOR", "%DICTIONARY", "DIMENSION","DIM", "DIRECT", + "DISPLAY", "DIVIDE", "%DO", "DO", "E", + "EDIT", "%ELSE", "ELSE", "EMPTY", "ENCODE", + "%END", "END", "ENDFILE", "ENDPAGE", "ENTRY", + "ENVIRONMENT", "ENV", "%ERROR", "ERROR", "EVERY", + "EXP", "EXPIRATION_DATE", "EXTEND", "EXTENSION_SIZE", + "EXTERNAL", "EXT", "F", "FAST_DELETE", "%FATAL", + "FILE", "FILE_ID", "FILE_ID_TO", "FILE_SIZE", + "FINISH", "FIXED", "FIXEDOVERFLOW", "FOFL", + "FIXED_CONTROL_FROM", "FIXED_CONTROL_SIZE", "FIXED_CONTROL_SIZE_TO", + "FIXED_CONTROL_TO", "FIXED_LENGTH_RECORDS", "FLOAT", + "FLOOR", "FLUSH", "FORMAT", "FREE", "FROM", + "GET", "GLOBALDEF", "GLOBALREF", "%GOTO", + "GOTO", "GO", "TO", "GROUP_PROTETION", "HBOUND", + "HIGH", "INDENT", "%IF", "IF", "IGNORE_LINE_MARKS", + "IN", "%INCLUDE", "INDEX", "INDEXED", "INDEX_NUMBER", + "%INFORM", "INFORM", "INITIAL", "INIT", "INITIAL_FILL", + "INPUT", "INT", "INTERNAL", "INTO", "KEY", + "KEYED", "KEYFROM", "KEYTO", "LABEL", "LBOUND", + "LEAVE", "LENGTH", "LIKE", "LINE", "LINENO", + "LINESIZE", "%LIST", "LIST", "LOCK_ON_READ", "LOCK_ON_WRITE", + "LOG", "LOG10", "LOG2", "LOW", "LTRIM", + "MAIN", "MANUAL_UNLOCKING", "MATCH_GREATER", + "MATCH_GREATER_EQUAL", "MATCH_NEXT", "MATCH_NEXT_EQUAL", + "MAX", "MAXIMUM_RECORD_NUMBER", "MAXIMUM_RECORD_SIZE", + "MAXLENGTH", "MEMBER", "MIN", "MOD", "MULTIBLOCK_COUNT", + "MULTIBUFFER_COUNT", "MULTIPLY", "NEXT_VOLUME", "%NOLIST", + "NOLOCK", "NONEXISTENT_RECORD", "NONRECURSIVE", "NONVARYING", + "NONVAR", "NORESCAN", "NO_ECHO", "NO_FILTER", "NO_SHARE", + "NULL", "OFFSET", "ON", "ONARGSLIST", "ONCHAR", + "ONCODE", "ONFILE", "ONKEY", "ONSOURCE", "OPEN", + "OPTIONAL", "OPTIONS", "OTHERWISE","OTHER", "OUTPUT", + "OVERFLOW", "OFL", "OWNER_GROUP", "OWNER_ID", + "OWNER_MEMBER", "OWNER_PROTECTION", "P", "%PAGE", + "PAGE", "PAGENO", "PAGESIZE", "PARAMETER", "PARM", + "PICTURE", "PIC", "POINTER", "PTR", "POSINT", + "POSITION", "POS", "PRECISION","PREC", "PRESENT", + "PRINT", "PRINTER_FORMAT", "%PROCEDURE", "%PROC", + "PROCEDURE", "PROC", "PROD", "PROMPT", "PURGE_TYPE_AHEAD", + "PUT", "R", "RANK", "READ", "READONLY", + "READ_AHEAD", "READ_CHECK", "READ_REGARDLESS", "RECORD", + "RECORD_ID", "RECORD_ID_ACCESS", "RECORD_ID_TO", "RECURSIVE", + "REFER", "REFERENCE", "RELEASE", "REPEAT", "%REPLACE", + "RESCAN", "RESIGNAL", "RETRIEVAL_POINTERS", "%RETURN", + "RETURN", "RETURNS", "REVERSE", "REVERT", "REVISION_DATE", + "REWIND", "REWIND_ON_CLOSE", "REWIND_ON_OPEN", + "REWRITE", "ROUND", "RTRIM", "%SBTTL", "SCALARVARYING", + "SEARCH", "SELECT", "SEQUENTIAL", "SEQL", + "SET", "SHARED_READ", "SHARED_WRITE", "SIGN", + "SIGNAL", "SIN", "SIND", "SINH", "SIZE", + "SKIP", "SNAP", "SOME", "SPACEBLOCK", "SPOOL", + "SQRT", "STATEMENT", "STATIC", "STOP", "STORAGE", + "STREAM", "STRING", "STRINGRANGE", "STRG", + "STRUCTURE", "SUBSCRIPTRANGE", "SUBRG", "SUBSTR", + "SUBTRACT", "SUM", "SUPERCEDE","SYSIN", "SYSPRINT", + "SYSTEM", "SYSTEM_PROTECTION", "TAB", "TAN", + "TAND", "TANH", "TEMPORARY","%THEN", "THEN", + "TIME", "TIMEOUT_PERIOD", "%TITLE", "TITLE", + "TO", "TRANSLATE", "TRIM", "TRUNC", "TRUNCATE", + "UNALIGNED", "UNAL", "UNDEFINED","UNDF", "UNDERFLOW", + "UFL", "UNION", "UNSPEC", "UNTIL", "UPDATE", + "USER_OPEN", "VALID", "VALUE", "VAL", "VARIABLE", + "VARIANT", "VARYING", "VAR", "VAXCONDITION", "VERIFY", + "WAIT_FOR_RECORD", "%WARN", "WARN", "WHEN", + "WHILE", "WORLD_PROTECTION", "WRITE", "WRITE_BEHIND", + "WRITE_CHECK", "X", "ZERODIVIDE"), + + "SQL" => array( + "abort", "abs", "absolute", "access", + "action", "ada", "add", "admin", + "after", "aggregate", "alias", "all", + "allocate", "alter", "analyse", "analyze", + "and", "any", "are", "array", + "as", "asc", "asensitive", "assertion", + "assignment", "asymmetric", "at", "atomic", + "authorization", "avg", "backward", "before", + "begin", "between", "bigint", "binary", + "bit", "bitvar", "bit_length", "blob", + "boolean", "both", "breadth", "by", + "c", "cache", "call", "called", + "cardinality", "cascade", "cascaded", "case", + "cast", "catalog", "catalog_name", "chain", + "char", "character", "characteristics", "character_length", + "character_set_catalog", "character_set_name", "character_set_schema", "char_length", + "check", "checked", "checkpoint", /* "class", */ + "class_origin", "clob", "close", "cluster", + "coalesce", "cobol", "collate", "collation", + "collation_catalog", "collation_name", "collation_schema", "column", + "column_name", "command_function", "command_function_code", "comment", + "commit", "committed", "completion", "condition_number", + "connect", "connection", "connection_name", "constraint", + "constraints", "constraint_catalog", "constraint_name", "constraint_schema", + "constructor", "contains", "continue", "conversion", + "convert", "copy", "corresponding", "count", + "create", "createdb", "createuser", "cross", + "cube", "current", "current_date", "current_path", + "current_role", "current_time", "current_timestamp", "current_user", + "cursor", "cursor_name", "cycle", "data", + "database", "date", "datetime_interval_code", "datetime_interval_precision", + "day", "deallocate", "dec", "decimal", + "declare", "default", "defaults", "deferrable", + "deferred", "defined", "definer", "delete", + "delimiter", "delimiters", "depth", "deref", + "desc", "describe", "descriptor", "destroy", + "destructor", "deterministic", "diagnostics", "dictionary", + "disconnect", "dispatch", "distinct", "do", + "domain", "double", "drop", "dynamic", + "dynamic_function", "dynamic_function_code", "each", "else", + "encoding", "encrypted", "end", "end-exec", + "equals", "escape", "every", "except", + "exception", "excluding", "exclusive", "exec", + "execute", "existing", "exists", "explain", + "external", "extract", "false", "fetch", + "final", "first", "float", "for", + "force", "foreign", "fortran", "forward", + "found", "free", "freeze", "from", + "full", "function", "g", "general", + "generated", "get", "global", "go", + "goto", "grant", "granted", "group", + "grouping", "handler", "having", "hierarchy", + "hold", "host", "hour", "identity", + "ignore", "ilike", "immediate", "immutable", + "implementation", "implicit", "in", "including", + "increment", "index", "indicator", "infix", + "inherits", "initialize", "initially", "inner", + "inout", "input", "insensitive", "insert", + "instance", "instantiable", "instead", "int", + "integer", "intersect", "interval", "into", + "invoker", "is", "isnull", "isolation", + "iterate", "join", "k", "key", + "key_member", "key_type", "lancompiler", "language", + "large", "last", "lateral", "leading", + "left", "length", "less", "level", + "like", "limit", "listen", "load", + "local", "localtime", "localtimestamp", "location", + "locator", "lock", "lower", "m", + "map", "match", "max", "maxvalue", + "message_length", "message_octet_length", "message_text", "method", + "min", "minute", "minvalue", "mod", + "mode", "modifies", "modify", "module", + "month", "more", "move", "mumps", + "name", "names", "national", "natural", + "nchar", "nclob", "new", "next", + "no", "nocreatedb", "nocreateuser", "none", + "not", "nothing", "notify", "notnull", + "null", "nullable", "nullif", "number", + "numeric", "object", "octet_length", "of", + "off", "offset", "oids", "old", + "on", "only", "open", "operation", + "operator", "option", "options", "or", + "order", "ordinality", "out", "outer", + "output", "overlaps", "overlay", "overriding", + "owner", "pad", "parameter", "parameters", + "parameter_mode", "parameter_name", "parameter_ordinal_position", "parameter_specific_catalog", + "parameter_specific_name", "parameter_specific_schema", "partial", "pascal", + "password", "path", "pendant", "placing", + "pli", "position", "postfix", "precision", + "prefix", "preorder", "prepare", "preserve", + "primary", "prior", "privileges", "procedural", + "procedure", "public", "read", "reads", + "real", "recheck", "recursive", "ref", + "references", "referencing", "reindex", "relative", + "rename", "repeatable", "replace", "reset", + "restart", "restrict", "result", "return", + "returned_length", "returned_octet_length", "returned_sqlstate", "returns", + "revoke", "right", "role", "rollback", + "rollup", "routine", "routine_catalog", "routine_name", + "routine_schema", "row", "rows", "row_count", + "rule", "savepoint", "scale", "schema", + "schema_name", "scope", "scroll", "search", + "second", "section", "security", "select", + "self", "sensitive", "sequence", "serializable", + "server_name", "session", "session_user", "set", + "setof", "sets", "share", "show", + "similar", "simple", "size", "smallint", + "some", "source", "space", "specific", + "specifictype", "specific_name", "sql", "sqlcode", + "sqlerror", "sqlexception", "sqlstate", "sqlwarning", + "stable", "start", "state", "statement", + "static", "statistics", "stdin", "stdout", + "storage", "strict", "structure", "style", + "subclass_origin", "sublist", "substring", "sum", + "symmetric", "sysid", "system", "system_user", + "table", "table_name", "temp", "template", + "temporary", "terminate", "text", "than", "then", + "time", "timestamp", "timezone_hour", "timezone_minute", + "to", "toast", "trailing", "transaction", + "transactions_committed", "transactions_rolled_back", "transaction_active", "transform", + "transforms", "translate", "translation", "treat", + "trigger", "trigger_catalog", "trigger_name", "trigger_schema", + "trim", "true", "truncate", "trusted", + "type", "uncommitted", "under", "unencrypted", + "union", "unique", "unknown", "unlisten", + "unnamed", "unnest", "until", "update", + "upper", "usage", "user", "user_defined_type_catalog", + "user_defined_type_name", "user_defined_type_schema", "using", "vacuum", + "valid", "validator", "value", "values", + "varchar", "variable", "varying", "verbose", + "version", "view", "volatile", "when", + "whenever", "where", "with", "without", + "work", "write", "year", "zone") + + ); + + $case_insensitive = array( + "VB" => true, + "Pascal" => true, + "PL/I" => true, + "SQL" => true + ); + $ncs = false; + if (array_key_exists($language, $case_insensitive)) + $ncs = true; + + $text = (array_key_exists($language, $preproc))? + preproc_replace($preproc[$language], $text) : + $text; + $text = (array_key_exists($language, $keywords))? + keyword_replace($keywords[$language], $text, $ncs) : + $text; + + return $text; +} + + +function rtrim1($span, $lang, $ch) +{ + return syntax_highlight_helper(substr($span, 0, -1), $lang); +} + + +function rtrim1_htmlesc($span, $lang, $ch) +{ + return htmlspecialchars(substr($span, 0, -1)); +} + + +function sch_rtrim1($span, $lang, $ch) +{ + return sch_syntax_helper(substr($span, 0, -1)); +} + + +function rtrim2($span, $lang, $ch) +{ + return substr($span, 0, -2); +} + + +function syn_proc($span, $lang, $ch) +{ + return syntax_highlight_helper($span, $lang); +} + +function dash_putback($span, $lang, $ch) +{ + return syntax_highlight_helper('-' . $span, $lang); +} + +function slash_putback($span, $lang, $ch) +{ + return syntax_highlight_helper('/' . $span, $lang); +} + +function slash_putback_rtrim1($span, $lang, $ch) +{ + return rtrim1('/' . $span, $lang, $ch); +} + +function lparen_putback($span, $lang, $ch) +{ + return syntax_highlight_helper('(' . $span, $lang); +} + +function lparen_putback_rtrim1($span, $lang, $ch) +{ + return rtrim1('(' . $span, $lang, $ch); +} + +function prepend_xml_opentag($span, $lang, $ch) +{ + return '<' . $span; +} + +function proc_void($span, $lang, $ch) +{ + return $span; +} + + +/** + * Syntax highlight function + * Does the bulk of the syntax highlighting by lexing the input + * string, then calling the helper function to highlight keywords. + */ +function syntax_highlight($text, $language) +{ + if ($language == "Plain Text") return $text; + + define("normal_text", 1, true); + define("dq_literal", 2, true); + define("dq_escape", 3, true); + define("sq_literal", 4, true); + define("sq_escape", 5, true); + define("slash_begin", 6, true); + define("star_comment", 7, true); + define("star_end", 8, true); + define("line_comment", 9, true); + define("html_entity", 10, true); + define("lc_escape", 11, true); + define("block_comment",12, true); + define("paren_begin", 13, true); + define("dash_begin", 14, true); + define("bt_literal", 15, true); + define("bt_escape", 16, true); + define("xml_tag_begin",17, true); + define("xml_tag", 18, true); + define("xml_pi", 19, true); + define("sch_normal", 20, true); + define("sch_stresc", 21, true); + define("sch_idexpr", 22, true); + define("sch_numlit", 23, true); + define("sch_chrlit", 24, true); + define("sch_strlit", 25, true); + + $initial_state["Scheme"] = sch_normal; + + $sch[sch_normal][0] = sch_normal; + $sch[sch_normal]['"'] = sch_strlit; + $sch[sch_normal]["#"] = sch_chrlit; + $sch[sch_normal]["0"] = sch_numlit; + $sch[sch_normal]["1"] = sch_numlit; + $sch[sch_normal]["2"] = sch_numlit; + $sch[sch_normal]["3"] = sch_numlit; + $sch[sch_normal]["4"] = sch_numlit; + $sch[sch_normal]["5"] = sch_numlit; + $sch[sch_normal]["6"] = sch_numlit; + $sch[sch_normal]["7"] = sch_numlit; + $sch[sch_normal]["8"] = sch_numlit; + $sch[sch_normal]["9"] = sch_numlit; + + $sch[sch_strlit]['"'] = sch_normal; + $sch[sch_strlit]["\n"] = sch_normal; + $sch[sch_strlit]["\\"] = sch_stresc; + $sch[sch_strlit][0] = sch_strlit; + + $sch[sch_chrlit][" "] = sch_normal; + $sch[sch_chrlit]["\t"] = sch_normal; + $sch[sch_chrlit]["\n"] = sch_normal; + $sch[sch_chrlit]["\r"] = sch_normal; + $sch[sch_chrlit][0] = sch_chrlit; + + $sch[sch_numlit][" "] = sch_normal; + $sch[sch_numlit]["\t"] = sch_normal; + $sch[sch_numlit]["\n"] = sch_normal; + $sch[sch_numlit]["\r"] = sch_normal; + $sch[sch_numlit][0] = sch_numlit; + + // + // State transitions for C + // + $c89[normal_text]["\""] = dq_literal; + $c89[normal_text]["'"] = sq_literal; + $c89[normal_text]["/"] = slash_begin; + $c89[normal_text][0] = normal_text; + + $c89[dq_literal]["\""] = normal_text; + $c89[dq_literal]["\n"] = normal_text; + $c89[dq_literal]["\\"] = dq_escape; + $c89[dq_literal][0] = dq_literal; + + $c89[dq_escape][0] = dq_literal; + + $c89[sq_literal]["'"] = normal_text; + $c89[sq_literal]["\n"] = normal_text; + $c89[sq_literal]["\\"] = sq_escape; + $c89[sq_literal][0] = sq_literal; + + $c89[sq_escape][0] = sq_literal; + + $c89[slash_begin]["*"] = star_comment; + $c89[slash_begin][0] = normal_text; + + $c89[star_comment]["*"] = star_end; + $c89[star_comment][0] = star_comment; + + $c89[star_end]["/"] = normal_text; + $c89[star_end]["*"] = star_end; + $c89[star_end][0] = star_comment; + + // + // State transitions for C++ + // Inherit transitions from C, and add line comment support + // + $cpp = $c89; + $cpp[slash_begin]["/"] = line_comment; + $cpp[line_comment]["\n"] = normal_text; + $cpp[line_comment]["\\"] = lc_escape; + $cpp[line_comment][0] = line_comment; + + $cpp[lc_escape]["\r"] = lc_escape; + $cpp[lc_escape][0] = line_comment; + + // + // State transitions for C99. + // C99 supports line comments like C++ + // + $c99 = $cpp; + + // State transitions for PL/I + // Kinda like C + $pli = $c89; + + // + // State transitions for PHP + // Inherit transitions from C++, and add perl-style line comment support + $php = $cpp; + $php[normal_text]["#"] = line_comment; + $php[sq_literal]["\n"] = sq_literal; + $php[dq_literal]["\n"] = dq_literal; + + // + // State transitions for Perl + $perl[normal_text]["#"] = line_comment; + $perl[normal_text]["\""] = dq_literal; + $perl[normal_text]["'"] = sq_literal; + $perl[normal_text][0] = normal_text; + + $perl[dq_literal]["\""] = normal_text; + $perl[dq_literal]["\\"] = dq_escape; + $perl[dq_literal][0] = dq_literal; + + $perl[dq_escape][0] = dq_literal; + + $perl[sq_literal]["'"] = normal_text; + $perl[sq_literal]["\\"] = sq_escape; + $perl[sq_literal][0] = sq_literal; + + $perl[sq_escape][0] = sq_literal; + + $perl[line_comment]["\n"] = normal_text; + $perl[line_comment][0] = line_comment; + + $mirc[normal_text]["\""] = dq_literal; + $mirc[normal_text][";"] = line_comment; + $mirc[normal_text][0] = normal_text; + + $mirc[dq_literal]["\""] = normal_text; + $mirc[dq_literal]["\\"] = dq_escape; + $mirc[dq_literal][0] = dq_literal; + + $mirc[dq_escape][0] = dq_literal; + + $mirc[line_comment]["\n"] = normal_text; + $mirc[line_comment][0] = line_comment; + + $ruby = $perl; + + $python = $perl; + + $java = $cpp; + + $vb = $perl; + $vb[normal_text]["#"] = normal_text; + $vb[normal_text]["'"] = line_comment; + + $cs = $java; + + $pascal = $c89; + $pascal[normal_text]["("] = paren_begin; + $pascal[normal_text]["/"] = slash_begin; + $pascal[normal_text]["{"] = block_comment; + + $pascal[paren_begin]["*"] = star_comment; + $pascal[paren_begin]["'"] = sq_literal; + $pascal[paren_begin]['"'] = dq_literal; + $pascal[paren_begin][0] = normal_text; + + $pascal[slash_begin]["'"] = sq_literal; + $pascal[slash_begin]['"'] = dq_literal; + $pascal[slash_begin]['/'] = line_comment; + $pascal[slash_begin][0] = normal_text; + + $pascal[star_comment]["*"] = star_end; + $pascal[star_comment][0] = star_comment; + + $pascal[block_comment]["}"] = normal_text; + $pascal[block_comment][0] = block_comment; + + $pascal[line_comment]["\n"] = normal_text; + $pascal[line_comment][0] = line_comment; + + $pascal[star_end][")"] = normal_text; + $pascal[star_end]["*"] = star_end; + $pascal[star_end][0] = star_comment; + + $sql[normal_text]['"'] = dq_literal; + $sql[normal_text]["'"] = sq_literal; + $sql[normal_text]['`'] = bt_literal; + $sql[normal_text]['-'] = dash_begin; + $sql[normal_text][0] = normal_text; + + $sql[dq_literal]['"'] = normal_text; + $sql[dq_literal]['\\'] = dq_escape; + $sql[dq_literal][0] = dq_literal; + + $sql[sq_literal]["'"] = normal_text; + $sql[sq_literal]['\\'] = sq_escape; + $sql[sq_literal][0] = sq_literal; + + $sql[bt_literal]['`'] = normal_text; + $sql[bt_literal]['\\'] = bt_escape; + $sql[bt_literal][0] = bt_literal; + + $sql[dq_escape][0] = dq_literal; + $sql[sq_escape][0] = sq_literal; + $sql[bt_escape][0] = bt_literal; + + $sql[dash_begin]["-"] = line_comment; + $sql[dash_begin][0] = normal_text; + + $sql[line_comment]["\n"] = normal_text; + $sql[line_comment]["\\"] = lc_escape; + $sql[line_comment][0] = line_comment; + + $sql[lc_escape]["\r"] = lc_escape; + $sql[lc_escape][0] = line_comment; + + $xml[normal_text]["<"] = xml_tag_begin; + $xml[normal_text]["&"] = html_entity; + $xml[normal_text][0] = normal_text; + $xml[html_entity][";"] = normal_text; + $xml[html_entity]["<"] = xml_tag_begin; + $xml[html_entity][0] = html_entity; + $xml[xml_tag_begin]["?"] = xml_pi; + $xml[xml_tag_begin]["!"] = line_comment; + $xml[xml_tag_begin][0] = xml_tag; + $xml[xml_tag][">"] = normal_text; + $xml[xml_tag]["\""] = dq_literal; + $xml[xml_tag]["'"] = sq_literal; + $xml[xml_tag][0] = xml_tag; + $xml[xml_pi][">"] = normal_text; + $xml[xml_pi][0] = xml_tag; + $xml[line_comment][">"] = normal_text; + $xml[line_comment][0] = line_comment; + $xml[dq_literal]["\""] = xml_tag; + $xml[dq_literal]["&"] = dq_escape; + $xml[dq_literal][0] = dq_literal; + $xml[sq_literal]["'"] = xml_tag; + $xml[sq_literal]["&"] = sq_escape; + $xml[sq_literal][0] = sq_literal; + $xml[dq_escape][";"] = dq_literal; + $xml[dq_escape][0] = dq_escape; + + // + // Main state transition table + // + $states = array( + "C89" => $c89, + "C" => $c99, + "C++" => $cpp, + "PHP" => $php, + "Perl" => $perl, + "Java" => $java, + "VB" => $vb, + "C#" => $cs, + "Ruby" => $ruby, + "Python" => $python, + "Pascal" => $pascal, + "mIRC" => $mirc, + "PL/I" => $pli, + "SQL" => $sql, + "XML" => $xml, + "Scheme" => $sch + ); + + + // + // Process functions + // + $process["C89"][normal_text][sq_literal] = "rtrim1"; + $process["C89"][normal_text][dq_literal] = "rtrim1"; + $process["C89"][normal_text][slash_begin] = "rtrim1"; + $process["C89"][normal_text][0] = "syn_proc"; + + $process["C89"][slash_begin][star_comment] = "rtrim1"; + $process["C89"][slash_begin][0] = "slash_putback"; + + $process["Scheme"][sch_normal][sch_strlit] = "sch_rtrim1"; + $process["Scheme"][sch_normal][sch_chrlit] = "sch_rtrim1"; + $process["Scheme"][sch_normal][sch_numlit] = "sch_rtrim1"; + + $process["SQL"][normal_text][sq_literal] = "rtrim1"; + $process["SQL"][normal_text][dq_literal] = "rtrim1"; + $process["SQL"][normal_text][bt_literal] = "rtrim1"; + $process["SQL"][normal_text][dash_begin] = "rtrim1"; + $process["SQL"][normal_text][0] = "syn_proc"; + + $process["SQL"][dash_begin][line_comment] = "rtrim1"; + $process["SQL"][dash_begin][0] = "dash_putback"; + + $process["PL/I"] = $process["C89"]; + + $process["C++"] = $process["C89"]; + $process["C++"][slash_begin][line_comment] = "rtrim1"; + + $process["C"] = $process["C++"]; + + $process["PHP"] = $process["C++"]; + $process["PHP"][normal_text][line_comment] = "rtrim1"; + + $process["Perl"][normal_text][sq_literal] = "rtrim1"; + $process["Perl"][normal_text][dq_literal] = "rtrim1"; + $process["Perl"][normal_text][line_comment] = "rtrim1"; + $process["Perl"][normal_text][0] = "syn_proc"; + + $process["Ruby"] = $process["Perl"]; + $process["Python"] = $process["Perl"]; + + $process["mIRC"][normal_text][dq_literal] = "rtrim1"; + $process["mIRC"][normal_text][line_comment] = "rtrim1"; + $process["mIRC"][normal_text][0] = "syn_proc"; + + $process["VB"] = $process["Perl"]; + + $process["Java"] = $process["C++"]; + + $process["C#"] = $process["Java"]; + + $process["Pascal"] = $process["C++"]; + $process["Pascal"][normal_text][line_comment] = "rtrim1"; + $process["Pascal"][normal_text][block_comment] = "rtrim1"; + $process["Pascal"][normal_text][paren_begin] = "rtrim1"; + $process["Pascal"][slash_begin][sq_literal] = "slash_putback_rtrim1"; + $process["Pascal"][slash_begin][dq_literal] = "slash_putback_rtrim1"; + $process["Pascal"][slash_begin][0] = "slash_putback"; + $process["Pascal"][paren_begin][sq_literal] = "lparen_putback_rtrim1"; + $process["Pascal"][paren_begin][dq_literal] = "lparen_putback_rtrim1"; + $process["Pascal"][paren_begin][star_comment] = "rtrim1"; + $process["Pascal"][paren_begin][0] = "lparen_putback"; + + $process["XML"][normal_text][xml_tag_begin] = "rtrim1"; + $process["XML"][normal_text][html_entity] = "rtrim1"; + $process["XML"][html_entity][xml_tag_begin] = "rtrim1"; + $process["XML"][html_entity][0] = "proc_void"; + $process["XML"][xml_tag_begin][xml_tag] = "prepend_xml_opentag"; + $process["XML"][xml_tag_begin][xml_pi] = "rtrim1"; + $process["XML"][xml_tag_begin][line_comment] = "rtrim1"; + $process["XML"][line_comment][normal_text] = "rtrim1_htmlesc"; + $process["XML"][xml_tag][normal_text] = "rtrim1"; + $process["XML"][xml_tag][dq_literal] = "rtrim1"; + $process["XML"][dq_literal][xml_tag] = "rtrim1"; + $process["XML"][dq_literal][dq_escape] = "rtrim1"; + + $process_end["C89"] = "syntax_highlight_helper"; + $process_end["C++"] = $process_end["C89"]; + $process_end["C"] = $process_end["C89"]; + $process_end["PHP"] = $process_end["C89"]; + $process_end["Perl"] = $process_end["C89"]; + $process_end["Java"] = $process_end["C89"]; + $process_end["VB"] = $process_end["C89"]; + $process_end["C#"] = $process_end["C89"]; + $process_end["Ruby"] = $process_end["C89"]; + $process_end["Python"] = $process_end["C89"]; + $process_end["Pascal"] = $process_end["C89"]; + $process_end["mIRC"] = $process_end["C89"]; + $process_end["PL/I"] = $process_end["C89"]; + $process_end["SQL"] = $process_end["C89"]; + $process_end["Scheme"] = "sch_syntax_helper"; + + + $edges["C89"][normal_text .",". dq_literal] = '"'; + $edges["C89"][normal_text .",". sq_literal] = '\''; + $edges["C89"][slash_begin .",". star_comment] = '/*'; + $edges["C89"][dq_literal .",". normal_text] = ''; + $edges["C89"][sq_literal .",". normal_text] = ''; + $edges["C89"][star_end .",". normal_text] = ''; + + $edges["Scheme"][sch_normal .",". sch_strlit] = '"'; + $edges["Scheme"][sch_normal .",". sch_numlit] = ''; + $edges["Scheme"][sch_normal .",". sch_chrlit] = '#'; + $edges["Scheme"][sch_strlit .",". sch_normal] = ''; + $edges["Scheme"][sch_numlit .",". sch_normal] = ''; + $edges["Scheme"][sch_chrlit .",". sch_normal] = ''; + + $edges["SQL"][normal_text .",". dq_literal] = '"'; + $edges["SQL"][normal_text .",". sq_literal] = '\''; + $edges["SQL"][dash_begin .",". line_comment] = '--'; + $edges["SQL"][normal_text .",". bt_literal] = '`'; + $edges["SQL"][dq_literal .",". normal_text] = ''; + $edges["SQL"][sq_literal .",". normal_text] = ''; + $edges["SQL"][line_comment .",". normal_text] = ''; + + $edges["PL/I"] = $edges["C89"]; + + $edges["C++"] = $edges["C89"]; + $edges["C++"][slash_begin .",". line_comment] = '//'; + $edges["C++"][line_comment .",". normal_text] = ''; + + $edges["C"] = $edges["C++"]; + + $edges["PHP"] = $edges["C++"]; + $edges["PHP"][normal_text .",". line_comment] = '#'; + + $edges["Perl"][normal_text .",". dq_literal] = '"'; + $edges["Perl"][normal_text .",". sq_literal] = '\''; + $edges["Perl"][dq_literal .",". normal_text] = ''; + $edges["Perl"][sq_literal .",". normal_text] = ''; + $edges["Perl"][normal_text .",". line_comment] = '#'; + $edges["Perl"][line_comment .",". normal_text] = ''; + + $edges["Ruby"] = $edges["Perl"]; + + $edges["Python"] = $edges["Perl"]; + + $edges["mIRC"][normal_text .",". dq_literal] = '"'; + $edges["mIRC"][normal_text .",". line_comment] = ';'; + $edges["mIRC"][dq_literal .",". normal_text] = ''; + $edges["mIRC"][line_comment .",". normal_text] = ''; + + $edges["VB"] = $edges["Perl"]; + $edges["VB"][normal_text .",". line_comment] = '\''; + + $edges["Java"] = $edges["C++"]; + + $edges["C#"] = $edges["Java"]; + + $edges["Pascal"] = $edges["C89"]; + $edges["Pascal"][paren_begin .",". star_comment] = '(*'; + $edges["Pascal"][paren_begin .",". dq_literal] = '"'; + $edges["Pascal"][paren_begin .",". sq_literal] = '\''; + $edges["Pascal"][slash_begin .",". dq_literal] = '"'; + $edges["Pascal"][slash_begin .",". sq_literal] = '\''; + $edges["Pascal"][slash_begin .",". line_comment] = '//'; + $edges["Pascal"][normal_text . "," . block_comment] = '{'; + $edges["Pascal"][line_comment . "," . normal_text] = ''; + $edges["Pascal"][block_comment . "," . normal_text] = ''; + + $edges["XML"][normal_text . "," . html_entity] = '&'; + $edges["XML"][html_entity . "," . normal_text] = ''; + $edges["XML"][html_entity . "," . xml_tag_begin] = ''; + $edges["XML"][xml_tag . "," . normal_text] = '>'; + $edges["XML"][xml_tag_begin . "," . xml_pi] = '<?'; + $edges["XML"][xml_tag_begin . "," . line_comment] = '<!'; + $edges["XML"][line_comment . "," . normal_text] = '>'; + $edges["XML"][xml_tag .",". dq_literal] = '"'; + $edges["XML"][dq_literal . "," . xml_tag] = '"'; + $edges["XML"][dq_literal . "," . dq_escape] = '&'; + $edges["XML"][dq_escape . "," . dq_literal] = ''; + $edges["XML"][xml_tag .",". sq_literal] = '\''; + $edges["XML"][sq_literal . "," . xml_tag] = '\''; + $edges["XML"][sq_literal . "," . sq_escape] = '&'; + $edges["XML"][sq_escape . "," . sq_literal] = ''; + + // + // The State Machine + // + if (array_key_exists($language, $initial_state)) + $state = $initial_state[$language]; + else + $state = normal_text; + $output = ""; + $span = ""; + while (strlen($text) > 0) + { + $ch = substr($text, 0, 1); + $text = substr($text, 1); + + $oldstate = $state; + $state = (array_key_exists($ch, $states[$language][$state]))? + $states[$language][$state][$ch] : + $states[$language][$state][0]; + + $span .= $ch; + + if ($oldstate != $state) + { + if (array_key_exists($language, $process) && + array_key_exists($oldstate, $process[$language])) + { + if (array_key_exists($state, $process[$language][$oldstate])) + { + $pf = $process[$language][$oldstate][$state]; + $output .= $pf($span, $language, $ch); + } + else + { + $pf = $process[$language][$oldstate][0]; + $output .= $pf($span, $language, $ch); + } + } + else + { + $output .= $span; + } + + if (array_key_exists($language, $edges) && + array_key_exists("$oldstate,$state", $edges[$language])) + $output .= $edges[$language]["$oldstate,$state"]; + + $span = ""; + } + } + + if (array_key_exists($language, $process_end) && $state == normal_text) + $output .= $process_end[$language]($span, $language); + else + $output .= $span; + + if ($state != normal_text) + { + if (array_key_exists($language, $edges) && + array_key_exists("$state," . normal_text, $edges[$language])) + $output .= $edges[$language]["$state," . normal_text]; + } + + return $output; +} + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/js/jquery.js b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/js/jquery.js new file mode 100644 index 00000000..e7f2a292 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/js/jquery.js @@ -0,0 +1,2 @@ +/*! jQuery v@1.8.1 jquery.com | jquery.org/license */ +(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write(""),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bS[a]=c,c}function ci(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||ce.test(a)?d(a,e):ci(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ci(a+"["+e+"]",b[e],c,d);else d(a,b)}function cz(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.1",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return typeof a=="object"?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b
a",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length||!d)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="
t
",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="
",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||++p.uuid:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.length,e=c.shift(),f=p._queueHooks(a,b),g=function(){p.dequeue(a,b)};e==="inprogress"&&(e=c.shift(),d--),e&&(b==="fx"&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c-1)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c-1)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,""+d),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j=0),h[l]&&j.push(k);j.length&&t.push({elem:f,matches:j})}n.length>o&&t.push({elem:this,matches:n.slice(o)});for(d=0;d0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function $(a,b,c,d){c=c||[],b=b||q;var e,f,g,j,k=b.nodeType;if(k!==1&&k!==9)return[];if(!a||typeof a!="string")return c;g=h(b);if(!g&&!d)if(e=L.exec(a))if(j=e[1]){if(k===9){f=b.getElementById(j);if(!f||!f.parentNode)return c;if(f.id===j)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(j))&&i(b,f)&&f.id===j)return c.push(f),c}else{if(e[2])return u.apply(c,t.call(b.getElementsByTagName(a),0)),c;if((j=e[3])&&X&&b.getElementsByClassName)return u.apply(c,t.call(b.getElementsByClassName(j),0)),c}return bk(a,b,c,d,g)}function _(a){return function(b){var c=b.nodeName.toLowerCase();return c==="input"&&b.type===a}}function ba(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}}function bb(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}function bc(a,b,c,d){var e,g,h,i,j,k,l,m,n,p,r=!c&&b!==q,s=(r?"":"")+a.replace(H,"$1"),u=y[o][s];if(u)return d?0:t.call(u,0);j=a,k=[],m=0,n=f.preFilter,p=f.filter;while(j){if(!e||(g=I.exec(j)))g&&(j=j.slice(g[0].length),h.selector=l),k.push(h=[]),l="",r&&(j=" "+j);e=!1;if(g=J.exec(j))l+=g[0],j=j.slice(g[0].length),e=h.push({part:g.pop().replace(H," "),string:g[0],captures:g});for(i in p)(g=S[i].exec(j))&&(!n[i]||(g=n[i](g,b,c)))&&(l+=g[0],j=j.slice(g[0].length),e=h.push({part:i,string:g.shift(),captures:g}));if(!e)break}return l&&(h.selector=l),d?j.length:j?$.error(a):t.call(y(s,k),0)}function bd(a,b,e,f){var g=b.dir,h=s++;return a||(a=function(a){return a===e}),b.first?function(b){while(b=b[g])if(b.nodeType===1)return a(b)&&b}:f?function(b){while(b=b[g])if(b.nodeType===1&&a(b))return b}:function(b){var e,f=h+"."+c,i=f+"."+d;while(b=b[g])if(b.nodeType===1){if((e=b[o])===i)return b.sizset;if(typeof e=="string"&&e.indexOf(f)===0){if(b.sizset)return b}else{b[o]=i;if(a(b))return b.sizset=!0,b;b.sizset=!1}}}}function be(a,b){return a?function(c){var d=b(c);return d&&a(d===!0?c:d)}:b}function bf(a,b,c){var d,e,g=0;for(;d=a[g];g++)f.relative[d.part]?e=bd(e,f.relative[d.part],b,c):e=be(e,f.filter[d.part].apply(null,d.captures.concat(b,c)));return e}function bg(a){return function(b){var c,d=0;for(;c=a[d];d++)if(c(b))return!0;return!1}}function bh(a,b,c,d){var e=0,f=b.length;for(;e0?i(h,c,g):[]}function bj(a,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r,s=0,t=a.length,v=S.POS,w=new RegExp("^"+v.source+"(?!"+A+")","i"),x=function(){var a=1,c=arguments.length-2;for(;al){g+=k.slice(l,n.index),l=p,q=[c],J.test(g)&&(m&&(q=m),m=e);if(r=O.test(g))g=g.slice(0,-5).replace(J,"$&*"),l++;n.length>1&&n[0].replace(w,x),m=bi(g,n[1],n[2],q,m,r)}g=""}}o||(g+=k),o=!1}g?J.test(g)?bh(g,m||[c],d,e):$(g,c,d,e?e.concat(m):m):u.apply(d,m)}return t===1?d:$.uniqueSort(d)}function bk(a,b,e,g,h){a=a.replace(H,"$1");var i,k,l,m,n,o,p,q,r,s,v=bc(a,b,h),w=b.nodeType;if(S.POS.test(a))return bj(v,b,e,g);if(g)i=t.call(g,0);else if(v.length===1){if((o=t.call(v[0],0)).length>2&&(p=o[0]).part==="ID"&&w===9&&!h&&f.relative[o[1].part]){b=f.find.ID(p.captures[0].replace(R,""),b,h)[0];if(!b)return e;a=a.slice(o.shift().string.length)}r=(v=N.exec(o[0].string))&&!v.index&&b.parentNode||b,q="";for(n=o.length-1;n>=0;n--){p=o[n],s=p.part,q=p.string+q;if(f.relative[s])break;if(f.order.test(s)){i=f.find[s](p.captures[0].replace(R,""),r,h);if(i==null)continue;a=a.slice(0,a.length-q.length)+q.replace(S[s],""),a||u.apply(e,t.call(i,0));break}}}if(a){k=j(a,b,h),c=k.dirruns++,i==null&&(i=f.find.TAG("*",N.test(a)&&b.parentNode||b));for(n=0;m=i[n];n++)d=k.runs++,k(m)&&e.push(m)}return e}var c,d,e,f,g,h,i,j,k,l,m=!0,n="undefined",o=("sizcache"+Math.random()).replace(".",""),q=a.document,r=q.documentElement,s=0,t=[].slice,u=[].push,v=function(a,b){return a[o]=b||!0,a},w=function(){var a={},b=[];return v(function(c,d){return b.push(c)>f.cacheLength&&delete a[b.shift()],a[c]=d},a)},x=w(),y=w(),z=w(),A="[\\x20\\t\\r\\n\\f]",B="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",C=B.replace("w","w#"),D="([*^$|!~]?=)",E="\\["+A+"*("+B+")"+A+"*(?:"+D+A+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+C+")|)|)"+A+"*\\]",F=":("+B+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+E+")|[^:]|\\\\.)*|.*))\\)|)",G=":(nth|eq|gt|lt|first|last|even|odd)(?:\\(((?:-\\d)?\\d*)\\)|)(?=[^-]|$)",H=new RegExp("^"+A+"+|((?:^|[^\\\\])(?:\\\\.)*)"+A+"+$","g"),I=new RegExp("^"+A+"*,"+A+"*"),J=new RegExp("^"+A+"*([\\x20\\t\\r\\n\\f>+~])"+A+"*"),K=new RegExp(F),L=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,M=/^:not/,N=/[\x20\t\r\n\f]*[+~]/,O=/:not\($/,P=/h\d/i,Q=/input|select|textarea|button/i,R=/\\(?!\\)/g,S={ID:new RegExp("^#("+B+")"),CLASS:new RegExp("^\\.("+B+")"),NAME:new RegExp("^\\[name=['\"]?("+B+")['\"]?\\]"),TAG:new RegExp("^("+B.replace("w","w*")+")"),ATTR:new RegExp("^"+E),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|nth|last|first)-child(?:\\("+A+"*(even|odd|(([+-]|)(\\d*)n|)"+A+"*(?:([+-]|)"+A+"*(\\d+)|))"+A+"*\\)|)","i"),POS:new RegExp(G,"ig"),needsContext:new RegExp("^"+A+"*[>+~]|"+G,"i")},T=function(a){var b=q.createElement("div");try{return a(b)}catch(c){return!1}finally{b=null}},U=T(function(a){return a.appendChild(q.createComment("")),!a.getElementsByTagName("*").length}),V=T(function(a){return a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!==n&&a.firstChild.getAttribute("href")==="#"}),W=T(function(a){a.innerHTML="";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),X=T(function(a){return a.innerHTML="",!a.getElementsByClassName||!a.getElementsByClassName("e").length?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length===2)}),Y=T(function(a){a.id=o+0,a.innerHTML="
",r.insertBefore(a,r.firstChild);var b=q.getElementsByName&&q.getElementsByName(o).length===2+q.getElementsByName(o+0).length;return e=!q.getElementById(o),r.removeChild(a),b});try{t.call(r.childNodes,0)[0].nodeType}catch(Z){t=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}$.matches=function(a,b){return $(a,null,null,b)},$.matchesSelector=function(a,b){return $(b,null,null,[a]).length>0},g=$.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent=="string")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=g(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=g(b);return c},h=$.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!=="HTML":!1},i=$.contains=r.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b&&b.parentNode;return a===d||!!(d&&d.nodeType===1&&c.contains&&c.contains(d))}:r.compareDocumentPosition?function(a,b){return b&&!!(a.compareDocumentPosition(b)&16)}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},$.attr=function(a,b){var c,d=h(a);return d||(b=b.toLowerCase()),f.attrHandle[b]?f.attrHandle[b](a):W||d?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]=="boolean"?a[b]?b:null:c.specified?c.value:null:null)},f=$.selectors={cacheLength:50,createPseudo:v,match:S,order:new RegExp("ID|TAG"+(Y?"|NAME":"")+(X?"|CLASS":"")),attrHandle:V?{}:{href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}},find:{ID:e?function(a,b,c){if(typeof b.getElementById!==n&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==n&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==n&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:U?function(a,b){if(typeof b.getElementsByTagName!==n)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c},NAME:function(a,b){if(typeof b.getElementsByName!==n)return b.getElementsByName(name)},CLASS:function(a,b,c){if(typeof b.getElementsByClassName!==n&&!c)return b.getElementsByClassName(a)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(R,""),a[3]=(a[4]||a[5]||"").replace(R,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||$.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&$.error(a[0]),a},PSEUDO:function(a,b,c){var d,e;if(S.CHILD.test(a[0]))return null;if(a[3])a[2]=a[3];else if(d=a[4])K.test(d)&&(e=bc(d,b,c,!0))&&(e=d.indexOf(")",d.length-e)-d.length)&&(d=d.slice(0,e),a[0]=a[0].slice(0,e)),a[2]=d;return a.slice(0,3)}},filter:{ID:e?function(a){return a=a.replace(R,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(R,""),function(b){var c=typeof b.getAttributeNode!==n&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(R,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=x[o][a];return b||(b=x(a,new RegExp("(^|"+A+")"+a+"("+A+"|$)"))),function(a){return b.test(a.className||typeof a.getAttribute!==n&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return b?function(d){var e=$.attr(d,a),f=e+"";if(e==null)return b==="!=";switch(b){case"=":return f===c;case"!=":return f!==c;case"^=":return c&&f.indexOf(c)===0;case"*=":return c&&f.indexOf(c)>-1;case"$=":return c&&f.substr(f.length-c.length)===c;case"~=":return(" "+f+" ").indexOf(c)>-1;case"|=":return f===c||f.substr(0,c.length+1)===c+"-"}}:function(b){return $.attr(b,a)!=null}},CHILD:function(a,b,c,d){if(a==="nth"){var e=s++;return function(a){var b,f,g=0,h=a;if(c===1&&d===0)return!0;b=a.parentNode;if(b&&(b[o]!==e||!a.sizset)){for(h=b.firstChild;h;h=h.nextSibling)if(h.nodeType===1){h.sizset=++g;if(h===a)break}b[o]=e}return f=a.sizset-d,c===0?f===0:f%c===0&&f/c>=0}}return function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b,c,d){var e,g=f.pseudos[a]||f.pseudos[a.toLowerCase()];return g||$.error("unsupported pseudo: "+a),g[o]?g(b,c,d):g.length>1?(e=[a,a,"",b],function(a){return g(a,0,e)}):g}},pseudos:{not:v(function(a,b,c){var d=j(a.replace(H,"$1"),b,c);return function(a){return!d(a)}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!f.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},contains:v(function(a){return function(b){return(b.textContent||b.innerText||g(b)).indexOf(a)>-1}}),has:v(function(a){return function(b){return $(a,b).length>0}}),header:function(a){return P.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:_("radio"),checkbox:_("checkbox"),file:_("file"),password:_("password"),image:_("image"),submit:ba("submit"),reset:ba("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return Q.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b,c){return c?a.slice(1):[a[0]]},last:function(a,b,c){var d=a.pop();return c?a:[d]},even:function(a,b,c){var d=[],e=c?1:0,f=a.length;for(;e",a.querySelectorAll("[selected]").length||e.push("\\["+A+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),T(function(a){a.innerHTML="

",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+A+"*(?:\"\"|'')"),a.innerHTML="",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=e.length&&new RegExp(e.join("|")),bk=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a)))if(d.nodeType===9)try{return u.apply(f,t.call(d.querySelectorAll(a),0)),f}catch(i){}else if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){var j,k,l,m=d.getAttribute("id"),n=m||o,p=N.test(a)&&d.parentNode||d;m?n=n.replace(c,"\\$&"):d.setAttribute("id",n),j=bc(a,d,h),n="[id='"+n+"']";for(k=0,l=j.length;k0})}(),f.setFilters.nth=f.setFilters.eq,f.filters=f.pseudos,$.attr=p.attr,p.find=$,p.expr=$.selectors,p.expr[":"]=p.expr.pseudos,p.unique=$.uniqueSort,p.text=$.getText,p.isXMLDoc=$.isXML,p.contains=$.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b0)for(e=d;e=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*\s*$/g,bz={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X
","
"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1>");try{for(;d1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=b===e&&bA,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(f=0;(h=a[f])!=null;f++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{s=s||bk(b),l=b.createElement("div"),s.appendChild(l),h=h.replace(bo,"<$1>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]===""&&!m?l.childNodes:[];for(g=n.length-1;g>=0;--g)p.nodeName(n[g],"tbody")&&!n[g].childNodes.length&&n[g].parentNode.removeChild(n[g])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l.parentNode.removeChild(l)}h.nodeType?t.push(h):p.merge(t,h)}l&&(h=l=s=null);if(!p.support.appendChecked)for(f=0;(h=t[f])!=null;f++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(f=0;(h=t[f])!=null;f++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[f+1,0].concat(r)),f+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.chrome?b.webkit=!0:b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^(none|table(?!-c[ea]).+)/,bO=/^margin/,bP=new RegExp("^("+q+")(.*)$","i"),bQ=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bR=new RegExp("^([-+])=("+q+")","i"),bS={},bT={position:"absolute",visibility:"hidden",display:"block"},bU={letterSpacing:0,fontWeight:400},bV=["Top","Right","Bottom","Left"],bW=["Webkit","O","Moz","ms"],bX=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return b$(this,!0)},hide:function(){return b$(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bX.apply(this,arguments):this.each(function(){(c?a:bZ(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bY(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bR.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bY(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bU&&(f=bU[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(b,c){var d,e,f,g,h=a.getComputedStyle(b,null),i=b.style;return h&&(d=h[c],d===""&&!p.contains(b.ownerDocument,b)&&(d=p.style(b,c)),bQ.test(d)&&bO.test(c)&&(e=i.width,f=i.minWidth,g=i.maxWidth,i.minWidth=i.maxWidth=i.width=d,d=h.width,i.width=e,i.minWidth=f,i.maxWidth=g)),d}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bQ.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth===0&&bN.test(bH(a,"display"))?p.swap(a,bT,function(){return cb(a,b,d)}):cb(a,b,d)},set:function(a,c,d){return b_(a,c,d?ca(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bQ.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bV[d]+b]=e[d]||e[d-2]||e[0];return f}},bO.test(a)||(p.cssHooks[a+b].set=b_)});var cd=/%20/g,ce=/\[\]$/,cf=/\r?\n/g,cg=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ch=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ch.test(this.nodeName)||cg.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(cf,"\r\n")}}):{name:b.name,value:c.replace(cf,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ci(d,a[d],c,f);return e.join("&").replace(cd,"+")};var cj,ck,cl=/#.*$/,cm=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,co=/^(?:GET|HEAD)$/,cp=/^\/\//,cq=/\?/,cr=/)<[^<]*)*<\/script>/gi,cs=/([?&])_=[^&]*/,ct=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,cu=p.fn.load,cv={},cw={},cx=["*/"]+["*"];try{cj=f.href}catch(cy){cj=e.createElement("a"),cj.href="",cj=cj.href}ck=ct.exec(cj.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&cu)return cu.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):c&&typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("
").append(a.replace(cr,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cB(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cB(a,b),a},ajaxSettings:{url:cj,isLocal:cn.test(ck[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cx},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cz(cv),ajaxTransport:cz(cw),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cC(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cD(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=""+(c||y),k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cm.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(cl,"").replace(cp,ck[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=ct.exec(l.url.toLowerCase()),l.crossDomain=!(!i||i[1]==ck[1]&&i[2]==ck[2]&&(i[3]||(i[1]==="http:"?80:443))==(ck[3]||(ck[1]==="http:"?80:443)))),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cA(cv,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!co.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cq.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cs,"$1_="+z);l.url=A+(A===l.url?(cq.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cx+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cA(cw,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cE=[],cF=/\?/,cG=/(=)\?(?=&|$)|\?\?/,cH=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cE.pop()||p.expando+"_"+cH++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cG.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cG.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cG,"$1"+f):m?c.data=i.replace(cG,"$1"+f):k&&(c.url+=(cF.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cE.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cI,cJ=a.ActiveXObject?function(){for(var a in cI)cI[a](0,1)}:!1,cK=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cL()||cM()}:cL,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cJ&&delete cI[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cK,cJ&&(cI||(cI={},p(a).unload(cJ)),cI[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cN,cO,cP=/^(?:toggle|show|hide)$/,cQ=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cR=/queueHooks$/,cS=[cY],cT={"*":[function(a,b){var c,d,e,f=this.createTween(a,b),g=cQ.exec(b),h=f.cur(),i=+h||0,j=1;if(g){c=+g[2],d=g[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&i){i=p.css(f.elem,a,!0)||c||1;do e=j=j||".5",i=i/j,p.style(f.elem,a,i+d),j=f.cur()/h;while(j!==1&&j!==e)}f.unit=d,f.start=i,f.end=g[1]?i+(g[1]+1)*c:c}return f}]};p.Animation=p.extend(cW,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c_.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c_.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=da(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g,null)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window); \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/lib.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/lib.inc.php new file mode 100644 index 00000000..88c32004 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/libraries/lib.inc.php @@ -0,0 +1,271 @@ +stripVar($_GET); + $misc->stripVar($_POST); + $misc->stripVar($_COOKIE); + $misc->stripVar($_REQUEST); + } + + // This has to be deferred until after stripVar above + $misc->setHREF(); + $misc->setForm(); + + // Enforce PHP environment + ini_set('magic_quotes_runtime', 0); + ini_set('magic_quotes_sybase', 0); + ini_set('arg_separator.output', '&'); + + // If login action is set, then set session variables + if (isset($_POST['loginServer']) && isset($_POST['loginUsername']) && + isset($_POST['loginPassword_'.md5($_POST['loginServer'])])) { + + $_server_info = $misc->getServerInfo($_POST['loginServer']); + + $_server_info['username'] = $_POST['loginUsername']; + $_server_info['password'] = $_POST['loginPassword_'.md5($_POST['loginServer'])]; + + $misc->setServerInfo(null, $_server_info, $_POST['loginServer']); + + // Check for shared credentials + if (isset($_POST['loginShared'])) { + $_SESSION['sharedUsername'] = $_POST['loginUsername']; + $_SESSION['sharedPassword'] = $_POST['loginPassword_'.md5($_POST['loginServer'])]; + } + + $_reload_browser = true; + } + + /* select the theme */ + unset($_theme); + if (!isset($conf['theme'])) + $conf['theme'] = 'default'; + + // 1. Check for the theme from a request var + if (isset($_REQUEST['theme']) && is_file("./themes/{$_REQUEST['theme']}/global.css")) { + /* save the selected theme in cookie for a year */ + setcookie('ppaTheme', $_REQUEST['theme'], time()+31536000); + $_theme = $_SESSION['ppaTheme'] = $conf['theme'] = $_REQUEST['theme']; + } + + // 2. Check for theme session var + if (!isset($_theme) && isset($_SESSION['ppaTheme']) && is_file("./themes/{$_SESSION['ppaTheme']}/global.css")) { + $conf['theme'] = $_SESSION['ppaTheme']; + } + + // 3. Check for theme in cookie var + if (!isset($_theme) && isset($_COOKIE['ppaTheme']) && is_file("./themes/{$_COOKIE['ppaTheme']}/global.css")) { + $conf['theme'] = $_COOKIE['ppaTheme']; + } + + // 4. Check for theme by server/db/user + $info = $misc->getServerInfo(); + + if (!is_null($info)) { + $_theme = ''; + + if ( (isset($info['theme']['default'])) + and is_file("./themes/{$info['theme']['default']}/global.css") + ) + $_theme = $info['theme']['default']; + + if ( isset($_REQUEST['database']) + and isset($info['theme']['db'][$_REQUEST['database']]) + and is_file("./themes/{$info['theme']['db'][$_REQUEST['database']]}/global.css") + ) + $_theme = $info['theme']['db'][$_REQUEST['database']]; + + if ( isset($info['username']) + and isset($info['theme']['user'][$info['username']]) + and is_file("./themes/{$info['theme']['user'][$info['username']]}/global.css") + ) + $_theme = $info['theme']['user'][$info['username']]; + + if ($_theme !== '') { + setcookie('ppaTheme', $_theme, time()+31536000); + $conf['theme'] = $_theme; + } + } + + // Determine language file to import: + unset($_language); + + // 1. Check for the language from a request var + if (isset($_REQUEST['language']) && isset($appLangFiles[$_REQUEST['language']])) { + /* save the selected language in cookie for a year */ + setcookie('webdbLanguage', $_REQUEST['language'], time()+31536000); + $_language = $_REQUEST['language']; + } + + // 2. Check for language session var + if (!isset($_language) && isset($_SESSION['webdbLanguage']) && isset($appLangFiles[$_SESSION['webdbLanguage']])) { + $_language = $_SESSION['webdbLanguage']; + } + + // 3. Check for language in cookie var + if (!isset($_language) && isset($_COOKIE['webdbLanguage']) && isset($appLangFiles[$_COOKIE['webdbLanguage']])) { + $_language = $_COOKIE['webdbLanguage']; + } + + // 4. Check for acceptable languages in HTTP_ACCEPT_LANGUAGE var + if (!isset($_language) && $conf['default_lang'] == 'auto' && isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { + // extract acceptable language tags + // (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4) + preg_match_all('/\s*([a-z]{1,8}(?:-[a-z]{1,8})*)(?:;q=([01](?:.[0-9]{0,3})?))?\s*(?:,|$)/', strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']), $_m, PREG_SET_ORDER); + foreach($_m as $_l) { // $_l[1] = language tag, [2] = quality + if (!isset($_l[2])) $_l[2] = 1; // Default quality to 1 + if ($_l[2] > 0 && $_l[2] <= 1 && isset($availableLanguages[$_l[1]])) { + // Build up array of (quality => language_file) + $_acceptLang[$_l[2]] = $availableLanguages[$_l[1]]; + } + } + unset($_m); + unset($_l); + if (isset($_acceptLang)) { + // Sort acceptable languages by quality + krsort($_acceptLang, SORT_NUMERIC); + $_language = reset($_acceptLang); + unset($_acceptLang); + } + } + + // 5. Otherwise resort to the default set in the config file + if (!isset($_language) && $conf['default_lang'] != 'auto' && isset($appLangFiles[$conf['default_lang']])) { + $_language = $conf['default_lang']; + } + + // 6. Otherwise, default to english. + if (!isset($_language)) + $_language = 'english'; + + + // Import the language file + if (isset($_language)) { + include("./lang/{$_language}.php"); + $_SESSION['webdbLanguage'] = $_language; + } + + // Check for config file version mismatch + if (!isset($conf['version']) || $conf['base_version'] > $conf['version']) { + echo $lang['strbadconfig']; + exit; + } + + // Check database support is properly compiled in + if (!function_exists('pg_connect')) { + echo $lang['strnotloaded']; + exit; + } + + // Manage the plugins + require_once('./classes/PluginManager.php'); + + // Create data accessor object, if necessary + if (!isset($_no_db_connection)) { + if (!isset($_REQUEST['server'])) { + echo $lang['strnoserversupplied']; + exit; + } + $_server_info = $misc->getServerInfo(); + + /* starting with PostgreSQL 9.0, we can set the application name */ + if(isset($_server_info['pgVersion']) && $_server_info['pgVersion'] >= 9) + putenv("PGAPPNAME={$appName}_{$appVersion}"); + + // Redirect to the login form if not logged in + if (!isset($_server_info['username'])) { + include('./login.php'); + exit; + } + + // Connect to the current database, or if one is not specified + // then connect to the default database. + if (isset($_REQUEST['database'])) + $_curr_db = $_REQUEST['database']; + else + $_curr_db = $_server_info['defaultdb']; + + include_once('./classes/database/Connection.php'); + + // Connect to database and set the global $data variable + $data = $misc->getDatabaseAccessor($_curr_db); + + // If schema is defined and database supports schemas, then set the + // schema explicitly. + if (isset($_REQUEST['database']) && isset($_REQUEST['schema'])) { + $status = $data->setSchema($_REQUEST['schema']); + if ($status != 0) { + echo $lang['strbadschema']; + exit; + } + } + } + + if (!function_exists("htmlspecialchars_decode")) { + function htmlspecialchars_decode($string, $quote_style = ENT_COMPAT) { + return strtr($string, array_flip(get_html_translation_table(HTML_SPECIALCHARS, $quote_style))); + } + } + + $plugin_manager = new PluginManager($_language); +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/links.js b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/links.js new file mode 100644 index 00000000..adedec47 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/links.js @@ -0,0 +1,16 @@ +/** + * Function for updating browser frame and topbar frame so that sqledit window + * pops up with properly selected database. + * + * $Id: links.js,v 1.4 2004/07/13 15:24:41 jollytoad Exp $ + */ +function updateLinks(getVars) { + var topbarLink = 'topbar.php' + getVars; + var browserLink = 'browser.php' + getVars; + var detailLink = 'redirect.php' + getVars + 'section=database'; + + parent.frames.topbar.location = topbarLink; + parent.frames.detail.location = detailLink; + parent.frames.browser.location = browserLink; +} + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/login.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/login.php new file mode 100644 index 00000000..6fa92567 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/login.php @@ -0,0 +1,70 @@ +printHeader($lang['strlogin']); + $misc->printBody(); + $misc->printTrail('root'); + + $server_info = $misc->getServerInfo($_REQUEST['server']); + + $misc->printTitle(sprintf($lang['strlogintitle'], $server_info['desc'])); + + if (isset($msg)) $misc->printMsg($msg); + + $md5_server = md5($_REQUEST['server']); +?> + +
+ $val) { + if (substr($key,0,5) == 'login') continue; + echo "\n"; + } +?> + +
+ + + + + + + + + + 1) : ?> +

/>

+ +

+ + + + +printFooter(); +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/logout.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/logout.php new file mode 100644 index 00000000..faed8dc8 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/logout.php @@ -0,0 +1,18 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/multiactionform.js b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/multiactionform.js new file mode 100644 index 00000000..1950608a --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/multiactionform.js @@ -0,0 +1,9 @@ +function checkAll(bool) { + + var inputs = document.getElementById('multi_form').getElementsByTagName('input'); + + for (var i=0; iprintTrail('schema'); + $misc->printTabs('schema','opclasses'); + $misc->printMsg($msg); + + $opclasses = $data->getOpClasses(); + + $columns = array( + 'accessmethod' => array( + 'title' => $lang['straccessmethod'], + 'field' => field('amname'), + ), + 'opclass' => array( + 'title' => $lang['strname'], + 'field' => field('opcname'), + ), + 'type' => array( + 'title' => $lang['strtype'], + 'field' => field('opcintype'), + ), + 'default' => array( + 'title' => $lang['strdefault'], + 'field' => field('opcdefault'), + 'type' => 'yesno', + ), + 'comment' => array( + 'title' => $lang['strcomment'], + 'field' => field('opccomment'), + ), + ); + + $actions = array(); + + $misc->printTable($opclasses, $columns, $actions, 'opclasses-opclasses', $lang['strnoopclasses']); + } + + /** + * Generate XML for the browser tree. + */ + function doTree() { + global $misc, $data; + + $opclasses = $data->getOpClasses(); + + // OpClass prototype: "op_class/access_method" + $proto = concat(field('opcname'),'/',field('amname')); + + $attrs = array( + 'text' => $proto, + 'icon' => 'OperatorClass', + 'toolTip'=> field('opccomment'), + ); + + $misc->printTree($opclasses, $attrs, 'opclasses'); + exit; + } + + if ($action == 'tree') doTree(); + + $misc->printHeader($lang['stropclasses']); + $misc->printBody(); + + switch ($action) { + default: + doDefault(); + break; + } + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/operators.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/operators.php new file mode 100644 index 00000000..354afa6a --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/operators.php @@ -0,0 +1,246 @@ +printTrail('operator'); + $misc->printTitle($lang['strproperties'],'pg.operator'); + $misc->printMsg($msg); + + $oprdata = $data->getOperator($_REQUEST['operator_oid']); + $oprdata->fields['oprcanhash'] = $data->phpBool($oprdata->fields['oprcanhash']); + + if ($oprdata->recordCount() > 0) { + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + + /* these field only exists in 8.2 and before in pg_catalog */ + if (isset($oprdata->fields['oprlsortop'])) { + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + } + else { + echo "\n"; + echo "\n"; + } + echo "
{$lang['strname']}", $misc->printVal($oprdata->fields['oprname']), "
{$lang['strleftarg']}", $misc->printVal($oprdata->fields['oprleftname']), "
{$lang['strrightarg']}", $misc->printVal($oprdata->fields['oprrightname']), "
{$lang['strcommutator']}", $misc->printVal($oprdata->fields['oprcom']), "
{$lang['strnegator']}", $misc->printVal($oprdata->fields['oprnegate']), "
{$lang['strjoin']}", $misc->printVal($oprdata->fields['oprjoin']), "
{$lang['strhashes']}", ($oprdata->fields['oprcanhash']) ? $lang['stryes'] : $lang['strno'], "
{$lang['strmerges']}", ($oprdata->fields['oprlsortop'] !== '0' && $oprdata->fields['oprrsortop'] !== '0') ? $lang['stryes'] : $lang['strno'], "
{$lang['strrestrict']}", $misc->printVal($oprdata->fields['oprrest']), "
{$lang['strleftsort']}", $misc->printVal($oprdata->fields['oprlsortop']), "
{$lang['strrightsort']}", $misc->printVal($oprdata->fields['oprrsortop']), "
{$lang['strlessthan']}", $misc->printVal($oprdata->fields['oprltcmpop']), "
{$lang['strgreaterthan']}", $misc->printVal($oprdata->fields['oprgtcmpop']), "
{$lang['strmerges']}", $data->phpBool($oprdata->fields['oprcanmerge']) ? $lang['stryes'] : $lang['strno'], "
\n"; + + $misc->printNavLinks(array ( + 'showall' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'operators.php', + 'urlvars' => array ( + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'] + ) + ) + ), + 'content' => $lang['strshowalloperators'] + )), 'operators-properties', get_defined_vars() + ); + } + else + doDefault($lang['strinvalidparam']); + } + + /** + * Show confirmation of drop and perform actual drop + */ + function doDrop($confirm) { + global $data, $misc; + global $lang; + + if ($confirm) { + $misc->printTrail('operator'); + $misc->printTitle($lang['strdrop'], 'pg.operator.drop'); + + echo "

", sprintf($lang['strconfdropoperator'], $misc->printVal($_REQUEST['operator'])), "

\n"; + + echo "
\n"; + echo "

\n"; + echo "

\n"; + echo "\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + else { + $status = $data->dropOperator($_POST['operator_oid'], isset($_POST['cascade'])); + if ($status == 0) + doDefault($lang['stroperatordropped']); + else + doDefault($lang['stroperatordroppedbad']); + } + + } + + /** + * Show default list of operators in the database + */ + function doDefault($msg = '') { + global $data, $conf, $misc; + global $lang; + + $misc->printTrail('schema'); + $misc->printTabs('schema','operators'); + $misc->printMsg($msg); + + $operators = $data->getOperators(); + + $columns = array( + 'operator' => array( + 'title' => $lang['stroperator'], + 'field' => field('oprname'), + 'url' => "operators.php?action=properties&{$misc->href}&", + 'vars' => array('operator' => 'oprname', 'operator_oid' => 'oid'), + ), + 'leftarg' => array( + 'title' => $lang['strleftarg'], + 'field' => field('oprleftname'), + ), + 'rightarg' => array( + 'title' => $lang['strrightarg'], + 'field' => field('oprrightname'), + ), + 'returns' => array( + 'title' => $lang['strreturns'], + 'field' => field('resultname'), + ), + 'actions' => array( + 'title' => $lang['stractions'], + ), + 'comment' => array( + 'title' => $lang['strcomment'], + 'field' => field('oprcomment'), + ), + ); + + $actions = array( + 'drop' => array( + // 'title' => $lang['strdrop'], + // 'url' => "operators.php?action=confirm_drop&{$misc->href}&", + // 'vars' => array('operator' => 'oprname', 'operator_oid' => 'oid'), + 'content' => $lang['strdrop'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'operators.php', + 'urlvars' => array ( + 'action' => 'confirm_drop', + 'operator' => field('oprname'), + 'operator_oid' => field('oid') + ) + ) + ) + ) + ); + + $misc->printTable($operators, $columns, $actions, 'operators-operators', $lang['strnooperators']); + +// TODO operators.php action=create $lang['strcreateoperator'] + } + + /** + * Generate XML for the browser tree. + */ + function doTree() { + global $misc, $data; + + $operators = $data->getOperators(); + + // Operator prototype: "type operator type" + $proto = concat(field('oprleftname'), ' ', field('oprname'), ' ', field('oprrightname')); + + $reqvars = $misc->getRequestVars('operator'); + + $attrs = array( + 'text' => $proto, + 'icon' => 'Operator', + 'toolTip'=> field('oprcomment'), + 'action' => url('operators.php', + $reqvars, + array( + 'action' => 'properties', + 'operator' => $proto, + 'operator_oid' => field('oid') + ) + ) + ); + + $misc->printTree($operators, $attrs, 'operators'); + exit; + } + + if ($action == 'tree') doTree(); + + $misc->printHeader($lang['stroperators']); + $misc->printBody(); + + switch ($action) { + case 'save_create': + if (isset($_POST['cancel'])) doDefault(); + else doSaveCreate(); + break; + case 'create': + doCreate(); + break; + case 'drop': + if (isset($_POST['cancel'])) doDefault(); + else doDrop(false); + break; + case 'confirm_drop': + doDrop(true); + break; + case 'properties': + doProperties(); + break; + default: + doDefault(); + break; + } + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugin.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugin.php new file mode 100644 index 00000000..0b3e5921 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugin.php @@ -0,0 +1,5 @@ +do_action($_REQUEST['plugin'], $_REQUEST['action']); +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/GuiControl/conf/config.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/GuiControl/conf/config.inc.php new file mode 100644 index 00000000..0e6b7ac2 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/GuiControl/conf/config.inc.php @@ -0,0 +1,484 @@ + array ( + // 'sql' => true, + // 'history' => true, + // 'find' => true, + // 'logout' => true, + ), + + /** + * Tabs Links + **/ + 'tab_links' => array ( + 'root' => array ( + // 'intro' => true, + // 'servers' => true, + ), + 'server' => array ( + // 'databases' => true, + // 'roles' => true, /* postgresql 8.1+ */ + // 'users' => true, /* postgresql <8.1 */ + // 'groups' => true, + // 'account' => true, + // 'tablespaces' => true, + // 'export' => true, + // 'reports' => true, + ), + 'database' => array ( + // 'schemas' => true, + // 'sql' => true, + // 'find' => true, + // 'variables' => true, + // 'processes' => true, + // 'locks' => true, + // 'admin' => true, + // 'privileges' => true, + // 'languages' => true, + // 'casts' => true, + // 'export' => true, + ), + 'schema' => array( + // 'tables' => true, + // 'views' => true, + // 'sequences' => true, + // 'functions' => true, + // 'fulltext' => true, + // 'domains' => true, + // 'aggregates' => true, + // 'types' => true, + // 'operators' => true, + // 'opclasses' => true, + // 'conversions' => true, + // 'privileges' => true, + // 'export' => true, + ), + 'table' => array( + // 'columns' => true, + // 'indexes' => true, + // 'constraints' => true, + // 'triggers' => true, + // 'rules' => true, + // 'admin' => true, + // 'info' => true, + // 'privileges' => true, + // 'import' => true, + // 'export' => true, + ), + 'view' => array ( + // 'columns' => true, + // 'definition' => true, + // 'rules' => true, + // 'privileges' => true, + // 'export' => true, + ), + 'function' => array( + // 'definition' => true, + // 'privileges' => true, + ), + 'aggregate' => array( + // 'definition' => true, + ), + 'role' => array( + // 'definition' => true, + ), + 'popup' => array( + // 'sql' => true, + // 'find' => true, + ), + 'column' => array( + // 'properties' => true, + // 'privileges' => true, + ), + 'fulltext' => array( + // 'ftsconfigs' => true, + // 'ftsdicts' => true, + // 'ftsparsers' => true, + ), + ), + + /** + * Trail Links + **/ + // 'trail_links' => true, /* enable/disable the whole trail */ + + /** + * Navigation Links + **/ + 'navlinks' => array( + 'aggregates-properties' => array( + // 'showall' => true, + // 'alter' => true, + // 'drop' => true, + ), + 'aggregates-aggregates' => array( + // 'create' => true, + ), + 'all_db-databases' => array( + // 'create' => true, + ), + 'colproperties-colproperties' => array( + // 'browse' => true, + // 'alter' => true, + // 'drop' => true, + ), + 'constraints-constraints' => array( + // 'addcheck' => true, + // 'adduniq' => true, + // 'addpk' => true, + // 'addfk' => true, + ), + 'display-browse' => array( + // 'back' => true, + // 'edit' => true, + // 'collapse' => true, + // 'createreport' => true, + // 'createview' => true, + // 'download' => true, + // 'insert' => true, + // 'refresh' => true, + ), + 'domains-properties' => array( + // 'drop' => true, + // 'addcheck' => true, + // 'alter' => true, + ), + 'domains-domains' => array( + // 'create' => true, + ), + 'fulltext-fulltext' => array( + // 'createconf' => true, + ), + 'fulltext-viewdicts' => array( + // 'createdict' => true, + ), + 'fulltext-viewconfig' => array( + // 'addmapping' => true, + ), + 'functions-properties' => array( + // 'showall' => true, + // 'alter' => true, + // 'drop' => true, + ), + 'functions-functions' => array( + // 'createpl' => true, + // 'createinternal' => true, + // 'createc' => true, + ), + 'groups-groups' => array( + // 'create' => true, + ), + 'groups-properties' => array( + // 'showall' => true, + ), + 'history-history' => array( + // 'refresh' => true, + // 'download' => true, + // 'clear' => true, + ), + 'indexes-indexes' => array( + // 'create' => true, + ), + 'operators-properties' => array( + // 'showall' => true, + ), + 'privileges-privileges' => array( + // 'grant' => true, + // 'revoke' => true, + // 'showalltables' => true, + // 'showallcolumns' => true, + // 'showallviews' => true, + // 'showalldatabases' => true, + // 'showallschemas' => true, + // 'showallfunctions' => true, + // 'showallsequences' => true, + // 'showalltablespaces' => true, + ), + 'reports-properties' => array( + // 'showall' => true, + // 'alter' => true, + // 'exec' => true, + ), + 'reports-reports' => array( + // 'create' => true, + ), + 'roles-account' => array( + // 'changepassword' => true, + ), + 'roles-properties' => array( + // 'showall' => true, + // 'alter' => true, + // 'drop' => true, + ), + 'roles-roles' => array( + // 'create' => true, + ), + 'rules-rules' => array( + // 'create' => true, + ), + 'schemas-schemas' => array( + // 'create' => true, + ), + 'sequences-properties' => array( + // 'alter' => true, + // 'nextval' => true, + // 'restart' => true, + // 'reset' => true, + ), + 'sequences-sequences' => array( + // 'create' => true, + ), + 'servers-servers' => array( + // 'showall' => true, + /*we cannot filter the group names in navlinks presently*/ + ), + 'sql-form' => array( + // 'back' => true, + // 'alter' => true, + // 'createreport' => true, + // 'createview' => true, + // 'download' => true, + ), + 'tables-tables' => array( + // 'create' => true, + // 'createlike' => true, + ), + 'tablespaces-tablespaces' => array( + // 'create' => true, + ), + 'tblproperties-tblproperties' => array( + // 'browse' => true, + // 'select' => true, + // 'insert' => true, + 'empty' => true, + // 'drop' => true, + // 'addcolumn' => true, + // 'alter' => true, + ), + 'triggers-triggers' => array( + // 'create' => true, + ), + 'types-properties' => array( + // 'showall' => true, + ), + 'types-types' => array( + // 'create' => true, + // 'createcomp' => true, + // 'createenum' => true, + ), + 'users-account' => array( + // 'changepassword' => true, + ), + 'users-users' => array( + // 'create' => true, + ), + 'viewproperties-definition' => array( + // 'alter' => true, + ), + 'viewproperties-viewproperties' => array( + // 'browse' => true, + // 'select' => true, + // 'drop' => true, + // 'alter' => true, + ), + 'views-views' => array( + // 'create' => true, + // 'createwiz' => true, + ), + ), + + /** + * action links + **/ + + 'actionbuttons' => array( + 'admin-admin' => array( + // 'edit' => true, + // 'delete' => true, + ), + 'aggregates-aggregates' => array( + // 'alter' => true, + // 'drop' => true, + ), + 'all_db-databases' => array( + // 'drop' => true, + // 'privileges' => true, + // 'alter' => true, + ), + 'casts-casts' => array( + // none + ), + 'colproperties-colproperties' => array( + // none + ), + 'constraints-constraints' => array( + // 'drop' => true, + ), + 'conversions-conversions' => array( + // none + ), + 'database-variables' => array( + // none + ), + 'database-processes-preparedxacts' => array( + // none + ), + 'database-processes' => array( + // 'cancel' => true, + // 'kill' => true, + ), + 'database-locks' => array( + // none + ), + 'display-browse' => array( + // TODO + // 'edit' => true, + // 'delete' => true, + ), + 'domains-properties' => array( + // 'drop' => true, + ), + 'domains-domains' => array( + // 'alter' => true, + // 'drop' => true, + ), + 'fulltext-fulltext' => array( + // 'drop' => true, + // 'alter' => true, + ), + 'fulltext-viewparsers' => array( + // none + ), + 'fulltext-viewdicts' => array( + // 'drop' => true, + // 'alter' => true, + ), + 'fulltext-viewconfig' => array( + // 'multiactions' => true, + // 'drop' => true, + // 'alter' => true, + ), + 'functions-functions' => array( + // 'multiactions' => true, + // 'alter' => true, + // 'drop' => true, + // 'privileges' => true, + ), + 'groups-members' => array( + // 'drop' => true, + ), + 'groups-properties' => array( + // 'drop' => true, + ), + 'history-history' => array( + // 'run' => true, + // 'remove' => true, + ), + 'indexes-indexes' => array( + // 'cluster' => true, + // 'reindex' => true, + // 'drop' => true, + ), + 'info-referrers' => array( + // 'properties' => true, + ), + 'info-parents' => array( + // 'properties' => true, + ), + 'info-children' => array( + // 'properties' => true, + ), + 'languages-languages' => array( + // none + ), + 'opclasses-opclasses' => array( + // none + ), + 'operators-operators' => array( + // 'drop' => true, + ), + 'reports-reports' => array( + // 'run' => true, + // 'edit' => true, + // 'drop' => true, + ), + 'roles-roles' => array( + // 'alter' => true, + // 'drop' => true, + ), + 'rules-rules' => array( + // 'drop' => true, + ), + 'schemas-schemas' => array( + // 'multiactions' => true, + // 'drop' => true, + // 'privileges' => true, + // 'alter' => true, + ), + 'sequences-sequences' => array( + // 'multiactions' => true, + // 'drop' => true, + // 'privileges' => true, + // 'alter' => true, + ), + 'servers-servers' => array( + // 'logout' => true, + ), + 'tables-tables' => array( + // 'multiactions' => true, + // 'browse' => true, + // 'select' => true, + // 'insert' => true, + // 'empty' => true, + // 'alter' => true, + // 'drop' => true, + // 'vacuum' => true, + // 'analyze' => true, + // 'reindex' => true, + ), + 'tablespaces-tablespaces' => array( + // 'drop' => true, + // 'privileges' => true, + // 'alter' => true, + ), + 'tblproperties-tblproperties' => array( + // 'browse' => true, + // 'alter' => true, + // 'privileges' => true, + // 'drop' => true, + ), + 'triggers-triggers' => array( + // 'alter' => true, + // 'drop' => true, + // 'enable' => true, + // 'disable' => true, + ), + 'types-properties' => array( + // none + ), + 'types-types' => array( + // 'drop' => true, + ), + 'users-users' => array( + // 'alter' => true, + // 'drop' => true, + ), + 'viewproperties-viewproperties' => array( + // 'alter' => true, + ), + 'views-views' => array( + //'multiactions' => true, + // 'browse' => true, + // 'select' => true, + //'alter' => true, + //'drop' => true, + ), + ), +); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/GuiControl/plugin.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/GuiControl/plugin.php new file mode 100644 index 00000000..44669362 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/GuiControl/plugin.php @@ -0,0 +1,145 @@ + array('function1', 'function2'). + * + * Example: + * $hooks = array( + * 'toplinks' => array('add_plugin_toplinks'), + * 'tabs' => array('add_tab_entry'), + * 'action_buttons' => array('add_more_an_entry') + * ); + * + * @return $hooks + */ + function get_hooks() { + $hooks = array( + 'toplinks' => array('filer_toplinks'), + 'tabs' => array('filter_tabs'), + 'trail' => array('filter_trail'), + 'navlinks' => array('filter_navlinks'), + 'actionbuttons' => array('filter_actionbuttons'), + 'tree' => array('filter_tree') + ); + return $hooks; + } + + /** + * This method returns the functions that will be used as actions. + * To do include a function that will be used as action, just put in the $actions array the follwing code: + * + * $actions = array( + * 'show_page', + * 'show_error', + * ); + * + * @return $actions + */ + function get_actions() { + $actions = array( + 'filer_toplinks', + 'filter_tabs', + 'filter_trail', + 'filter_navlinks', + 'filter_actionbuttons', + 'filter_tree', + ); + return $actions; + } + + function filer_toplinks(&$f_params) { + if (!isset($this->conf['top_links'])) + return; + + $top_links = &$f_params['toplinks']; + + foreach ($this->conf['top_links'] as $link => $enabled) + if (isset ($top_links[$link]) + && ($enabled === false) + ) + unset($top_links[$link]); + + return; + } + + function filter_tabs(&$f_params) { + $section = $f_params['section']; + $tabs = &$f_params['tabs']; + + if (!isset($this->conf['tab_links'][$section])) + return; + + foreach ($this->conf['tab_links'][$section] as $link => $enabled) + if (isset ($tabs[$link]) + && ($enabled === false) + ) + unset($tabs[$link]); + return; + } + + function filter_trail(&$f_params) { + if (!isset($this->conf['trail_links'])) + return; + + if ($this->conf['trail_links'] === false) + $f_params['trail'] = array(); + + return; + } + + function filter_navlinks(&$f_params) { + $place = $f_params['place']; + $navlinks = &$f_params['navlinks']; + + if (! isset($this->conf['navlinks'][$place])) + return; + + foreach ($this->conf['navlinks'][$place] as $link => $enabled) + if (isset ($navlinks[$link]) + && ($enabled === false) + ) + unset($navlinks[$link]); + return; + } + + function filter_actionbuttons(&$f_params) { + $place = $f_params['place']; + $actions = &$f_params['actionbuttons']; + + if (! isset($this->conf['actionbuttons'][$place])) + return; + + foreach ($this->conf['actionbuttons'][$place] as $link => $enabled) + if (isset ($actions[$link]) + && ($enabled === false) + ) + unset($actions[$link]); + return; + } + + function filter_tree() { + return; + } +} +?> \ No newline at end of file diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/INSTALL b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/INSTALL new file mode 100644 index 00000000..263f308b --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/INSTALL @@ -0,0 +1,13 @@ +phpPgAdmin Report Plugin Installation Guide +------------------------------------------- +1. Report Plugin activation + + Open conf/config.inc.php and add the 'Report' value in the $conf['plugins'] array: + + $conf['plugins'] = array('Report'); + +2. Set up the reports database. + + If you want to enable reports (which are a useful feature) then go to + the 'sql' subdirectory and view the SQL script for your database. It + will contain instructions on how to set up the reports database. diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/README b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/README new file mode 100644 index 00000000..071c199a --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/README @@ -0,0 +1,24 @@ +About the phpPgAdmin Report Plugin +---------------------------------- + +The Report plugin is the old report feature of phpPgAdmins removed in +version 5.1 and refactored as a plugin. + +It enables you to create and save ad-hoc SQL queries as reports which +can be easily be executed from within phpPgAdmin. + +To save reports, this plugin requires the creation of a dedicated +database containing a single table; see the INSTALL file and the +sql/reports.sql file for details. + +Following installation, an icon for the Report plugin will appear +on the main overview page for each connected server. This provides +an overview of all reports saved for the entire server, and enables +executionm, editing and deletion of reports, as well as creation of +new reports from scratch. + +New reports can also be created while browsing table and view data, +a "create report" link is provided at the bottom of each data page +which pre-populates the report with the SQL used to generate the +data. + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/classes/Reports.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/classes/Reports.php new file mode 100644 index 00000000..19327b48 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/classes/Reports.php @@ -0,0 +1,128 @@ +conf = $conf; + + // Check to see if the reports database exists + $rs = $data->getDatabase($this->conf['reports_db']); + if ($rs->recordCount() != 1) $status = -1; + else { + // Create a new database access object. + $this->driver = $misc->getDatabaseAccessor($this->conf['reports_db']); + // Reports database should have been created in public schema + $this->driver->setSchema($this->conf['reports_schema']); + $status = 0; + } + } + + /** + * Finds all reports + * @return A recordset + */ + function getReports() { + global $misc; + // Filter for owned reports if necessary + if ($this->conf['owned_reports_only']) { + $server_info = $misc->getServerInfo(); + $filter['created_by'] = $server_info['username']; + $ops = array('created_by' => '='); + } + else $filter = $ops = array(); + + $sql = $this->driver->getSelectSQL($this->conf['reports_table'], + array('report_id', 'report_name', 'db_name', 'date_created', 'created_by', 'descr', 'report_sql', 'paginate'), + $filter, $ops, array('db_name' => 'asc', 'report_name' => 'asc')); + + return $this->driver->selectSet($sql); + } + + /** + * Finds a particular report + * @param $report_id The ID of the report to find + * @return A recordset + */ + function getReport($report_id) { + $sql = $this->driver->getSelectSQL($this->conf['reports_table'], + array('report_id', 'report_name', 'db_name', 'date_created', 'created_by', 'descr', 'report_sql', 'paginate'), + array('report_id' => $report_id), array('report_id' => '='), array()); + + return $this->driver->selectSet($sql); + } + + /** + * Creates a report + * @param $report_name The name of the report + * @param $db_name The name of the database + * @param $descr The comment on the report + * @param $report_sql The SQL for the report + * @param $paginate The report should be paginated + * @return 0 success + */ + function createReport($report_name, $db_name, $descr, $report_sql, $paginate) { + global $misc; + $server_info = $misc->getServerInfo(); + $temp = array( + 'report_name' => $report_name, + 'db_name' => $db_name, + 'created_by' => $server_info['username'], + 'report_sql' => $report_sql, + 'paginate' => $paginate ? 'true' : 'false', + ); + if ($descr != '') $temp['descr'] = $descr; + + return $this->driver->insert($this->conf['reports_table'], $temp); + } + + /** + * Alters a report + * @param $report_id The ID of the report + * @param $report_name The name of the report + * @param $db_name The name of the database + * @param $descr The comment on the report + * @param $report_sql The SQL for the report + * @param $paginate The report should be paginated + * @return 0 success + */ + function alterReport($report_id, $report_name, $db_name, $descr, $report_sql, $paginate) { + global $misc; + $server_info = $misc->getServerInfo(); + $temp = array( + 'report_name' => $report_name, + 'db_name' => $db_name, + 'created_by' => $server_info['username'], + 'report_sql' => $report_sql, + 'paginate' => $paginate ? 'true' : 'false', + 'descr' => $descr + ); + + return $this->driver->update($this->conf['reports_table'], $temp, + array('report_id' => $report_id)); + } + + /** + * Drops a report + * @param $report_id The ID of the report to drop + * @return 0 success + */ + function dropReport($report_id) { + return $this->driver->delete($this->conf['reports_table'], array('report_id' => $report_id)); + } + + } +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/conf/config.inc.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/conf/config.inc.php new file mode 100644 index 00000000..c036544e --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/conf/config.inc.php @@ -0,0 +1,12 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/images/Report.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/images/Report.png new file mode 100644 index 0000000000000000000000000000000000000000..f9158b9a02d899fa802621243df3d0b64cf3b8d0 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G_YAk0{w5<>&kwEkwaWrmT&d!4-5>9N}eu`Ar`%NCvEg%4is?p|F-s~ z#NuiH8pX6CesI^dYz<{vX5iYjVnIUYWF^N=wk-mGdKEHTM9TiPi=CYPTPIBTaMYS< zd^~4z&&jlDwg_az-#3!t`;q(gckQC{mVXvnGZ-Gouvk!g^>J;E2FoHR#?}ejT0D1X z98&RVe5$f6a(!rH)SsoF&Az=comaHde%@Q3=b8>&Hgn!5rCB^TFy7N*o}6^7so3Yt zhq#Jhu>_&t%g^uRdDp*v6N7%?=_9kXl?W}qeiyajwQ!ixar7%8C zGW^ba%JY+ceuCPq-mm%5!OZz?sT)nE@2&g6tiQPK=d9BUE=QbV3iIYHU+cT4MP*4t xYeSRAqYAzCYeS40-krRdXnOruWGSN^L&mFroJukae*goJ!PC{xWt~$(698}>rz-#e literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/images/Reports.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/images/Reports.png new file mode 100644 index 0000000000000000000000000000000000000000..4a403e070c32a1be865b83d74dac2e83cf9fab11 GIT binary patch literal 339 zcmV-Z0j&OsP)`^WGXjQ=z6va>Lh z=VgH`z-a)(*I$1aRxMk~aQ^sVoK66`^gp^w;0F8y+62-}s!QMofE1DA61V|>paziY z5)2n0yTrBlC{`D&YBazM#J_+4VYp;@lL=7#FIemkkp2x~{{gZ8VH)t~-(L)uMAn_b z>Vm~JI+zCVbFgE$WNx)C*fzNBAo>r4MmJ!3ZBcF}x=WHhF3Ib?h1CVqin*~HfbNn-)!Ja&{( diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/arabic.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/arabic.php new file mode 100644 index 00000000..32a34c31 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/arabic.php @@ -0,0 +1,23 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/catalan.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/catalan.php new file mode 100644 index 00000000..0f5c82c3 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/catalan.php @@ -0,0 +1,23 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/chinese-sim.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/chinese-sim.php new file mode 100644 index 00000000..aedf4d13 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/chinese-sim.php @@ -0,0 +1,22 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/chinese-tr.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/chinese-tr.php new file mode 100644 index 00000000..d5bfbc14 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/chinese-tr.php @@ -0,0 +1,23 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/chinese-utf8-zh_CN.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/chinese-utf8-zh_CN.php new file mode 100644 index 00000000..834a93b8 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/chinese-utf8-zh_CN.php @@ -0,0 +1,23 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/chinese-utf8-zh_TW.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/chinese-utf8-zh_TW.php new file mode 100644 index 00000000..907b2342 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/chinese-utf8-zh_TW.php @@ -0,0 +1,23 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/czech.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/czech.php new file mode 100644 index 00000000..ff6f539c --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/czech.php @@ -0,0 +1,23 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/danish.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/danish.php new file mode 100644 index 00000000..7d5df866 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/danish.php @@ -0,0 +1,25 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/dutch.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/dutch.php new file mode 100644 index 00000000..aa541fbc --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/dutch.php @@ -0,0 +1,21 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/english.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/english.php new file mode 100644 index 00000000..ce6e6f77 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/english.php @@ -0,0 +1,24 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/french.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/french.php new file mode 100644 index 00000000..ac1f5fdb --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/french.php @@ -0,0 +1,24 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/galician.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/galician.php new file mode 100644 index 00000000..87da669b --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/galician.php @@ -0,0 +1,23 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/german.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/german.php new file mode 100644 index 00000000..5f5cec5a --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/german.php @@ -0,0 +1,23 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/greek.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/greek.php new file mode 100644 index 00000000..78bde375 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/greek.php @@ -0,0 +1,24 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/hebrew.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/hebrew.php new file mode 100644 index 00000000..d369f066 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/hebrew.php @@ -0,0 +1,23 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/hungarian.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/hungarian.php new file mode 100644 index 00000000..bb94af95 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/hungarian.php @@ -0,0 +1,23 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/italian.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/italian.php new file mode 100644 index 00000000..17716eaa --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/italian.php @@ -0,0 +1,23 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/japanese.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/japanese.php new file mode 100644 index 00000000..ec0dad25 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/japanese.php @@ -0,0 +1,23 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/lithuanian.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/lithuanian.php new file mode 100644 index 00000000..2f4ddd5e --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/lithuanian.php @@ -0,0 +1,23 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/mongol.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/mongol.php new file mode 100644 index 00000000..0b171dcd --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/mongol.php @@ -0,0 +1,22 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/polish.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/polish.php new file mode 100644 index 00000000..ed5e0475 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/polish.php @@ -0,0 +1,23 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/portuguese-br.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/portuguese-br.php new file mode 100644 index 00000000..d686d23e --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/portuguese-br.php @@ -0,0 +1,23 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/portuguese-pt.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/portuguese-pt.php new file mode 100644 index 00000000..769a2c0a --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/portuguese-pt.php @@ -0,0 +1,23 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/romanian.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/romanian.php new file mode 100644 index 00000000..c4ad1599 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/romanian.php @@ -0,0 +1,23 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/russian.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/russian.php new file mode 100644 index 00000000..2082be2a --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/russian.php @@ -0,0 +1,23 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/slovak.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/slovak.php new file mode 100644 index 00000000..fa55a36b --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/slovak.php @@ -0,0 +1,23 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/spanish.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/spanish.php new file mode 100644 index 00000000..7499d2f0 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/spanish.php @@ -0,0 +1,23 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/swedish.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/swedish.php new file mode 100644 index 00000000..8936ea6c --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/swedish.php @@ -0,0 +1,25 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/turkish.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/turkish.php new file mode 100644 index 00000000..278bd9fa --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/turkish.php @@ -0,0 +1,23 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/ukrainian.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/ukrainian.php new file mode 100644 index 00000000..16060472 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/lang/ukrainian.php @@ -0,0 +1,23 @@ + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/plugin.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/plugin.php new file mode 100644 index 00000000..b37d8161 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/plugin.php @@ -0,0 +1,807 @@ +lang and $this->conf */ + parent::__construct($language); + + /* default values */ + if (! isset($this->conf['reports_db'])) { + $this->conf['reports_db'] = 'phppgadmin'; + } + if (! isset($this->conf['reports_schema'])) { + $this->conf['reports_schema'] = 'public'; + } + if (! isset($this->conf['reports_table'])) { + $this->conf['reports_table'] = 'ppa_reports'; + } + if (! isset($this->conf['owned_reports_only'])) { + $this->conf['owned_reports_only'] = false; + } + } + + function get_reportsdb() { + if ($this->_reportsdb === null) { + $status = 0; + $this->_reportsdb = new Reports($this->conf, $status); + + if ($status !== 0) { + global $misc; + $misc->printHeader($this->lang['strreports']); + $misc->printBody(); + $misc->printTrail('server'); + $misc->printTabs('server','reports'); + $misc->printMsg($this->lang['strnoreportsdb']); + $misc->printFooter(); + exit; + } + } + + return $this->_reportsdb; + } + + /** + * This method returns the functions that will hook in the phpPgAdmin core. + * To do include a function just put in the $hooks array the follwing code: + * 'hook' => array('function1', 'function2'). + * + * Example: + * $hooks = array( + * 'toplinks' => array('add_plugin_toplinks'), + * 'tabs' => array('add_tab_entry'), + * 'action_buttons' => array('add_more_an_entry') + * ); + * + * @return $hooks + */ + function get_hooks() { + $hooks = array( + 'tabs' => array('add_plugin_tabs'), + 'trail' => array('add_plugin_trail'), + 'navlinks' => array('plugin_navlinks') + ); + return $hooks; + } + + /** + * This method returns the functions that will be used as actions. + * To do include a function that will be used as action, just put in the $actions array the follwing code: + * + * $actions = array( + * 'show_page', + * 'show_error', + * ); + * + * @return $actions + */ + function get_actions() { + $actions = array( + 'save_edit', + 'edit', + 'properties', + 'save_create', + 'create', + 'drop', + 'confirm_drop', + 'execute', + 'default_action' + ); + return $actions; + } + + /** + * Add plugin in the tabs + * @param $plugin_functions_parameters + */ + function add_plugin_tabs(&$plugin_functions_parameters) { + global $misc; + + $tabs = &$plugin_functions_parameters['tabs']; + + if ($plugin_functions_parameters['section'] == 'server') { + $tabs['report_plugin'] = array ( + 'title' => $this->lang['strplugindescription'], + 'url' => 'plugin.php', + 'urlvars' => array( + 'subject' => 'server', + 'action' => 'default_action', + 'plugin' => $this->name + ), + 'hide' => false, + 'icon' => $this->icon('Report') + ); + } + + if ($plugin_functions_parameters['section'] == 'report') { + $tabs['report_plugin'] = array ( + 'title' => $this->lang['strplugindescription'], + 'url' => 'plugin.php', + 'urlvars' => array( + 'subject' => 'server', + 'action' => 'default_action', + 'plugin' => $this->name + ), + 'hide' => false, + 'icon' => $this->icon('Report') + ); + } + } + + /** + * Add plugin in the trail + * @param $plugin_functions_parameters + */ + function add_plugin_trail(&$plugin_functions_parameters) { + global $misc; + $trail = &$plugin_functions_parameters['trail']; + $done = false; + $subject = ''; + if (isset($_REQUEST['subject'])) { + $subject = $_REQUEST['subject']; + } + + $action = ''; + if (isset($_REQUEST['action'])) { + $action = $_REQUEST['action']; + } + + if (isset($_REQUEST['plugin']) and $_REQUEST['plugin'] == 'Report') { + $url = array ( + 'url' => 'plugin.php', + 'urlvars' => array ( + 'plugin' => $this->name, + 'action' => 'default_action' + ) + ); + $trail['report_plugin'] = array ( + 'title' => $this->lang['strreport'], + 'text' => $this->lang['strreport'], + 'url' => $misc->getActionUrl($url, $_REQUEST, null, false), + 'icon' => $this->icon('Reports') + ); + } + + if (isset($_REQUEST['plugin']) + and $_REQUEST['plugin'] == 'Report' + and $action != 'default_action' + and in_array($action, $this->get_actions()) + ) { + + $url = array ( + 'url' => 'plugin.php', + 'urlvars' => array ( + 'plugin' => $this->name, + 'action' => 'properties', + 'report_id' => field('report_id'), + ) + ); + + if (isset($_REQUEST['report'])) + $url['urlvars']['report'] = field('report'); + + $trail['report_plugin_name'] = array ( + 'title' => $this->lang['strreport'], + 'text' => $this->lang['strreport'], + 'url' => $misc->getActionUrl($url, $_REQUEST, null, false), + 'icon' => $this->icon('Report') + ); + + if (isset($_REQUEST['report'])) + $trail['report_plugin_name']['text'] = $_REQUEST['report']; + + } + } + + /** + * Add plugin in the navlinks + * @param $plugin_functions_parameters + */ + function plugin_navlinks(&$params) { + global $misc, $lang; + + if ( + ($params['place'] == 'sql-form' + or $params['place'] == 'display-browse') + and ( isset($params['env']['rs']) + and is_object($params['env']['rs']) + and $params['env']['rs']->recordCount() > 0)) + { + if ( ! (isset($_REQUEST['plugin']) + and $_REQUEST['plugin'] == $this->name) + ) { + /* ResultSet doesn't come from a plugin: + * show a create report link. */ + $params['navlinks']['report_link'] = array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'plugin.php', + 'urlvars' => array ( + 'plugin' => $this->name, + 'action' => 'create', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + ) + ) + ), + 'content' => $this->lang['strcreatereport'] + ); + + if (isset($_REQUEST['paginate'])) + $params['navlinks']['report_link']['attr']['href']['urlvars']['paginate'] + = $_REQUEST['paginate']; + + if (!empty($_SESSION['sqlquery'])) { + $params['navlinks']['report_link']['attr']['href']['urlvars']['fromsql'] + = 1; + } + else { + if (isset($_REQUEST['subject']) + and isset($_REQUEST[$_REQUEST['subject']])) + { + $params['navlinks']['report_link']['attr']['href']['urlvars']['subject'] + = $_REQUEST['subject']; + $params['navlinks']['report_link']['attr']['href']['urlvars'][$_REQUEST['subject']] + = $_REQUEST[$_REQUEST['subject']]; + + $params['navlinks']['report_link']['attr']['href']['urlvars']['sortkey'] + = isset($_REQUEST['sortkey']) ? $_REQUEST['sortkey'] : ''; + + $params['navlinks']['report_link']['attr']['href']['urlvars']['sortdir'] + = isset($_REQUEST['sortdir']) ? $_REQUEST['sortdir'] : ''; + } + else { + unset($params['navlinks']['report_link']); + } + } + } + else { + /* ResultSet comes from a plugin: + * show a edit report link. */ + $params['navlinks']['report_link'] = array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'plugin.php', + 'urlvars' => array ( + 'plugin' => $this->name, + 'action' => 'edit', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'report_id' => $_REQUEST['report_id'] + ) + ) + ), + 'content' => $this->lang['streditreport'] + ); + + /* edit collapse link to add report related vars */ + $params['navlinks']['collapse']['attr']['href']['urlvars'] + ['plugin'] = $this->name; + $params['navlinks']['collapse']['attr']['href']['urlvars'] + ['report_id'] = $_REQUEST['report_id']; + $params['navlinks']['collapse']['attr']['href']['urlvars'] + ['report'] = $_REQUEST['report']; + + /* edit refresh link to add report related vars */ + $params['navlinks']['refresh']['attr']['href']['urlvars'] + ['plugin'] = $this->name; + $params['navlinks']['refresh']['attr']['href']['urlvars'] + ['report_id'] = $_REQUEST['report_id']; + $params['navlinks']['refresh']['attr']['href']['urlvars'] + ['report'] = $_REQUEST['report']; + + if (isset($_REQUEST['action'])) { + $params['navlinks']['collapse']['attr']['href']['urlvars'] + ['action'] = $_REQUEST['action']; + + $params['navlinks']['refresh']['attr']['href']['urlvars'] + ['action'] = $_REQUEST['action']; + } + } + + if (isset($_REQUEST['schema'])) + $params['navlinks']['report_link']['attr']['href']['urlvars']['schema'] + = $_REQUEST['schema']; + } + } + + function get_subject_params() { + $vars = array(); + + if (! isset($_REQUEST['action'])) + return $vars; + + $action = $_REQUEST['action']; + + switch ($action) { + case 'execute': + $vars = array( + 'report_id' => $_REQUEST['report_id'], + 'report' => $_REQUEST['report'], + 'action' => 'properties' /*defaults to properties*/ + ); + if (isset($_REQUEST['back'])) + $vars['action'] = $_REQUEST['back']; + break; + } + + return $vars; + } + + function edit($msg = '') { + global $data, $misc, $lang; + + $reportsdb = $this->get_reportsdb(); + + $misc->printHeader($this->lang['strreports']); + $misc->printBody(); + $misc->printTrail('server'); + $misc->printTabs('server', 'report_plugin'); + $misc->printMsg($msg); + + // If it's a first, load then get the data from the database + $report = $reportsdb->getReport($_REQUEST['report_id']); + + if ($_REQUEST['action'] == 'edit') { + $_POST['report_name'] = $report->fields['report_name']; + $_POST['db_name'] = $report->fields['db_name']; + $_POST['descr'] = $report->fields['descr']; + $_POST['report_sql'] = $report->fields['report_sql']; + if ($report->fields['paginate'] == 't') { + $_POST['paginate'] = true; + } + } + + // Get a list of available databases + $databases = $data->getDatabases(); + + $_REQUEST['report'] = $report->fields['report_name']; + + echo "
name}\" method=\"post\">\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "
{$lang['strname']}_maxNameLen}\" value=\"", + htmlspecialchars($_POST['report_name']), "\" />
{$lang['strdatabase']}
{$lang['strcomment']}
{$lang['strsql']}
\n"; + echo "\n"; + echo "

\n"; + echo "\n"; + echo "

\n"; + echo "fields['report_id']}\" />\n"; + echo "
\n"; + $misc->printFooter(); + } + + /** + * Saves changes to a report + */ + function save_edit() { + $reportsdb = $this->get_reportsdb(); + + if (isset($_REQUEST['cancel'])) { + $this->default_action(); + exit; + } + + if (!isset($_POST['report_name'])) $_POST['report_name'] = ''; + if (!isset($_POST['db_name'])) $_POST['db_name'] = ''; + if (!isset($_POST['descr'])) $_POST['descr'] = ''; + if (!isset($_POST['report_sql'])) $_POST['report_sql'] = ''; + + // Check that they've given a name and a definition + if ($_POST['report_name'] == '') { + $this->edit($this->lang['strreportneedsname']); + } elseif ($_POST['report_sql'] == '') { + $this->edit($this->lang['strreportneedsdef']); + } else { + $status = $reportsdb->alterReport($_POST['report_id'], $_POST['report_name'], $_POST['db_name'], + $_POST['descr'], $_POST['report_sql'], isset($_POST['paginate'])); + if ($status == 0) + $this->default_action($this->lang['strreportcreated']); + else + $this->edit($this->lang['strreportcreatedbad']); + } + } + + /** + * Display read-only properties of a report + */ + function properties($msg = '') { + global $data, $reportsdb, $misc; + global $lang; + + $reportsdb = $this->get_reportsdb(); + + $misc->printHeader($this->lang['strreports']); + $misc->printBody(); + $misc->printTrail('server'); + $misc->printTabs('server', 'report_plugin'); + $misc->printMsg($msg); + + $report = $reportsdb->getReport($_REQUEST['report_id']); + + $_REQUEST['report'] = $report->fields['report_name']; + + if ($report->recordCount() == 1) { + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "
{$lang['strname']}", $misc->printVal($report->fields['report_name']), "
{$lang['strdatabase']}", $misc->printVal($report->fields['db_name']), "
{$lang['strcomment']}", $misc->printVal($report->fields['descr']), "
{$lang['strpaginate']}", $misc->printVal($report->fields['paginate'], 'yesno', array('align' => 'left')), "
{$lang['strsql']}", $misc->printVal($report->fields['report_sql']), "
\n"; + } + else echo "

{$lang['strinvalidparam']}

\n"; + + $urlvars = array ( + 'plugin' => $this->name, + 'server' => $_REQUEST['server'] + ); + if (isset($_REQUEST['schema'])) $urlvars['schema'] = $_REQUEST['schema']; + if (isset($_REQUEST['schema'])) $urlvars['database'] = $_REQUEST['schema']; + + $navlinks = array ( + 'showall' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'plugin.php', + 'urlvars' => array_merge($urlvars, array('action' => 'default_action')) + ) + ), + 'content' => $this->lang['strshowallreports'] + ), + 'edit' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'plugin.php', + 'urlvars' => array_merge($urlvars, array( + 'action' => 'edit', + 'report_id' => $report->fields['report_id']) + ) + ) + ), + 'content' => $lang['stredit'] + ), + 'execute' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'plugin.php', + 'urlvars' => array_merge($urlvars, array( + 'action' => 'execute', + 'report' => $report->fields['report_name'], + 'database' => $report->fields['db_name'], + 'report_id' => $report->fields['report_id'], + 'paginate' => $report->fields['paginate'], + 'nohistory' => 't', + 'return' => 'plugin', + 'back' => 'properties' + )) + ) + ), + 'content' => $lang['strexecute'] + ) + ); + $misc->printNavLinks($navlinks, 'reports-properties'); + } + + /** + * Displays a screen where they can enter a new report + */ + function create($msg = '') { + global $data, $reportsdb, $misc; + global $lang; + + $misc->printHeader($this->lang['strreports']); + $misc->printBody(); + $misc->printTrail('server'); + $misc->printTabs('server', 'report_plugin'); + $misc->printMsg($msg); + + if (!isset($_REQUEST['report_name'])) $_REQUEST['report_name'] = ''; + if (!isset($_REQUEST['db_name'])) $_REQUEST['db_name'] = ''; + if (!isset($_REQUEST['descr'])) $_REQUEST['descr'] = ''; + if (!isset($_REQUEST['report_sql'])) { + // Set the query from session if linked from a user query result + if (isset($_REQUEST['fromsql']) and $_REQUEST['fromsql'] == 1 ) { + $_REQUEST['report_sql'] = $_SESSION['sqlquery']; + } + else { + $_REQUEST['sortkey'] = isset($_REQUEST['sortkey']) ? $_REQUEST['sortkey'] : ''; + if (preg_match('/^[0-9]+$/', $_REQUEST['sortkey']) && $_REQUEST['sortkey'] > 0) $orderby = array($_REQUEST['sortkey'] => $_REQUEST['sortdir']); + else $orderby = array(); + + $subject = isset($_REQUEST['subject']) && isset($_REQUEST[$_REQUEST['subject']]) + ? $_REQUEST[$_REQUEST['subject']] + : ''; + + $_REQUEST['report_sql'] = $data->getSelectSQL($subject, array(), array(), array(), $orderby); + } + } + + if (isset($_REQUEST['database'])) { + $_REQUEST['db_name'] = $_REQUEST['database']; + unset($_REQUEST['database']); + $misc->setForm(); + } + + $databases = $data->getDatabases(); + + echo "
name}\" method=\"post\">\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "
{$lang['strname']}_maxNameLen}\" value=\"", + htmlspecialchars($_REQUEST['report_name']), "\" />
{$lang['strdatabase']}
{$lang['strcomment']}
{$lang['strsql']}
\n"; + echo "\n"; + echo "

\n"; + echo "\n"; + echo "

\n"; + echo "
\n"; + $misc->printFooter(); + } + + /** + * Actually creates the new report in the database + */ + function save_create() { + if (isset($_REQUEST['cancel'])) { + $this->default_action(); + exit; + } + + $reportsdb = $this->get_reportsdb(); + + if (!isset($_POST['report_name'])) $_POST['report_name'] = ''; + if (!isset($_POST['db_name'])) $_POST['db_name'] = ''; + if (!isset($_POST['descr'])) $_POST['descr'] = ''; + if (!isset($_POST['report_sql'])) $_POST['report_sql'] = ''; + + // Check that they've given a name and a definition + if ($_POST['report_name'] == '') $this->create($this->lang['strreportneedsname']); + elseif ($_POST['report_sql'] == '') $this->create($this->lang['strreportneedsdef']); + else { + $status = $reportsdb->createReport($_POST['report_name'], $_POST['db_name'], + $_POST['descr'], $_POST['report_sql'], isset($_POST['paginate'])); + if ($status == 0) + $this->default_action($this->lang['strreportcreated']); + else + $this->create($this->lang['strreportcreatedbad']); + } + } + + /** + * Show confirmation of drop and perform actual drop + */ + function drop() { + global $reportsdb, $misc; + global $lang; + + $confirm = false; + if (isset($_REQUEST['confirm'])) $confirm = true; + + $reportsdb = $this->get_reportsdb(); + + $misc->printHeader($this->lang['strreports']); + $misc->printBody(); + + if (isset($_REQUEST['cancel'])) { + $this->default_action(); + exit; + } + + if ($confirm) { + // Fetch report from the database + $report = $reportsdb->getReport($_REQUEST['report_id']); + + $_REQUEST['report'] = $report->fields['report_name']; + $misc->printTrail('report'); + $misc->printTitle($lang['strdrop']); + + echo "

", sprintf($this->lang['strconfdropreport'], $misc->printVal($report->fields['report_name'])), "

\n"; + + echo "
name}\" method=\"post\">\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "
\n"; + } else { + $status = $reportsdb->dropReport($_POST['report_id']); + if ($status == 0) + $this->default_action($this->lang['strreportdropped']); + else + $this->default_action($this->lang['strreportdroppedbad']); + } + + $misc->printFooter(); + } + + function execute() { + global $misc, $data; + + $reportsdb = $this->get_reportsdb(); + + $report = $reportsdb->getReport($_REQUEST['report_id']); + + $_POST['query'] = $report->fields['report_sql']; + + include('./sql.php'); + } + + /** + * Show default list of reports in the database + */ + function default_action($msg = '') { + global $data, $misc, $lang; + + $reportsdb = $this->get_reportsdb(); + + $misc->printHeader($this->lang['strreports']); + $misc->printBody(); + $misc->printTrail('server'); + $misc->printTabs('server', 'report_plugin'); + $misc->printMsg($msg); + + $reports = $reportsdb->getReports(); + + $columns = array( + 'report' => array( + 'title' => $this->lang['strreport'], + 'field' => field('report_name'), + 'url' => "plugin.php?plugin={$this->name}&action=properties&{$misc->href}&", + 'vars' => array( + 'report_id' => 'report_id', + 'report' => 'report_name' + ), + ), + 'database' => array( + 'title' => $lang['strdatabase'], + 'field' => field('db_name'), + ), + 'created' => array( + 'title' => $lang['strcreated'], + 'field' => field('date_created'), + ), + 'paginate' => array( + 'title' => $lang['strpaginate'], + 'field' => field('paginate'), + 'type' => 'yesno', + ), + 'actions' => array( + 'title' => $lang['stractions'], + ), + 'comment' => array( + 'title' => $lang['strcomment'], + 'field' => field('descr'), + ), + ); + + //$return_url = urlencode("plugin.php?plugin={$this->name}&{$misc->href}"); + $urlvars = $misc->getRequestVars(); + + $actions = array( + 'run' => array ( + 'content' => $lang['strexecute'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'plugin.php', + 'urlvars' => array_merge($urlvars, array ( + 'plugin' => $this->name, + 'action' => 'execute', + 'report' => field('report_name'), + 'database' => field('db_name'), + 'report_id' => field('report_id'), + 'paginate' => field('paginate'), + 'nohistory' => 't', + 'return' => 'plugin', + 'back' => 'default_action' + )) + ) + ) + ), + 'edit' => array ( + 'content' => $lang['stredit'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'plugin.php', + 'urlvars' => array_merge($urlvars, array ( + 'plugin' => $this->name, + 'action' => 'edit', + 'report_id' => field('report_id'), + )) + ) + ) + ), + 'drop' => array( + 'content' => $lang['strdrop'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'plugin.php', + 'urlvars' => array_merge($urlvars, array ( + 'plugin' => $this->name, + 'action' => 'drop', + 'confirm' => 'true', + 'report_id' => field('report_id'), + )) + ) + ) + ), + ); + + $misc->printTable($reports, $columns, $actions, 'reports-reports', $this->lang['strnoreports']); + + $navlinks = array ( + array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'plugin.php', + 'urlvars' => array ( + 'plugin' => $this->name, + 'server' => field('server'), + 'action' => 'create') + ) + ), + 'content' => $this->lang['strcreatereport'] + ) + ); + $misc->printNavLinks($navlinks, 'reports-reports'); + $misc->printFooter(); + } +} +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/sql/reports-pgsql.sql b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/sql/reports-pgsql.sql new file mode 100644 index 00000000..1272a762 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/plugins/Report/sql/reports-pgsql.sql @@ -0,0 +1,27 @@ +-- SQL script to create reports database for PostgreSQL +-- +-- To run, type: psql template1 < reports-pgsql.sql +-- +-- $Id: reports-pgsql.sql,v 1.4 2007/04/16 11:02:36 mr-russ Exp $ + +CREATE DATABASE phppgadmin; + +\connect phppgadmin + +CREATE TABLE ppa_reports ( + report_id SERIAL, + report_name varchar(255) NOT NULL, + db_name varchar(255) NOT NULL, + date_created date DEFAULT NOW() NOT NULL, + created_by varchar(255) NOT NULL, + descr text, + report_sql text NOT NULL, + paginate boolean NOT NULL, + PRIMARY KEY (report_id) +); + +-- Allow everyone to do everything with reports. This may +-- or may not be what you want. +GRANT SELECT,INSERT,UPDATE,DELETE ON ppa_reports TO PUBLIC; +GRANT SELECT,UPDATE ON ppa_reports_report_id_seq TO PUBLIC; + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/privileges.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/privileges.php new file mode 100644 index 00000000..ea7b7f95 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/privileges.php @@ -0,0 +1,354 @@ +getUsers(); + // Get groups from the database + $groups = $data->getGroups(); + + $misc->printTrail($_REQUEST['subject']); + + switch ($mode) { + case 'grant': + $misc->printTitle($lang['strgrant'],'pg.privilege.grant'); + break; + case 'revoke': + $misc->printTitle($lang['strrevoke'],'pg.privilege.revoke'); + break; + } + $misc->printMsg($msg); + + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + // Grant option + if ($data->hasGrantOption()) { + echo "\n"; + echo "\n"; + } + echo "
{$lang['strusers']}
{$lang['strgroups']}\n"; + echo "\n"; + // Only show groups if there are groups! + if ($groups->recordCount() > 0) { + echo "
\n"; + } + echo "
{$lang['strprivileges']}\n"; + foreach ($data->privlist[$_REQUEST['subject']] as $v) { + $v = htmlspecialchars($v); + echo "
\n"; + } + echo "
{$lang['stroptions']}\n"; + if ($mode == 'grant') { + echo "\n"; + } + elseif ($mode == 'revoke') { + echo "
\n"; + echo "
\n"; + } + echo "
\n"; + + echo "

\n"; + echo "\n"; + echo "\n"; + if (isset($_REQUEST[$_REQUEST['subject'].'_oid'])) + echo "\n"; + echo "\n"; + if ($_REQUEST['subject'] == 'column') + echo "\n"; + echo $misc->form; + if ($mode == 'grant') + echo "\n"; + elseif ($mode == 'revoke') + echo "\n"; + echo "

"; + echo "
\n"; + } + else { + // Determine whether object should be ref'd by name or oid. + if (isset($_REQUEST[$_REQUEST['subject'].'_oid'])) + $object = $_REQUEST[$_REQUEST['subject'].'_oid']; + else + $object = $_REQUEST[$_REQUEST['subject']]; + + if (isset($_REQUEST['table'])) $table = $_REQUEST['table']; + else $table = null; + $status = $data->setPrivileges(($mode == 'grant') ? 'GRANT' : 'REVOKE', $_REQUEST['subject'], $object, + isset($_REQUEST['public']), $_REQUEST['username'], $_REQUEST['groupname'], array_keys($_REQUEST['privilege']), + isset($_REQUEST['grantoption']), isset($_REQUEST['cascade']), $table); + + if ($status == 0) + doDefault($lang['strgranted']); + elseif ($status == -3 || $status == -4) + doAlter(true, $_REQUEST['mode'], $lang['strgrantbad']); + else + doAlter(true, $_REQUEST['mode'], $lang['strgrantfailed']); + } + } + + /** + * Show permissions on a database, namespace, relation, language or function + */ + function doDefault($msg = '') { + global $data, $misc, $database; + global $lang; + + $misc->printTrail($_REQUEST['subject']); + + # @@@FIXME: This switch is just a temporary solution, + # need a better way, maybe every type of object should + # have a tab bar??? + switch ($_REQUEST['subject']) { + case 'server': + case 'database': + case 'schema': + case 'table': + case 'column': + case 'view': + $misc->printTabs($_REQUEST['subject'], 'privileges'); + break; + default: + $misc->printTitle($lang['strprivileges'], 'pg.privilege'); + } + $misc->printMsg($msg); + + // Determine whether object should be ref'd by name or oid. + if (isset($_REQUEST[$_REQUEST['subject'].'_oid'])) + $object = $_REQUEST[$_REQUEST['subject'].'_oid']; + else + $object = $_REQUEST[$_REQUEST['subject']]; + + // Get the privileges on the object, given its type + if ($_REQUEST['subject'] == 'column') + $privileges = $data->getPrivileges($object, 'column', $_REQUEST['table']); + else + $privileges = $data->getPrivileges($object, $_REQUEST['subject']); + + if (sizeof($privileges) > 0) { + echo "\n"; + if ($data->hasRoles()) + echo ""; + else + echo ""; + + foreach ($data->privlist[$_REQUEST['subject']] as $v2) { + // Skip over ALL PRIVILEGES + if ($v2 == 'ALL PRIVILEGES') continue; + echo "\n"; + } + if ($data->hasGrantOption()) { + echo ""; + } + echo "\n"; + + // Loop over privileges, outputting them + $i = 0; + foreach ($privileges as $v) { + $id = (($i % 2) == 0 ? '1' : '2'); + echo "\n"; + if (!$data->hasRoles()) + echo "\n"; + echo "\n"; + foreach ($data->privlist[$_REQUEST['subject']] as $v2) { + // Skip over ALL PRIVILEGES + if ($v2 == 'ALL PRIVILEGES') continue; + echo "\n"; + } + if ($data->hasGrantOption()) { + echo "\n"; + } + echo "\n"; + $i++; + } + + echo "
{$lang['strrole']}
{$lang['strtype']}{$lang['struser']}/{$lang['strgroup']}{$v2}{$lang['strgrantor']}
", $misc->printVal($v[0]), "", $misc->printVal($v[1]), ""; + if (in_array($v2, $v[2])) + echo $lang['stryes']; + else + echo $lang['strno']; + // If we have grant option for this, end mark + if ($data->hasGrantOption() && in_array($v2, $v[4])) echo $lang['strasterisk']; + echo "", $misc->printVal($v[3]), "
"; + } + else { + echo "

{$lang['strnoprivileges']}

\n"; + } + + // Links for granting to a user or group + switch ($_REQUEST['subject']) { + case 'table': + case 'view': + case 'sequence': + case 'function': + case 'tablespace': + $alllabel = "showall{$_REQUEST['subject']}s"; + $allurl = "{$_REQUEST['subject']}s.php"; + $alltxt = $lang["strshowall{$_REQUEST['subject']}s"]; + break; + case 'schema': + $alllabel = "showallschemas"; + $allurl = "schemas.php"; + $alltxt = $lang["strshowallschemas"]; + break; + case 'database': + $alllabel = "showalldatabases"; + $allurl = 'all_db.php'; + $alltxt = $lang['strshowalldatabases']; + break; + } + + $subject = $_REQUEST['subject']; + $object = $_REQUEST[$_REQUEST['subject']]; + + if ($_REQUEST['subject'] == 'function') { + $objectoid = $_REQUEST[$_REQUEST['subject'].'_oid']; + $urlvars = array ( + 'action' => 'alter', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + $subject => $object, + "{$subject}_oid" => $objectoid, + 'subject'=> $subject + ); + } + else if ($_REQUEST['subject'] == 'column') { + $urlvars = array ( + 'action' => 'alter', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + $subject => $object, + 'subject'=> $subject + ); + + if (isset($_REQUEST['table'])) + $urlvars['table'] = $_REQUEST['table']; + else + $urlvars['view'] = $_REQUEST['view']; + } + else { + $urlvars = array ( + 'action' => 'alter', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + $subject => $object, + 'subject'=> $subject + ); + if (isset($_REQUEST['schema'])) { + $urlvars['schema'] = $_REQUEST['schema']; + } + } + + $navlinks = array ( + 'grant' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'privileges.php', + 'urlvars' => array_merge($urlvars, array('mode' => 'grant')) + ) + ), + 'content' => $lang['strgrant'] + ), + 'revoke' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'privileges.php', + 'urlvars' => array_merge($urlvars, array('mode' => 'revoke')) + ) + ), + 'content' => $lang['strrevoke'] + ) + ); + + if (isset($allurl)) { + $navlinks[$alllabel] = array ( + 'attr'=> array ( + 'href' => array ( + 'url' => $allurl, + 'urlvars' => array ( + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'] + ) + ) + ), + 'content' => $alltxt + ); + if (isset($_REQUEST['schema'])) { + $navlinks[$alllabel]['attr']['href']['urlvars']['schema'] = $_REQUEST['schema']; + } + } + + $misc->printNavLinks($navlinks, 'privileges-privileges', get_defined_vars()); + } + + $misc->printHeader($lang['strprivileges']); + $misc->printBody(); + + switch ($action) { + case 'save': + if (isset($_REQUEST['cancel'])) doDefault(); + else doAlter(false, $_REQUEST['mode']); + break; + case 'alter': + doAlter(true, $_REQUEST['mode']); + break; + default: + doDefault(); + break; + } + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/redirect.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/redirect.php new file mode 100644 index 00000000..f31aa086 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/redirect.php @@ -0,0 +1,29 @@ +getLastTabURL($subject); + + // Load query vars into superglobal arrays + if (isset($url['urlvars'])) { + $urlvars = array(); + + foreach($url['urlvars'] as $k => $urlvar) { + $urlvars[$k] = value($urlvar, $_REQUEST); + } + + /* parse_str function is affected by magic_quotes_gpc */ + if (ini_get('magic_quotes_gpc')) { + $misc->stripVar($urlvars); + } + + $_REQUEST = array_merge($_REQUEST, $urlvars); + $_GET = array_merge($_GET, $urlvars); + } + + require $url['url']; +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/robots.txt b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/robots.txt new file mode 100644 index 00000000..223518bb --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/robots.txt @@ -0,0 +1,8 @@ +# Prevent web robots from indexing your phpPgAdmin installation +# See: http://www.searchengineworld.com/robots/robots_tutorial.htm +# +# $Id: robots.txt,v 1.1 2003/09/01 03:02:17 chriskl Exp $ + +User-agent: * +Disallow: / + diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/roles.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/roles.php new file mode 100644 index 00000000..b4444cfa --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/roles.php @@ -0,0 +1,743 @@ +printTrail('role'); + $misc->printTitle($lang['strcreaterole'],'pg.role.create'); + $misc->printMsg($msg); + + echo "
\n"; + echo "\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + + $roles = $data->getRoles(); + if ($roles->recordCount() > 0) { + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + + $roles->moveFirst(); + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + + $roles->moveFirst(); + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + } + + echo "
{$lang['strname']}_maxNameLen}\" name=\"formRolename\" value=\"", htmlspecialchars($_POST['formRolename']), "\" />
{$lang['strpassword']}
{$lang['strconfirm']}
{$lang['strconnlimit']}
{$lang['strexpires']}
{$lang['strmemberof']}\n"; + echo "\t\t\t\n"; + echo "\t\t
{$lang['strmembers']}\n"; + echo "\t\t\t\n"; + echo "\t\t
{$lang['stradminmembers']}\n"; + echo "\t\t\t\n"; + echo "\t\t
\n"; + echo "

\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + + /** + * Actually creates the new role in the database + */ + function doSaveCreate() { + global $data, $lang; + + if(!isset($_POST['memberof'])) $_POST['memberof'] = array(); + if(!isset($_POST['members'])) $_POST['members'] = array(); + if(!isset($_POST['adminmembers'])) $_POST['adminmembers'] = array(); + + // Check data + if ($_POST['formRolename'] == '') + doCreate($lang['strroleneedsname']); + else if ($_POST['formPassword'] != $_POST['formConfirm']) + doCreate($lang['strpasswordconfirm']); + else { + $status = $data->createRole($_POST['formRolename'], $_POST['formPassword'], isset($_POST['formSuper']), + isset($_POST['formCreateDB']), isset($_POST['formCreateRole']), isset($_POST['formInherits']), + isset($_POST['formCanLogin']), $_POST['formConnLimit'], $_POST['formExpires'], $_POST['memberof'], $_POST['members'], + $_POST['adminmembers']); + if ($status == 0) + doDefault($lang['strrolecreated']); + else + doCreate($lang['strrolecreatedbad']); + } + } + + /** + * Function to allow alter a role + */ + function doAlter($msg = '') { + global $data, $misc; + global $lang; + + $misc->printTrail('role'); + $misc->printTitle($lang['stralter'],'pg.role.alter'); + $misc->printMsg($msg); + + $roledata = $data->getRole($_REQUEST['rolename']); + + if ($roledata->recordCount() > 0) { + $server_info = $misc->getServerInfo(); + $canRename = $data->hasUserRename() && ($_REQUEST['rolename'] != $server_info['username']); + $roledata->fields['rolsuper'] = $data->phpBool($roledata->fields['rolsuper']); + $roledata->fields['rolcreatedb'] = $data->phpBool($roledata->fields['rolcreatedb']); + $roledata->fields['rolcreaterole'] = $data->phpBool($roledata->fields['rolcreaterole']); + $roledata->fields['rolinherit'] = $data->phpBool($roledata->fields['rolinherit']); + $roledata->fields['rolcanlogin'] = $data->phpBool($roledata->fields['rolcanlogin']); + + if (!isset($_POST['formExpires'])){ + if ($canRename) $_POST['formNewRoleName'] = $roledata->fields['rolname']; + if ($roledata->fields['rolsuper']) $_POST['formSuper'] = ''; + if ($roledata->fields['rolcreatedb']) $_POST['formCreateDB'] = ''; + if ($roledata->fields['rolcreaterole']) $_POST['formCreateRole'] = ''; + if ($roledata->fields['rolinherit']) $_POST['formInherits'] = ''; + if ($roledata->fields['rolcanlogin']) $_POST['formCanLogin'] = ''; + $_POST['formConnLimit'] = $roledata->fields['rolconnlimit'] == '-1' ? '' : $roledata->fields['rolconnlimit']; + $_POST['formExpires'] = $roledata->fields['rolvaliduntil'] == 'infinity' ? '' : $roledata->fields['rolvaliduntil']; + $_POST['formPassword'] = ''; + } + + echo "
\n"; + echo "\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + + if (!isset($_POST['memberof'])) + { + $memberof = $data->getMemberOf($_REQUEST['rolename']); + if ($memberof->recordCount() > 0) { + $i = 0; + while (!$memberof->EOF) { + $_POST['memberof'][$i++] = $memberof->fields['rolname']; + $memberof->moveNext(); + } + } + else + $_POST['memberof'] = array(); + $memberofold = implode(',', $_POST['memberof']); + } + if (!isset($_POST['members'])) + { + $members = $data->getMembers($_REQUEST['rolename']); + if ($members->recordCount() > 0) { + $i = 0; + while (!$members->EOF) { + $_POST['members'][$i++] = $members->fields['rolname']; + $members->moveNext(); + } + } + else + $_POST['members'] = array(); + $membersold = implode(',', $_POST['members']); + } + if (!isset($_POST['adminmembers'])) + { + $adminmembers = $data->getMembers($_REQUEST['rolename'], 't'); + if ($adminmembers->recordCount() > 0) { + $i = 0; + while (!$adminmembers->EOF) { + $_POST['adminmembers'][$i++] = $adminmembers->fields['rolname']; + $adminmembers->moveNext(); + } + } + else + $_POST['adminmembers'] = array(); + $adminmembersold = implode(',', $_POST['adminmembers']); + } + + $roles = $data->getRoles($_REQUEST['rolename']); + if ($roles->recordCount() > 0) { + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + + $roles->moveFirst(); + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + + $roles->moveFirst(); + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + } + echo "
{$lang['strname']}", ($canRename ? "_maxNameLen}\" value=\"" . htmlspecialchars($_POST['formNewRoleName']) . "\" />" : $misc->printVal($roledata->fields['rolname'])), "
{$lang['strpassword']}
{$lang['strconfirm']}
{$lang['strconnlimit']}
{$lang['strexpires']}
{$lang['strmemberof']}\n"; + echo "\t\t\t\n"; + echo "\t\t
{$lang['strmembers']}\n"; + echo "\t\t\t\n"; + echo "\t\t
{$lang['stradminmembers']}\n"; + echo "\t\t\t\n"; + echo "\t\t
\n"; + + echo "

\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + else echo "

{$lang['strnodata']}

\n"; + } + + /** + * Function to save after editing a role + */ + function doSaveAlter() { + global $data, $lang; + + if(!isset($_POST['memberof'])) $_POST['memberof'] = array(); + if(!isset($_POST['members'])) $_POST['members'] = array(); + if(!isset($_POST['adminmembers'])) $_POST['adminmembers'] = array(); + + // Check name and password + if (isset($_POST['formNewRoleName']) && $_POST['formNewRoleName'] == '') + doAlter($lang['strroleneedsname']); + else if ($_POST['formPassword'] != $_POST['formConfirm']) + doAlter($lang['strpasswordconfirm']); + else { + if (isset($_POST['formNewRoleName'])) $status = $data->setRenameRole($_POST['rolename'], $_POST['formPassword'], isset($_POST['formSuper']), isset($_POST['formCreateDB']), isset($_POST['formCreateRole']), isset($_POST['formInherits']), isset($_POST['formCanLogin']), $_POST['formConnLimit'], $_POST['formExpires'], $_POST['memberof'], $_POST['members'], $_POST['adminmembers'], $_POST['memberofold'], $_POST['membersold'], $_POST['adminmembersold'], $_POST['formNewRoleName']); + else $status = $data->setRole($_POST['rolename'], $_POST['formPassword'], isset($_POST['formSuper']), isset($_POST['formCreateDB']), isset($_POST['formCreateRole']), isset($_POST['formInherits']), isset($_POST['formCanLogin']), $_POST['formConnLimit'], $_POST['formExpires'], $_POST['memberof'], $_POST['members'], $_POST['adminmembers'], $_POST['memberofold'], $_POST['membersold'], $_POST['adminmembersold']); + if ($status == 0) + doDefault($lang['strrolealtered']); + else + doAlter($lang['strrolealteredbad']); + } + } + + /** + * Show confirmation of drop a role and perform actual drop + */ + function doDrop($confirm) { + global $data, $misc; + global $lang; + + if ($confirm) { + $misc->printTrail('role'); + $misc->printTitle($lang['strdroprole'],'pg.role.drop'); + + echo "

", sprintf($lang['strconfdroprole'], $misc->printVal($_REQUEST['rolename'])), "

\n"; + + echo "
\n"; + echo "

\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + else { + $status = $data->dropRole($_REQUEST['rolename']); + if ($status == 0) + doDefault($lang['strroledropped']); + else + doDefault($lang['strroledroppedbad']); + } + } + + /** + * Show the properties of a role + */ + function doProperties($msg = '') { + global $data, $misc; + global $lang; + + $misc->printTrail('role'); + $misc->printTitle($lang['strproperties'],'pg.role'); + $misc->printMsg($msg); + + $roledata = $data->getRole($_REQUEST['rolename']); + if($roledata->recordCount() > 0 ) { + $roledata->fields['rolsuper'] = $data->phpBool($roledata->fields['rolsuper']); + $roledata->fields['rolcreatedb'] = $data->phpBool($roledata->fields['rolcreatedb']); + $roledata->fields['rolcreaterole'] = $data->phpBool($roledata->fields['rolcreaterole']); + $roledata->fields['rolinherit'] = $data->phpBool($roledata->fields['rolinherit']); + $roledata->fields['rolcanlogin'] = $data->phpBool($roledata->fields['rolcanlogin']); + + echo "\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "
DescriptionValue
{$lang['strname']}", htmlspecialchars($_REQUEST['rolename']), "
{$lang['strsuper']}", (($roledata->fields['rolsuper']) ? $lang['stryes'] : $lang['strno']), "
{$lang['strcreatedb']}", (($roledata->fields['rolcreatedb']) ? $lang['stryes'] : $lang['strno']), "
{$lang['strcancreaterole']}", (($roledata->fields['rolcreaterole']) ? $lang['stryes'] : $lang['strno']), "
{$lang['strinheritsprivs']}", (($roledata->fields['rolinherit']) ? $lang['stryes'] : $lang['strno']), "
{$lang['strcanlogin']}", (($roledata->fields['rolcanlogin']) ? $lang['stryes'] : $lang['strno']), "
{$lang['strconnlimit']}", ($roledata->fields['rolconnlimit'] == '-1' ? $lang['strnolimit'] : $misc->printVal($roledata->fields['rolconnlimit'])), "
{$lang['strexpires']}", ($roledata->fields['rolvaliduntil'] == 'infinity' || is_null($roledata->fields['rolvaliduntil']) ? $lang['strnever'] : $misc->printVal($roledata->fields['rolvaliduntil'])), "
{$lang['strsessiondefaults']}", $misc->printVal($roledata->fields['rolconfig']), "
{$lang['strmemberof']}"; + $memberof = $data->getMemberOf($_REQUEST['rolename']); + if ($memberof->recordCount() > 0) { + while (!$memberof->EOF) { + echo $misc->printVal($memberof->fields['rolname']), "
\n"; + $memberof->moveNext(); + } + } + echo "
{$lang['strmembers']}"; + $members = $data->getMembers($_REQUEST['rolename']); + if ($members->recordCount() > 0) { + while (!$members->EOF) { + echo $misc->printVal($members->fields['rolname']), "
\n"; + $members->moveNext(); + } + } + echo "
{$lang['stradminmembers']}"; + $adminmembers = $data->getMembers($_REQUEST['rolename'], 't'); + if ($adminmembers->recordCount() > 0) { + while (!$adminmembers->EOF) { + echo $misc->printVal($adminmembers->fields['rolname']), "
\n"; + $adminmembers->moveNext(); + } + } + echo "
\n"; + } + else echo "

{$lang['strnodata']}

\n"; + + $navlinks = array ( + 'showall' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'roles.php', + 'urlvars' => array ( + 'server' => $_REQUEST['server'] + ) + ) + ), + 'content' => $lang['strshowallroles'] + ), + 'alter' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'roles.php', + 'urlvars' => array ( + 'action' => 'alter', + 'server' => $_REQUEST['server'], + 'rolename' => $_REQUEST['rolename'] + ) + ) + ), + 'content' => $lang['stralter'] + ), + 'drop' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'roles.php', + 'urlvars' => array ( + 'action' => 'confirm_drop', + 'server' => $_REQUEST['server'], + 'rolename' => $_REQUEST['rolename'] + ) + ) + ), + 'content' => $lang['strdrop'] + ) + ); + + $misc->printNavLinks($navlinks, 'roles-properties', get_defined_vars()); + } + + /** + * If a role is not a superuser role, then we have an 'account management' + * page for change his password, etc. We don't prevent them from + * messing with the URL to gain access to other role admin stuff, because + * the PostgreSQL permissions will prevent them changing anything anyway. + */ + function doAccount($msg = '') { + global $data, $misc; + global $lang; + + $server_info = $misc->getServerInfo(); + + $roledata = $data->getRole($server_info['username']); + $_REQUEST['rolename'] = $server_info['username']; + + $misc->printTrail('role'); + $misc->printTabs('server','account'); + $misc->printMsg($msg); + + if ($roledata->recordCount() > 0) { + $roledata->fields['rolsuper'] = $data->phpBool($roledata->fields['rolsuper']); + $roledata->fields['rolcreatedb'] = $data->phpBool($roledata->fields['rolcreatedb']); + $roledata->fields['rolcreaterole'] = $data->phpBool($roledata->fields['rolcreaterole']); + $roledata->fields['rolinherit'] = $data->phpBool($roledata->fields['rolinherit']); + echo "\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\n
{$lang['strname']}{$lang['strsuper']}{$lang['strcreatedb']}{$lang['strcancreaterole']}{$lang['strinheritsprivs']}{$lang['strconnlimit']}{$lang['strexpires']}{$lang['strsessiondefaults']}
", $misc->printVal($roledata->fields['rolname']), "", $misc->printVal($roledata->fields['rolsuper'], 'yesno'), "", $misc->printVal($roledata->fields['rolcreatedb'], 'yesno'), "", $misc->printVal($roledata->fields['rolcreaterole'], 'yesno'), "", $misc->printVal($roledata->fields['rolinherit'], 'yesno'), "", ($roledata->fields['rolconnlimit'] == '-1' ? $lang['strnolimit'] : $misc->printVal($roledata->fields['rolconnlimit'])), "", ($roledata->fields['rolvaliduntil'] == 'infinity' || is_null($roledata->fields['rolvaliduntil']) ? $lang['strnever'] : $misc->printVal($roledata->fields['rolvaliduntil'])), "", $misc->printVal($roledata->fields['rolconfig']), "
\n"; + } + else echo "

{$lang['strnodata']}

\n"; + + $misc->printNavLinks(array ('changepassword' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'roles.php', + 'urlvars' => array ( + 'action' => 'confchangepassword', + 'server' => $_REQUEST['server'] + ) + ) + ), + 'content' => $lang['strchangepassword'] + )), 'roles-account', get_defined_vars()); + } + + /** + * Show confirmation of change password and actually change password + */ + function doChangePassword($confirm, $msg = '') { + global $data, $misc; + global $lang, $conf; + + $server_info = $misc->getServerInfo(); + + if ($confirm) { + $_REQUEST['rolename'] = $server_info['username']; + $misc->printTrail('role'); + $misc->printTitle($lang['strchangepassword'],'pg.role.alter'); + $misc->printMsg($msg); + + if (!isset($_POST['password'])) $_POST['password'] = ''; + if (!isset($_POST['confirm'])) $_POST['confirm'] = ''; + + echo "
\n"; + echo "\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "
{$lang['strpassword']}
{$lang['strconfirm']}
\n"; + echo "

\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "

\n"; + } + else { + // Check that password is minimum length + if (strlen($_POST['password']) < $conf['min_password_length']) + doChangePassword(true, $lang['strpasswordshort']); + // Check that password matches confirmation password + elseif ($_POST['password'] != $_POST['confirm']) + doChangePassword(true, $lang['strpasswordconfirm']); + else { + $status = $data->changePassword($server_info['username'], $_POST['password']); + if ($status == 0) + doAccount($lang['strpasswordchanged']); + else + doAccount($lang['strpasswordchangedbad']); + } + } + } + + + /** + * Show default list of roles in the database + */ + function doDefault($msg = '') { + global $data, $misc; + global $lang; + + function renderRoleConnLimit($val) { + global $lang; + return $val == '-1' ? $lang['strnolimit'] : htmlspecialchars($val); + } + + function renderRoleExpires($val) { + global $lang; + return $val == 'infinity' ? $lang['strnever'] : htmlspecialchars($val); + } + + $misc->printTrail('server'); + $misc->printTabs('server','roles'); + $misc->printMsg($msg); + + $roles = $data->getRoles(); + + $columns = array( + 'role' => array( + 'title' => $lang['strrole'], + 'field' => field('rolname'), + 'url' => "redirect.php?subject=role&action=properties&{$misc->href}&", + 'vars' => array('rolename' => 'rolname'), + ), + 'superuser' => array( + 'title' => $lang['strsuper'], + 'field' => field('rolsuper'), + 'type' => 'yesno', + ), + 'createdb' => array( + 'title' => $lang['strcreatedb'], + 'field' => field('rolcreatedb'), + 'type' => 'yesno', + ), + 'createrole' => array( + 'title' => $lang['strcancreaterole'], + 'field' => field('rolcreaterole'), + 'type' => 'yesno', + ), + 'inherits' => array( + 'title' => $lang['strinheritsprivs'], + 'field' => field('rolinherit'), + 'type' => 'yesno', + ), + 'canloging' => array( + 'title' => $lang['strcanlogin'], + 'field' => field('rolcanlogin'), + 'type' => 'yesno', + ), + 'connlimit' => array( + 'title' => $lang['strconnlimit'], + 'field' => field('rolconnlimit'), + 'type' => 'callback', + 'params'=> array('function' => 'renderRoleConnLimit') + ), + 'expires' => array( + 'title' => $lang['strexpires'], + 'field' => field('rolvaliduntil'), + 'type' => 'callback', + 'params'=> array('function' => 'renderRoleExpires', 'null' => $lang['strnever']), + ), + 'actions' => array( + 'title' => $lang['stractions'], + ), + ); + + $actions = array( + 'alter' => array( + 'content' => $lang['stralter'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'roles.php', + 'urlvars' => array ( + 'action' => 'alter', + 'rolename' => field('rolname') + ) + ) + ) + ), + 'drop' => array( + 'content' => $lang['strdrop'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'roles.php', + 'urlvars' => array ( + 'action' => 'confirm_drop', + 'rolename' => field('rolname') + ) + ) + ) + ), + ); + + $misc->printTable($roles, $columns, $actions, 'roles-roles', $lang['strnoroles']); + + $navlinks = array ( + 'create' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'roles.php', + 'urlvars' => array ( + 'action' => 'create', + 'server' => $_REQUEST['server'] + ) + ) + ), + 'content' => $lang['strcreaterole'] + ) + ); + $misc->printNavLinks($navlinks, 'roles-roles', get_defined_vars()); + } + + $misc->printHeader($lang['strroles']); + $misc->printBody(); + + switch ($action) { + case 'create': + doCreate(); + break; + case 'save_create': + if (isset($_POST['create'])) doSaveCreate(); + else doDefault(); + break; + case 'alter': + doAlter(); + break; + case 'save_alter': + if (isset($_POST['alter'])) doSaveAlter(); + else doDefault(); + break; + case 'confirm_drop': + doDrop(true); + break; + case 'drop': + if (isset($_POST['drop'])) doDrop(false); + else doDefault(); + break; + case 'properties': + doProperties(); + break; + case 'confchangepassword': + doChangePassword(true); + break; + case 'changepassword': + if (isset($_REQUEST['ok'])) doChangePassword(false); + else doAccount(); + break; + case 'account': + doAccount(); + break; + default: + doDefault(); + } + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/rules.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/rules.php new file mode 100644 index 00000000..3ea50c90 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/rules.php @@ -0,0 +1,232 @@ +printTrail($_REQUEST['subject']); + $misc->printTitle($lang['strcreaterule'],'pg.rule.create'); + $misc->printMsg($msg); + + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "
{$lang['strname']}_maxNameLen}\" value=\"", + htmlspecialchars($_POST['name']), "\" />
{$lang['strevent']}
{$lang['strwhere']}
"; + echo "\n"; + echo "
{$lang['straction']}"; + echo "
\n"; + echo "\n"; + echo "()
\n"; + + echo "\n"; + echo "\n"; + echo "\n"; + echo $misc->form; + echo "

\n"; + echo "

\n"; + echo "
\n"; + + } + else { + if (trim($_POST['name']) == '') + createRule(true, $lang['strruleneedsname']); + else { + $status = $data->createRule($_POST['name'], + $_POST['event'], $_POST[$_POST['subject']], $_POST['where'], + isset($_POST['instead']), $_POST['type'], $_POST['raction']); + if ($status == 0) + doDefault($lang['strrulecreated']); + else + createRule(true, $lang['strrulecreatedbad']); + } + } + } + + /** + * Show confirmation of drop and perform actual drop + */ + function doDrop($confirm) { + global $data, $misc; + global $lang; + + if ($confirm) { + $misc->printTrail($_REQUEST['subject']); + $misc->printTitle($lang['strdrop'],'pg.rule.drop'); + + echo "

", sprintf($lang['strconfdroprule'], $misc->printVal($_REQUEST['rule']), + $misc->printVal($_REQUEST[$_REQUEST['reltype']])), "

\n"; + + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo $misc->form; + echo "

\n"; + echo "\n"; + echo "\n"; + echo "
\n"; + } + else { + $status = $data->dropRule($_POST['rule'], $_POST[$_POST['subject']], isset($_POST['cascade'])); + if ($status == 0) + doDefault($lang['strruledropped']); + else + doDefault($lang['strruledroppedbad']); + } + + } + + /** + * List all the rules on the table + */ + function doDefault($msg = '') { + global $data, $misc; + global $lang; + + $misc->printTrail($_REQUEST['subject']); + $misc->printTabs($_REQUEST['subject'], 'rules'); + $misc->printMsg($msg); + + $rules = $data->getRules($_REQUEST[$_REQUEST['subject']]); + + $columns = array( + 'rule' => array( + 'title' => $lang['strname'], + 'field' => field('rulename'), + ), + 'definition' => array( + 'title' => $lang['strdefinition'], + 'field' => field('definition'), + ), + 'actions' => array( + 'title' => $lang['stractions'], + ), + ); + + $subject = urlencode($_REQUEST['subject']); + $object = urlencode($_REQUEST[$_REQUEST['subject']]); + + $actions = array( + 'drop' => array( + 'content' => $lang['strdrop'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'rules.php', + 'urlvars' => array ( + 'action' => 'confirm_drop', + 'reltype' => $subject, + $subject => $object, + 'subject' => 'rule', + 'rule' => field('rulename') + ) + ) + ) + ), + ); + + $misc->printTable($rules, $columns, $actions, 'rules-rules', $lang['strnorules']); + + $misc->printNavLinks(array ('create' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'rules.php', + 'urlvars' => array ( + 'action' => 'create_rule', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + $subject => $object, + 'subject' => $subject + ) + ) + ), + 'content' => $lang['strcreaterule'] + )), 'rules-rules', get_defined_vars()); + } + + function doTree() { + global $misc, $data; + + $rules = $data->getRules($_REQUEST[$_REQUEST['subject']]); + + $reqvars = $misc->getRequestVars($_REQUEST['subject']); + + $attrs = array( + 'text' => field('rulename'), + 'icon' => 'Rule', + ); + + $misc->printTree($rules, $attrs, 'rules'); + exit; + } + + if ($action == 'tree') doTree(); + + // Different header if we're view rules or table rules + $misc->printHeader($_REQUEST[$_REQUEST['subject']] . ' - ' . $lang['strrules']); + $misc->printBody(); + + switch ($action) { + case 'create_rule': + createRule(true); + break; + case 'save_create_rule': + if (isset($_POST['cancel'])) doDefault(); + else createRule(false); + break; + case 'drop': + if (isset($_POST['yes'])) doDrop(false); + else doDefault(); + break; + case 'confirm_drop': + doDrop(true); + break; + default: + doDefault(); + break; + } + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/schemas.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/schemas.php new file mode 100644 index 00000000..a5ac8381 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/schemas.php @@ -0,0 +1,480 @@ +printTrail('database'); + $misc->printTabs('database','schemas'); + $misc->printMsg($msg); + + // Check that the DB actually supports schemas + $schemas = $data->getSchemas(); + + $columns = array( + 'schema' => array( + 'title' => $lang['strschema'], + 'field' => field('nspname'), + 'url' => "redirect.php?subject=schema&{$misc->href}&", + 'vars' => array('schema' => 'nspname'), + ), + 'owner' => array( + 'title' => $lang['strowner'], + 'field' => field('nspowner'), + ), + 'actions' => array( + 'title' => $lang['stractions'], + ), + 'comment' => array( + 'title' => $lang['strcomment'], + 'field' => field('nspcomment'), + ), + ); + + $actions = array( + 'multiactions' => array( + 'keycols' => array('nsp' => 'nspname'), + 'url' => 'schemas.php', + ), + 'drop' => array( + 'content' => $lang['strdrop'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'schemas.php', + 'urlvars' => array ( + 'action' => 'drop', + 'nsp' => field('nspname') + ) + ) + ), + 'multiaction' => 'drop', + ), + 'privileges' => array( + 'content' => $lang['strprivileges'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'privileges.php', + 'urlvars' => array ( + 'subject' => 'schema', + 'schema' => field('nspname') + ) + ) + ) + ), + 'alter' => array( + 'content' => $lang['stralter'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'schemas.php', + 'urlvars' => array ( + 'action' => 'alter', + 'schema' => field('nspname') + ) + ) + ) + ) + ); + + if (!$data->hasAlterSchema()) unset($actions['alter']); + + $misc->printTable($schemas, $columns, $actions, 'schemas-schemas', $lang['strnoschemas']); + + $misc->printNavLinks(array ('create' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'schemas.php', + 'urlvars' => array ( + 'action' => 'create', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'] + ) + ) + ), + 'content' => $lang['strcreateschema'] + )), 'schemas-schemas', get_defined_vars()); + } + + /** + * Displays a screen where they can enter a new schema + */ + function doCreate($msg = '') { + global $data, $misc; + global $lang; + + $server_info = $misc->getServerInfo(); + + if (!isset($_POST['formName'])) $_POST['formName'] = ''; + if (!isset($_POST['formAuth'])) $_POST['formAuth'] = $server_info['username']; + if (!isset($_POST['formSpc'])) $_POST['formSpc'] = ''; + if (!isset($_POST['formComment'])) $_POST['formComment'] = ''; + + // Fetch all users from the database + $users = $data->getUsers(); + + $misc->printTrail('database'); + $misc->printTitle($lang['strcreateschema'],'pg.schema.create'); + $misc->printMsg($msg); + + echo "
\n"; + echo "\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + // Owner + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + + echo "
{$lang['strname']}_maxNameLen}\" value=\"", + htmlspecialchars($_POST['formName']), "\" />
{$lang['strowner']}\n\t\t\t\n\t\t
{$lang['strcomment']}
\n"; + echo "

\n"; + echo "\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + + /** + * Actually creates the new schema in the database + */ + function doSaveCreate() { + global $data, $lang, $_reload_browser; + + // Check that they've given a name + if ($_POST['formName'] == '') doCreate($lang['strschemaneedsname']); + else { + $status = $data->createSchema($_POST['formName'], $_POST['formAuth'], $_POST['formComment']); + if ($status == 0) { + $_reload_browser = true; + doDefault($lang['strschemacreated']); + } + else + doCreate($lang['strschemacreatedbad']); + } + } + + /** + * Display a form to permit editing schema properies. + * TODO: permit changing owner + */ + function doAlter($msg = '') { + global $data, $misc, $lang; + + $misc->printTrail('schema'); + $misc->printTitle($lang['stralter'],'pg.schema.alter'); + $misc->printMsg($msg); + + $schema = $data->getSchemaByName($_REQUEST['schema']); + if ($schema->recordCount() > 0) { + if (!isset($_POST['comment'])) $_POST['comment'] = $schema->fields['nspcomment']; + if (!isset($_POST['schema'])) $_POST['schema'] = $_REQUEST['schema']; + if (!isset($_POST['name'])) $_POST['name'] = $_REQUEST['schema']; + if (!isset($_POST['owner'])) $_POST['owner'] = $schema->fields['ownername']; + + echo "
\n"; + echo "\n"; + + echo "\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\n"; + + if ($data->hasAlterSchemaOwner()) { + $users = $data->getUsers(); + echo "\n"; + echo "\n"; + } + else + echo ""; + + echo "\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\n"; + echo "
{$lang['strname']}"; + echo "\t\t\t_maxNameLen}\" value=\"", + htmlspecialchars($_POST['name']), "\" />\n"; + echo "\t\t
{$lang['strowner']}
{$lang['strcomment']}
\n"; + echo "

\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } else { + echo "

{$lang['strnodata']}

\n"; + } + } + + /** + * Save the form submission containing changes to a schema + */ + function doSaveAlter($msg = '') { + global $data, $misc, $lang, $_reload_browser; + + $status = $data->updateSchema($_POST['schema'], $_POST['comment'], $_POST['name'], $_POST['owner']); + if ($status == 0) { + $_reload_browser = true; + doDefault($lang['strschemaaltered']); + } + else + doAlter($lang['strschemaalteredbad']); + } + + /** + * Show confirmation of drop and perform actual drop + */ + function doDrop($confirm) { + global $data, $misc; + global $lang, $_reload_browser; + + if (empty($_REQUEST['nsp']) && empty($_REQUEST['ma'])) { + doDefault($lang['strspecifyschematodrop']); + exit(); + } + + if ($confirm) { + $misc->printTrail('schema'); + $misc->printTitle($lang['strdrop'],'pg.schema.drop'); + + echo "
\n"; + //If multi drop + if (isset($_REQUEST['ma'])) { + foreach($_REQUEST['ma'] as $v) { + $a = unserialize(htmlspecialchars_decode($v, ENT_QUOTES)); + echo '

', sprintf($lang['strconfdropschema'], $misc->printVal($a['nsp'])), "

\n"; + echo '\n"; + } + } + else { + echo "

", sprintf($lang['strconfdropschema'], $misc->printVal($_REQUEST['nsp'])), "

\n"; + echo "\n"; + } + + echo "

\n"; + echo "

\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + else { + if (is_array($_POST['nsp'])) { + $msg = ''; + $status = $data->beginTransaction(); + if ($status == 0) { + foreach($_POST['nsp'] as $s) { + $status = $data->dropSchema($s, isset($_POST['cascade'])); + if ($status == 0) + $msg.= sprintf('%s: %s
', htmlentities($s, ENT_QUOTES, 'UTF-8'), $lang['strschemadropped']); + else { + $data->endTransaction(); + doDefault(sprintf('%s%s: %s
', $msg, htmlentities($s, ENT_QUOTES, 'UTF-8'), $lang['strschemadroppedbad'])); + return; + } + } + } + if($data->endTransaction() == 0) { + // Everything went fine, back to the Default page.... + $_reload_browser = true; + doDefault($msg); + } + else doDefault($lang['strschemadroppedbad']); + } + else{ + $status = $data->dropSchema($_POST['nsp'], isset($_POST['cascade'])); + if ($status == 0) { + $_reload_browser = true; + doDefault($lang['strschemadropped']); + } + else + doDefault($lang['strschemadroppedbad']); + } + } + } + + /** + * Displays options for database download + */ + function doExport($msg = '') { + global $data, $misc; + global $lang; + + $misc->printTrail('schema'); + $misc->printTabs('schema','export'); + $misc->printMsg($msg); + + echo "
\n"; + echo "\n"; + echo "\n"; + // Data only + echo "\n"; + echo "\n"; + echo "\n\n"; + echo "\n\n"; + // Structure only + echo "\n"; + echo "\n\n"; + // Structure and data + echo "\n"; + echo "\n"; + echo "\n\n"; + echo "\n\n"; + echo "\n\n"; + echo "
{$lang['strformat']}{$lang['stroptions']}
"; + echo "{$lang['strformat']}\n
"; + echo "{$lang['strformat']}\n
\n"; + + echo "

{$lang['stroptions']}

\n"; + echo "

\n"; + echo "
\n"; + // MSIE cannot download gzip in SSL mode - it's just broken + if (!(strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE') && isset($_SERVER['HTTPS']))) { + echo "
\n"; + } + echo "

\n"; + echo "

\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo $misc->form; + echo "

\n"; + echo "
\n"; + } + + + + /** + * Generate XML for the browser tree. + */ + function doTree() { + global $misc, $data, $lang; + + $schemas = $data->getSchemas(); + + $reqvars = $misc->getRequestVars('schema'); + + $attrs = array( + 'text' => field('nspname'), + 'icon' => 'Schema', + 'toolTip'=> field('nspcomment'), + 'action' => url('redirect.php', + $reqvars, + array( + 'subject' => 'schema', + 'schema' => field('nspname') + ) + ), + 'branch' => url('schemas.php', + $reqvars, + array( + 'action' => 'subtree', + 'schema' => field('nspname') + ) + ), + ); + + $misc->printTree($schemas, $attrs, 'schemas'); + + exit; + } + + function doSubTree() { + global $misc, $data, $lang; + + $tabs = $misc->getNavTabs('schema'); + + $items = $misc->adjustTabsForTree($tabs); + + $reqvars = $misc->getRequestVars('schema'); + + $attrs = array( + 'text' => field('title'), + 'icon' => field('icon'), + 'action' => url(field('url'), + $reqvars, + field('urlvars', array()) + ), + 'branch' => url(field('url'), + $reqvars, + field('urlvars'), + array('action' => 'tree') + ) + ); + + $misc->printTree($items, $attrs, 'schema'); + exit; + } + + if ($action == 'tree') doTree(); + if ($action == 'subtree') doSubTree(); + + $misc->printHeader($lang['strschemas']); + $misc->printBody(); + + if (isset($_POST['cancel'])) $action = ''; + + switch ($action) { + case 'create': + if (isset($_POST['create'])) doSaveCreate(); + else doCreate(); + break; + case 'alter': + if (isset($_POST['alter'])) doSaveAlter(); + else doAlter(); + break; + case 'drop': + if (isset($_POST['drop'])) doDrop(false); + else doDrop(true); + break; + case 'export': + doExport(); + break; + default: + doDefault(); + break; + } + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/sequences.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/sequences.php new file mode 100644 index 00000000..a51878c0 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/sequences.php @@ -0,0 +1,728 @@ +printTrail('schema'); + $misc->printTabs('schema', 'sequences'); + $misc->printMsg($msg); + + // Get all sequences + $sequences = $data->getSequences(); + + $columns = array( + 'sequence' => array( + 'title' => $lang['strsequence'], + 'field' => field('seqname'), + 'url' => "sequences.php?action=properties&{$misc->href}&", + 'vars' => array('sequence' => 'seqname'), + ), + 'owner' => array( + 'title' => $lang['strowner'], + 'field' => field('seqowner'), + ), + 'actions' => array( + 'title' => $lang['stractions'], + ), + 'comment' => array( + 'title' => $lang['strcomment'], + 'field' => field('seqcomment'), + ), + ); + + $actions = array( + 'multiactions' => array( + 'keycols' => array('sequence' => 'seqname'), + 'url' => 'sequences.php', + ), + 'alter' => array( + 'content' => $lang['stralter'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'sequences.php', + 'urlvars' => array ( + 'action' => 'confirm_alter', + 'subject' => 'sequence', + 'sequence' => field('seqname') + ) + ) + ) + ), + 'drop' => array( + 'content' => $lang['strdrop'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'sequences.php', + 'urlvars' => array ( + 'action' => 'confirm_drop', + 'sequence' => field('seqname') + ) + ) + ), + 'multiaction' => 'confirm_drop', + ), + 'privileges' => array( + 'content' => $lang['strprivileges'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'privileges.php', + 'urlvars' => array ( + 'subject' => 'sequence', + 'sequence' => field('seqname') + ) + ) + ) + ), + ); + + $misc->printTable($sequences, $columns, $actions, 'sequences-sequences', $lang['strnosequences']); + + $misc->printNavLinks(array ('create' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'sequences.php', + 'urlvars' => array ( + 'action' => 'create', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'] + ) + ) + ), + 'content' => $lang['strcreatesequence'] + )), 'sequences-sequences', get_defined_vars()); + } + + /** + * Generate XML for the browser tree. + */ + function doTree() { + global $misc, $data; + + $sequences = $data->getSequences(); + + $reqvars = $misc->getRequestVars('sequence'); + + $attrs = array( + 'text' => field('seqname'), + 'icon' => 'Sequence', + 'toolTip'=> field('seqcomment'), + 'action' => url('sequences.php', + $reqvars, + array ( + 'action' => 'properties', + 'sequence' => field('seqname') + ) + ) + ); + + $misc->printTree($sequences, $attrs, 'sequences'); + exit; + } + + /** + * Display the properties of a sequence + */ + function doProperties($msg = '') { + global $data, $misc; + global $lang; + + $misc->printTrail('sequence'); + $misc->printTitle($lang['strproperties'],'pg.sequence'); + $misc->printMsg($msg); + + // Fetch the sequence information + $sequence = $data->getSequence($_REQUEST['sequence']); + + if (is_object($sequence) && $sequence->recordCount() > 0) { + $sequence->fields['is_cycled'] = $data->phpBool($sequence->fields['is_cycled']); + $sequence->fields['is_called'] = $data->phpBool($sequence->fields['is_called']); + + // Show comment if any + if ($sequence->fields['seqcomment'] !== null) + echo "

", $misc->printVal($sequence->fields['seqcomment']), "

\n"; + + echo ""; + echo ""; + if ($data->hasAlterSequenceStart()) { + echo ""; + } + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + if ($data->hasAlterSequenceStart()) { + echo ""; + } + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo "
{$lang['strname']}{$lang['strstartvalue']}{$lang['strlastvalue']}{$lang['strincrementby']}{$lang['strmaxvalue']}{$lang['strminvalue']}{$lang['strcachevalue']}{$lang['strlogcount']}{$lang['strcancycle']}{$lang['striscalled']}
", $misc->printVal($sequence->fields['seqname']), "", $misc->printVal($sequence->fields['start_value']), "", $misc->printVal($sequence->fields['last_value']), "", $misc->printVal($sequence->fields['increment_by']), "", $misc->printVal($sequence->fields['max_value']), "", $misc->printVal($sequence->fields['min_value']), "", $misc->printVal($sequence->fields['cache_value']), "", $misc->printVal($sequence->fields['log_cnt']), "", ($sequence->fields['is_cycled'] ? $lang['stryes'] : $lang['strno']), "", ($sequence->fields['is_called'] ? $lang['stryes'] : $lang['strno']), "
"; + + $navlinks = array ( + 'alter' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'sequences.php', + 'urlvars' => array ( + 'action' => 'confirm_alter', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'sequence' => $sequence->fields['seqname'] + ) + ) + ), + 'content' => $lang['stralter'] + ), + 'setval' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'sequences.php', + 'urlvars' => array ( + 'action' => 'confirm_setval', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'sequence' => $sequence->fields['seqname'] + ) + ) + ), + 'content' => $lang['strsetval'] + ), + 'nextval' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'sequences.php', + 'urlvars' => array ( + 'action' => 'nextval', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'sequence' => $sequence->fields['seqname'] + ) + ) + ), + 'content' => $lang['strnextval'] + ), + 'restart' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'sequences.php', + 'urlvars' => array ( + 'action' => 'restart', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'sequence' => $sequence->fields['seqname'] + ) + ) + ), + 'content' => $lang['strrestart'] + ), + 'reset' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'sequences.php', + 'urlvars' => array ( + 'action' => 'reset', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'sequence' => $sequence->fields['seqname'] + ) + ) + ), + 'content' => $lang['strreset'] + ), + 'showall' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'sequences.php', + 'urlvars' => array ( + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'] + ) + ) + ), + 'content' => $lang['strshowallsequences'] + ) + ); + + if (! $data->hasAlterSequenceStart()) + unset($navlinks['restart']); + + $misc->printNavLinks($navlinks, 'sequences-properties', get_defined_vars()); + } + else echo "

{$lang['strnodata']}

\n"; + } + + /** + * Drop a sequence + */ + function doDrop($confirm, $msg = '') { + global $data, $misc; + global $lang; + + if (empty($_REQUEST['sequence']) && empty($_REQUEST['ma'])) { + doDefault($lang['strspecifysequencetodrop']); + exit(); + } + + if ($confirm) { + $misc->printTrail('sequence'); + $misc->printTitle($lang['strdrop'],'pg.sequence.drop'); + $misc->printMsg($msg); + + echo "
\n"; + + //If multi drop + if (isset($_REQUEST['ma'])) { + foreach($_REQUEST['ma'] as $v) { + $a = unserialize(htmlspecialchars_decode($v, ENT_QUOTES)); + echo "

", sprintf($lang['strconfdropsequence'], $misc->printVal($a['sequence'])), "

\n"; + printf('', htmlspecialchars($a['sequence'])); + } + } else { + echo "

", sprintf($lang['strconfdropsequence'], $misc->printVal($_REQUEST['sequence'])), "

\n"; + echo "\n"; + } + + echo "

\n"; + echo "

\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + else { + if (is_array($_POST['sequence'])) { + $msg = ''; + $status = $data->beginTransaction(); + if ($status == 0) { + foreach($_POST['sequence'] as $s) { + $status = $data->dropSequence($s, isset($_POST['cascade'])); + if ($status == 0) + $msg.= sprintf('%s: %s
', htmlentities($s, ENT_QUOTES, 'UTF-8'), $lang['strsequencedropped']); + else { + $data->endTransaction(); + doDefault(sprintf('%s%s: %s
', $msg, htmlentities($s, ENT_QUOTES, 'UTF-8'), $lang['strsequencedroppedbad'])); + return; + } + } + } + if($data->endTransaction() == 0) { + // Everything went fine, back to the Default page.... + $_reload_browser = true; + doDefault($msg); + } + else doDefault($lang['strsequencedroppedbad']); + } + else{ + $status = $data->dropSequence($_POST['sequence'], isset($_POST['cascade'])); + if ($status == 0) { + $_reload_browser = true; + doDefault($lang['strsequencedropped']); + } + else + doDrop(true, $lang['strsequencedroppedbad']); + } + } + } + + /** + * Displays a screen where they can enter a new sequence + */ + function doCreateSequence($msg = '') { + global $data, $misc; + global $lang; + + if (!isset($_POST['formSequenceName'])) $_POST['formSequenceName'] = ''; + if (!isset($_POST['formIncrement'])) $_POST['formIncrement'] = ''; + if (!isset($_POST['formMinValue'])) $_POST['formMinValue'] = ''; + if (!isset($_POST['formMaxValue'])) $_POST['formMaxValue'] = ''; + if (!isset($_POST['formStartValue'])) $_POST['formStartValue'] = ''; + if (!isset($_POST['formCacheValue'])) $_POST['formCacheValue'] = ''; + + $misc->printTrail('schema'); + $misc->printTitle($lang['strcreatesequence'],'pg.sequence.create'); + $misc->printMsg($msg); + + echo "
\n"; + echo "\n"; + + echo "\n"; + echo "\n"; + + echo "\n"; + echo "\n"; + + echo "\n"; + echo "\n"; + + echo "\n"; + echo "\n"; + + echo "\n"; + echo "\n"; + + echo "\n"; + echo "\n"; + + echo "\n"; + echo "\n"; + + echo "
{$lang['strname']}_maxNameLen}\" value=\"", + htmlspecialchars($_POST['formSequenceName']), "\" />
{$lang['strincrementby']}
{$lang['strminvalue']}
{$lang['strmaxvalue']}
{$lang['strstartvalue']}
{$lang['strcachevalue']}
\n"; + echo "

\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + + /** + * Actually creates the new sequence in the database + */ + function doSaveCreateSequence() { + global $data; + global $lang; + + // Check that they've given a name and at least one column + if ($_POST['formSequenceName'] == '') doCreateSequence($lang['strsequenceneedsname']); + else { + $status = $data->createSequence($_POST['formSequenceName'], + $_POST['formIncrement'], $_POST['formMinValue'], + $_POST['formMaxValue'], $_POST['formStartValue'], + $_POST['formCacheValue'], isset($_POST['formCycledValue'])); + if ($status == 0) { + doDefault($lang['strsequencecreated']); + } else { + doCreateSequence($lang['strsequencecreatedbad']); + } + } + } + + /** + * Restarts a sequence + */ + function doRestart() { + global $data; + global $lang; + + $status = $data->restartSequence($_REQUEST['sequence']); + if ($status == 0) + doProperties($lang['strsequencerestart']); + else + doProperties($lang['strsequencerestartbad']); + } + + /** + * Resets a sequence + */ + function doReset() { + global $data; + global $lang; + + $status = $data->resetSequence($_REQUEST['sequence']); + if ($status == 0) + doProperties($lang['strsequencereset']); + else + doProperties($lang['strsequenceresetbad']); + } + + /** + * Set Nextval of a sequence + */ + function doNextval() { + global $data; + global $lang; + + $status = $data->nextvalSequence($_REQUEST['sequence']); + if ($status == 0) + doProperties($lang['strsequencenextval']); + else + doProperties($lang['strsequencenextvalbad']); + } + + /** + * Function to save after 'setval'ing a sequence + */ + function doSaveSetval() { + global $data, $lang, $_reload_browser; + + $status = $data->setvalSequence($_POST['sequence'], $_POST['nextvalue']); + if ($status == 0) + doProperties($lang['strsequencesetval']); + else + doProperties($lang['strsequencesetvalbad']); + } + + /** + * Function to allow 'setval'ing of a sequence + */ + function doSetval($msg = '') { + global $data, $misc; + global $lang; + + $misc->printTrail('sequence'); + $misc->printTitle($lang['strsetval'], 'pg.sequence'); + $misc->printMsg($msg); + + // Fetch the sequence information + $sequence = $data->getSequence($_REQUEST['sequence']); + + if (is_object($sequence) && $sequence->recordCount() > 0) { + echo "
\n"; + echo ""; + echo "\n"; + echo "\n"; + echo "
{$lang['strlastvalue']}"; + echo "_maxNameLen}\" value=\"", + $misc->printVal($sequence->fields['last_value']), "\" />
\n"; + echo "

\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + else echo "

{$lang['strnodata']}

\n"; + } + + /** + * Function to save after altering a sequence + */ + function doSaveAlter() { + global $data, $lang, $_reload_browser, $misc; + + + if (!isset($_POST['owner'])) $_POST['owner'] = null; + if (!isset($_POST['newschema'])) $_POST['newschema'] = null; + if (!isset($_POST['formIncrement'])) $_POST['formIncrement'] = null; + if (!isset($_POST['formMinValue'])) $_POST['formMinValue'] = null; + if (!isset($_POST['formMaxValue'])) $_POST['formMaxValue'] = null; + if (!isset($_POST['formStartValue'])) $_POST['formStartValue'] = null; + if (!isset($_POST['formRestartValue'])) $_POST['formRestartValue'] = null; + if (!isset($_POST['formCacheValue'])) $_POST['formCacheValue'] = null; + if (!isset($_POST['formCycledValue'])) $_POST['formCycledValue'] = null; + + $status = $data->alterSequence($_POST['sequence'], $_POST['name'], $_POST['comment'], $_POST['owner'], + $_POST['newschema'], $_POST['formIncrement'], $_POST['formMinValue'], $_POST['formMaxValue'], + $_POST['formRestartValue'], $_POST['formCacheValue'], isset($_POST['formCycledValue']), $_POST['formStartValue']); + + if ($status == 0) { + if ($_POST['sequence'] != $_POST['name']) { + // Jump them to the new view name + $_REQUEST['sequence'] = $_POST['name']; + // Force a browser reload + $_reload_browser = true; + } + if (!empty($_POST['newschema']) && ($_POST['newschema'] != $data->_schema)) { + // Jump them to the new sequence schema + $misc->setCurrentSchema($_POST['newschema']); + $_reload_browser = true; + } + doProperties($lang['strsequencealtered']); + } + else + doProperties($lang['strsequencealteredbad']); + } + + /** + * Function to allow altering of a sequence + */ + function doAlter($msg = '') { + global $data, $misc; + global $lang; + + $misc->printTrail('sequence'); + $misc->printTitle($lang['stralter'], 'pg.sequence.alter'); + $misc->printMsg($msg); + + // Fetch the sequence information + $sequence = $data->getSequence($_REQUEST['sequence']); + + if (is_object($sequence) && $sequence->recordCount() > 0) { + if (!isset($_POST['name'])) $_POST['name'] = $_REQUEST['sequence']; + if (!isset($_POST['comment'])) $_POST['comment'] = $sequence->fields['seqcomment']; + if (!isset($_POST['owner'])) $_POST['owner'] = $sequence->fields['seqowner']; + if (!isset($_POST['newschema'])) $_POST['newschema'] = $sequence->fields['nspname']; + + // Handle Checkbox Value + $sequence->fields['is_cycled'] = $data->phpBool($sequence->fields['is_cycled']); + if ($sequence->fields['is_cycled']) $_POST['formCycledValue'] = 'on'; + + echo "
\n"; + echo "\n"; + + echo "\n"; + echo "\n"; + + if ($data->isSuperUser()) { + // Fetch all users + $users = $data->getUsers(); + + echo "\n"; + echo "\n"; + } + + if ($data->hasAlterSequenceSchema()) { + $schemas = $data->getSchemas(); + echo "\n"; + echo "\n"; + } + + echo "\n"; + echo "\n"; + + if ($data->hasAlterSequenceStart()) { + echo "\n"; + echo "\n"; + } + + echo "\n"; + echo "\n"; + + echo "\n"; + echo "\n"; + + echo "\n"; + echo "\n"; + + echo "\n"; + echo "\n"; + + echo "\n"; + echo "\n"; + + echo "\n"; + echo "\n"; + + echo "
{$lang['strname']}"; + echo "_maxNameLen}\" value=\"", + htmlspecialchars($_POST['name']), "\" />
{$lang['strowner']}
{$lang['strschema']}
{$lang['strcomment']}"; + echo "
{$lang['strstartvalue']}fields['start_value']), "\" />
{$lang['strrestartvalue']}fields['last_value']), "\" />
{$lang['strincrementby']}fields['increment_by']), "\" />
{$lang['strmaxvalue']}fields['max_value']), "\" />
{$lang['strminvalue']}fields['min_value']), "\" />
{$lang['strcachevalue']}fields['cache_value']), "\" />
\n"; + echo "

\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + else echo "

{$lang['strnodata']}

\n"; + } + + if ($action == 'tree') doTree(); + + // Print header + $misc->printHeader($lang['strsequences']); + $misc->printBody(); + + switch($action) { + case 'create': + doCreateSequence(); + break; + case 'save_create_sequence': + if (isset($_POST['create'])) doSaveCreateSequence(); + else doDefault(); + break; + case 'properties': + doProperties(); + break; + case 'drop': + if (isset($_POST['drop'])) doDrop(false); + else doDefault(); + break; + case 'confirm_drop': + doDrop(true); + break; + case 'restart': + doRestart(); + break; + case 'reset': + doReset(); + break; + case 'nextval': + doNextval(); + break; + case 'setval': + if (isset($_POST['setval'])) doSaveSetval(); + else doDefault(); + break; + case 'confirm_setval': + doSetval(); + break; + case 'alter': + if (isset($_POST['alter'])) doSaveAlter(); + else doDefault(); + break; + case 'confirm_alter': + doAlter(); + break; + default: + doDefault(); + break; + } + + // Print footer + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/servers.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/servers.php new file mode 100644 index 00000000..a33687f6 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/servers.php @@ -0,0 +1,175 @@ +do_hook('logout', $_REQUEST['logoutServer']); + + $server_info = $misc->getServerInfo($_REQUEST['logoutServer']); + $misc->setServerInfo(null, null, $_REQUEST['logoutServer']); + + unset($_SESSION['sharedUsername'], $_SESSION['sharedPassword']); + + doDefault(sprintf($lang['strlogoutmsg'], $server_info['desc'])); + + $_reload_browser = true; + } + + function doDefault($msg = '') { + global $conf, $misc; + global $lang; + + $misc->printTabs('root','servers'); + $misc->printMsg($msg); + $group = isset($_GET['group']) ? $_GET['group'] : false; + + $groups = $misc->getServersGroups(true,$group); + + $columns = array( + 'group' => array( + 'title' => $lang['strgroup'], + 'field' => field('desc'), + 'url' => 'servers.php?', + 'vars' => array('group' => 'id'), + ), + ); + $actions = array(); + + if (($group !== false) and (isset($conf['srv_groups'][$group])) and ($groups->recordCount()>0)) { + $misc->printTitle(sprintf($lang['strgroupgroups'],htmlentities($conf['srv_groups'][$group]['desc'], ENT_QUOTES, 'UTF-8'))); + } + + $misc->printTable($groups, $columns, $actions,'servers-servers'); + + $servers = $misc->getServers(true, $group); + + function svPre(&$rowdata, $actions) { + $actions['logout']['disable'] = empty($rowdata->fields['username']); + return $actions; + } + + $columns = array( + 'server' => array( + 'title' => $lang['strserver'], + 'field' => field('desc'), + 'url' => "redirect.php?subject=server&", + 'vars' => array('server' => 'id'), + ), + 'host' => array( + 'title' => $lang['strhost'], + 'field' => field('host'), + ), + 'port' => array( + 'title' => $lang['strport'], + 'field' => field('port'), + ), + 'username' => array( + 'title' => $lang['strusername'], + 'field' => field('username'), + ), + 'actions' => array( + 'title' => $lang['stractions'], + ), + ); + + $actions = array( + 'logout' => array( + 'content' => $lang['strlogout'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'servers.php', + 'urlvars' => array ( + 'action' => 'logout', + 'logoutServer' => field('id') + ) + ) + ) + ), + ); + + if (($group !== false) and isset($conf['srv_groups'][$group])) { + $misc->printTitle(sprintf($lang['strgroupservers'],htmlentities($conf['srv_groups'][$group]['desc'], ENT_QUOTES, 'UTF-8'))); + $actions['logout']['attr']['href']['urlvars']['group'] = $group; + } + + $misc->printTable($servers, $columns, $actions, 'servers-servers', $lang['strnoobjects'], 'svPre'); + } + + function doTree() { + global $misc, $conf; + + $nodes = array(); + $group_id = isset($_GET['group']) ? $_GET['group'] : false; + + /* root with srv_groups */ + if (isset($conf['srv_groups']) and count($conf['srv_groups']) > 0 + and $group_id === false) + { + $nodes = $misc->getServersGroups(true); + } + /* group subtree */ + else if (isset($conf['srv_groups']) and $group_id !== false) { + if ($group_id !== 'all') + $nodes = $misc->getServersGroups(false, $group_id); + $nodes = array_merge($nodes, $misc->getServers(false, $group_id)); + include_once('./classes/ArrayRecordSet.php'); + $nodes = new ArrayRecordSet($nodes); + } + /* no srv_group */ + else { + $nodes = $misc->getServers(true, false); + } + + $reqvars = $misc->getRequestVars('server'); + + $attrs = array( + 'text' => field('desc'), + + // Show different icons for logged in/out + 'icon' => field('icon'), + + 'toolTip'=> field('id'), + + 'action' => field('action'), + + // Only create a branch url if the user has + // logged into the server. + 'branch' => field('branch'), + ); + + $misc->printTree($nodes, $attrs, 'servers'); + exit; + } + + + if ($action == 'tree') + doTree(); + + $misc->printHeader($lang['strservers']); + $misc->printBody(); + $misc->printTrail('root'); + + switch ($action) { + case 'logout': + doLogout(); + break; + default: + doDefault($msg); + break; + } + + $misc->printFooter(); +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/sql.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/sql.php new file mode 100644 index 00000000..b2ad46de --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/sql.php @@ -0,0 +1,263 @@ +getLastError())), "
\n"; + } + else { + // Print query results + switch (pg_result_status($rs)) { + case PGSQL_TUPLES_OK: + // If rows returned, then display the results + $num_fields = pg_numfields($rs); + echo "

\n"; + for ($k = 0; $k < $num_fields; $k++) { + echo ""; + } + + $i = 0; + $row = pg_fetch_row($rs); + while ($row !== false) { + $id = (($i % 2) == 0 ? '1' : '2'); + echo "\n"; + foreach ($row as $k => $v) { + echo ""; + } + echo "\n"; + $row = pg_fetch_row($rs); + $i++; + }; + echo "
", $misc->printVal(pg_fieldname($rs, $k)), "
", $misc->printVal($v, pg_fieldtype($rs, $k), array('null' => true)), "

\n"; + echo $i, " {$lang['strrows']}

\n"; + break; + case PGSQL_COMMAND_OK: + // If we have the command completion tag + if (version_compare(phpversion(), '4.3', '>=')) { + echo htmlspecialchars(pg_result_status($rs, PGSQL_STATUS_STRING)), "
\n"; + } + // Otherwise if any rows have been affected + elseif ($data->conn->Affected_Rows() > 0) { + echo $data->conn->Affected_Rows(), " {$lang['strrowsaff']}
\n"; + } + // Otherwise output nothing... + break; + case PGSQL_EMPTY_QUERY: + break; + default: + break; + } + } + } + + // We need to store the query in a session for editing purposes + // We avoid GPC vars to avoid truncating long queries + if (isset($_REQUEST['subject']) && $_REQUEST['subject'] == 'history') { + // Or maybe we came from the history popup + $_SESSION['sqlquery'] = $_SESSION['history'][$_REQUEST['server']][$_REQUEST['database']][$_GET['queryid']]['query']; + } + elseif (isset($_POST['query'])) { + // Or maybe we came from an sql form + $_SESSION['sqlquery'] = $_POST['query']; + } + else { + echo "could not find the query!!"; + } + + // Pagination maybe set by a get link that has it as FALSE, + // if that's the case, unset the variable. + + if (isset($_REQUEST['paginate']) && $_REQUEST['paginate'] == 'f') { + unset($_REQUEST['paginate']); + unset($_POST['paginate']); + unset($_GET['paginate']); + } + // Check to see if pagination has been specified. In that case, send to display + // script for pagination + /* if a file is given or the request is an explain, do not paginate */ + if (isset($_REQUEST['paginate']) && !(isset($_FILES['script']) && $_FILES['script']['size'] > 0) + && (preg_match('/^\s*explain/i', $_SESSION['sqlquery']) == 0)) { + include('./display.php'); + exit; + } + + $subject = isset($_REQUEST['subject'])? $_REQUEST['subject'] : ''; + $misc->printHeader($lang['strqueryresults']); + $misc->printBody(); + $misc->printTrail('database'); + $misc->printTitle($lang['strqueryresults']); + + // Set the schema search path + if (isset($_REQUEST['search_path'])) { + if ($data->setSearchPath(array_map('trim',explode(',',$_REQUEST['search_path']))) != 0) { + $misc->printFooter(); + exit; + } + } + + // May as well try to time the query + if (function_exists('microtime')) { + list($usec, $sec) = explode(' ', microtime()); + $start_time = ((float)$usec + (float)$sec); + } + else $start_time = null; + // Execute the query. If it's a script upload, special handling is necessary + if (isset($_FILES['script']) && $_FILES['script']['size'] > 0) + $data->executeScript('script', 'sqlCallback'); + else { + // Set fetch mode to NUM so that duplicate field names are properly returned + $data->conn->setFetchMode(ADODB_FETCH_NUM); + $rs = $data->conn->Execute($_SESSION['sqlquery']); + + // $rs will only be an object if there is no error + if (is_object($rs)) { + // Request was run, saving it in history + if(!isset($_REQUEST['nohistory'])) + $misc->saveScriptHistory($_SESSION['sqlquery']); + + // Now, depending on what happened do various things + + // First, if rows returned, then display the results + if ($rs->recordCount() > 0) { + echo "\n"; + foreach ($rs->fields as $k => $v) { + $finfo = $rs->fetchField($k); + echo ""; + } + echo "\n"; + $i = 0; + while (!$rs->EOF) { + $id = (($i % 2) == 0 ? '1' : '2'); + echo "\n"; + foreach ($rs->fields as $k => $v) { + $finfo = $rs->fetchField($k); + echo ""; + } + echo "\n"; + $rs->moveNext(); + $i++; + } + echo "
", $misc->printVal($finfo->name), "
", $misc->printVal($v, $finfo->type, array('null' => true)), "
\n"; + echo "

", $rs->recordCount(), " {$lang['strrows']}

\n"; + } + // Otherwise if any rows have been affected + elseif ($data->conn->Affected_Rows() > 0) { + echo "

", $data->conn->Affected_Rows(), " {$lang['strrowsaff']}

\n"; + } + // Otherwise nodata to print + else echo '

', $lang['strnodata'], "

\n"; + } + } + + // May as well try to time the query + if ($start_time !== null) { + list($usec, $sec) = explode(' ', microtime()); + $end_time = ((float)$usec + (float)$sec); + // Get duration in milliseconds, round to 3dp's + $duration = number_format(($end_time - $start_time) * 1000, 3); + } + else $duration = null; + + // Reload the browser as we may have made schema changes + $_reload_browser = true; + + // Display duration if we know it + if ($duration !== null) { + echo "

", sprintf($lang['strruntime'], $duration), "

\n"; + } + + echo "

{$lang['strsqlexecuted']}

\n"; + + $navlinks = array(); + $fields = array( + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + ); + + if(isset($_REQUEST['schema'])) + $fields['schema'] = $_REQUEST['schema']; + + // Return + if (isset($_REQUEST['return'])) { + $urlvars = $misc->getSubjectParams($_REQUEST['return']); + $navlinks['back'] = array ( + 'attr'=> array ( + 'href' => array ( + 'url' => $urlvars['url'], + 'urlvars' => $urlvars['params'] + ) + ), + 'content' => $lang['strback'] + ); + } + + // Edit + $navlinks['alter'] = array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'database.php', + 'urlvars' => array_merge($fields, array ( + 'action' => 'sql', + )) + ) + ), + 'content' => $lang['streditsql'] + ); + + // Create view and download + if (isset($_SESSION['sqlquery']) && isset($rs) && is_object($rs) && $rs->recordCount() > 0) { + // Report views don't set a schema, so we need to disable create view in that case + if (isset($_REQUEST['schema'])) { + $navlinks['createview'] = array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'views.php', + 'urlvars' => array_merge($fields, array ( + 'action' => 'create' + )) + ) + ), + 'content' => $lang['strcreateview'] + ); + } + + if (isset($_REQUEST['search_path'])) + $fields['search_path'] = $_REQUEST['search_path']; + + $navlinks['download'] = array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'dataexport.php', + 'urlvars' => $fields + ) + ), + 'content' => $lang['strdownload'] + ); + } + + $misc->printNavLinks($navlinks, 'sql-form', get_defined_vars()); + + $misc->printFooter(); +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/sqledit.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/sqledit.php new file mode 100644 index 00000000..124371d2 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/sqledit.php @@ -0,0 +1,156 @@ +printConnection($onchange); + } + + /** + * Searches for a named database object + */ + function doFind() { + global $data, $misc; + global $lang, $conf; + + if (!isset($_REQUEST['term'])) $_REQUEST['term'] = ''; + if (!isset($_REQUEST['filter'])) $_REQUEST['filter'] = ''; + + $misc->printHeader($lang['strfind']); + + // Bring to the front always + echo "\n"; + + $misc->printTabs($misc->getNavTabs('popup'), 'find'); + + echo "
\n"; + _printConnection(); + echo "

_maxNameLen}\" />\n"; + + // Output list of filters. This is complex due to all the 'has' and 'conf' feature possibilities + echo "\n"; + + echo "\n"; + echo "

\n"; + echo "
\n"; + + // Default focus + $misc->setFocus('forms[0].term'); + } + + /** + * Allow execution of arbitrary SQL statements on a database + */ + function doDefault() { + global $data, $misc; + global $lang; + + if (!isset($_SESSION['sqlquery'])) $_SESSION['sqlquery'] = ''; + + $misc->printHeader($lang['strsql']); + + // Bring to the front always + echo "\n"; + + $misc->printTabs($misc->getNavTabs('popup'), 'sql'); + + echo "
\n"; + _printConnection(); + echo "\n"; + if (!isset($_REQUEST['search_path'])) + $_REQUEST['search_path'] = implode(',',$data->getSearchPath()); + + echo "

\n"; + + echo "\n"; + + // Check that file uploads are enabled + if (ini_get('file_uploads')) { + // Don't show upload option if max size of uploads is zero + $max_size = $misc->inisizeToBytes(ini_get('upload_max_filesize')); + if (is_double($max_size) && $max_size > 0) { + echo "

\n"; + echo "

\n"; + } + } + + echo "

\n"; + + echo "

\n"; + echo "

\n"; + echo "
\n"; + + // Default focus + $misc->setFocus('forms[0].query'); + } + + switch ($action) { + case 'find': + doFind(); + break; + case 'sql': + default: + doDefault(); + break; + } + + // Set the name of the window + $misc->setWindowName('sqledit'); + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/tables.js b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/tables.js new file mode 100644 index 00000000..a805a8b4 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/tables.js @@ -0,0 +1,18 @@ +var predefined_lengths = null; +var sizesLength = false; + +function checkLengths(sValue,idx) { + if(predefined_lengths) { + if(sizesLength==false) { + sizesLength = predefined_lengths.length; + } + for(var i=0;igetDefaultWithOid(); + if ($default_with_oids == 'off') $_REQUEST['withoutoids'] = 'on'; + } + + if (!isset($_REQUEST['name'])) $_REQUEST['name'] = ''; + if (!isset($_REQUEST['fields'])) $_REQUEST['fields'] = ''; + if (!isset($_REQUEST['tblcomment'])) $_REQUEST['tblcomment'] = ''; + if (!isset($_REQUEST['spcname'])) $_REQUEST['spcname'] = ''; + + switch ($_REQUEST['stage']) { + case 1: + // Fetch all tablespaces from the database + if ($data->hasTablespaces()) $tablespaces = $data->getTablespaces(); + + $misc->printTrail('schema'); + $misc->printTitle($lang['strcreatetable'], 'pg.table.create'); + $misc->printMsg($msg); + + echo "
\n"; + echo "\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + + // Tablespace (if there are any) + if ($data->hasTablespaces() && $tablespaces->recordCount() > 0) { + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + } + + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + + echo "
{$lang['strname']}_maxNameLen}\" value=\"", + htmlspecialchars($_REQUEST['name']), "\" />
{$lang['strnumcols']}_maxNameLen}\" value=\"", + htmlspecialchars($_REQUEST['fields']), "\" />
{$lang['stroptions']}
{$lang['strtablespace']}\n\t\t\t\n\t\t
{$lang['strcomment']}
\n"; + echo "

\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + break; + case 2: + global $lang; + + // Check inputs + $fields = trim($_REQUEST['fields']); + if (trim($_REQUEST['name']) == '') { + $_REQUEST['stage'] = 1; + doCreate($lang['strtableneedsname']); + return; + } + elseif ($fields == '' || !is_numeric($fields) || $fields != (int)$fields || $fields < 1) { + $_REQUEST['stage'] = 1; + doCreate($lang['strtableneedscols']); + return; + } + + $types = $data->getTypes(true, false, true); + $types_for_js = array(); + + $misc->printTrail('schema'); + $misc->printTitle($lang['strcreatetable'], 'pg.table.create'); + $misc->printMsg($msg); + + echo ""; + echo "
\n"; + + // Output table header + echo "\n"; + echo "\t"; + echo ""; + echo ""; + echo "\n"; + + for ($i = 0; $i < $_REQUEST['fields']; $i++) { + if (!isset($_REQUEST['field'][$i])) $_REQUEST['field'][$i] = ''; + if (!isset($_REQUEST['length'][$i])) $_REQUEST['length'][$i] = ''; + if (!isset($_REQUEST['default'][$i])) $_REQUEST['default'][$i] = ''; + if (!isset($_REQUEST['colcomment'][$i])) $_REQUEST['colcomment'][$i] = ''; + + echo "\t\n\t\t\n"; + echo "\t\t\n"; + echo "\t\t"; + } + + // Output array type selector + echo "\t\t\n"; + + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n\t\n"; + } + echo "
{$lang['strcolumn']}{$lang['strtype']}{$lang['strlength']}{$lang['strnotnull']}{$lang['struniquekey']}{$lang['strprimarykey']}{$lang['strdefault']}{$lang['strcomment']}
", $i + 1, ". _maxNameLen}\" value=\"", + htmlspecialchars($_REQUEST['field'][$i]), "\" />\n\t\t\t\n\t\t\n"; + if($i==0) { // only define js types array once + $predefined_size_types = array_intersect($data->predefined_size_types,array_keys($types_for_js)); + $escaped_predef_types = array(); // the JS escaped array elements + foreach($predefined_size_types as $value) { + $escaped_predef_types[] = "'{$value}'"; + } + echo "\n\t\n\t\t\t\n\t\t + +
\n"; + echo "

\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + if (isset($_REQUEST['withoutoids'])) { + echo "\n"; + } + echo "\n"; + if (isset($_REQUEST['spcname'])) { + echo "\n"; + } + echo "\n"; + echo "

\n"; + echo "
\n"; + + break; + case 3: + global $data, $lang, $_reload_browser; + + if (!isset($_REQUEST['notnull'])) $_REQUEST['notnull'] = array(); + if (!isset($_REQUEST['uniquekey'])) $_REQUEST['uniquekey'] = array(); + if (!isset($_REQUEST['primarykey'])) $_REQUEST['primarykey'] = array(); + if (!isset($_REQUEST['length'])) $_REQUEST['length'] = array(); + // Default tablespace to null if it isn't set + if (!isset($_REQUEST['spcname'])) $_REQUEST['spcname'] = null; + + // Check inputs + $fields = trim($_REQUEST['fields']); + if (trim($_REQUEST['name']) == '') { + $_REQUEST['stage'] = 1; + doCreate($lang['strtableneedsname']); + return; + } + elseif ($fields == '' || !is_numeric($fields) || $fields != (int)$fields || $fields <= 0) { + $_REQUEST['stage'] = 1; + doCreate($lang['strtableneedscols']); + return; + } + + $status = $data->createTable($_REQUEST['name'], $_REQUEST['fields'], $_REQUEST['field'], + $_REQUEST['type'], $_REQUEST['array'], $_REQUEST['length'], $_REQUEST['notnull'], $_REQUEST['default'], + isset($_REQUEST['withoutoids']), $_REQUEST['colcomment'], $_REQUEST['tblcomment'], $_REQUEST['spcname'], + $_REQUEST['uniquekey'], $_REQUEST['primarykey']); + + if ($status == 0) { + $_reload_browser = true; + doDefault($lang['strtablecreated']); + } + elseif ($status == -1) { + $_REQUEST['stage'] = 2; + doCreate($lang['strtableneedsfield']); + return; + } + else { + $_REQUEST['stage'] = 2; + doCreate($lang['strtablecreatedbad']); + return; + } + break; + default: + echo "

{$lang['strinvalidparam']}

\n"; + } + } + + /** + * Dsiplay a screen where user can create a table from an existing one. + * We don't have to check if pg supports schema cause create table like + * is available under pg 7.4+ which has schema. + */ + function doCreateLike($confirm, $msg = '') { + global $data, $misc, $lang; + + if (!$confirm) { + + include_once('./classes/Gui.php'); + + if (!isset($_REQUEST['name'])) $_REQUEST['name'] = ''; + if (!isset($_REQUEST['like'])) $_REQUEST['like'] = ''; + if (!isset($_REQUEST['tablespace'])) $_REQUEST['tablespace'] = ''; + + $misc->printTrail('schema'); + $misc->printTitle($lang['strcreatetable'], 'pg.table.create'); + $misc->printMsg($msg); + + $tbltmp = $data->getTables(true); + $tbltmp = $tbltmp->getArray(); + + $tables = array(); + $tblsel = ''; + foreach ($tbltmp as $a) { + $data->fieldClean($a['nspname']); + $data->fieldClean($a['relname']); + $tables["\"{$a['nspname']}\".\"{$a['relname']}\""] = serialize(array('schema' => $a['nspname'], 'table' => $a['relname'])); + if ($_REQUEST['like'] == $tables["\"{$a['nspname']}\".\"{$a['relname']}\""]) + $tblsel = htmlspecialchars($tables["\"{$a['nspname']}\".\"{$a['relname']}\""]); + } + + unset($tbltmp); + + echo "
\n"; + echo "\n\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + if ($data->hasTablespaces()) { + $tblsp_ = $data->getTablespaces(); + if ($tblsp_->recordCount() > 0) { + $tblsp_ = $tblsp_->getArray(); + $tblsp = array(); + foreach($tblsp_ as $a) $tblsp[$a['spcname']] = $a['spcname']; + + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + } + } + echo "\t\n\t\t\n\t\t\n\t\n"; + echo "
{$lang['strname']}_maxNameLen}\" value=\"", htmlspecialchars($_REQUEST['name']), "\" />
{$lang['strcreatetablelikeparent']}"; + echo GUI::printCombo($tables, 'like', true, $tblsel, false); + echo "
{$lang['strtablespace']}"; + echo GUI::printCombo($tblsp, 'tablespace', true, $_REQUEST['tablespace'], false); + echo "
{$lang['stroptions']}"; + echo ""; + if ($data->hasCreateTableLikeWithConstraints()) { + echo "
"; + } + if ($data->hasCreateTableLikeWithIndexes()) { + echo "
"; + } + echo "
"; + + echo "\n"; + echo $misc->form; + echo "

\n"; + echo "

\n"; + echo "
\n"; + } + else { + global $_reload_browser; + + if (trim($_REQUEST['name']) == '') { + doCreateLike(false, $lang['strtableneedsname']); + return; + } + if (trim($_REQUEST['like']) == '') { + doCreateLike(false, $lang['strtablelikeneedslike']); + return; + } + + if (!isset($_REQUEST['tablespace'])) $_REQUEST['tablespace'] = ''; + + $status = $data->createTableLike($_REQUEST['name'], unserialize($_REQUEST['like']), isset($_REQUEST['withdefaults']), + isset($_REQUEST['withconstraints']), isset($_REQUEST['withindexes']), $_REQUEST['tablespace']); + + if ($status == 0) { + $_reload_browser = true; + doDefault($lang['strtablecreated']); + } + else { + doCreateLike(false, $lang['strtablecreatedbad']); + return; + } + } + } + + /** + * Ask for select parameters and perform select + */ + function doSelectRows($confirm, $msg = '') { + global $data, $misc, $_no_output; + global $lang; + + if ($confirm) { + $misc->printTrail('table'); + $misc->printTabs('table','select'); + $misc->printMsg($msg); + + $attrs = $data->getTableAttributes($_REQUEST['table']); + + echo "
\n"; + if ($attrs->recordCount() > 0) { + // JavaScript for select all feature + echo "\n"; + + echo "\n"; + + // Output table header + echo ""; + echo ""; + echo ""; + + $i = 0; + while (!$attrs->EOF) { + $attrs->fields['attnotnull'] = $data->phpBool($attrs->fields['attnotnull']); + // Set up default value if there isn't one already + if (!isset($_REQUEST['values'][$attrs->fields['attname']])) + $_REQUEST['values'][$attrs->fields['attname']] = null; + if (!isset($_REQUEST['ops'][$attrs->fields['attname']])) + $_REQUEST['ops'][$attrs->fields['attname']] = null; + // Continue drawing row + $id = (($i % 2) == 0 ? '1' : '2'); + echo "\n"; + echo ""; + echo ""; + echo ""; + echo "\n"; + echo ""; + echo "\n"; + $i++; + $attrs->moveNext(); + } + // Select all checkbox + echo ""; + echo "
{$lang['strshow']}{$lang['strcolumn']}{$lang['strtype']}{$lang['stroperator']}{$lang['strvalue']}
"; + echo "fields['attname']), "]\"", + isset($_REQUEST['show'][$attrs->fields['attname']]) ? ' checked="checked"' : '', " />", $misc->printVal($attrs->fields['attname']), "", $misc->printVal($data->formatType($attrs->fields['type'], $attrs->fields['atttypmod'])), ""; + echo "\n", $data->printField("values[{$attrs->fields['attname']}]", + $_REQUEST['values'][$attrs->fields['attname']], $attrs->fields['type']), "
\n"; + } + else echo "

{$lang['strinvalidparam']}

\n"; + + echo "

\n"; + echo "\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + else { + if (!isset($_POST['show'])) $_POST['show'] = array(); + if (!isset($_POST['values'])) $_POST['values'] = array(); + if (!isset($_POST['nulls'])) $_POST['nulls'] = array(); + + // Verify that they haven't supplied a value for unary operators + foreach ($_POST['ops'] as $k => $v) { + if ($data->selectOps[$v] == 'p' && $_POST['values'][$k] != '') { + doSelectRows(true, $lang['strselectunary']); + return; + } + } + + if (sizeof($_POST['show']) == 0) + doSelectRows(true, $lang['strselectneedscol']); + else { + // Generate query SQL + $query = $data->getSelectSQL($_REQUEST['table'], array_keys($_POST['show']), + $_POST['values'], $_POST['ops']); + $_REQUEST['query'] = $query; + $_REQUEST['return'] = 'selectrows'; + + $_no_output = true; + include('./display.php'); + exit; + } + } + } + + /** + * Ask for insert parameters and then actually insert row + */ + function doInsertRow($confirm, $msg = '') { + global $data, $misc, $conf; + global $lang; + + if ($confirm) { + $misc->printTrail('table'); + $misc->printTabs('table','insert'); + + $misc->printMsg($msg); + + $attrs = $data->getTableAttributes($_REQUEST['table']); + + if (($conf['autocomplete'] != 'disable')) { + $fksprops = $misc->getAutocompleteFKProperties($_REQUEST['table']); + if ($fksprops !== false) + echo $fksprops['code']; + } + else $fksprops = false; + + echo "
\n"; + if ($attrs->recordCount() > 0) { + echo "\n"; + + // Output table header + echo ""; + echo ""; + echo ""; + + $i = 0; + $fields = array(); + while (!$attrs->EOF) { + $fields[$attrs->fields['attnum']] = $attrs->fields['attname']; + $attrs->fields['attnotnull'] = $data->phpBool($attrs->fields['attnotnull']); + // Set up default value if there isn't one already + if (!isset($_REQUEST['values'][$attrs->fields['attnum']])) + $_REQUEST['values'][$attrs->fields['attnum']] = $attrs->fields['adsrc']; + // Default format to 'VALUE' if there is no default, + // otherwise default to 'EXPRESSION' + if (!isset($_REQUEST['format'][$attrs->fields['attnum']])) + $_REQUEST['format'][$attrs->fields['attnum']] = ($attrs->fields['adsrc'] === null) ? 'VALUE' : 'EXPRESSION'; + // Continue drawing row + $id = (($i % 2) == 0 ? '1' : '2'); + echo "\n"; + echo ""; + echo ""; + echo "\n"; + echo ""; + } + else { + echo " "; + } + echo "\n"; + echo "\n"; + $i++; + $attrs->moveNext(); + } + echo "
{$lang['strcolumn']}{$lang['strtype']}{$lang['strformat']}{$lang['strnull']}{$lang['strvalue']}
", $misc->printVal($attrs->fields['attname']), "\n"; + echo $misc->printVal($data->formatType($attrs->fields['type'], $attrs->fields['atttypmod'])); + echo "fields['attnum']}]\" value=\"", + htmlspecialchars($attrs->fields['type']), "\" />\n"; + echo "\n"; + // Output null box if the column allows nulls (doesn't look at CHECKs or ASSERTIONS) + if (!$attrs->fields['attnotnull']) { + echo "fields['attnum']}\" style=\"white-space:nowrap;\">"; + if (($fksprops !== false) && isset($fksprops['byfield'][$attrs->fields['attnum']])) { + echo $data->printField("values[{$attrs->fields['attnum']}]", $_REQUEST['values'][$attrs->fields['attnum']], 'fktype'/*force FK*/, + array( + 'id' => "attr_{$attrs->fields['attnum']}", + 'autocomplete' => 'off' + ) + ); + } + else { + echo $data->printField("values[{$attrs->fields['attnum']}]", $_REQUEST['values'][$attrs->fields['attnum']], $attrs->fields['type']); + } + echo "
\n"; + + if (!isset($_SESSION['counter'])) { $_SESSION['counter'] = 0; } + + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "

\n"; + echo "\n"; + echo "\n"; + + if($fksprops !== false) { + if ($conf['autocomplete'] != 'default off') + echo "\n"; + else + echo "\n"; + } + echo "

\n"; + } + else { + echo "

{$lang['strnofieldsforinsert']}

\n"; + echo "\n"; + } + echo $misc->form; + echo "
\n"; + } + else { + if (!isset($_POST['values'])) $_POST['values'] = array(); + if (!isset($_POST['nulls'])) $_POST['nulls'] = array(); + $_POST['fields'] = unserialize(htmlspecialchars_decode($_POST['fields'], ENT_QUOTES)); + + if ($_SESSION['counter']++ == $_POST['protection_counter']) { + $status = $data->insertRow($_POST['table'], $_POST['fields'], $_POST['values'], + $_POST['nulls'], $_POST['format'], $_POST['types']); + if ($status == 0) { + if (isset($_POST['insert'])) + doDefault($lang['strrowinserted']); + else { + $_REQUEST['values'] = array(); + $_REQUEST['nulls'] = array(); + doInsertRow(true, $lang['strrowinserted']); + } + } + else + doInsertRow(true, $lang['strrowinsertedbad']); + } else + doInsertRow(true, $lang['strrowduplicate']); + } + + } + + /** + * Show confirmation of empty and perform actual empty + */ + function doEmpty($confirm) { + global $data, $misc; + global $lang; + + if (empty($_REQUEST['table']) && empty($_REQUEST['ma'])) { + doDefault($lang['strspecifytabletoempty']); + exit(); + } + + if ($confirm) { + if (isset($_REQUEST['ma'])) { + $misc->printTrail('schema'); + $misc->printTitle($lang['strempty'],'pg.table.empty'); + + echo "
\n"; + foreach ($_REQUEST['ma'] as $v) { + $a = unserialize(htmlspecialchars_decode($v, ENT_QUOTES)); + echo "

", sprintf($lang['strconfemptytable'], $misc->printVal($a['table'])), "

\n"; + printf('', htmlspecialchars($a['table'])); + } + } // END mutli empty + else { + $misc->printTrail('table'); + $misc->printTitle($lang['strempty'],'pg.table.empty'); + + echo "

", sprintf($lang['strconfemptytable'], $misc->printVal($_REQUEST['table'])), "

\n"; + + echo "\n"; + echo "\n"; + } // END not mutli empty + + echo "\n"; + echo $misc->form; + echo " \n"; + echo "
\n"; + } // END if confirm + else { // Do Empty + if (is_array($_REQUEST['table'])) { + $msg=''; + foreach($_REQUEST['table'] as $t) { + $status = $data->emptyTable($t); + if ($status == 0) + $msg.= sprintf('%s: %s
', htmlentities($t, ENT_QUOTES, 'UTF-8'), $lang['strtableemptied']); + else { + doDefault(sprintf('%s%s: %s
', $msg, htmlentities($t, ENT_QUOTES, 'UTF-8'), $lang['strtableemptiedbad'])); + return; + } + } + doDefault($msg); + } // END mutli empty + else { + $status = $data->emptyTable($_POST['table']); + if ($status == 0) + doDefault($lang['strtableemptied']); + else + doDefault($lang['strtableemptiedbad']); + } // END not mutli empty + } // END do Empty + } + + /** + * Show confirmation of drop and perform actual drop + */ + function doDrop($confirm) { + global $data, $misc; + global $lang, $_reload_browser; + + if (empty($_REQUEST['table']) && empty($_REQUEST['ma'])) { + doDefault($lang['strspecifytabletodrop']); + exit(); + } + + if ($confirm) { + //If multi drop + if (isset($_REQUEST['ma'])) { + + $misc->printTrail('schema'); + $misc->printTitle($lang['strdrop'], 'pg.table.drop'); + + echo "
\n"; + foreach($_REQUEST['ma'] as $v) { + $a = unserialize(htmlspecialchars_decode($v, ENT_QUOTES)); + echo "

", sprintf($lang['strconfdroptable'], $misc->printVal($a['table'])), "

\n"; + printf('', htmlspecialchars($a['table'])); + } + } else { + + $misc->printTrail('table'); + $misc->printTitle($lang['strdrop'], 'pg.table.drop'); + + echo "

", sprintf($lang['strconfdroptable'], $misc->printVal($_REQUEST['table'])), "

\n"; + + echo "\n"; + echo "\n"; + }// END if multi drop + + echo "\n"; + echo $misc->form; + echo "

\n"; + echo "\n"; + echo "\n"; + echo "
\n"; + } // END confirm + else { + //If multi drop + if (is_array($_REQUEST['table'])) { + $msg = ''; + $status = $data->beginTransaction(); + if ($status == 0) { + foreach($_REQUEST['table'] as $t) { + $status = $data->dropTable($t, isset($_POST['cascade'])); + if ($status == 0) + $msg.= sprintf('%s: %s
', htmlentities($t, ENT_QUOTES, 'UTF-8'), $lang['strtabledropped']); + else { + $data->endTransaction(); + doDefault(sprintf('%s%s: %s
', $msg, htmlentities($t, ENT_QUOTES, 'UTF-8'), $lang['strtabledroppedbad'])); + return; + } + } + } + if($data->endTransaction() == 0) { + // Everything went fine, back to the Default page.... + $_reload_browser = true; + doDefault($msg); + } + else doDefault($lang['strtabledroppedbad']); + } else { + $status = $data->dropTable($_POST['table'], isset($_POST['cascade'])); + if ($status == 0) { + $_reload_browser = true; + doDefault($lang['strtabledropped']); + } + else + doDefault($lang['strtabledroppedbad']); + } + } // END DROP + }// END Function + + /** + * Show default list of tables in the database + */ + function doDefault($msg = '') { + global $data, $conf, $misc, $data; + global $lang; + + $misc->printTrail('schema'); + $misc->printTabs('schema','tables'); + $misc->printMsg($msg); + + $tables = $data->getTables(); + + $columns = array( + 'table' => array( + 'title' => $lang['strtable'], + 'field' => field('relname'), + 'url' => "redirect.php?subject=table&{$misc->href}&", + 'vars' => array('table' => 'relname'), + ), + 'owner' => array( + 'title' => $lang['strowner'], + 'field' => field('relowner'), + ), + 'tablespace' => array( + 'title' => $lang['strtablespace'], + 'field' => field('tablespace') + ), + 'tuples' => array( + 'title' => $lang['strestimatedrowcount'], + 'field' => field('reltuples'), + 'type' => 'numeric' + ), + 'actions' => array( + 'title' => $lang['stractions'], + ), + 'comment' => array( + 'title' => $lang['strcomment'], + 'field' => field('relcomment'), + ), + ); + + $actions = array( + 'multiactions' => array( + 'keycols' => array('table' => 'relname'), + 'url' => 'tables.php', + 'default' => 'analyze', + ), + 'browse' => array( + 'content' => $lang['strbrowse'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'display.php', + 'urlvars' => array ( + 'subject' => 'table', + 'return' => 'table', + 'table' => field('relname') + ) + ) + ) + ), + 'select' => array( + 'content' => $lang['strselect'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'tables.php', + 'urlvars' => array ( + 'action' => 'confselectrows', + 'table' => field('relname') + ) + ) + ) + ), + 'insert' => array( + 'content' => $lang['strinsert'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'tables.php', + 'urlvars' => array ( + 'action' => 'confinsertrow', + 'table' => field('relname') + ) + ) + ) + ), + 'empty' => array( + 'multiaction' => 'confirm_empty', + 'content' => $lang['strempty'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'tables.php', + 'urlvars' => array ( + 'action' => 'confirm_empty', + 'table' => field('relname') + ) + ) + ) + ), + 'alter' => array( + 'content' => $lang['stralter'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'tblproperties.php', + 'urlvars' => array ( + 'action' => 'confirm_alter', + 'table' => field('relname') + ) + ) + ) + ), + 'drop' => array( + 'multiaction' => 'confirm_drop', + 'content' => $lang['strdrop'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'tables.php', + 'urlvars' => array ( + 'action' => 'confirm_drop', + 'table' => field('relname') + ) + ) + ) + ), + 'vacuum' => array( + 'multiaction' => 'confirm_vacuum', + 'content' => $lang['strvacuum'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'tables.php', + 'urlvars' => array ( + 'action' => 'confirm_vacuum', + 'table' => field('relname') + ) + ) + ) + ), + 'analyze' => array( + 'multiaction' => 'confirm_analyze', + 'content' => $lang['stranalyze'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'tables.php', + 'urlvars' => array ( + 'action' => 'confirm_analyze', + 'table' => field('relname') + ) + ) + ) + ), + 'reindex' => array( + 'multiaction' => 'confirm_reindex', + 'content' => $lang['strreindex'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'tables.php', + 'urlvars' => array ( + 'action' => 'confirm_reindex', + 'table' => field('relname') + ) + ) + ) + ) + //'cluster' TODO ? + ); + + if (!$data->hasTablespaces()) unset($columns['tablespace']); + + $misc->printTable($tables, $columns, $actions, 'tables-tables', $lang['strnotables']); + + $navlinks = array ( + 'create' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'tables.php', + 'urlvars' => array ( + 'action' => 'create', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'] + ) + ) + ), + 'content' => $lang['strcreatetable'] + ) + ); + + if (($tables->recordCount() > 0) && $data->hasCreateTableLike()) { + $navlinks['createlike'] = array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'tables.php', + 'urlvars' => array ( + 'action' => 'createlike', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'] + ) + ) + ), + 'content' => $lang['strcreatetablelike'] + ); + } + $misc->printNavLinks($navlinks, 'tables-tables', get_defined_vars()); + } + + require('./admin.php'); + + /** + * Generate XML for the browser tree. + */ + function doTree() { + global $misc, $data; + + $tables = $data->getTables(); + + $reqvars = $misc->getRequestVars('table'); + + $attrs = array( + 'text' => field('relname'), + 'icon' => 'Table', + 'iconAction' => url('display.php', + $reqvars, + array('table' => field('relname')) + ), + 'toolTip'=> field('relcomment'), + 'action' => url('redirect.php', + $reqvars, + array('table' => field('relname')) + ), + 'branch' => url('tables.php', + $reqvars, + array ( + 'action' => 'subtree', + 'table' => field('relname') + ) + ) + ); + + $misc->printTree($tables, $attrs, 'tables'); + exit; + } + + function doSubTree() { + global $misc, $data; + + $tabs = $misc->getNavTabs('table'); + $items = $misc->adjustTabsForTree($tabs); + $reqvars = $misc->getRequestVars('table'); + + $attrs = array( + 'text' => field('title'), + 'icon' => field('icon'), + 'action' => url( + field('url'), + $reqvars, + field('urlvars'), + array('table' => $_REQUEST['table']) + ), + 'branch' => ifempty( + field('branch'), '', url( + field('url'), + $reqvars, + array( + 'action' => 'tree', + 'table' => $_REQUEST['table'] + ) + ) + ), + ); + + $misc->printTree($items, $attrs, 'table'); + exit; + } + + if ($action == 'tree') doTree(); + if ($action == 'subtree') dosubTree(); + + $misc->printHeader($lang['strtables']); + $misc->printBody(); + + switch ($action) { + case 'create': + if (isset($_POST['cancel'])) doDefault(); + else doCreate(); + break; + case 'createlike': + doCreateLike(false); + break; + case 'confcreatelike': + if (isset($_POST['cancel'])) doDefault(); + else doCreateLike(true); + break; + case 'selectrows': + if (!isset($_POST['cancel'])) doSelectRows(false); + else doDefault(); + break; + case 'confselectrows': + doSelectRows(true); + break; + case 'insertrow': + if (!isset($_POST['cancel'])) doInsertRow(false); + else doDefault(); + break; + case 'confinsertrow': + doInsertRow(true); + break; + case 'empty': + if (isset($_POST['empty'])) doEmpty(false); + else doDefault(); + break; + case 'confirm_empty': + doEmpty(true); + break; + case 'drop': + if (isset($_POST['drop'])) doDrop(false); + else doDefault(); + break; + case 'confirm_drop': + doDrop(true); + break; + default: + if (adminActions($action, 'table') === false) doDefault(); + break; + } + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/tablespaces.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/tablespaces.php new file mode 100644 index 00000000..3c6f8beb --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/tablespaces.php @@ -0,0 +1,326 @@ +printTrail('tablespace'); + $misc->printTitle($lang['stralter'],'pg.tablespace.alter'); + $misc->printMsg($msg); + + // Fetch tablespace info + $tablespace = $data->getTablespace($_REQUEST['tablespace']); + // Fetch all users + $users = $data->getUsers(); + + if ($tablespace->recordCount() > 0) { + + if (!isset($_POST['name'])) $_POST['name'] = $tablespace->fields['spcname']; + if (!isset($_POST['owner'])) $_POST['owner'] = $tablespace->fields['spcowner']; + if (!isset($_POST['comment'])) { + $_POST['comment'] = ($data->hasSharedComments()) ? $tablespace->fields['spccomment'] : ''; + } + + echo "
\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + if ($data->hasSharedComments()){ + echo "\n"; + echo "\n"; + } + echo "
{$lang['strname']}"; + echo "_maxNameLen}\" value=\"", + htmlspecialchars($_POST['name']), "\" />
{$lang['strowner']}
{$lang['strcomment']}"; + echo "
\n"; + echo "

\n"; + echo "\n"; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + else echo "

{$lang['strnodata']}

\n"; + } + + /** + * Function to save after altering a tablespace + */ + function doSaveAlter() { + global $data, $lang; + + // Check data + if (trim($_POST['name']) == '') + doAlter($lang['strtablespaceneedsname']); + else { + $status = $data->alterTablespace($_POST['tablespace'], $_POST['name'], $_POST['owner'], $_POST['comment']); + if ($status == 0) { + // If tablespace has been renamed, need to change to the new name + if ($_POST['tablespace'] != $_POST['name']) { + // Jump them to the new table name + $_REQUEST['tablespace'] = $_POST['name']; + } + doDefault($lang['strtablespacealtered']); + } + else + doAlter($lang['strtablespacealteredbad']); + } + } + + /** + * Show confirmation of drop and perform actual drop + */ + function doDrop($confirm) { + global $data, $misc; + global $lang; + + if ($confirm) { + $misc->printTrail('tablespace'); + $misc->printTitle($lang['strdrop'],'pg.tablespace.drop'); + + echo "

", sprintf($lang['strconfdroptablespace'], $misc->printVal($_REQUEST['tablespace'])), "

\n"; + + echo "
\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "
\n"; + } + else { + $status = $data->droptablespace($_REQUEST['tablespace']); + if ($status == 0) + doDefault($lang['strtablespacedropped']); + else + doDefault($lang['strtablespacedroppedbad']); + } + } + + /** + * Displays a screen where they can enter a new tablespace + */ + function doCreate($msg = '') { + global $data, $misc, $spcname; + global $lang; + + $server_info = $misc->getServerInfo(); + + if (!isset($_POST['formSpcname'])) $_POST['formSpcname'] = ''; + if (!isset($_POST['formOwner'])) $_POST['formOwner'] = $server_info['username']; + if (!isset($_POST['formLoc'])) $_POST['formLoc'] = ''; + if (!isset($_POST['formComment'])) $_POST['formComment'] = ''; + + // Fetch all users + $users = $data->getUsers(); + + $misc->printTrail('server'); + $misc->printTitle($lang['strcreatetablespace'],'pg.tablespace.create'); + $misc->printMsg($msg); + + echo "
\n"; + echo $misc->form; + echo "\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + // Comments (if available) + if ($data->hasSharedComments()) { + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + } + echo "
{$lang['strname']}_maxNameLen}\" value=\"", htmlspecialchars($_POST['formSpcname']), "\" />
{$lang['strowner']}
{$lang['strlocation']}
{$lang['strcomment']}
\n"; + echo "

\n"; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + + /** + * Actually creates the new tablespace in the cluster + */ + function doSaveCreate() { + global $data; + global $lang; + + // Check data + if (trim($_POST['formSpcname']) == '') + doCreate($lang['strtablespaceneedsname']); + elseif (trim($_POST['formLoc']) == '') + doCreate($lang['strtablespaceneedsloc']); + else { + // Default comment to blank if it isn't set + if (!isset($_POST['formComment'])) $_POST['formComment'] = null; + + $status = $data->createTablespace($_POST['formSpcname'], $_POST['formOwner'], $_POST['formLoc'], $_POST['formComment']); + if ($status == 0) + doDefault($lang['strtablespacecreated']); + else + doCreate($lang['strtablespacecreatedbad']); + } + } + + /** + * Show default list of tablespaces in the cluster + */ + function doDefault($msg = '') { + global $data, $misc; + global $lang; + + $misc->printTrail('server'); + $misc->printTabs('server','tablespaces'); + $misc->printMsg($msg); + + $tablespaces = $data->getTablespaces(); + + $columns = array( + 'database' => array( + 'title' => $lang['strname'], + 'field' => field('spcname') + ), + 'owner' => array( + 'title' => $lang['strowner'], + 'field' => field('spcowner') + ), + 'location' => array( + 'title' => $lang['strlocation'], + 'field' => field('spclocation') + ), + 'actions' => array( + 'title' => $lang['stractions'] + ) + ); + + if ($data->hasSharedComments()) { + $columns['comment'] = array( + 'title' => $lang['strcomment'], + 'field' => field('spccomment'), + ); + } + + + + $actions = array( + 'alter' => array( + 'content' => $lang['stralter'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'tablespaces.php', + 'urlvars' => array ( + 'action' => 'edit', + 'tablespace' => field('spcname') + ) + ) + ) + ), + 'drop' => array( + 'content' => $lang['strdrop'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'tablespaces.php', + 'urlvars' => array ( + 'action' => 'confirm_drop', + 'tablespace' => field('spcname') + ) + ) + ) + ), + 'privileges' => array( + 'content' => $lang['strprivileges'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'privileges.php', + 'urlvars' => array ( + 'subject' => 'tablespace', + 'tablespace' => field('spcname') + ) + ) + ) + ) + ); + + $misc->printTable($tablespaces, $columns, $actions, 'tablespaces-tablespaces', $lang['strnotablespaces']); + + $misc->printNavLinks(array ('create' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'tablespaces.php', + 'urlvars' => array ( + 'action' => 'create', + 'server' => $_REQUEST['server'] + ) + ) + ), + 'content' => $lang['strcreatetablespace'] + )), 'tablespaces-tablespaces', get_defined_vars()); + } + + $misc->printHeader($lang['strtablespaces']); + $misc->printBody(); + + switch ($action) { + case 'save_create': + if (isset($_REQUEST['cancel'])) doDefault(); + else doSaveCreate(); + break; + case 'create': + doCreate(); + break; + case 'drop': + if (isset($_REQUEST['cancel'])) doDefault(); + else doDrop(false); + break; + case 'confirm_drop': + doDrop(true); + break; + case 'save_edit': + if (isset($_REQUEST['cancel'])) doDefault(); + else doSaveAlter(); + break; + case 'edit': + doAlter(); + break; + default: + doDefault(); + break; + } + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/tblproperties.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/tblproperties.php new file mode 100644 index 00000000..f73ce8b6 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/tblproperties.php @@ -0,0 +1,782 @@ +alterTable($_POST['table'], $_POST['name'], $_POST['owner'], $_POST['newschema'], $_POST['comment'], $_POST['tablespace']); + if ($status == 0) { + // If table has been renamed, need to change to the new name and + // reload the browser frame. + if ($_POST['table'] != $_POST['name']) { + // Jump them to the new table name + $_REQUEST['table'] = $_POST['name']; + // Force a browser reload + $_reload_browser = true; + } + // If schema has changed, need to change to the new schema and reload the browser + if (!empty($_POST['newschema']) && ($_POST['newschema'] != $data->_schema)) { + // Jump them to the new sequence schema + $misc->setCurrentSchema($_POST['newschema']); + $_reload_browser = true; + } + doDefault($lang['strtablealtered']); + } + else + doAlter($lang['strtablealteredbad']); + } + + /** + * Function to allow altering of a table + */ + function doAlter($msg = '') { + global $data, $misc; + global $lang; + + $misc->printTrail('table'); + $misc->printTitle($lang['stralter'], 'pg.table.alter'); + $misc->printMsg($msg); + + // Fetch table info + $table = $data->getTable($_REQUEST['table']); + // Fetch all users + $users = $data->getUsers(); + // Fetch all tablespaces from the database + if ($data->hasTablespaces()) $tablespaces = $data->getTablespaces(true); + + if ($table->recordCount() > 0) { + + if (!isset($_POST['name'])) $_POST['name'] = $table->fields['relname']; + if (!isset($_POST['owner'])) $_POST['owner'] = $table->fields['relowner']; + if (!isset($_POST['newschema'])) $_POST['newschema'] = $table->fields['nspname']; + if (!isset($_POST['comment'])) $_POST['comment'] = $table->fields['relcomment']; + if ($data->hasTablespaces() && !isset($_POST['tablespace'])) $_POST['tablespace'] = $table->fields['tablespace']; + + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + + if ($data->isSuperUser()) { + echo "\n"; + echo "\n"; + } + + if ($data->hasAlterTableSchema()) { + $schemas = $data->getSchemas(); + echo "\n"; + echo "\n"; + } + + // Tablespace (if there are any) + if ($data->hasTablespaces() && $tablespaces->recordCount() > 0) { + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + } + + echo "\n"; + echo "\n"; + echo "
{$lang['strname']}"; + echo "_maxNameLen}\" value=\"", + htmlspecialchars($_POST['name'], ENT_QUOTES), "\" />
{$lang['strowner']}
{$lang['strschema']}
{$lang['strtablespace']}\n\t\t\t\n\t\t
{$lang['strcomment']}"; + echo "
\n"; + echo "

\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + else echo "

{$lang['strnodata']}

\n"; + } + + function doExport($msg = '') { + global $data, $misc; + global $lang; + + // Determine whether or not the table has an object ID + $hasID = $data->hasObjectID($_REQUEST['table']); + + $misc->printTrail('table'); + $misc->printTabs('table','export'); + $misc->printMsg($msg); + + echo "
\n"; + echo "\n"; + echo "\n"; + // Data only + echo "\n"; + echo "\n"; + echo "\n\n"; + if ($hasID) { + echo "\n\n"; + } + // Structure only + echo "\n"; + echo "\n\n"; + // Structure and data + echo "\n"; + echo "\n"; + echo "\n\n"; + echo "\n\n"; + if ($hasID) { + echo "\n\n"; + } + echo "
{$lang['strformat']}{$lang['stroptions']}
"; + echo "{$lang['strformat']}\n
"; + echo "{$lang['strformat']}\n
\n"; + + echo "

{$lang['stroptions']}

\n"; + echo "

\n"; + echo "

\n"; + + echo "

\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + + function doImport($msg = '') { + global $data, $misc; + global $lang; + + $misc->printTrail('table'); + $misc->printTabs('table','import'); + $misc->printMsg($msg); + + // Check that file uploads are enabled + if (ini_get('file_uploads')) { + // Don't show upload option if max size of uploads is zero + $max_size = $misc->inisizeToBytes(ini_get('upload_max_filesize')); + if (is_double($max_size) && $max_size > 0) { + echo "
\n"; + echo "\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "
{$lang['strformat']}
{$lang['strallowednulls']}
\n"; + echo "\t\t
\n"; + echo "\t\t
{$lang['strfile']}"; + echo "
\n"; + echo "

\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + } + else echo "

{$lang['strnouploads']}

\n"; + } + + /** + * Displays a screen where they can add a column + */ + function doAddColumn($msg = '') { + global $data, $misc, $_reload_browser; + global $lang; + + if (!isset($_REQUEST['stage'])) $_REQUEST['stage'] = 1; + + switch ($_REQUEST['stage']) { + case 1: + // Set variable defaults + if (!isset($_POST['field'])) $_POST['field'] = ''; + if (!isset($_POST['type'])) $_POST['type'] = ''; + if (!isset($_POST['array'])) $_POST['array'] = ''; + if (!isset($_POST['length'])) $_POST['length'] = ''; + if (!isset($_POST['default'])) $_POST['default'] = ''; + if (!isset($_POST['comment'])) $_POST['comment'] = ''; + + // Fetch all available types + $types = $data->getTypes(true, false, true); + $types_for_js = array(); + + $misc->printTrail('table'); + $misc->printTitle($lang['straddcolumn'], 'pg.column.add'); + $misc->printMsg($msg); + + echo ""; + echo "
\n"; + + // Output table header + echo "\n"; + echo "\n\n"; + echo "\n"; + if ($data->hasCreateFieldWithConstraints()) + echo "\n\n"; + echo "\n"; + + echo "\n"; + echo "\n"; + + // Output array type selector + echo "\n"; + $predefined_size_types = array_intersect($data->predefined_size_types, $types_for_js); + $escaped_predef_types = array(); // the JS escaped array elements + foreach($predefined_size_types as $value) { + $escaped_predef_types[] = "'{$value}'"; + } + + echo "\n"; + // Support for adding column with not null and default + if ($data->hasCreateFieldWithConstraints()) { + echo "\n"; + echo "\n"; + } + echo "\n"; + echo "
{$lang['strname']}{$lang['strtype']}{$lang['strlength']}{$lang['strnotnull']}{$lang['strdefault']}{$lang['strcomment']}
_maxNameLen}\" value=\"", + htmlspecialchars($_POST['field']), "\" />
\n"; + echo "

\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + if (!$data->hasCreateFieldWithConstraints()) { + echo "\n"; + } + echo "\n"; + echo "

\n"; + echo "
\n"; + echo "\n"; + break; + case 2: + // Check inputs + if (trim($_POST['field']) == '') { + $_REQUEST['stage'] = 1; + doAddColumn($lang['strcolneedsname']); + return; + } + if (!isset($_POST['length'])) $_POST['length'] = ''; + $status = $data->addColumn($_POST['table'], $_POST['field'], + $_POST['type'], $_POST['array'] != '', $_POST['length'], isset($_POST['notnull']), + $_POST['default'], $_POST['comment']); + if ($status == 0) { + $_reload_browser = true; + doDefault($lang['strcolumnadded']); + } + else { + $_REQUEST['stage'] = 1; + doAddColumn($lang['strcolumnaddedbad']); + return; + } + break; + default: + echo "

{$lang['strinvalidparam']}

\n"; + } + } + + /** + * Show confirmation of drop column and perform actual drop + */ + function doDrop($confirm) { + global $data, $database, $misc, $_reload_browser; + global $lang; + + if ($confirm) { + $misc->printTrail('column'); + $misc->printTitle($lang['strdrop'], 'pg.column.drop'); + + echo "

", sprintf($lang['strconfdropcolumn'], $misc->printVal($_REQUEST['column']), + $misc->printVal($_REQUEST['table'])), "

\n"; + + + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo $misc->form; + echo "

\n"; + echo "\n"; + echo "\n"; + echo "
\n"; + } + else { + $status = $data->dropColumn($_POST['table'], $_POST['column'], isset($_POST['cascade'])); + if ($status == 0) { + $_reload_browser = true; + doDefault($lang['strcolumndropped']); + } + else + doDefault($lang['strcolumndroppedbad']); + } + + } + + function doTree() { + global $misc, $data; + + $columns = $data->getTableAttributes($_REQUEST['table']); + $reqvars = $misc->getRequestVars('column'); + + $attrs = array ( + 'text' => field('attname'), + 'action' => url('colproperties.php', + $reqvars, + array( + 'table' => $_REQUEST['table'], + 'column' => field('attname') + ) + ), + 'icon' => 'Column', + 'iconAction' => url('display.php', + $reqvars, + array( + 'table' => $_REQUEST['table'], + 'column' => field('attname'), + 'query' => replace( + 'SELECT "%column%", count(*) AS "count" FROM "%table%" GROUP BY "%column%" ORDER BY "%column%"', + array ( + '%column%' => field('attname'), + '%table%' => $_REQUEST['table'] + ) + ) + ) + ), + 'toolTip'=> field('comment') + ); + + $misc->printTree($columns, $attrs, 'tblcolumns'); + + exit; + } + + if ($action == 'tree') doTree(); + + /** + * Show default list of columns in the table + */ + function doDefault($msg = '') { + global $data, $conf, $misc; + global $lang; + + function attPre(&$rowdata, $actions) { + global $data; + $rowdata->fields['+type'] = $data->formatType($rowdata->fields['type'], $rowdata->fields['atttypmod']); + $attname = $rowdata->fields['attname']; + $table = $_REQUEST['table']; + $data->fieldClean($attname); + $data->fieldClean($table); + + $actions['browse']['attr']['href']['urlvars']['query'] = "SELECT \"{$attname}\", count(*) AS \"count\" + FROM \"{$table}\" GROUP BY \"{$attname}\" ORDER BY \"{$attname}\""; + + return $actions; + } + + $misc->printTrail('table'); + $misc->printTabs('table','columns'); + $misc->printMsg($msg); + + // Get table + $tdata = $data->getTable($_REQUEST['table']); + // Get columns + $attrs = $data->getTableAttributes($_REQUEST['table']); + // Get constraints keys + $ck = $data->getConstraintsWithFields($_REQUEST['table']); + + // Show comment if any + if ($tdata->fields['relcomment'] !== null) + echo '

', $misc->printVal($tdata->fields['relcomment']), "

\n"; + + $columns = array( + 'column' => array( + 'title' => $lang['strcolumn'], + 'field' => field('attname'), + 'url' => "colproperties.php?subject=column&{$misc->href}&table=".urlencode($_REQUEST['table'])."&", + 'vars' => array('column' => 'attname'), + ), + 'type' => array( + 'title' => $lang['strtype'], + 'field' => field('+type'), + ), + 'notnull' => array( + 'title' => $lang['strnotnull'], + 'field' => field('attnotnull'), + 'type' => 'bool', + 'params'=> array('true' => 'NOT NULL', 'false' => ''), + ), + 'default' => array( + 'title' => $lang['strdefault'], + 'field' => field('adsrc'), + ), + 'keyprop' => array( + 'title' => $lang['strconstraints'], + 'class' => 'constraint_cell', + 'field' => field('attname'), + 'type' => 'callback', + 'params'=> array( + 'function' => 'cstrRender', + 'keys' => $ck->getArray() + ) + ), + 'actions' => array( + 'title' => $lang['stractions'], + ), + 'comment' => array( + 'title' => $lang['strcomment'], + 'field' => field('comment') + ), + ); + + function cstrRender($s, $p) { + global $misc, $data; + + $str =''; + foreach ($p['keys'] as $k => $c) { + + if (is_null($p['keys'][$k]['consrc'])) { + $atts = $data->getAttributeNames($_REQUEST['table'], explode(' ', $p['keys'][$k]['indkey'])); + $c['consrc'] = ($c['contype'] == 'u' ? "UNIQUE (" : "PRIMARY KEY (") . join(',', $atts) . ')'; + } + + if ($c['p_field'] == $s) + switch ($c['contype']) { + case 'p': + $str .= 'icon('PrimaryKey') .'" alt="[pk]" title="'. htmlentities($c['consrc'], ENT_QUOTES, 'UTF-8') .'" />'; + break; + case 'f': + $str .= 'icon('ForeignKey') .'" alt="[fk]" title="'. htmlentities($c['consrc'], ENT_QUOTES, 'UTF-8') .'" />'; + break; + case 'u': + $str .= 'icon('UniqueConstraint') .'" alt="[uniq]" title="'. htmlentities($c['consrc'], ENT_QUOTES, 'UTF-8') .'" />'; + break; + case 'c': + $str .= 'icon('CheckConstraint') .'" alt="[check]" title="'. htmlentities($c['consrc'], ENT_QUOTES, 'UTF-8') .'" />'; + } + } + + return $str; + } + + $actions = array( + 'browse' => array( + 'title' => $lang['strbrowse'], + 'url' => "display.php?{$misc->href}&subject=column&return=table&table=".urlencode($_REQUEST['table']).'&', + 'vars' => array('column' => 'attname'), + ), + 'alter' => array( + 'title' => $lang['stralter'], + 'url' => "colproperties.php?action=properties&{$misc->href}&table=".urlencode($_REQUEST['table'])."&", + 'vars' => array('column' => 'attname'), + ), + 'privileges' => array( + 'title' => $lang['strprivileges'], + 'url' => "privileges.php?subject=column&{$misc->href}&table=".urlencode($_REQUEST['table'])."&", + 'vars' => array('column' => 'attname'), + ), + 'drop' => array( + 'title' => $lang['strdrop'], + 'url' => "tblproperties.php?action=confirm_drop&{$misc->href}&table=".urlencode($_REQUEST['table'])."&", + 'vars' => array('column' => 'attname'), + ), + ); + + $actions = array( + 'browse' => array( + 'content' => $lang['strbrowse'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'display.php', + 'urlvars' => array ( + 'table' => $_REQUEST['table'], + 'subject' => 'column', + 'return' => 'table', + 'column' => field('attname') + ) + ) + ) + ), + 'alter' => array( + 'content' => $lang['stralter'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'colproperties.php', + 'urlvars' => array ( + 'subject' => 'column', + 'action' => 'properties', + 'table' => $_REQUEST['table'], + 'column' => field('attname') + ) + ) + ) + ), + 'privileges' => array( + 'content' => $lang['strprivileges'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'privileges.php', + 'urlvars' => array ( + 'subject' => 'column', + 'table' => $_REQUEST['table'], + 'column' => field('attname') + ) + ) + ) + ), + 'drop' => array( + 'content' => $lang['strdrop'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'tblproperties.php', + 'urlvars' => array ( + 'subject' => 'column', + 'action' => 'confirm_drop', + 'table' => $_REQUEST['table'], + 'column' => field('attname') + ) + ) + ) + ), + ); + + $misc->printTable($attrs, $columns, $actions, 'tblproperties-tblproperties', null, 'attPre'); + + $navlinks = array ( + 'browse' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'display.php', + 'urlvars' => array ( + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'table' => $_REQUEST['table'], + 'subject' => 'table', + 'return' => 'table' + ) + ) + ), + 'content' => $lang['strbrowse'] + ), + 'select' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'tables.php', + 'urlvars' => array ( + 'action' => 'confselectrows', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'table' => $_REQUEST['table'] + ) + ) + ), + 'content' => $lang['strselect'] + ), + 'insert' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'tables.php', + 'urlvars' => array ( + 'action' => 'confinsertrow', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'table' => $_REQUEST['table'] + ) + ) + ), + 'content' => $lang['strinsert'] + ), + 'empty' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'tables.php', + 'urlvars' => array ( + 'action' => 'confirm_empty', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'table' => $_REQUEST['table'] + ) + ) + ), + 'content' => $lang['strempty'] + ), + 'drop' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'tables.php', + 'urlvars' => array ( + 'action' => 'confirm_drop', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'table' => $_REQUEST['table'], + ) + ) + ), + 'content' => $lang['strdrop'] + ), + 'addcolumn' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'tblproperties.php', + 'urlvars' => array ( + 'action' => 'add_column', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'table' => $_REQUEST['table'] + ) + ) + ), + 'content' => $lang['straddcolumn'] + ), + 'alter' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'tblproperties.php', + 'urlvars' => array ( + 'action' => 'confirm_alter', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'table' => $_REQUEST['table'] + ) + ) + ), + 'content' => $lang['stralter'] + ) + ); + $misc->printNavLinks($navlinks, + 'tblproperties-tblproperties' + , get_defined_vars() + ); + + } + + $misc->printHeader($lang['strtables'] . ' - ' . $_REQUEST['table']); + $misc->printBody(); + + switch ($action) { + case 'alter': + if (isset($_POST['alter'])) doSaveAlter(); + else doDefault(); + break; + case 'confirm_alter': + doAlter(); + break; + case 'import': + doImport(); + break; + case 'export': + doExport(); + break; + case 'add_column': + if (isset($_POST['cancel'])) doDefault(); + else doAddColumn(); + break; + case 'properties': + if (isset($_POST['cancel'])) doDefault(); + else doProperties(); + break; + case 'drop': + if (isset($_POST['drop'])) doDrop(false); + else doDefault(); + break; + case 'confirm_drop': + doDrop(true); + break; + default: + doDefault(); + break; + } + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/themes/bootstrap/global.css b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/themes/bootstrap/global.css new file mode 100644 index 00000000..ab8c7613 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/themes/bootstrap/global.css @@ -0,0 +1,321 @@ +@import url(../global.css); +@import url(//maxcdn.bootstrapcdn.com/bootstrap/3.2.2/css/bootstrap.min.css); +/** + * Default style sheet + */ +frame {border-right: 1px solid #CCC;} +.label { + color:#336699 !important; + font-size: 12px; +} + +/** ELEMENTS */ +body { + background-color: #FFFFFF; + margin: 4px; + padding: 0px; +} + +body.browser { + background-color: #FFFFFF !important; + font-size: 12px !important; /*1em;*/ + border-right: 1px #c0c0c0; +} +body.bottombar { + background-color: #f9f9f9; + margin: 0px; + padding: 0px; + /*font-size: smaller; /*1em;*/ + text-align: left; +} +h2 { + color: #336699 !important + + font-weight: bold; + border: 2px solid #DFFBFD; + background-color: #FDFDFD; + padding: 2px 1em; + margin: 0 0 1ex 0; +} +h3 { + color: #336699 !important; + font-size: small; + + font-weight: bold; +} +table.error {background-color: #F9FFFF} +table.error td {background-color: #F9FFFF} +table.navbar {background-color: #F9FFFF} +table.navbar td { + height: 25px; + color: #000000; + background-color: #FDFDFD; + text-align: center; + + font-size: smaller; /* 0.9em */ + font-weight: bold; +} +table.navbar td.active {background-color: #F9FFFF} +th.data { + color: #000000; + background-color: #F9FFFF; + font-size: smaller; /* 0.9em */ + padding:3px; +} +th.data a:active, th.data a:link, th.data a:visited, th.data a:hover { + font-weight: bold; +} +td.dat { + color: #ff0; + text-align: center; +} +th.required {text-decoration: underline} +td.topbar { + background-color: #f9f9f9; + margin: 0px 0px; + padding: 0px; + + font-size: smaller; /*0.8em;*/ + text-align: left; +} + +td.data1 { + padding:2px; +} + +ul.toplink,ul.navlink { + list-style: none; + margin:0;padding:0; +} +ul.navlink{margin:20px 0} +ul.toplink li, ul.navlink li { + display:inline; + border-left:1px solid #000000; + margin:0;padding: 0 2px 0 5px; +} +ul.toplink li:first-child, ul.navlink li:first-child { + border: none; + padding-left:0; +} +tr.data1, tr.data2, tr.data3 { + color: #000000; + + font-size: smaller; /*0.8em;*/ +} + +tr.data1 td, tr.data2 td, tr.data3 td { + padding:2px 4px; + border: 1px solid #EEE; +} + +tr.data1 td.opbutton1, tr.data2 td.opbutton2, tr.data3 td.opbutton3 { + padding:2px 4px; + border: 0 none; + white-space: nowrap; + border-radius:2px; +} + +tr.data1 td.opbutton1 a, tr.data2 td.opbutton2 a, tr.data3 td.opbutton3 a { +-webkit-background-clip: border-box; +-webkit-background-origin: padding-box; +-webkit-background-size: auto; +-webkit-user-select: none; +background-attachment: scroll; +background-clip: border-box; +background-color: rgb(66, 139, 202); +background-image: none; +background-origin: padding-box; +background-size: auto; +border: 1px solid #999; +border-radius:3px; + +cursor: pointer; +display: inline-block; +font-size: 11px; +font-weight: normal; +height: 22px; +line-height: 18px; +margin-bottom: 0px; +padding-bottom: 1px; +padding-left: 5px; +padding-right: 5px; +padding-top: 1px; +text-align: center; +text-decoration: none; +vertical-align: middle; +white-space: nowrap; +color:#fff !important; +} + + +tr.data1:hover, tr.data2:hover, tr.data3:hover { + background-color: #DDD; +} +.row1, .data1 { + background-color: #FFF; + text-align: left; +} +.row2, .data2 { + background-color: #F9FFFF; + text-align: left; +} +.row3, .data3 {background-color: #FDFDFD} +td.opbutton1 { + color: #000000; + border-top: 1px solid #FFFFFF; + border-right: 1px solid #706D41; + border-bottom: 1px solid #706D41; + border-left: 1px solid #FFFFFF; + cursor: pointer; + + font-size: smaller; /*0.8em;*/ + padding-left: 6px; + padding-right: 6px; + text-align: center; +} +td.opbutton2 { + color: #000000; + border-top: 1px solid #FFFFFF; + border-right: 1px solid #706D41; + border-bottom: 1px solid #706D41; + border-left: 1px solid #FFFFFF; + cursor: pointer; + + font-size: smaller; /*0.8em;*/ + padding-left: 6px; + padding-right: 6px; + text-align: center; +} +.topbar {border: 2px solid #f9f9f9} +.topbar, .topbar * { + background-color: #f9f9f9; +} +.topbar .platform, .topbar .host, .topbar .username { + font-weight: bold; +} +.topbar, .trail { + margin-bottom: 2px; +} +.topbar, .trail, .tab { + padding: 2px 1ex; + /*font-size: smaller;*/ +} +.trail, .tab { + border: 2px solid #DFFBFD; + background-color: #FDFDFD; +} +.trail .crumb {background-color: #FDFDFD} +.crumb, .tab { + vertical-align: top; +} +.crumb .icon { + vertical-align: middle; + margin: 0 2px; +} +table.tabs { + width: 100%; + border-collapse: collapse; + margin-bottom: 1ex; +} +.tab {text-align: center} +.tabs .active {background-color: #F9FFFF} +.tab .icon {display: block} +a:active { + color: #989973; + + font-weight: normal; + text-decoration: underline; +} +a,a:link { + color: #336699; + + text-decoration: none; +} +a:visited { + color: #336699; + + text-decoration: none; +} +a:hover { + color: #cc0000; + + text-decoration: none; +} +a.navlink:link, a.toplink:link, ul.navlink li a, ul.toplink li a { + color: #336699; + + font-weight: bold; + text-decoration: none; +} +a.navlink:visited, a.toplink:visited, ul.navlink li a:visited, ul.toplink li a:visited { + color: #336699; + + font-weight: bold; + text-decoration: none; +} +a.navlink:hover, a.toplink:hover, ul.navlink li a:hover, ul.toplink li a:hover { + color: #cc0000; + + font-weight: bold; + text-decoration: none; +} +a.navlink:active, a.toplink:active, ul.navlink li a:active, ul.toplink li a:active { + color: #cc0000; + + font-weight: bold; + text-decoration: none; +} +.active a {font-weight: bold} +a.help { + color: #E68800; + font-size: smaller; + vertical-align: super; + text-decoration: none; +} +pre {font-size: 110%} +pre.data { + + font-size: 100%; +} +pre.error { + font-family: "Lucida Console", "Courier New", "DejaVu Sans Mono", monospace; + font-size: 120%; +} +.intro li {font-weight: bold} +.ac_field {border:1px solid #D9D95F} +.bottom_link { + background: #eee; + border-top: 1px dotted #999; + border-left: 1px dotted #999; + font-size: smaller; +} + +/** FK browsing **/ +div#root > div.fk { + border: 1px solid #000; +} +div.fk { + background: #fff; + border-left: 1px solid #000; + padding: 5px; +} +div.logo { + background-color: #f9f9f9; + margin: 0px; + padding: 0px; + + background-size: 99% 90%; + font-size: smaller; /* 1em; */ + border: none; + margin-bottom: 2px; + background-image: url('../../images/themes/bootstrap/title.png'); + background-repeat: none; + height: 50px; +} +div.logo a { + display: block; + height: 100%; + color: transparent; +} + +.opbutton2, .opbutton1 {width:50px;} diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/themes/bootstrap/title.png b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/themes/bootstrap/title.png new file mode 100644 index 0000000000000000000000000000000000000000..44f5c7a18f9ef396503ae728c360e42a3ae8e01d GIT binary patch literal 5388 zcmeHLX;f3!8jXk=0V_p(MN~*50-})8*MFXsrGo5xFFU74L(|$?Xq>}}pDdI}Y%VSj_&&a8AzG_e)q43xwbWoAa>!(j zb&s_o|3qY4K!E=Rr7_h6?@|T(uEfY0V;ddnjT@b%_1_^(bF7sN{hN0V8?&|z3`$W(YQM zGb0kP?69B^fWVP9&WF~q#*>hXw`RyM<7P-{Cw7z?1%kP{!#wL z3rcFQ(l8;HWjrit6Q`e;DW33L>(r8FD`QyHEZ1zN;cj!ONYg6G^Dyy{B9yNwqcPu5 z+;`6NTp8+7voaM5a#2ghW+l$*NBu`zYoe;E*xX(T4#}-xvm0Mmb!TOr?jDB7S}FeH z#k6G39RNq&acaVd-Dar%?LFh;6TOXIkV6eY7Rs`JuErp!mr5|%cn#0LtXi7?oVViqO`&zr(sk;7W zwdL#%JaYG1i_2-6+^?ZzWuUql1hy7;+a{lYNi4`c?)NxweiVOS+YA+2adwlkETnHz zp{gLbv^4K@>Iih%)gPPBrESbvkn=Ml`GvE+RhHB#KpvHuI4>B}eJlMm+${|z75WZZ zt8?&<^~D$0^-VtTy2*-9Aos0v2*R87?Fv#8^YcP!OL^-uYwpZV{FYUnU+Joy6u)Np zIgBrJ!?aTrWQ2QrDwH;~HZgYh)(BF~u1YoDxS-uaJ@Z$soOktM=JQo`v2B%%r4XHb z{WtY*-4~`>uTk2;nR>|x@&$10Os!yk^}}V7@rPYcJGz!YxapoW5fOWO9M~W0Tun3V@r!|KQR2zNxyj?^Vi?L$bpAbp-sq z=$l7=qP4$IX=DUCk&0SdDe^Z1eyH54++cInM`sx%4mPbPOr;EJ1e;we_TC`qXceu_ zMwwcv_=r?YJ%e~2#ER+ml`@e1IQ8(+KUR8qxilr#uuX&bG@C+K~7mmA& zTbbLFLX5Tb=*Nx!DsKhp@Ke5f>kh{c(Wsc?AKQs2)L03vFtACM+oA8LnFzwp(fp6Z z1+`ArW(??|l*dJ6cUAS*RRxMY%oRUOu4UiR=<+$;y+IdFC#|q|=!g z*@d!xWrFq_jpe&$ZMq)by1qrwT`TE(JUZU^!`>0me6~T&6Ybt&A7plC^{zTt%xn!? zv^6+ONzSOZt1TiZFcbn|f-ua&gdL*e*3>Hznf|l$+cP&Nm$?SMy%Tn`CNjI>));TS zCEj!H?mdxLgR@I0X8N(6S$g0FAEPva!viFX-(JHw85-5s2Z+MbkFT!nY08YEwp|}=vsZ_z0fxRV(v0Xd@*w{>2;G? zi#^Y~t+QK*=KeWWFbK}`SARG9yfx`uBR39qcUabn+k=(}yD+>-Ng>c^#?99{?0suZ z%lvSiWNNd;`7aJ_n9^WfN^S5juB#rt<}%kodvs`-{Y ztCl}o3hVC{>-Q<^MF9g|F6s`wj`rFYUcW!%yt@5_NS|(e-s76{cWn}O9in5>ryvAe znvzg)n&u01HtbMgSJ`^;(h=Nhgb#n7BPxC1V#!GLb zz{;SAVAqx$6>h#rNlmW?ZC?7st}!S+GN==-p@+lIo(OYR*d~z0>_-1}6`e6$gofEPX; z@2$&JAy_OcO+{?GQy!cao!sAZyzVi_^eo3H^W8{$If=2Ia& zqy5WQ(ya1>X*r$Mx5EU2y`|zxPHQYlS}C#eY|zDG4LP6#%eRRjnc^_jqDjr2ATz&ablf1r^WA=ZVBHEW-i4k1YLA-NTe;hYx~Ds3dJfLHY8|cV=(voFVA1QM=XQz? z=QM3P<MJHd%f;AY3~3e#umGOGmpfL;7DQ#L>>x_KNkMxc>qdJ=JRf literal 0 HcmV?d00001 diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/themes/cappuccino/global.css b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/themes/cappuccino/global.css new file mode 100644 index 00000000..5d1a3aa7 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/themes/cappuccino/global.css @@ -0,0 +1,197 @@ +@import url(../global.css); +/** + * cappuccino style sheet + */ +/* ELEMENTS */ +body { + background-color: #ded9c9; + margin: 0; + padding: 0; + font-family: arial; + font-size: 0.9em; /*0.8em;*/ +} +body > * { margin-left: 20px } +body.browser { + background-color: #363330; + font-size: 0.9em; + border-right: 1px dashed #887f5c; + color: #fff; +} +body.browser > * { margin: 0 } +body.browser div.webfx-tree-row:hover { background: #524a42} +h1 {font-size: 1.5em} +h2 { + color: #fff; + font-size: 1em; + font-weight: bold; + border: 2px solid #363330; + background-color: #363330; + padding: 2px 1em; + margin-top: 2em; + margin-bottom: 2em; +} +h3 { + color: #111; + font-weight: bold; +} +table { + border: 0; + border-collapse: collapse; +} +td, th { + padding: 1px 8px; +} +a { + color: #2d547b; + text-decoration: none; +} +a:hover { + color: #cc0000; + text-decoration: underline; +} +input[type=checkbox], input[type=password], input[type=text], input[type=radio] { + background: #ded4b3; + border: 1px solid #887f5c; +} +input[type=submit], input[type=reset], input[type=button], select { + background: #c4ba95 url('../../images/themes/cappuccino/inputbckg.png') repeat-x top left; + border: 1px solid #887f5c; +} +table.error { + background-color: #dec9d0; + border: 2px solid #de7c9c; + margin: auto; +} +th.data { + color: #fff; + background-color: #363330; + border: 1px dotted #887f5c; + font-size: 0.9em; + padding: 3px 7px; +} +th.required {text-decoration: underline} +.topbar, .trail { + color: #fff; + background-color: #363330; + margin: 0; + padding: 0; + text-align: left; +} +.topbar a, .trail a, body.browser a, th.data a { + color: #a8aac2; +} +.topbar .platform, .topbar .host, .topbar .username { + font-weight: bold; +} +.topbar, .trail, .tab { + padding: 2px 1ex; +} +.trail td {padding: 2px} +.crumb .icon {margin-right: 5px} +table.tabs { + width: 100%; + border-collapse: collapse; + margin: 20px 0 40px 0; +} +.tab { + text-align: center; + vertical-align: top; + font-size: 0.8em; + border: 1px solid #887f5c; + background-color: #c8c0a2; + padding: 2px 10px; + white-space: nowrap; +} +.tab:hover {background-color: #b7af8d} +.tabs .active { + border-bottom: none; + background-color: #ded9c9; +} +.tab .icon { + display: block; +} +.active a {font-weight: bold} +a:hover {text-decoration: underline} +ul.toplink, ul.navlink { + list-style: none; + margin:0;padding:0; +} +ul.navlink{margin:20px 0 20px 20px} +ul.toplink li, ul.navlink li { + display:inline; + border-left:1px solid #000000; + margin:0;padding: 0 2px 0 5px; +} +ul.toplink li:first-child, ul.navlink li:first-child { + border: none; + padding-left:0; +} +tr.data1, tr.data2, tr.data3 { + color: #000000; + font-size: 0.8em; + border: 1px dotted #887f5c; +} +tr.data1:hover, tr.data2:hover, tr.data3:hover { + background-color: #c8c0a2; +} +.row1, .data1 { + background-color: #d8d2b9; + text-align: left; +} +.row2, .data2 { + background-color: #ded9c9; + text-align: left; +} +.row3, .data3 {background-color: #d4c8a1} +td.opbutton1, td.opbutton2 { + color: #000000; + cursor: pointer; + padding: 2px 6px; + text-align: center; + border: 1px dotted #887f5c; +} +td.opbutton1:hover, td.opbutton2:hover { + background-color: #b7af8d; +} +a.help { + color: #A46600; + vertical-align: super; + text-decoration: none; + font-size: 0.8em; +} +pre {font-size: 110%} +pre.data {font-size: 100%} +pre.error {font-size: 120%} + +.intro li {font-weight: bold} +.ac_field { + border:1px solid #363330; + background: url('../../images/themes/cappuccino/openListe.png') no-repeat right; + padding-right: 20px; +} +.bottom_link { + background: #b7af8d; + border-top: 1px dotted #887f5c; + border-left: 1px dotted #887f5c; +} + +/** FK browsing **/ +div.fk { + background: #fff; + border-left: 1px dotted #000; + padding: 5px; +} +div.logo { + margin: 0px; + padding: 0px; + border: none; + margin-bottom: 15px; + background-image: url('../../images/themes/cappuccino/title.png'); + background-repeat: no-repeat; + height: 50px; +} +div.logo a { + display: block; + height: 100%; + color: transparent; +} diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/themes/default/global.css b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/themes/default/global.css new file mode 100644 index 00000000..c28cd9f6 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/themes/default/global.css @@ -0,0 +1,266 @@ +@import url(../global.css); +/** + * Default style sheet + */ + +/** ELEMENTS */ +body { + background-color: #FFFFFF; + margin: 4px; + font-family: arial, tahoma, verdana, helvetica, sans-serif, serif; + padding: 0px; + font-size: smaller; /*0.8em;*/ +} +body.browser { + background-color: #efefef; + font-family: arial, tahoma, verdana, helvetica, sans-serif, serif; + font-size: smaller; /*1em;*/ + border-right: 1px dashed #c0c0c0; +} +body.bottombar { + background-color: #CECF9C; + margin: 0px; + padding: 0px; + font-family: arial, tahoma, verdana, helvetica, sans-serif, serif; + font-size: smaller; /*1em;*/ + text-align: left; +} +h2 { + color: #666633; + font-size: medium; /*1.3em;*/ + font-family: arial, tahoma, verdana, helvetica, sans-serif, serif; + font-weight: bold; + border: 2px solid #E6E6CC; + background-color: #F3F3E9; + padding: 2px 1em; + margin: 0 0 1ex 0; +} +h3 { + color: #666633; + font-size: small; + font-family: arial, tahoma, verdana, helvetica, sans-serif, serif; + font-weight: bold; +} +table.error {background-color: #E6E6CC} +table.error td {background-color: #E6E6CC} +table.navbar {background-color: #E6E6CC} +table.navbar td { + height: 25px; + color: #000000; + background-color: #F3F3E9; + text-align: center; + font-family: arial, tahoma, verdana, helvetica, sans-serif, serif; + font-size: smaller; /* 0.9em */ + font-weight: bold; +} +table.navbar td.active {background-color: #E6E6CC} +th.data { + color: #000000; + background-color: #E6E6CC; + font-family: arial, tahoma, verdana, helvetica, sans-serif, serif; + font-size: smaller; /* 0.9em */ +} +th.data a:active, th.data a:link, th.data a:visited, th.data a:hover { + font-weight: bold; +} +td.dat { + color: #ff0; + text-align: center; +} +th.required {text-decoration: underline} +td.topbar { + background-color: #CECF9C; + margin: 0px 0px; + padding: 0px; + font-family: arial, tahoma, verdana, helvetica, sans-serif, serif; + font-size: smaller; /*0.8em;*/ + text-align: left; +} +ul.toplink,ul.navlink { + list-style: none; + margin:0;padding:0; +} +ul.navlink{margin:20px 0} +ul.toplink li, ul.navlink li { + display:inline; + border-left:1px solid #000000; + margin:0;padding: 0 2px 0 5px; +} +ul.toplink li:first-child, ul.navlink li:first-child { + border: none; + padding-left:0; +} +tr.data1, tr.data2, tr.data3 { + color: #000000; + font-family: arial, tahoma, verdana, helvetica, sans-serif, serif; + font-size: smaller; /*0.8em;*/ +} +tr.data1:hover, tr.data2:hover, tr.data3:hover { + background-color: #DDD; +} +.row1, .data1 { + background-color: #F3F3E9; + text-align: left; +} +.row2, .data2 { + background-color: #E6E6CC; + text-align: left; +} +.row3, .data3 {background-color: #F3F3E9} +td.opbutton1 { + color: #000000; + border-top: 1px solid #FFFFFF; + border-right: 1px solid #706D41; + border-bottom: 1px solid #706D41; + border-left: 1px solid #FFFFFF; + cursor: pointer; + font-family: arial, tahoma, verdana, helvetica, sans-serif, serif; + font-size: smaller; /*0.8em;*/ + padding-left: 6px; + padding-right: 6px; + text-align: center; +} +td.opbutton2 { + color: #000000; + border-top: 1px solid #FFFFFF; + border-right: 1px solid #706D41; + border-bottom: 1px solid #706D41; + border-left: 1px solid #FFFFFF; + cursor: pointer; + font-family: arial, tahoma, verdana, helvetica, sans-serif, serif; + font-size: smaller; /*0.8em;*/ + padding-left: 6px; + padding-right: 6px; + text-align: center; +} +.topbar {border: 2px solid #CECF9C} +.topbar, .topbar * { + background-color: #CECF9C; +} +.topbar .platform, .topbar .host, .topbar .username { + font-weight: bold; +} +.topbar, .trail { + margin-bottom: 2px; +} +.topbar, .trail, .tab { + padding: 2px 1ex; + font-size: smaller; +} +.trail, .tab { + border: 2px solid #E6E6CC; + background-color: #F3F3E9; +} +.trail .crumb {background-color: #F3F3E9} +.crumb, .tab { + vertical-align: top; +} +.crumb .icon { + vertical-align: middle; + margin: 0 2px; +} +table.tabs { + width: 100%; + border-collapse: collapse; + margin-bottom: 1ex; +} +.tab {text-align: center} +.tabs .active {background-color: #E6E6CC} +.tab .icon {display: block} +a:active { + color: #989973; + font-family: arial, tahoma, verdana, helvetica, sans-serif, serif; + font-weight: normal; + text-decoration: underline; +} +a,a:link { + color: #336699; + font-family: arial, tahoma, verdana, helvetica, sans-serif, serif; + text-decoration: none; +} +a:visited { + color: #336699; + font-family: arial, tahoma, verdana, helvetica, sans-serif, serif; + text-decoration: none; +} +a:hover { + color: #cc0000; + font-family: arial, tahoma, verdana, helvetica, sans-serif, serif; + text-decoration: none; +} +a.navlink:link, a.toplink:link, ul.navlink li a, ul.toplink li a { + color: #336699; + font-family: arial, tahoma, verdana, helvetica, sans-serif, serif; + font-weight: bold; + text-decoration: none; +} +a.navlink:visited, a.toplink:visited, ul.navlink li a:visited, ul.toplink li a:visited { + color: #336699; + font-family: arial, tahoma, verdana, helvetica, sans-serif, serif; + font-weight: bold; + text-decoration: none; +} +a.navlink:hover, a.toplink:hover, ul.navlink li a:hover, ul.toplink li a:hover { + color: #cc0000; + font-family: arial, tahoma, verdana, helvetica, sans-serif, serif; + font-weight: bold; + text-decoration: none; +} +a.navlink:active, a.toplink:active, ul.navlink li a:active, ul.toplink li a:active { + color: #cc0000; + font-family: arial, tahoma, verdana, helvetica, sans-serif, serif; + font-weight: bold; + text-decoration: none; +} +.active a {font-weight: bold} +a.help { + color: #E68800; + font-size: smaller; + vertical-align: super; + text-decoration: none; +} +pre {font-size: 110%} +pre.data { + font-family: arial, tahoma, verdana, helvetica, sans-serif, serif; + font-size: 100%; +} +pre.error { + font-family: "Lucida Console", "Courier New", "DejaVu Sans Mono", monospace; + font-size: 120%; +} +.intro li {font-weight: bold} +.ac_field {border:1px solid #D9D95F} +.bottom_link { + background: #eee; + border-top: 1px dotted #999; + border-left: 1px dotted #999; + font-size: smaller; +} + +/** FK browsing **/ +div#root > div.fk { + border: 1px solid #000; +} +div.fk { + background: #fff; + border-left: 1px solid #000; + padding: 5px; +} +div.logo { + background-color: #CECF9C; + margin: 0px; + padding: 0px; + font-family: arial, tahoma, verdana, helvetica, sans-serif, serif; + font-size: smaller; /* 1em; */ + border: none; + border-bottom: 2px solid #000000; + margin-bottom: 2px; + background-image: url('../../images/themes/default/title.png'); + background-repeat: no-repeat; + height: 50px; +} +div.logo a { + display: block; + height: 100%; + color: transparent; +} diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/themes/global.css b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/themes/global.css new file mode 100644 index 00000000..6e62f0f5 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/themes/global.css @@ -0,0 +1,111 @@ +/** + * This is hte mandatory CSS file to include on top of every CSS theme file + **/ + +img { border: none; } +p.message {color: blue} +p.comment {font-style: italic} +.left{text-align: left} +.pre {white-space: pre} + +.arg_icon { + padding-right:5pt; + padding-left:5pt; +} + +/** Browser Tree using XLoadTree 2 **/ +body.browser { + height: 100%; + margin: 0px; + padding: 0px; + text-align: left; +} +.refreshTree { + float:right; + text-align:right; + padding: 0 3px; +} +.webfx-tree-row {white-space: nowrap} +.webfx-tree-children { + background-repeat: repeat-y; + background-position-y: 1px !important; /* IE only */ +} +.webfx-tree-row img {vertical-align: middle} +.webfx-tree-item-label {margin-left: 0.5ex} +.webfx-tree-icon {margin-left: 1px} +.webfx-tree-hide-root {display: none} + +/** auto-complete on insert **/ +#fkbg { + display:none; + position:fixed; + top:0;left:0; + width:100%; + height:100%; + z-index:10; +} +#fklist { + display:none; + position:absolute; + background:#fff; + border:1px solid #000; + overflow:auto; + z-index:15; +} +#fklist table { + border-collapse:collapse; + border: 1px solid #aaa; +} +#fklist th {border: 1px solid #aaa} +#fklist td, +#fklist th { + padding: 3px 10px; + border-right: 1px solid #aaa; + font-size: 12px; +} +#fklist td a { + display:block; + color:#000; +} +#fklist td a.fkval, p.errmsg { + color:red; +} +.ac_values {width:100%} + +/** bottom link back to top **/ +.bottom_link { + position: fixed; + bottom: 0; + right: 0; + margin: 0; + padding: 4px; + background: #eee; + border-top: 1px dotted #999; + border-left: 1px dotted #999; + font-size: smaller; +} + +/** FK browsing **/ +div#root { + position: absolute; +} +div.fk { + margin-left: 20px; +} +div#fkcontainer { + margin: 0; + position: relative; + width: 100%; + background: none; + border:0px; +} +div.fk_value { + display:inline-block; +} +.highlight { + background-color: #FFFF00; +} +/** Syntax highlighting **/ +.comment {color: #008080} +.keyword {color: #FF8000} +.literal {color: #808080} diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/themes/gotar/global.css b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/themes/gotar/global.css new file mode 100644 index 00000000..5b693189 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/themes/gotar/global.css @@ -0,0 +1,262 @@ +@import url(../global.css); +/** + * Default style sheet + */ + +/** ELEMENTS */ + +body { + background-color: #336; + margin: 0px; + padding: 0px; + font-size: smaller; /*0.8em;*/ + font-family: sans-serif; + color: #fff; +} +p { + color: #fff; +} +p.comment, td.comment_cell { + color: #aff; +} +table { + border:1px gray solid; +} +body.browser { + background-color: #447; + color:#4bf; + font-size: smaller; /*1em;*/ + border-right: 1px dashed #c0c0c0; +} +body.browser a { + color:#fff; +} +body.browser a:hover { + color:#cde; +} +body.browser div.webfx-tree-row:hover { background:#88d } +h2 { + color: #fff; + font-size: medium; /*1.3em;*/ + font-weight: bold; + border: 0; + background-color: #558; + padding: 0; + margin: 0; + text-align:center; +} +h3 { + color: #eee; + font-size: small; + font-weight: bold; +} +table.error {background-color: #f00} +table.error td {background-color: #f84} +th.data { + color: #ada; + background-color: #241; + font-size: smaller; /* 0.9em */ +} +th.data a:active, th.data a:link, th.data a:visited, th.data a:hover { + font-weight: bold; + display:block; +} +td.dat { + color: #ff0; + text-align: center; +} +th.required {text-decoration: underline} +ul.toplink,ul.navlink { + list-style: none; + margin:0;padding:0; +} +ul.navlink{margin:20px 0} +ul.toplink li, ul.navlink li { + display:inline; + border-left:1px solid #eee; + margin:0;padding: 0 2px 0 5px; +} +ul.toplink li:first-child, ul.navlink li:first-child { + border: none; + padding-left:0; +} +tr.data1, tr.data2, tr.data3 { + color: #eed; + font-family: sans-serif; + font-size: smaller; /*0.8em;*/ +} +tr.data1:hover, tr.data2:hover, tr.data3:hover { + background-color: #39663e; +} +.row1, .data1 { + background-color: #2b482e; + text-align: left; +} +input, textarea, select { + border:1px #200 solid; + background:#ddf; +} +input, textarea, select { + color:#210; +} +td label { + display:table; + text-align:center; + height:100%; + width:100%; + border-collapse: collapse; +} +td label span { + display:table-cell; + vertical-align:middle; +} +.data1 select, .data2 select { + font-weight:bold; +} +p input:focus, .data input:focus, .data1 input:focus, .data2 input:focus, textarea:focus, .data1 select, .data2 select { +/* background:#bbf; */ + background:#eef; + color:#000; +} +.row2, .data2 { + background-color: #1a3f1e; + text-align: left; +} +td.opbutton1 { + border: 1px solid #484; + font-size: smaller; /*0.8em;*/ + text-align: center; +} +td.opbutton2 { + border: 1px solid #484; + font-size: smaller; /*0.8em;*/ + text-align: center; +} +td.opbutton1 a, td.opbutton2 a { + padding-left:6px; + padding-right:6px; +} +.topbar { border: 0 } +.topbar, .topbar *, .trail, .tab, .crumb { + border: 0; + background: #336; +} +.topbar .platform, .topbar .host, .topbar .username { + font-weight: bold; +} +.topbar, .trail, .tab { + padding: 2px 1ex; + font-size: smaller; + color: #ddf; +} +.crumb, .tab { + vertical-align: top; +} +.crumb .icon { + vertical-align: middle; + margin: 0; +} +table.tabs { + width: 100%; + border-collapse: collapse; + margin-bottom: 1ex; +} +.tab {text-align: center} +.tabs .active {background-color: #449} +.tab .icon {display: block} +tr,td { height:100% } +td:not(.constraint_cell) a:not(.help), th a { display:inline-block; height:100% } /* vertical-align:middle doesn't work for block elements, CSS sux */ +td.crumb a, td.tab a { width:90% } +tr.data1 a, tr.data2 a { width:100% } +td.opbutton1 a, td.opbutton2 a { width:inherit } +td a.help { display:inline; position:absolute; width:10px; } +a.pagenav { display:inline-block; min-width:15px; } +a.toplink { display:inline } +a:active { + color: #989973; + font-weight: normal; + text-decoration: underline; +} +a,a:link { + color: #afa; + text-decoration: none; +} +a:visited { + color: #df8; + text-decoration: none; +} +a:hover { + color: #f88; + text-decoration: none; +} +a:active { + color: #c00; +} +a.navlink:link, a.toplink:link, ul.navlink li a, ul.toplink li a { + color: #afa; + font-weight: bold; + text-decoration: none; +} +a.navlink:visited, a.toplink:visited, ul.navlink li a:visited, ul.toplink li a:visited { + color: #df8; + font-weight: bold; + text-decoration: none; +} +a.navlink:hover, a.toplink:hover, ul.navlink li a:hover, ul.toplink li a:hover { + color: red; + font-weight: bold; + text-decoration: none; +} +a.navlink:active, a.toplink:active, ul.navlink li a:active, ul.toplink li a:active { + color: #c00; + font-weight: bold; + text-decoration: none; +} +.active a {font-weight: bold} +a.help { + color: #E68800; + font-size: smaller; + vertical-align: super; + text-decoration: none; +} +pre {font-size: 110%} +pre.data { + font-size: 100%; +} +.error p { + color:#822; + background:#fc8; +} +pre.error { + color: #000; + font-family: monospace; + font-size: 120%; +} +.intro li {font-weight: bold} +.ac_field {border:1px solid #D9D95F} +.bottom_link { + color: #004 !important; + background: #eee; + border-top: 1px dotted #999; + border-left: 1px dotted #999; + font-size: smaller; +} + +a.bottom_link:hover { background:#68f } + +/** FK browsing **/ +div#root > div.fk { + border: 1px solid #000; +} +div.fk { + /*background: #84c;*/ + background: rgba(128,32,64,0.6); + border-left: 1px solid #000; + padding: 5px 0 5px 0; +} +div.logo { display:none } +div.logo a { + display: block; + height: 100%; + color: transparent: +} diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/themes/themes.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/themes/themes.php new file mode 100644 index 00000000..f9edb666 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/themes/themes.php @@ -0,0 +1,16 @@ + 'Default', + 'cappuccino' => 'Cappuccino', + 'gotar' => 'Blue/Green', + 'bootstrap' => 'Bootstrap3' + ); +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/triggers.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/triggers.php new file mode 100644 index 00000000..339e4ae4 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/triggers.php @@ -0,0 +1,448 @@ +alterTrigger($_POST['table'], $_POST['trigger'], $_POST['name']); + if ($status == 0) + doDefault($lang['strtriggeraltered']); + else + doAlter($lang['strtriggeralteredbad']); + } + + /** + * Function to allow altering of a trigger + */ + function doAlter($msg = '') { + global $data, $misc; + global $lang; + + $misc->printTrail('trigger'); + $misc->printTitle($lang['stralter'],'pg.trigger.alter'); + $misc->printMsg($msg); + + $triggerdata = $data->getTrigger($_REQUEST['table'], $_REQUEST['trigger']); + + if ($triggerdata->recordCount() > 0) { + + if (!isset($_POST['name'])) $_POST['name'] = $triggerdata->fields['tgname']; + + echo "
\n"; + echo "\n"; + echo "\n"; + echo "
{$lang['strname']}"; + echo "_maxNameLen}\" value=\"", + htmlspecialchars($_POST['name']), "\" />\n"; + echo "
\n"; + echo "

\n"; + echo "\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + else echo "

{$lang['strnodata']}

\n"; + } + + /** + * Show confirmation of drop and perform actual drop + */ + function doDrop($confirm) { + global $data, $misc; + global $lang; + + if ($confirm) { + $misc->printTrail('trigger'); + $misc->printTitle($lang['strdrop'],'pg.trigger.drop'); + + echo "

", sprintf($lang['strconfdroptrigger'], $misc->printVal($_REQUEST['trigger']), + $misc->printVal($_REQUEST['table'])), "

\n"; + + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo $misc->form; + echo "

\n"; + echo "\n"; + echo "\n"; + echo "
\n"; + } + else { + $status = $data->dropTrigger($_POST['trigger'], $_POST['table'], isset($_POST['cascade'])); + if ($status == 0) + doDefault($lang['strtriggerdropped']); + else + doDefault($lang['strtriggerdroppedbad']); + } + + } + + /** + * Show confirmation of enable trigger and perform enabling the trigger + */ + function doEnable($confirm) { + global $data, $misc; + global $lang; + + if ($confirm) { + $misc->printTrail('trigger'); + $misc->printTitle($lang['strenable'],'pg.table.alter'); + + echo "

", sprintf($lang['strconfenabletrigger'], $misc->printVal($_REQUEST['trigger']), + $misc->printVal($_REQUEST['table'])), "

\n"; + + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "
\n"; + } + else { + $status = $data->enableTrigger($_POST['trigger'], $_POST['table']); + if ($status == 0) + doDefault($lang['strtriggerenabled']); + else + doDefault($lang['strtriggerenabledbad']); + } + + } + + /** + * Show confirmation of disable trigger and perform disabling the trigger + */ + function doDisable($confirm) { + global $data, $misc; + global $lang; + + if ($confirm) { + $misc->printTrail('trigger'); + $misc->printTitle($lang['strdisable'],'pg.table.alter'); + + echo "

", sprintf($lang['strconfdisabletrigger'], $misc->printVal($_REQUEST['trigger']), + $misc->printVal($_REQUEST['table'])), "

\n"; + + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "
\n"; + } + else { + $status = $data->disableTrigger($_POST['trigger'], $_POST['table']); + if ($status == 0) + doDefault($lang['strtriggerdisabled']); + else + doDefault($lang['strtriggerdisabledbad']); + } + + } + + /** + * Let them create s.th. + */ + function doCreate($msg = '') { + global $data, $misc; + global $lang; + + $misc->printTrail('table'); + $misc->printTitle($lang['strcreatetrigger'],'pg.trigger.create'); + $misc->printMsg($msg); + + // Get all the functions that can be used in triggers + $funcs = $data->getTriggerFunctions(); + if ($funcs->recordCount() == 0) { + doDefault($lang['strnofunctions']); + return; + } + + /* Populate functions */ + $sel0 = new XHTML_Select('formFunction'); + while (!$funcs->EOF) { + $sel0->add(new XHTML_Option($funcs->fields['proname'])); + $funcs->moveNext(); + } + + /* Populate times */ + $sel1 = new XHTML_Select('formExecTime'); + $sel1->set_data($data->triggerExecTimes); + + /* Populate events */ + $sel2 = new XHTML_Select('formEvent'); + $sel2->set_data($data->triggerEvents); + + /* Populate occurences */ + $sel3 = new XHTML_Select('formFrequency'); + $sel3->set_data($data->triggerFrequency); + + echo "
\n"; + echo "\n"; + echo "\n"; + echo " \n"; + echo " \n"; + echo "\n"; + echo "\n"; + echo " \n"; + echo " \n"; + echo "\n"; + echo "\n"; + echo " \n"; + echo " \n"; + echo "\n"; + echo "\n"; + echo " \n"; + echo " \n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "
{$lang['strname']}{$lang['strwhen']}
", $sel1->fetch(), "
{$lang['strevent']}{$lang['strforeach']}
", $sel2->fetch(), " ", $sel3->fetch(), "
{$lang['strfunction']} {$lang['strarguments']}
", $sel0->fetch(), "()
\n"; + echo "

\n"; + echo "

\n"; + echo "\n"; + echo "\n"; + echo $misc->form; + echo "
\n"; + } + + /** + * Actually creates the new trigger in the database + */ + function doSaveCreate() { + global $data; + global $lang; + + // Check that they've given a name and a definition + + if ($_POST['formFunction'] == '') + doCreate($lang['strtriggerneedsfunc']); + elseif ($_POST['formTriggerName'] == '') + doCreate($lang['strtriggerneedsname']); + elseif ($_POST['formEvent'] == '') + doCreate(); + else { + $status = $data->createTrigger($_POST['formTriggerName'], $_POST['table'], + $_POST['formFunction'], $_POST['formExecTime'], $_POST['formEvent'], + $_POST['formFrequency'], $_POST['formTriggerArgs']); + if ($status == 0) + doDefault($lang['strtriggercreated']); + else + doCreate($lang['strtriggercreatedbad']); + } + } + + /** + * List all the triggers on the table + */ + function doDefault($msg = '') { + global $data, $misc, $database; + global $lang; + + function tgPre(&$rowdata,$actions) { + global $data; + // toggle enable/disable trigger per trigger + if( ! $data->phpBool( $rowdata->fields["tgenabled"] ) ) { + unset( $actions['disable'] ); + } + else{ + unset( $actions['enable'] ); + } + + return $actions; + } + + $misc->printTrail('table'); + $misc->printTabs('table','triggers'); + $misc->printMsg($msg); + + $triggers = $data->getTriggers($_REQUEST['table']); + + $columns = array( + 'trigger' => array( + 'title' => $lang['strname'], + 'field' => field('tgname'), + ), + 'definition' => array( + 'title' => $lang['strdefinition'], + 'field' => field('tgdef'), + ), + 'function' => array( + 'title' => $lang['strfunction'], + 'field' => field('proproto'), + 'url' => "functions.php?action=properties&server={$_REQUEST['server']}&database={$_REQUEST['database']}&", + 'vars' => array( + 'schema' => 'pronamespace', + 'function' => 'proproto', + 'function_oid' => 'prooid', + ), + ), + 'actions' => array( + 'title' => $lang['stractions'], + ), + ); + + $actions = array( + 'alter' => array( + 'content' => $lang['stralter'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'triggers.php', + 'urlvars' => array ( + 'action' => 'confirm_alter', + 'table' => $_REQUEST['table'], + 'trigger' => field('tgname') + ) + ) + ) + ), + 'drop' => array( + 'content' => $lang['strdrop'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'triggers.php', + 'urlvars' => array ( + 'action' => 'confirm_drop', + 'table' => $_REQUEST['table'], + 'trigger' => field('tgname') + ) + ) + ) + ), + ); + if($data->hasDisableTriggers()) { + $actions['enable'] = array( + 'content' => $lang['strenable'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'triggers.php', + 'urlvars' => array ( + 'action' => 'confirm_enable', + 'table' => $_REQUEST['table'], + 'trigger' => field('tgname') + ) + ) + ) + ); + $actions['disable'] = array( + 'content' => $lang['strdisable'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'triggers.php', + 'urlvars' => array ( + 'action' => 'confirm_disable', + 'table' => $_REQUEST['table'], + 'trigger' => field('tgname') + ) + ) + ) + ); + } + + $misc->printTable($triggers, $columns, $actions, 'triggers-triggers', $lang['strnotriggers'], 'tgPre'); + + $misc->printNavLinks(array ('create' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'triggers.php', + 'urlvars' => array ( + 'action' => 'create', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'table' => $_REQUEST['table'] + ) + ) + ), + 'content' => $lang['strcreatetrigger'] + )), 'triggers-triggers', get_defined_vars()); + } + + function doTree() { + + global $misc, $data; + + $triggers = $data->getTriggers($_REQUEST['table']); + + $reqvars = $misc->getRequestVars('table'); + + $attrs = array( + 'text' => field('tgname'), + 'icon' => 'Trigger', + ); + + $misc->printTree($triggers, $attrs, 'triggers'); + exit; + } + + if ($action == 'tree') doTree(); + + $misc->printHeader($lang['strtables'] . ' - ' . $_REQUEST['table'] . ' - ' . $lang['strtriggers']); + $misc->printBody(); + + switch ($action) { + case 'alter': + if (isset($_POST['alter'])) doSaveAlter(); + else doDefault(); + break; + case 'confirm_alter': + doAlter(); + break; + case 'confirm_enable': + doEnable(true); + break; + case 'confirm_disable': + doDisable(true); + break; + case 'save_create': + if (isset($_POST['cancel'])) doDefault(); + else doSaveCreate(); + break; + case 'create': + doCreate(); + break; + case 'drop': + if (isset($_POST['yes'])) doDrop(false); + else doDefault(); + break; + case 'confirm_drop': + doDrop(true); + break; + case 'enable': + if (isset($_POST['yes'])) doEnable(false); + else doDefault(); + break; + case 'disable': + if (isset($_POST['yes'])) doDisable(false); + else doDefault(); + break; + default: + doDefault(); + break; + } + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/types.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/types.php new file mode 100644 index 00000000..a3ca1a34 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/types.php @@ -0,0 +1,714 @@ +getType($_REQUEST['type']); + + $misc->printTrail('type'); + $misc->printTitle($lang['strproperties'], 'pg.type'); + $misc->printMsg($msg); + + function attPre(&$rowdata) { + global $data; + $rowdata->fields['+type'] = $data->formatType($rowdata->fields['type'], $rowdata->fields['atttypmod']); + } + + if ($typedata->recordCount() > 0) { + $vals = false; + switch ($typedata->fields['typtype']) { + case 'c': + $attrs = $data->getTableAttributes($_REQUEST['type']); + + $columns = array( + 'field' => array( + 'title' => $lang['strfield'], + 'field' => field('attname'), + ), + 'type' => array( + 'title' => $lang['strtype'], + 'field' => field('+type'), + ), + 'comment' => array( + 'title' => $lang['strcomment'], + 'field' => field('comment'), + ) + ); + + $actions = array(); + + $misc->printTable($attrs, $columns, $actions, 'types-properties', null, 'attPre'); + + break; + case 'e': + $vals = $data->getEnumValues($typedata->fields['typname']); + default: + $byval = $data->phpBool($typedata->fields['typbyval']); + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + if ($data->hasEnumTypes() && $vals) { + $vals = $vals->getArray(); + $nbVals = count($vals); + echo "\n\t\n"; + echo "\n"; + for ($i=1; $i < $nbVals; $i++) + echo "\n"; + } + echo "
{$lang['strname']}", $misc->printVal($typedata->fields['typname']), "
{$lang['strinputfn']}", $misc->printVal($typedata->fields['typin']), "
{$lang['stroutputfn']}", $misc->printVal($typedata->fields['typout']), "
{$lang['strlength']}", $misc->printVal($typedata->fields['typlen']), "
{$lang['strpassbyval']}", ($byval) ? $lang['stryes'] : $lang['strno'], "
{$lang['stralignment']}", $misc->printVal($typedata->fields['typalign']), "
{$lang['strenumvalues']}{$vals[0]['enumval']}
{$vals[$i]['enumval']}
\n"; + } + + $misc->printNavLinks(array ('showall' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'types.php', + 'urlvars' => array ( + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + ) + ) + ), + 'content' => $lang['strshowalltypes'] + )), 'types-properties', get_defined_vars()); + } else + doDefault($lang['strinvalidparam']); + } + + /** + * Show confirmation of drop and perform actual drop + */ + function doDrop($confirm) { + global $data, $misc; + global $lang; + + if ($confirm) { + $misc->printTrail('type'); + $misc->printTitle($lang['strdrop'], 'pg.type.drop'); + + echo "

", sprintf($lang['strconfdroptype'], $misc->printVal($_REQUEST['type'])), "

\n"; + + echo "
\n"; + echo "

\n"; + echo "

\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + else { + $status = $data->dropType($_POST['type'], isset($_POST['cascade'])); + if ($status == 0) + doDefault($lang['strtypedropped']); + else + doDefault($lang['strtypedroppedbad']); + } + + } + + /** + * Displays a screen where they can enter a new composite type + */ + function doCreateComposite($msg = '') { + global $data, $misc; + global $lang; + + if (!isset($_REQUEST['stage'])) $_REQUEST['stage'] = 1; + if (!isset($_REQUEST['name'])) $_REQUEST['name'] = ''; + if (!isset($_REQUEST['fields'])) $_REQUEST['fields'] = ''; + if (!isset($_REQUEST['typcomment'])) $_REQUEST['typcomment'] = ''; + + switch ($_REQUEST['stage']) { + case 1: + $misc->printTrail('type'); + $misc->printTitle($lang['strcreatecomptype'], 'pg.type.create'); + $misc->printMsg($msg); + + echo "
\n"; + echo "\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + + echo "
{$lang['strname']}_maxNameLen}\" value=\"", + htmlspecialchars($_REQUEST['name']), "\" />
{$lang['strnumfields']}_maxNameLen}\" value=\"", + htmlspecialchars($_REQUEST['fields']), "\" />
{$lang['strcomment']}
\n"; + echo "

\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + break; + case 2: + global $lang; + + // Check inputs + $fields = trim($_REQUEST['fields']); + if (trim($_REQUEST['name']) == '') { + $_REQUEST['stage'] = 1; + doCreateComposite($lang['strtypeneedsname']); + return; + } + elseif ($fields == '' || !is_numeric($fields) || $fields != (int)$fields || $fields < 1) { + $_REQUEST['stage'] = 1; + doCreateComposite($lang['strtypeneedscols']); + return; + } + + $types = $data->getTypes(true, false, true); + + $misc->printTrail('schema'); + $misc->printTitle($lang['strcreatecomptype'], 'pg.type.create'); + $misc->printMsg($msg); + + echo "
\n"; + + // Output table header + echo "\n"; + echo "\t"; + echo"\n"; + + for ($i = 0; $i < $_REQUEST['fields']; $i++) { + if (!isset($_REQUEST['field'][$i])) $_REQUEST['field'][$i] = ''; + if (!isset($_REQUEST['length'][$i])) $_REQUEST['length'][$i] = ''; + if (!isset($_REQUEST['colcomment'][$i])) $_REQUEST['colcomment'][$i] = ''; + + echo "\t\n\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + + // Output array type selector + echo "\t\t\n"; + + echo "\t\t\n"; + echo "\t\t\n\t\n"; + } + echo "
{$lang['strfield']}{$lang['strtype']}{$lang['strlength']}{$lang['strcomment']}
", $i + 1, ". _maxNameLen}\" value=\"", + htmlspecialchars($_REQUEST['field'][$i]), "\" />\n\t\t\t\n\t\t\n\t\t\t\n\t\t
\n"; + echo "

\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "

\n"; + echo "
\n"; + + break; + case 3: + global $data, $lang; + + // Check inputs + $fields = trim($_REQUEST['fields']); + if (trim($_REQUEST['name']) == '') { + $_REQUEST['stage'] = 1; + doCreateComposite($lang['strtypeneedsname']); + return; + } + elseif ($fields == '' || !is_numeric($fields) || $fields != (int)$fields || $fields <= 0) { + $_REQUEST['stage'] = 1; + doCreateComposite($lang['strtypeneedscols']); + return; + } + + $status = $data->createCompositeType($_REQUEST['name'], $_REQUEST['fields'], $_REQUEST['field'], + $_REQUEST['type'], $_REQUEST['array'], $_REQUEST['length'], $_REQUEST['colcomment'], + $_REQUEST['typcomment']); + + if ($status == 0) + doDefault($lang['strtypecreated']); + elseif ($status == -1) { + $_REQUEST['stage'] = 2; + doCreateComposite($lang['strtypeneedsfield']); + return; + } + else { + $_REQUEST['stage'] = 2; + doCreateComposite($lang['strtypecreatedbad']); + return; + } + break; + default: + echo "

{$lang['strinvalidparam']}

\n"; + } + } + + /** + * Displays a screen where they can enter a new enum type + */ + function doCreateEnum($msg = '') { + global $data, $misc; + global $lang; + + if (!isset($_REQUEST['stage'])) $_REQUEST['stage'] = 1; + if (!isset($_REQUEST['name'])) $_REQUEST['name'] = ''; + if (!isset($_REQUEST['values'])) $_REQUEST['values'] = ''; + if (!isset($_REQUEST['typcomment'])) $_REQUEST['typcomment'] = ''; + + switch ($_REQUEST['stage']) { + case 1: + $misc->printTrail('type'); + $misc->printTitle($lang['strcreateenumtype'], 'pg.type.create'); + $misc->printMsg($msg); + + echo "
\n"; + echo "\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + + echo "
{$lang['strname']}_maxNameLen}\" value=\"", + htmlspecialchars($_REQUEST['name']), "\" />
{$lang['strnumvalues']}_maxNameLen}\" value=\"", + htmlspecialchars($_REQUEST['values']), "\" />
{$lang['strcomment']}
\n"; + echo "

\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + break; + case 2: + global $lang; + + // Check inputs + $values = trim($_REQUEST['values']); + if (trim($_REQUEST['name']) == '') { + $_REQUEST['stage'] = 1; + doCreateEnum($lang['strtypeneedsname']); + return; + } + elseif ($values == '' || !is_numeric($values) || $values != (int)$values || $values < 1) { + $_REQUEST['stage'] = 1; + doCreateEnum($lang['strtypeneedsvals']); + return; + } + + $misc->printTrail('schema'); + $misc->printTitle($lang['strcreateenumtype'], 'pg.type.create'); + $misc->printMsg($msg); + + echo "
\n"; + + // Output table header + echo "\n"; + echo "\t\n"; + + for ($i = 0; $i < $_REQUEST['values']; $i++) { + if (!isset($_REQUEST['value'][$i])) $_REQUEST['value'][$i] = ''; + + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + } + echo "
{$lang['strvalue']}
", $i + 1, ". _maxNameLen}\" value=\"", + htmlspecialchars($_REQUEST['value'][$i]), "\" />
\n"; + echo "

\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "

\n"; + echo "
\n"; + + break; + case 3: + global $data, $lang; + + // Check inputs + $values = trim($_REQUEST['values']); + if (trim($_REQUEST['name']) == '') { + $_REQUEST['stage'] = 1; + doCreateEnum($lang['strtypeneedsname']); + return; + } + elseif ($values == '' || !is_numeric($values) || $values != (int)$values || $values <= 0) { + $_REQUEST['stage'] = 1; + doCreateEnum($lang['strtypeneedsvals']); + return; + } + + $status = $data->createEnumType($_REQUEST['name'], $_REQUEST['value'], $_REQUEST['typcomment']); + + if ($status == 0) + doDefault($lang['strtypecreated']); + elseif ($status == -1) { + $_REQUEST['stage'] = 2; + doCreateEnum($lang['strtypeneedsvalue']); + return; + } + else { + $_REQUEST['stage'] = 2; + doCreateEnum($lang['strtypecreatedbad']); + return; + } + break; + default: + echo "

{$lang['strinvalidparam']}

\n"; + } + } + + /** + * Displays a screen where they can enter a new type + */ + function doCreate($msg = '') { + global $data, $misc; + global $lang; + + if (!isset($_POST['typname'])) $_POST['typname'] = ''; + if (!isset($_POST['typin'])) $_POST['typin'] = ''; + if (!isset($_POST['typout'])) $_POST['typout'] = ''; + if (!isset($_POST['typlen'])) $_POST['typlen'] = ''; + if (!isset($_POST['typdef'])) $_POST['typdef'] = ''; + if (!isset($_POST['typelem'])) $_POST['typelem'] = ''; + if (!isset($_POST['typdelim'])) $_POST['typdelim'] = ''; + if (!isset($_POST['typalign'])) $_POST['typalign'] = $data->typAlignDef; + if (!isset($_POST['typstorage'])) $_POST['typstorage'] = $data->typStorageDef; + + // Retrieve all functions and types in the database + $funcs = $data->getFunctions(true); + $types = $data->getTypes(true); + + $misc->printTrail('schema'); + $misc->printTitle($lang['strcreatetype'], 'pg.type.create'); + $misc->printMsg($msg); + + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo ""; + echo "\n"; + echo ""; + echo "\n"; + echo "\n"; + echo "\n"; + echo ""; + echo "\n"; + echo ""; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "
{$lang['strname']}_maxNameLen}\" value=\"", + htmlspecialchars($_POST['typname']), "\" />
{$lang['strinputfn']}
{$lang['stroutputfn']}
major_version, '7.4', '<') ? ' required' : '') . "\">{$lang['strlength']}
{$lang['strdefault']}
{$lang['strelement']}
{$lang['strdelimiter']}
{$lang['stralignment']}
{$lang['strstorage']}
\n"; + echo "

\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + + /** + * Actually creates the new type in the database + */ + function doSaveCreate() { + global $data; + global $lang; + + // Check that they've given a name and a length. + // Note: We're assuming they've given in and out functions here + // which might be unwise... + if ($_POST['typname'] == '') doCreate($lang['strtypeneedsname']); + elseif ($_POST['typlen'] == '') doCreate($lang['strtypeneedslen']); + else { + $status = $data->createType( + $_POST['typname'], + $_POST['typin'], + $_POST['typout'], + $_POST['typlen'], + $_POST['typdef'], + $_POST['typelem'], + $_POST['typdelim'], + isset($_POST['typbyval']), + $_POST['typalign'], + $_POST['typstorage'] + ); + if ($status == 0) + doDefault($lang['strtypecreated']); + else + doCreate($lang['strtypecreatedbad']); + } + } + + /** + * Show default list of types in the database + */ + function doDefault($msg = '') { + global $data, $conf, $misc; + global $lang; + + $misc->printTrail('schema'); + $misc->printTabs('schema','types'); + $misc->printMsg($msg); + + $types = $data->getTypes(); + + $columns = array( + 'type' => array( + 'title' => $lang['strtype'], + 'field' => field('typname'), + 'url' => "types.php?action=properties&{$misc->href}&", + 'vars' => array('type' => 'basename'), + ), + 'owner' => array( + 'title' => $lang['strowner'], + 'field' => field('typowner'), + ), + 'flavour' => array( + 'title' => $lang['strflavor'], + 'field' => field('typtype'), + 'type' => 'verbatim', + 'params'=> array( + 'map' => array( + 'b' => $lang['strbasetype'], + 'c' => $lang['strcompositetype'], + 'd' => $lang['strdomain'], + 'p' => $lang['strpseudotype'], + 'e' => $lang['strenum'], + ), + 'align' => 'center', + ), + ), + 'actions' => array( + 'title' => $lang['stractions'], + ), + 'comment' => array( + 'title' => $lang['strcomment'], + 'field' => field('typcomment'), + ), + ); + + if (!isset($types->fields['typtype'])) unset($columns['flavour']); + + $actions = array( + 'drop' => array( + 'content' => $lang['strdrop'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'types.php', + 'urlvars' => array ( + 'action' => 'confirm_drop', + 'type' => field('basename') + ) + ) + ) + ), + ); + + $misc->printTable($types, $columns, $actions, 'types-types', $lang['strnotypes']); + + $navlinks = array ( + 'create' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'types.php', + 'urlvars' => array ( + 'action' => 'create', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'] + ) + ) + ), + 'content' => $lang['strcreatetype'] + ), + 'createcomp' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'types.php', + 'urlvars' => array ( + 'action' => 'create_comp', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'] + ) + ) + ), + 'content' => $lang['strcreatecomptype'] + ), + 'createenum' => array ( + 'attr'=> array ( + 'href' => array( + 'url' => 'types.php', + 'urlvars' => array ( + 'action' => 'create_enum', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'] + ) + ) + ), + 'content' => $lang['strcreateenumtype'] + ) + ); + + if (! $data->hasEnumTypes()) { + unset($navlinks['enum']); + } + + $misc->printNavLinks($navlinks, 'types-types', get_defined_vars()); + } + + /** + * Generate XML for the browser tree. + */ + function doTree() { + global $misc, $data; + + $types = $data->getTypes(); + + $reqvars = $misc->getRequestVars('type'); + + $attrs = array( + 'text' => field('typname'), + 'icon' => 'Type', + 'toolTip'=> field('typcomment'), + 'action' => url('types.php', + $reqvars, + array( + 'action' => 'properties', + 'type' => field('basename') + ) + ) + ); + + $misc->printTree($types, $attrs, 'types'); + exit; + } + + if ($action == 'tree') doTree(); + + $misc->printHeader($lang['strtypes']); + $misc->printBody(); + + switch ($action) { + case 'create_comp': + if (isset($_POST['cancel'])) doDefault(); + else doCreateComposite(); + break; + case 'create_enum': + if (isset($_POST['cancel'])) doDefault(); + else doCreateEnum(); + break; + case 'save_create': + if (isset($_POST['cancel'])) doDefault(); + else doSaveCreate(); + break; + case 'create': + doCreate(); + break; + case 'drop': + if (isset($_POST['cancel'])) doDefault(); + else doDrop(false); + break; + case 'confirm_drop': + doDrop(true); + break; + case 'properties': + doProperties(); + break; + default: + doDefault(); + break; + } + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/users.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/users.php new file mode 100644 index 00000000..11775ea5 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/users.php @@ -0,0 +1,415 @@ +getServerInfo(); + + $userdata = $data->getUser($server_info['username']); + $_REQUEST['user'] = $server_info['username']; + + $misc->printTrail('user'); + $misc->printTabs('server','account'); + $misc->printMsg($msg); + + if ($userdata->recordCount() > 0) { + $userdata->fields['usesuper'] = $data->phpBool($userdata->fields['usesuper']); + $userdata->fields['usecreatedb'] = $data->phpBool($userdata->fields['usecreatedb']); + echo "\n"; + echo ""; + echo ""; + echo "\n"; + echo "\n\t\n"; + echo "\t\n"; + echo "\t\n"; + echo "\t\n"; + echo "\t\n"; + echo "\n
{$lang['strusername']}{$lang['strsuper']}{$lang['strcreatedb']}{$lang['strexpires']}{$lang['strsessiondefaults']}
", $misc->printVal($userdata->fields['usename']), "", $misc->printVal($userdata->fields['usesuper'], 'yesno'), "", $misc->printVal($userdata->fields['usecreatedb'], 'yesno'), "", ($userdata->fields['useexpires'] == 'infinity' || is_null($userdata->fields['useexpires']) ? $lang['strnever'] : $misc->printVal($userdata->fields['useexpires'])), "", $misc->printVal($userdata->fields['useconfig']), "
\n"; + } + else echo "

{$lang['strnodata']}

\n"; + + $misc->printNavLinks(array ('changepassword' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'users.php', + 'urlvars' => array ( + 'action' => 'confchangepassword', + 'server' => $_REQUEST['server'] + ) + ) + ), + 'content' => $lang['strchangepassword'] + )), 'users-account', get_defined_vars()); + } + + /** + * Show confirmation of change password and actually change password + */ + function doChangePassword($confirm, $msg = '') { + global $data, $misc; + global $lang, $conf; + + $server_info = $misc->getServerInfo(); + + if ($confirm) { + $_REQUEST['user'] = $server_info['username']; + $misc->printTrail('user'); + $misc->printTitle($lang['strchangepassword'],'pg.user.alter'); + $misc->printMsg($msg); + + if (!isset($_POST['password'])) $_POST['password'] = ''; + if (!isset($_POST['confirm'])) $_POST['confirm'] = ''; + + echo "
\n"; + echo "\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "
{$lang['strpassword']}
{$lang['strconfirm']}
\n"; + echo "

\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "

\n"; + } + else { + // Check that password is minimum length + if (strlen($_POST['password']) < $conf['min_password_length']) + doChangePassword(true, $lang['strpasswordshort']); + // Check that password matches confirmation password + elseif ($_POST['password'] != $_POST['confirm']) + doChangePassword(true, $lang['strpasswordconfirm']); + else { + $status = $data->changePassword($server_info['username'], + $_POST['password']); + if ($status == 0) + doAccount($lang['strpasswordchanged']); + else + doAccount($lang['strpasswordchangedbad']); + } + } + } + + /** + * Function to allow editing of a user + */ + function doEdit($msg = '') { + global $data, $misc; + global $lang; + + $misc->printTrail('user'); + $misc->printTitle($lang['stralter'],'pg.user.alter'); + $misc->printMsg($msg); + + $userdata = $data->getUser($_REQUEST['username']); + + if ($userdata->recordCount() > 0) { + $server_info = $misc->getServerInfo(); + $canRename = $data->hasUserRename() && ($_REQUEST['username'] != $server_info['username']); + $userdata->fields['usesuper'] = $data->phpBool($userdata->fields['usesuper']); + $userdata->fields['usecreatedb'] = $data->phpBool($userdata->fields['usecreatedb']); + + if (!isset($_POST['formExpires'])){ + if ($canRename) $_POST['newname'] = $userdata->fields['usename']; + if ($userdata->fields['usesuper']) $_POST['formSuper'] = ''; + if ($userdata->fields['usecreatedb']) $_POST['formCreateDB'] = ''; + $_POST['formExpires'] = $userdata->fields['useexpires'] == 'infinity' ? '' : $userdata->fields['useexpires']; + $_POST['formPassword'] = ''; + } + + echo "
\n"; + echo "\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "
{$lang['strusername']}", ($canRename ? "_maxNameLen}\" value=\"" . htmlspecialchars($_POST['newname']) . "\" />" : $misc->printVal($userdata->fields['usename'])), "
{$lang['strexpires']}
{$lang['strpassword']}
{$lang['strconfirm']}
\n"; + echo "

\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + else echo "

{$lang['strnodata']}

\n"; + } + + /** + * Function to save after editing a user + */ + function doSaveEdit() { + global $data, $lang; + + // Check name and password + if (isset($_POST['newname']) && $_POST['newname'] == '') + doEdit($lang['struserneedsname']); + else if ($_POST['formPassword'] != $_POST['formConfirm']) + doEdit($lang['strpasswordconfirm']); + else { + if (isset($_POST['newname'])) $status = $data->setRenameUser($_POST['username'], $_POST['formPassword'], isset($_POST['formCreateDB']), isset($_POST['formSuper']), $_POST['formExpires'], $_POST['newname']); + else $status = $data->setUser($_POST['username'], $_POST['formPassword'], isset($_POST['formCreateDB']), isset($_POST['formSuper']), $_POST['formExpires']); + if ($status == 0) + doDefault($lang['struserupdated']); + else + doEdit($lang['struserupdatedbad']); + } + } + + /** + * Show confirmation of drop and perform actual drop + */ + function doDrop($confirm) { + global $data, $misc; + global $lang; + + if ($confirm) { + $misc->printTrail('user'); + $misc->printTitle($lang['strdrop'],'pg.user.drop'); + + echo "

", sprintf($lang['strconfdropuser'], $misc->printVal($_REQUEST['username'])), "

\n"; + + echo "
\n"; + echo "

\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + else { + $status = $data->dropUser($_REQUEST['username']); + if ($status == 0) + doDefault($lang['struserdropped']); + else + doDefault($lang['struserdroppedbad']); + } + } + + /** + * Displays a screen where they can enter a new user + */ + function doCreate($msg = '') { + global $data, $misc, $username; + global $lang; + + if (!isset($_POST['formUsername'])) $_POST['formUsername'] = ''; + if (!isset($_POST['formPassword'])) $_POST['formPassword'] = ''; + if (!isset($_POST['formConfirm'])) $_POST['formConfirm'] = ''; + if (!isset($_POST['formExpires'])) $_POST['formExpires'] = ''; + + $misc->printTrail('server'); + $misc->printTitle($lang['strcreateuser'],'pg.user.create'); + $misc->printMsg($msg); + + echo "
\n"; + echo "\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "
{$lang['strusername']}_maxNameLen}\" name=\"formUsername\" value=\"", htmlspecialchars($_POST['formUsername']), "\" />
{$lang['strpassword']}
{$lang['strconfirm']}
{$lang['strexpires']}
\n"; + echo "

\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + + /** + * Actually creates the new user in the database + */ + function doSaveCreate() { + global $data; + global $lang; + + // Check data + if ($_POST['formUsername'] == '') + doCreate($lang['struserneedsname']); + else if ($_POST['formPassword'] != $_POST['formConfirm']) + doCreate($lang['strpasswordconfirm']); + else { + $status = $data->createUser($_POST['formUsername'], $_POST['formPassword'], + isset($_POST['formCreateDB']), isset($_POST['formSuper']), $_POST['formExpires'], array()); + if ($status == 0) + doDefault($lang['strusercreated']); + else + doCreate($lang['strusercreatedbad']); + } + } + + /** + * Show default list of users in the database + */ + function doDefault($msg = '') { + global $data, $misc; + global $lang; + + function renderUseExpires($val) { + global $lang; + return $val == 'infinity' ? $lang['strnever'] : htmlspecialchars($val); + } + + $misc->printTrail('server'); + $misc->printTabs('server','users'); + $misc->printMsg($msg); + + $users = $data->getUsers(); + + $columns = array( + 'user' => array( + 'title' => $lang['strusername'], + 'field' => field('usename'), + ), + 'superuser' => array( + 'title' => $lang['strsuper'], + 'field' => field('usesuper'), + 'type' => 'yesno', + ), + 'createdb' => array( + 'title' => $lang['strcreatedb'], + 'field' => field('usecreatedb'), + 'type' => 'yesno', + ), + 'expires' => array( + 'title' => $lang['strexpires'], + 'field' => field('useexpires'), + 'type' => 'callback', + 'params'=> array('function' => 'renderUseExpires', 'null' => $lang['strnever']), + ), + 'defaults' => array( + 'title' => $lang['strsessiondefaults'], + 'field' => field('useconfig'), + ), + 'actions' => array( + 'title' => $lang['stractions'], + ), + ); + + $actions = array( + 'alter' => array( + 'content' => $lang['stralter'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'users.php', + 'urlvars' => array ( + 'action' => 'edit', + 'username' => field('usename') + ) + ) + ) + ), + 'drop' => array( + 'content' => $lang['strdrop'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'users.php', + 'urlvars' => array ( + 'action' => 'confirm_drop', + 'username' => field('usename') + ) + ) + ) + ), + ); + + $misc->printTable($users, $columns, $actions, 'users-users', $lang['strnousers']); + + $misc->printNavLinks(array ('create' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'users.php', + 'urlvars' => array ( + 'action' => 'create', + 'server' => $_REQUEST['server'] + ) + ) + ), + 'content' => $lang['strcreateuser'] + )), 'users-users', get_defined_vars()); + + } + + $misc->printHeader($lang['strusers']); + $misc->printBody(); + + switch ($action) { + case 'changepassword': + if (isset($_REQUEST['ok'])) doChangePassword(false); + else doAccount(); + break; + case 'confchangepassword': + doChangePassword(true); + break; + case 'account': + doAccount(); + break; + case 'save_create': + if (isset($_REQUEST['cancel'])) doDefault(); + else doSaveCreate(); + break; + case 'create': + doCreate(); + break; + case 'drop': + if (isset($_REQUEST['cancel'])) doDefault(); + else doDrop(false); + break; + case 'confirm_drop': + doDrop(true); + break; + case 'save_edit': + if (isset($_REQUEST['cancel'])) doDefault(); + else doSaveEdit(); + break; + case 'edit': + doEdit(); + break; + default: + doDefault(); + break; + } + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/viewproperties.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/viewproperties.php new file mode 100644 index 00000000..950789b5 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/viewproperties.php @@ -0,0 +1,564 @@ +setView($_POST['view'], $_POST['formDefinition'], $_POST['formComment']); + if ($status == 0) + doDefinition($lang['strviewupdated']); + else + doEdit($lang['strviewupdatedbad']); + } + + /** + * Function to allow editing of a view + */ + function doEdit($msg = '') { + global $data, $misc; + global $lang; + + $misc->printTrail('view'); + $misc->printTitle($lang['stredit'],'pg.view.alter'); + $misc->printMsg($msg); + + $viewdata = $data->getView($_REQUEST['view']); + + if ($viewdata->recordCount() > 0) { + + if (!isset($_POST['formDefinition'])) { + $_POST['formDefinition'] = $viewdata->fields['vwdefinition']; + $_POST['formComment'] = $viewdata->fields['relcomment']; + } + + echo "
\n"; + echo "\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "
{$lang['strdefinition']}
{$lang['strcomment']}
\n"; + echo "

\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + else echo "

{$lang['strnodata']}

\n"; + } + + /** + * Allow the dumping of the data "in" a view + * NOTE:: PostgreSQL doesn't currently support dumping the data in a view + * so I have disabled the data related parts for now. In the future + * we should allow it conditionally if it becomes supported. This is + * a SMOP since it is based on pg_dump version not backend version. + */ + function doExport($msg = '') { + global $data, $misc; + global $lang; + + $misc->printTrail('view'); + $misc->printTabs('view','export'); + $misc->printMsg($msg); + + echo "
\n"; + echo "\n"; + echo "\n"; + // Data only + echo "\n"; + + // Structure only + echo "\n"; + echo "\n\n"; + // Structure and data + echo "\n"; + echo "
{$lang['strformat']}{$lang['stroptions']}
\n"; + + echo "

{$lang['stroptions']}

\n"; + echo "

\n"; + echo "

\n"; + + echo "

\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + + /** + * Show definition for a view + */ + function doDefinition($msg = '') { + global $data, $misc; + global $lang; + + // Get view + $vdata = $data->getView($_REQUEST['view']); + + $misc->printTrail('view'); + $misc->printTabs('view','definition'); + $misc->printMsg($msg); + + if ($vdata->recordCount() > 0) { + // Show comment if any + if ($vdata->fields['relcomment'] !== null) + echo "

", $misc->printVal($vdata->fields['relcomment']), "

\n"; + + echo "\n"; + echo "\n"; + echo "\n"; + echo "
{$lang['strdefinition']}
", $misc->printVal($vdata->fields['vwdefinition']), "
\n"; + } + else echo "

{$lang['strnodata']}

\n"; + + $misc->printNavLinks(array ( 'alter' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'viewproperties.php', + 'urlvars' => array ( + 'action' => 'edit', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'view' => $_REQUEST['view'] + ) + ) + ), + 'content' => $lang['stralter'] + )), 'viewproperties-definition', get_defined_vars()); + } + + /** + * Displays a screen where they can alter a column in a view + */ + function doProperties($msg = '') { + global $data, $misc; + global $lang; + + if (!isset($_REQUEST['stage'])) $_REQUEST['stage'] = 1; + + switch ($_REQUEST['stage']) { + case 1: + global $lang; + + $misc->printTrail('column'); + $misc->printTitle($lang['stralter'],'pg.column.alter'); + $misc->printMsg($msg); + + echo "
\n"; + + // Output view header + echo "\n"; + echo ""; + echo ""; + + $column = $data->getTableAttributes($_REQUEST['view'], $_REQUEST['column']); + + if (!isset($_REQUEST['default'])) { + $_REQUEST['field'] = $column->fields['attname']; + $_REQUEST['default'] = $_REQUEST['olddefault'] = $column->fields['adsrc']; + $_REQUEST['comment'] = $column->fields['comment']; + } + + echo ""; + + echo ""; + echo ""; + echo ""; + + echo "
{$lang['strname']}{$lang['strtype']}{$lang['strdefault']}{$lang['strcomment']}
", $misc->printVal($data->formatType($column->fields['type'], $column->fields['atttypmod'])), "
\n"; + echo "

\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "

\n"; + echo "
\n"; + + break; + case 2: + global $data, $lang; + + // Check inputs + if (trim($_REQUEST['field']) == '') { + $_REQUEST['stage'] = 1; + doProperties($lang['strcolneedsname']); + return; + } + + // Alter the view column + $status = $data->alterColumn($_REQUEST['view'], $_REQUEST['column'], $_REQUEST['field'], + false, false, $_REQUEST['default'], $_REQUEST['olddefault'], + '', '', '', '', $_REQUEST['comment']); + if ($status == 0) + doDefault($lang['strcolumnaltered']); + else { + $_REQUEST['stage'] = 1; + doProperties($lang['strcolumnalteredbad']); + return; + } + break; + default: + echo "

{$lang['strinvalidparam']}

\n"; + } + } + + function doAlter($confirm = false, $msg = '') { + if ($confirm) { + global $data, $misc, $lang; + + $misc->printTrail('view'); + $misc->printTitle($lang['stralter'], 'pg.view.alter'); + $misc->printMsg($msg); + + // Fetch view info + $view = $data->getView($_REQUEST['view']); + + if ($view->recordCount() > 0) { + if (!isset($_POST['name'])) $_POST['name'] = $view->fields['relname']; + if (!isset($_POST['owner'])) $_POST['owner'] = $view->fields['relowner']; + if (!isset($_POST['newschema'])) $_POST['newschema'] = $view->fields['nspname']; + if (!isset($_POST['comment'])) $_POST['comment'] = $view->fields['relcomment']; + + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + + if ($data->isSuperUser()) { + + // Fetch all users + $users = $data->getUsers(); + + echo "\n"; + echo "\n"; + } + + if ($data->hasAlterTableSchema()) { + $schemas = $data->getSchemas(); + echo "\n"; + echo "\n"; + } + + echo "\n"; + echo "\n"; + echo "
{$lang['strname']}"; + echo "_maxNameLen}\" value=\"", + htmlspecialchars($_POST['name']), "\" />
{$lang['strowner']}
{$lang['strschema']}
{$lang['strcomment']}"; + echo "
\n"; + echo "\n"; + echo "\n"; + echo $misc->form; + echo "

\n"; + echo "

\n"; + echo "
\n"; + } + else echo "

{$lang['strnodata']}

\n"; + } + else{ + global $data, $lang, $_reload_browser, $misc; + + // For databases that don't allow owner change + if (!isset($_POST['owner'])) $_POST['owner'] = ''; + if (!isset($_POST['newschema'])) $_POST['newschema'] = null; + + $status = $data->alterView($_POST['view'], $_POST['name'], $_POST['owner'], $_POST['newschema'], $_POST['comment']); + if ($status == 0) { + // If view has been renamed, need to change to the new name and + // reload the browser frame. + if ($_POST['view'] != $_POST['name']) { + // Jump them to the new view name + $_REQUEST['view'] = $_POST['name']; + // Force a browser reload + $_reload_browser = true; + } + // If schema has changed, need to change to the new schema and reload the browser + if (!empty($_POST['newschema']) && ($_POST['newschema'] != $data->_schema)) { + // Jump them to the new sequence schema + $misc->setCurrentSchema($_POST['newschema']); + $_reload_browser = true; + } + doDefault($lang['strviewaltered']); + } + else doAlter(true, $lang['strviewalteredbad']); + } + } + + function doTree () { + global $misc, $data; + + $reqvars = $misc->getRequestVars('column'); + $columns = $data->getTableAttributes($_REQUEST['view']); + + $attrs = array ( + 'text' => field('attname'), + 'action' => url('colproperties.php', + $reqvars, + array( + 'view' => $_REQUEST['view'], + 'column' => field('attname') + ) + ), + 'icon' => 'Column', + 'iconAction' => url('display.php', + $reqvars, + array( + 'view' => $_REQUEST['view'], + 'column' => field('attname'), + 'query' => replace( + 'SELECT "%column%", count(*) AS "count" FROM %view% GROUP BY "%column%" ORDER BY "%column%"', + array ( + '%column%' => field('attname'), + '%view%' => $_REQUEST['view'] + ) + ) + ) + ), + 'toolTip'=> field('comment') + ); + + $misc->printTree($columns, $attrs, 'viewcolumns'); + + exit; + } + + if ($action == 'tree') doTree(); + + /** + * Show view definition and virtual columns + */ + function doDefault($msg = '') { + global $data, $misc; + global $lang; + + function attPre(&$rowdata) { + global $data; + $rowdata->fields['+type'] = $data->formatType($rowdata->fields['type'], $rowdata->fields['atttypmod']); + } + + $misc->printTrail('view'); + $misc->printTabs('view','columns'); + $misc->printMsg($msg); + + // Get view + $vdata = $data->getView($_REQUEST['view']); + // Get columns (using same method for getting a view) + $attrs = $data->getTableAttributes($_REQUEST['view']); + + // Show comment if any + if ($vdata->fields['relcomment'] !== null) + echo "

", $misc->printVal($vdata->fields['relcomment']), "

\n"; + + $columns = array( + 'column' => array( + 'title' => $lang['strcolumn'], + 'field' => field('attname'), + 'url' => "colproperties.php?subject=column&{$misc->href}&view=".urlencode($_REQUEST['view'])."&", + 'vars' => array('column' => 'attname'), + ), + 'type' => array( + 'title' => $lang['strtype'], + 'field' => field('+type'), + ), + 'default' => array( + 'title' => $lang['strdefault'], + 'field' => field('adsrc'), + ), + 'actions' => array( + 'title' => $lang['stractions'], + ), + 'comment' => array( + 'title' => $lang['strcomment'], + 'field' => field('comment'), + ), + ); + + $actions = array( + 'alter' => array( + 'content' => $lang['stralter'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'viewproperties.php', + 'urlvars' => array ( + 'action' => 'properties', + 'view' => $_REQUEST['view'], + 'column' => field('attname') + ) + ) + ) + ), + ); + + $misc->printTable($attrs, $columns, $actions, 'viewproperties-viewproperties', null, 'attPre'); + + echo "
\n"; + + $navlinks = array ( + 'browse' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'display.php', + 'urlvars' => array ( + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'view' => $_REQUEST['view'], + 'subject' => 'view', + 'return' => 'view' + ) + ) + ), + 'content' => $lang['strbrowse'] + ), + 'select' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'views.php', + 'urlvars' => array ( + 'action' => 'confselectrows', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'view' => $_REQUEST['view'] + ) + ) + ), + 'content' => $lang['strselect'] + ), + 'drop' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'views.php', + 'urlvars' => array ( + 'action' => 'confirm_drop', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'view' => $_REQUEST['view'] + ) + ) + ), + 'content' => $lang['strdrop'] + ), + 'alter' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'viewproperties.php', + 'urlvars' => array ( + 'action' => 'confirm_alter', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'], + 'view' => $_REQUEST['view'] + ) + ) + ), + 'content' => $lang['stralter'] + ) + ); + + $misc->printNavLinks($navlinks, 'viewproperties-viewproperties', get_defined_vars()); + } + + $misc->printHeader($lang['strviews'] . ' - ' . $_REQUEST['view']); + $misc->printBody(); + + switch ($action) { + case 'save_edit': + if (isset($_POST['cancel'])) doDefinition(); + else doSaveEdit(); + break; + case 'edit': + doEdit(); + break; + case 'export': + doExport(); + break; + case 'definition': + doDefinition(); + break; + case 'properties': + if (isset($_POST['cancel'])) doDefault(); + else doProperties(); + break; + case 'alter': + if (isset($_POST['alter'])) doAlter(false); + else doDefault(); + break; + case 'confirm_alter': + doAlter(true); + break; + case 'drop': + if (isset($_POST['drop'])) doDrop(false); + else doDefault(); + break; + case 'confirm_drop': + doDrop(true); + break; + default: + doDefault(); + break; + } + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/views.php b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/views.php new file mode 100644 index 00000000..b60b0947 --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/views.php @@ -0,0 +1,787 @@ +printTrail('view'); + $misc->printTabs('view','select'); + $misc->printMsg($msg); + + $attrs = $data->getTableAttributes($_REQUEST['view']); + + echo "
\n"; + if ($attrs->recordCount() > 0) { + // JavaScript for select all feature + echo "\n"; + + echo "\n"; + + // Output table header + echo ""; + echo ""; + echo ""; + + $i = 0; + while (!$attrs->EOF) { + $attrs->fields['attnotnull'] = $data->phpBool($attrs->fields['attnotnull']); + // Set up default value if there isn't one already + if (!isset($_REQUEST['values'][$attrs->fields['attname']])) + $_REQUEST['values'][$attrs->fields['attname']] = null; + if (!isset($_REQUEST['ops'][$attrs->fields['attname']])) + $_REQUEST['ops'][$attrs->fields['attname']] = null; + // Continue drawing row + $id = (($i % 2) == 0 ? '1' : '2'); + echo "\n"; + echo ""; + echo ""; + echo ""; + echo "\n"; + echo ""; + echo "\n"; + $i++; + $attrs->moveNext(); + } + // Select all checkbox + echo ""; + echo "
{$lang['strshow']}{$lang['strcolumn']}{$lang['strtype']}{$lang['stroperator']}{$lang['strvalue']}
"; + echo "fields['attname']), "]\"", + isset($_REQUEST['show'][$attrs->fields['attname']]) ? ' checked="checked"' : '', " />", $misc->printVal($attrs->fields['attname']), "", $misc->printVal($data->formatType($attrs->fields['type'], $attrs->fields['atttypmod'])), ""; + echo "", $data->printField("values[{$attrs->fields['attname']}]", + $_REQUEST['values'][$attrs->fields['attname']], $attrs->fields['type']), "
\n"; + } + else echo "

{$lang['strinvalidparam']}

\n"; + + echo "

\n"; + echo "\n"; + echo "\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + else { + if (!isset($_POST['show'])) $_POST['show'] = array(); + if (!isset($_POST['values'])) $_POST['values'] = array(); + if (!isset($_POST['nulls'])) $_POST['nulls'] = array(); + + // Verify that they haven't supplied a value for unary operators + foreach ($_POST['ops'] as $k => $v) { + if ($data->selectOps[$v] == 'p' && $_POST['values'][$k] != '') { + doSelectRows(true, $lang['strselectunary']); + return; + } + } + + if (sizeof($_POST['show']) == 0) + doSelectRows(true, $lang['strselectneedscol']); + else { + // Generate query SQL + $query = $data->getSelectSQL($_REQUEST['view'], array_keys($_POST['show']), + $_POST['values'], $_POST['ops']); + $_REQUEST['query'] = $query; + $_REQUEST['return'] = "schema"; + $_no_output = true; + include('./display.php'); + exit; + } + } + + } + + /** + * Show confirmation of drop and perform actual drop + */ + function doDrop($confirm) { + global $data, $misc; + global $lang, $_reload_browser; + + if (empty($_REQUEST['view']) && empty($_REQUEST['ma'])) { + doDefault($lang['strspecifyviewtodrop']); + exit(); + } + + if ($confirm) { + $misc->printTrail('view'); + $misc->printTitle($lang['strdrop'],'pg.view.drop'); + + echo "
\n"; + + //If multi drop + if (isset($_REQUEST['ma'])) { + foreach($_REQUEST['ma'] as $v) { + $a = unserialize(htmlspecialchars_decode($v, ENT_QUOTES)); + echo "

", sprintf($lang['strconfdropview'], $misc->printVal($a['view'])), "

\n"; + echo '\n"; + } + } + else { + echo "

", sprintf($lang['strconfdropview'], $misc->printVal($_REQUEST['view'])), "

\n"; + echo "\n"; + } + + echo "\n"; + + echo $misc->form; + echo "

\n"; + echo "\n"; + echo "\n"; + echo "
\n"; + } + else { + if (is_array($_POST['view'])) { + $msg = ''; + $status = $data->beginTransaction(); + if ($status == 0) { + foreach($_POST['view'] as $s) { + $status = $data->dropView($s, isset($_POST['cascade'])); + if ($status == 0) + $msg.= sprintf('%s: %s
', htmlentities($s, ENT_QUOTES, 'UTF-8'), $lang['strviewdropped']); + else { + $data->endTransaction(); + doDefault(sprintf('%s%s: %s
', $msg, htmlentities($s, ENT_QUOTES, 'UTF-8'), $lang['strviewdroppedbad'])); + return; + } + } + } + if($data->endTransaction() == 0) { + // Everything went fine, back to the Default page.... + $_reload_browser = true; + doDefault($msg); + } + else doDefault($lang['strviewdroppedbad']); + } + else{ + $status = $data->dropView($_POST['view'], isset($_POST['cascade'])); + if ($status == 0) { + $_reload_browser = true; + doDefault($lang['strviewdropped']); + } + else + doDefault($lang['strviewdroppedbad']); + } + } + + } + + /** + * Sets up choices for table linkage, and which fields to select for the view we're creating + */ + function doSetParamsCreate($msg = '') { + global $data, $misc; + global $lang; + + // Check that they've chosen tables for the view definition + if (!isset($_POST['formTables']) ) doWizardCreate($lang['strviewneedsdef']); + else { + // Initialise variables + if (!isset($_REQUEST['formView'])) $_REQUEST['formView'] = ''; + if (!isset($_REQUEST['formComment'])) $_REQUEST['formComment'] = ''; + + $misc->printTrail('schema'); + $misc->printTitle($lang['strcreateviewwiz'], 'pg.view.create'); + $misc->printMsg($msg); + + $tblCount = sizeof($_POST['formTables']); + //unserialize our schema/table information and store in arrSelTables + for ($i = 0; $i < $tblCount; $i++) { + $arrSelTables[] = unserialize($_POST['formTables'][$i]); + } + + $linkCount = $tblCount; + + //get linking keys + $rsLinkKeys = $data->getLinkingKeys($arrSelTables); + $linkCount = $rsLinkKeys->recordCount() > $tblCount ? $rsLinkKeys->recordCount() : $tblCount; + + $arrFields = array(); //array that will hold all our table/field names + + //if we have schemas we need to specify the correct schema for each table we're retrieiving + //with getTableAttributes + $curSchema = $data->_schema; + for ($i = 0; $i < $tblCount; $i++) { + if ($data->_schema != $arrSelTables[$i]['schemaname']) { + $data->setSchema($arrSelTables[$i]['schemaname']); + } + + $attrs = $data->getTableAttributes($arrSelTables[$i]['tablename']); + while (!$attrs->EOF) { + $arrFields["{$arrSelTables[$i]['schemaname']}.{$arrSelTables[$i]['tablename']}.{$attrs->fields['attname']}"] = serialize(array( + 'schemaname' => $arrSelTables[$i]['schemaname'], + 'tablename' => $arrSelTables[$i]['tablename'], + 'fieldname' => $attrs->fields['attname']) + ); + $attrs->moveNext(); + } + + $data->setSchema($curSchema); + } + asort($arrFields); + + echo "
\n"; + echo "\n"; + echo ""; + echo "\n\n\n"; + echo ""; + echo "\n\n\n"; + echo "
{$lang['strviewname']}
\n"; + // View name + echo "_maxNameLen}\" />\n"; + echo "
{$lang['strcomment']}
\n"; + // View comments + echo "\n"; + echo "
\n"; + + // Output selector for fields to be retrieved from view + echo "\n"; + echo ""; + echo "\n\n"; + echo "
{$lang['strcolumns']}
\n"; + echo GUI::printCombo($arrFields, 'formFields[]', false, '', true); + echo "
"; + echo "
"; + echo "

"; + + // Output the Linking keys combo boxes + echo "\n"; + echo ""; + $rowClass = 'data1'; + for ($i = 0; $i < $linkCount; $i++) { + // Initialise variables + if (!isset($formLink[$i]['operator'])) $formLink[$i]['operator'] = 'INNER JOIN'; + echo "\n\n\n"; + $rowClass = $rowClass == 'data1' ? 'data2' : 'data1'; + } + echo "
{$lang['strviewlink']}
\n"; + + if (!$rsLinkKeys->EOF) { + $curLeftLink = htmlspecialchars(serialize(array('schemaname' => $rsLinkKeys->fields['p_schema'], 'tablename' => $rsLinkKeys->fields['p_table'], 'fieldname' => $rsLinkKeys->fields['p_field']) ) ); + $curRightLink = htmlspecialchars(serialize(array('schemaname' => $rsLinkKeys->fields['f_schema'], 'tablename' => $rsLinkKeys->fields['f_table'], 'fieldname' => $rsLinkKeys->fields['f_field']) ) ); + $rsLinkKeys->moveNext(); + } + else { + $curLeftLink = ''; + $curRightLink = ''; + } + + echo GUI::printCombo($arrFields, "formLink[$i][leftlink]", true, $curLeftLink, false ); + echo GUI::printCombo($data->joinOps, "formLink[$i][operator]", true, $formLink[$i]['operator']); + echo GUI::printCombo($arrFields, "formLink[$i][rightlink]", true, $curRightLink, false ); + echo "
\n
\n"; + + // Build list of available operators (infix only) + $arrOperators = array(); + foreach ($data->selectOps as $k => $v) { + if ($v == 'i') $arrOperators[$k] = $k; + } + + // Output additional conditions, note that this portion of the wizard treats the right hand side as literal values + //(not as database objects) so field names will be treated as strings, use the above linking keys section to perform joins + echo "\n"; + echo ""; + $rowClass = 'data1'; + for ($i = 0; $i < $linkCount; $i++) { + echo "\n\n\n"; + $rowClass = $rowClass == 'data1' ? 'data2' : 'data1'; + } + echo "
{$lang['strviewconditions']}
\n"; + echo GUI::printCombo($arrFields, "formCondition[$i][field]"); + echo GUI::printCombo($arrOperators, "formCondition[$i][operator]", false, false); + echo "\n"; + echo "
\n"; + echo "

\n"; + + foreach ($arrSelTables as $curTable) { + echo "\n"; + } + + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + } + + /** + * Display a wizard where they can enter a new view + */ + function doWizardCreate($msg = '') { + global $data, $misc; + global $lang; + + $tables = $data->getTables(true); + + $misc->printTrail('schema'); + $misc->printTitle($lang['strcreateviewwiz'], 'pg.view.create'); + $misc->printMsg($msg); + + echo "
\n"; + echo "\n"; + echo ""; + echo "\n\n\n"; + echo "
{$lang['strtables']}
\n"; + + $arrTables = array(); + while (!$tables->EOF) { + $arrTmp = array(); + $arrTmp['schemaname'] = $tables->fields['nspname']; + $arrTmp['tablename'] = $tables->fields['relname']; + $arrTables[$tables->fields['nspname'] . '.' . $tables->fields['relname']] = serialize($arrTmp); + $tables->moveNext(); + } + echo GUI::printCombo($arrTables, 'formTables[]', false, '', true); + + echo "
\n"; + echo "

\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + + /** + * Displays a screen where they can enter a new view + */ + function doCreate($msg = '') { + global $data, $misc, $conf; + global $lang; + + if (!isset($_REQUEST['formView'])) $_REQUEST['formView'] = ''; + if (!isset($_REQUEST['formDefinition'])) { + if (isset($_SESSION['sqlquery'])) + $_REQUEST['formDefinition'] = $_SESSION['sqlquery']; + else $_REQUEST['formDefinition'] = 'SELECT '; + } + if (!isset($_REQUEST['formComment'])) $_REQUEST['formComment'] = ''; + + $misc->printTrail('schema'); + $misc->printTitle($lang['strcreateview'], 'pg.view.create'); + $misc->printMsg($msg); + + echo "
\n"; + echo "\n"; + echo "\t\n\t\t\n"; + echo "\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\n\t\n"; + echo "\t\n\t\t\n"; + echo "\t\t\n\t\n"; + echo "
{$lang['strname']}_maxNameLen}\" value=\"", + htmlspecialchars($_REQUEST['formView']), "\" />
{$lang['strdefinition']}
{$lang['strcomment']}
\n"; + echo "

\n"; + echo $misc->form; + echo "\n"; + echo "

\n"; + echo "
\n"; + } + + /** + * Actually creates the new view in the database + */ + function doSaveCreate() { + global $data, $lang, $_reload_browser; + + // Check that they've given a name and a definition + if ($_POST['formView'] == '') doCreate($lang['strviewneedsname']); + elseif ($_POST['formDefinition'] == '') doCreate($lang['strviewneedsdef']); + else { + $status = $data->createView($_POST['formView'], $_POST['formDefinition'], false, $_POST['formComment']); + if ($status == 0) { + $_reload_browser = true; + doDefault($lang['strviewcreated']); + } + else + doCreate($lang['strviewcreatedbad']); + } + } + + /** + * Actually creates the new wizard view in the database + */ + function doSaveCreateWiz() { + global $data, $lang, $_reload_browser; + + // Check that they've given a name and fields they want to select + + if (!strlen($_POST['formView']) ) doSetParamsCreate($lang['strviewneedsname']); + else if (!isset($_POST['formFields']) || !count($_POST['formFields']) ) doSetParamsCreate($lang['strviewneedsfields']); + else { + $selFields = ''; + + if (! empty($_POST['dblFldMeth']) ) + $tmpHsh = array(); + + foreach ($_POST['formFields'] as $curField) { + $arrTmp = unserialize($curField); + $data->fieldArrayClean($arrTmp); + if (! empty($_POST['dblFldMeth']) ) { // doublon control + if (empty($tmpHsh[$arrTmp['fieldname']])) { // field does not exist + $selFields .= "\"{$arrTmp['schemaname']}\".\"{$arrTmp['tablename']}\".\"{$arrTmp['fieldname']}\", "; + $tmpHsh[$arrTmp['fieldname']] = 1; + } else if ($_POST['dblFldMeth'] == 'rename') { // field exist and must be renamed + $tmpHsh[$arrTmp['fieldname']]++; + $selFields .= "\"{$arrTmp['schemaname']}\".\"{$arrTmp['tablename']}\".\"{$arrTmp['fieldname']}\" AS \"{$arrTmp['schemaname']}_{$arrTmp['tablename']}_{$arrTmp['fieldname']}{$tmpHsh[$arrTmp['fieldname']]}\", "; + } + /* field already exist, just ignore this one */ + } else { // no doublon control + $selFields .= "\"{$arrTmp['schemaname']}\".\"{$arrTmp['tablename']}\".\"{$arrTmp['fieldname']}\", "; + } + } + + $selFields = substr($selFields, 0, -2); + unset($arrTmp, $tmpHsh); + $linkFields = ''; + + // If we have links, out put the JOIN ... ON statements + if (is_array($_POST['formLink']) ) { + // Filter out invalid/blank entries for our links + $arrLinks = array(); + foreach ($_POST['formLink'] as $curLink) { + if (strlen($curLink['leftlink']) && strlen($curLink['rightlink']) && strlen($curLink['operator'])) { + $arrLinks[] = $curLink; + } + } + // We must perform some magic to make sure that we have a valid join order + $count = sizeof($arrLinks); + $arrJoined = array(); + $arrUsedTbls = array(); + + // If we have at least one join condition, output it + if ($count > 0) { + $j = 0; + while ($j < $count) { + foreach ($arrLinks as $curLink) { + + $arrLeftLink = unserialize($curLink['leftlink']); + $arrRightLink = unserialize($curLink['rightlink']); + $data->fieldArrayClean($arrLeftLink); + $data->fieldArrayClean($arrRightLink); + + $tbl1 = "\"{$arrLeftLink['schemaname']}\".\"{$arrLeftLink['tablename']}\""; + $tbl2 = "\"{$arrRightLink['schemaname']}\".\"{$arrRightLink['tablename']}\""; + + if ( (!in_array($curLink, $arrJoined) && in_array($tbl1, $arrUsedTbls)) || !count($arrJoined) ) { + + // Make sure for multi-column foreign keys that we use a table alias tables joined to more than once + // This can (and should be) more optimized for multi-column foreign keys + $adj_tbl2 = in_array($tbl2, $arrUsedTbls) ? "$tbl2 AS alias_ppa_" . mktime() : $tbl2; + + $linkFields .= strlen($linkFields) ? "{$curLink['operator']} $adj_tbl2 ON (\"{$arrLeftLink['schemaname']}\".\"{$arrLeftLink['tablename']}\".\"{$arrLeftLink['fieldname']}\" = \"{$arrRightLink['schemaname']}\".\"{$arrRightLink['tablename']}\".\"{$arrRightLink['fieldname']}\") " + : "$tbl1 {$curLink['operator']} $adj_tbl2 ON (\"{$arrLeftLink['schemaname']}\".\"{$arrLeftLink['tablename']}\".\"{$arrLeftLink['fieldname']}\" = \"{$arrRightLink['schemaname']}\".\"{$arrRightLink['tablename']}\".\"{$arrRightLink['fieldname']}\") "; + + $arrJoined[] = $curLink; + if (!in_array($tbl1, $arrUsedTbls) ) $arrUsedTbls[] = $tbl1; + if (!in_array($tbl2, $arrUsedTbls) ) $arrUsedTbls[] = $tbl2; + } + } + $j++; + } + } + } + + //if linkfields has no length then either _POST['formLink'] was not set, or there were no join conditions + //just select from all seleted tables - a cartesian join do a + if (!strlen($linkFields) ) { + foreach ($_POST['formTables'] as $curTable) { + $arrTmp = unserialize($curTable); + $data->fieldArrayClean($arrTmp); + $linkFields .= strlen($linkFields) ? ", \"{$arrTmp['schemaname']}\".\"{$arrTmp['tablename']}\"" : "\"{$arrTmp['schemaname']}\".\"{$arrTmp['tablename']}\""; + } + } + + $addConditions = ''; + if (is_array($_POST['formCondition']) ) { + foreach ($_POST['formCondition'] as $curCondition) { + if (strlen($curCondition['field']) && strlen($curCondition['txt']) ) { + $arrTmp = unserialize($curCondition['field']); + $data->fieldArrayClean($arrTmp); + $addConditions .= strlen($addConditions) ? " AND \"{$arrTmp['schemaname']}\".\"{$arrTmp['tablename']}\".\"{$arrTmp['fieldname']}\" {$curCondition['operator']} '{$curCondition['txt']}' " + : " \"{$arrTmp['schemaname']}\".\"{$arrTmp['tablename']}\".\"{$arrTmp['fieldname']}\" {$curCondition['operator']} '{$curCondition['txt']}' "; + } + } + } + + $viewQuery = "SELECT $selFields FROM $linkFields "; + + //add where from additional conditions + if (strlen($addConditions) ) $viewQuery .= ' WHERE ' . $addConditions; + + $status = $data->createView($_POST['formView'], $viewQuery, false, $_POST['formComment']); + if ($status == 0) { + $_reload_browser = true; + doDefault($lang['strviewcreated']); + } + else + doSetParamsCreate($lang['strviewcreatedbad']); + } + } + + /** + * Show default list of views in the database + */ + function doDefault($msg = '') { + global $data, $misc, $conf; + global $lang; + + $misc->printTrail('schema'); + $misc->printTabs('schema','views'); + $misc->printMsg($msg); + + $views = $data->getViews(); + + $columns = array( + 'view' => array( + 'title' => $lang['strview'], + 'field' => field('relname'), + 'url' => "redirect.php?subject=view&{$misc->href}&", + 'vars' => array('view' => 'relname'), + ), + 'owner' => array( + 'title' => $lang['strowner'], + 'field' => field('relowner'), + ), + 'actions' => array( + 'title' => $lang['stractions'], + ), + 'comment' => array( + 'title' => $lang['strcomment'], + 'field' => field('relcomment'), + ), + ); + + $actions = array( + 'multiactions' => array( + 'keycols' => array('view' => 'relname'), + 'url' => 'views.php', + ), + 'browse' => array( + 'content' => $lang['strbrowse'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'display.php', + 'urlvars' => array ( + 'action' => 'confselectrows', + 'subject' => 'view', + 'return' => 'schema', + 'view' => field('relname') + ) + ) + ) + ), + 'select' => array( + 'content' => $lang['strselect'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'views.php', + 'urlvars' => array ( + 'action' => 'confselectrows', + 'view' => field('relname') + ) + ) + ) + ), + +// Insert is possible if the relevant rule for the view has been created. +// 'insert' => array( +// 'title' => $lang['strinsert'], +// 'url' => "views.php?action=confinsertrow&{$misc->href}&", +// 'vars' => array('view' => 'relname'), + // ), + + 'alter' => array( + 'content' => $lang['stralter'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'viewproperties.php', + 'urlvars' => array ( + 'action' => 'confirm_alter', + 'view' => field('relname') + ) + ) + ) + ), + 'drop' => array( + 'multiaction' => 'confirm_drop', + 'content' => $lang['strdrop'], + 'attr'=> array ( + 'href' => array ( + 'url' => 'views.php', + 'urlvars' => array ( + 'action' => 'confirm_drop', + 'view' => field('relname') + ) + ) + ) + ), + ); + + $misc->printTable($views, $columns, $actions, 'views-views', $lang['strnoviews']); + + $navlinks = array ( + 'create' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'views.php', + 'urlvars' => array ( + 'action' => 'create', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'] + ) + ) + ), + 'content' => $lang['strcreateview'] + ), + 'createwiz' => array ( + 'attr'=> array ( + 'href' => array ( + 'url' => 'views.php', + 'urlvars' => array ( + 'action' => 'wiz_create', + 'server' => $_REQUEST['server'], + 'database' => $_REQUEST['database'], + 'schema' => $_REQUEST['schema'] + ) + ) + ), + 'content' => $lang['strcreateviewwiz'] + ) + ); + $misc->printNavLinks($navlinks, 'views-views', get_defined_vars()); + + } + + /** + * Generate XML for the browser tree. + */ + function doTree() { + global $misc, $data; + + $views = $data->getViews(); + + $reqvars = $misc->getRequestVars('view'); + + $attrs = array( + 'text' => field('relname'), + 'icon' => 'View', + 'iconAction' => url('display.php', $reqvars, array('view' => field('relname'))), + 'toolTip'=> field('relcomment'), + 'action' => url('redirect.php', $reqvars, array('view' => field('relname'))), + 'branch' => url('views.php', $reqvars, + array ( + 'action' => 'subtree', + 'view' => field('relname') + ) + ) + ); + + $misc->printTree($views, $attrs, 'views'); + exit; + } + + function doSubTree() { + global $misc, $data; + + $tabs = $misc->getNavTabs('view'); + $items = $misc->adjustTabsForTree($tabs); + $reqvars = $misc->getRequestVars('view'); + + $attrs = array( + 'text' => field('title'), + 'icon' => field('icon'), + 'action' => url(field('url'), $reqvars, field('urlvars'), array('view' => $_REQUEST['view'])), + 'branch' => ifempty( + field('branch'), '', url(field('url'), field('urlvars'), $reqvars, + array( + 'action' => 'tree', + 'view' => $_REQUEST['view'] + ) + ) + ), + ); + + $misc->printTree($items, $attrs, 'view'); + exit; + } + + if ($action == 'tree') doTree(); + if ($action == 'subtree') dosubTree(); + + $misc->printHeader($lang['strviews']); + $misc->printBody(); + + switch ($action) { + case 'selectrows': + if (!isset($_REQUEST['cancel'])) doSelectRows(false); + else doDefault(); + break; + case 'confselectrows': + doSelectRows(true); + break; + case 'save_create_wiz': + if (isset($_REQUEST['cancel'])) doDefault(); + else doSaveCreateWiz(); + break; + case 'wiz_create': + doWizardCreate(); + break; + case 'set_params_create': + if (isset($_POST['cancel'])) doDefault(); + else doSetParamsCreate(); + break; + case 'save_create': + if (isset($_REQUEST['cancel'])) doDefault(); + else doSaveCreate(); + break; + case 'create': + doCreate(); + break; + case 'drop': + if (isset($_POST['drop'])) doDrop(false); + else doDefault(); + break; + case 'confirm_drop': + doDrop(true); + break; + default: + doDefault(); + break; + } + + $misc->printFooter(); + +?> diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/xloadtree/xloadtree2.js b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/xloadtree/xloadtree2.js new file mode 100644 index 00000000..b36eed7e --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/xloadtree/xloadtree2.js @@ -0,0 +1,507 @@ +/*----------------------------------------------------------------------------\ +| XLoadTree 2 PRE RELEASE | +| | +| This is a pre release and may not be redistributed. | +| Watch http://webfx.eae.net for the final version | +| | +|-----------------------------------------------------------------------------| +| Created by Erik Arvidsson & Emil A Eklund | +| (http://webfx.eae.net/contact.html#erik) | +| (http://webfx.eae.net/contact.html#emil) | +| For WebFX (http://webfx.eae.net/) | +|-----------------------------------------------------------------------------| +| A tree menu system for IE 5.5+, Mozilla 1.4+, Opera 7.5+ | +|-----------------------------------------------------------------------------| +| Copyright (c) 1999 - 2005 Erik Arvidsson & Emil A Eklund | +|-----------------------------------------------------------------------------| +| This software is provided "as is", without warranty of any kind, express or | +| implied, including but not limited to the warranties of merchantability, | +| fitness for a particular purpose and noninfringement. In no event shall the | +| authors or copyright holders be liable for any claim, damages or other | +| liability, whether in an action of contract, tort or otherwise, arising | +| from, out of or in connection with the software or the use or other | +| dealings in the software. | +| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | +| This software is available under the three different licenses mentioned | +| below. To use this software you must chose, and qualify, for one of those. | +| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | +| The WebFX Non-Commercial License http://webfx.eae.net/license.html | +| Permits anyone the right to use the software in a non-commercial context | +| free of charge. | +| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | +| The WebFX Commercial license http://webfx.eae.net/commercial.html | +| Permits the license holder the right to use the software in a commercial | +| context. Such license must be specifically obtained, however it's valid for | +| any number of implementations of the licensed software. | +| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | +| GPL - The GNU General Public License http://www.gnu.org/licenses/gpl.txt | +| Permits anyone the right to use and modify the software without limitations | +| as long as proper credits are given and the original and modified source | +| code are included. Requires that the final product, software derivate from | +| the original source or any software utilizing a GPL component, such as | +| this, is also licensed under the GPL license. | +|-----------------------------------------------------------------------------| +| 2004-02-21 | Pre release distributed to a few selected tester | +| 2005-06-06 | Removed dependency on XML Extras | +|-----------------------------------------------------------------------------| +| Dependencies: xtree2.js Supplies the tree control | +|-----------------------------------------------------------------------------| +| Created 2003-??-?? | All changes are in the log above. | Updated 2004-06-06 | +|-----------------------------------------------------------------------------| +| Note local changes have been made to allow Icons to have different links | +| than thier text label counterparts. Thanks to JGuillaume de Rorthais | +\----------------------------------------------------------------------------*/ + +webFXTreeConfig.loadingText = "Loading..."; +webFXTreeConfig.loadingIcon = "images/loading.gif"; +webFXTreeConfig.errorLoadingText = "Error Loading"; +webFXTreeConfig.errorIcon = "images/exclamation.16.png"; +webFXTreeConfig.reloadText = "Click to reload"; + + +function WebFXLoadTree(sText, sXmlSrc, oAction, sBehavior, sIcon, oIconAction, sOpenIcon) { + WebFXTree.call(this, sText, oAction, sBehavior, sIcon, oIconAction, sOpenIcon); + + // setup default property values + this.src = sXmlSrc; + this.loading = !sXmlSrc; + this.loaded = !sXmlSrc; + this.errorText = ""; + + if (this.src) { + /// add loading Item + this._loadingItem = WebFXLoadTree.createLoadingItem(); + this.add(this._loadingItem); + + if (this.getExpanded()) { + WebFXLoadTree.loadXmlDocument(this); + } + } +} + +WebFXLoadTree.createLoadingItem = function () { + return new WebFXTreeItem(webFXTreeConfig.loadingText, null, null, + webFXTreeConfig.loadingIcon); +}; + +_p = WebFXLoadTree.prototype = new WebFXTree; + +_p.setExpanded = function (b) { + WebFXTree.prototype.setExpanded.call(this, b); + + if (this.src && b) { + if (!this.loaded && !this.loading) { + // load + WebFXLoadTree.loadXmlDocument(this); + } + } +}; + +function WebFXLoadTreeItem(sText, sXmlSrc, oAction, eParent, sIcon, oIconAction, sOpenIcon) { + WebFXTreeItem.call(this, sText, oAction, eParent, sIcon, oIconAction, sOpenIcon); + +// setup default property values + this.src = sXmlSrc; + this.loading = !sXmlSrc; + this.loaded = !sXmlSrc; + this.errorText = ""; + + if (this.src) { + /// add loading Item + this._loadingItem = WebFXLoadTree.createLoadingItem(); + this.add(this._loadingItem); + + if (this.getExpanded()) { + WebFXLoadTree.loadXmlDocument(this); + } + } +} + +_p = WebFXLoadTreeItem.prototype = new WebFXTreeItem; + +_p.setExpanded = function (b) { + WebFXTreeItem.prototype.setExpanded.call(this, b); + + if (this.src && b) { + if (!this.loaded && !this.loading) { + // load + WebFXLoadTree.loadXmlDocument(this); + } + } +}; + +// reloads the src file if already loaded +WebFXLoadTree.prototype.reload = +_p.reload = function () { + // if loading do nothing + if (this.loaded) { + var t = this.getTree(); + var expanded = this.getExpanded(); + var sr = t.getSuspendRedraw(); + t.setSuspendRedraw(true); + + // remove + while (this.childNodes.length > 0) { + this.remove(this.childNodes[this.childNodes.length - 1]); + } + + this.loaded = false; + + this._loadingItem = WebFXLoadTree.createLoadingItem(); + this.add(this._loadingItem); + + if (expanded) { + this.setExpanded(true); + } + + t.setSuspendRedraw(sr); + this.update(); + } else if (this.open && !this.loading) { + WebFXLoadTree.loadXmlDocument(this); + } +}; + + + +WebFXLoadTree.prototype.setSrc = +_p.setSrc = function (sSrc) { + var oldSrc = this.src; + if (sSrc == oldSrc) return; + + var expanded = this.getExpanded(); + + // remove all + this._callSuspended(function () { + // remove + while (this.childNodes.length > 0) + this.remove(this.childNodes[this.childNodes.length - 1]); + }); + this.update(); + + this.loaded = false; + this.loading = false; + if (this._loadingItem) { + this._loadingItem.dispose(); + this._loadingItem = null; + } + this.src = sSrc; + + if (sSrc) { + this._loadingItem = WebFXLoadTree.createLoadingItem(); + this.add(this._loadingItem); + } + + this.setExpanded(expanded); +}; + +WebFXLoadTree.prototype.getSrc = +_p.getSrc = function () { + return this.src; +}; + +WebFXLoadTree.prototype.dispose = function () { + WebFXTree.prototype.dispose.call(this); + if (this._xmlHttp) + { + if (this._xmlHttp.dispose) { + this._xmlHttp.dispose(); + } + try { + this._xmlHttp.onreadystatechange = null; + this._xmlHttp.abort(); + } catch (ex) {} + this._xmlHttp = null; + } +}; + +_p.dispose = function () { + WebFXTreeItem.prototype.dispose.call(this); + if (this._xmlHttp) { + if (this._xmlHttp.dispose) { + this._xmlHttp.dispose(); + } + try { + this._xmlHttp.onreadystatechange = null; + this._xmlHttp.abort(); + } catch (ex) {} + this._xmlHttp = null; + } +}; + + +// The path is divided by '/' and the item is identified by the text +WebFXLoadTree.prototype.openPath = +_p.openPath = function (sPath, bSelect, bFocus) { + // remove any old pending paths to open + delete this._pathToOpen; + //delete this._pathToOpenById; + this._selectPathOnLoad = bSelect; + this._focusPathOnLoad = bFocus; + + if (sPath == "") { + if (bSelect) { + this.select(); + } + if (bFocus) { + window.setTimeout("WebFXTreeAbstractNode._onTimeoutFocus(\"" + this.getId() + "\")", 10); + } + return; + } + + var parts = sPath.split("/"); + var remainingPath = parts.slice(1).join("/"); + + if (sPath.charAt(0) == "/") { + this.getTree().openPath(remainingPath, bSelect, bFocus); + } else { + // open + this.setExpanded(true); + if (this.loaded) { + parts = sPath.split("/"); + var ti = this.findChildByText(parts[0]); + if (!ti) { + throw "Could not find child node with text \"" + parts[0] + "\""; + } + + ti.openPath(remainingPath, bSelect, bFocus); + } else { + this._pathToOpen = sPath; + } + } +}; + + +// Opera has some serious attribute problems. We need to use getAttribute +// for certain attributes +WebFXLoadTree._attrs = ["text", "src", "action", "id", "target"]; + +WebFXLoadTree.createItemFromElement = function (oNode) { + var jsAttrs = {}; + var i, l; + + l = oNode.attributes.length; + for (i = 0; i < l; i++) { + oNode.attributes[i].nodeValue = String(oNode.attributes[i].nodeValue).replace(/&/g, "&"); // replace for Safari fix for DOM Bug + if (oNode.attributes[i] == null) { + continue; + } + jsAttrs[oNode.attributes[i].nodeName] = oNode.attributes[i].nodeValue; + } + + var name, val; + for (i = 0; i < WebFXLoadTree._attrs.length; i++) { + name = WebFXLoadTree._attrs[i]; + value = oNode.getAttribute(name); + if (value) { + jsAttrs[name] = value; + } + } + + var action; + if (jsAttrs.onaction) { + action = new Function(jsAttrs.onaction); + } else if (jsAttrs.action) { + action = jsAttrs.action; + } + var jsNode = new WebFXLoadTreeItem(jsAttrs.html || "", jsAttrs.src, action, + null, jsAttrs.icon, jsAttrs.iconaction, jsAttrs.openicon); + if (jsAttrs.text) { + jsNode.setText(jsAttrs.text); + } + + if (jsAttrs.target) { + jsNode.target = jsAttrs.target; + } + if (jsAttrs.id) { + jsNode.setId(jsAttrs.id); + } + if (jsAttrs.tooltip) { + jsNode.toolTip = jsAttrs.tooltip; + } + if (jsAttrs.expanded) { + jsNode.setExpanded(jsAttrs.expanded != "false"); + } + if (jsAttrs.onload) { + jsNode.onload = new Function(jsAttrs.onload); + } + if (jsAttrs.onerror) { + jsNode.onerror = new Function(jsAttrs.onerror); + } + + jsNode.attributes = jsAttrs; + + // go through childNodes + var cs = oNode.childNodes; + l = cs.length; + for (i = 0; i < l; i++) { + if (cs[i].tagName == "tree") { + jsNode.add(WebFXLoadTree.createItemFromElement(cs[i])); + } + } + + return jsNode; +}; + +WebFXLoadTree.loadXmlDocument = function (jsNode) { + if (jsNode.loading || jsNode.loaded) { + return; + } + jsNode.loading = true; + var id = jsNode.getId(); + jsNode._xmlHttp = window.XMLHttpRequest ? new XMLHttpRequest : new window.ActiveXObject("Microsoft.XmlHttp"); + jsNode._xmlHttp.open("GET", jsNode.src, true); // async + jsNode._xmlHttp.onreadystatechange = new Function("WebFXLoadTree._onload(\"" + id + "\")"); + + // call in new thread to allow ui to update + window.setTimeout("WebFXLoadTree._ontimeout(\"" + id + "\")", 10); +}; + +WebFXLoadTree._onload = function (sId) { + var jsNode = webFXTreeHandler.all[sId]; + if (jsNode._xmlHttp.readyState == 4) { + WebFXLoadTree.documentLoaded(jsNode); + webFXLoadTreeQueue.remove(jsNode); + if (jsNode._xmlHttp.dispose) + jsNode._xmlHttp.dispose(); + jsNode._xmlHttp = null; + } +}; + +WebFXLoadTree._ontimeout = function (sId) { + var jsNode = webFXTreeHandler.all[sId]; + webFXLoadTreeQueue.add(jsNode); +}; + + + +// Inserts an xml document as a subtree to the provided node +WebFXLoadTree.documentLoaded = function (jsNode) { + if (jsNode.loaded) { + return; + } + + jsNode.errorText = ""; + jsNode.loaded = true; + jsNode.loading = false; + + var t = jsNode.getTree(); + var oldSuspend = t.getSuspendRedraw(); + t.setSuspendRedraw(true); + + var doc = jsNode._xmlHttp.responseXML; + + // check that the load of the xml file went well + if(!doc || doc.parserError && doc.parseError.errorCode != 0 || !doc.documentElement) { + if (!doc || doc.parseError.errorCode == 0) { + jsNode.errorText = webFXTreeConfig.errorLoadingText + " " + jsNode.src + " (" + jsNode._xmlHttp.status + ": " + jsNode._xmlHttp.statusText + ")"; + } else { + jsNode.errorText = webFXTreeConfig.errorLoadingText + " " + jsNode.src + " (" + doc.parseError.reason + ")"; + } + } else { + // there is one extra level of tree elements + var root = doc.documentElement; + + // loop through all tree children + var count = 0; + var cs = root.childNodes; + var l = cs.length; + var newNode; + for (var i = 0; i < l; i++) { + if (cs[i].tagName == "tree") { + newNode=WebFXLoadTree.createItemFromElement(cs[i]); + jsNode.add(newNode); + count++; + } + } + + if (count == 1 && newNode.childNodes.length) { + var parent=jsNode.parentNode; + newNode.setExpanded(true); + } + // if no children we got an error + if (count == 0) { + jsNode.errorText = webFXTreeConfig.errorLoadingText + " " + jsNode.src + " (???)"; + } + } + + if (jsNode.errorText != "") { + jsNode._loadingItem.icon = webFXTreeConfig.errorIcon; + jsNode._loadingItem.text = jsNode.errorText; + jsNode._loadingItem.action = WebFXLoadTree._reloadParent; + jsNode._loadingItem.toolTip = webFXTreeConfig.reloadText; + + t.setSuspendRedraw(oldSuspend); + + jsNode._loadingItem.update(); + + if (typeof jsNode.onerror == "function") { + jsNode.onerror(); + } + } else { + // remove dummy + if (jsNode._loadingItem != null) { + jsNode.remove(jsNode._loadingItem); + } + + if (jsNode._pathToOpen) { + jsNode.openPath(jsNode._pathToOpen, jsNode._selectPathOnLoad, jsNode._focusPathOnLoad); + } + + t.setSuspendRedraw(oldSuspend); + jsNode.update(); + if (typeof jsNode.onload == "function") { + jsNode.onload(); + } + } +}; + +WebFXLoadTree._reloadParent = function () { + this.getParent().reload(); +}; + + + + + + + +var webFXLoadTreeQueue = { + _nodes: [], + _ie: /msie/i.test(navigator.userAgent), + _opera: /opera/i.test(navigator.userAgent), + + add: function (jsNode) { + if (this._ie || this._opera) { + this._nodes.push(jsNode); + if (this._nodes.length == 1) { + this._send(); + } + } else { + jsNode._xmlHttp.send(null); + } + }, + + remove: function (jsNode) { + if (this._ie || this._opera) { + arrayHelper.remove(this._nodes, jsNode); + if (this._nodes.length > 0) { + this._send(); + } + } + }, + + // IE only + _send: function () { + var id = this._nodes[0].getId(); + var jsNode = webFXTreeHandler.all[id]; + if (!jsNode) { + return; + } + // if no _xmlHttp then remove it + if (!jsNode._xmlHttp) { + this.remove(jsNode); + } else { + jsNode._xmlHttp.send(null); + } + } +}; diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/xloadtree/xtree2.js b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/xloadtree/xtree2.js new file mode 100644 index 00000000..c7feecbc --- /dev/null +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/xloadtree/xtree2.js @@ -0,0 +1,1621 @@ +/*----------------------------------------------------------------------------\ +| XTree 2 PRE RELEASE | +| | +| This is a pre release and redistribution is discouraged. | +| Watch http://webfx.eae.net for the final version | +| | +|-----------------------------------------------------------------------------| +| Created by Erik Arvidsson & Emil A Eklund | +| (http://webfx.eae.net/contact.html#erik) | +| (http://webfx.eae.net/contact.html#emil) | +| For WebFX (http://webfx.eae.net/) | +|-----------------------------------------------------------------------------| +| A tree menu system for IE 5.5+, Mozilla 1.4+, Opera 7, KHTML | +|-----------------------------------------------------------------------------| +| Copyright (c) 1999 - 2005 Erik Arvidsson & Emil A Eklund | +|-----------------------------------------------------------------------------| +| This software is provided "as is", without warranty of any kind, express or | +| implied, including but not limited to the warranties of merchantability, | +| fitness for a particular purpose and noninfringement. In no event shall the | +| authors or copyright holders be liable for any claim, damages or other | +| liability, whether in an action of contract, tort or otherwise, arising | +| from, out of or in connection with the software or the use or other | +| dealings in the software. | +| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | +| This software is available under the three different licenses mentioned | +| below. To use this software you must chose, and qualify, for one of those. | +| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | +| The WebFX Non-Commercial License http://webfx.eae.net/license.html | +| Permits anyone the right to use the software in a non-commercial context | +| free of charge. | +| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | +| The WebFX Commercial license http://webfx.eae.net/commercial.html | +| Permits the license holder the right to use the software in a commercial | +| context. Such license must be specifically obtained, however it's valid for | +| any number of implementations of the licensed software. | +| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | +| GPL - The GNU General Public License http://www.gnu.org/licenses/gpl.txt | +| Permits anyone the right to use and modify the software without limitations | +| as long as proper credits are given and the original and modified source | +| code are included. Requires that the final product, software derivate from | +| the original source or any software utilizing a GPL component, such as | +| this, is also licensed under the GPL license. | +|-----------------------------------------------------------------------------| +| 2004-02-21 | Pre release distributed to a few selected tester | +| 2005-06-06 | Added single tab index to improve keyboard navigation | +|-----------------------------------------------------------------------------| +| Dependencies: xtree2.css Used to define the look and feel | +|-----------------------------------------------------------------------------| +| Created 2003-??-?? | All changes are in the log above. | Updated 2004-06-06 | +\----------------------------------------------------------------------------*/ + + +// +// WebFXTreePersisitance +function WebFXTreePersistence() {} +var _p = WebFXTreePersistence.prototype; +_p.getExpanded = function (oNode) { return false; }; +_p.setExpanded = function (oNode, bOpen) {}; + + + +// Cookie handling +function WebFXCookie() {} + +_p = WebFXCookie.prototype; + +_p.setCookie = function (sName, sValue, nDays) { + var expires = ""; + if (typeof nDays == "number") { + var d = new Date(); + d.setTime(d.getTime() + nDays * 24 * 60 * 60 * 1000); + expires = "; expires=" + d.toGMTString(); + } + + document.cookie = sName + "=" + escape(sValue) + expires + "; path=/"; +}; + +_p.getCookie = function (sName) { + var re = new RegExp("(\;|^)[^;]*(" + sName + ")\=([^;]*)(;|$)"); + var res = re.exec(document.cookie); + return res != null ? unescape(res[3]) : null; +}; + +_p.removeCookie = function (name) { + this.setCookie(name, "", -1); +}; + + +// +// persistence using cookies +// +// This is uses one cookie with the ids of the expanded nodes separated using '+' +// +function WebFXTreeCookiePersistence() { + this._openedMap = {}; + this._cookies = new WebFXCookie; + var s = this._cookies.getCookie(this.cookieName); + if (s) { + var a = s.split("+"); + for (var i = a.length - 1; i >= 0; i--) + this._openedMap[a[i]] = true; + } +} + +_p = WebFXTreeCookiePersistence.prototype = new WebFXTreePersistence; + +_p.cookieName = "webfx-tree-cookie-persistence" + +_p.getExpanded = function (oNode) { + return oNode.id in this._openedMap; +}; + +_p.setExpanded = function (oNode, bOpen) { + var old = this.getExpanded(oNode); + if (old != bOpen) { + if (bOpen) { + this._openedMap[oNode.id] = true; + } else { + delete this._openedMap[oNode.id]; + } + + var res = []; + var i = 0; + for (var id in this._openedMap) + res[i++] = id; + this._cookies.setCookie(this.cookieName, res.join("+")); + } +}; + + + +// this object provides a few useful methods when working with arrays +var arrayHelper = { + indexOf: function (a, o) { + for (var i = 0; i < a.length; i++) { + if (a[i] == o) { + return i; + } + } + return -1; + }, + + insertBefore: function (a, o, o2) { + var i = this.indexOf(a, o2); + if (i == -1) { + a.push(o); + } else { + a.splice(i, 0, o); + } + }, + + remove: function (a, o) { + var i = this.indexOf(a, o); + if (i != -1) { + a.splice(i, 1); + } + } +}; + +/////////////////////////////////////////////////////////////////////////////// +// WebFX Tree Config object // +/////////////////////////////////////////////////////////////////////////////// +var webFXTreeConfig = { + rootIcon : "images/folder.png", + openRootIcon : "images/openfolder.png", + folderIcon : "images/folder.png", + openFolderIcon : "images/openfolder.png", + fileIcon : "images/file.png", + iIcon : "images/I.png", + lIcon : "images/L.png", + lMinusIcon : "images/Lminus.png", + lPlusIcon : "images/Lplus.png", + tIcon : "images/T.png", + tMinusIcon : "images/Tminus.png", + tPlusIcon : "images/Tplus.png", + plusIcon : "images/plus.png", + minusIcon : "images/minus.png", + blankIcon : "images/blank.png", + defaultText : "Tree Item", + defaultAction : null, + defaultBehavior : "classic", + usePersistence : true +}; + +/////////////////////////////////////////////////////////////////////////////// +// WebFX Tree Handler object // +/////////////////////////////////////////////////////////////////////////////// + +var webFXTreeHandler = { + ie: /msie/i.test(navigator.userAgent), + opera: /opera/i.test(navigator.userAgent), + idCounter: 0, + idPrefix: "wfxt-", + getUniqueId: function () { + return this.idPrefix + this.idCounter++; + }, + all: {}, + getNodeById: function (sId) { + return all[sId]; + }, + addNode: function (oNode) { + this.all[oNode.id] = oNode; + }, + removeNode: function (oNode) { + delete this.all[oNode.id]; + }, + + handleEvent: function (e) { + var el = e.target || e.srcElement; + while (el != null && !this.all[el.id]) { + el = el.parentNode; + } + + if (el == null) { + return false; + } + var node = this.all[el.id]; + if (typeof node["_on" + e.type] == "function") { + return node["_on" + e.type](e); + } + return false; + }, + + dispose: function () { + if (this.disposed) return; + for (var id in this.all) { + this.all[id].dispose(); + } + this.disposed = true; + }, + + htmlToText: function (s) { + return String(s).replace(/\s+|<([^>])+>|&|<|>|"| /gi, this._htmlToText); + }, + + _htmlToText: function (s) { + switch (s) { + case "&": + return "&"; + case "<": + return "<"; + case ">": + return ">"; + case """: + return "\""; + case " ": + return String.fromCharCode(160); + default: + if (/\s+/.test(s)) { + return " "; + } + if (/^
|\n|\"|\u00A0/g, this._textToHtml); + }, + + _textToHtml: function (s) { + switch (s) { + case "&": + return "&"; + case "<": + return "<"; + case ">": + return ">"; + case "\n": + return "
"; + case "\"": + return """; // so we can use this in attributes + default: + return " "; + } + }, + + persistenceManager: new WebFXTreeCookiePersistence() +}; + + +/////////////////////////////////////////////////////////////////////////////// +// WebFXTreeAbstractNode +/////////////////////////////////////////////////////////////////////////////// + +function WebFXTreeAbstractNode(sText, oAction, oIconAction) { + this.childNodes = []; + if (sText) this.text = sText; + if (oAction) this.action = oAction; + if (oIconAction) this.iconAction = oIconAction; + this.id = webFXTreeHandler.getUniqueId(); + if (webFXTreeConfig.usePersistence) { + this.open = webFXTreeHandler.persistenceManager.getExpanded(this); + } + webFXTreeHandler.addNode(this); +} + + +_p = WebFXTreeAbstractNode.prototype; +_p._selected = false; +_p.indentWidth = 19; +_p.open = false; +_p.text = webFXTreeConfig.defaultText; +_p.action = null; +_p.iconAcion = null; +_p.target = null; +_p.toolTip = null; +_p._focused = false; + +/* begin tree model */ + +_p.add = function (oChild, oBefore) { + var oldLast; + var emptyBefore = this.childNodes.length == 0; + var p = oChild.parentNode; + + if (oBefore == null) { // append + if (p != null) + p.remove(oChild); + oldLast = this.getLastChild(); + this.childNodes.push(oChild); + } else { // insertBefore + if (oBefore.parentNode != this) { + throw new Error("Can only add nodes before siblings"); + } + if (p != null) { + p.remove(oChild); + } + + arrayHelper.insertBefore(this.childNodes, oChild, oBefore); + } + + if (oBefore) { + if (oBefore == this.firstChild) { + this.firstChild = oChild; + } + oChild.previousSibling = oBefore.previousSibling; + oBefore.previousSibling = oChild; + oChild.nextSibling = oBefore; + } else { + if (!this.firstChild) { + this.firstChild = oChild; + } + if (this.lastChild) { + this.lastChild.nextSibling = oChild; + } + oChild.previousSibling = this.lastChild; + this.lastChild = oChild; + } + + oChild.parentNode = this; + var t = this.getTree(); + if (t) { + oChild.tree = t; + } + var d = this.getDepth(); + if (d != null) { + oChild.depth = d + 1; + } + + if (this.getCreated() && !t.getSuspendRedraw()) { + var el = this.getChildrenElement(); + var newEl = oChild.create(); + var refEl = oBefore ? oBefore.getElement() : null; + el.insertBefore(newEl, refEl); + + if (oldLast) { + oldLast.updateExpandIcon(); + } + if (emptyBefore) { + this.setExpanded(this.getExpanded()); + // if we are using classic expand will not update icon + if (t && t.getBehavior() != "classic") + this.updateIcon(); + } + } + + return oChild; +}; + + + +_p.remove = function (oChild) { + // backwards compatible. If no argument remove the node + if (arguments.length == 0) { + if (this.parentNode) { + return this.parentNode.remove(this); + } + return null; + } + + // if we remove selected or tree with the selected we should select this + var t = this.getTree(); + var si = t ? t.getSelected() : null; + if (si == oChild || oChild.contains(si)) { + if (si.getFocused()) { + this.select(); + window.setTimeout("WebFXTreeAbstractNode._onTimeoutFocus(\"" + this.id + "\")", 10); + } else { + this.select(); + } + } + + if (oChild.parentNode != this) { + throw new Error("Can only remove children"); + } + arrayHelper.remove(this.childNodes, oChild); + + if (this.lastChild == oChild) { + this.lastChild = oChild.previousSibling; + } + if (this.firstChild == oChild) { + this.firstChild = oChild.nextSibling; + } + if (oChild.previousSibling) { + oChild.previousSibling.nextSibling = oChild.nextSibling; + } + if (oChild.nextSibling) { + oChild.nextSibling.previousSibling = oChild.previousSibling; + } + + var wasLast = oChild.isLastSibling(); + + oChild.parentNode = null; + oChild.tree = null; + oChild.depth = null; + + if (t && this.getCreated() && !t.getSuspendRedraw()) { + var el = this.getChildrenElement(); + var childEl = oChild.getElement(); + el.removeChild(childEl); + if (wasLast) { + var newLast = this.getLastChild(); + if (newLast) { + newLast.updateExpandIcon(); + } + } + if (!this.hasChildren()) { + el.style.display = "none"; + this.updateExpandIcon(); + this.updateIcon(); + } + } + + return oChild; +}; + +WebFXTreeAbstractNode._onTimeoutFocus = function (sId) { + var jsNode = webFXTreeHandler.all[sId]; + jsNode.focus(); +}; + +_p.getId = function () { + return this.id; +}; + +_p.getTree = function () { + throw new Error("getTree called on Abstract Node"); +}; + +_p.getDepth = function () { + throw new Error("getDepth called on Abstract Node"); +}; + +_p.getCreated = function () { + var t = this.getTree(); + return t && t.rendered; +}; + +_p.getParent = function () { + return this.parentNode; +}; + +_p.contains = function (oDescendant) { + if (oDescendant == null) return false; + if (oDescendant == this) return true; + var p = oDescendant.parentNode; + return this.contains(p); +}; + +_p.getChildren = _p.getChildNodes = function () { + return this.childNodes; +}; + +_p.getFirstChild = function () { + return this.childNodes[0]; +}; + +_p.getLastChild = function () { + return this.childNodes[this.childNodes.length - 1]; +}; + +_p.getPreviousSibling = function () { + return this.previousSibling; + //var p = this.parentNode; + //if (p == null) return null; + //var cs = p.childNodes; + //return cs[arrayHelper.indexOf(cs, this) - 1] +}; + +_p.getNextSibling = function () { + return this.nextSibling; + //var p = this.parentNode; + //if (p == null) return null; + //var cs = p.childNodes; + //return cs[arrayHelper.indexOf(cs, this) + 1] +}; + +_p.hasChildren = function () { + return this.childNodes.length > 0; +}; + +_p.isLastSibling = function () { + return this.nextSibling == null; + //return this.parentNode && this == this.parentNode.getLastChild(); +}; + +_p.findChildByText = function (s, n) { + if (!n) { + n = 0; + } + var isRe = s instanceof RegExp; + for (var i = 0; i < this.childNodes.length; i++) { + if (isRe && s.test(this.childNodes[i].getText()) || + this.childNodes[i].getText() == s) { + if (n == 0) { + return this.childNodes[i]; + } + n--; + } + } + return null; +}; + +_p.findNodeByText = function (s, n) { + if (!n) { + n = 0; + } + var isRe = s instanceof RegExp; + if (isRe && s.test(this.getText()) || this.getText() == s) { + if (n == 0) { + return this.childNodes[i]; + } + n--; + } + + var res; + for (var i = 0; i < this.childNodes.length; i++) { + res = this.childNodes[i].findNodeByText(s, n); + if (res) { + return res; + } + } + return null; +}; + +/* end tree model */ + +_p.setId = function (sId) { + var el = this.getElement(); + webFXTreeHandler.removeNode(this); + this.id = sId; + if (el) { + el.id = sId; + } + webFXTreeHandler.addNode(this); +}; + +_p.isSelected = function () { + return this._selected; +}; + +_p.select = function () { + this._setSelected(true); +}; + +_p.deselect = function () { + this._setSelected(false); +}; + +_p._setSelected = function (b) { + var t = this.getTree(); + if (!t) return; + if (this._selected != b) { + this._selected = b; + + var wasFocused = false; // used to keep focus state + var si = t.getSelected(); + if (b && si != null && si != this) { + var oldFireChange = t._fireChange; + wasFocused = si._focused; + t._fireChange = false; + si._setSelected(false); + t._fireChange = oldFireChange; + } + + var el = this.getRowElement(); + if (el) { + el.className = this.getRowClassName(); + } + if (b) { + this._setTabIndex(t.tabIndex); + t._selectedItem = this; + t._fireOnChange(); + t.setSelected(this); + if (wasFocused) { + this.focus(); + } + } else { + this._setTabIndex(-1); + } + + if (t.getBehavior() != "classic") { + this.updateIcon(); + } + } +}; + + +_p.getExpanded = function () { + return this.open; +}; + +_p.setExpanded = function (b) { + var ce; + this.open = b; + var t = this.getTree(); + if (this.hasChildren()) { + var si = t ? t.getSelected() : null; + if (!b && this.contains(si)) { + this.select(); + } + + var el = this.getElement(); + if (el) { + ce = this.getChildrenElement(); + if (ce) { + ce.style.display = b ? "block" : "none"; + } + var eie = this.getExpandIconElement(); + if (eie) { + eie.src = this.getExpandIconSrc(); + } + } + + if (webFXTreeConfig.usePersistence) { + webFXTreeHandler.persistenceManager.setExpanded(this, b); + } + } else { + ce = this.getChildrenElement(); + if (ce) + ce.style.display = "none"; + } + if (t && t.getBehavior() == "classic") { + this.updateIcon(); + } +}; + +_p.toggle = function () { + this.setExpanded(!this.getExpanded()); +}; + +_p.expand = function () { + this.setExpanded(true); +}; + +_p.collapse = function () { + this.setExpanded(false); +}; + +_p.collapseChildren = function () { + var cs = this.childNodes; + for (var i = 0; i < cs.length; i++) { + cs[i].collapseAll(); + } +}; + +_p.collapseAll = function () { + this.collapseChildren(); + this.collapse(); +}; + +_p.expandChildren = function () { + var cs = this.childNodes; + for (var i = 0; i < cs.length; i++) { + cs[i].expandAll(); + } +}; + +_p.expandAll = function () { + this.expandChildren(); + this.expand(); +}; + +_p.reveal = function () { + var p = this.getParent(); + if (p) { + p.setExpanded(true); + p.reveal(); + } +}; + +_p.openPath = function (sPath, bSelect, bFocus) { + if (sPath == "") { + if (bSelect) { + this.select(); + } + if (bFocus) { + window.setTimeout("WebFXTreeAbstractNode._onTimeoutFocus(\"" + this.id + "\")", 10); + } + return; + } + + var parts = sPath.split("/"); + var remainingPath = parts.slice(1).join("/"); + var t = this.getTree(); + if (sPath.charAt(0) == "/") { + if (t) { + t.openPath(remainingPath, bSelect, bFocus); + } else { + throw "Invalid path"; + } + } else { + // open + this.setExpanded(true); + parts = sPath.split("/"); + var ti = this.findChildByText(parts[0]); + if (!ti) { + throw "Could not find child node with text \"" + parts[0] + "\""; + } + ti.openPath(remainingPath, bSelect, bFocus); + } +}; + +_p.focus = function () { + var el = this.getLabelElement(); + if (el) { + el.focus(); + } +}; + +_p.getFocused = function () { + return this._focused; +}; + +_p._setTabIndex = function (i) { + var a = this.getLabelElement(); + if (a) { + a.setAttribute("tabindex", i); + } +}; + + +// HTML generation + +_p.toHtml = function () { + var sb = []; + var cs = this.childNodes; + var l = cs.length; + for (var y = 0; y < l; y++) { + sb[y] = cs[y].toHtml(); + } + + var t = this.getTree(); + var hideLines = !t.getShowLines() || t == this.parentNode && !t.getShowRootLines(); + + var childrenHtml = "
" + + sb.join("") + + "
"; + + return "
" + + this.getRowHtml() + + childrenHtml + + "
"; +}; + +_p.getRowHtml = function () { + var t = this.getTree(); + return "
" + + this.getExpandIconHtml() + + //"" + + this.getIconHtml() + + this.getLabelHtml() + + //"" + + "
"; +}; + +_p.getRowClassName = function () { + return "webfx-tree-row" + (this.isSelected() ? " selected" : "") + + (this.action ? "" : " no-action"); +}; + +_p.getLabelHtml = function () { + var toolTip = this.getToolTip(); + var target = this.getTarget(); + var link = this._getHref(); + + if (link == '#') { + return "" + + this.getHtml() + ""; + } + + return "" + + this.getHtml() + ""; +}; + +_p._getHref = function () { + if (typeof this.action == "string") + return this.action; + else + return "#"; +}; + +_p._getIconHref = function () { + if (typeof this.iconAction == "string") + return this.iconAction; + else + return this._getHref(); +} + +_p.getEventHandlersHtml = function () { + return ""; +}; + +_p.getIconHtml = function () { + // here we are not using textToHtml since the file names rarerly contains + // HTML... + var link = this._getIconHref(); + if (link == '#') + return " "; + + return ""; +}; + +_p.getIconSrc = function () { + throw new Error("getIconSrc called on Abstract Node"); +}; + +_p.getExpandIconHtml = function () { + // here we are not using textToHtml since the file names rarerly contains + // HTML... + return ""; +}; + + +_p.getExpandIconSrc = function () { + var src; + var t = this.getTree(); + var hideLines = !t.getShowLines() || t == this.parentNode && !t.getShowRootLines(); + + if (this.hasChildren()) { + var bits = 0; + /* + Bitmap used to determine which icon to use + 1 Plus + 2 Minus + 4 T Line + 8 L Line + */ + + if (t && t.getShowExpandIcons()) { + if (this.getExpanded()) { + bits = 2; + } else { + bits = 1; + } + } + + if (t && !hideLines) { + if (this.isLastSibling()) { + bits += 4; + } else { + bits += 8; + } + } + + switch (bits) { + case 1: + return webFXTreeConfig.plusIcon; + case 2: + return webFXTreeConfig.minusIcon; + case 4: + return webFXTreeConfig.lIcon; + case 5: + return webFXTreeConfig.lPlusIcon; + case 6: + return webFXTreeConfig.lMinusIcon; + case 8: + return webFXTreeConfig.tIcon; + case 9: + return webFXTreeConfig.tPlusIcon; + case 10: + return webFXTreeConfig.tMinusIcon; + default: // 0 + return webFXTreeConfig.blankIcon; + } + } else { + if (t && hideLines) { + return webFXTreeConfig.blankIcon; + } else if (this.isLastSibling()) { + return webFXTreeConfig.lIcon; + } else { + return webFXTreeConfig.tIcon; + } + } +}; + +_p.getLineStyle = function () { + return "background-position:" + this.getLineStyle2() + ";"; +}; + +_p.getLineStyle2 = function () { + return (this.isLastSibling() ? "-100" : (this.getDepth() - 1) * this.indentWidth) + "px 0"; +}; + +// End HTML generation + +// DOM +// this returns the div for the tree node +_p.getElement = function () { + return document.getElementById(this.id); +}; + +// the row is the div that is used to draw the node without the children +_p.getRowElement = function () { + var el = this.getElement(); + if (!el) return null; + return el.firstChild; +}; + +// plus/minus image +_p.getExpandIconElement = function () { + var el = this.getRowElement(); + if (!el) return null; + return el.firstChild; +}; + +_p.getIconElement = function () { + var el = this.getRowElement(); + if (!el) return null; + return el.childNodes[1]; +}; + +// anchor element +_p.getLabelElement = function () { + var el = this.getRowElement(); + if (!el) return null; + return el.lastChild; +}; + +// the div containing the children +_p.getChildrenElement = function () { + var el = this.getElement(); + if (!el) return null; + return el.lastChild; +}; + + +// IE uses about:blank if not attached to document and this can cause Win2k3 +// to fail +if (webFXTreeHandler.ie) { + _p.create = function () { + var dummy = document.createElement("div"); + dummy.style.display = "none"; + document.body.appendChild(dummy); + dummy.innerHTML = this.toHtml(); + var res = dummy.removeChild(dummy.firstChild); + document.body.removeChild(dummy); + return res; + }; +} else { + _p.create = function () { + var dummy = document.createElement("div"); + dummy.innerHTML = this.toHtml(); + return dummy.removeChild(dummy.firstChild); + }; +} + +// Getters and setters for some common fields + +_p.setIcon = function (s) { + this.icon = s; + if (this.getCreated()) { + this.updateIcon(); + } +}; + +_p.getIcon = function () { + return this.icon; +}; + +_p.setOpenIcon = function (s) { + this.openIcon = s; + if (this.getCreated()) { + this.updateIcon(); + } +}; + +_p.getOpenIcon = function () { + return this.openIcon; +}; + +_p.setText = function (s) { + this.setHtml(webFXTreeHandler.textToHtml(s)); +}; + +_p.getText = function () { + return webFXTreeHandler.htmlToText(this.getHtml()); +}; + +_p.setHtml = function (s) { + this.text = s; + var el = this.getLabelElement(); + if (el) { + el.innerHTML = s; + } +}; + +_p.getHtml = function () { + return this.text; +}; + +_p.setTarget = function (s) { + this.target = s; +}; + +_p.getTarget = function () { + return this.target; +}; + +_p.setToolTip = function (s) { + this.toolTip = s; + var el = this.getLabelElement(); + if (el) { + el.title = s; + } +}; + +_p.getToolTip = function () { + return this.toolTip; +}; + +_p.setAction = function (oAction) { + this.action = oAction; + var el = this.getLabelElement(); + if (el) { + el.href = this._getHref(); + } + el = this.getRowElement(); + if (el) { + el.className = this.getRowClassName(); + } +}; + +_p.getAction = function () { + return this.action; +}; + +_p.setIconAction = function (oAction) { + this.iconAction = oAction; + var el = this.getIconElement(); + if (el) { + el.href = this._getIconHref(); + } +} + +_p.getIconAction = function () { + if (this.iconAction) + return this.iconAction; + return _p.getAction(); +}; + +// update methods + +_p.update = function () { + var t = this.getTree(); + if (t.suspendRedraw) return; + var el = this.getElement(); + if (!el || !el.parentNode) return; + var newEl = this.create(); + el.parentNode.replaceChild(newEl, el); + this._setTabIndex(this.tabIndex); // in case root had the tab index + var si = t.getSelected(); + if (si && si.getFocused()) { + si.focus(); + } +}; + +_p.updateExpandIcon = function () { + var t = this.getTree(); + if (t.suspendRedraw) return; + var img = this.getExpandIconElement(); + img.src = this.getExpandIconSrc(); + var cel = this.getChildrenElement(); + cel.style.backgroundPosition = this.getLineStyle2(); +}; + +_p.updateIcon = function () { + var t = this.getTree(); + if (t.suspendRedraw) return; + var img = this.getIconElement(); + img.src = this.getIconSrc(); +}; + +// End DOM + +_p._callSuspended = function (f) { + var t = this.getTree(); + var sr = t.getSuspendRedraw(); + t.setSuspendRedraw(true); + f.call(this); + t.setSuspendRedraw(sr); +}; + +// Event handlers + +_p._onmousedown = function (e) { + var el = e.target || e.srcElement; + // expand icon + if (/webfx-tree-expand-icon/.test(el.className) && this.hasChildren()) { + this.toggle(); + if (webFXTreeHandler.ie) { + window.setTimeout("WebFXTreeAbstractNode._onTimeoutFocus(\"" + this.id + "\")", 10); + } + return false; + } + + this.select(); + if (/*!/webfx-tree-item-label/.test(el.className) && */!webFXTreeHandler.opera) { // opera cancels the click if focus is called + + // in case we are not clicking on the label + if (webFXTreeHandler.ie) { + window.setTimeout("WebFXTreeAbstractNode._onTimeoutFocus(\"" + this.id + "\")", 10); + } else { + this.focus(); + } + } + var rowEl = this.getRowElement(); + if (rowEl) { + rowEl.className = this.getRowClassName(); + } + + return false; +}; + +_p._onclick = function (e) { + var el = e.target || e.srcElement; + // expand icon + if (/webfx-tree-expand-icon/.test(el.className) && this.hasChildren()) { + return false; + } + + var doAction = null; + if (/webfx-tree-icon/.test(el.className) && this.iconAction) { + doAction = this.iconAction; + } else { + doAction = this.action; + } + + if (typeof doAction == "function") { + doAction(); + } else if (doAction != null) { + window.open(doAction, this.target || "_self"); + } + return false; +}; + + +_p._ondblclick = function (e) { + var el = e.target || e.srcElement; + // expand icon + if (/webfx-tree-expand-icon/.test(el.className) && this.hasChildren()) { + return; + } + + this.toggle(); +}; + +_p._onfocus = function (e) { + this.select(); + this._focused = true; +}; + +_p._onblur = function (e) { + this._focused = false; +}; + +_p._onkeydown = function (e) { + var n; + var rv = true; + switch (e.keyCode) { + case 39: // RIGHT + if (e.altKey) { + rv = true; + break; + } + if (this.hasChildren()) { + if (!this.getExpanded()) { + this.setExpanded(true); + } else { + this.getFirstChild().focus(); + } + } + rv = false; + break; + case 37: // LEFT + if (e.altKey) { + rv = true; + break; + } + if (this.hasChildren() && this.getExpanded()) { + this.setExpanded(false); + } else { + var p = this.getParent(); + var t = this.getTree(); + // don't go to root if hidden + if (p && (t.showRootNode || p != t)) { + p.focus(); + } + } + rv = false; + break; + + case 40: // DOWN + n = this.getNextShownNode(); + if (n) { + n.focus(); + } + rv = false; + break; + case 38: // UP + n = this.getPreviousShownNode() + if (n) { + n.focus(); + } + rv = false; + break; + } + + if (!rv && e.preventDefault) { + e.preventDefault(); + } + e.returnValue = rv; + return rv; +}; + +_p._onkeypress = function (e) { + if (!e.altKey && e.keyCode >= 37 && e.keyCode <= 40) { + if (e.preventDefault) { + e.preventDefault(); + } + e.returnValue = false; + return false; + } +}; + +// End event handlers + +_p.dispose = function () { + if (this.disposed) return; + for (var i = this.childNodes.length - 1; i >= 0; i--) { + this.childNodes[i].dispose(); + } + this.tree = null; + this.parentNode = null; + this.childNodes = null; + this.disposed = true; +}; + +// Some methods that are usable when navigating the tree using the arrows +_p.getLastShownDescendant = function () { + if (!this.getExpanded() || !this.hasChildren()) { + return this; + } + // we know there is at least 1 child + return this.getLastChild().getLastShownDescendant(); +}; + +_p.getNextShownNode = function () { + if (this.hasChildren() && this.getExpanded()) { + return this.getFirstChild(); + } else { + var p = this; + var next; + while (p != null) { + next = p.getNextSibling(); + if (next != null) { + return next; + } + p = p.getParent(); + } + return null; + } +}; + +_p.getPreviousShownNode = function () { + var ps = this.getPreviousSibling(); + if (ps != null) { + return ps.getLastShownDescendant(); + } + var p = this.getParent(); + var t = this.getTree(); + if (!t.showRootNode && p == t) { + return null; + } + return p; +}; + + + + + + + +/////////////////////////////////////////////////////////////////////////////// +// WebFXTree +/////////////////////////////////////////////////////////////////////////////// + +function WebFXTree(sText, oAction, sBehavior, sIcon, oIconAction, sOpenIcon) { + WebFXTreeAbstractNode.call(this, sText, oAction, oIconAction); + if (sIcon) this.icon = sIcon; + if (sOpenIcon) this.openIcon = sOpenIcon; + if (sBehavior) this.behavior = sBehavior; +} + +_p = WebFXTree.prototype = new WebFXTreeAbstractNode; +_p.indentWidth = 19; +_p.open = true; +_p._selectedItem = null; +_p._fireChange = true; +_p.rendered = false; +_p.suspendRedraw = false; +_p.showLines = true; +_p.showExpandIcons = true; +_p.showRootNode = true; +_p.showRootLines = true; + +_p.getTree = function () { + return this; +}; + +_p.getDepth = function () { + return 0; +}; + +_p.getCreated = function () { + return this.rendered; +}; + + +/* end tree model */ + +_p.getExpanded = function () { + return !this.showRootNode || WebFXTreeAbstractNode.prototype.getExpanded.call(this); +}; + +_p.setExpanded = function (b) { + if (!this.showRootNode) { + this.open = b; + } else { + WebFXTreeAbstractNode.prototype.setExpanded.call(this, b); + } +}; + +_p.getExpandIconHtml = function () { + return ""; +}; + +// we don't have an expand icon here +_p.getIconElement = function () { + var el = this.getRowElement(); + if (!el) return null; + return el.firstChild; +}; + +// no expand icon for root element +_p.getExpandIconElement = function (oDoc) { + return null; +}; + +_p.updateExpandIcon = function () { + // no expand icon +}; + +_p.getRowClassName = function () { + return WebFXTreeAbstractNode.prototype.getRowClassName.call(this) + + (this.showRootNode ? "" : " webfx-tree-hide-root"); +}; + + +// if classic then the openIcon is used for expanded, otherwise openIcon is used +// for selected + +_p.getIconSrc = function () { + var behavior = this.getTree() ? this.getTree().getBehavior() : webFXTreeConfig.defaultBehavior; + var open = behavior == "classic" && this.getExpanded() || + behavior != "classic" && this.isSelected(); + if (open && this.openIcon) { + return this.openIcon; + } + if (!open && this.icon) { + return this.icon; + } + // fall back on default icons + return open ? webFXTreeConfig.openRootIcon : webFXTreeConfig.rootIcon; +}; + +_p.getEventHandlersHtml = function () { + return " onclick=\"return webFXTreeHandler.handleEvent(event)\" " + + "onmousedown=\"return webFXTreeHandler.handleEvent(event)\" " + + "ondblclick=\"return webFXTreeHandler.handleEvent(event)\" " + + "onkeydown=\"return webFXTreeHandler.handleEvent(event)\" " + + "onkeypress=\"return webFXTreeHandler.handleEvent(event)\""; +}; + +_p.setSelected = function (o) { + if (this._selectedItem != o && o) { + o._setSelected(true); + } +}; + +_p._fireOnChange = function () { + if (this._fireChange && typeof this.onchange == "function") { + this.onchange(); + } +}; + +_p.getSelected = function () { + return this._selectedItem; +}; + +_p.tabIndex = ""; + +_p.setTabIndex = function (i) { + var n = this._selectedItem || (this.showRootNode ? this : this.firstChild); + this.tabIndex = i; + if (n) { + n._setTabIndex(i); + } +}; + +_p.getTabIndex = function () { + return this.tabIndex; +}; + +_p.setBehavior = function (s) { + this.behavior = s; +}; + +_p.getBehavior = function () { + return this.behavior || webFXTreeConfig.defaultBehavior; +}; + +_p.setShowLines = function (b) { + if (this.showLines != b) { + this.showLines = b; + if (this.rendered) { + this.update(); + } + } +}; + +_p.getShowLines = function () { + return this.showLines; +}; + +_p.setShowRootLines = function (b) { + if (this.showRootLines != b) { + this.showRootLines = b; + if (this.rendered) { + this.update(); + } + } +}; + +_p.getShowRootLines = function () { + return this.showRootLines; +}; + +_p.setShowExpandIcons = function (b) { + if (this.showExpandIcons != b) { + this.showExpandIcons = b; + if (this.rendered) { + this.getTree().update(); + } + } +}; + +_p.getShowExpandIcons = function () { + return this.showExpandIcons; +}; + +_p.setShowRootNode = function (b) { + if (this.showRootNode != b) { + this.showRootNode = b; + if (this.rendered) { + this.getTree().update(); + } + } +}; + +_p.getShowRoootNode = function () { + return this.showRootNode; +}; + +_p.onchange = function () {}; + +_p.create = function () { + var el = WebFXTreeAbstractNode.prototype.create.call(this); + this.setTabIndex(this.tabIndex); + this.rendered = true; + return el; +}; + +_p.write = function () { + document.write(this.toHtml()); + this.setTabIndex(this.tabIndex); + this.rendered = true; +}; + +_p.setSuspendRedraw = function (b) { + this.suspendRedraw = b; +}; + +_p.getSuspendRedraw = function () { + return this.suspendRedraw; +}; + + + +/////////////////////////////////////////////////////////////////////////////// +// WebFXTreeItem +/////////////////////////////////////////////////////////////////////////////// + +function WebFXTreeItem(sText, oAction, eParent, sIcon, oIconAction, sOpenIcon) { + WebFXTreeAbstractNode.call(this, sText, oAction, oIconAction); + if (sIcon) this.icon = sIcon; + if (sOpenIcon) this.openIcon = sOpenIcon; + if (eParent) eParent.add(this); +} + +_p = WebFXTreeItem.prototype = new WebFXTreeAbstractNode; +_p.tree = null; + +/* tree model */ + +_p.getDepth = function () { + if (this.depth != null) { + return this.depth; + } + if (this.parentNode) { + var pd = this.parentNode.getDepth(); + return this.depth = (pd != null ? pd + 1 : null); + } + return null; +}; + +_p.getTree = function () { + if (this.tree) { + return this.tree; + } + if (this.parentNode) { + return this.tree = this.parentNode.getTree(); + } + return null; +}; + +_p.getCreated = function () { + var t = this.getTree(); + return t && t.getCreated(); +}; + +// if classic then the openIcon is used for expanded, otherwise openIcon is used +// for selected +_p.getIconSrc = function () { + var behavior = this.getTree() ? this.getTree().getBehavior() : webFXTreeConfig.defaultBehavior; + var open = behavior == "classic" && this.getExpanded() || + behavior != "classic" && this.isSelected(); + if (open && this.openIcon) { + return this.openIcon; + } + if (!open && this.icon) { + return this.icon; + } + + // fall back on default icons + if (this.hasChildren()) { + return open ? webFXTreeConfig.openFolderIcon : webFXTreeConfig.folderIcon; + } + return webFXTreeConfig.fileIcon; +}; + +/* end tree model */ + + + + +if (window.attachEvent) { + window.attachEvent("onunload", function () { + for (var id in webFXTreeHandler.all) + webFXTreeHandler.all[id].dispose(); + }); +} diff --git a/.devilbox/www/include/lib/Html.php b/.devilbox/www/include/lib/Html.php index 4ac93ce1..87ef2c39 100644 --- a/.devilbox/www/include/lib/Html.php +++ b/.devilbox/www/include/lib/Html.php @@ -94,6 +94,11 @@ class Html 'path' => '__PHPMYADMIN__', 'target' => '_blank' ), + array( + 'name' => 'phpPgAdmin', + 'path' => '__PHPPGADMIN__', + 'target' => '_blank' + ), array( 'name' => 'PHPRedMin', 'path' => '/vendor/phpredmin/public/index.php', @@ -385,6 +390,9 @@ HTML; if ($el['path'] == '__PHPMYADMIN__') { $el['path'] = (version_compare(loadClass('Php')->getVersion(), '5.5', '<')) ? '/vendor/phpmyadmin-4.0/index.php' : '/vendor/phpmyadmin-4.8.4/index.php'; } + if ($el['path'] == '__PHPPGADMIN__') { + $el['path'] = (version_compare(loadClass('Php')->getVersion(), '5.2', '<')) ? '/vendor/phpmyadmin-4.0/' : '/vendor/phppgadmin-5.6.0/'; + } if ($el['path'] == '__ADMINER__') { $el['path'] = (version_compare(loadClass('Php')->getVersion(), '5.4', '<')) ? '/vendor/adminer-4.6.3-en.php' : '/vendor/adminer-4.7.0-en.php'; } diff --git a/.tests/intra-tests/vendor-phppgadmin.sh b/.tests/intra-tests/vendor-phppgadmin.sh new file mode 100755 index 00000000..49c63fbe --- /dev/null +++ b/.tests/intra-tests/vendor-phppgadmin.sh @@ -0,0 +1,215 @@ +#!/usr/bin/env bash + +set -e +set -u +set -o pipefail + + +# There's currently an Issue with PHP 7.3, Xdebug and phpMyAdmin. It just segfaults, +# so I will remove it from the checks. +DISABLED_VERSIONS=("") + +# +# NOTE: Parsing curl to tac to circumnvent "failed writing body" +# https://stackoverflow.com/questions/16703647/why-curl-return-and-error-23-failed-writing-body +# + + +### +### Get current PHP version +### + +printf "[TEST] Get PHP version" +# 1st Try +if ! PHP_VERSION="$( curl -sS localhost/index.php | tac | tac | grep -Eo 'PHP.*?\([.0-9]+' | grep -Eo '\([.0-9]+' | grep -Eo '[0-9]+\.[0-9]+' )"; then + # 2nd Try + sleep 1 + if ! PHP_VERSION="$( curl -sS localhost/index.php | tac | tac | grep -Eo 'PHP.*?\([.0-9]+' | grep -Eo '\([.0-9]+' | grep -Eo '[0-9]+\.[0-9]+' )"; then + # 3rd Try + sleep 1 + if ! PHP_VERSION="$( curl -sS localhost/index.php | tac | tac | grep -Eo 'PHP.*?\([.0-9]+' | grep -Eo '\([.0-9]+' | grep -Eo '[0-9]+\.[0-9]+' )"; then + printf "\r[FAIL] Get PHP version\n" + curl -sS localhost/index.php | tac | tac | grep -Eo 'PHP.*?\([.0-9]+' || true + exit 1 + else + printf "\r[OK] Get PHP version (3 rounds): %s\n" "${PHP_VERSION}" + fi + else + printf "\r[OK] Get PHP version (2 rounds): %s\n" "${PHP_VERSION}" + fi +else + printf "\r[OK] Get PHP version (1 round): %s\n" "${PHP_VERSION}" +fi + + +### +### Ensure only to check against desired versions +### + +if [[ ${DISABLED_VERSIONS[*]} =~ ${PHP_VERSION} ]]; then + printf "[SKIP] Skipping all checks for PHP ${PHP_VERSION}\n" + exit 0 +fi + + +### +### Retrieve URL for current PHP version. +### Older PHP versions are presented a link with a different version due to compatibility. +### + +printf "[TEST] Retrieve phpPgAdmin URL" +# 1st Try +if ! URL="$( curl -sS localhost/index.php | grep -Eo "/vendor/phppgadmin-[.0-9]+/" )"; then + # 2nd Try + sleep 1 + if ! URL="$( curl -sS localhost/index.php | grep -Eo "/vendor/phppgadmin-[.0-9]+/" )"; then + # 3rd Try + sleep 1 + if ! URL="$( curl -sS localhost/index.php | grep -Eo "/vendor/phppgadmin-[.0-9]+/" )"; then + printf "\r[FAILED] Retrieve phpMyAdmin URL\n" + curl -sS localhost/index.php | grep -Eo "/vendor/phppgadmin-[.0-9]+/" || true + exit 1 + else + printf "\r[OK] Retrieve phpPgAdmin URL (3 rounds): ${URL}\n" + fi + else + printf "\r[OK] Retrieve phpPgAdmin URL (2 rounds): ${URL}\n" + fi +else + printf "\r[OK] Retrieve phpPgAdmin URL (1 round): ${URL}\n" +fi + + +### +### Ensure given phpPgAdmin version works +### + +printf "[TEST] Fetch ${URL}intro.php" +# 1st Try +if ! curl -sS localhost${URL}intro.php | tac | tac | grep -Eiq "welcome to phpPgAdmin"; then + # 2nd Try + sleep 1 + if ! curl -sS localhost${URL}intro.php | tac | tac | grep -Eiq "welcome to phpPgAdmin"; then + # 3rd Try + sleep 1 + if ! curl -sS localhost${URL}intro.php | tac | tac | grep -Eiq "welcome to phpPgAdmin"; then + printf "\r[FAIL] Fetch ${URL}\n" + curl -sS localhost/${URL}into.php || true + curl -sSI localhost/${URL}into.php || true + exit 1 + else + printf "\r[OK] Fetch ${URL}intro.php (3 rounds)\n" + fi + else + printf "\r[OK] Fetch ${URL}intro.php (2 rounds)\n" + fi +else + printf "\r[OK] Fetch ${URL}intro.php (1 round)\n" +fi + + +### +### Login (get token URL) +### +# 1st Try +printf "[TEST] Retrieve phpPgAdmin token page" +if ! TOKEN_URL="$( curl -sS -c cookie.txt localhost${URL}servers.php | tac | tac | grep -Eo "\"redirect\.php\?subject=server.+\"" )"; then + # 2nd Try + sleep 1 + if ! TOKEN_URL="$( curl -sS -c cookie.txt localhost${URL}servers.php | tac | tac | grep -Eo "\"redirect\.php\?subject=server.+\"" )"; then + # 3rd Try + sleep 1 + if ! TOKEN_URL="$( curl -sS -c cookie.txt localhost${URL}servers.php | tac | tac | grep -Eo "\"redirect\.php\?subject=server.+\"" )"; then + printf "\r[FAIL] Retrieve phpPgAdmin login page\n" + curl -sS localhost/${URL}servers.php || true + curl -sSI localhost/${URL}servers.php || true + rm -f cookie.txt + exit 1 + else + TOKEN_URL="$( echo "${TOKEN_URL}" | sed 's/"//g' )" + TOKEN_URL="$( echo "${TOKEN_URL}" | sed 's/&/\&/g' )" + printf "\r[OK] Retrieve phpPgAdmin token page (3 rounds): ${TOKEN_URL}\n" + fi + else + TOKEN_URL="$( echo "${TOKEN_URL}" | sed 's/"//g' )" + TOKEN_URL="$( echo "${TOKEN_URL}" | sed 's/&/\&/g' )" + printf "\r[OK] Retrieve phpPgAdmin login token (2 rounds): ${TOKEN_URL}\n" + fi +else + TOKEN_URL="$( echo "${TOKEN_URL}" | sed 's/"//g' )" + TOKEN_URL="$( echo "${TOKEN_URL}" | sed 's/&/\&/g' )" + printf "\r[OK] Retrieve phpPgAdmin token page (1 round): ${TOKEN_URL}\n" +fi + + +### +### Login (get Login Token) +### +TOKEN= +printf "[TEST] Retrieve phpPgAdmin login token" +# 1st Try +if ! TOKEN="$( curl -sS -c cookie.txt -b cookie.txt "localhost${URL}${TOKEN_URL}" | tac | tac | grep -Eo "loginPassword_[a-zA-Z0-9]+" )"; then + # 2nd Try + sleep 1 + if ! TOKEN="$( curl -sS -c cookie.txt -b cookie.txt "localhost${URL}${TOKEN_URL}" | tac | tac | grep -Eo "loginPassword_[a-zA-Z0-9]+" )"; then + # 3rd Try + sleep 1 + if ! TOKEN="$( curl -sS -c cookie.txt -b cookie.txt "localhost${URL}${TOKEN_URL}" | tac | tac | grep -Eo "loginPassword_[a-zA-Z0-9]+" )"; then + printf "\r[FAIL] Retrieve phpPgAdmin login token\n" + curl -sS "${TOKEN_URL_URL}" || true + curl -sSI "${TOKEN_URL_URL}" || true + rm -f cookie.txt + exit 1 + else + TOKEN="$( echo "${TOKEN}" | head -1 )" + printf "\r[OK] Retrieve phpPgAdmin login token (3 rounds): ${TOKEN}\n" + fi + else + TOKEN="$( echo "${TOKEN}" | head -1 )" + printf "\r[OK] Retrieve phpPgAdmin login token (2 rounds): ${TOKEN}\n" + fi +else + TOKEN="$( echo "${TOKEN}" | head -1 )" + printf "\r[OK] Retrieve phpPgAdmin login token (1 round): ${TOKEN}\n" +fi + + +### +### Login +### + +printf "[TEST] Submit phpPgAdmin POST login" +# 1st Try +if ! curl -sS -c cookie.txt -b cookie.txt \ + -d "subject=server&server=pgsql%3A5432%3Aallow&loginServer=pgsql%3A5432%3Aallow&loginUsername=postgres&${TOKEN}=&loginSubmit=Login" \ + localhost${URL}redirect.php 2>/dev/null | grep -q "Create database"; then + # 2nd Try + sleep 1 + if ! curl -sS -c cookie.txt -b cookie.txt \ + -d "subject=server&server=pgsql%3A5432%3Aallow&loginServer=pgsql%3A5432%3Aallow&loginUsername=postgres&${TOKEN}=&loginSubmit=Login" \ + localhost${URL}redirect.php 2>/dev/null | grep -q "Create database"; then + # 3rd Try + sleep 1 + if ! curl -sS -c cookie.txt -b cookie.txt \ + -d "subject=server&server=pgsql%3A5432%3Aallow&loginServer=pgsql%3A5432%3Aallow&loginUsername=postgres&${TOKEN}=&loginSubmit=Login" \ + localhost${URL}redirect.php 2>/dev/null | grep -q "Create database"; then + printf "\r[FAIL] Submit phpPgAdmin POST login\n" + curl -sS -c cookie.txt -b cookie.txt \ + -d "subject=server&server=pgsql%3A5432%3Aallow&loginServer=pgsql%3A5432%3Aallow&loginUsername=postgres&${TOKEN}=&loginSubmit=Login" \ + localhost${URL}redirect.php || true + curl -sSI -c cookie.txt -b cookie.txt \ + -d "subject=server&server=pgsql%3A5432%3Aallow&loginServer=pgsql%3A5432%3Aallow&loginUsername=postgres&${TOKEN}=&loginSubmit=Login" \ + localhost${URL}redirect.php || true + rm -f cookie.txt || true + exit 1 + else + printf "\r[OK] Submit phpPgAdmin POST login (3 rounds)\n" + fi + else + printf "\r[OK] Submit phpPgAdmin POST login (2 rounds)\n" + fi +else + printf "\r[OK] Submit phpPgAdmin POST login (1 round)\n" +fi + +rm -f cookie.txt || true From 46141b7e50447d61fe1ddd8ad7656b9db9442b6c Mon Sep 17 00:00:00 2001 From: cytopia Date: Fri, 28 Dec 2018 22:44:50 +0100 Subject: [PATCH 02/24] Update readthedocs for phpPgAdmin --- docs/_includes/links/tools.rst | 6 ++++++ docs/features.rst | 5 +++-- docs/getting-started/devilbox-intranet.rst | 7 +++++++ docs/maintenance/backup-and-restore-pgsql.rst | 16 ++++++++++++++++ 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/docs/_includes/links/tools.rst b/docs/_includes/links/tools.rst index 85d3da96..6cb2cba8 100644 --- a/docs/_includes/links/tools.rst +++ b/docs/_includes/links/tools.rst @@ -267,6 +267,12 @@ phpMyAdmin +.. |ext_lnk_tool_phppgadmin| raw:: html + + + phpPgAdmin + + .. |ext_lnk_tool_phpredmin| raw:: html diff --git a/docs/features.rst b/docs/features.rst index a648c2db..58cd76cc 100644 --- a/docs/features.rst +++ b/docs/features.rst @@ -107,8 +107,9 @@ port exposures, hostnames and any errors including how they can be resolved. Third-party tools ^^^^^^^^^^^^^^^^^ -Mandatory web projects are also shipped: |ext_lnk_tool_phpmyadmin|, |ext_lnk_tool_adminer| and -|ext_lnk_tool_opcachegui| as well as a web GUI to view all sent emails. +Mandatory web projects are also shipped: |ext_lnk_tool_phpmyadmin|, |ext_lnk_tool_phppgadmin|, +|ext_lnk_tool_phpredmin|, |ext_lnk_tool_adminer| and |ext_lnk_tool_opcachegui| as well as a web GUI +to view all sent emails. Dockerized diff --git a/docs/getting-started/devilbox-intranet.rst b/docs/getting-started/devilbox-intranet.rst index 1de0d375..3ebc8e37 100644 --- a/docs/getting-started/devilbox-intranet.rst +++ b/docs/getting-started/devilbox-intranet.rst @@ -95,6 +95,13 @@ columns, relations, indexes, users, permissions, etc) can be performed via the u while you still have the ability to directly execute any SQL statement. +phpPgAdmin +---------- + +|ext_lnk_tool_phppgadmin| is a web-based administration tool for PostgreSQL. It is perfect for +PostgreSQL DBAs, newbies, and hosting services. + + phpRedMin ---------- diff --git a/docs/maintenance/backup-and-restore-pgsql.rst b/docs/maintenance/backup-and-restore-pgsql.rst index d16f22c2..a7dba475 100644 --- a/docs/maintenance/backup-and-restore-pgsql.rst +++ b/docs/maintenance/backup-and-restore-pgsql.rst @@ -40,6 +40,14 @@ To backup a database named ``my_db_name`` follow the below listed example: # Run pg_dump devilbox@php-7.1.6 in /shared/httpd $ pg_dump -h pgsql -U postgres -W my_db_name > /shared/backups/pgsql/my_db_name.sql + +phpPgAdmin +---------- + +If you do not like to use the command line for backups, you can use |ext_lnk_tool_phppgadmin|. +It comes bundled with the devilbox intranet. + + Adminer ------- @@ -100,6 +108,14 @@ Here are a few examples for different file types: devilbox@php-7.1.6 in /shared/httpd $ tar xzOf /shared/backups/pgsql/my_db_name.sql.tar.gz | psql -h pgsql -U postgres -W my_db_name +phpPgAdmin +---------- + +|ext_lnk_tool_phppgadmin| supports importing many different formats out-of-the-box. +Simply select the compressed or uncompressed file and press ``Go`` in the import section of +the web interface. + + Adminer ------- From 2e580b29f062894ae73da356f24453e24aad3454 Mon Sep 17 00:00:00 2001 From: cytopia Date: Fri, 28 Dec 2018 22:45:30 +0100 Subject: [PATCH 03/24] Fix retrieval of available PHP extensions --- .tests/Makefile | 4 +- .tests/get-modules.sh | 446 ++++++++++++++++++++++++++++++++++-------- 2 files changed, 365 insertions(+), 85 deletions(-) diff --git a/.tests/Makefile b/.tests/Makefile index f6a5aad4..d945ccd4 100644 --- a/.tests/Makefile +++ b/.tests/Makefile @@ -4,6 +4,7 @@ SHELL := /bin/bash +.PHONY: update-readme # ------------------------------------------------------------------------------------------------- # Variables @@ -28,7 +29,8 @@ VHOST = $(PROJECT).loc update-readme: cat "../README.md" \ | perl -00 -pe "s/.*/\n$$(./get-modules.sh)\n/s" \ - > "../README.md" + > "../README.md.tmp" + yes | mv -f "../README.md.tmp" "../README.md" # ------------------------------------------------------------------------------------------------- # Testing Targets diff --git a/.tests/get-modules.sh b/.tests/get-modules.sh index db207f23..20ee705b 100755 --- a/.tests/get-modules.sh +++ b/.tests/get-modules.sh @@ -4,19 +4,20 @@ SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )" COMPOSEPATH="${SCRIPTPATH}/.." PHP_TAG="$( grep 'devilbox/php' "${COMPOSEPATH}/docker-compose.yml" | sed 's/^.*-work-//g' )" + ### -### Get PHP modules (5 rounds) +### Get PHP core modules (5 rounds) ### -if ! PHP52="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '52-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then +if ! PHP52_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '52-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP52="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '52-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP52_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '52-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP52="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '52-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP52_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '52-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP52="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '52-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP52_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '52-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP52="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '52-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP52_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '52-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then >&2 echo "Failed to retrieve modules for PHP 5.2" exit 1 fi @@ -24,15 +25,15 @@ if ! PHP52="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-f fi fi fi -if ! PHP53="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '53-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then +if ! PHP53_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '53-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP53="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '53-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP53_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '53-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP53="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '53-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP53_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '53-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP53="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '53-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP53_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '53-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP53="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '53-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP53_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '53-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then >&2 echo "Failed to retrieve modules for PHP 5.3" exit 1 fi @@ -40,15 +41,15 @@ if ! PHP53="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-f fi fi fi -if ! PHP54="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '54-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then +if ! PHP54_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '54-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP54="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '54-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP54_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '54-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP54="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '54-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP54_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '54-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP54="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '54-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP54_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '54-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP54="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '54-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP54_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '54-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then >&2 echo "Failed to retrieve modules for PHP 5.4" exit 1 fi @@ -56,15 +57,15 @@ if ! PHP54="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-f fi fi fi -if ! PHP55="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '55-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then +if ! PHP55_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '55-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP55="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '55-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP55_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '55-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP55="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '55-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP55_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '55-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP55="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '55-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP55_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '55-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP55="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '55-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP55_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '55-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then >&2 echo "Failed to retrieve modules for PHP 5.5" exit 1 fi @@ -72,15 +73,15 @@ if ! PHP55="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-f fi fi fi -if ! PHP56="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '56-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then +if ! PHP56_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '56-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP56="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '56-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP56_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '56-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP56="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '56-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP56_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '56-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP56="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '56-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP56_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '56-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP56="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '56-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP56_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '56-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then >&2 echo "Failed to retrieve modules for PHP 5.6" exit 1 fi @@ -88,15 +89,15 @@ if ! PHP56="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-f fi fi fi -if ! PHP70="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '70-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then +if ! PHP70_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '70-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP70="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '70-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP70_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '70-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP70="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '70-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP70_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '70-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP70="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '70-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP70_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '70-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP70="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '70-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP70_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '70-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then >&2 echo "Failed to retrieve modules for PHP 7.0" exit 1 fi @@ -104,15 +105,15 @@ if ! PHP70="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-f fi fi fi -if ! PHP71="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '71-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then +if ! PHP71_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '71-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP71="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '71-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP71_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '71-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP71="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '71-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP71_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '71-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP71="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '71-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP71_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '71-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP71="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '71-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP71_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '71-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then >&2 echo "Failed to retrieve modules for PHP 7.1" exit 1 fi @@ -120,15 +121,15 @@ if ! PHP71="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-f fi fi fi -if ! PHP72="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '72-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then +if ! PHP72_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '72-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP72="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '72-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP72_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '72-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP72="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '72-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP72_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '72-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP72="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '72-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP72_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '72-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP72="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '72-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP72_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '72-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then >&2 echo "Failed to retrieve modules for PHP 7.2" exit 1 fi @@ -136,15 +137,15 @@ if ! PHP72="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-f fi fi fi -if ! PHP73="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '73-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then +if ! PHP73_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '73-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP73="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '73-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP73_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '73-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP73="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '73-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP73_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '73-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP73="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '73-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP73_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '73-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP73="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '73-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP73_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '73-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then >&2 echo "Failed to retrieve modules for PHP 7.3" exit 1 fi @@ -152,15 +153,15 @@ if ! PHP73="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-f fi fi fi -if ! PHP74="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '74-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then +if ! PHP74_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '74-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP74="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '74-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP74_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '74-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP74="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '74-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP74_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '74-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP74="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '74-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP74_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '74-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then sleep 5; - if ! PHP74="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '74-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + if ! PHP74_BASE="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '74-base' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then >&2 echo "Failed to retrieve modules for PHP 7.4" exit 1 fi @@ -169,64 +170,341 @@ if ! PHP74="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-f fi fi -ALL="$( echo "${PHP52}, ${PHP53}, ${PHP54}, ${PHP55}, ${PHP56}, ${PHP70}, ${PHP71}, ${PHP72}, ${PHP73}, ${PHP74}" | sed 's/,/\n/g' | sed -e 's/^\s*//g' -e 's/\s*$//g' | sort -u )" +### +### Get PHP mods modules (5 rounds) +### -Y="βœ“" +if ! PHP52_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '52-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP52_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '52-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP52_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '52-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP52_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '52-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP52_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '52-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + >&2 echo "Failed to retrieve modules for PHP 5.2" + exit 1 + fi + fi + fi + fi +fi +if ! PHP53_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '53-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP53_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '53-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP53_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '53-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP53_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '53-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP53_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '53-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + >&2 echo "Failed to retrieve modules for PHP 5.3" + exit 1 + fi + fi + fi + fi +fi +if ! PHP54_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '54-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP54_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '54-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP54_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '54-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP54_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '54-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP54_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '54-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + >&2 echo "Failed to retrieve modules for PHP 5.4" + exit 1 + fi + fi + fi + fi +fi +if ! PHP55_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '55-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP55_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '55-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP55_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '55-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP55_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '55-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP55_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '55-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + >&2 echo "Failed to retrieve modules for PHP 5.5" + exit 1 + fi + fi + fi + fi +fi +if ! PHP56_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '56-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP56_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '56-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP56_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '56-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP56_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '56-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP56_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '56-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + >&2 echo "Failed to retrieve modules for PHP 5.6" + exit 1 + fi + fi + fi + fi +fi +if ! PHP70_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '70-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP70_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '70-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP70_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '70-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP70_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '70-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP70_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '70-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + >&2 echo "Failed to retrieve modules for PHP 7.0" + exit 1 + fi + fi + fi + fi +fi +if ! PHP71_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '71-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP71_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '71-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP71_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '71-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP71_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '71-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP71_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '71-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + >&2 echo "Failed to retrieve modules for PHP 7.1" + exit 1 + fi + fi + fi + fi +fi +if ! PHP72_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '72-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP72_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '72-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP72_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '72-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP72_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '72-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP72_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '72-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + >&2 echo "Failed to retrieve modules for PHP 7.2" + exit 1 + fi + fi + fi + fi +fi +if ! PHP73_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '73-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP73_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '73-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP73_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '73-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP73_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '73-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP73_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '73-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + >&2 echo "Failed to retrieve modules for PHP 7.3" + exit 1 + fi + fi + fi + fi +fi +if ! PHP74_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '74-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP74_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '74-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP74_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '74-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP74_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '74-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + sleep 5; + if ! PHP74_MODS="$( curl -sS https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md | tac | tac | grep -E '74-mods' | sed -e 's/.*">//g' -e 's/<.*//g' )"; then + >&2 echo "Failed to retrieve modules for PHP 7.4" + exit 1 + fi + fi + fi + fi +fi + + +### +### Todo: add ioncube +### +MODS="$( echo "${PHP52_MODS}, ${PHP53_MODS}, ${PHP54_MODS}, ${PHP55_MODS}, ${PHP56_MODS}, ${PHP70_MODS}, ${PHP71_MODS}, ${PHP72_MODS}, ${PHP73_MODS}, ${PHP74_MODS}" | sed 's/,/\n/g' | sed -e 's/^\s*//g' -e 's/\s*$//g' | sort -u )" + + +### +### Get disabled modules +### +DISABLED=",ioncube,$( grep -E '^PHP_MODULES_DISABLE=' "${SCRIPTPATH}/../env-example" | sed 's/.*=//g' )," +#echo $DISABLED +B="βœ”" # Enabled base modules (cannot be disabled) +E="πŸ—Έ" # Enabled mods modules (can be disabled) +D="d" # Disabled modules (can be enabled) +U=" " # Unavailable echo "| Modules | PHP 5.2 | PHP 5.3 | PHP 5.4 | PHP 5.5 | PHP 5.6 | PHP 7.0 | PHP 7.1 | PHP 7.2 | PHP 7.3 | PHP 7.4 |" echo "|----------------|---------|---------|---------|---------|---------|---------|---------|---------|---------|---------|" -echo "${ALL}" | while read line; do +echo "${MODS}" | while read line; do printf "| %-15s%s" "${line}" "|" - if echo ",${PHP52}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then - printf " %s |" "${Y}" + # ---------- PHP 5.2 ----------# + if echo ",${PHP52_MODS}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then + if echo "${DISABLED}" | grep -Eq ",${line},"; then + printf " %s |" "${D}" # Currently disabled + else + if echo ",${PHP52_BASE}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then + printf " %s |" "${B}" # Enabled, but cannot be disabled + else + printf " %s |" "${E}" # Enabled, can be disabled + fi + fi else - printf " |" + printf " %s |" "${U}" # Not available fi - if echo ",${PHP53}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then - printf " %s |" "${Y}" + + # ---------- PHP 5.3 ----------# + if echo ",${PHP53_MODS}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then + if echo "${DISABLED}" | grep -Eq ",${line},"; then + printf " %s |" "${D}" # Currently disabled + else + if echo ",${PHP53_BASE}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then + printf " %s |" "${B}" # Enabled, but cannot be disabled + else + printf " %s |" "${E}" # Enabled, can be disabled + fi + fi else - printf " |" + printf " %s |" "${U}" # Not available fi - if echo ",${PHP54}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then - printf " %s |" "${Y}" + + # ---------- PHP 5.4 ----------# + if echo ",${PHP54_MODS}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then + if echo "${DISABLED}" | grep -Eq ",${line},"; then + printf " %s |" "${D}" # Currently disabled + else + if echo ",${PHP54_BASE}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then + printf " %s |" "${B}" # Enabled, but cannot be disabled + else + printf " %s |" "${E}" # Enabled, can be disabled + fi + fi else - printf " |" + printf " %s |" "${U}" # Not available fi - if echo ",${PHP55}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then - printf " %s |" "${Y}" + + # ---------- PHP 5.5 ----------# + if echo ",${PHP55_MODS}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then + if echo "${DISABLED}" | grep -Eq ",${line},"; then + printf " %s |" "${D}" # Currently disabled + else + if echo ",${PHP55_BASE}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then + printf " %s |" "${B}" # Enabled, but cannot be disabled + else + printf " %s |" "${E}" # Enabled, can be disabled + fi + fi else - printf " |" + printf " %s |" "${U}" # Not available fi - if echo ",${PHP56}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then - printf " %s |" "${Y}" + + # ---------- PHP 5.6 ----------# + if echo ",${PHP56_MODS}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then + if echo "${DISABLED}" | grep -Eq ",${line},"; then + printf " %s |" "${D}" # Currently disabled + else + if echo ",${PHP56_BASE}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then + printf " %s |" "${B}" # Enabled, but cannot be disabled + else + printf " %s |" "${E}" # Enabled, can be disabled + fi + fi else - printf " |" + printf " %s |" "${U}" # Not available fi - if echo ",${PHP70}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then - printf " %s |" "${Y}" + + # ---------- PHP 7.0 ----------# + if echo ",${PHP70_MODS}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then + if echo "${DISABLED}" | grep -Eq ",${line},"; then + printf " %s |" "${D}" # Currently disabled + else + if echo ",${PHP70_BASE}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then + printf " %s |" "${B}" # Enabled, but cannot be disabled + else + printf " %s |" "${E}" # Enabled, can be disabled + fi + fi else - printf " |" + printf " %s |" "${U}" # Not available fi - if echo ",${PHP71}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then - printf " %s |" "${Y}" + + # ---------- PHP 7.1 ----------# + if echo ",${PHP71_MODS}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then + if echo "${DISABLED}" | grep -Eq ",${line},"; then + printf " %s |" "${D}" # Currently disabled + else + if echo ",${PHP71_BASE}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then + printf " %s |" "${B}" # Enabled, but cannot be disabled + else + printf " %s |" "${E}" # Enabled, can be disabled + fi + fi else - printf " |" + printf " %s |" "${U}" # Not available fi - if echo ",${PHP72}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then - printf " %s |" "${Y}" + + # ---------- PHP 7.2 ----------# + if echo ",${PHP72_MODS}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then + if echo "${DISABLED}" | grep -Eq ",${line},"; then + printf " %s |" "${D}" # Currently disabled + else + if echo ",${PHP72_BASE}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then + printf " %s |" "${B}" # Enabled, but cannot be disabled + else + printf " %s |" "${E}" # Enabled, can be disabled + fi + fi else - printf " |" + printf " %s |" "${U}" # Not available fi - if echo ",${PHP73}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then - printf " %s |" "${Y}" + + # ---------- PHP 7.3 ----------# + if echo ",${PHP73_MODS}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then + if echo "${DISABLED}" | grep -Eq ",${line},"; then + printf " %s |" "${D}" # Currently disabled + else + if echo ",${PHP73_BASE}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then + printf " %s |" "${B}" # Enabled, but cannot be disabled + else + printf " %s |" "${E}" # Enabled, can be disabled + fi + fi else - printf " |" + printf " %s |" "${U}" # Not available fi - if echo ",${PHP74}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then - printf " %s |" "${Y}" + + # ---------- PHP 7.4 ----------# + if echo ",${PHP74_MODS}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then + if echo "${DISABLED}" | grep -Eq ",${line},"; then + printf " %s |" "${D}" # Currently disabled + else + if echo ",${PHP74_BASE}," | sed 's/,\s/,/g' | grep -Eq ",${line},"; then + printf " %s |" "${B}" # Enabled, but cannot be disabled + else + printf " %s |" "${E}" # Enabled, can be disabled + fi + fi else - printf " |" + printf " %s |" "${U}" # Not available fi printf "\n" From de44f235948501a412ac43eb9e19f552d114b296 Mon Sep 17 00:00:00 2001 From: cytopia Date: Fri, 28 Dec 2018 22:45:54 +0100 Subject: [PATCH 04/24] Add phpPgAdmin to README --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 894099c0..bae70b9f 100644 --- a/README.md +++ b/README.md @@ -460,6 +460,7 @@ The following batteries are available in the Devilbox intranet by default: Adminer phpMyAdmin + phpPgAdmin phpRedMin OpCacheGUI Mail viewer @@ -467,6 +468,7 @@ The following batteries are available in the Devilbox intranet by default: Adminer phpMyAdmin + phpPgAdmin phpRedMin OpCache GUI Mail viewer @@ -734,6 +736,7 @@ The Devilbox comes with a pre-configured intranet on `http://localhost` and `htt * **Info pages** (Httpd, MySQL, PgSQL, Redis, Memcache, ...) * **[Adminer](https://www.adminer.org)** * **[phpMyAdmin](https://www.phpmyadmin.net)** +* **[phpPgAdmin](http://phppgadmin.sourceforge.net)** * **[phpRedMin](https://github.com/sasanrose/phpredmin)** * **[OpcacheGUI](https://github.com/PeeHaa/OpCacheGUI)** From a96da648302d049d47866a5271eafffdd4ae7e14 Mon Sep 17 00:00:00 2001 From: cytopia Date: Fri, 28 Dec 2018 22:47:35 +0100 Subject: [PATCH 05/24] Distinguish between base, mods and available php extensions --- README.md | 190 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 99 insertions(+), 91 deletions(-) diff --git a/README.md b/README.md index bae70b9f..5953fa13 100644 --- a/README.md +++ b/README.md @@ -582,102 +582,110 @@ Well-known and popular tools will be at your service as well: The Devilbox is a development stack, so it is made sure that a lot of PHP modules are available out of the box in order to work with many different frameworks. +> * Core enabled (cannot be disabled): **βœ”** +> * Enabled (can be disabled): πŸ—Έ +> * Available, but disabled (can be enabled): **d** + | Modules | PHP 5.2 | PHP 5.3 | PHP 5.4 | PHP 5.5 | PHP 5.6 | PHP 7.0 | PHP 7.1 | PHP 7.2 | PHP 7.3 | PHP 7.4 | |----------------|---------|---------|---------|---------|---------|---------|---------|---------|---------|---------| -| amqp | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | | | -| apc | | βœ“ | βœ“ | βœ“ | βœ“ | | | | | | -| apcu | | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | | -| bcmath | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| bz2 | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| calendar | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| Core | | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| ctype | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| curl | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| date | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| dba | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| dom | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| enchant | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| ereg | | βœ“ | βœ“ | βœ“ | βœ“ | | | | | | -| exif | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| fileinfo | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| filter | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| ftp | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| gd | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| gettext | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| gmp | | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| hash | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| iconv | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| igbinary | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| imagick | | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | | -| imap | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| interbase | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| intl | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| json | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| ldap | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| libxml | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| mbstring | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| mcrypt | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | | | -| memcache | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | | | -| memcached | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| mhash | | | | | βœ“ | | | | | | -| mongo | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | | | | | | -| mongodb | | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| msgpack | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | | | -| mysql | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | | | | | | -| mysqli | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| mysqlnd | | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| openssl | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| pcntl | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| pcre | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| PDO | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| pdo_dblib | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| PDO_Firebird | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| pdo_mysql | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| pdo_pgsql | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| pdo_sqlite | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| pdo_sqlsrv | | | | | | βœ“ | βœ“ | βœ“ | βœ“ | | -| pgsql | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| phalcon | | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | | | -| Phar | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| posix | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| pspell | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | | | | βœ“ | βœ“ | -| rdkafka | | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| readline | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| recode | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| redis | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| Reflection | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| session | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| shmop | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| SimpleXML | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| snmp | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| soap | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| sockets | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| sodium | | | | | | | | βœ“ | βœ“ | βœ“ | -| SPL | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| SQLite | βœ“ | βœ“ | | | | | | | | | -| sqlite3 | | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| sqlsrv | | | | | | βœ“ | βœ“ | βœ“ | βœ“ | | -| standard | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| swoole | | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| sysvmsg | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| sysvsem | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| sysvshm | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| tidy | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| tokenizer | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| uploadprogress | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| wddx | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| xdebug | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | | -| xml | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| xmlreader | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| xmlrpc | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| xmlwriter | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| xsl | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| Zend OPcache | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| zip | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | -| zlib | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | +| amqp | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | | | +| apc | | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | | | | | | +| apcu | | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | | +| bcmath | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| bz2 | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| calendar | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| Core | | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| ctype | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| curl | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| date | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| dba | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| dom | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| enchant | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| ereg | | βœ” | βœ” | βœ” | βœ” | | | | | | +| exif | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| fileinfo | πŸ—Έ | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| filter | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| ftp | πŸ—Έ | πŸ—Έ | πŸ—Έ | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| gd | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| gettext | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| gmp | | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| hash | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| iconv | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| igbinary | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| imagick | | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | | +| imap | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| interbase | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| intl | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| json | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| ldap | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| libxml | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| mbstring | βœ” | πŸ—Έ | πŸ—Έ | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| mcrypt | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | | | +| memcache | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | | | +| memcached | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| mhash | | | | | βœ” | | | | | | +| mongo | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | | | | | | +| mongodb | | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| msgpack | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | | | +| mysql | βœ” | βœ” | πŸ—Έ | πŸ—Έ | πŸ—Έ | | | | | | +| mysqli | βœ” | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| mysqlnd | | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| openssl | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| pcntl | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| pcre | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| PDO | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| pdo_dblib | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| PDO_Firebird | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| pdo_mysql | βœ” | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| pdo_pgsql | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| pdo_sqlite | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| pdo_sqlsrv | | | | | | d | d | d | d | | +| pgsql | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| phalcon | | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | | | +| Phar | πŸ—Έ | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| posix | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| pspell | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | | | | πŸ—Έ | πŸ—Έ | +| rdkafka | | d | d | d | d | d | d | d | d | d | +| readline | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| recode | πŸ—Έ | βœ” | βœ” | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| redis | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| Reflection | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| session | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| shmop | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| SimpleXML | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| snmp | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| soap | βœ” | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| sockets | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| sodium | | | | | | | | βœ” | βœ” | βœ” | +| SPL | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| SQLite | βœ” | βœ” | | | | | | | | | +| sqlite3 | | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| sqlsrv | | | | | | d | d | d | d | | +| standard | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| swoole | | d | d | d | d | d | d | d | d | d | +| sysvmsg | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| sysvsem | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| sysvshm | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| tidy | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| tokenizer | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| uploadprogress | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| wddx | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| xdebug | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | | +| xml | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| xmlreader | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| xmlrpc | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| xmlwriter | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +| xsl | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| Zend OPcache | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| zip | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| zlib | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | +> * Core enabled (cannot be disabled): **βœ”** +> * Enabled (can be disabled): πŸ—Έ +> * Available, but disabled (can be enabled): **d** + PHP modules can be enabled or disabled on demand to reflect the state of your target environment. > **Documentation:** From 15e72edb5fac7743f2293ba2ed9821b9e9a8b34d Mon Sep 17 00:00:00 2001 From: cytopia Date: Fri, 28 Dec 2018 22:49:51 +0100 Subject: [PATCH 06/24] Use PHP-FPM 0.64 images --- README.md | 7 ++++--- docker-compose.yml | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 5953fa13..374f84e4 100644 --- a/README.md +++ b/README.md @@ -617,6 +617,7 @@ The Devilbox is a development stack, so it is made sure that a lot of PHP module | imap | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | | interbase | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | | intl | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | +| ioncube | d | d | d | d | d | d | d | d | | | | json | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | | ldap | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | | libxml | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | @@ -627,7 +628,7 @@ The Devilbox is a development stack, so it is made sure that a lot of PHP module | mhash | | | | | βœ” | | | | | | | mongo | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | | | | | | | mongodb | | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | -| msgpack | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | | | +| msgpack | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | | | mysql | βœ” | βœ” | πŸ—Έ | πŸ—Έ | πŸ—Έ | | | | | | | mysqli | βœ” | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | | mysqlnd | | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | @@ -642,10 +643,10 @@ The Devilbox is a development stack, so it is made sure that a lot of PHP module | pdo_sqlite | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | | pdo_sqlsrv | | | | | | d | d | d | d | | | pgsql | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | -| phalcon | | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | | | +| phalcon | | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | | | Phar | πŸ—Έ | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | | posix | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | -| pspell | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | | | | πŸ—Έ | πŸ—Έ | +| pspell | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | | rdkafka | | d | d | d | d | d | d | d | d | d | | readline | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | βœ” | | recode | πŸ—Έ | βœ” | βœ” | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | πŸ—Έ | diff --git a/docker-compose.yml b/docker-compose.yml index a4635bc6..ef1dd0ca 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -95,7 +95,7 @@ services: # PHP / HHVM # ------------------------------------------------------------ php: - image: devilbox/php-fpm:${PHP_SERVER}-work-0.61 + image: devilbox/php-fpm:${PHP_SERVER}-work-0.64 ## ## All .env variables From 1ffaf4ce925a86912c9648cc2af652b9e1543600 Mon Sep 17 00:00:00 2001 From: cytopia Date: Fri, 28 Dec 2018 22:50:18 +0100 Subject: [PATCH 07/24] Bump version date --- .devilbox/www/config.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devilbox/www/config.php b/.devilbox/www/config.php index 218c1610..d8e6132c 100644 --- a/.devilbox/www/config.php +++ b/.devilbox/www/config.php @@ -14,7 +14,7 @@ putenv('RES_OPTIONS=retrans:1 retry:1 timeout:1 attempts:1'); $DEVILBOX_VERSION = 'v0.15'; -$DEVILBOX_DATE = '2018-12-26'; +$DEVILBOX_DATE = '2018-12-29'; $DEVILBOX_API_PAGE = 'devilbox-api/status.json'; // From 3e4517ec4225b309eeae2ad3f563f39878eabb11 Mon Sep 17 00:00:00 2001 From: cytopia Date: Fri, 28 Dec 2018 23:33:54 +0100 Subject: [PATCH 08/24] Fix phppgadmin test on failure --- .tests/intra-tests/vendor-phppgadmin.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.tests/intra-tests/vendor-phppgadmin.sh b/.tests/intra-tests/vendor-phppgadmin.sh index 49c63fbe..1aef6e3a 100755 --- a/.tests/intra-tests/vendor-phppgadmin.sh +++ b/.tests/intra-tests/vendor-phppgadmin.sh @@ -93,9 +93,9 @@ if ! curl -sS localhost${URL}intro.php | tac | tac | grep -Eiq "welcome to phpPg # 3rd Try sleep 1 if ! curl -sS localhost${URL}intro.php | tac | tac | grep -Eiq "welcome to phpPgAdmin"; then - printf "\r[FAIL] Fetch ${URL}\n" - curl -sS localhost/${URL}into.php || true - curl -sSI localhost/${URL}into.php || true + printf "\r[FAIL] Fetch ${URL}intro.php\n" + curl -sS localhost/${URL}intro.php || true + curl -sSI localhost/${URL}intro.php || true exit 1 else printf "\r[OK] Fetch ${URL}intro.php (3 rounds)\n" From a1b1d9ad933fcdc80a87178a983c1acf64d7e3a8 Mon Sep 17 00:00:00 2001 From: cytopia Date: Fri, 28 Dec 2018 23:49:25 +0100 Subject: [PATCH 09/24] Provide phpPgAdmin default configuration --- .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/conf/.gitignore | 1 - .../conf/{config.inc.php-dist => config.inc.php} | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) delete mode 100644 .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/conf/.gitignore rename .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/conf/{config.inc.php-dist => config.inc.php} (98%) diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/conf/.gitignore b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/conf/.gitignore deleted file mode 100644 index 7e9e3afe..00000000 --- a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/conf/.gitignore +++ /dev/null @@ -1 +0,0 @@ -config.inc.php diff --git a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/conf/config.inc.php-dist b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/conf/config.inc.php similarity index 98% rename from .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/conf/config.inc.php-dist rename to .devilbox/www/htdocs/vendor/phppgadmin-5.6.0/conf/config.inc.php index ba927d40..e718751f 100644 --- a/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/conf/config.inc.php-dist +++ b/.devilbox/www/htdocs/vendor/phppgadmin-5.6.0/conf/config.inc.php @@ -15,7 +15,7 @@ // Hostname or IP address for server. Use '' for UNIX domain socket. // use 'localhost' for TCP/IP connection on this computer - $conf['servers'][0]['host'] = ''; + $conf['servers'][0]['host'] = 'pgsql'; // Database port on server (5432 is the PostgreSQL default) $conf['servers'][0]['port'] = 5432; @@ -102,7 +102,7 @@ // will be denied. Only set this false once you have read the FAQ and // understand how to change PostgreSQL's pg_hba.conf to enable // passworded local connections. - $conf['extra_login_security'] = true; + $conf['extra_login_security'] = false; // Only show owned databases? // Note: This will simply hide other databases in the list - this does From f2b0773fb55b4fb68ae8c1a918343c1cc53f6b50 Mon Sep 17 00:00:00 2001 From: cytopia Date: Fri, 28 Dec 2018 23:56:14 +0100 Subject: [PATCH 10/24] Clean-up docker-compose.yml --- docker-compose.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index ef1dd0ca..1d1ae42c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -35,6 +35,7 @@ services: # ------------------------------------------------------------ bind: image: cytopia/bind:0.15 + hostname: bind restart: always ports: # [local-machine:]local-port:docker-port @@ -85,17 +86,17 @@ services: docker.for.lin.host.internal: 172.16.238.1 docker.for.lin.localhost: 172.16.238.1 - hostname: bind networks: app_net: ipv4_address: 172.16.238.100 # ------------------------------------------------------------ - # PHP / HHVM + # PHP # ------------------------------------------------------------ php: image: devilbox/php-fpm:${PHP_SERVER}-work-0.64 + hostname: php ## ## All .env variables @@ -156,7 +157,6 @@ services: docker.for.lin.host.internal: 172.16.238.1 docker.for.lin.localhost: 172.16.238.1 - hostname: php networks: app_net: ipv4_address: 172.16.238.10 @@ -210,6 +210,7 @@ services: # ------------------------------------------------------------ httpd: image: devilbox/${HTTPD_SERVER}:0.24 + hostname: httpd environment: @@ -266,7 +267,6 @@ services: - "${LOCAL_LISTEN_ADDR}${HOST_PORT_HTTPD}:80" - "${LOCAL_LISTEN_ADDR}${HOST_PORT_HTTPD_SSL}:443" - hostname: httpd networks: app_net: ipv4_address: 172.16.238.11 @@ -303,6 +303,7 @@ services: # ------------------------------------------------------------ mysql: image: cytopia/${MYSQL_SERVER}:latest + hostname: mysql environment: @@ -335,7 +336,6 @@ services: # [local-machine:]local-port:docker-port - "${LOCAL_LISTEN_ADDR}${HOST_PORT_MYSQL}:3306" - hostname: mysql networks: app_net: ipv4_address: 172.16.238.12 @@ -368,6 +368,7 @@ services: # ------------------------------------------------------------ pgsql: image: postgres:${PGSQL_SERVER} + hostname: pgsql environment: @@ -379,7 +380,6 @@ services: # [local-machine:]local-port:docker-port - "${LOCAL_LISTEN_ADDR}${HOST_PORT_PGSQL}:5432" - hostname: pgsql networks: app_net: ipv4_address: 172.16.238.13 @@ -405,6 +405,7 @@ services: # ------------------------------------------------------------ redis: image: redis:${REDIS_SERVER} + hostname: redis # Apply custom arguments to redis startup command: redis-server ${REDIS_ARGS:- } @@ -415,7 +416,6 @@ services: # [local-machine:]local-port:docker-port - "${LOCAL_LISTEN_ADDR}${HOST_PORT_REDIS}:6379" - hostname: redis networks: app_net: ipv4_address: 172.16.238.14 @@ -438,12 +438,12 @@ services: # ------------------------------------------------------------ memcd: image: memcached:${MEMCD_SERVER} + hostname: memcd ports: # [local-machine:]local-port:docker-port - "${LOCAL_LISTEN_ADDR}${HOST_PORT_MEMCD}:11211" - hostname: memcd networks: app_net: ipv4_address: 172.16.238.15 @@ -466,12 +466,12 @@ services: # ------------------------------------------------------------ mongo: image: mongo:${MONGO_SERVER} + hostname: mongo ports: # [local-machine:]local-port:docker-port - "${LOCAL_LISTEN_ADDR}${HOST_PORT_MONGO}:27017" - hostname: mongo networks: app_net: ipv4_address: 172.16.238.16 From ccd3f1dbc2448dbcebc40df5129da6343317d36e Mon Sep 17 00:00:00 2001 From: cytopia Date: Sat, 29 Dec 2018 00:19:54 +0100 Subject: [PATCH 11/24] Enable new autostart behaviour: per version and for all --- .gitignore | 1 + .../{startup.sh => startup.1.sh} | 2 +- .tests/startup-tests/startup.2.sh | 38 +++++++++++++++++++ autostart/README.md | 29 ++++++++++++++ cfg/php-startup-5.2/README.md | 18 ++++++++- cfg/php-startup-5.3/README.md | 18 ++++++++- cfg/php-startup-5.4/README.md | 18 ++++++++- cfg/php-startup-5.5/README.md | 18 ++++++++- cfg/php-startup-5.6/README.md | 18 ++++++++- cfg/php-startup-7.0/README.md | 18 ++++++++- cfg/php-startup-7.1/README.md | 18 ++++++++- cfg/php-startup-7.2/README.md | 18 ++++++++- cfg/php-startup-7.3/README.md | 18 ++++++++- cfg/php-startup-7.4/README.md | 18 ++++++++- docker-compose.yml | 3 +- 15 files changed, 241 insertions(+), 12 deletions(-) rename .tests/startup-tests/{startup.sh => startup.1.sh} (94%) create mode 100755 .tests/startup-tests/startup.2.sh create mode 100644 autostart/README.md diff --git a/.gitignore b/.gitignore index 2d84d7da..394829c0 100644 --- a/.gitignore +++ b/.gitignore @@ -83,6 +83,7 @@ /cfg/php-fpm-7.4/*.conf # Ignore custom PHP-FPM startup scripts +/autostart/*.sh /cfg/php-startup-5.2/*.sh /cfg/php-startup-5.3/*.sh /cfg/php-startup-5.4/*.sh diff --git a/.tests/startup-tests/startup.sh b/.tests/startup-tests/startup.1.sh similarity index 94% rename from .tests/startup-tests/startup.sh rename to .tests/startup-tests/startup.1.sh index 7802fc0b..39be298c 100755 --- a/.tests/startup-tests/startup.sh +++ b/.tests/startup-tests/startup.1.sh @@ -9,7 +9,7 @@ COMPOSEPATH="${SCRIPTPATH}/../../" CONTAINER="$( cd "${COMPOSEPATH}" && docker-compose ps -q php )" #FILES="$()" -cd "${COMPOSEPATH}" && docker-compose exec -T php bash -c "find /startup.d/*.sh-example -type f -print0 2>/dev/null" \ +cd "${COMPOSEPATH}" && docker-compose exec -T php bash -c "find /startup.1.d/*.sh-example -type f -print0 2>/dev/null" \ | xargs -0 -n 1 echo \ | while read f; do diff --git a/.tests/startup-tests/startup.2.sh b/.tests/startup-tests/startup.2.sh new file mode 100755 index 00000000..9d127025 --- /dev/null +++ b/.tests/startup-tests/startup.2.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash + +set -e +set -u +set -o pipefail + +SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )" +COMPOSEPATH="${SCRIPTPATH}/../../" +CONTAINER="$( cd "${COMPOSEPATH}" && docker-compose ps -q php )" + +#FILES="$()" +cd "${COMPOSEPATH}" && docker-compose exec -T php bash -c "find /startup.2.d/*.sh-example -type f -print0 2>/dev/null" \ + | xargs -0 -n 1 echo \ + | while read f; do + + echo "# ----------------------------------------------------------------------------------------" + echo "# [TEST] ${f}" + echo "# ----------------------------------------------------------------------------------------" + if ! docker exec -t ${CONTAINER} bash "${f}" "ACCEPT_EULA=1"; then + sleep 5 + if ! docker exec -t ${CONTAINER} bash "${f}" "ACCEPT_EULA=1"; then + sleep 5 + if ! docker exec -t ${CONTAINER} bash "${f}" "ACCEPT_EULA=1"; then + sleep 5 + if ! docker exec -t ${CONTAINER} bash "${f}" "ACCEPT_EULA=1"; then + sleep 5 + if ! docker exec -t ${CONTAINER} bash "${f}" "ACCEPT_EULA=1"; then + echo "[FAIl] ${f}" + exit 1 + fi + fi + fi + fi + fi + echo "[OK] ${f}" + echo + echo +done diff --git a/autostart/README.md b/autostart/README.md new file mode 100644 index 00000000..3e37fc0f --- /dev/null +++ b/autostart/README.md @@ -0,0 +1,29 @@ +# Custom startup scripts (global) + +Any script inside this directory ending by `.sh` will be executed during the PHP container startup. +This is useful to apply your custom settings such as installing software that usually requires +the user to accept a license or similar. + +A few examples are given that do not end by `.sh` which won't be run. If you want to use the +provided examples, copy them to a file ending by `.sh` + + +## Info + +If you want to autostart NodeJS applications, you can use [pm2](https://github.com/Unitech/pm2). +Ensure you do this as user `devilbox`, as by default everything is run by root. + +```bash +su -c 'cd /shared/httpd/node/node; pm2 start index.js' -l devilbox +``` + + +## Note + +This directory will startup commands for all PHP versions. If you want to selectively run commands +for a specific version, go to `cfg/php-startup-X.Y/`. + + +## Important + +All provided scripts will be executed with **root** permissions. diff --git a/cfg/php-startup-5.2/README.md b/cfg/php-startup-5.2/README.md index d75100ab..e212252e 100644 --- a/cfg/php-startup-5.2/README.md +++ b/cfg/php-startup-5.2/README.md @@ -1,4 +1,4 @@ -# Custom startup scripts +# Custom startup scripts (per PHP version) Any script inside this directory ending by `.sh` will be executed during the PHP container startup. This is useful to apply your custom settings such as installing software that usually requires @@ -8,6 +8,22 @@ A few examples are given that do not end by `.sh` which won't be run. If you wan provided examples, copy them to a file ending by `.sh` +## Info + +If you want to autostart NodeJS applications, you can use [pm2](https://github.com/Unitech/pm2). +Ensure you do this as user `devilbox`, as by default everything is run by root. + +```bash +su -c 'cd /shared/httpd/node/node; pm2 start index.js' -l devilbox +``` + + +## Note + +This directory will startup commands only for a specific PHP version. If you want to run commands +for all versions , go to `autostart/` in the root of the Devilbox git directory. + + ## Important All provided scripts will be executed with **root** permissions. diff --git a/cfg/php-startup-5.3/README.md b/cfg/php-startup-5.3/README.md index d75100ab..e212252e 100644 --- a/cfg/php-startup-5.3/README.md +++ b/cfg/php-startup-5.3/README.md @@ -1,4 +1,4 @@ -# Custom startup scripts +# Custom startup scripts (per PHP version) Any script inside this directory ending by `.sh` will be executed during the PHP container startup. This is useful to apply your custom settings such as installing software that usually requires @@ -8,6 +8,22 @@ A few examples are given that do not end by `.sh` which won't be run. If you wan provided examples, copy them to a file ending by `.sh` +## Info + +If you want to autostart NodeJS applications, you can use [pm2](https://github.com/Unitech/pm2). +Ensure you do this as user `devilbox`, as by default everything is run by root. + +```bash +su -c 'cd /shared/httpd/node/node; pm2 start index.js' -l devilbox +``` + + +## Note + +This directory will startup commands only for a specific PHP version. If you want to run commands +for all versions , go to `autostart/` in the root of the Devilbox git directory. + + ## Important All provided scripts will be executed with **root** permissions. diff --git a/cfg/php-startup-5.4/README.md b/cfg/php-startup-5.4/README.md index d75100ab..e212252e 100644 --- a/cfg/php-startup-5.4/README.md +++ b/cfg/php-startup-5.4/README.md @@ -1,4 +1,4 @@ -# Custom startup scripts +# Custom startup scripts (per PHP version) Any script inside this directory ending by `.sh` will be executed during the PHP container startup. This is useful to apply your custom settings such as installing software that usually requires @@ -8,6 +8,22 @@ A few examples are given that do not end by `.sh` which won't be run. If you wan provided examples, copy them to a file ending by `.sh` +## Info + +If you want to autostart NodeJS applications, you can use [pm2](https://github.com/Unitech/pm2). +Ensure you do this as user `devilbox`, as by default everything is run by root. + +```bash +su -c 'cd /shared/httpd/node/node; pm2 start index.js' -l devilbox +``` + + +## Note + +This directory will startup commands only for a specific PHP version. If you want to run commands +for all versions , go to `autostart/` in the root of the Devilbox git directory. + + ## Important All provided scripts will be executed with **root** permissions. diff --git a/cfg/php-startup-5.5/README.md b/cfg/php-startup-5.5/README.md index d75100ab..e212252e 100644 --- a/cfg/php-startup-5.5/README.md +++ b/cfg/php-startup-5.5/README.md @@ -1,4 +1,4 @@ -# Custom startup scripts +# Custom startup scripts (per PHP version) Any script inside this directory ending by `.sh` will be executed during the PHP container startup. This is useful to apply your custom settings such as installing software that usually requires @@ -8,6 +8,22 @@ A few examples are given that do not end by `.sh` which won't be run. If you wan provided examples, copy them to a file ending by `.sh` +## Info + +If you want to autostart NodeJS applications, you can use [pm2](https://github.com/Unitech/pm2). +Ensure you do this as user `devilbox`, as by default everything is run by root. + +```bash +su -c 'cd /shared/httpd/node/node; pm2 start index.js' -l devilbox +``` + + +## Note + +This directory will startup commands only for a specific PHP version. If you want to run commands +for all versions , go to `autostart/` in the root of the Devilbox git directory. + + ## Important All provided scripts will be executed with **root** permissions. diff --git a/cfg/php-startup-5.6/README.md b/cfg/php-startup-5.6/README.md index d75100ab..e212252e 100644 --- a/cfg/php-startup-5.6/README.md +++ b/cfg/php-startup-5.6/README.md @@ -1,4 +1,4 @@ -# Custom startup scripts +# Custom startup scripts (per PHP version) Any script inside this directory ending by `.sh` will be executed during the PHP container startup. This is useful to apply your custom settings such as installing software that usually requires @@ -8,6 +8,22 @@ A few examples are given that do not end by `.sh` which won't be run. If you wan provided examples, copy them to a file ending by `.sh` +## Info + +If you want to autostart NodeJS applications, you can use [pm2](https://github.com/Unitech/pm2). +Ensure you do this as user `devilbox`, as by default everything is run by root. + +```bash +su -c 'cd /shared/httpd/node/node; pm2 start index.js' -l devilbox +``` + + +## Note + +This directory will startup commands only for a specific PHP version. If you want to run commands +for all versions , go to `autostart/` in the root of the Devilbox git directory. + + ## Important All provided scripts will be executed with **root** permissions. diff --git a/cfg/php-startup-7.0/README.md b/cfg/php-startup-7.0/README.md index d75100ab..e212252e 100644 --- a/cfg/php-startup-7.0/README.md +++ b/cfg/php-startup-7.0/README.md @@ -1,4 +1,4 @@ -# Custom startup scripts +# Custom startup scripts (per PHP version) Any script inside this directory ending by `.sh` will be executed during the PHP container startup. This is useful to apply your custom settings such as installing software that usually requires @@ -8,6 +8,22 @@ A few examples are given that do not end by `.sh` which won't be run. If you wan provided examples, copy them to a file ending by `.sh` +## Info + +If you want to autostart NodeJS applications, you can use [pm2](https://github.com/Unitech/pm2). +Ensure you do this as user `devilbox`, as by default everything is run by root. + +```bash +su -c 'cd /shared/httpd/node/node; pm2 start index.js' -l devilbox +``` + + +## Note + +This directory will startup commands only for a specific PHP version. If you want to run commands +for all versions , go to `autostart/` in the root of the Devilbox git directory. + + ## Important All provided scripts will be executed with **root** permissions. diff --git a/cfg/php-startup-7.1/README.md b/cfg/php-startup-7.1/README.md index d75100ab..e212252e 100644 --- a/cfg/php-startup-7.1/README.md +++ b/cfg/php-startup-7.1/README.md @@ -1,4 +1,4 @@ -# Custom startup scripts +# Custom startup scripts (per PHP version) Any script inside this directory ending by `.sh` will be executed during the PHP container startup. This is useful to apply your custom settings such as installing software that usually requires @@ -8,6 +8,22 @@ A few examples are given that do not end by `.sh` which won't be run. If you wan provided examples, copy them to a file ending by `.sh` +## Info + +If you want to autostart NodeJS applications, you can use [pm2](https://github.com/Unitech/pm2). +Ensure you do this as user `devilbox`, as by default everything is run by root. + +```bash +su -c 'cd /shared/httpd/node/node; pm2 start index.js' -l devilbox +``` + + +## Note + +This directory will startup commands only for a specific PHP version. If you want to run commands +for all versions , go to `autostart/` in the root of the Devilbox git directory. + + ## Important All provided scripts will be executed with **root** permissions. diff --git a/cfg/php-startup-7.2/README.md b/cfg/php-startup-7.2/README.md index d75100ab..e212252e 100644 --- a/cfg/php-startup-7.2/README.md +++ b/cfg/php-startup-7.2/README.md @@ -1,4 +1,4 @@ -# Custom startup scripts +# Custom startup scripts (per PHP version) Any script inside this directory ending by `.sh` will be executed during the PHP container startup. This is useful to apply your custom settings such as installing software that usually requires @@ -8,6 +8,22 @@ A few examples are given that do not end by `.sh` which won't be run. If you wan provided examples, copy them to a file ending by `.sh` +## Info + +If you want to autostart NodeJS applications, you can use [pm2](https://github.com/Unitech/pm2). +Ensure you do this as user `devilbox`, as by default everything is run by root. + +```bash +su -c 'cd /shared/httpd/node/node; pm2 start index.js' -l devilbox +``` + + +## Note + +This directory will startup commands only for a specific PHP version. If you want to run commands +for all versions , go to `autostart/` in the root of the Devilbox git directory. + + ## Important All provided scripts will be executed with **root** permissions. diff --git a/cfg/php-startup-7.3/README.md b/cfg/php-startup-7.3/README.md index d75100ab..e212252e 100644 --- a/cfg/php-startup-7.3/README.md +++ b/cfg/php-startup-7.3/README.md @@ -1,4 +1,4 @@ -# Custom startup scripts +# Custom startup scripts (per PHP version) Any script inside this directory ending by `.sh` will be executed during the PHP container startup. This is useful to apply your custom settings such as installing software that usually requires @@ -8,6 +8,22 @@ A few examples are given that do not end by `.sh` which won't be run. If you wan provided examples, copy them to a file ending by `.sh` +## Info + +If you want to autostart NodeJS applications, you can use [pm2](https://github.com/Unitech/pm2). +Ensure you do this as user `devilbox`, as by default everything is run by root. + +```bash +su -c 'cd /shared/httpd/node/node; pm2 start index.js' -l devilbox +``` + + +## Note + +This directory will startup commands only for a specific PHP version. If you want to run commands +for all versions , go to `autostart/` in the root of the Devilbox git directory. + + ## Important All provided scripts will be executed with **root** permissions. diff --git a/cfg/php-startup-7.4/README.md b/cfg/php-startup-7.4/README.md index d75100ab..e212252e 100644 --- a/cfg/php-startup-7.4/README.md +++ b/cfg/php-startup-7.4/README.md @@ -1,4 +1,4 @@ -# Custom startup scripts +# Custom startup scripts (per PHP version) Any script inside this directory ending by `.sh` will be executed during the PHP container startup. This is useful to apply your custom settings such as installing software that usually requires @@ -8,6 +8,22 @@ A few examples are given that do not end by `.sh` which won't be run. If you wan provided examples, copy them to a file ending by `.sh` +## Info + +If you want to autostart NodeJS applications, you can use [pm2](https://github.com/Unitech/pm2). +Ensure you do this as user `devilbox`, as by default everything is run by root. + +```bash +su -c 'cd /shared/httpd/node/node; pm2 start index.js' -l devilbox +``` + + +## Note + +This directory will startup commands only for a specific PHP version. If you want to run commands +for all versions , go to `autostart/` in the root of the Devilbox git directory. + + ## Important All provided scripts will be executed with **root** permissions. diff --git a/docker-compose.yml b/docker-compose.yml index 1d1ae42c..c26a08e0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -193,7 +193,8 @@ services: - ${DEVILBOX_PATH}/mod/php-fpm-${PHP_SERVER}:/usr/lib64/php/custom-modules:ro${MOUNT_OPTIONS} # Mount devilbox user-defined PHP-FPM startup *.sh scripts - - ${DEVILBOX_PATH}/cfg/php-startup-${PHP_SERVER}:/startup.d:rw${MOUNT_OPTIONS} + - ${DEVILBOX_PATH}/cfg/php-startup-${PHP_SERVER}:/startup.1.d:rw${MOUNT_OPTIONS} + - ${DEVILBOX_PATH}/autostart:/startup.2.d:rw${MOUNT_OPTIONS} # Mount devilbox user-defined bash config - ${DEVILBOX_PATH}/bash:/etc/bashrc-devilbox.d:rw${MOUNT_OPTIONS} From 1dfa98446b47487e95886baf23611c2b6a69ce5e Mon Sep 17 00:00:00 2001 From: cytopia Date: Sat, 29 Dec 2018 13:11:51 +0100 Subject: [PATCH 12/24] Rewrite tests to also accompany for rproxy tests --- .gitignore | 9 + .tests/Makefile | 172 +++++++++++----- .tests/intra-tests/vhosts.sh | 2 +- .tests/startup-tests/startup.2.sh | 13 +- .tests/vhost-tests/.devilbox/apache22.yml | 161 --------------- .tests/vhost-tests/.devilbox/apache24.yml | 183 ------------------ .tests/vhost-tests/.devilbox/nginx.yml | 157 --------------- .tests/vhost-tests/my-rhost/.devilbox/.keepme | 0 .tests/vhost-tests/my-rhost/htdocs | 1 + .tests/vhost-tests/my-rhost/js/index.js | 11 ++ .tests/vhost-tests/my-rhost/start-pm.sh | 30 +++ .tests/vhost-tests/my-rhost/tests/test-url.sh | 30 +++ .tests/vhost-tests/my-vhost/.devilbox/.keepme | 0 .tests/vhost-tests/{ => my-vhost}/README.md | 0 .../{ => my-vhost}/htdocs/intranet-mail.php | 0 .../{ => my-vhost}/htdocs/memcached.php | 0 .../{ => my-vhost}/htdocs/mongodb.php | 0 .../{ => my-vhost}/htdocs/mysql.php | 0 .../{ => my-vhost}/htdocs/postgres.php | 0 .../{ => my-vhost}/htdocs/redis.php | 0 20 files changed, 211 insertions(+), 558 deletions(-) delete mode 100644 .tests/vhost-tests/.devilbox/apache22.yml delete mode 100644 .tests/vhost-tests/.devilbox/apache24.yml delete mode 100644 .tests/vhost-tests/.devilbox/nginx.yml create mode 100644 .tests/vhost-tests/my-rhost/.devilbox/.keepme create mode 120000 .tests/vhost-tests/my-rhost/htdocs create mode 100644 .tests/vhost-tests/my-rhost/js/index.js create mode 100755 .tests/vhost-tests/my-rhost/start-pm.sh create mode 100755 .tests/vhost-tests/my-rhost/tests/test-url.sh create mode 100644 .tests/vhost-tests/my-vhost/.devilbox/.keepme rename .tests/vhost-tests/{ => my-vhost}/README.md (100%) rename .tests/vhost-tests/{ => my-vhost}/htdocs/intranet-mail.php (100%) rename .tests/vhost-tests/{ => my-vhost}/htdocs/memcached.php (100%) rename .tests/vhost-tests/{ => my-vhost}/htdocs/mongodb.php (100%) rename .tests/vhost-tests/{ => my-vhost}/htdocs/mysql.php (100%) rename .tests/vhost-tests/{ => my-vhost}/htdocs/postgres.php (100%) rename .tests/vhost-tests/{ => my-vhost}/htdocs/redis.php (100%) diff --git a/.gitignore b/.gitignore index 394829c0..28d1ce20 100644 --- a/.gitignore +++ b/.gitignore @@ -118,6 +118,15 @@ /docs/linkcheck *.rst.todo +# Ignore vhost-gen files in test dir (copied on the fly) +/.tests/vhost-tests/my-vhost/.devilbox/apache22.yml +/.tests/vhost-tests/my-vhost/.devilbox/apache24.yml +/.tests/vhost-tests/my-vhost/.devilbox/nginx.yml + +/.tests/vhost-tests/my-rhost/.devilbox/apache22.yml +/.tests/vhost-tests/my-rhost/.devilbox/apache24.yml +/.tests/vhost-tests/my-rhost/.devilbox/nginx.yml + # Keep folders !.keepme diff --git a/.tests/Makefile b/.tests/Makefile index d945ccd4..27d4ac8c 100644 --- a/.tests/Makefile +++ b/.tests/Makefile @@ -19,8 +19,10 @@ DEVILBOX_NAME = $(shell cd $(DEVILBOX_PATH); basename $$(pwd)) DOCKER_NETWORK = $(shell docker network ls --filter name='$(DEVILBOX_NAME)' --quiet) # Devilbox test settings -PROJECT = vhost-tests -VHOST = $(PROJECT).loc +PROJECTV = my-vhost +PROJECTR = my-rhost +VHOST = $(PROJECTV).loc +RHOST = $(PROJECTR).loc # ------------------------------------------------------------------------------------------------- @@ -48,11 +50,19 @@ init: @# Ensure .env file exists install -m 0644 $(DEVILBOX_PATH)/env-example $(DEVILBOX_PATH)/.env + @# Ensure project vhost-gen files exist (vhost) + install -m 0644 $(DEVILBOX_PATH)/cfg/vhost-gen/apache22.yml-example-vhost $(CURRENT_PATH)/vhost-tests/$(PROJECTV)/.devilbox/apache22.yml + install -m 0644 $(DEVILBOX_PATH)/cfg/vhost-gen/apache24.yml-example-vhost $(CURRENT_PATH)/vhost-tests/$(PROJECTV)/.devilbox/apache24.yml + install -m 0644 $(DEVILBOX_PATH)/cfg/vhost-gen/nginx.yml-example-vhost $(CURRENT_PATH)/vhost-tests/$(PROJECTV)/.devilbox/nginx.yml + @# Ensure project vhost-gen files exist (rhost) + install -m 0644 $(DEVILBOX_PATH)/cfg/vhost-gen/apache22.yml-example-rproxy $(CURRENT_PATH)/vhost-tests/$(PROJECTR)/.devilbox/apache22.yml + install -m 0644 $(DEVILBOX_PATH)/cfg/vhost-gen/apache24.yml-example-rproxy $(CURRENT_PATH)/vhost-tests/$(PROJECTR)/.devilbox/apache24.yml + install -m 0644 $(DEVILBOX_PATH)/cfg/vhost-gen/nginx.yml-example-rproxy $(CURRENT_PATH)/vhost-tests/$(PROJECTR)/.devilbox/nginx.yml @# Set bind port echo "HOST_PORT_BIND=53" >> $(DEVILBOX_PATH)/.env @# Set data dir sed -i'' 's/^HOST_PATH_HTTPD_DATADIR=/#HOST_PATH_HTTPD_DATADIR=/g' $(DEVILBOX_PATH)/.env - echo "HOST_PATH_HTTPD_DATADIR=.tests" >> $(DEVILBOX_PATH)/.env + echo "HOST_PATH_HTTPD_DATADIR=.tests/vhost-tests" >> $(DEVILBOX_PATH)/.env @# Set uid/gid sed -i'' 's/^NEW_UID=.*/NEW_UID=$(MY_UID)/g' $(DEVILBOX_PATH)/.env sed -i'' 's/^NEW_GID=.*/NEW_GID=$(MY_GID)/g' $(DEVILBOX_PATH)/.env @@ -146,31 +156,7 @@ info: ### ### Run tests ### -test: test-vhost test-intra test-startup - - -test-intra: - @echo "####################################################################################################" - @echo "# RUNNING TESTS: INTRANET" - @echo "####################################################################################################" - @echo - - @# Gather files to test - $(eval SH_FILES := $(notdir $(wildcard $(CURRENT_PATH)/intra-tests/*.sh))) - - @$(foreach file,\ - $(SH_FILES), \ - echo "# ----------------------------------------------------------------------------------------"; \ - echo "# [intra] $(file)"; \ - echo "# ----------------------------------------------------------------------------------------"; \ - cd $(CURRENT_PATH) && $(MAKE) _clean-round >/dev/null; \ - if ! $(CURRENT_PATH)/intra-tests/$(file); then \ - cd $(CURRENT_PATH) && $(MAKE) _logs; \ - exit 1; \ - fi; \ - echo; \ - ) - @echo +test: test-vhost test-rhost test-intra test-startup test-vhost: @@ -183,7 +169,7 @@ test-vhost: $(eval HTTPD_SERVER := $(shell grep -E '^HTTPD_SERVER' $(DEVILBOX_PATH)/.env | sed 's/.*=//g')) @# Gather files to test - $(eval PHP_FILES := $(notdir $(wildcard $(CURRENT_PATH)/$(PROJECT)/htdocs/*.php))) + $(eval PHP_FILES := $(notdir $(wildcard $(CURRENT_PATH)/vhost-tests/$(PROJECTV)/htdocs/*.php))) @echo "# ----------------------------------------------------------------------------------------" @echo "# [vhost] Test curl HTTP from Docker host" @@ -267,28 +253,92 @@ test-vhost: @echo "# ----------------------------------------------------------------------------------------" @$(foreach file,\ $(PHP_FILES), \ - printf "[TEST] docker-compose exec php php /shared/httpd/$(PROJECT)/htdocs/$(file)"; \ + printf "[TEST] docker-compose exec php php /shared/httpd/$(PROJECTV)/htdocs/$(file)"; \ cd $(CURRENT_PATH) && $(MAKE) _clean-round >/dev/null; \ - if ! cd $(DEVILBOX_PATH) && docker-compose exec php php /shared/httpd/$(PROJECT)/htdocs/$(file) | grep -q '^OK$$'; then \ - printf "\r[TEST] docker-compose exec php php /shared/httpd/$(PROJECT)/htdocs/$(file)\n"; \ - cd $(DEVILBOX_PATH) && docker-composeexec php php /shared/httpd/$(PROJECT)/htdocs/$(file); \ + if ! cd $(DEVILBOX_PATH) && docker-compose exec php php /shared/httpd/$(PROJECTV)/htdocs/$(file) | grep -q '^OK$$'; then \ + printf "\r[TEST] docker-compose exec php php /shared/httpd/$(PROJECTV)/htdocs/$(file)\n"; \ + cd $(DEVILBOX_PATH) && docker-composeexec php php /shared/httpd/$(PROJECTV)/htdocs/$(file); \ cd $(CURRENT_PATH) && $(MAKE) _logs; \ exit 1; \ else \ - printf "\r[OK] docker-compose exec php php /shared/httpd/$(PROJECT)/htdocs/$(file)\n"; \ + printf "\r[OK] docker-compose exec php php /shared/httpd/$(PROJECTV)/htdocs/$(file)\n"; \ fi; \ ) @echo +test-rhost: + @echo "####################################################################################################" + @echo "# RUNNING TESTS: RHOST" + @echo "####################################################################################################" + @echo + + @# Gather files to test + $(eval SH_FILES := $(notdir $(wildcard $(CURRENT_PATH)/vhost-tests/$(PROJECTR)/tests/*.sh))) + + @echo "# ----------------------------------------------------------------------------------------" + @echo "# [rhost] Startup" + @echo "# ----------------------------------------------------------------------------------------" + @$(CURRENT_PATH)/vhost-tests/$(PROJECTR)/start-pm.sh + + @$(foreach file,\ + $(SH_FILES), \ + echo; \ + echo "# ----------------------------------------------------------------------------------------"; \ + echo "# [rhost] $(file)"; \ + echo "# ----------------------------------------------------------------------------------------"; \ + cd $(CURRENT_PATH) && $(MAKE) _clean-round >/dev/null; \ + if ! $(CURRENT_PATH)/vhost-tests/$(PROJECTR)/tests/$(file); then \ + cd $(CURRENT_PATH) && $(MAKE) _logs; \ + exit 1; \ + fi \ + ) + @echo + + +test-intra: + @echo "####################################################################################################" + @echo "# RUNNING TESTS: INTRANET" + @echo "####################################################################################################" + @echo + + @# Gather files to test + $(eval SH_FILES := $(notdir $(wildcard $(CURRENT_PATH)/intra-tests/*.sh))) + + @$(foreach file,\ + $(SH_FILES), \ + echo "# ----------------------------------------------------------------------------------------"; \ + echo "# [intra] $(file)"; \ + echo "# ----------------------------------------------------------------------------------------"; \ + cd $(CURRENT_PATH) && $(MAKE) _clean-round >/dev/null; \ + if ! $(CURRENT_PATH)/intra-tests/$(file); then \ + cd $(CURRENT_PATH) && $(MAKE) _logs; \ + exit 1; \ + fi; \ + echo; \ + ) + @echo + + test-startup: @echo "####################################################################################################" @echo "# RUNNING TESTS: STARTUP" @echo "####################################################################################################" @echo - @if ! $(CURRENT_PATH)startup-tests/startup.sh; then \ - exit 1; \ - fi + + @# Gather files to test + $(eval SH_FILES := $(notdir $(wildcard $(CURRENT_PATH)/startup-tests/*.sh))) + + @$(foreach file,\ + $(SH_FILES), \ + cd $(CURRENT_PATH) && $(MAKE) _clean-round >/dev/null; \ + if ! $(CURRENT_PATH)/startup-tests/$(file); then \ + cd $(CURRENT_PATH) && $(MAKE) _logs; \ + exit 1; \ + fi; \ + echo; \ + ) + @echo # ------------------------------------------------------------------------------------------------- @@ -310,10 +360,10 @@ _clean-round: @#cd $(DEVILBOX_PATH) && docker-compose exec httpd dd if=/dev/null of=/var/log/$(HTTPD_SERVER)/defaultlocalhost_ssl-access.log >/dev/null 2>&1 || true @#cd $(DEVILBOX_PATH) && docker-compose exec httpd dd if=/dev/null of=/var/log/$(HTTPD_SERVER)/defaultlocalhost_ssl-error.log >/dev/null 2>&1 || true - @#cd $(DEVILBOX_PATH) && docker-compose exec httpd dd if=/dev/null of=/var/log/$(HTTPD_SERVER)/$(PROJECT)-access.log >/dev/null 2>&1 || true - @#cd $(DEVILBOX_PATH) && docker-compose exec httpd dd if=/dev/null of=/var/log/$(HTTPD_SERVER)/$(PROJECT)-error.log >/dev/null 2>&1 || true - @#cd $(DEVILBOX_PATH) && docker-compose exec httpd dd if=/dev/null of=/var/log/$(HTTPD_SERVER)/$(PROJECT)_ssl-access.log >/dev/null 2>&1 || true - @#cd $(DEVILBOX_PATH) && docker-compose exec httpd dd if=/dev/null of=/var/log/$(HTTPD_SERVER)/$(PROJECT)_ssl-error.log >/dev/null 2>&1 || true + @#cd $(DEVILBOX_PATH) && docker-compose exec httpd dd if=/dev/null of=/var/log/$(HTTPD_SERVER)/$(PROJECTV)-access.log >/dev/null 2>&1 || true + @#cd $(DEVILBOX_PATH) && docker-compose exec httpd dd if=/dev/null of=/var/log/$(HTTPD_SERVER)/$(PROJECTV)-error.log >/dev/null 2>&1 || true + @#cd $(DEVILBOX_PATH) && docker-compose exec httpd dd if=/dev/null of=/var/log/$(HTTPD_SERVER)/$(PROJECTV)_ssl-access.log >/dev/null 2>&1 || true + @#cd $(DEVILBOX_PATH) && docker-compose exec httpd dd if=/dev/null of=/var/log/$(HTTPD_SERVER)/$(PROJECTV)_ssl-error.log >/dev/null 2>&1 || true _logs: @@ -415,27 +465,51 @@ _logs: @echo @echo "# ----------------------------------------------------------------------------------------" - @echo "# [HTTPD] $(PROJECT)-access.log" + @echo "# [HTTPD] $(PROJECTV)-access.log" @echo "# ----------------------------------------------------------------------------------------" - cd $(DEVILBOX_PATH) && docker-compose exec httpd cat /var/log/$(HTTPD_SERVER)/$(PROJECT)-access.log || true + cd $(DEVILBOX_PATH) && docker-compose exec httpd cat /var/log/$(HTTPD_SERVER)/$(PROJECTV)-access.log || true @echo @echo "# ----------------------------------------------------------------------------------------" - @echo "# [HTTPD] $(PROJECT)-error.log" + @echo "# [HTTPD] $(PROJECTV)-error.log" @echo "# ----------------------------------------------------------------------------------------" - cd $(DEVILBOX_PATH) && docker-compose exec httpd cat /var/log/$(HTTPD_SERVER)/$(PROJECT)-error.log || true + cd $(DEVILBOX_PATH) && docker-compose exec httpd cat /var/log/$(HTTPD_SERVER)/$(PROJECTV)-error.log || true @echo @echo "# ----------------------------------------------------------------------------------------" - @echo "# [HTTPD] $(PROJECT)_ssl-access.log" + @echo "# [HTTPD] $(PROJECTV)_ssl-access.log" @echo "# ----------------------------------------------------------------------------------------" - cd $(DEVILBOX_PATH) && docker-compose exec httpd cat /var/log/$(HTTPD_SERVER)/$(PROJECT)_ssl-access.log || true + cd $(DEVILBOX_PATH) && docker-compose exec httpd cat /var/log/$(HTTPD_SERVER)/$(PROJECTV)_ssl-access.log || true @echo @echo "# ----------------------------------------------------------------------------------------" - @echo "# [HTTPD] $(PROJECT)_ssl-error.log" + @echo "# [HTTPD] $(PROJECTV)_ssl-error.log" @echo "# ----------------------------------------------------------------------------------------" - cd $(DEVILBOX_PATH) && docker-compose exec httpd cat /var/log/$(HTTPD_SERVER)/$(PROJECT)_ssl-error.log || true + cd $(DEVILBOX_PATH) && docker-compose exec httpd cat /var/log/$(HTTPD_SERVER)/$(PROJECTV)_ssl-error.log || true + @echo + + @echo "# ----------------------------------------------------------------------------------------" + @echo "# [HTTPD] $(PROJECTR)-access.log" + @echo "# ----------------------------------------------------------------------------------------" + cd $(DEVILBOX_PATH) && docker-compose exec httpd cat /var/log/$(HTTPD_SERVER)/$(PROJECTR)-access.log || true + @echo + + @echo "# ----------------------------------------------------------------------------------------" + @echo "# [HTTPD] $(PROJECTR)-error.log" + @echo "# ----------------------------------------------------------------------------------------" + cd $(DEVILBOX_PATH) && docker-compose exec httpd cat /var/log/$(HTTPD_SERVER)/$(PROJECTR)-error.log || true + @echo + + @echo "# ----------------------------------------------------------------------------------------" + @echo "# [HTTPD] $(PROJECTR)_ssl-access.log" + @echo "# ----------------------------------------------------------------------------------------" + cd $(DEVILBOX_PATH) && docker-compose exec httpd cat /var/log/$(HTTPD_SERVER)/$(PROJECTR)_ssl-access.log || true + @echo + + @echo "# ----------------------------------------------------------------------------------------" + @echo "# [HTTPD] $(PROJECTR)_ssl-error.log" + @echo "# ----------------------------------------------------------------------------------------" + cd $(DEVILBOX_PATH) && docker-compose exec httpd cat /var/log/$(HTTPD_SERVER)/$(PROJECTR)_ssl-error.log || true @echo diff --git a/.tests/intra-tests/vhosts.sh b/.tests/intra-tests/vhosts.sh index b07c4199..836b74e2 100755 --- a/.tests/intra-tests/vhosts.sh +++ b/.tests/intra-tests/vhosts.sh @@ -11,7 +11,7 @@ set -o pipefail # -VHOST="${1:-vhost-tests}" +VHOST="${1:-my-vhost}" VHOST_GEN_URL="/info_vhostgen.php?name=${VHOST}" VHOST_URL="/vhost.d/${VHOST}.conf" diff --git a/.tests/startup-tests/startup.2.sh b/.tests/startup-tests/startup.2.sh index 9d127025..7a67b581 100755 --- a/.tests/startup-tests/startup.2.sh +++ b/.tests/startup-tests/startup.2.sh @@ -16,15 +16,16 @@ cd "${COMPOSEPATH}" && docker-compose exec -T php bash -c "find /startup.2.d/*.s echo "# ----------------------------------------------------------------------------------------" echo "# [TEST] ${f}" echo "# ----------------------------------------------------------------------------------------" - if ! docker exec -t ${CONTAINER} bash "${f}" "ACCEPT_EULA=1"; then + if ! docker exec -t ${CONTAINER} bash "${f}" | grep -q "No projects defined"; then sleep 5 - if ! docker exec -t ${CONTAINER} bash "${f}" "ACCEPT_EULA=1"; then + if ! docker exec -t ${CONTAINER} bash "${f}" | grep -q "No projects defined"; then sleep 5 - if ! docker exec -t ${CONTAINER} bash "${f}" "ACCEPT_EULA=1"; then + if ! docker exec -t ${CONTAINER} bash "${f}" | grep -q "No projects defined"; then sleep 5 - if ! docker exec -t ${CONTAINER} bash "${f}" "ACCEPT_EULA=1"; then + if ! docker exec -t ${CONTAINER} bash "${f}" | grep -q "No projects defined"; then sleep 5 - if ! docker exec -t ${CONTAINER} bash "${f}" "ACCEPT_EULA=1"; then + if ! docker exec -t ${CONTAINER} bash "${f}" | grep -q "No projects defined"; then + docker exec -t ${CONTAINER} bash "${f}" || true echo "[FAIl] ${f}" exit 1 fi @@ -33,6 +34,4 @@ cd "${COMPOSEPATH}" && docker-compose exec -T php bash -c "find /startup.2.d/*.s fi fi echo "[OK] ${f}" - echo - echo done diff --git a/.tests/vhost-tests/.devilbox/apache22.yml b/.tests/vhost-tests/.devilbox/apache22.yml deleted file mode 100644 index 158de62e..00000000 --- a/.tests/vhost-tests/.devilbox/apache22.yml +++ /dev/null @@ -1,161 +0,0 @@ ---- - -# Apache 2.2 vHost Template defintion for vhost-gen.py -# -# The 'feature' section contains optional features that can be enabled via -# conf.yml and will then be replaced into the main vhost ('structure' section) -# into their corresponding position: -# -# __XDOMAIN_REQ__ -# __PHP_FPM__ -# __ALIASES__ -# __DENIES__ -# __STATUS__ -# -# The features itself also contain variables to be adjusted in conf.yml -# and will then be replaced in their corresponding feature section -# before being replaced into the vhost section (if enabled): -# -# PHP-FPM: -# __PHP_ADDR__ -# __PHP_PORT__ -# XDomain: -# __REGEX__ -# Alias: -# __REGEX__ -# __PATH__ -# Deny: -# __REGEX__ -# Status: -# __REGEX__ -# -# Variables to be replaced directly in the vhost configuration can also be set -# in conf.yml and include: -# __VHOST_NAME__ -# __DOCUMENT_ROOT__ -# __INDEX__ -# __ACCESS_LOG__ -# __ERROR_LOG__ -# __PHP_ADDR__ -# __PHP_PORT__ -# - - -### -### Basic vHost skeleton -### -vhost: | - - ServerName __VHOST_NAME__ - - CustomLog "__ACCESS_LOG__" combined - ErrorLog "__ERROR_LOG__" - - __REDIRECT__ - __SSL__ - __VHOST_DOCROOT__ - __VHOST_RPROXY__ - __PHP_FPM__ - __ALIASES__ - __DENIES__ - __SERVER_STATUS__ - # Custom directives - __CUSTOM__ - - -### -### vHost Type (normal or reverse proxy) -### -vhost_type: - # Normal vHost (-p) - docroot: | - # Define the vhost to serve files - DocumentRoot "__DOCUMENT_ROOT__" - - DirectoryIndex __INDEX__ - - AllowOverride All - Options All - - RewriteEngine on - RewriteBase / - - Order allow,deny - Allow from all - - - # Reverse Proxy (-r) - rproxy: | - # Define the vhost to reverse proxy - ProxyRequests off - ProxyPass __LOCATION__ __PROXY_PROTO://__PROXY_ADDR__:__PROXY_PORT__ - ProxyHTMLURLMap __PROXY_PROTO://__PROXY_ADDR__:__PROXY_PORT__ __LOCATION__ - - ProxyPassReverse / - SetOutputFilter proxy-html - ProxyHTMLURLMap / __LOCATION__ - ProxyHTMLURLMap __LOCATION__ __LOCATION__ - RequestHeader unset Accept-Encoding - - - -### -### Optional features to be enabled in vHost -### -features: - - # SSL Configuration - ssl: | - SSLEngine on - SSLCertificateFile "__SSL_PATH_CRT__" - SSLCertificateKeyFile "__SSL_PATH_KEY__" - SSLProtocol __SSL_PROTOCOLS__ - SSLHonorCipherOrder __SSL_HONOR_CIPHER_ORDER__ - SSLCipherSuite __SSL_CIPHERS__ - - # Redirect to SSL directive - redirect: | - RedirectMatch (.*) https://__VHOST_NAME__:__SSL_PORT__$1 - - # PHP-FPM will not be applied to a reverse proxy! - php_fpm: | - # PHP-FPM Definition - ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://__PHP_ADDR__:__PHP_PORT____DOCUMENT_ROOT__/$1 timeout=__PHP_TIMEOUT__ - - alias: | - # Alias Definition - Alias "__ALIAS__" "__PATH____ALIAS__" - - __XDOMAIN_REQ__ - - - Order allow,deny - Allow from all - - - deny: | - # Deny Definition - - Order allow,deny - Deny from all - - - server_status: | - # Status Page - - SetHandler server-status - Order allow,deny - Allow from all - - - xdomain_request: | - # Allow cross domain request from these hosts - SetEnvIf Origin "__REGEX__" AccessControlAllowOrigin=$0 - Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin - Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT" - Header always set Access-Control-Max-Age "0" - Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token" - # Added a rewrite to respond with a 200 SUCCESS on every OPTIONS request. - RewriteEngine On - RewriteCond %{REQUEST_METHOD} OPTIONS - RewriteRule ^(.*)$ $1 [R=200,L] diff --git a/.tests/vhost-tests/.devilbox/apache24.yml b/.tests/vhost-tests/.devilbox/apache24.yml deleted file mode 100644 index 8703d096..00000000 --- a/.tests/vhost-tests/.devilbox/apache24.yml +++ /dev/null @@ -1,183 +0,0 @@ ---- - -# Apache 2.4 vHost Template defintion for vhost-gen.py -# -# The 'feature' section contains optional features that can be enabled via -# conf.yml and will then be replaced into the main vhost ('structure' section) -# into their corresponding position: -# -# __XDOMAIN_REQ__ -# __PHP_FPM__ -# __ALIASES__ -# __DENIES__ -# __STATUS__ -# -# The features itself also contain variables to be adjusted in conf.yml -# and will then be replaced in their corresponding feature section -# before being replaced into the vhost section (if enabled): -# -# PHP-FPM: -# __PHP_ADDR__ -# __PHP_PORT__ -# XDomain: -# __REGEX__ -# Alias: -# __REGEX__ -# __PATH__ -# Deny: -# __REGEX__ -# Status: -# __REGEX__ -# -# Variables to be replaced directly in the vhost configuration can also be set -# in conf.yml and include: -# __VHOST_NAME__ -# __DOCUMENT_ROOT__ -# __INDEX__ -# __ACCESS_LOG__ -# __ERROR_LOG__ -# __PHP_ADDR__ -# __PHP_PORT__ -# - - -### -### Basic vHost skeleton -### -vhost: | - - ServerName __VHOST_NAME__ - - CustomLog "__ACCESS_LOG__" combined - ErrorLog "__ERROR_LOG__" - - __REDIRECT__ - __SSL__ - __VHOST_DOCROOT__ - __VHOST_RPROXY__ - __PHP_FPM__ - __ALIASES__ - __DENIES__ - __SERVER_STATUS__ - # Custom directives - __CUSTOM__ - - -### -### vHost Type (normal or reverse proxy) -### -vhost_type: - # Normal vHost (-p) - docroot: | - # Define the vhost to serve files - DocumentRoot "__DOCUMENT_ROOT__" - - DirectoryIndex __INDEX__ - - AllowOverride All - Options All - - RewriteEngine on - RewriteBase / - - Order allow,deny - Allow from all - Require all granted - - - # Reverse Proxy (-r) - rproxy: | - # Define the vhost to reverse proxy - ProxyRequests off - ProxyPass __LOCATION__ __PROXY_PROTO://__PROXY_ADDR__:__PROXY_PORT__ - ProxyHTMLURLMap __PROXY_PROTO://__PROXY_ADDR__:__PROXY_PORT__ __LOCATION__ - - ProxyPassReverse / - SetOutputFilter proxy-html - ProxyHTMLURLMap / __LOCATION__ - ProxyHTMLURLMap __LOCATION__ __LOCATION__ - RequestHeader unset Accept-Encoding - - - -### -### Optional features to be enabled in vHost -### -features: - - # SSL Configuration - ssl: | - SSLEngine on - SSLCertificateFile "__SSL_PATH_CRT__" - SSLCertificateKeyFile "__SSL_PATH_KEY__" - SSLProtocol __SSL_PROTOCOLS__ - SSLHonorCipherOrder __SSL_HONOR_CIPHER_ORDER__ - SSLCipherSuite __SSL_CIPHERS__ - - # Redirect to SSL directive - redirect: | - RedirectMatch (.*) https://__VHOST_NAME__:__SSL_PORT__$1 - - # PHP-FPM will not be applied to a reverse proxy! - php_fpm: | - # In case for PHP-FPM 5.2 compatibility use 'GENERIC' instead of 'FPM' - # https://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.html#proxyfcgibackendtype - ProxyFCGIBackendType FPM - - # PHP-FPM Definition - - Require all granted - SetHandler proxy:fcgi://__PHP_ADDR__:__PHP_PORT__ - - - - ProxySet timeout=__PHP_TIMEOUT__ - ProxySet connectiontimeout=__PHP_TIMEOUT__ - - - # If the php file doesn't exist, disable the proxy handler. - # This will allow .htaccess rewrite rules to work and - # the client will see the default 404 page of Apache - RewriteCond %{REQUEST_FILENAME} \.php$ - RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} !-f - RewriteRule (.*) - [H=text/html] - - alias: | - # Alias Definition - Alias "__ALIAS__" "__PATH____ALIAS__" - - __XDOMAIN_REQ__ - - - Order allow,deny - Allow from all - Require all granted - - - deny: | - # Deny Definition - - Order allow,deny - Deny from all - - - server_status: | - # Status Page - - SetHandler server-status - Order allow,deny - Allow from all - Require all granted - - - xdomain_request: | - # Allow cross domain request from these hosts - SetEnvIf Origin "__REGEX__" AccessControlAllowOrigin=$0 - Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin - Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT" - Header always set Access-Control-Max-Age "0" - Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token" - # Added a rewrite to respond with a 200 SUCCESS on every OPTIONS request. - RewriteEngine On - RewriteCond %{REQUEST_METHOD} OPTIONS - RewriteRule ^(.*)$ $1 [R=200,L] diff --git a/.tests/vhost-tests/.devilbox/nginx.yml b/.tests/vhost-tests/.devilbox/nginx.yml deleted file mode 100644 index 44c4c09f..00000000 --- a/.tests/vhost-tests/.devilbox/nginx.yml +++ /dev/null @@ -1,157 +0,0 @@ ---- - -# Nginx vHost Template defintion for vhost-gen.py -# -# The 'feature' section contains optional features that can be enabled via -# conf.yml and will then be replaced into the main vhost ('structure' section) -# into their corresponding position: -# -# __XDOMAIN_REQ__ -# __PHP_FPM__ -# __ALIASES__ -# __DENIES__ -# __STATUS__ -# -# The features itself also contain variables to be adjusted in conf.yml -# and will then be replaced in their corresponding feature section -# before being replaced into the vhost section (if enabled): -# -# PHP-FPM: -# __PHP_ADDR__ -# __PHP_PORT__ -# XDomain: -# __REGEX__ -# Alias: -# __REGEX__ -# __PATH__ -# Deny: -# __REGEX__ -# Status: -# __REGEX__ -# -# Variables to be replaced directly in the vhost configuration can also be set -# in conf.yml and include: -# __VHOST_NAME__ -# __DOCUMENT_ROOT__ -# __INDEX__ -# __ACCESS_LOG__ -# __ERROR_LOG__ -# __PHP_ADDR__ -# __PHP_PORT__ -# - - -### -### Basic vHost skeleton -### -vhost: | - server { - listen __PORT____DEFAULT_VHOST__; - server_name __VHOST_NAME__; - - access_log "__ACCESS_LOG__" combined; - error_log "__ERROR_LOG__" warn; - - __REDIRECT__ - __SSL__ - __VHOST_DOCROOT__ - __VHOST_RPROXY__ - __PHP_FPM__ - __ALIASES__ - __DENIES__ - __SERVER_STATUS__ - # Custom directives - __CUSTOM__ - } - - -### -### vHost Type (normal or reverse proxy) -### -vhost_type: - # Normal vHost (-p) - docroot: | - # Define the vhost to serve files - root "__DOCUMENT_ROOT__"; - index __INDEX__; - - # Reverse Proxy (-r) - rproxy: | - # Define the vhost to reverse proxy - location __LOCATION__ { - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_pass __PROXY_PROTO__://__PROXY_ADDR__:__PROXY_PORT__; - } - - -### -### Optional features to be enabled in vHost -### -features: - - # SSL Configuration - ssl: | - ssl_certificate __SSL_PATH_CRT__; - ssl_certificate_key __SSL_PATH_KEY__; - ssl_protocols __SSL_PROTOCOLS__; - ssl_prefer_server_ciphers __SSL_HONOR_CIPHER_ORDER__; - ssl_ciphers __SSL_CIPHERS__; - - # Redirect to SSL directive - redirect: | - return 301 https://__VHOST_NAME__:__SSL_PORT__$request_uri; - - # PHP-FPM will not be applied to a reverse proxy! - php_fpm: | - # PHP-FPM Definition - location / { - try_files $uri $uri/ /index.php$is_args$args; - } - location ~ \.php?$ { - try_files $uri = 404; - include fastcgi_params; - - # https://stackoverflow.com/questions/1733306/nginx-errors-readv-and-recv-failed/51457613#51457613 - fastcgi_keep_conn off; - - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - fastcgi_split_path_info ^(.+\.php)(.*)$; - - fastcgi_pass __PHP_ADDR__:__PHP_PORT__; - fastcgi_read_timeout __PHP_TIMEOUT__; - - fastcgi_index index.php; - fastcgi_intercept_errors on; - } - - alias: | - # Alias Definition - location ~ __ALIAS__ { - root __PATH__; - __XDOMAIN_REQ__ - } - - deny: | - # Deny Definition - location ~ __REGEX__ { - deny all; - } - - server_status: | - # Status Page - location ~ __REGEX__ { - stub_status on; - access_log off; - } - - xdomain_request: | - # Allow cross domain request from these hosts - if ( $http_origin ~* (__REGEX__) ) { - add_header "Access-Control-Allow-Origin" "$http_origin"; - add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; - add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range'; - add_header 'Access-Control-Expose-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range'; - add_header 'Access-Control-Max-Age' 0; - return 200; - } diff --git a/.tests/vhost-tests/my-rhost/.devilbox/.keepme b/.tests/vhost-tests/my-rhost/.devilbox/.keepme new file mode 100644 index 00000000..e69de29b diff --git a/.tests/vhost-tests/my-rhost/htdocs b/.tests/vhost-tests/my-rhost/htdocs new file mode 120000 index 00000000..bc42fd64 --- /dev/null +++ b/.tests/vhost-tests/my-rhost/htdocs @@ -0,0 +1 @@ +js \ No newline at end of file diff --git a/.tests/vhost-tests/my-rhost/js/index.js b/.tests/vhost-tests/my-rhost/js/index.js new file mode 100644 index 00000000..3daea455 --- /dev/null +++ b/.tests/vhost-tests/my-rhost/js/index.js @@ -0,0 +1,11 @@ +// Load the http module to create an http server. +var http = require('http'); + +// Configure our HTTP server to respond with Hello World to all requests. +var server = http.createServer(function (request, response) { + response.writeHead(200, {"Content-Type": "text/plain"}); + response.end("Hello World\n"); +}); + +// Listen on port 8000, IP defaults to 127.0.0.1 +server.listen(8000); diff --git a/.tests/vhost-tests/my-rhost/start-pm.sh b/.tests/vhost-tests/my-rhost/start-pm.sh new file mode 100755 index 00000000..e2acf574 --- /dev/null +++ b/.tests/vhost-tests/my-rhost/start-pm.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +set -e +set -u + +SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )" +COMPOSEPATH="${SCRIPTPATH}/../../../" + + +NODE_PATH="/shared/httpd/my-rhost/js" +NODE_FILE="index.js" + +if ! cd "${COMPOSEPATH}" && docker-compose exec php test -d "${NODE_PATH}"; then + >&2 echo "[Warning], skipping startup, directory does not exist in container: ${NODE_PATH}" + exit 1 +fi + +if ! cd "${COMPOSEPATH}" && docker-compose exec php test -f "${NODE_PATH}/${NODE_FILE}"; then + >&2 echo "[Warning], skipping startup, file does not exist in container: ${NODE_PATH}/${NODE_FILE}" + exit 1 +fi + + +# Check if at least one pm2 process is already running +if cd "${COMPOSEPATH}" && docker-compose exec --user devilbox php bash -c "cd /shared/httpd/my-rhost/js; pm2 show 0 >/dev/null"; then + >&2 echo "[Warning], pm2 process already running" +else + echo "su -c \"cd ${NODE_PATH}; pm2 start ${NODE_FILE}\" -l devilbox" + cd "${COMPOSEPATH}" && docker-compose exec --user devilbox php bash -c "cd /shared/httpd/my-rhost/js; pm2 start ${NODE_FILE}" +fi diff --git a/.tests/vhost-tests/my-rhost/tests/test-url.sh b/.tests/vhost-tests/my-rhost/tests/test-url.sh new file mode 100755 index 00000000..8d5bdcf7 --- /dev/null +++ b/.tests/vhost-tests/my-rhost/tests/test-url.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +set -e +set -u + +SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )" +COMPOSEPATH="${SCRIPTPATH}/../../../../" + + +printf "[TEST] http://my-rhost.loc" +# 1st round +if ! cd "${COMPOSEPATH}" && docker-compose exec --user devilbox php curl http://my-rhost.loc | grep "Hellp World"; then + sleep 1; + # 2nd round + if ! cd "${COMPOSEPATH}" && docker-compose exec --user devilbox php curl http://my-rhost.loc | grep "Hellp World"; then + sleep 1; + # 3rd round + if ! cd "${COMPOSEPATH}" && docker-compose exec --user devilbox php curl http://my-rhost.loc | grep "Hellp World"; then + printf "\r[FAIL] http://my-rhost.loc\n" + cd "${COMPOSEPATH}" && docker-compose exec --user devilbox php curl http://my-rhost.loc + exit 1 + else + printf "\r[OK] http://my-rhost.loc (3 rounds)\n" + fi + else + printf "\r[OK] http://my-rhost.loc (2 rounds)\n" + fi +else + printf "\r[OK] http://my-rhost.loc (1 round)\n" +fi diff --git a/.tests/vhost-tests/my-vhost/.devilbox/.keepme b/.tests/vhost-tests/my-vhost/.devilbox/.keepme new file mode 100644 index 00000000..e69de29b diff --git a/.tests/vhost-tests/README.md b/.tests/vhost-tests/my-vhost/README.md similarity index 100% rename from .tests/vhost-tests/README.md rename to .tests/vhost-tests/my-vhost/README.md diff --git a/.tests/vhost-tests/htdocs/intranet-mail.php b/.tests/vhost-tests/my-vhost/htdocs/intranet-mail.php similarity index 100% rename from .tests/vhost-tests/htdocs/intranet-mail.php rename to .tests/vhost-tests/my-vhost/htdocs/intranet-mail.php diff --git a/.tests/vhost-tests/htdocs/memcached.php b/.tests/vhost-tests/my-vhost/htdocs/memcached.php similarity index 100% rename from .tests/vhost-tests/htdocs/memcached.php rename to .tests/vhost-tests/my-vhost/htdocs/memcached.php diff --git a/.tests/vhost-tests/htdocs/mongodb.php b/.tests/vhost-tests/my-vhost/htdocs/mongodb.php similarity index 100% rename from .tests/vhost-tests/htdocs/mongodb.php rename to .tests/vhost-tests/my-vhost/htdocs/mongodb.php diff --git a/.tests/vhost-tests/htdocs/mysql.php b/.tests/vhost-tests/my-vhost/htdocs/mysql.php similarity index 100% rename from .tests/vhost-tests/htdocs/mysql.php rename to .tests/vhost-tests/my-vhost/htdocs/mysql.php diff --git a/.tests/vhost-tests/htdocs/postgres.php b/.tests/vhost-tests/my-vhost/htdocs/postgres.php similarity index 100% rename from .tests/vhost-tests/htdocs/postgres.php rename to .tests/vhost-tests/my-vhost/htdocs/postgres.php diff --git a/.tests/vhost-tests/htdocs/redis.php b/.tests/vhost-tests/my-vhost/htdocs/redis.php similarity index 100% rename from .tests/vhost-tests/htdocs/redis.php rename to .tests/vhost-tests/my-vhost/htdocs/redis.php From 4c45a7e33d5599890994faafc619da141c8bbed7 Mon Sep 17 00:00:00 2001 From: cytopia Date: Sat, 29 Dec 2018 13:12:38 +0100 Subject: [PATCH 13/24] Add global autostart example --- autostart/run-node-js-projects.sh-example | 46 +++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100755 autostart/run-node-js-projects.sh-example diff --git a/autostart/run-node-js-projects.sh-example b/autostart/run-node-js-projects.sh-example new file mode 100755 index 00000000..a77207ec --- /dev/null +++ b/autostart/run-node-js-projects.sh-example @@ -0,0 +1,46 @@ +#!/usr/bin/env bash +# +# This is a generic example to startup your NodeJS projects with +# pm2 (https://github.com/Unitech/pm2) +# +# Important: As everything is run by the root user, you must explicitly direct the +# commands to the devilbox user. +# + + + +# Add the full paths of your Nodejs projects startup files into this array +# Each project separated by a newline and enclosed in double quotes. (No commas!) +# Paths are internal paths inside the PHP container. +NODE_PROJECTS=( + #"/shared/httpd/my-rhost/js/index.js" + #"/shared/httpd/my-node-hello-world/name/run.js" + #"/shared/httpd/another-node-project/javascript/run.js" +) + + +# Check if any projects have been defined +if [ ${#NODE_PROJECTS[@]} -eq 0 ]; then + echo "No projects defined. Exiting." + exit 0 +fi + + +# This loops over the paths, separates base directory and filename and will run it in the background +# as the user devilbox. There shouldn't be any need to change anything here. +for item in ${NODE_PROJECTS[*]}; do + NODE_PATH="$( dirname "${item}" )" + NODE_FILE="$( basename "${item}" )" + + if [ ! -d "${NODE_PATH}" ]; then + >&2 echo "[Warning], skipping startup, directory does not exist: ${NODE_PATH}" + continue; + fi + if [ ! -f "${NODE_PATH}/${NODE_FILE}" ]; then + >&2 echo "[Warning], skipping startup, file does not exist: ${NODE_PATH}/${NODE_FILE}" + continue; + fi + + echo "su -c \"cd ${NODE_PATH}; pm2 start ${NODE_FILE}\" -l devilbox" + su -c "cd ${NODE_PATH}; pm2 start ${NODE_FILE}" -l devilbox +done From cf5fb86e4b1b0f9dd68006ff4eafb572155abeb3 Mon Sep 17 00:00:00 2001 From: cytopia Date: Sat, 29 Dec 2018 13:13:01 +0100 Subject: [PATCH 14/24] Update vhost-gen templates --- cfg/vhost-gen/README.md | 32 ++++- cfg/vhost-gen/apache22.yml-example-rproxy | 0 ...yml-example => apache22.yml-example-vhost} | 0 cfg/vhost-gen/apache24.yml-example-rproxy | 0 ...yml-example => apache24.yml-example-vhost} | 0 cfg/vhost-gen/nginx.yml-example-rproxy | 127 ++++++++++++++++++ ...nx.yml-example => nginx.yml-example-vhost} | 0 7 files changed, 152 insertions(+), 7 deletions(-) create mode 100644 cfg/vhost-gen/apache22.yml-example-rproxy rename cfg/vhost-gen/{apache22.yml-example => apache22.yml-example-vhost} (100%) create mode 100644 cfg/vhost-gen/apache24.yml-example-rproxy rename cfg/vhost-gen/{apache24.yml-example => apache24.yml-example-vhost} (100%) create mode 100644 cfg/vhost-gen/nginx.yml-example-rproxy rename cfg/vhost-gen/{nginx.yml-example => nginx.yml-example-vhost} (100%) diff --git a/cfg/vhost-gen/README.md b/cfg/vhost-gen/README.md index c12340f4..d47fe99d 100644 --- a/cfg/vhost-gen/README.md +++ b/cfg/vhost-gen/README.md @@ -4,11 +4,29 @@ Enabling templates in this directory will change the webserver vhost configurati In order for template files to be picked up by the web server they must have the correct name. -Copy the example templates to a new file with the correct name. +Copy the example templates to a new file with the correct name either in this directory which +will then apply those settings for all vhosts or into the corresponding project directory to +only make the settings for a specific project. -| Web server | Example template | Template name | -|----------------|-------------------------|----------------| -| Apache 2.2 | `apache22.yml-example` | `apache22.yml` | -| Apache 2.4 | `apache24.yml-example` | `apache24.yml` | -| Nginx stable | `nginx.yml-example` | `nginx.yml` | -| Nginx mainline | `nginx.yml-example` | `nginx.yml` | + +## Normal virtual hosts + +| Web server | Example template | Template name | +|----------------|--------------------------------|----------------| +| Apache 2.2 | `apache22.yml-example-vhost` | `apache22.yml` | +| Apache 2.4 | `apache24.yml-example-vhost` | `apache24.yml` | +| Nginx stable | `nginx.yml-example-vhost` | `nginx.yml` | +| Nginx mainline | `nginx.yml-example-vhost` | `nginx.yml` | + + +## Reverse proxy virtual hosts + +**Do not apply the `*-rproxy` templates globally (in this directory), or everything will stop +working. Use them only for per project settings!** + +| Web server | Example template | Template name | +|----------------|--------------------------------|----------------| +| Apache 2.2 | `apache22.yml-example-rproxy` | `apache22.yml` | +| Apache 2.4 | `apache24.yml-example-rproxy` | `apache24.yml` | +| Nginx stable | `nginx.yml-example-rproxy` | `nginx.yml` | +| Nginx mainline | `nginx.yml-example-rproxy` | `nginx.yml` | diff --git a/cfg/vhost-gen/apache22.yml-example-rproxy b/cfg/vhost-gen/apache22.yml-example-rproxy new file mode 100644 index 00000000..e69de29b diff --git a/cfg/vhost-gen/apache22.yml-example b/cfg/vhost-gen/apache22.yml-example-vhost similarity index 100% rename from cfg/vhost-gen/apache22.yml-example rename to cfg/vhost-gen/apache22.yml-example-vhost diff --git a/cfg/vhost-gen/apache24.yml-example-rproxy b/cfg/vhost-gen/apache24.yml-example-rproxy new file mode 100644 index 00000000..e69de29b diff --git a/cfg/vhost-gen/apache24.yml-example b/cfg/vhost-gen/apache24.yml-example-vhost similarity index 100% rename from cfg/vhost-gen/apache24.yml-example rename to cfg/vhost-gen/apache24.yml-example-vhost diff --git a/cfg/vhost-gen/nginx.yml-example-rproxy b/cfg/vhost-gen/nginx.yml-example-rproxy new file mode 100644 index 00000000..2c3f685b --- /dev/null +++ b/cfg/vhost-gen/nginx.yml-example-rproxy @@ -0,0 +1,127 @@ +--- + +# Nginx vHost Template defintion for vhost-gen.py +# +# The 'feature' section contains optional features that can be enabled via +# conf.yml and will then be replaced into the main vhost ('structure' section) +# into their corresponding position: +# +# __XDOMAIN_REQ__ +# __PHP_FPM__ +# __ALIASES__ +# __DENIES__ +# __STATUS__ +# +# The features itself also contain variables to be adjusted in conf.yml +# and will then be replaced in their corresponding feature section +# before being replaced into the vhost section (if enabled): +# +# PHP-FPM: +# __PHP_ADDR__ +# __PHP_PORT__ +# XDomain: +# __REGEX__ +# Alias: +# __REGEX__ +# __PATH__ +# Deny: +# __REGEX__ +# Status: +# __REGEX__ +# +# Variables to be replaced directly in the vhost configuration can also be set +# in conf.yml and include: +# __VHOST_NAME__ +# __DOCUMENT_ROOT__ +# __INDEX__ +# __ACCESS_LOG__ +# __ERROR_LOG__ +# __PHP_ADDR__ +# __PHP_PORT__ +# + + +### +### Basic vHost skeleton +### +vhost: | + server { + listen __PORT____DEFAULT_VHOST__; + server_name __VHOST_NAME__; + + access_log "__ACCESS_LOG__" combined; + error_log "__ERROR_LOG__" warn; + + # Reverse Proxy definition (Ensure to adjust the port, currently '8000') + location / { + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_pass http://php:8000; + } + + __REDIRECT__ + __SSL__ + __ALIASES__ + __DENIES__ + __SERVER_STATUS__ + # Custom directives + __CUSTOM__ + } + +### +### vHost Type (normal or reverse proxy) +### +vhost_type: + docroot: "" + rproxy: "" + +### +### Optional features to be enabled in vHost +### +features: + + # SSL Configuration + ssl: | + ssl_certificate __SSL_PATH_CRT__; + ssl_certificate_key __SSL_PATH_KEY__; + ssl_protocols __SSL_PROTOCOLS__; + ssl_prefer_server_ciphers __SSL_HONOR_CIPHER_ORDER__; + ssl_ciphers __SSL_CIPHERS__; + + # Redirect to SSL directive + redirect: | + return 301 https://__VHOST_NAME__:__SSL_PORT__$request_uri; + + # PHP-FPM left empty, as we are an reverse proxy configuration + php_fpm: "" + + alias: | + # Alias Definition + location ~ __ALIAS__ { + root __PATH__; + __XDOMAIN_REQ__ + } + + deny: | + # Deny Definition + location ~ __REGEX__ { + deny all; + } + + server_status: | + # Status Page + location ~ __REGEX__ { + stub_status on; + access_log off; + } + + xdomain_request: | + # Allow cross domain request from these hosts + if ( $http_origin ~* (__REGEX__) ) { + add_header "Access-Control-Allow-Origin" "$http_origin"; + add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; + add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range'; + add_header 'Access-Control-Expose-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range'; + add_header 'Access-Control-Max-Age' 0; + return 200; + } diff --git a/cfg/vhost-gen/nginx.yml-example b/cfg/vhost-gen/nginx.yml-example-vhost similarity index 100% rename from cfg/vhost-gen/nginx.yml-example rename to cfg/vhost-gen/nginx.yml-example-vhost From 0bf985103c288b69c5108079a5a6f1921d0abe54 Mon Sep 17 00:00:00 2001 From: cytopia Date: Sat, 29 Dec 2018 13:55:53 +0100 Subject: [PATCH 15/24] Fix vhost-gen templates for reverse proxy settings --- cfg/vhost-gen/apache22.yml-example-rproxy | 133 +++++++++++++++++++++ cfg/vhost-gen/apache22.yml-example-vhost | 15 +-- cfg/vhost-gen/apache24.yml-example-rproxy | 135 ++++++++++++++++++++++ cfg/vhost-gen/apache24.yml-example-vhost | 14 +-- 4 files changed, 276 insertions(+), 21 deletions(-) diff --git a/cfg/vhost-gen/apache22.yml-example-rproxy b/cfg/vhost-gen/apache22.yml-example-rproxy index e69de29b..befed4f8 100644 --- a/cfg/vhost-gen/apache22.yml-example-rproxy +++ b/cfg/vhost-gen/apache22.yml-example-rproxy @@ -0,0 +1,133 @@ +--- + +# Apache 2.2 vHost Template defintion for vhost-gen.py +# +# The 'feature' section contains optional features that can be enabled via +# conf.yml and will then be replaced into the main vhost ('structure' section) +# into their corresponding position: +# +# __XDOMAIN_REQ__ +# __PHP_FPM__ +# __ALIASES__ +# __DENIES__ +# __STATUS__ +# +# The features itself also contain variables to be adjusted in conf.yml +# and will then be replaced in their corresponding feature section +# before being replaced into the vhost section (if enabled): +# +# PHP-FPM: +# __PHP_ADDR__ +# __PHP_PORT__ +# XDomain: +# __REGEX__ +# Alias: +# __REGEX__ +# __PATH__ +# Deny: +# __REGEX__ +# Status: +# __REGEX__ +# +# Variables to be replaced directly in the vhost configuration can also be set +# in conf.yml and include: +# __VHOST_NAME__ +# __DOCUMENT_ROOT__ +# __INDEX__ +# __ACCESS_LOG__ +# __ERROR_LOG__ +# __PHP_ADDR__ +# __PHP_PORT__ +# + + +### +### Basic vHost skeleton +### +vhost: | + + ServerName __VHOST_NAME__ + + CustomLog "__ACCESS_LOG__" combined + ErrorLog "__ERROR_LOG__" + + # Reverse Proxy definition (Ensure to adjust the port, currently '8000') + ProxyRequests On + ProxyPreserveHost On + ProxyPass / http://php:8000/ + ProxyPassReverse / http://php:8000/ + + __REDIRECT__ + __SSL__ + __ALIASES__ + __DENIES__ + __SERVER_STATUS__ + # Custom directives + __CUSTOM__ + + +### +### vHost Type (normal or reverse proxy) +### +vhost_type: + docroot: "" + rproxy: "" + +### +### Optional features to be enabled in vHost +### +features: + + # SSL Configuration + ssl: | + SSLEngine on + SSLCertificateFile "__SSL_PATH_CRT__" + SSLCertificateKeyFile "__SSL_PATH_KEY__" + SSLProtocol __SSL_PROTOCOLS__ + SSLHonorCipherOrder __SSL_HONOR_CIPHER_ORDER__ + SSLCipherSuite __SSL_CIPHERS__ + + # Redirect to SSL directive + redirect: | + RedirectMatch (.*) https://__VHOST_NAME__:__SSL_PORT__$1 + + # PHP-FPM left empty, as we are an reverse proxy configuration + php_fpm: "" + + alias: | + # Alias Definition + Alias "__ALIAS__" "__PATH____ALIAS__" + + __XDOMAIN_REQ__ + + + Order allow,deny + Allow from all + + + deny: | + # Deny Definition + + Order allow,deny + Deny from all + + + server_status: | + # Status Page + + SetHandler server-status + Order allow,deny + Allow from all + + + xdomain_request: | + # Allow cross domain request from these hosts + SetEnvIf Origin "__REGEX__" AccessControlAllowOrigin=$0 + Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin + Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT" + Header always set Access-Control-Max-Age "0" + Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token" + # Added a rewrite to respond with a 200 SUCCESS on every OPTIONS request. + RewriteEngine On + RewriteCond %{REQUEST_METHOD} OPTIONS + RewriteRule ^(.*)$ $1 [R=200,L] diff --git a/cfg/vhost-gen/apache22.yml-example-vhost b/cfg/vhost-gen/apache22.yml-example-vhost index 158de62e..1740ce0d 100644 --- a/cfg/vhost-gen/apache22.yml-example-vhost +++ b/cfg/vhost-gen/apache22.yml-example-vhost @@ -87,17 +87,10 @@ vhost_type: # Reverse Proxy (-r) rproxy: | # Define the vhost to reverse proxy - ProxyRequests off - ProxyPass __LOCATION__ __PROXY_PROTO://__PROXY_ADDR__:__PROXY_PORT__ - ProxyHTMLURLMap __PROXY_PROTO://__PROXY_ADDR__:__PROXY_PORT__ __LOCATION__ - - ProxyPassReverse / - SetOutputFilter proxy-html - ProxyHTMLURLMap / __LOCATION__ - ProxyHTMLURLMap __LOCATION__ __LOCATION__ - RequestHeader unset Accept-Encoding - - + ProxyRequests On + ProxyPreserveHost On + ProxyPass __LOCATION__ __PROXY_PROTO__://__PROXY_ADDR__:__PROXY_PORT____LOCATION__ + ProxyPassReverse __LOCATION__ __PROXY_PROTO__://__PROXY_ADDR__:__PROXY_PORT____LOCATION__ ### ### Optional features to be enabled in vHost diff --git a/cfg/vhost-gen/apache24.yml-example-rproxy b/cfg/vhost-gen/apache24.yml-example-rproxy index e69de29b..75432a42 100644 --- a/cfg/vhost-gen/apache24.yml-example-rproxy +++ b/cfg/vhost-gen/apache24.yml-example-rproxy @@ -0,0 +1,135 @@ +--- + +# Apache 2.4 vHost Template defintion for vhost-gen.py +# +# The 'feature' section contains optional features that can be enabled via +# conf.yml and will then be replaced into the main vhost ('structure' section) +# into their corresponding position: +# +# __XDOMAIN_REQ__ +# __PHP_FPM__ +# __ALIASES__ +# __DENIES__ +# __STATUS__ +# +# The features itself also contain variables to be adjusted in conf.yml +# and will then be replaced in their corresponding feature section +# before being replaced into the vhost section (if enabled): +# +# PHP-FPM: +# __PHP_ADDR__ +# __PHP_PORT__ +# XDomain: +# __REGEX__ +# Alias: +# __REGEX__ +# __PATH__ +# Deny: +# __REGEX__ +# Status: +# __REGEX__ +# +# Variables to be replaced directly in the vhost configuration can also be set +# in conf.yml and include: +# __VHOST_NAME__ +# __DOCUMENT_ROOT__ +# __INDEX__ +# __ACCESS_LOG__ +# __ERROR_LOG__ +# __PHP_ADDR__ +# __PHP_PORT__ +# + + +### +### Basic vHost skeleton +### +vhost: | + + ServerName __VHOST_NAME__ + + CustomLog "__ACCESS_LOG__" combined + ErrorLog "__ERROR_LOG__" + + # Reverse Proxy definition (Ensure to adjust the port, currently '8000') + ProxyRequests On + ProxyPreserveHost On + ProxyPass / http://php:8000/ + ProxyPassReverse / http://php:8000/ + + __REDIRECT__ + __SSL__ + __ALIASES__ + __DENIES__ + __SERVER_STATUS__ + # Custom directives + __CUSTOM__ + + +### +### vHost Type (normal or reverse proxy) +### +vhost_type: + docroot: "" + rproxy: "" + +### +### Optional features to be enabled in vHost +### +features: + + # SSL Configuration + ssl: | + SSLEngine on + SSLCertificateFile "__SSL_PATH_CRT__" + SSLCertificateKeyFile "__SSL_PATH_KEY__" + SSLProtocol __SSL_PROTOCOLS__ + SSLHonorCipherOrder __SSL_HONOR_CIPHER_ORDER__ + SSLCipherSuite __SSL_CIPHERS__ + + # Redirect to SSL directive + redirect: | + RedirectMatch (.*) https://__VHOST_NAME__:__SSL_PORT__$1 + + # PHP-FPM left empty, as we are an reverse proxy configuration + php_fpm: "" + + alias: | + # Alias Definition + Alias "__ALIAS__" "__PATH____ALIAS__" + + __XDOMAIN_REQ__ + + + Order allow,deny + Allow from all + Require all granted + + + deny: | + # Deny Definition + + Order allow,deny + Deny from all + + + server_status: | + # Status Page + + SetHandler server-status + Order allow,deny + Allow from all + Require all granted + + + xdomain_request: | + # Allow cross domain request from these hosts + SetEnvIf Origin "__REGEX__" AccessControlAllowOrigin=$0 + Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin + Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT" + Header always set Access-Control-Max-Age "0" + Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token" + # Added a rewrite to respond with a 200 SUCCESS on every OPTIONS request. + RewriteEngine On + RewriteCond %{REQUEST_METHOD} OPTIONS + RewriteRule ^(.*)$ $1 [R=200,L] diff --git a/cfg/vhost-gen/apache24.yml-example-vhost b/cfg/vhost-gen/apache24.yml-example-vhost index 8703d096..ca8a036f 100644 --- a/cfg/vhost-gen/apache24.yml-example-vhost +++ b/cfg/vhost-gen/apache24.yml-example-vhost @@ -88,16 +88,10 @@ vhost_type: # Reverse Proxy (-r) rproxy: | # Define the vhost to reverse proxy - ProxyRequests off - ProxyPass __LOCATION__ __PROXY_PROTO://__PROXY_ADDR__:__PROXY_PORT__ - ProxyHTMLURLMap __PROXY_PROTO://__PROXY_ADDR__:__PROXY_PORT__ __LOCATION__ - - ProxyPassReverse / - SetOutputFilter proxy-html - ProxyHTMLURLMap / __LOCATION__ - ProxyHTMLURLMap __LOCATION__ __LOCATION__ - RequestHeader unset Accept-Encoding - + ProxyRequests On + ProxyPreserveHost On + ProxyPass __LOCATION__ __PROXY_PROTO__://__PROXY_ADDR__:__PROXY_PORT____LOCATION__ + ProxyPassReverse __LOCATION__ __PROXY_PROTO__://__PROXY_ADDR__:__PROXY_PORT____LOCATION__ ### From b23fef2fa49c43228fa3d24c1018b55c23d4f0de Mon Sep 17 00:00:00 2001 From: cytopia Date: Sat, 29 Dec 2018 14:22:51 +0100 Subject: [PATCH 16/24] Ensure tests really fail in case of errors --- .tests/Makefile | 9 ++++-- .tests/vhost-tests/my-rhost/start-pm.sh | 10 +++---- .tests/vhost-tests/my-rhost/tests/test-url.sh | 30 +++++++++++++++++-- 3 files changed, 38 insertions(+), 11 deletions(-) diff --git a/.tests/Makefile b/.tests/Makefile index 27d4ac8c..875e68e8 100644 --- a/.tests/Makefile +++ b/.tests/Makefile @@ -217,7 +217,8 @@ test-vhost: $(PHP_FILES), \ printf "[TEST] docker-compose exec php curl -sS http://$(VHOST)/$(file)"; \ cd $(CURRENT_PATH) && $(MAKE) _clean-round >/dev/null; \ - if ! cd $(DEVILBOX_PATH) && docker-compose exec php curl -sS http://$(VHOST)/$(file) | grep -qE '^OK$$'; then \ + cd $(DEVILBOX_PATH); \ + if ! docker-compose exec php curl -sS http://$(VHOST)/$(file) | grep -qE '^OK$$'; then \ printf "\r[FAIL] docker-compose exec php curl -sS http://$(VHOST)/$(file)\n"; \ cd $(DEVILBOX_PATH) && docker-compose exec php curl -sS http://$(VHOST)/$(file); \ cd $(DEVILBOX_PATH) && docker-compose exec php curl -sS -I http://$(VHOST)/$(file); \ @@ -236,7 +237,8 @@ test-vhost: $(PHP_FILES), \ printf "[TEST] docker-compose exec php curl -sS https://$(VHOST)/$(file)"; \ cd $(CURRENT_PATH) && $(MAKE) _clean-round >/dev/null; \ - if ! cd $(DEVILBOX_PATH) && docker-compose exec php curl -sS https://$(VHOST)/$(file) | grep -qE '^OK$$'; then \ + cd $(DEVILBOX_PATH); \ + if ! docker-compose exec php curl -sS https://$(VHOST)/$(file) | grep -qE '^OK$$'; then \ printf "\r[FAIL] docker-compose exec php curl -sS https://$(VHOST)/$(file)\n"; \ cd $(DEVILBOX_PATH) && docker-compose exec php curl -sS https://$(VHOST)/$(file); \ cd $(DEVILBOX_PATH) && docker-compose exec php curl -sS -I https://$(VHOST)/$(file); \ @@ -255,7 +257,8 @@ test-vhost: $(PHP_FILES), \ printf "[TEST] docker-compose exec php php /shared/httpd/$(PROJECTV)/htdocs/$(file)"; \ cd $(CURRENT_PATH) && $(MAKE) _clean-round >/dev/null; \ - if ! cd $(DEVILBOX_PATH) && docker-compose exec php php /shared/httpd/$(PROJECTV)/htdocs/$(file) | grep -q '^OK$$'; then \ + cd $(DEVILBOX_PATH); \ + if ! docker-compose exec php php /shared/httpd/$(PROJECTV)/htdocs/$(file) | grep -q '^OK$$'; then \ printf "\r[TEST] docker-compose exec php php /shared/httpd/$(PROJECTV)/htdocs/$(file)\n"; \ cd $(DEVILBOX_PATH) && docker-composeexec php php /shared/httpd/$(PROJECTV)/htdocs/$(file); \ cd $(CURRENT_PATH) && $(MAKE) _logs; \ diff --git a/.tests/vhost-tests/my-rhost/start-pm.sh b/.tests/vhost-tests/my-rhost/start-pm.sh index e2acf574..8ec6cc5a 100755 --- a/.tests/vhost-tests/my-rhost/start-pm.sh +++ b/.tests/vhost-tests/my-rhost/start-pm.sh @@ -5,26 +5,26 @@ set -u SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )" COMPOSEPATH="${SCRIPTPATH}/../../../" - +cd "${COMPOSEPATH}" NODE_PATH="/shared/httpd/my-rhost/js" NODE_FILE="index.js" -if ! cd "${COMPOSEPATH}" && docker-compose exec php test -d "${NODE_PATH}"; then +if ! docker-compose exec php test -d "${NODE_PATH}"; then >&2 echo "[Warning], skipping startup, directory does not exist in container: ${NODE_PATH}" exit 1 fi -if ! cd "${COMPOSEPATH}" && docker-compose exec php test -f "${NODE_PATH}/${NODE_FILE}"; then +if ! docker-compose exec php test -f "${NODE_PATH}/${NODE_FILE}"; then >&2 echo "[Warning], skipping startup, file does not exist in container: ${NODE_PATH}/${NODE_FILE}" exit 1 fi # Check if at least one pm2 process is already running -if cd "${COMPOSEPATH}" && docker-compose exec --user devilbox php bash -c "cd /shared/httpd/my-rhost/js; pm2 show 0 >/dev/null"; then +if docker-compose exec --user devilbox php bash -c "cd /shared/httpd/my-rhost/js; pm2 show 0 >/dev/null"; then >&2 echo "[Warning], pm2 process already running" else echo "su -c \"cd ${NODE_PATH}; pm2 start ${NODE_FILE}\" -l devilbox" - cd "${COMPOSEPATH}" && docker-compose exec --user devilbox php bash -c "cd /shared/httpd/my-rhost/js; pm2 start ${NODE_FILE}" + docker-compose exec --user devilbox php bash -c "cd /shared/httpd/my-rhost/js; pm2 start ${NODE_FILE}" fi diff --git a/.tests/vhost-tests/my-rhost/tests/test-url.sh b/.tests/vhost-tests/my-rhost/tests/test-url.sh index 8d5bdcf7..ae5ec760 100755 --- a/.tests/vhost-tests/my-rhost/tests/test-url.sh +++ b/.tests/vhost-tests/my-rhost/tests/test-url.sh @@ -5,17 +5,18 @@ set -u SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )" COMPOSEPATH="${SCRIPTPATH}/../../../../" +cd "${COMPOSEPATH}" printf "[TEST] http://my-rhost.loc" # 1st round -if ! cd "${COMPOSEPATH}" && docker-compose exec --user devilbox php curl http://my-rhost.loc | grep "Hellp World"; then +if ! docker-compose exec --user devilbox php curl http://my-rhost.loc | grep "Hello World"; then sleep 1; # 2nd round - if ! cd "${COMPOSEPATH}" && docker-compose exec --user devilbox php curl http://my-rhost.loc | grep "Hellp World"; then + if ! docker-compose exec --user devilbox php curl http://my-rhost.loc | grep "Hello World"; then sleep 1; # 3rd round - if ! cd "${COMPOSEPATH}" && docker-compose exec --user devilbox php curl http://my-rhost.loc | grep "Hellp World"; then + if ! docker-compose exec --user devilbox php curl http://my-rhost.loc | grep "Hello World"; then printf "\r[FAIL] http://my-rhost.loc\n" cd "${COMPOSEPATH}" && docker-compose exec --user devilbox php curl http://my-rhost.loc exit 1 @@ -28,3 +29,26 @@ if ! cd "${COMPOSEPATH}" && docker-compose exec --user devilbox php curl http:// else printf "\r[OK] http://my-rhost.loc (1 round)\n" fi + + +printf "[TEST] https://my-rhost.loc" +# 1st round +if ! docker-compose exec --user devilbox php curl https://my-rhost.loc | grep "Hello World"; then + sleep 1; + # 2nd round + if ! docker-compose exec --user devilbox php curl https://my-rhost.loc | grep "Hello World"; then + sleep 1; + # 3rd round + if ! docker-compose exec --user devilbox php curl https://my-rhost.loc | grep "Hello World"; then + printf "\r[FAIL] https://my-rhost.loc\n" + cd "${COMPOSEPATH}" && docker-compose exec --user devilbox php curl https://my-rhost.loc + exit 1 + else + printf "\r[OK] https://my-rhost.loc (3 rounds)\n" + fi + else + printf "\r[OK] https://my-rhost.loc (2 rounds)\n" + fi +else + printf "\r[OK] https://my-rhost.loc (1 round)\n" +fi From 529646520d1034198b246f3da35032bc624c0b67 Mon Sep 17 00:00:00 2001 From: cytopia Date: Sat, 29 Dec 2018 14:23:13 +0100 Subject: [PATCH 17/24] Normalize vhost-gen configs --- cfg/vhost-gen/apache22.yml-example-vhost | 1 + 1 file changed, 1 insertion(+) diff --git a/cfg/vhost-gen/apache22.yml-example-vhost b/cfg/vhost-gen/apache22.yml-example-vhost index 1740ce0d..9a571c5e 100644 --- a/cfg/vhost-gen/apache22.yml-example-vhost +++ b/cfg/vhost-gen/apache22.yml-example-vhost @@ -92,6 +92,7 @@ vhost_type: ProxyPass __LOCATION__ __PROXY_PROTO__://__PROXY_ADDR__:__PROXY_PORT____LOCATION__ ProxyPassReverse __LOCATION__ __PROXY_PROTO__://__PROXY_ADDR__:__PROXY_PORT____LOCATION__ + ### ### Optional features to be enabled in vHost ### From ccb70befc319584fb69287846616507c04bb81c5 Mon Sep 17 00:00:00 2001 From: cytopia Date: Sat, 29 Dec 2018 15:25:41 +0100 Subject: [PATCH 18/24] Reflect Reverse proxy capabilities in README --- README.md | 34 ++++++++++++++++++++++++++++++++- docs/img/logo_tools/sphinx.png | Bin 0 -> 90759 bytes 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 docs/img/logo_tools/sphinx.png diff --git a/README.md b/README.md index 374f84e4..86d96564 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,12 @@
Support for valid https out of the box. -The Devilbox is a modern and highly customisable **dockerized PHP stack** supporting full **LAMP** and **MEAN** and running on all major platforms. The main goal is to easily switch and combine any version required for local development. It supports an **unlimited number of projects** for which **vhosts**, **SSL certificates** and **DNS records** are created automatically. Email catch-all and popular development tools will be at your service as well. Configuration is not necessary, as everything is already pre-setup. +The Devilbox is a modern and highly customisable **dockerized PHP stack** supporting full **LAMP** +and **MEAN** and running on all major platforms. The main goal is to easily switch and combine +any version required for local development. It supports an **unlimited number of projects** for +which **vhosts**, **SSL certificates** and **DNS records** are created automatically. +**Reverse proxies** per project are supported to ensure listening server such as NodeJS can also be reached. +Email catch-all and popular development tools will be at your service as well. Configuration is not necessary, as everything is already pre-setup. Furthermore, the Devilbox provides an **identical** and **reproducible development environment** for different host operating systems. @@ -410,6 +415,10 @@ The Devilbox has everything setup for you. The only thing you will have to insta :star: Custom vhosts You can overwrite and customise the default applied vhost configuration for every single vhost. + + :star: Reverse proxy + Have your NodeJS application served with a nice domain name and valid HTTPS. + :star: Custom domains Choose whatever development domain you desire: *.loc, *.local, *.dev or use real domains as well: *.example.com @@ -418,6 +427,10 @@ The Devilbox has everything setup for you. The only thing you will have to insta :star: Auto DNS An integrated BIND server is able to create DNS entries automatically for your chosen domains. + + :star: Auto start scripts + Custom startup scripts can be provided for all PHP container equally and also differently per PHP version to install custom software or automatically startup up your required tools. + :star: Custom PHP config Overwrite any setting for PHP. @@ -533,6 +546,10 @@ The following tools will assist you on creating new projects easily as well as h :wrench: php code beautifier phpcbf is a command line tool that automatically correct coding standard violations. + + :wrench: pm2 + pm2 is Node.js Production Process Manager with a built-in Load Balancer. + :wrench: scss-lint scss-lint is a css/scss linter. @@ -735,6 +752,21 @@ As far as tested there are no limitations and you can use any Framework or CMS j > [Setup Yii](https://devilbox.readthedocs.io/en/latest/examples/setup-yii.html) | > [Setup Zend](https://devilbox.readthedocs.io/en/latest/examples/setup-zend.html) +#### Supported reverse proxied applications + +As far as tested there are no limitations and you can use any application that creates an open port. +These ports will be reverse proxied by the web server and even allow you to use valid HTTPS for them. +By the built-in autostart feature of the Devilbox you can ensure that your application automatically +starts up as soon as you run `docker-compose up`. + +Devilbox +Devilbox + +> **Documentation:**
+> [Setup reverse proxy NodeJs](https://devilbox.readthedocs.io/en/latest/examples/setup-reverse-proxy-nodejs.html) | +> [Setup reverse proxy Sphinx documentation](https://devilbox.readthedocs.io/en/latest/examples/setup-reverse-proxy-sphinx-docs.html) + + ## Intranet overview The Devilbox comes with a pre-configured intranet on `http://localhost` and `https://localhost`. This can be explicitly disabled or password-protected. The intranet will not only show you, the chosen configuration, but also validate the status of the current configuration, such as if **DNS records** exists (on host and container), are directories properly set-up. Additionally it provides external tools to let you interact with databases and emails. diff --git a/docs/img/logo_tools/sphinx.png b/docs/img/logo_tools/sphinx.png new file mode 100644 index 0000000000000000000000000000000000000000..e0f63e605e4ce35dda9c5bc3e8121ca513e1009c GIT binary patch literal 90759 zcma&MWl$we&@Olm2X}XOcXxLNXK;6Shr!+59R_!2U~nDW-Q8`l0haf>yZ6t=-q`4< zu8xeZj7sSzpX{herEgLQu(+@Q002QoT3iJH049A6PiV+5iND?tLI8l8%3Dp-RmI4I z*wNX++{)IB*wxF?jM&W6${YajT&u~kO4H?X4*fL2&<8s*;=u+x_Jq>!`5i5vSX5%~ z)}|m^ZLD$R10dZ)6z1oB%m3`T`u)tIGR>I2bY8xAPZ!U>caVK0^jpv%c=~$!$!74{ zV|RI3?|j?gF>G-8;YFlndYRd)``f%f`&05R-R9We_bq&=>CGhScXe+5wnvFUdjHF-pV<2VuAc$YAyVB>qWS3GG1SjQ z%F(~Wcs~9n3e{|O|J=68U!By|syOROezk+y_W0%0kaFr*eb;sSWB2W^Ka#&kS$pIP zNmlgsdMFBMm7f?Q)gQ;;?m9l(u#DoN;bm+O`RkTEZG5NS1*Y$aT&?VLPJ`5C3Ja)A zBSa=J*FF224&hU|iaWV1jw})nioZ7vx}Wp^eK-~Rq;`^6vcUK~gLBi`V26?Z6!O9X z!aQ}A9oAgGUHXSS9y393qV(ORb+GlFE+3;-h2(dn>gS+c(+To@(!|b8J%Q1qJTbyk zl9TSxMG{!wFbrdYov%brn;x(nwnqq4Q{?S1Hpo<<<`B9$2+sHWIMCnTv(AVT%T`vP zWF=DejdvsnF?cvzrl~d3l`hQ5G8O;HvaT&%TB~HXZe4Jut7%>G#k<%5UC`1Q>do>GfG!} z;@eLr7m80Er|3^==Wm5?pAk8#Cq0R8E*l@D))s=2GEBmiqBRwYScdxwZ0;YR_|N;g zt55I1-(52S?znR56WX~r^$8?gn88^+ncV4{ujSz(J4_9j%l1=7f4VU%E}~P*JT7wv2Kw;Cul$v~E}HcLHe|2k4w^!YIhg(!}-PTh!7pS(=HVt`Q6TEcy>0OPb*_6u7Eo=Hd zhesZ}R6bL#$5wBh>tUreT7mMvnvFx`=uPkcFz4E^32&G#Q~T-a)4_ckv#Cwd#$li$ z^GRCoSX;|}Aae;Lun}Bx0+Yj$ba)jZaNkDq)ziQ+ukwgDaWnmmeW}@1zw)!BJ36=J ztrT37m9ax|%x|d|9Ba3;O}=OAn-bUk72A`~)U*6c(R>l#f{LNnJ0Z<-6!GIGi>raV531 zG-%{?JtbF@zPGopWbn)E3q4 z9jL-6BENXMuQom6{d}-F86d?$k`IZxaa7@|nBIgefCs#)!E{Jsu0w8X5DFxE2D@fg zVkaf0d_P>JJ<=M{oXo1Kmf|tg4pOLSaUCt+iM3IRavE|COY9GrBSrk@r7eKzaLI?P zfy$1ua|lgvh%g8i;L(iMYIhbC(%fE-W3_++kvKTI+)0g5xCWFTO9eKnk}Ym5gu<)~ zhVvwG4&F&1i-tE9CM(38!7MN#cdgOAxtzhm`)SYxEoslL)&=l-DMy-U@+=V2Qvb@p z?kPwG6_udd=PrqC-7kQA7aIey>{bKh@dr31`Imts6*VhxJc5;%6AOE{)xh1WJmpDN z>V1TN=$@Shq6*($N<^LIIa@_#QLl$k`rYR6}9H!LR(xCCX`!XgpGAd){Cbu5?D&N1bF*GqieOT*2J7^Fbn&aC1d6- z+A7GU@O2=f1MVyaGN@b>@hUpl*E35>Oc`8>@oSZkCceQ6^YjvG2|FHXiYMBTDl8!* z;}@{mQ*?&M?Mcuv7BpYx0{YoBNDd)(O~87VEgGK4A5){rF2OYuvsLAkmat=4heXxz z2wX)iM@(W+cBjFR$CaerySh=XKt%dQAq9m~@b3tNkT+xtERo_mLnJkbIKQDVVE;;; z*uDwID`j#Aw2_mT<>E+VZ>6A?Y&Ot*VjJ}>EYkq_Rc>Cj4|A}eu~lIH$<=c_(@%+- zCBqM~YW-j>#e!rJSmlJ-D(6j+7rfG@WI~zCoK>v`_6D4f35$-9`V_xv9?A!9{6g0B zs1euGqr)*I^lAYk;7jXPc}*;EC&z)rp2d&`W*pS6I?1|BnnFX6&hRc2lIE89cI~tO z4%s*1B}GS?L)1-Z+8rp7p$T3jy<%n_$YFsgm(^g@k*dy>?qo#)MBISEK>w{bqMO4; zSoI@+>yweKU=^%YMCLqD?B%q-!7LzVv|;X|beP3r+)DU`7$O~>`rwpH5-G;$053C2 zWfyT9kPaWw&z91d%bEfY2dPZzI240+YtHDSp(lBItqCH&OgNR#bt|Lxp;#p|?Bgpy zI>s}hK#Cv7KZC%L>?XxIVCLoveE6oUgmx(JN}sCex@HB&)MN0x;~1?vD)L9de*_Ow z5TS7L7+X{w<0!JGtatg3k9k7!BS@Z4O<;%OH#JUqF>n3zSbT=M?2xNbzbc@?x(V5x ziNy@{f!sRnrYXi1fZ3r4MvrXh)}C_JfqH>hAai0 z1r!;GCSS56c@%Y>Ar)N}Qco2jXIF z8k9;>r+CN|m<5_cfS0A`-qwH+Q2)n5>LE{wD4Tw=PD)(=j9zJOfUs5J@5YCX;!!4dvXv_k$GOkV&=T7nslV%ixhL2Ws3p8Ft)| z*bi)X919L!-~yNjMl+IF64A4{qdeHfCGjX&-Eqmhhl==Yp9W@`Bt zGzoHVc9WqxC$lz;A-g^e`?3^=WA|F5((N>1quVUBlUs$KMD3v7gujWA* z$88Ifw9AVQcVnZkApYtDCmbC;_cRRY(h0R9Lo7~8B^PMK0JLJ%ECmW7NDy}OHv+Vf#bno zLlG>`#;IdT`%e{Dz@o=kZ%I4)uqY)&@t+$9GpzKYb_bA)Oh3pV()gdl9{O8RnN`Xc zCiHj#NG;#U9j|Uk!W)})fex9$Ge~(o>Do16bh#6=*^CI_V;hEFIN1f>p5!q76t?u)_@;@oW>*tXQOR^Rxwd5abV4D6GRbrA#c))-~_{z1$Y4rPPjnC zL~(0Z3M>k1yXP9q(9eLDzFRG zYeZzI$a4o+1HY=F3?-r@EPkazz@o^5vUUk_BuPv>21uIF0nif>h21#OU{{$?G%`-~ z;}zsVyS_70=jxL;v2qoXuURKNG8zRa7uuwPa4?&b<<+vkEVik=?FL*mdRRQ7Fat3U zr2Y}W3v-3>+T;P8Agk?=#8I5_Qt4?k=w}LUsF-Umxmiox>7gW|+aS4n!>Oj8$l)lf z*z#WOv@tCS1Dz`@3a+s4@`of5cc%HC*+#492+Z@PNyIdb$U!Fi=RFJlCTAV0fp@-o zk;DT{GDNq`&q8&rhBqcWL;Fev)$p_6n+lD{FG9^D;K=>l8OfvEB1ZL)<)z>>aFhfE z&pNxa)4!1DRiOV(tr+jJX^lBS0t_^=`8frO7ezX3tR z;Vi%4U9+L4<=#o|Hfz|}T8c>r^_d`jCp#*QpF%*Z)~r1tH?*#A4BxpDH^2L4%0ik% zexd&@TU2n(JNDVg5uCIf{a;ALVOjE-lKv|4MT8ZR={!rUsi#Pi-VRZKo%Dqb^f52% zVz}=f0Z&{^tHO+7zl$C!&^Fw z!#3PK3HeYHJ$xp64vQH=$#+cup&g(Nm0VteAQ%LV)*d9(z}#3KRvXBwu%4Pi`IKev z4s)^DvMB~To`G`D;8b}DT6M0silu-G!?-ccTt?+o#DUCpNZggIiCx`J#Nd6u<}xn? zmXNTlU*Dj3oFpf)lB^^uO4~UHsc(mhgau?S<0K$- zrYyMPU6kmr7kG{g{X?1o8(TSiAji%me{~-dZ`fMH2w2hqe@|Q15bk#}K*u}qQ%lk-&wLSGSI4Yj!VMtVlQ$h+eqHED_ zO1aen3qk5<*fdS}#0wJq!dNb?&=^6w#{OP9n&fDL)`~KtEfM3dCt5oR9B$Omw7>G@ zn0b4*cD*W~76`QIF};`{==0K0Mf%ev>4krhX!rL0YPwh|Q}r@T?w>un^}X`i5pjR; zdGkjbC-7+j8qR+p&Wg&j!|AmYZ7L@n7$4?XnUocO7s7yWN+~4hARYvpw4p~P6Anh? z2X{@fO+J64#Qy2IMvQRph{4cG()@kTYpI6S(`E z(wLSweLzNcY*9cSKlL_)eg#B)DLJ;D`@qe0Vamk29?UMFDPf% zLtn!sE4Vz1X{`mjgKfB$w3MsoS{nHs4uUd}lfO~Wpl@NMY;NElmxH8a6YdlSScKcP ze$vtVL&ALLN~t?-hb*75x|s6{OhIv=+bB~+e^^K>L9}HqB3pIK;Eh5q)_S`x8s7+> zqTusT4aNU~$u3v75_1~I$!d+{H0YwDTVkVxp75Js@}$AUom)`6XmG5Cmwz9@l3D(Ch}?>2_kfx=udrpN8LQaoM&qh% zlUbACV#r*1!qB{~+<&tZcILqehOs)8AjIDq`o%BQd<`ss%BzrbCoxj7M2#m-+e+PM z-)27;3U)6SKahM+$7?bqYSel-vxNSh?CnF8uj2=CrQz6n1lw6iLF1aP;YolTdyIZU z*PODXFw0rUv~rlkIh~TOkIgpjon_#IsRZU<`XXo&K!1~KQ7l^+-ho4>8r9a+zK4#J zyHlv;;6NAaKP{z>B$|lIDwQZ+a6DFUwSTiLKVxhcD(HFHWn_tSW!*YdwM=O{KE&_& zPin~G^JuBRo3BADm;IHOh)&^49raeIo>-4vU(1h(I}7P@0ro?Sz%F3n$I#9NcEjW} zUZwo8Xhe}LVSGoaPn33?Hx)P<(9@?+8@?#g_qT^WDPdpOU8GEm8GQ~$6ZX)!C2 zgFanU!kaKEoyWsVNRWk)1Be6dCYA@8i;)j1OMJ5YMM_QF0Ru-{⪻^c8ZD0isw`) z51EV7k%F^Y{*6TjY+rG)Buh~#7w5dDK(u?M2YV7jM!4QX1^GSDo)Wo=lr6Amy&IkE zs$kp?Wc&w>3Qhk*?9&=80HNQJ&GoScA_ECuv<<_y;M*b=olvO-3h}!gS8y^VHU>PQ z2wze_>beCe?n(yXkI{+t6@i=M6^lEL2vPHFGZJ*H6?4OdCjti8lVgjCF)t5si4||i zX@B7h8PM}7sGgq!0(ob4Ch+H}B_Q^~V=>^DF37AHo58b)N|Lj}pWD}K5@J-`m}w5D zM*0=Y?i`H_HDIWJp}L%ba;Lf2`sYJyb#G;3o((U3*}tk`adyu!Cc6mR7x%JY$}aMh zEZk06bjB#;Xm31B@XuA50e{mcCfb7Q?-w-XKkdOGW8F_ekU>h!{@=Se*Vu;0t7|VYTy9q9C+-Pen5lIQ zZ)~F^(?Vpy%!MseYi>$si9T5)1!`W+U|M95#<%oA)>q>HWABHPv0v{KayYL*Bq~{d zT9dHT9Y?3daLnL6)5NXb*iOj?+$T=2b*9g^`o21m(=?B{rSqB|nc;wSZtPI2Qb{W1 zM_CG3DZ(1hb)XbsSuVw0O?PWAV$itRtFEJ)r;Yb-jf4%QofTsPOsaJh9fCKiWCG8P z-J{sU>b~3cPmmmR0SDVWatS$F{8Xe6{Dbo}U#Gwi-UF+w=YqK7r=8`wDJ=(PgR5$H z9`9wwzZ##yh=4)rZ@GFbsG`Us<_MxWtSsaFOz0WWWLKiZMy;53z}ypmfmRtI%p2t_&_IO8;ReSmo9X2UD{bYdY$RQuj-N% z3b0-m3qFaBVppc&l2HbV9riklb#(wpO1v-6JPmxT4us^Al3$g6NGiOO)`FBK62N{5 zoUFhS7Mtpbm;EMNjERN-{di*O5c4~e!VJeA{)N|1s?9pB^AlqrWr5=V#7vzxplw zo+M2O-pfCnKC^b7mLN889R}_Y?_*CDj=KBBo4gN?YmqIDNM-C^ChOOW-ktPWeqrGx zF!&5>Sk;d-fm&NqW3MtlFzP!R+XqoGq&L-_SCO*EPf}^*0*wn@5r-9ENJGIuP&M0j zC1Z7E?N+sh&&IO5aF5kUl@h*PR9Thww;K-7SYS?baFysAevA6aGkyBp!nXp|oHmGX zCe2w2j!|@nT#E8gE3v5dr3$k3TX}aaYk-_u+_YEl3Gw6bx=p^+BHXS$o~|_Ca(i{f zW)ayE|Cxb_p1}YUAqp$L@_O0|=MXvyJf+PR(bAlxusgv749<7EfPP$TSx4=+TxOQ~ zOEU~bzO?`uHAw#HaRbfpjq!w22|E*A+?{wL{qf?qzLLpD4_@!ZGGVidQ>ajVPA7%4 z4{$f!jTzPD%yoz-bFn|%@Ex(3u7Yyt^>@*yXzagK`E&%8IX-a>B!;Z@{9cu#quO$u zudGzwL7a8Gl|zS$3xi>^PHj+ENcvD$8z@D%o{VyP{K^y>NB~s7v)I`nEO)DO`PywNZ!E0E2nKO#3$d?h39b8L?-K z*mCHCQW@)qzQGn%^zcy8GSDD4h2|D>Z(A2Ya3B@i1pi2K7sBmTxa7}_1%Vr-Q8Bwj z_B1(Bi|?+_f_NW3xsWvV2(Lx~ffKWvp)qeA=iDbuZq;V-F|8J#$8+gM<@`Tv)~Rr3KgiOQ*%O>@c~!O8z`)U@QWL4c;|@BL6Pa-lG)5c|iT<)i z)EAOG5`gKDEv$y;1d-ONZHrq+M`yWW!cjMMsdW>_Uc6GT&Eh1WsvJ$FTUyf%QD?-- z327xSGQQc5x^BOy)LH+XSc_$jNseyM2~ts|a<(J{vyKUWJ(yHOf;1*5$0&f-pPi-L z|;uhbesy>3XB;3--_*ha#`&EMg){}&~ z*v@km0VeH7tgYqHLSua$+NjpcHZkq_#O94ta5ZI= z#f)^f?&7HiT)lsQ=%8xZD4?dbIn2`|^)iYV4>G$S>YLt7G4ez+#*(xED}00?=4^Tl zAxQo?F_{TNMkM>z?osu_y8TarjB0jHCz2b0Zy^(9tdLq;aAZHUE$en-${Me{SQ5P3 z01YWzC|zIoPG@|1A}K5S3{^xBQ$QWE_t+95=1O1c!`o71nokq`(t>}fy@hD#;FHJt4J8C$h1Xv5PR}McRyiH1ZCHQ$}Ha=Pyd2Mb7W+Penoj!!$ z6+5MX9>^Uc8R^@m5Fg0Uh!(R)uy8Dy6bd%qAF89QbzLkK)^zLC7*wKuaY=WE7n z8XNzXixvTBV>YC(?KR%`%iAFXBk4i|k*h&6UrR?=LfWtZwW4fCoWmc&ImNp>TSi(R zv(F2_DjrToYH?j!eiISRnEJeJ=B|(P)4(g?oqnBhiR_kHL%u0-F-jCQYCgA4-lO@@ zssOU0?ih~u>dZJven)mCudffe*=XNce@4? zu$H*k8W;iriHzut3mIC@IAB@8`buBUBSb5vfy+Dzkqe0v`#i9pY=*~jafXVOu&RUf zR8MP@^|z{?Nfsvf7vVI`B|CFi0R;p7CWUE+9NRpMlthu}a&tSSb)DtA^+% zYX-tP*bPXF1{~5rBWo&9SBo+zb*ddnLCRBJZ1E*aSP&RQbv4vI3qj$0kTV5n%=!mU z34Okn#sn$&O}wXkkI9vAA@YlCDc%WH#HER82h9Db!LY~7p|;N4+4U`xdmxsOFioQh zUC4t)OPZ2Y9Y`i^O%-O#tpF;>M`qrJ3hB5kxy4f3_{$;#V;!9@=)xm-iz6}0|22c` zc#BRQr*79IDIo=cK8l%U4Mh|={Fc1T67tHmUDhDR6?%{03AkD44J-`expEMCeS})e zYcGF%p^nlSt;o5Wp`7^1FZd6Mlnh=Pg*&s;`sBxD7E44SCOsqWB9JeB2Gv&hF-OL{ z_G)2vAE_CsT-O(Dagf6#T~fkKotmQoF-iD4H59yX$lun}z!pHx`LhYnl1m1BnIF;h z$*zA~#|tuL`*|~IF~26kqd%FaRP9+m6O2?tb7tID&zZ4=eD_+%u3)<1cK)77XOlZ)lv?h9y1=UQA_L80 zxYKj4q@x@u$pJmYx&=-f)VfH*!IF>$8EM4)r11OE4+m#U$=kPe?@x^Bj|CzTL@e3*3{!42V@E4FxneQ@PH(>P88502 z;YK3JtS$$^qNkny+J@&28?2aFTjb)AMo1{4s;Ho|32cG4ej2e9CJ?Mr2TF22;?vVM zSv&<*v0>KC;jEqbjW8G*D~D&rNj>_eyvlAh2@0ov2)S6X5udU$gq=HbF{hf5?5kC6 z&7j~qs?TuomZ|XlZ8`zacUJDoN44T7YX-ZKr_LCR#Af|mTZS*O)JF2eX$jZJRG!AL zt6>!0qRm5tT%HGDy1jOl>MVASJ~z7l^-Vq+22xLd` zC0QGS7sth2>t?6go&B5RjOOfoV2}BR*ZH@*URF6-qe}?C?g~b!_^ci5w9R=zm8M-- zprG{qtmcyBuDB-|?$WtW9*w-(JRR>`9OhfZUdFVTUk@+7o%;Tj3f+BN@pYjT*zLdv zuqTcMegLChA8&*pK1WdF!rqOH;8Dors+VlegRV+u7%fkd&bUD9HcSM`7P`8#(=&k0 znu{`2nQu+%W#4SV!5hl0KV6oeFMqTSr|Vp7jTS}F<~{@&Np`PXS=2;S_?+c|0waR@ zKq$R23es1yynhUOA+^Y5ZX~iub{p9 zA-zmNEG|Ece1vabfjslf!vR*{qD)!dTwqVpH(3$jc2V#>P`RXUDOjvH7Trxcx@x>*&&BKKn}Ch31x_A)ej9$#i>XM3|N zE%`)gx{X!bQ{IM`%XF+z?LKsRskl-F}|{9uW{ZrSRhZU6?gGou*6mJ{jEe0(w&nw@eeTo$Sn)H5DF^70b+ zvHTIAtdWJPutT-x)&5KNFL=>csFHVlxLm3~v?a6%mHMmPEHaIhsenQ^MzR9|tJ~ zU_XS2(opARJHh>IkFKpFCiox&+t&L`8Qt_8E)~c~)G#yt1y#z3;P$`_<&KeEZDE5K zdh+P{*RftVhA17{T)dhQP)bS3fl%mKjf)0;v?wNdg8E40R$p^u&B55$sd=O@n`A7d zaIfCoS;l5^QIQ8)|Bf_SbhBk57K18gS`~Y~Ux>12%~-xDK=$hqT`r6rB*={L;G(40a-cNUqUEX83hTbJ$M2{1hB$GVITlN43H5Q zQS)58=w3}CmvJT^t+Z~-%tuMo+B_iuhzW?Xy+OTwD#~>+$-Vs&19Vo=vLXJy=uvwT zQCnP~=Wm3KwFc;!i5^&85u)G_UYU>6lK!EWrzx!;#i!bo0odX%fq^q-g?? z^xr*}LxWiB|3eUqA^ksZENKRs{?C&Cx8VP<`v1}Ye^~v$_5c6a%>P#R4A-x-9mKKp ze5xe7>6gdyce3t1C*R=92D1O#kjbxY@3*BWWY8PF{FBleXzMvX{`aS?G4A(+jSXkh zFf6%E^=&>tQy2M514O6;a70ST#i7pw>)i)%GwUMs=_v9T95n@zb~dN|z?q*ut}tBxm!%)E0efIUDR);USkk(N z?NEeAFNaT^!p3<9LBT-qsTX+s4Tw)dOZwmWE`o3R_bdD!*M6EJX8+^c{VB#boz<|e zo$QgLBgT)3Y!%pj?jBI&;dIt@2NeC0I}=DNXzb2s;~0S%n&e`(`v+2r;JByYc+&q0 zsJ|+}`MUkr4<=P+xX(Lo_<;+aC!fuHj~~MjsIQ$tDt80$JH^f^TK^D;XJW;m1wm+7 z!u-?O1bRwNzdc|yCzcz7#&GEps&BIy6dBkO%+huQx!?!*W|*fD1_FAnFZU@%>4D}j zV26@YZ1_6!~}jwf}qzWlBgC7~0j#bp7Nf1VVmVdg_KiZToFh3n)DZkFM%^&Y};x ze>h#mt5FQg7z5rb0hGewe@IbH!%JY7^1#BGGMzV2u8`^S1 z$2J}Avinaj1PloFskh&EQlN91t`yM345!G{d>^U}4V-@3<%@2;e!KA_5ocXeI%l2EJl-sRdD}o; z5kO}DF+C2ZWAc@6&x#=2?Kykjg$2&G+Vd@fbi>&vP?!kO2#PcQA8Y6->$dkg0fg43|MP`kMPHyeFSy3 zN^C!RI}x$O6ziMv_)d#qLwWf&Tny*W5Lz{>-+H9}H-oyt%8c ze(|-%%kz(}=Y01qKtG`(BJYP{aUpo@@LPhf4EvSC=6U1>ji~6jNlm468yawYx_n6J zhZJ~C2J1^M6GI(^JVL^K42K%%#Uv$NO1$~xhR?z~2$pPzEetb&Y=phVki7b2FA2Lt z)Hu7ux&ll7-&YU~7!ycaREc-0qwz=LhWE@k4mT3MuCE09v8EpW<Qz%C1Af(C^sexU=~|xudI%cRV%eUd*z2s5hgPCE;6@2%RWLeto*}H4f_zfg1iJ=urr8~7?@$E z4;1BkJRKzgClFX4FuDPk+JOVl3uh+pjRYfd!Z%7D8lA(|$~rR%qL)h~M*+r8X{T}B z^RO!v1HB96C22kL>T$-qQ8VCZx9947;gmE2w7yCYhIlpN9-#nM00iD~tk7un9b z3TSW6Tk>sUUrV`mgLvlv!(ja6fnTWKo`qIv)-k<{n9-gYxh|crsq}#F0T>Q|JBAkx zj@k)8hVR+A0R{GAslncdGRAsAg9UQKCk~SQU5D?oiwYkg92r1FLV^QDgBiHdgZTrITI#X#R&587{+~JOU}I8oZE^;*ZMug+;ioq3 zhqNx)y%w*zCCfMT2_-T?+%m{gDDB9W>xg#C=MuG2o9@(6sLQ_wPko0DHTE==R?jrl zsH-sD<_n3)B`cU^4e?K@-P}c_Agls^)tJHV zX&i1!;$3`j`k>x0R!lwGd0{k2!9D6;LAm-(O75#R?kg^CLXXioaH}k0L>TNM=9yTx zxSnf<1a<{Gq50CCr1C!t6D&B<69BfTHwv>gh%_IqaaijAAb=~+Zv%vyZqIAQ*F!EXx?+&(-9Oy|d~T)VH> zvqFpC67oGbE(`3hrE3;2%!?$BIJ83x+ah#{er)S>&Pl3w)=CK_l!3`=krb>JcFI>#M0&P&yge3Uzn4zR$m{�}> zJ=ys8WCA729JwgIlys72)3`5tG(w=!Iu2yUxx1|}SyYh+sWg^SPil?tLV*GBKfL=0 zW{W#ybg1ysOsl>M91(C&^}6`WH|*3)UAkFg&xvQ-rgPD%LoUPGguzl*bq&R?7hN~) z@cioA|74(ld-xJU^c60Bx&^)X+T;_-P^SP!tuY+O80Snod7Q9jEy%Y5@}a9zXd$;# zUwA}JT>q)k$N5n+0}dTidL^`S$Cab*>_VmDynw-d{5+@-L8%=V&ma<5ep@aU!oPg~ zKDwlQ{k?lV^7C&TH%xwSZ%yiV)rx7QQAdGEC~Fq55F0h3Kbf;)e0RF$#qEj%lLKhI z2Gy*Ne{t4-d}$R|3fDdk;eu@%294Eab1B8wGx4c8M-I@tefJ!4(l%(mdLPUMq#@yw zplJrC#B_|iU!wX8?U)qyUZFbryUuh@ix-uhr?Z*PsZ+d?GLtvT3I#0VW>!(%6Zn5z z{?fQ1;jgsa4hl~Dqq;1-u^+u}dXT2@9kQ1m{mxc+mcm9wYz3o*^23cfy^FuPLr0F3k|Is7bT?bhJTdKhx4Vj zpfl44MfJ_6%FGKz+Q>H8PL1##9e9%2>3HceV`$)nWCtAnV68QKge6^E?L6!aVUJW% zE4xC)cEh%Da+!1!{6=FBWu@(QJa>MbC!fL1d;IkCoo_#qP|x0D(*C8cQoM;8He{#> zSg?JHT*ZXO{sO%Rj=D!vtjDF@1`y`2Q(E5@6IiQ5px3}ZDq8JtGz#55_K>`3vKQ@O zT}uoeP1qcdnt#qYabQ)`zS%ZmsQ%r9Ck$VzQCixAgWUcy7fI$~|LH4&FQ>rYZ<}O! zgz?W0Hw6=k#z+3}y-~#X{6BkS^-NBDs7q}lCsMl8-qAtK6O!F<|puf*lk z51(~%-W$QjwhdcvUBm;Q$^f1Hy%Yi-TAj{737Qr2it9IMvdM*8KhM1VQ*_81@E55? z^j5W`MpbNs9=dF~{{4c9VYF>0QKjwz|2Bie@4cH2*h3~jB?C3XL zuVa1nSgYYZ+ow9@W-=l{1bnE*C*l$NE37q*^i7?>{U`CY7@*zqzVF!WoqPZCF;tw43{- z_rZwnI*V#)7s3^V-ViXt3JQGTx!Y^LNjh+pV{W7B47zTntj?%6ih?!ek>G;R6A|LWgM z{Rkm2_bHYIt{5y8!akW$1~bPVd;>mg^wkzD0o%^KH|d#f9uI@s=0h9f?h)#a!4%jE z2qYOGb6yFKZfygb7j!u%ILqKex+kd1j#v546IV&=B>Whau#JdZ%A4jz#~&DT-O~vz zcC@oaF0U*?P%!VZm6wJg+l99C(s4$#N zT2HCWlgfdpQNaa!2X)!DPlDi&=P>_f*v}|xF!0J54Fc{V%$Ni%ZupZM9KnNjccu46 zrWK+1@t-_>xec4f5=t8wL#?|or=gDFRb*4ltR^WYU#zFzOMj*#=WWik_wLO_>0z#P zCoM~Lrp7nM`ONd^F}v1D-FN9NWsNoaUuKTMlK+4Jbfk;W_w5xsRTEuCq*1j_G_nrl zr8V)TwUV1Nr!?qrxs!i!B6u=!WlxU`)pd7n1DBj{-+%qey}5HAnph9@CNvYfYQGGq zJe_GJ%d!_1Qu-}cSz45%mBq;5h}b22TKUnn1>rHSIu(Zsjy?lN2;~a$R0*0_qN6>A zHsRSTAN+aE79^xM4&!UbgGvkw7Lpjx42>Krh(jGF7)b{rQWk$F-A;S8gic*JiYq1^ zkm8{|wmHD(msSl^b5}9mbfrGW^qMWG#zj|;ZY99K3v5g|rm@Kkusovy7LTdfb|~fB zbds9`LMK&dAP{MPIE8E2_Aav__=r$2=Y#TgB1DmtPe>w9-Xq1nij?v13C9hG+h@n# z{o8gSRh2I*}4Q};|OlrfO=`{4`Roh_cK5TrtdLzz~FH!^fY3}5V2yAgC z+1^kh6V>{Zkt8abUBPXQ^$A}f2Mi1zI{JXkFGo|7ZD6GN!s`HY22ZV-{}QXvkDS@3lB22VtT~x4SO$2)75IKAY|mLgcmD=G*sBJ@6v~ zxA&oak@R;+?gaGC=0Qci`4`)MM1fw650QOGFgJWlkHty6_o|rU7s&KB4t2J5kr!t^ zDXEy2OAKpeVw+ZV^|fF8)Upehi&MLp7>?b6o-93Y8UW5LZ^10D=)SN6_8O38_SLG5 zDRZ4uFoPND8tnjxVxE=z_EUxyaznnmsp7~pix-9~VD8ti@9bWF^$ii~pry86wTo0gO=HJe)R3EcSpU>%TbZ?nOH#sf)&jCQ>i#M{8w?b_P4rg}kmDe8& zcb6$EL8;~am&1_sHnbjJzk!K!90UESwcnLu>&mUOk4c#9%W#aS?OGAvf{UR-eX-JTyRc2lA$zIXjyJn7 z_SnQ>76mqVKgZ$YRV0fYL(Gku3k0ktXw!*q)O8B*VfDCzh%Rh z8ao;q?MDYJX~!J)YqRb4FuIUdy_*TR)O{W4Kfihe_u{f;*orOKOQ2&_Yp_-`^?>+aMx61 z=U7^57{WV_dpZQKfa3zg%X8AsG~*mQf^nz;;3ga9;*2uH@M1ojS(9tKj=lD6#gRGM zF{kDtzbTcp0uQ#4pTam86i+BJe8I`TavxhVX5aAVCIX`09Kl>kN{HI{t6FAbiojSg zw3GPi*Z)2DWgQKSO6_#T7=kg1k(aEmO6}Bv$*m`+#t}HmOpAd3typ)~ewlNEVPITi z)2+^A3!h7vbwY4M-UNo2(Xl;#@@n}QS^!B|oFbL`4n;yRiCGvM@{3VAp_9geN}R+I z_CgvP+2c?`f&Ih*$MaxLOmI2ZYNdHnq&1K4OQYDs&Upz5$x0 zy}Y^jWFspJS&h}X%Cj-m=Zk7}78Ig8uavk5DkX`|G1WIo>TpxcqKnRE{(`iV8%D=8 z%u|vCN1V>8{>awW>O(ox2D1d{yrp&MOSF4qm;_%dJnV7bB#H~hy)n3V!G{lM1iwLA z;gczthzBwfolS>jt@JbAF@k0{O*5-^j?>ahUvw^8B8MzE{M;FdahO@SnpWv1Q1`j_ zc6Whq?}S~Oh)(i;q+E0_9KbQ{wO6jRrj6t^`64zxiuvD;eFtPZ?roGdDyKa^U3<86 z|Mj$Oi}BG8=%YaQBg^2MG?7@_r2F=)6VU24BR-##^tJtf)0|vDYAgXyJ5dYc5HRJ-NH1&27;LH_h%_^AU*K zBXgkK`bDyT%iY$m8@5e5uGlrK+t;s~LW|)J*r=VFucT=GUo@RnP+ZLxg>iRxhv2Tk z-912X9VF=B?(XgqY;bo71a}J#1Hpp3TL^dlhg&r@@29%^^xkWIYoFmQ7v)IM*wT|| z43}^LG{$EZUg5pIF+n9`SK6c|fKQkcj1(uQoV=yhgizED3{a)iqlI_zNm_Jbe#jFx zYOjXjwSh*W@)SWs#KyQvh~dFA@|$@Fql7CSVK z<;|Ui<=e`x`Vm`Q))2{>)2{3+643z-S7g&x@18G9t(b69>QrcO7(M8aO8k$3|JqLD zw&l+)v!C14iWY{ivHQ>LUpL(<3vD3mSO)Jh+=b_KmrL#4r-Ui_a;Ce@%9hvaYK=_# zR60qrvE%N`Evoi5`R36cmC$%pQao96(dcOycXg3x?S$6}tRznvO}uqkJN9WD&-3bQ z+tH3ZDLs#b>Tk8=6OfLJkPhVs0X=%aB#Ti4eQdR?W}7cFRjV8OgRu3U#1>u=>Y0+(4A1!xpGUNiMIbmtvai)hoz50n;;q*#!kz(kJUD^U6)Z=`6_7Ph-@XkI&s8x5Au?psuJPGr!k2SjI%DXg(v18iHw zL)t`Acx>$j?iH*KF#77*GD-tl*56rv1kWnK6%V;qDybpzZ8f*>GGnZDn{L}$vDQiT z$cz8b-5F`%^9{bZ*w5WJO4Do4KI%F9)~#R@oR-P2sTvK^Sv3TB##L+nS9Z#J*&zPi z(muqNTINZS?1C!lHD1FZ+{MJ@eY8Hro=!Llz9~#FUQ&{<|C9IdQ3b4+xai()r+jMi z!>D{t(FAvQy|f7)UGkKhC{@kUBSl+Vkf!edZ^HZfc9`>`+!a&d)@>$s!@K)-LZF&= zy3eR)JSWabrwnW0EP>HGRdty*jmo5U?7tW;L8S~jQ@qAGUA5K?k@yBb~KNjRptA# zz54HjQs2WjtHv8=?s{+THG=oN*LEAh<{e-yJ66?xcx=jOpxkQFb*2;ld0(6OAqH%) zR0YpcH7i8=jjfi^{!i`)&mgE5iJ5n7Q7Pi&1rSkN=Ysf$xcVRMr<5RNI(+|ddi!a& zoPK8KmQ%a>?frfD*w~me)WrLT*T#s}N>dqsZh^ZFu33ghSoJr?{c&X@C-~cvg`_HM zKNgl#uhw1yc;+Z`z78`zR~&d|@R3V12BOHh#mLK>YlgKhaxd!9EEYrk15#*@J|Y$Z z#oqi7u*kea(PfRa=MK*fhg#Jg0Y_e;1j$@MB%lM0ucN(abzw`3I^pob5dp>#ao^X1 z>(Dy>P{^aAn1w+#2I2Jp?Tx<1S@EM#TW01>p+*0-FD#w*wNF|T4~}!z$6RM`W05(L zh6Ia1USSU|qn6;5n#eiUX(%G$niya@p(%rFewg4J4pCcUDS^%xPxZur1Pt}b~bxDx*txeOR zFp;9eoU$QP@7PE5URNqQvHHUuJ^F=X`Id3bSP}cW+SqO&I4U1$*{>%r3eg=PF-D9< z!TxjU-TnD*Xq#45yUY%Ssr-Sg=4^u`D{zWC2tIY&duYpwzRo%|9iZ4_0AFSod)4=L zxs~XFKz0{&o~Xbi)Z|qr1Aa(uUWASM_QgZB6aaY`!;mw+v9puNjz#>r3Z4z?GR+oP zbRUxY#)<(eGS_<9MgTJ(<>NgCoH;aXB4{Z4dEL6pB{)o&M$8iLm@EAAB9bTxDJcS( z9T}A}t$*O>otw^~qY6Y(cF!bHF?f3M_pPQ|k+fJ3S9s(B&U_Lc0(o6DL@hL$PVzW@ScMX{zR`Wb zN9si>93bxWE5GYunP!ND?XmTpQ5jDsqPbE-0DYsrg=&H*#9+s-)5!U_o8WB=Bj|aE z5+VzyYmMJ+KB}U(OyB*$6zzr_6?AJF<+d901Qj;+2c+ zw|YUBV#XqH6;H(~S4LHK-v;q93<%XkT@bJA^QXWI_0k3;ahyWdF-e_igjH6?`%8yHoaB9z5wHV1}qXh8@a`mA&HzGJu zE(G=S(0vO{zE=kRb3=p6+K(0Qo_Ua5YIV#daTG?+{AP%A#8jj3Q`_DKZJ*QDw1(tp zQJ*8b&yg%|Asc%(!aSNcaVOxjMaT9I=Fg9K(8aHI^4n@T%_YHt20>HhABE0>rb_ws z@VTH>QheJXRlW>)(uKZPgNmg5EVWJzJNir%y*P3;1?~ zFn(&TdH8PVVuwO+K8jTZ@Ny-@Pol4CJcF%N3mOXnkUGJiGjKpK5wbY{1b9_Z=l0w6 zPEuVq+S}51i!6D&U?!ZAR1O_j_JII)PbXpy5dX&zrm5yK-{>#L$B7tErjwibBuGgK zSf-jo{i6eMmQo1$Vyi*Ek5p~0`KRmq3Vdf1l3C$)N;Z^{nJhLvgFP)T4E(qrV}!A0 z0eJ5B(`w0X3(nD1MgWJ2(&*s;po~GN;A09s_9Hm`%iI`wB4Rf{Ka>%TQ22$y5&Tux zsPM?MF_jorIj(kp(*Epb5l*~YoUhN$9Q!(8&ir&*e*9I8uSZnXmb2etQr+pWGClve z1tHa#ZIb*w#t-9{bvQqghv<4#c43|}QZ{r-x&}|IYgD}(I$6g1TPmGw?n0#{ECVQu z5P@PrFy9E>J?Hx2B6N{{Z0aNyqVR)XB1>qRtQOHK!4#^Cr6&ldKTk$QnI6#_r}?;L zx^&V8Den1(phyd9BXV46K(0iK+SKT(oAb%WH9?E9E(t|B()!kMqtU$-Z1$>s0(MJz zRsDoSk(xg*v7Ma>^En8~9t~M)c>y~6OxE`dAoW{&CTGY!j|yPWO|HbBa`F7E#cXs3 z^Kn~obrbZy{ef9%`kR42UYVZ1PkA92mdozd=#)yCpGpQQVg z4rs3Ujnbj{XMpo|V)6rH=Y7p0n&% zGrOS6tRwk51l)Mpa;aTQ_q10h(+cctm~74RICZ|E<8&eB|#(8 zSO{qSOWpD-?dT*083_g_q75U9O;?D2UeIMz_74u0ACU$*m-LlFd8ZnGQSJLt{EZ(y z3WW4};v@}iffAbOf@iL$XJDPMY4jt*h-N1)G_B zZ}XaCJ80lZT+EW}kJWLMod)jGpK>dGZQ6{!V;}yID0r&JSx+M+ezzH&NpiGfq=U>} zj1K>DRg@fPOzpT8s68JCWj>l~I^21vEP7}(WSeLp-x9|z9voUQKqs7Y@UcC&N1GgM548j;HQ!i30c ze}dhnB_-HKY@N$J8S4UYEMi?2R7E_YAxv1yNLJ1A_xf*3FD_M*8q2Yv3(;`fXpDPY~U=g4-{~_p8tNe9SF470dG{5*BB(gcFD5#HGuL7M1sq{3i`UC8!dl z%M_!x_=otF@3|l*ynaN-)tkcNJ^7pce*}j8_7wQS`b~koc;`2oJFLR$)JS2Jxxz*~ zuVM;_H;zG78v<06B)=*^?!S)%%!Q4ZC6Bn0>g!wI(X*4-qYfUEZ71)*UMdcIJRRxu zJ8Yt|aIzfsh!a+IX12t9s8N;m@JH0Vm7plAtRxez!e)U$u;47qRadi&pVl7

ER6!w&Eu$p&s2KnX49a(oqYmkUPV7I$rq-G zddl&Yl1q(ca$iIRm$Cl&TvF!t@9Nw~n>MfV1llm3V;HE*@f+wx2 zy^@fO5ht;H1KaJvEsv|oL)n#pho2W+eKU;eKs>o{?>6u&EsCg>Vimkk$|G_dRur|= znZ&uB+06ypLK)oL9hPhv4;Pf=^x$kPhwA8U-Hhg{$Cuy4=y_EOfJR&EeKlNeY0)u; zVe2%i1X>X?&*#fK*xMh?Cgwi+rL3gsI`#wIjNjf~k{NZw?kb^2GxHAFN89Ht2>tji z#Yjfi{KwZsU-xbb@rx(%TTb@khVg#ix$%&u!CRiI zr?%ZO4tx=L_Yx0&h&_9V>;_F+=KSUu3D;uUc=4e~r5mtr8Srcwaq1ZI>?r_{Kf#4L z%Byv+8YbFHD*dxJ+4W}wvV1d&MNt(lxhT`QQ!aOu##=lXp77UVhOQE^Fa?{OnJ&H=rs_9eTA-i!KPER1#z(Tx0pq$>U$&!Luo1@xJ`)zn-J3M?8?mwZx*EuyTT?R5(u7h9!4i zLKH3Ff|z_tI60+dE_^r43f}c`?Se^7vA3Bvf4!tuG+t(|;f#QT!})o4O3%?yrj!I~ zO;sD*ejTu#*}3`j*BSpmFGw#m%I|OGNj+W$j|g?YU|6UW7}GYFB0ya_4gpM?<0&|t zoI9yCeObXkg5p=?q!J9RUCmvnn>f_)7(@d_-Nq4u(5iuYEx7uMLGlF;p-gDa8vAjS z%PWlrOy}z<0HD!__yJPSeKsduOK48>tqJ({{HkFfr};Lv-1a69|I!^$ZP-~#U9Mz# z#@}N0Qn*N+a<8A7R<@a#q4@OCHJh7+k(#sE(XV4xzSd|^Hr@F#Vq4gbw;e9THM=z%97LS1}u$&|d)qbX{lMG0ka=-2_># z!&Bw5I0p)Q0(6?ef+)%K5Z-K~Pj~qjO*+ge zL72s6)?cTt23X;~!5JrtFYO$%80f_ex=3X0r2hXdQ_}Y~c<&*s%_K^PAq4cI1e_NJS2S?Z z)6X991U~N~`oG?XUqt#}WlH~mQ3ZG*0_)1_@Xf64_{*AC2;#BfJFom&jgtm)xlchQ z+8Y)sv-5+O0ku&b;H&JQB*XS*6&g9*Mn^*sD1a(yS}}9{(U={knKzVqLZKnZqX*--44M{ zelConQ*D~yc6h*m)OQA;<$K{zDTdog<5MI@_8~`l)nh>cy*n2MyY5Vttb8~U@n-3c z3TjF86=<+%N;k-YWU}HjN1U&?{IGaKfkOfzGQBKfYVWvPWGj#72ns}LuL|ESpk&c- zeh^cC#hhjFR*|$#z7b586>A3*{rqqrJ{p4!e0sr-8d6Kc5-F=nVpZnjRFN=yWdi6+ zF-7!UZ8JS(4XvRymDSrf-GFp^RrLZS6Ix2J# zso2Qla)g8%Qr(E|PsxU6O+CbNnD&)a*&|UW19Hk8NmFI;WLJhRR;kpCLjG_dJ%t)T z=6ZFv@|_TI>S$$Yb zw@_){Te(B`SnDO24k&SXVvHShVi%b!3TQthi>5hs^a-`hD~A|vJr@K)&plTf0@m{e zN!|2Q{y4|{mDRcKx`2f4ZyLIM)u817s$O$9Wz)+@XUV6CS+n2J6QS_dNH~%IF6}N< ziJldB6=_rCTL(DJ!N~%*kVFok;C*Dykm*5WwJGDv86#WkBl*PQUVNi>|0RQG zj;0u(3<`K+d%}ux(E*4tXGI|<-9N!hg9Jb0ixghCg}rxT9;L4C_aA7qKLlM=NRe!J zCoI@A7f8jD4RQkZ6#~0VfW1Zt+oq4N0-P)#GWakFGq0t@6+xKDX{|s1Ym) z&$UzjdgAqbaAi?!ahbjGow)I3cIncs+`ztoiszrAY9uO0?1DqpuFjo_Eb0@3MsAVV zYn}O|pm7eH{Y)g`AZKB>ZC$)a1?ULGj}`7QJF%rly6j~4Bi_OG4>!Y^q0(%nWd|S+ zxIG)u+zXZ@@18V{Ebe0zQ9gN#TmnTN#}~qR*$1UFBf9klFJ{+~#HX5Dr5BAFJ3Fp( z`r^)>C92;wNmE{Zr`_Ut%WDBda<}6P7^C_)KNklekY2Z)OE12agb$0$6sl1@{Oyln zwogG_%}xr9;3T5^FC#!|X5K;R?3YKmxssE<_P^!A_nR=$eSPO`vbg-E^YWQEU&Y19 z8n>@@ke%cWNvVK{z=v6eGv}>gAf$At{3S-oTi)MRAL3T53{S^OmT}_4Nyy|bFJnV$ z&_0E3M#Lj?`Sr7HHG7ApNDf~~scVMNFORvQBZW{XeS&?+3hkT6jYWw*_OM~}knd%G zJ5RCxENhN5S}AE8&p1^gQFzq;VQ%e$_Rc##1yzGZv2OnBfrCuwOyV` zallkp&=hsk34a!3V!~UQ3#|h#b&_AIli5nNH3%`sJEjjAuIxm>toI|;jtn98f!6-8 z(*;?KUj2UgCxk7v%dyV)+2k9@bTI!TMR77_Enl~||EO0;n$23xSr+BniW@St;sLwZ z;6Bd7cdUDq2aSEUtD6eShUlRyCT&Gp?y*fRg6_o`KWexIURk2ZwF^(4qK0-yN7Lao zXg2vNnCus&8OX#0AQ`WO&S$?0bCdKcIHdh-l~1Ka=4Eq)>Jqlx5X?{ZBgcqN;U|y9 zd|n%*`d6!T(jcJEZ7*-W<;>VN>h2?s5J?Pk%m;@6UOf(P|Af2YIl9`Iz=XSgB3;v;sF;R*{KM_%i zrtJ%eA;z{pz2q841L3$UCviGT`X5{+1ABHoduFWbRB+$JoeojZX=JeZ_{pr-R;*io zwaSwWFFlp5HRO^McpCQ_p&H%7G*rMqE}&KA7{lLG9Kx+(gWm4Y z-N_lx%+!)%){%qU2J^ym^wo+&w9qvEiUt2Yj|<>xmF5XPPg5aWu1(5mH`L=9&#?=~ z8^`|2Z1;%;21N>o2)Vv8ajvRi!6l}e6gYwS{3CRXJ~a5SM}(XoLc%`ZH$ohrfuW`a zQj{W+eaYbAy8)tF3K}FB% z8KKlm^eLkPqh$2c8k@&ac~#>;XIvPx2=>&aoZo;oyrTFQD!VW-IlgxJgcdEoVx>fV z(zt6_6Y8RJYFO;SkM)vAexbA5o<&xWLj)y}S?x)ZER8NdI}Yu6?1yGRDj9$tEbP>* z@+8Q3x1(L9q&|nsaOM&oD&^vx8*uOfx*A9sZC&*D7ukVuSn8Pa5JkRm`y!d4si574 zRZ;M$vU&jpwqcdUX#=Lmj>NG;Y|Xf8>KHqe_LoG{meYSfuoI+mU;2eE9C66SnC_7v z(g3l9cHP-rJ|A`d`417VCbkvx=lJD`qS`Qzff8_K`2{U(DFKLtN_M|?UAUH?{Cx_? z`bk|hs_Lm96!Pcw<4?DFO-MA*(Lv}V$haG}Pv=iAvhpE}(4BbRLd;I;R|AK}5&jy@ z6#s>~wc?J=Zc>Rf7@}zYDe4Iwy~S9eG~def@Ex3gRGJ<*vKjkPSvWU8e^6nF4yPmy zv5yRil?t7{u~8%nm(A9qGfS$?uCByL*oQy@8{%leT08<)tBqLwJ!hlo!;>QNIfN~@ z?8dN#GuE(m#lN*4|WjA{^0;2kX4KU@z#| zWK1++`ix zU`iGdJp`pmMim2t(+J@5)DImp=a$;MY9C)1{+tSF@S7Q}I5~al@?mCqf^GV-=oII_0&boG5@|n8IWI{f*ES&%F;PMQ3nVV3Vnc3x(pk zB!2m~XEeCT+Sr|ei*lotQj>bwK+1=lgOF1WkuT%^s1$cBJrha9bi!kzLiZ1E1j zE+dyNqw81S!3)ok16Rq0H!`P&sIP*Pp`-sbogG6?!ZFZkbo%ihr87h*imjFhE8fFO3!KJVLQs&TNnNd{&+ghrp@u8?A(4jPa#6a9sB%(oAG+CwRJSkb(K-yC8I|GTX{K-T=J_WM(y+ z+A2ZNznfSpGbGVO-Wv#}u(R7aa-=RVB6|KG3a?=U-*;ts1~tlw);`AXQ;xnuGu#Wb z(fimP6tz@Hr8F?^nN!_S;lJ#2+?gXQnnAJ>`xL=RyJ9?FIAhO6^^1eseR2{ZexDPU zSgr3{pGQXG{@NqjR@2&c?vMYx0V>k2tQ@GuT%@55no&Pp%Ko%o!(>S0P~~vqkTcM?^Do z-OjgWjimc`7ycm{H5@wMOj)wAYY|FE`&wCpW@0;oCEwfMs@fh6J_&}uc2ZY!b6L0) z5SStW1_=nPyi>8kVbWXyU$U=Q*JWl8j8ubxpU$qcrHDAgLnKHdqG?0uP_W=BQqX8{ z#Q!}T?9XxVothMXQ>6?)BZYO#F%b8d$y-74E2{bmEMe+eUm(~)jhRpLUW0$WG!NsA z>F<(QcZZY}9$UD(--$K6Xiu#r787jWu=mFmQm)bmjCj=`7Qn@@coSxtBbi zjOKm)aGOEdUpWgOtu5hVbos4$BcUUM=!zX=sziUSc>}(Vrcb*og)&GXj3|(c+eOgf z`rf5~w{dLorjjQ~)PfBq|I7Kb3Dl_5Uq}lHX(S&W@SUBVJB`>4MEDE-j!G^svbL~J zHG;2zf{-%s;^x|=btvibA|Jw@vT@va_U%kf5jQyN`TO+lxYhx?b=p;ymFwl(xX~cS z54_w&mG*Z@=~)N!`ve|gaA0oXrz@DK3I5Lcq&BI|BNQ-iKLhHuyMl{|mG_!6aMKZz z2cTA@8P<&cxchkLnLL~m)Pwyhq$NHDgIrWPHrIQZ!2oL7cUVhJxCu80TZ6B$tz4n~+Fs&NSV@EA)fOP^iw0yRufoVCAaNAz%QyKmK$5$kH z9fzuAJ+BYAQ2C`-MpM9BOz%3-JB%YZ7`DeTbclW6Xbd7KU*2pT$&+FFIW#Y^7fzjx zYQ!eYTDb~oTs7l)6~9;h`NMwCF447*5dS&o^HW7p)S2K9m&UJJ1r<5`{)flsp^<*> z&h-L0FI}e6|0!)j0D@cX0GyUVq=DTxI)y*6mU*(ze>>%I5R*%D)hhet@t%31IhPQ^ zeN&AyN24us^RUNccvLKW6Ay_MM3YJiX3D5oQa3VjCsPwu!4is!xKJLsRFE4tEVMDo0Vgpyi~FA!!yQlFo3a)so^81=4GcKM#szWN9=R+W`yktj>MVF(5> z4}_&pv}^Fme9NsO6;0EK9u7)f0ggf%$47yN(r%A7A#9!P7v9kq$}~Zl+V|wY!J~DF zTE&%qXs}QW$A_UvZ+g7)Ie7uBEjWYq?6!WAWSqIq}Zwy z^RRkbxL>htu009V_hLMykXaM5un;)mHpYOi4s2#C`<{v!-het z)9`Jr3m;?Dwi_jor3JDfKz7(}QD4vqLqe0HWtm;PV4i?;I>wpv(WA1UPnk^L~@*%EAQ<2 zlV&>QQUmb`ZX$bfruhMMQi|sSO#d!>Xytr@KZ!tW4Z%cKjWS^TczWH!FsOH`AVnyb z_$F%#f0bp+se`n>gXQA>cGD-p_Y-~eT%ldw0|cvm{}&ATzwoqI{a1Tap!@P@oYY(m zIW4;{58(|Bg#H0NdoLNI_3gb<;>-me$J`kfL>Y~zz|u2L32sfd99W7C3v!0L?_4!f z;9!?}*0b?_l)`xd5EfF5AfDiPH1NJt-J@NyMg7r`I~_0dCm64@JPkyil12VHfS4`s z1cSv3bzW$9__MwpzAanXE+t$Mon|^SZyL>)$EHy35QPrtE}(q*N&%T6MrZ<|Z|mVr zOqE57-24ILxw99tlH0Api$Ly7gGwO_?%!7Nn(OvutVx@=cp|eJPqg)bq@#}1QAW3z z`J?evsIh>^?Eta8#eM7|3Q8A|OIF##SjQ9 z{S6D%W7z&mfV%h|RI4_P=D$dshDs;L1IUh>x?L6p=RlTXNcGWAz_Mni@VM}3H!0|E z@$pU9|5<>B=gXeC)=IYxA)i4%f$L}`mHVdbxXHDeyttZr``pOYRC2f`83WOhwh>19 zaObVGY0V7~CyKL! zL+9zm54_YmF{e5K;Vg;YJ4)?hwn$=5XJK!JOgJOUJvFAFY zD$m!^xZ*z~+PxxkDTMIrtnORFPCdkVByb_i?qnEnNN6pRV0}z1++i&TI#1ZolpB10|SbO=1J~qGpV8ua12EAq!X{qisSG1vot{ zm}^mZQ^s%#=^ZY%R=jAKkf?xI$R?~9Bd2(>dY4Rl^LLrezYWJWP}{ddAL(-XO!nwU zmV_t~a+v5vn~On2he!n?eN)yqJpFX3d}JFOu0oerFR#N#piq_$$zlfmyL;Nnr(K+F zhA82`%JF6u<4L0a)oQYp4}x4+u5f-(X)9C9Bm>=FZY}e zPCIj1!E{s%5?ba3IYI_C{A@~pNcpyW{w1EpsYd=gNn+P8=WKIGX7T09y`YNt$@8hL zmR7lZ=LM1pWdPKfXxNG&0;ocUsJP@gBSDa`Hon>_Df=pN(nt4uG<50`8W2F7Vs13*+*c2;LjzYgafT z=R6J_OrBu06pC}a2xyq1#QZeP9V^3z1Vpg)(W{|#n;U8Klx<87=s1TZmt_wS6<0utIJ2<%ZKln#=sHxv^qQ`PV)DW-$b|- zkmKVeCt{Ep@W*W52eK{M?YNbUVHPF!JW%?QE8j>>X8HadMDdi&%af!rFe}rF(yKVW9_ep&H4SLd0=y<5F9PQ%E8hI-yhzXmy&aQjiKY?!+QWI z{VPEFSx?~3ep2c`GB9{p)I95p92DaePD4XOd%L}o=F|(OBiQc2p2siobZ;JJL=n{@ zH@(n=Gc{ZAq>OnRLhc%VtIt7OdxC{zPE7c1H!x&P_EQPHg^aH~XKy^aznPmQI3*v; z*^)4YL@fniR!x0LLq~2|AN6OSdPfK8?xMcK?Wr8U>r4EH|$wOX0bQpybSGcYDCOpzQu?wi851`yC%UFw{g zvQNFYquoA*fwx@CR=8k`VQ@$c{)p_IbI-rn=gf3l>qkC{$WPf$d^RUQR5P(g8*R0< z%&IaP?bvv0UbFjV@e!ag6NV(Nv#!mUO?RD|^FS3pFZAlX-FJyOME> zP?)nV!=LsF9>q81kR-w=L0X7e?AmURWG9VsKn}NMYyfqcr0W#HM#=+Sy zzX89xz2X)J7m6?#CzzXf;!TnBSvRnxPH*Y&pPUB;qWCF}ceM#PI=FOtX2$=*0M$E= z+;Eb?L%YHCXYMacQAaTm-3As!pN-hr)Q-~lU;h{&${dDP0jaM2$uJEa_?iB5b0EO| znS6c&y;>Go(5vfUk}1dY?n|WG?~)5hX;`WvtDg1+he*h_KdZ#&kd|(3{30KJ6sq{h zn{!LKIFP90NPa!Ba~VHWId1-Eigp_Z)~O{~iq0D(?d+LmmgSi2sCCXyJjnRnO_pPW zJ?xC4<@Wc!Uo~Wi%4_*ZoDUgXh$lCNM&?0$7ob^o^~CEUrB=d%FbJ0FGEtrh;76jI zvRu}D&>~0fCgNAS?CD_bP8W?^a>CFZ;xueBBw?NG2rjNwX4Y>dKkcTc>N*rGaDzO{ zZ+0QRnKOuu8Y*Fc7H`k~AeL?rJT`4JnUgbE;q!;r;}`ElmOw;5EKCw@j3`~P{MfiW z4*VJjf~>(oa-a~6DzKv%1e7>n7RIZz(@-{G?5U^M)7xUnSRMVhh-DJ+bfscn7OV}jTD8|6mEbc z@;j<%RzZy2vI`R}Ih#03X)b%Wg}WH0Rl2UVSAgVxq}GHw(emwQp4+bnKZDtR!Bsw! zhmRu&0&#on*&|y!wny^mrzIEJdMlsIoP#c@eQL!0pJU2F_K5yKRtE5k4Hc-yYw5l)k& zj#4{LN?CqTAoyDG=no=7`$UES<1Lf=Nau4?-Byb)e0f0)>z?T^rwK9FM5&zpAOFNZ z5dS3&{f3b%Jjw*F^P-n9HXEdxT9yVt`cc^LtS8Zj1Y=yDJzLZ7nW)8MK%B~K^6$m( zxdnGibP2VU)mMn=I$`Z+^R1wYg|jLkd92c0_pI_}EXk2!jG@VXrT}D+i}{z&cV@V~ z+FUiH*^Gr(XFTp9q{e9XP~|5y6>)@EQdzZdSkGiYy6caYCll3XGCR*5ASRnu<_{b~ z3tv#)5PgEZ|L)b%;>N~CE?buU9~Y9Xe*AK+s6>~i02gcu%^bphUIS?2Mj2h}7{d(W z-Laon`B(XLw_Gu>ki;$T4P<1;!q-WUPm19$Umklu*;#zih0K0nCMA}yHJNL_NXIJ1 zghGM&$N`q2Q#}qhB4EtjO^2TPP;_E7CoHy2GHgoXAR_%G2w%#a`G}@`5$K>Dj`545 zrGCHfi*!+nUiZFd!xqvcx3lviBb`6*Ei#}zo)79MoT$v;aR#@4`&Sk+4sVcQ+iB2n zU{T|s_Lr*P0f#2W-y37ZKX>QQB6gX5%-7J&jj?e{Z;iR;1B7d981NgJ6SQF(kRJ=+ zu2SKT;FGpmGUJp&N9^9a(55!7{!M=2^xd5zT?%kBo|%2bj2(JL6w`F3`8-MT+rtQ)cJ`ZA155q_Gzn>zXKYsXo4*EYf(NrHKCKT6xJI91X3Ca1vqJ{0k z4jq0DD~Jw{Ld`#<7J=^M@0uCUVA#FSjwfcXAQoVhxwj&-|XA>q9n&Ip11fmw?QU1xJzDf&~0(=)={j=YajX z&yr$uln8?YL{s3kRRE*=^~r7g)IMk+$TL@xAo>KERa_b3w&}TSW}(L*-6X$Fvw8Kz zO;&xD%+RdV)!jYlFE-}RElCFNeRqq}U}_|V6!N385q$K#ABE`u_76J9`y*N%6a7}{ zu&6a&sfPfC69J3;3%Ev{5HV#@_sKaqrCxw1H;ku6ZV)P_J{>V}F8pgznExl$flo^g zF}^_#h!*dDC=>RsAT($Hw{EK3SCnFzwU@iF}t$v3_XussGdLM(>1XF%19^BVT5yE^4(;ggC29J$XB(gfiGT~UDj}nx7that{Fp)u)Q$`=+Gf& zW||>I^Q+>Cb=hVNZ5c$N#n?rpV5GLq^`-K<>^9L{WP19t>XE__L!G7`64jS*rF`Z0gwv8U-GFM6Oufkt!u@;E~9|na=Fo?*7dZ&~87UoX7DCQ-~Ri5(QOw z^!R`f1{1uY^cW#D>VTlVP)L8Nl4EkG;E}q%Xm&2t zoG;haYE^d+jH$Eu|1jM(?dusEdqXE%C}9-lt&@OED#JZyocDnGg!4s$uQ8rqG&EZ& zF$YL?^EVKR?p>7r(GpFJzj#XNxgS5-c7GJe8-6Y}nOVQe?XJ>3T&QdK_aEddS*HhV zP*kxrSW=Dakgs=Y`o-EEtgLZ=pwa!@`}XJ9y?Y`%xvtUq<65-u{Zdr-jJ){=@3K62 z@>|&%QEp=C1<|RTF0oEk4f+Hyn;?UG9d~k|jS_{HA$HlM-d!M)q)=LQ<+B0(VptUQ zq)yzV8xzd-04sV52>UQiLEnH*VIRq^#D7qV5=eJ3MBgDjQ{Ta=yeLIHRT_cS3@F{; zc6}TmE#H2b%h$RX;B?dks$|;zRNr?%n!DTi%-*@9bh$C`VCBbx!MFg0Rp)?@GQLTq zEr7)a`!B_+M{p$NST-e37mc1Q-P46BOkQZOe~d0>r|O#w$KUoPzw`JS%sPx_Mc?

{@%mZEs{IRQeui)!-_OB9HN+dS#HC?=$aaM z&nPV&Cd5tg%j?G9`@jN4;lH^|^0wo5MibF|iq39cVRX_x+DPX4>5{cc=-*w=>^Y%` z-CBa-j)zWsC44aG@~dnuQO;X%{(Xy!s^BZsWuZIG&unnEfik#r>!uMqu=YntH6`8^ zbH~46TYvBw5P~c|;@^&stDxQeEnLqYqX}f_(Fkg?oc7|K>Y(Y!9|*Xj-fKQMjRRp{ zbN&#FNk)@JQNdYf4gu%y$S^{#w4Ny{tU68(*)wOJ3D>N9!ldiwG$KPz%6 z?n}0rdwvi^lVK27D_y#@m8gadubnBok$Ltg=~0b=q93>z*vB%G3sh_Z`_8J0s9U=8 zK(a*KaOS~uuAIt@xkleDj39%~B1A_s@+lP0!3^K9=^6!g-MV%f~u9s)GKGrBH$ppT`*9XRk0x%0yo zDeA%dT&e)w_z*4009!l%fMHj^#dms=p!fO**ja$%hC)M2oJ$E3VC2?nsgv^IW~E;o z^jD}zHQ$6lc7hlLVMohjICPyb%;qE4t~_?@Z}!NXjuldLRYh5RMu^@9&NtW3kO04c z!XlnI(RXdvv+8OUWlhviv!H|{OE|_}oboKE$uWsR%dPfXaJG{eMtIjtrh~)-PS>GMewk;#NKBKGN0_S;{4rghOg5M*)urP z6-=puyeZYMhi_s=ZOLcw6^u$>JR%_2r-yVAwG>h+9kCVvT1M22SG@M!c`X7d?>WJ2 z75SE+_}*9HaW`Wm_T;0kl*rjnV!wM;<^%D@&j`@O$dEYEB9PyWCNN!S;Xdh#UevL$ zU}w2sE1)K|-dauqn-p$tA92iy(4;c%uYw%7Uh}hu>eC%9OoANrnE5O3GkKPGRyyT^}{gH^6@!3~CEb3M8n%tXRC$W>AW;=qiGuj{14#$i? zfvZThF~7X?>ojLxdA9liYnQD2 zCy$c4+Tn~flpn{J91k`SKfLM?Z{N3kII9Jl z`nJo|#Jf9-$CiYIuhnZ+H}mGBKz(WZOLit$BFN37*`gSJAOi0}R?9D3%kRf(!zISX z|8<(i;fWq22QSqM5Z7&PYryb=$H4NSrpXYGSvNIW`q`3-7>}lu1849uYaKu47@718 z(e-#X1nR64XO7dM-S5Z8HS*Q(K8jWhfxNmZrPgCfRG|Ba_pHN5Mn~J9(9ybZK67g< zxZw5!#%c_Rd&DZ-8vium4m&xwl36*E6w5%U)Xo?KB%cDqMj&8}HC@-s0DpGf8%C_LjGwaHxPPAIy?ebkI|G7$h1<=o_F0E&AkFCA%dRw?-RQU9*`iFWf z=^e%XxBV|Lzr6=Y^(e&;1{cM_RyGitpMLTDbL3csJX}c9S&gz02M%0cT+{_QMF*dT zCzd0kRCYWJgH|=mC`#mjqLiFY%xMEEL^E6xR;AuSL8hXp+D$=#u4>Bf_IAtI8+pKq z8zIA>w}xI75@^>t8*5b*TYX%plQJ&06&ra97;;>P{?Z=*75AqnAe#w~b@iDl%`L{^>d%N!DeJmr^#@hDtN#A^X@KA6f z7FI?%O{LKq^>`z#ub#I1k9Z^DRq zGXy@GR49HA)?mnd!iBX;+vP3wExdw|KYDIxu2$1>3>O%1X9nvoDu%weqpV&a zt{Y^G>k;&7SJO?EO9NNij=xsa(mj6{W7?k3T}lyw-Nn2_8NkrH-?8q zCl%<|4`f3`=E}=wsHO2DzRuG8=t^w*EwJ-M_E3xvUQ_))p1v`vviAQwyC(BwOrC18 zJ=J8}w%ue;wyl$GPPT1MHJMXW{rCM_>v`Vv?yS|h&feD-ABiE^^AEE~$@(7uDz}km z)6FsEq=J`#Ph-DU{6)zDrA_I~r~AeH`F4srH5$=(hU15^_uL0hW6#J=WhG{3j^+0l zj=ELMeW!^^TBKw^-b#yez380Z0*<%Hm~{Olx+aez25`}%Ll5_9tRjw#gDQ`(&+Wn< zm`5%Zjq=o1iA|g5n_#NJ*Z2!AWM!RDACC+f{0!WvS5gu8ER=)|#VK-1shSS0n$_xU z?LC};O*%*V$($EMZ?bLT*Z6-#c%>$4Q9N(1bOmfe+QYL>y$fs%g0gH+P8|1*%cVI8pk&9&Ev=`+^#`Ykbid0^v~(j6=~Wc6>>_(=s%nlFGB z0cubwgjYJAiZ!!EB==oO_MqG`Q-=(4HoSPuCoh9NqAs4C?FWCfV+~i zkvg`{y+xD&Po^gXL3)SJa<4Ej97z!And;l&a(W1;*8b$V%-<6r8201;0-8)EY&e*Q zbGzOep%GEnD4Y7f*h~hfzh-UOZG|h&2?53w{r5w!8mKjyL#?o-g(OUK$H^1qNjw)_ zgB?TGJW6R}#^ZUDi;31Rvu-Ho)$D|Ck8w}Wmv59kejgzt92zT;B;{&ZY=y|ZdjYk7 zKCep^ec?1ypk!qJj=~_jf%;89Hfo_TJ_jO=@C2zk;xPN*)GG9<$3Koe2e>Rucyj=k zQ2w?in}BVUf883?z!XiOtv91hw;a+To84IE_3cgPR;(FSNrpiy(z6BxcP~J2j}6aE zV-<29O;E#p?CInZ8GVE@afAXq@$AycK9|?k_8YibG%?g3oy3pf&<(#tF1ZPy7i-w- z_^XDs7Rw+8flD82@0~F5n@)QP-T`-N(uQ^>u(`Rsy25}Fq)DQiU;R}%0b{V8YN;Le zsuxp*^BV>-_!C??Iz3*u-~`k+w&Z+F76?#sQ@-VHVMsJm4=wsEX2Qa*H_7hB6y}#2 zTq$D$XhkrLtRAGK5_`GSJ7#T`9X~ilzvHdMKt)GZgf7$uG8=?omlD#heD*cA0emP- zalXsV6=8Dv_*0lko>>CD&G{Y7Sier1q9`m{ckhqCk{Kn*rUa zd~>kkIk?Xwfd=FF4soAWb*Xi;4}ecv?51oA%r@6|AJQDN0}m~Br6v=}LvFrNSaS`A zR*AMLd!QzVo4YK!P(k-nFQg{;Mx2jlm0?0d?}!k>19Q^#LuZ<&mrqPu>q`2R>G_$9 z`;wd9!OacEr%#{SIy=QuPs$n9BH@0HYP)j8hk&1K7;0jV*nOEXE^8sFGR2qQ-r40! zC@R45W;`u zr|fCTj31G%Yo%RP(*jQZJIRJrgPLdzpdwj~cdsB-nW z6mRm}v*eYuwRa2-IR~Da8iOTuw(V!2tso~14l=o+#|#LBe?*Y5ZVL~dWh3JY8wNpS z-$UCyUc(bCEqL$7Kjmuuge1ms#24lZY_PB2Hh+HXd|g9~9)bc$W}I0C_Jr(icF7_wg(K5?1T${GC4QwQtVd7p1Pv;E3G4W%#gUdy zl;ViF-LT%kT{DUkdcWc8@^y+nwGGqI!19cZrbW7bukR-%u?EqH725Uf1!F0c5T03X z=l%`_i$_3V&=an}qII2d|g})ybHzy}KBaoNvdc2BiWuOD3SN0o#w}^k9c;p;8 z5lt$x;<{SIh*Ixdz=3F+ny~TC~tzK`XAE1@ff8N#~6#Ohg{N(>Jk2hX#q ze~zgmu1Uo6wY7^w!U-XnSP)_Lnf-hpyaWB;%RJJHF@Qq38LTeKgzF-!ijbBoQdiRJ zAGva``E!7K(+)&g?Xj)5QV|mw%$_3b?Bf%Cey6bs$Y1GuYcskL?b5A?q83A|sw z3A{hQLuvsWARe%MzI{m}OQZHs-UTZ1D?d8)bVxotCK4?{H_0-!xu%8&N#GU0WScCd z)9-B?jL!Pr<>eNgb^d*GTbB~Sx2@)@CXuaC5OJ6p{Pr8>x(;wZx8pLdT3Ihbz)|0Z z-0MoGV$J)QSQRSnwjBB>=Nl1&)$?sRH7{hk zKAI%4VWqIF@@b(1DP(DYcQI&;Dzp|VaGsrGVZ2NkRB~I)>E~p}ajD}QsV+sFh0N0e zaYnqB=VP=u=9TF%8_jvr5ND9e2G}cvf1-_s($D}17|gdfM-v2veSjYflz-Pu-8R>% zDGoSx+*F!d9RXkCtV(`+@u$>2YcaW_3v2%rMSm7h;h1Tp4$y;KOtolWKS>nyF^goD zmJ$*WvA?%J_c$fyU!I)b3AdX6k$&DTt9&}g6eW{W0rt8f1(SL!n3^kYfMG*J)!^F! zl0qdhFdkL45~y!LFLz>Y{4BDDIZMsI3}^{%Dz}(9_|g1=(J@CG!8Ssbn#ID3om#~o z5hbpOgFt<~xqV~A8B?D=em{E7(9W7A_ZfH&61fw%ot;9+uKP7VTUaKKPum-vnoK(7 zeBPKDksh8FHl=()og@OHM_HGJ#|&f&9sHBzF`=hZ`5Amynd z6$pyGhcGOYb!wR>no*;Qoaczc`y2uqjLI`n6gmk>uUY}$0VjMi09SE}_-h-r#@=sB z+oqpM{Y#0Ji$UU6z1=Rg7+bR)la& zYLCi!Dh$9)LIUA|V~m2zni~FdC@`a96{-SFV={Ktd-T9P>;tM49KOKgbFpB2XciHF zdiljNXv-;vJtRYM+3!{od_&Gqw{>-MdWq-}N5o(AxcbN0_K~`wYgq84T!+F!0)Lh* zuqK$*BbiBmEY7jOYfyjPhU$LSPQ%#J6+G(lO@g|urU})#TfeIzoyOD4B@mAb&-3jT zE-jh>H<~VyN)%H9IHPQruNz5b85P5>>|c~>OOBiGABq^hpZ>x@gOmB#wvYx^`CsEN zC3A`q-1yo~&x~Uow!4R^l%O`NvDzks+(CGcpIfa-^XQ6R}ib}^5_eK#x?lB#k z_Pm;qXp0|bF1=*pG5`k*x&^F5W~UaF6LHHIK}gao70yZ!!UBtfI?d6Fr@yvAz^}v| zwfoA zuIL7(rDmd0g&}x}@%)4Ujc2rLlo*1fs?2!&mC;;f(p&{5&;hrNI~JZ?xtrRn2yX2q z)Q3OVx$2<=?^Wg2$Y+l9OMF?tuzk_#UdPRDjzAl}1bNUKi5cAnj+v5S_xd3vHDaq1?^^KPA4u@@sjHI13vy2GW&S1pFnVE^O8Y6$H!|Vke4d;pp6Fx=)OM z|4|{tre7aU=Bc0(N7?&*>C>y+G#~)ZN$VzU?kMGYTs50rUsGl>#tW zq=YS3f&h9Vz4)UdIOafNrAC&2h6p0*z4aCG4aG}8-vq@g;XAx$KdMvJo!n2GfCEv2 zrA&G`P2}b+dh5(#lxi!hs@x5NFOwqy2a5+LgYBpw&Zh$Z+HK4-R=~LFyHAq3mnCBV z)NsF>+k|Ato3a^#Mk-EJgJ`OTro+?oeOv$5FSx5Kb#7BsGzkmOxKuI8TX&iDX|pD~ zvM^6rQnZ`co4Hj)NOf8EdhjPO1WW`J9^jM68Of3*3DnFwUD=zLAsqYKw6^y4!~)xR z_s?Fb1S|p|Htf*s#k9@16`$4^`xdwOt!V)>#h347n~~2YKh@u1wY57es@_7>D{+?3 zIY>xI>i(w=!x&)&P~>=d8mT0Gr-N6>a?>F|wLwmPZM27e_Zf^Dz5WEQ&xZTj(rGMjB`0 zuJ3KkIxo&#Vj1%=cS9RL8)amNY zP*5J%J!^fe$50P6W7{Y(Vyn|$0LUdX*s?K;wJV*NE+QyetiqrYvT5HMd~&MSiab)! zfRC4ZLW$(ZT@y`(#0rdinz9K;)b3i5{9o#4kU$ND;a%eDqdD8;wMQcofY<9`e5!S% z)lglHqAO?AC6mi2C%#4}H;w8f!@?SM1Futg7k&;JZAHL2i)U=W_ruUk4V2EV{sPFt`AHnP~tbiN?aNvwWmtc!sYPp{cb9)>pjWic6Ml2z=<(Q`DG3Nr1o}nKzKM-_X z-Hg9XzMP!Fihil_?oWwkfz~LH(pw=YOi@OH3UGp(Zi8{q2)Ai3)gT#REu>|8bLosR zgWjr0T}r22iL-03K_wYMaMcMc$y*Tm{t=tYQ2lh_uCw7j3Ml9F_u}zZ&0yVMq2d(y z`0dcze0ZgFo+ZsZSb}PjbR!OhLdHOQqUrrQ{4T8#flzY_ztvTrhRSShXzz8B z5I`eoWU~7q&Dwbqb@-VC@E)GfvvO@)vz;92PI2#DF!@PD>;Ah@jKU`y-!_B2gR6qRTcN8TsgL9E{2dd63NnG1^Usni{T_f9VS;E6O!iipnOn_*LOds{muQ}z z+Iw$hpM5`0F`nZ1s#;*rBxT$yWAlw*m?(eqj%|!Rraa~?q`*_*M>|b2k-|of%7lm# za*f;i80{AjePHo(&eNOK?nUkBD^)h7FFe7}su%Sap<@zdi{@xt)Ynm>tvl}h@ zYx9H~cI$qhTepbYeh0Iz0vvOD&6hFTApxnScwu#^`5$>WqYap^vg0%!UV*;~lnKyq zfS0ApQc?B7vL|r-xBkT^iDDn@xoQ@f#rRaTnfcO$rWx0=j*Aim*>8O%pc+c_7wn|f z5vmxLtikkB)_L{;MmZK~O4)gQX~6jS2-a?fW>syxjp^&pX}87mr_J2$V=Q?!`ZE4L zTeN{=wBcKg?&wxL^KQjBuk;&G%vMWd;GF$I&U*8EyjAk-s zAQ{yj`2tQq4lr2#%Hs0|JCgW)sly*9cg8uDUWWsjXP46yV3@{%j@+WhSGZqZwqF8_ zt?=^S4{A(kGE<$*-OHr2$)b#TmiRLaIdi~z@gILoVNIJG)-P|G*7py#2=hoYElfF6ih*C4BFF-cxLy!zTag|l^|F4u4y%%8Z<7HY68MW zQwNNL@LJQ_I<)s6&tx!La-n6)&6uDY(a)mwhCAF#kD$=GYn*eMajltt;8*s_w+zr; zpmN^uUys#@UbMt_|7wLNya?UGHCsJvG$FV*spI1)V~0~0Ow`%vt=#VVz0)Xk!V66n zNZO|{oUH^RmsWX>qT>7rLpLP;WuIr%yhgZo`IM*5ja_Z4Qvv>^N}4@>_fv`EW3IKj z4ITY)r(f-%fC0@&gH()c4nj0?v&j>TgvL*HkGLPOKQ)2e<>MCfak29T=K!pz6RBv5 z=3sugv)z)s}6taLz_2(MJ+0LfN*yD0Wh>>BQ|LBr5~_U9fdL9?(We>MxGU{Ppad zs9(eLTnE*y;b=O1$94A1iidNuT!(;@ zRkp&{&rRoQk@+@x-^!Mt&>vn$-{)szedOKENo;e)uvm}@dObXSxR8QI3L#@f$~P0} z47Dwan$|=Y!y|9a(J^(NAp{<`G`qMzD#!&s8S5kGlW4+iBYSwlr;^ss8?Ni3pV=?ELBwBkJ|z63%u{7qAvW)~#gBr9wKAtfa5s zx>QVs1$O|BN4hx^i%pfoOCxk1HhNa?n!W8`*%=C@-hV|P5 zfOFNZi~~Tc$&|>gOTsJ6hgdb}an_;9iZin=spaNBJJt;LjjyVZqROe|s=|>lnN-q% z2t{}0zc?*x9zESmm!p}5~+r}Oh%8p$_l5LqnLBydZMue*Kc`=@#H zjXC7^2KTS0{FPS}JmV>!x_+NQSa^$phP#%YnbGb1A2q(}7Bj-l=5XTm)J%oT_HKO> z=+WV9(TQ)oi58t(Dv(AmSLcCInK_U31zICc0LEmuvgbGo^jwcxv10m09<=c|s103` z`pvXp-0(sPeRm+++X_}&e$HvB1ygvWJc=9L+*AEG0Xj69F9IPhp0T#(y1T)>c!$^v z(qIWxAW&a~34Pkyv-i(ExIF!QB3HiDvSf{eJXcb(VjjF>-hRaK&%~e)sO^H)oZWHQ zaNSpb1^L@Kv;jvxz>uVp618QI-&qz5DY5fMMpA>uJ#=1ypp^!`(~gf4HRbP00!*Sf zT103d2)8&EI-H)lKZUQd!M;wP^tx&L;LLpVcO4wK$ixO{Km)}-{<>KGCFDO37w z(Zm}%e?zXj1dXGb_T(G)=T%Vr+8_etblZ*ZStY7j?=K#Fyz>9j3Jg2>4D(V}Y4?2_ zC!A;rLC$ouhN5aDKMNNi240auPI+ilyc`ews87*g>*`986d(}QL=0hcb3Szk{PF;L z5JSS(bOm2sX63FQPJuhVZ%AM4|Ldy;y2`xa%$v2x=v-}fRW$BKp5y8XXMgy85LV;@ zB`~G6OWuk8;LJ?7e$_gQmB$)dT8Nuw;n*7h@_Eg9cZBWbr(b$5O($ilEipq1z}KeYL(`f z@`2GPy>T3+nOAV=Xlk14_|f<<6oPJH7+J+w=(PZR&lNqEIKWD)mQ4g!GB6Q|2tcmq zHIR&jyyFs=xH{90pb~t4l?RJIvwcUIw=m;3ZQJmXt{K~u=Y#gy!r0X(iZxa;2M=J6 zf`QNnCWhGt5hV^>NP!-yL?bi!mM(>zHgU=4hDLASst~H z_1QpjCrnSa!(Ozrh2V~V*|<#jVM{MDZ{?Y{C?vDtp2 zb`M9=qT2v@%d}f_XX5V0+p*LHh|5G`NxtYnWw||H6i~`w zsBu+`1-6~P$&vg3y*ceQhGd|wF8`<8lRghUtqN{&f~N=mNFa{93Q6*_+F2l%G47Mf z(~C{GkvXR@D!tk{t7KeglzGdqNtj_F_~5)HXlaW{jPni&ty6dN=mvX5b>eYtV9{A* z29muu?1zE1Xh^9D49{ zg>=oSvhRp30u%megaT+&f`azfr#Ar#aqv|w)Q=L;v3!ODkSD6Q^z^&ZeXMu%V&=hDvM-^GQ`Ntki4=!OBLAx*+;u0_ud2-h;#+>jW}d$I4cVC!N=NpL)Jw zJTpV7)j#JVuej{BPuER}Lxd~h3egpShX8olk`}AsOj??#&z1`D_|3BeV>cM-!`cKNh$yGvYpb0aL%OEDjk7=2XoB zlbTbX)&FJLQ z)84p_=;lr|8Oz)?XqItOnGjHe3*<`4H3&XeY_~mDw%V1rtp=NkJGLg*)Sc@m>R%SZ z-8GYi_jmy}W-1}_Hi)mLJzZ|Pw0!7HW=D4 zvO03cbCtp=Kim;Y9j+jKZCWP^wjRQP&?Bx$ZYGbvm#HE}rV4Rv4m5OhBbqou@Qa=B z3Q5zz^8I^EXwcm~T)APR%UlLw>S~vJLW3->otb>*iy9MH+>$#7QMhESUGF}Avx`Cn zT&P3MgToO*wjb73_-$H1nVD zK+;wch8GUJDmWwDzAET!)*|_OPbxJ-F?~){z`)jRlac>J`;b<&Zs4shaYG+vQXsBr zUjrtVln~M|3@C<2seVl8qneCOgMh%H&(b-aiD=qP8-Or#lCA<6e(|c(5iAPv2v7m8uEX6GT8fX^nH9_DsT8Y z)_?*;-{cAUC5kAElBq(6+@?}U?~5?jUj&-@r04YS16*f9G6LxFdYNI82tMjB%e#es zeYOEsgcT4rgc(U9DX@|Eez$P?iX!;wfz>P#5cGHhZv~3Cb4agU!;gvw@k^^m)Ggs~ zomKsUSBi_W>lT`Q6n{AJ$pi8w)vLVV!MZP#yJVrxJ}F)ss!aEoQpu+3kO<@gQlq3r z{ZdfLrChntV+ic`C${=9Wf7hNAY=a&R4ReKdkBijy8tw!)e zK^TzWv$kCPcQBD8c*1)rj%%V7o2$BUUHT(x?sNE&TqB5ejWYNjGAH9PreJ zsQF^-`!z8=kh-@V)Xs4B?GKg>Ih0G-F7=r zQwsMy*a3uzO~U=Au2_7nI<$4C$Ovp;QIz<2r2>&Z+R#E6QZJ;&5Q7va9IN+ntWZA_ z?4o{GX7tOc@xFyYOU_rF@ES%#w&BO`55S?SDAo1I!9p4{%03HMKj=d3Xna+i*GG~D z!=rus%}Pby@4UZHy1ljA`|rempmKvjSC4U0`08oLKkoGv9v~l!2C(OlNgHF8m#9!( zh=>w@=jW8?C$%8sAr&grCfEq|m51fbRjRN-C40#CPM9|)KOvVRPGd! zwuQSEAeEa?ROJB3vHHuS6S!V$#;vt=6AZTQ94%Tg4+WC?Y=_Md2WT)LXnNh&{s=f+ z3*k+oNYF8p-WghI| zj-opXk9Fz|V0fYwj9|cnTJaFy7p{8xR<7)Cjy7}#l@Mm!06jpRcC{>hkvv7yuU^;C ze<~@OCkH12z}D3NiZ75-GT0qd376%BJlWz*k?KZ3FwnRN;bb8?jL zCsQQ?vbN!|lQ1iahjj%M%IR3|{RKt}u1@n8$#DH|s+vnkqcKpO@AH2Rr)fQ1MD))6 zNpSmuVtFm%Mj^=>C^qqs;3?)p80>&?Y{L57{l`F6(=FwYjf!X5+bFn-95sHlMV&MS z`GJvu7 zFTkYp{TCU)X77KBEDs$yRnb=CqYCS83*o%_Xe}$OxWH-nv#3T!)hu#k@5EYJ67O!oooQ*Hc7wt@X!h)1V^KxrKm+H=(Hu1JK`sf_D`I{XxzbQOdzH< z!rTqPm?@d~(B2q))Cw6lektA!JYP<=PeAbd4DQrrfam8C2ZcvDmH5 zv&Vo&&v_Tm&RxN#=+6lMdgL%(NNAK0cwPG1gw;d14>^F9v6#9^)_0SBvF-dSp7F3E zYgm9VWQA~+TJQ&76TT^%-msw5I?yT_wOaQjH64};A9Ach26kqs&s5PIR0+k-jjyoR z(?K?XiTKH{;^#kHv8)8hculfF2$t#}3obNa{pexBW#Zeq>-|N0&JC%#-jNwSq2~!%vh43yMrv9&Hvswy>SwM@pc2#L!{Ua2K%ePGMA!W)8j3 z$YJ(10p5OuWvjkkWOn}n3f0MhL))8~24jm${nhK|t>_ELQ759R8lpwH7|9ITad4?* zJG0yoW#c3?r=b*1^%qfQsm+P#T+BF!MiXN0P9$emWqGdBNuJwr@-e^~f%VOs|B}9(0 z_%vYgBcVPH zifJ&XJ(uTQZ-J59?*LXq|pY9!uvI|AIY*v?!$*QS2 zA}l&=P=x12k7qeUO~0+#S0GNP$veM25Ai6}#`ExW`KghY-%F1ns5t^||s5GUwxf$EUSkZ=j( z$DJv-jc=`3URAY7#4n4fR;dzXeGV zak}sjP`0f!HVds2 zaB$EAa+ihn{;zyt@>=XG7)QrBAIKNLKyA&w=UU$A#?$qzES9#Z4ez9V6K?oEKxR7IS z2#C69r@QlLkaoMBOrov*0JH1-9OmPu)!|xUrwdp+IZgw&z%BpCd!5E_o*lEe9a7LU6j}-8I#y}Y zmb{XTQ)3W84`4NCytbRy$9mwL{Vgt~w}pU!E;GxC$~LWp2Mc7bHaXt#pRS*KS@$RK zQ2p4YM1kT?rid*T_<`M)UYd|d>T#A^WR)>)yw_lC#hsa2WQIblQW{G0rttaWA)x`< z#uJCRWJQtZupE`H02J%P=O+^(olKRinV0s2R?sl+Sk9j9s)n<#+@^Zm$juyjqL|TH z(^GTK-O>qq6$>nr3-ePCZrrx`&U~pj9NCal!joWyFlq8>r>lF=q1P)is}h!$93bwm zUb+L?L18^EHpVHZS0nLKzcz1lV(`%QKYf0o-anQbtO-Bh;(`76CuHv7q?59S-VwYE zJycM%!J7+;k>BOXTE`n}D_d?|tA*Nd(!8^tdRO}}H3mh#KQS;c%mPYn4Z-+q$lwWHxlAVUsA zAGA{U##cJBmVy&-3s#H?JKMCvo{uj$-hVmt1|2B6>V+?P$9y6c+}+smN1o?a__QL1j+I>b`t4Wd{S${0D(E)@C zVA^{9+Pw}mTDN3@E@<$kfxt>=WgG6wLU#0I%ab2oh$2iN@(MKo281fC^{Z^MiSpyh zFDaB_-Miln$L5});4;LfJuW|lfNim`dSFZ37uwl~*K3k`AqpZWGkPH*^hN*<)AhT3 z%*T80<#l)*JT`~O1gI%H6H=u5)|n%sjmbFAh(yWv%{ubqdV>p~upz~YnGxCaj%;la zt1BoNR(&P6d>a<&r2YxrZFo4uy=Pd>)Ap`Qj24<32o#K7YheNd7I&7EX{1&ciTjg> z719l+^LYd4u$JK#hnKs@rmMV8j%%LnVVcvCK3=p-!W~<5*1kgJ8(TI5|6DiXGkKar zw<_q90oe_{Smc?zJ%&zHp=&_E;41`(y}_SrnMRImj>|dZVmd1@66>``WmKDTDG$9s zwfOHdyar)>ZZ&^=`5v^JtD#m~6b6!68_4-rB(Ot)CI(EjDPVtn@f7#`_QbGhr>$z2 z&$g1{*Tr_12IGUA=Z>(2wh*yzPO!gKiTv-9%K-yMxg^bu03f+=o^v!XCPjyx(~_O; zSm-5K&fWBFr$-#5wC^IN4-v2fL#AM?6EPv9JW~WGf!&wfpRA4eHr@a3+%Z`%(CyT@ zrt?WQEH?yB^0N5;k_!`PFnI6PRpQRv#j0Bd7f8Y4j_5C(VErXb&)DM;Hq}(s!lj*1 zMg?OXpvxiz76ph8UnwWWiB?64W{Hkl2N51ffs?QSk)`{25OUHJ`IgjuJ{ebJa5f~A z?k%G(a|0$QJR9TS_Fr4KU!X(JU&)Gc7yxw$FJpSo`?!JpxZOfJ|5>ggq@AC zWRDevmvB)vdL9o4s;w=1-ud`T+~esM$$|o8cQiB%E-YXHXMjKsNGR3RP}u|#$muf@ zbW*bFcy;&7`B?BEETHTrW?N8dzQYF^35D|gH(dUe2pp}4`DLQ7=H5{d+uQsXMo;=T ztjA<6@D=ASw`*jZUL-2@xld*&BtI}mDwfyli$|R(4%?iqHXbb>jOj5eCEWiEV~6)= z917rHEsngfwtC+$7LzBy#8~X8s!MCEQ)S!P+XScT=b1o@6wRGAHVAP@c$S8T!=sA=+clKh@cX#Mr5hTdZ*hx$Eth zP@C(+0orbSJabKsYXL0ezUuR_W0Vio$k+c}ji7+lP8y%Is!AYPMG1Roce$n7Di7ud zgo3n2v#*;ib0&@=eDfAZE^jhe(R@7nW7t-C=n^u2F*A zFr229RyfeK(1v-@6}fAY1JAabYMAe*p1LhM|AGOvQO2GbzDYzOLI}ENF4r^Hhc;ig zO7;}pim{)i5DSr}ZM1K9v;a+Qi;kJeb)AUmCZN(9?ZuJ0-zn_>_5QZrBB7PamXz({ zYKJ^hvG>Zl-QyPwoCd)7M?l9m3-$l|>+?U-kEg4fx{LTFH2ULwb2Q%La*zjPxMQ36 zbmVVq(@gH?irky`!TqbcfvS+SL7Ag$o}`G!(=WyqD6qd9RXg~kciIRrg8mpKK_R+?*MiSsTM<0l}`iQsIu?LuHg)vSf zoMi0r1NcHA?EpZ_PNV@ehH@K)qsXc;_r>5dIJc6j^>a8gHGq62t8K(xV`7e?yCRVv zcC}9{iXR#=fS!AjNoUlZ?xtsf`}xgd)$q2}H<09YYuE+n#pXW#@Pt0xse~=nA}-Jf zg)y&F=%F)?0o`Z8Fz>sXTE@7V|BfrKSRz$hPiiAkh%$fmTF3lkiYN-%GA!U7 z)<5s4K@Cuu&-)rY=I*nq7>w|O;+a%D8rX6Gkca;~!RzWXiqJ{m!<4?v{VQ}Y7F2J~ z{SVaAgNo?>ZHYd1xB2_xQ#drR+`QGL52nG&D7)StLIwop?XwtA{XA&lD0zZgM%`Ng zH`%0n&8SttFwd;~Oi~UBiyKhyYHlZ46Y4d_qawsQ- z@c+ge*a`lWF^~6_Am4|#Wvd`J3amJToze5g2!!B}4o?1D@jPC|7Kln7@2+baD!;thDj$2`{y}0eD{jRzB|hcYo-aXh5lbS8~BaE!rJ_55Xi5 zrY>97fw7OKHGIBZ0?KNZ2EhM?n;2T8!rb24f`mw<8n)#ea^(!J3;VIS!w-wAsZ64=2HWl#i*P>4ATsW+ z$D>tMHMy5dezU=*^GT+q{*`!RvNRd@vurkQ)2wWga2B#?&-}mlvJYGf@wLP> z%+(~J%vmHQ>w{o+e=Kj?)OO>lsj=ovWyo4|`TLJOOeLRZAx^NE5)6kZiDQ?DM~+Kt za1zPj6eHW9iea_jhlwO7!x#l#es@w;N~35NioM8c$%ReiTW@eW?z zfospeqI6>*Sg>pXQ{-H z$W4qnH{ubeGcvlJr?~+BnJf2dXQ#wr{z^uBHOup_iP})UBkct9RiqBs=+_*Vhl(Z34*_hhkyp1}7fHynRP zsec7Kjq-7vLU^zgO4yORwLkJMF6?}FKFhh()SUc#Y2CSbq1ZLgz%rwe?ryJ{*e|N; z#P~MjR0W!0Ufp?oKAcPc_RZwcqjl^qn+&0?rw3rb>#kH|A*vNu7bagqMWXvJDsLUv zbx8cJoSe<7)$hz$nn3YM859C9@WDE@RZVaU)lBH$UEr}hI1n2?AT~0k z4Zn-JQ&-+2ov%Hw#c^E@JbHb85)$XR_Y<cAb}Pz+vrUy&zU(VR>%oBs6n8I{)+G=!m(ycwg<;V-{{_f-H zLat@Uf?BtvuV0s=F*)#*kc6n`9YI7pKtlA>>4W#6^!Su(zs62v^}~eKB-^qyTX5Ap zos672g|W@n>~~wr5e{VEGSfv5PfzZ{{yDU7uO>zTba-fK6D6Y_3BrXz#mV%FQ?{7_ z>$;2B!paGFN5neMG|dujM0mO~+6+mCm}RihW`n0|u(>u1R;^B;=zhaKS6-ZfB<>!p zhSDD129}OmlQn)$;aiQRm?{Qqpet`&`}x;*+LWz=x`%1T#NQ#Vx|&J58dnMX>nEu9 z^IqTSUjM&LS2GT68PkZV7*2^v#}ZqSs^f{-H1U>X7mCRlIW?#GDFe>BD|4u*Vu0hv zSu>9Jaq^*AXeo7aU-Xqe);HEXzel>x1E=aBE8Z)5GOfHXwj}<%CGIAapj3Ggn?iJ0oC6)kGr{q5?hW7;U)xM*l>1Ry7+WNM8SEd3s@ z5r^LAu$f-pe&-bQAv!Dd#1m>SrDgjndQ6<^jE*wt+D;uZx)fIH0;S(L+T@G6UgW=n zx{`SaZg*6&R`JqSk|m}sn_@mwk2Wj(A5B*o6?OM@K?DU!rAxq}B*mdYMM8#By1QGt zL%L&tp+RYe?uLhw7|9U^7(zORP65I9=YOsD3!hjl=FYw6?6dbi=Ro(BQsYP2ZdWIQ z7_hyXcPVmcm#*Pc}MQLrVN{yD=8L6wL~#st+LL{C8P-`k0vtv_oKyWC6(Po_JW z5Eg;5T@%bxQb-xQ+*7v@G3BF6FD}+!8mZw4T2XtSHq$HO2u*L94YWO!H4-D*HU=wD zsg@&W+Y?U61KM}fja_pbruXZp$s3QN9K1ah(Bll{(g8?F$?mytfT!2csav^-WY5|l z#;yC$VF=3lOg~(U*L4n251l<@1+GtK`0<3D?Y>j2QgYBApcUOd;7#`HT$RTmteTo@ zJ}gvSD9n^o3uaSV)}@-=1pXG&&P)-e7ht&Mqf4hMlpB=I0Fe!6GmO6=gepY%+ESEY zAJwpJ{5=)b7Jk+@gL8T5NqrP&*Be#P_A|setHi^4O@vrebH>O`L8-niLipV&RetQE zw$#g)W=(pg8Eglh*}W#g+qXr!-{%J@Ryw^0sf@dR4OXaYRs3##mK@n-cQ<&k#Q&g@ z!KzsGYf*F9heAT`Dw$DXP1bI}NHz77Fl15m6;YkD88wX-wVQ`W{I&=^J^imHy^G2s zTNYjN!4EHR@9lT(vd15p5wnOV&%^-xHMpOwob6uSx{EOsh?ojwpPU}Bu5^lR@B5DU zYm!>C=~hRp6picG@LxO~8g{9I2BJ+Cy?jnhB8P@L_TyV>c~Z){1985>#mNMp={`3} zw}A5JeAo`d6<(-3 z)H!cA)Z=M^!7DHtV=AdSUw4N}Y!-+z{)O>1Qk_T1^A6w5>X;x;zxx4$%H$f+j&Qh{ zK<3GH`pR+8ALG9RgEOh~X0lJMLAt!p&R@=}eipC&DM(}Yld!V=ZsjXBlNxPhnx-_1 z0VKLaC84P4AsO4#77C(L>6XjKDu|fcBmI=NVb{bm;iiNv zTERqzzeR5B`2wBs=yd=4%_l0w0$d5|^_6AmPh_bIW=y_e@Y-XvW<1<8L%$K8fTaUx zJl>VQf1%=9Ao5}&oXz;pw0xkRMp!tpZgp}AZ8Uatm3b*`T_&0At6150Jw1I_oh#)z z!fZZ4-I!8*7B4X}8q!T4#x5h{fd?JD75rPiz9TKb8E$pBsqo=YR)lZ}L!QJJB=u_O zg@3D1Df()e=5Xcc*(~uUpm8X)kfFK7S0_S+^x;FPPY8d>i4@g=C134<<^w&-Zj~`X zg-`=T`RUOF?65yWCRJ9_i;LO8rpm z(EH$m;kMS+t-sf$e@DHXmtW`B$V1~mV|xb97LUw!riBsY-MS^V@|-oyDSw=L2lzb* z`v<_>?)_Lx7Tr4d!g?~@cy@WZ@5`fAKoe3(0yPGuXHcb~arc}`5Jb)D3|GGwdazpC z-Ig`p1|%A!Sn|bTwWxkaM`IR0HQ~{^U1}2%$;f?`_PN~`-Y+YBPVleF#t4HRB(kb0juQ2a#eUZwcbs~ zQGLoCZcpB*dhMz@!T4|n)VWvyB3tr;&U}x503Pj7j8^vftgHHy?nr>Ua@yiA4@(3U zB8o*Zs*hsZ`pD<<9G`vY!~Vg+jN3DhpqI1nun{+LHEnO3c9j5-5&9f&tk))GR_#e7 z1PWxx{_%0*yltS#uf{0l5wPqk%%juRWWMCb6XD%P zeRr`pp@E5kHPSt(!7Gbmn=B9Q0$Z`ae=vO4+dTX^|T2}J?swOAnvSwxT%r@@yI%u=DJZB_B5 z9C;E4vOlnAqPG{j8f_*-@_P+)^!pT(Zm^`JJ4$KHdWg@3&wwP?-$^iEonx!EUlkML zL0L6Qnn)~c?R-uQ?Rxd$kso2pO)C$T`ZUoV*$`*X^&ecT)TQMNdvOy>PLZ8X@>sL? zPTZba)7MpMV#kZ)1Mk=@nr7LF(th33ZhKf$e9GP$sPi8-(J%m@Y56TUbKrO zC}&w2EGu1K^z{7d@DlEnG$t((vvo=uRVhlM=sPemoYc)zuj^Sq+g*PJ0RFAtCQ6!` zm0DcYPEI;_*tS_~w}DI1WlM1vt2dEPxllO$?$RI9&Eh&abgNhjM9QxUWV{S!u(dEu zu3l2A?rdpn;(G*eH4nCeSOAeUuaqF2%(K2Te6|nCTIkE4*lrq(*^~KsB}nvK_}>G5 z9tX2gdp3q$?wbW0oIRd35|4St%UkpNG&{Z1`y#=TI>l17O^1|>ZU@@!>PR4|4zYDp|B8}I5PH&j`PCGP>idQ_@T(wwEdj>yW z&iZI_I1DUq-5-}-R9m?EEv=VBW^075sd z(;?;6_GmZN_Iv?Q2jM!Zwr@Y@IssAvLP#)&LQ#>S-heigv1)WB zH~kajZ>s`ra)@oPrQIAX!ra!~Kk}q@4Ef=agwN-9E$i!kyj3v$(!iINnR_xH{g!AX9l3kt}hdH-uGaP&E2x167oeEbW^IH1TlhA0uD0OL8YB`0E}z_zaIDke&mY5tj(OM`$GpD*9o zyBG_z)TkR)OnUHp5FxS9A+SQ^iKARUFMH&RHvuGob;CT&mTL8&Mjbl;H= zx$ahUro3TqRs?^wwe3Ax{1NdDX(!rR9a^$NJdfg06H2@lN3lg!4slhe$oS|~!MG$= ztUEgtOJ4{LHAq-@XPjm88J!+r+>E+9R;`lj6_~~a>y-*+?A=)?npM|yD0nI?yymu$ zA36Z4=j^-}+tFC$e0gz^KUW36c;ws4$zI#P;_7pIW~I;bs70!KR=l~)IiyXSPV?M0 zkP>&fO(<9kK5;6HzPD`F_OM>;#1rg#|ABji0BhsGhDCa5BJuTL!y^YG zU+BG}ZWT1kD50RN`AYRF+qF*1Dh2*T_o!WHwCZ0rmS_>9*C+;FEzA*lbP=Wp8uPim z4>>Z*uh*#_rj21wv$4r8`PyJW*R#pLb4|~%fBJjs)kNN#%FPx#;zHt3fNkvKc#o8s z$)Lj3HL52tp9XiN^R~VQeIxrCrt^Dx!>F(t(`ZmyGXB$kdC?+BBxBJlx6IL__)rm; zt|VaFBFh_ZnvrTb2o&+RXLQ~EE&u|k$>0^}BZnHWbIGzlNHdtOsEs2SdTG-khQ6aD zxoq*ix5@ACas=QDFieL~X0xEuG^=s3L#4Z#3wE7ayLQ#KDI~Sg{DMrQ%rRR2fihBl zI_}yGLe74Xr!mj*`Ov6v6d3UEJd16vL=G`!>nDW9Nn8&l`xi||`d=`mH+orkse)w!kA~_Av6arX2QDbj22O3??|3p zXL(nio^Ggl$|DyvmhmG!%v3=Y_CSU_W4Pv`I;x~vb}Cw=Bm!gO?jL)X%Nukx|13{p zaeH-yc_|^W8uP;n;PQk9>S9k1e2$BilM20H@E21>YgsrRA@L$`rg|@-{?&%kk^8C0{GF0l9Y5G zNu(_!ID6>m!H8IH@if0Cd%a#2FrsGVsyI@U%24=mVaCj`u4{J5i#o5 z^yeG|%(NLwB~4uQ0#=QV9e9yj>Z*D%vv&7woGvQ{XaK_YZog2DR4slmGEJzA1bo0l zp6`&4VO-VK><Mhp6(h3mq$#cbQ(i<tt0hoN0pl z^ExUR2%<~7yBovxH%v&}Eqf}bF5a=ikM2XpP15saD+@n#< z?eKD*EY#9Qq&Wh!bB-qN@ek~?o_Kz`vr5L$6J7#vVe1FzmT7@ELmmt_cSZ;Jvk#xj zS_@)JTc(!jep0{J_d3hQ_yG`6X0WX~d!jy0Nh`m-8r44vhi6Qr8yG3;$huTbt5KC! z+h;_GG%_Ft>Xao=rq+JL<2GR!0`)e2Le7{6C=X1icnk|S0`5F4k+?UCg8tXoBfgfN zFR`|n?KaNGw$aAcyj^@3^C@Om2bN$?Cj#S*%w$9BOMVwepWhl9ppt18yu{1%{XR^0 zGHS3-OMIfZ)A3?Ku=>Ev(L#Bsf~CV>EocqP!3&G;9aq}^w|kN+-Q62z^(;zEqhaCk z^%AOE;V@NGU5f6)DJPnoeIgN2>eC(X^pi`hp*ne_%n#|UC#JY8o3*3D6~GBc?gjlQ z#LpR1b}>ZNZLH>QrhubqHPr$aPk~?1f(_(l;#Cuo> z*V`WyK2_kc3^LO-YuG(wnKTMvwn%fIXndr-`+cykvRfCK2Dg#AouZ?(gJ1Fvf2 zR!l-{%RAt?GUGDI0Q&x8SPYSL5~vm ztGClQPl zM9@wHr2G2!>-*&`tMv{p-JSppSMi}Q*ajG}sd+R1C@%2`TA z6Qhjt{cSOh{W6YEp0uXvu(In+{D4cJfRa3PznQLlv`JP57erf9)M)U*x^ZU9CTRGi zH{-;Ht_+~oI=xSz1;dzl4_4|=HOi_w&mY8lc+B1;{J{GJ6nllAs4+0o@SNw5JD!FT zJT8oymtcZS>mwW}BDuZ{fQjglNz=xOPNmA|D@=arM)T2-6VzHNt$|V zZ*Zq0#1|Xjdx1_&^~-5+-Cb+s(s;`mMJiarzB85yG4#o)?w_>F$;s#VoiwQvvmt+jkpp23M_WyRo4?1irw~ z-xvdbStLJ?3%0sum}(!3PI8IQQhXGTArVj-GsLjs9j=ueW3r_@u=;+h5Prx$4=v~d z_Ud`kPjhdttvyA#%%K^Om}Z*ujz%=&&?EEvJIs-{oA3D8MVuvd%$$MpP@R%kw_*=^ zZ7NhcPa^QY{zpTEHwPtJQooa9L^AKI(Y6xS{oh7B~li z)tTr@w?6{Kr*eJeJdshQR-p0B=?AU{yV(v!2_DR7HG?9rux_S7WZ~dMI6vpuD_=5s zk0YMrsrXB(ZK@5~gd>1w%w4FdSaL$)Y;PI-N{q)fdfq5p&V%-}X_6o`WQPb;J6rt- zO^b@vnqH}AzH{_^kriQTqf-)LPuCa_o6>Li#^)wV1{U_}~$2W*E4+BErM32{Tr5{@E7US%s zK&gpa?zHIH!4uj3DvZn)`q?E=N_AuZ=%}FufXW9azijfIO2@48C72V!MVMlqm4(f; z9Etr7jP3pUp$6S+-(&~phCthqYRxo3!wJ1ZI`7JGYTM`v@b+Gcz3Z};Rh`^*-}85~ z)P9pWetmf1x7^wBtD_}7$CxK0vQ5K^nb?3cT+pLd*_3Eak3!!ty>N+vznBrq3trRmnw7$;l$PVgyQ;v{d`wcl+l{ zp9EmlW5)qNaVB(>K^S>)R8?bQ@jWV{9J6M-2hWl?$PXX4Zp)0iqUk zAkj~|x>_GcCyj6bwQ#;C7~S(-8u)}fWP?}qAd6iUiIy4Ay&j8VFpUF;GD~=glImdC zOU$D>7hb0v5fyo4SnQcw-%L!m!=2pzE2 z+@B>7vs8{=`E!E!b;9wFCTiL;xrggR)UI_Y)NZ)032Djq-SuU%FwhZC$^*;8rGr2R1{ z>cRZnym5-EU;C6+KkA@*y_KsH$<3EBP6-IuBN#7h|C2F&qpmIsiu3`9tU(lS5$BPh zrRH+I-~vy|$>g?;bL_`FdRO<_esA!@vJNJSU`-fqmDYAb=auxYzt0ckW~+>$pz>{> zW=C`V=A=Ko(rgXECKMw%*&Q)Fo0Elj2k;lKh~g7g%=|=1Pu=F3*&!^O$Ok~#g2^vL zF8q^7scH-~x2JNFZQ9xTN*Zsn2Uf}}Ju-W%ZOvXy!C+6vxX-P!tIIeov&x)|F1%ot z3QrtAEdS#4feB;kr)4=_+=QsUtd!g2i|6BAMttz_zt==*6C~xl*?slZ-f(CO@j#; z2&Ma9_12k8y3Elu15|;}==!7E{X>VnrUoo)1U#cV=JfmR z`_*d2+_bO%@e?`>^)@Qia|6E!L<{_t78#Cqf~GKzU7mOX1|mZ)))_9VNZ7ZjL+`le z$VP(}RWOCOQAME8!AGHgoLc^VVYdw()sa|hSwC$SWpoQA>w98uj*>0OT4EN=yJ;n7 z_27bb3cw38UQm9*hk$~WF$ezrpH#c77>Ius)&K1E&M*EwWIzqJX2x_dD=g34WlyGOns%z`cVM4F?Ins!FN1?Vbhf)?vUb<_Es-&p|AT9>KqY{N6D z47G(8o!eoRa`;9KEf37nL}d1V9^yTcBXcME-g*bgwUhgzUenHc87YB6v0@6 z$Ka|LKPS}~g*!|re3bT z3e01#XZ~wLAI#RDkg(F;i(280T>*j%1R51U%t?|6jXOiw^H#I52uW?WQn6}!WLKAK z((cI9`J1BF=kOd?z8$n22YkHmtmMto7+N$aS;QK~lYhfVsyg0bt6;>jE|#5ew3NM~ zio~5x*4F6WW#EFcjn&^bpq!Zm-`c9F+h#3K{jPY~aqY};>wu^~6e)OFJeObJdZ~_+ zXhl^(Ji?Y%T+}sc`ELI6@4#$NG!@Rpbx8I|j_}dA4^MFy(r4H|E!ip!i;QMZBb%3& z7KY73hu1|Zj&@{ZJUspF{bOX6x2u}((HQgDV92H`U`3p3Hav=2^tD=A`u5xH3CkOh z*suULIsA1!ckH0R+Me(C3kwyfuCa(m#)B zbX3!iIaEt1B@p>ZwDKd?MlW}9T&psR(jM;)9GUT)E}$t;M5t;q+c0W@h^*K0)sj>C zl#K>52nzyry}1u@HtO6IHtzg&`jRQ?^;#nfgqiCl#IiijWhVNu`TL34Il89n{at|D z2^u~dBH1hIVS1dQ@Z@(r_X+w*t7>1XuAoWqBUa>DdD}dmg6@pG{d% zQ3+a6>$0Yt??VUqt!!nn=|bfI4`>)5%4y2Gx8T z9}ticjl-kzFb%rxqpVql(;HwIo#nO2#!Eoj>UDOX_xJA&rp&!8Gm6}11!sLRGGnd9bt8b97oR~B$E@i~(yNmC&_dFUii zUssxZKJ)*2dv~CoK*?)%>eo)A_9KZ}amZk>lc9bc=Ypbe_{3r7>-vb`ukoHkl8rQeAD@0)#29yFnN`d%Uh#2m*`@QHAQLUwASD0^ul zKw9IX37@*XdPUs&dJ@xq6m+X2Ms{H&L?SJlTUK>myw3r!e`w6C)Te69+MJMTPOZ+v zPX99_o!lHFS5Hw(Mo{Hi4ya<_oncATuG)e)^`!F$GNN`hDNPOHcZffNEzOOG7jBL52r`IfG7CD52l9XAl3SLT(lMVEOxEcJ6Y95$@HjjI15D0iA{Yu-|+N0o$vQSIv;*ts%Gjl zYYJUrA0yS&Pnxu!zCGjle=k7$w|YUagW|y8r8qD9BWcF`{gbPpv$!eG=ji6)vmB0? zj4>+%BcoYVhMF{I4>tgfqy`hy3Qqz~@D=7vvmVHA#j+xIb411m4x^xV3Z&&u_{->2 z70x?BqIei)G99b>O-liXot-^09uOP~u~N1SWHjYlvOID6CxIEB^X_s%Oad}^cZ_KL z0D$NvJOdh@xd`ejK?vXnQ^K=xU|*+1;vB3>AAZJo3TT36Qtj(fKeznf-wr|Kwnxh04!xqLIE-_O>@xQn5seJPtjb}2mnsRU) zUEcKi7tx%qtD0NDElp>Ji9HLk{LiBO*V3-2vHu+u8A~_LR~iPan}8Mh$ilSy9O~96 zWe7hrFw|HI?B6<&i2I*zBmtjaRCKWrc{x(Aq?h{;uyF#`GOj-taYRke3l>QNmBl87-b|mO%E{+yd?7ZtMObq3Ghu>R^SiO}iXt?x(X# zrV)X)p95n8eW1;~n+O=@^mrB8e1z)OBaokc-ISe*o}d6{G03M7+Y*OsKAK)s;fr~I zXxzCJJHNg2C6Pvgp`gtfwEA+l`1&BC#lT>!HIG-fS}lZweMGUovna_(mxb}&kN|Gl zrjFQM!dUIm8R8@3>3nJ89F5bf9WNL9Y_KxmqDb{Q#BO&2`?oJN+1HHn>rQ;Re)R@( z>-vG5qvA?SH5g_|#!iEr55Z*9BzJTXL# z)bA%mX0{K_E>Q>t|HG-=U%{NbE?>~6wq_Z45U4=*1O%EYwPNBdv9|L$z4^$+{Kqh; zDUB**T4CBiA|-C-rG=0&F!?2XT_mo##lE|fgJ4bMK9~7AAoMgJC#v!&jDyx<>4`!n zH#|P*8ysod^e~_d)Fi9=bPyjopEL5$5wvmwmJ!8u%`Gt366O7N#jxC;}JoyQ8XY4q4E8D=s4*_qTr=MUFhwYJZf3VMz zfZPF_;8pr*0Wj?{#8SSN0D|2295#Y|O500;qAF`6R2#@@Hfy^izoN;=26SO$a%7qw zTzvP;lsv+TK++q88_%S1z*jw0N0ZZZl{|UQk6@OruALJvW2nzNa`KH+ws9>rq1(8& zSt%Jb5VNQHoXwWCk71p@ceG2ByH@~-7>j8aZ0QM%3LH*7GH;*Hs^7FSiWS?@KzTlo z2P{U9LxMSCIAWe61Zap`{?(r|9j4Sjw$*v7tAGDNQ2Af&F`!a#&zM+riU(|Yv5JBv zDmXU3+3d8}Ue_Ap)AU6O&fV8F$S_d__@$*p;P8=z6q0K91 zL0&RFE3!!NG}ye&;L8tB)!>E3n3doWK*O147%?1L(&w*ZAY&w#edR*gpu?^65W5;v zJ9FgX-#X;p{_6t$y52y;!N(}cLevFnn#tB|S+6H+V6^nBoj24darLu&&q@v8=*)W- zVH)sX^>$g1!}KuQ=jx*&aO8h>SpNC6iVO>Ow>{_sGxR@af97~wrjn?5&(`@LsJ8R+ z+5K9C3B|KPQHUOtfY~pZ~jG2Cg_G@ZCOC zgdu`A?KHj86vB(KiZW}y{TaKTmdjjeiP~vj3$A&oQ_WI>q%kE=v5a3#hRaaL3KG1c zjgBfwaHMnhPdpiq3T)B$0;y6f^hWPr2C1g(-f$V=o?Io)^Fu+UhiHT9-Ow5|` z)`hKLE^pL3u4ip4Zr9?|3hTrcQ`cSG*kx38LwkdbdM3WEl+M`AM9$bzoNkSA{=Kx0$5i$d;SL9U?aF)mAWGUO#D$c*tv!!awr;1j zShcWLrp-g0lu6B$1L3Vc30F!#U)#6S9HI5w`1)FHCFbdGggQuZ*+z5fQJ5K1 z`L(+`pvVQD_VpY?H#}i$U~Q09f>MHfAbDvUmYT@hh-&S7f z{1VOau}ymD9YX?%=kA3}WnEV2My+%kHOhf8Eqd zPMj@lAi;!R&FTzXCCL~ds*BIeWM_7E1PP^Ol>Dm4Z2bPaoW(+Ua3X;Af|0Y%Wd>D- zE3wx9nVxMpcs;&V#MCF;6Na1H>uLgD$hWsUXB(?zfakfLA@Q1pY2tNEeTW1*q=_~M ztlU3I1mxx_e_NB6;mD&!a2;PBd z7Y3Y_rrkyc#{4*+%Z-eQH$Hub<3bUOCnH4%x9ApU`$DBOqcTs;g@a25MfaxH=iBlE zf80D)FbrS4DRp39-O|_%NW&Hve?+ZmU_o>j7YfSm$eMyV0-BVhhwMf76C&aw0s!fp z8+d}2L|QEN%Qw0ks{rJ(CSXxUd*XufwjqJb%&>aoyuV5dKoJ@MttLR9$vf45p){|6 z+maHJ5MguW!Qf8QR$=?u#X}lbCV9?pZk}ce6Kxo270&pum!Z8%cO+o=ZABaIU+EjL z;NLqokJEsq4`;`A52E(O){)%k zaF?ZyHucTY?wc+o#|ptKsaBK)Bs&^+G*9!5BV*qF*-kI^Bfl4(%`MdD?HZON5;}Ey zfC~|_w(wr&pbTu;HMUQx=_tHX+OuJ>apeKpyQA!O8qUp50zoXFt{vP*>Btxq;wl@y zTr?oQ^qiZY{|;6z;4phbGJIChosgZmPd9%APzMV9whJvaUaT%z!1lhg>m1pd5B5WV z430P}CDG-T9v`oXPSH>kV&xQ-W7+JC7*gUX;apmz`8B5hRQ5jML{r2*SKkf$LLP~mLDXUUz;1cLE(t&ilKUnG6 zI@rZ+@ELwNF8{QSFv|*87FU)TM;grUEKPeiy9W3Lq-?Z*K5=}JnH;NhxIR(;4qERj2z?)q?vvQtfE#> zbJ;O8Ha5?syfaE))yn^Snja_&+wK&V+`jSs?oaku(T4!4Q9qI;rx}%9`!Y=Ncz%%8 z1xhN%<>XW?BI@(s?CjTS8%K2YCQPBKNbK2#!^(pYwFGZV{paq$@hyye#0+6D$Ht?ikwp1d#Mc%cHA@yh}x z228cT(X|)V5gMQe&geb8@FW7<2SWQL8T05TkGyt0(4RDc++1B83=_3b-=8qy47J!4o=NM~Uu+pBkYl<>^^@)TMXz#Hid+6XuBq}zyIlula z@Z=Af@oo)%e`~jHL+878vKh~(Y3?h$6;Kh#@M#P#*TTq?^zj5GSJe zcq~h43rO|Hmv=NrDidwMA?4x@K%{aYiLZD0KPg~{rBS#SX1gLVNXz=vfp=VlWCHQ` zKWp>SKv56C?5ZH+w9PkwNlKf`-EhdopnVDOW=A@;oQbzFztzB+A;AS<=7lshzwP=e z({1@k<*15J@Dx^&G}XZz85tQjBn}wry#%T%;O(!~CpX7xoW@HIzKb0+bxQ_4 zm!0u1!`bRCg{x${E?wXX&p4Kuw%r(A+{5XwwJO4^>DE3$nW$x70mNKGgBxJ26bT3# zbRgp=(RwH~AP}b$?#d4AR_!fFI@ijgF2R(D{Ne`ijpNGZZ<`;Xg_3UqE;E)+0O2Sd zw*J+YR*IA#(CE))`uPFAHgAy#5L|zEYyVvy!>Qw(y0@34)-;{kr^N&}DsYp-7qbEL z;8W(n;nVl-C=X^;z!ltHVouw_wB*!A|NOx1^jDIW;-^qMq%qNa_7OUO;d~1a`V&31 z3cP)BIUvxaB2HbHtB=bUTWT}s|2(`;kE6Vf_(XbI*9H+@Il0D9T7K5EAPAuN$Bx|!z+O7>6!}NDtO+Q6NEz&&&rp_>WLwO;VRC((sC}k=6uHt$H z)4yixRb5Wna=Yw~0WuOJLy0<_wWF73v`(ieCjX z9l}lJmLyRVMq5!ydtL+_7vd}Wa>vsjaF02V3_jRhy(dmoN!WFla94hztR7;*Y|Z=x z3MzraecL|C9^Z5udzD~-TNeIvgv0~XglY6=unT0ZuCRiZ>b%!b;Q2N!P^%mYvqv8M z-akqdougZyYc^OQl(+ozK4o?xL(mCGX}BN-*<$$K4IUQ(&>RNXzQ|=&YS5;wU1MKY zww;5n=~tXjdhVV73a9MmfWld*Xjm=7Kao=O75tgyX(e~+wN*(idMGu#+i~UI&Tx6< z>2v%mW6EaW^0Ur_oW_T*Fq*XK@-{3~oWmXISMb>yiiGyUBVgNHvcF(HpiEYfHONux z_-cyAQkOraAyL?Q#mzGiP{mSxYFP-L6@Xad1g60+MhH#~<}T7V59l9WWYXZ36tC*A zHJiKC3U6%KB!0}7T$>uf?s6hoaW>Vb^vSC;-~~KgtEZ=GVt0Fudc1k;czXozG`4?A zJPxuePr2d=raTP*yW>bxHI&KdWfno$+9le?sx5j5WcKEx%%?B)32!A6NG?U^R)(5+ zfDZG9c|vIlJt9r?ck_Q-Djk!mW*7893))f2QBXs}Hmkv)%KL7MM^<JmdmkPsbQrIOvkZ+z+7CCj^$|0pF0ABMScTt80{%h+x z8Be-95%TMJL3}wB7lEVHUj$dMYS_(vybOnbrf(?`Kp%843n=4plP*In0@(VzbeF6MO|4P&7xI5&5UCAN=U6v$^^_TRQAkC_7} z6)OtS)Vz3~x$Wa+h3&)U-&D`duJW||`ci)sZU&|Wjw|xk{Qm6ipQkmOP%BP^rhHmd zyqBpQ2MMMVG)6ex34$o^(mFsFa9y&VmC{sjY@Oa@84Z=9c8_UyB&}V`mQ$xx6`!& z*iBmfzE6Z%MZnZIlhQ(#S!gO&ZTzhaRb=BPKOuuOFL_o(w0(A51OsCZ{qdg>>A;Km z*Ea#!?d`l`)f|A<9ej4?_H9_jGnqb<@r=nXcrpET#+c}0INx=8m7Au8u$2nEpqoeH1i&;C;w)^^JU3CdSK z9TJK{5~AuXnxj9(@=#(QsjMIm0AEe}{=rd0gQSHY7@E29J$Kd9?YYd|^2!I*a@0y3 zgBDYrN=j4>v@C@)*_8T~{*Siqyw4u2?FkqRe#)*Ack8B)B-N+|)PmPA1#?(Px+nC~ zZchOV#=P|$7QNj;*zU;qMr3Vu1bZU?jfFM12)+B0!7>K~WDEpC(aFgPz((@Ui22Bc zM?f2hh8#u z_EOS?J(T)S;4w!`NUzD~NAg0KE zLc+wpRkmYkZDig2KK<`*&vu2g(HUmNALuf78|SUISj+k3vZ<*OZbY}S*(L=W@lOG> zH!J6W`s;XdMA%0Nv`qWVXig5#3F{TL6LwIew_77P~-(C=71O#J0%D~NNpR_BYl zoh0juy8NJzgHx7j_FF`sHz~|?WD_%I@{T#(jRYdft>?=r}*ggDj zCZy%yHMKj<5#c-y(fs_f86XO*986+7cdpv!5?F=HwE>#7kDn#x#VPkQyx3gg=JlWN zrgK6o`6vS&{D_~^Hsj1CgmON?m2#{aU@_BFwLSHn98fED%q*aD=T5jB`m@*YagNbx zhDjhF*fN&JCfi!=jt&MC(m+p>f`vfYTkw}6_{-6PU^vUf>yi{sgo!53rxrBevy44B zz!pbK1IAD^%b3h2RRm;AdfP{;JZ)oIs{+tDOe|KR|_S;31tFXT;yyUmpID94K)QkKpxsM~EcVtN|8k3k4!f z{X|Thy|PmZ0}>L6|J@Fe9TY?IgLZxh;Hoh&HUt{^bYaUU%IdjM&@1?Urq$&1&`ag6 zpgEO*;r@eKL++<9HR-9dJ`K({Ll8{>CL#75lJGl?3an97B`=`U<(=~A@{F)~aQ;6N zNyCxCPohV^ZUc$9l{HgKFf1J)WuNOk3gHyGgoK2-WyV+3K(`3p$=iFczu}L7rVWw# z^)tYU3xu~9V*>TuHP<_Ej-&5a3hy9F*eo%H%}O|Ea2+=T@MArdUjZNX3SjoVtGuS4 zuJqP9Iw1P^i3pM8YPv}B=-`Mb@>vgT4q4qKP{DdsVH5`hvX%;-xc)ouceE`sEirbK z@&-YtLDBibCflL;D0g>xeo40iJ()`meIJx~PkslizLcl>mNH(|=q2vfA=z+1G*a>i zpS1bYvUM?%BvY3=gdg`QR)ybbbQvCP*og1h*wyvIwtXg>)k+0FCc9+i@AOr_yx~p6 zZe+!uPiYLGqpm!fp_6{Cz@8qF9y@i)veD3|C#GY$p2$>=vq9Q|uwZvEZ|Ix(Ogv7$pI@SvXUJgr1 zeTiLv*hY@`l#VevS_YgeFY|&C2^lD~5a2v*<34LZ{!pUG$j)Y?yr9K)>{%#trf$3m zSRrsiI{0YnNR8P3ihWJ*zI%4bv>wE&EJ&3fGZ~yNu0IyLdW4BW9dF~`LFA#q@X;Ok=ueA;%<>0Mp1l5{ zv^jDMaWg!7uisu`HZQcK66xC|Ri#zBL>$#GMcNtWGVl@h$mj#d6Bn?u#0o({Cd1GVj0GY) z?K=Jinh@avpv+=QS5O-7VM2bq|-v*1x1Q~@h zJuZt`+Y~Pln~GB5retP311YhcJyW7|{h>rPyj>4U!6(;cbpN3pu(=7$eCU|DOzF-0 z`c+%CgqXN`m2|eY2y#q7tGsevTP~dTeEukTeZKx^FzRu0_ zqn2NI?5D+ezRLWWLWOuP)$ChPGH@jHYiav`4Nw=`c~QnJ9dCWOuKNQdXnr$px@NYu z>1t{5CPfWFSl11Dn)`~=aK&;NHx=UjNb--5PiR{XB?}Cyr)(M{>1*IW_?8YXI(e_Mgh>YYZ*-bVIZJ*soP9a} z{+VO5EdqrQP0BB59I@S!Cq9)ArrHXfgB>U?dB=1~omtChXL4Kk9Bt`W8tBNNJbVK~ zt@;0tt@jRxs|(+S-&cx6^xnxBB~0`dH5h#my%U}2y_2XjYV;NaK@h!nqKr|4FnaHz z_x|m?=lsrfedqiBvM+zES$nUwo^s#!^DG5{2Ifyc1`iL5{~na*&i_2Ub zfHNi0JevnpEzOd~>?K*Ph+VLXjQk6oy-2=QUXu_nQ8*NzZDYkHq~ik+?3A`1g32yQh9mNxRV?Qgd@vP)3aFIv_PKGcdR5OhDjW z%S7~mQ0B)^+&`Mwq;dWrA(V#`z%8bPDM3X%PuTLWzPm|Y^@GkC933mZ>A9WxREDA=s^USdwC*({qCL?C4Z_j<{0=F=y zCCmwlBd|wa9i9F*AeNTIe**drgPEshWNuvRr|5pkkRJd2iFwSSz7^|DAoa0{!pO_N zd%gQ5wMbM~^1Rb9xS}89#p{Y(;Y{2Q&3m3wXS5bIL6% zZTt4~X_I30M6QuzrS^HEYoxD*LXwd0I#$w$%n!9(aL7 z(9eFl*rO%bkx=)QQ5KZf7dO`4Q@1RXU(EKlyvsB;5fKHkxJ`3ldalVSzyxXR^63pR z4avB2LIxAs1KIBz+BG~=72>f}MS&X{B7==zCk=3@Au~HSM(6Bv%#GB&*O=@X~@2q?#!yHZb-RBATaCzo}&T z=gObnD1PQV6cjE+H6l&W+7eNY|0l(-xOf9qX}!}yq^LK##L_FH&rn{c zPgbzRo!MeMvMzGupr_9W3>gTcy}YqBabmtn#KL#m zSVR|3Gy^k$rP7MjDv_=q@8R@$L~;H8H7-NU(&|0IPli$CXUdul=X|cA0PB!s^!sUpWx-iDVdC^;4Xp`-_%%qz8W|IB{6QLvrh%goagvmSgEzNYK6V;Tb5R%SUE8Fp$rD-`5F^;*P&a( zHB;DV7w>C3WUu>|O@B7AIOr){oQZ#@9TY4z)n1je@`FC-{&x50$v7tZ$#~t?!HEcL z;3s#fM0^YSMOpLirrGtg+^z6-jrQlNzB%!G6=)}Ao4^UpLt5N;7d*Tlqt6&SUZBqX z$GI(ZO-(_OWxFsHm3ZaCyR>tq;tAG058uyZ&sl53d}V%q){+CiR8Er%8lidkg||^O zTPG^W>u!kT#LgYv`Y7nry71QT7bo^$z@qrK*Rb&c9-ZKKiIMhcHF{a^v;JxLB(Ub0 zpcoIQR|t5LEO=Q@FGl-}&nGt_%Y8?XJ$X+>uI7gXkNH<}2$n>39{LqWM6QZ~bM{Z}i&xOvzw#ramI1PX4#^ad=UIO|Ul|05)acm|(Y&`eDm_d&)EY zdVq56t=%j$1@fFYBv^MYsQeu@FB1p^zky5pDZkBXOJVNV5;{Mj*lu%3DI{j|MR{fu zhbg**my`raSqd7|irdu&-pk8TTPbo%FsxL_avQX~pFMwH;J<_bfG{xO%QV=v8Df=V zkn-vc_5&6HAxfoJih`D!4^m1vC|3`O)PbC1e8MI|9wJl3>nrVESjox0BG=q~I{BS! zigJz9sN(X-Tm$-6YppYCzas++_x=uCnJpJ4ze*pw`qgDV7&84?PTBE+CXvmX>vX%b z3WDAB-qkgswY61(5ojp{20n^%A*LvUM1ZYeAPEQ@kH2~P9#7i~C)}ADNkQG+X?OY7 zz%kW2%(yE{{*W>YDf-30UxMAt_>zI1P&NK(@`uma0VH;{1J&?ZY7(;9Ovc24)$qP&KvzYYK{F(#k6vYzOt?Tx4w&HAkLQOdfrOe_05tqMVZ8|()*X( zDShZ-9M55P5d(AoiFpM;B+BV%|@^gjogKC>} z;z((qR@#XVNr0KL=Ef%6?R>z*demha_3{(2l}ra)l9szX1OqD{4i{A*;b$+Xq15|r zjW2IRgMulk!cj}~uj0GfJOdLpShDos)yxUYH)iBdfqA+$8>SC2RqEJ%#(NG78Wl%R zM*1Nw^ciA}neu)nTY&tW`#ho7#Jp0xhR^R8-osEAYhlhM?Vjn8e{pOAPqmHD0+5nKF< zBL6JA6#7^c^ofj6Av*+^CEjme@1z6aDEQAuYlV>=3C~#fKylAHKC+rI;Vpzwd=tke1X5RXL_Z>V4wDX!tbe}PT=^1h?en3vbu zj|L`p>i!#}>UjVY_%lAk9)|!iFBZXyRqS20To@G*-ieqb;d25XFfbuO{7-AjKnpPF zR$Rz40$}VTPUWAB|2^RY2I9YmzZ3fV09d*I9{&E+|LXy;*8lwn0fzqf@ZTi={^x%l zK+pdU{r?&8zgPYL8~J|*B>10)|9j;BYry|A@=4gOkocdbr3T!(y_E*`veiI0pj`Qe zR^lHCe0-pd4gO~^(90$c`qJR;@BA*Mm=nCQy<3P(<>DvxN)$mD&!K`o*q}?kN*i z7L)a?f0B3pBvHCGJ&jpimzD_yBjn|+*i=k zBS7)suPodVkQ^Is6f|*q8-msgL3hlq2GAdsdxSTy^)n&Jn^Z~i(kGv2sbG_(f@*fv+zT8RTu>NkKLnvKP z$o&JNbd1h6TICRHm0>L-i2c5t`Qq&buz4eFYxhTEn_}bB zV^9PJu!Od(m8r^5ZNwH<1cX5m*z^O*MB>(W7xloJi z-%rY=3?1WxwKdmwqU$FcF03P0jA#a`E(o6WRY7@kE2}h?eoAK9k`?r+fZ?+4Zb}mB z7QlXrhr$Lr|LD8<_|MP;e`p=jsvHh3l+Lo()R|>5Nh3|(i*m~`?E0p*`<`6O3;o}2 z_yX^)vD+zSUtFAB%5D$*Ib(_N$vcTB1Ic5gxkYVDrsFLbtz_13T=mRGu2nmm%L`SB zpsQ$rbE6`_>UZBoS%2UN^s$@xkfB!{yecR-Ji3oC(fO?}iam~dp!eTm62<*VOc(Le zTbrG=o%64dZ? zmB&hHT5!krWd}6;T+gR|I6rVaiZvE9buENdPm3N}@hZJc`lU+prp5MuFYB>e^KpD1u_t{<2w3z+G06A2*ZeP!VEThTx#TruK&)b$lXNsS3zi@+JxY893sVJd>|v!f zF%cR<3XokL?n%cZ`Ubv{PNWVp!naI#O#fTgBw4jGcicOqj)s{Bw-h(+o7u?E(qpJ+ zfybkaxlR3D%)*ImrDT1tDbT5zFrrB7WyAksj#2TF2tzYU7BI9TQzN7@FST$ z_c63X(ww$V)$RJ1uU;Al-XGA@V=aWpNym+9P)ukGPHKjxmU#_jRCNpf&gGjC-FY4S zp;RevB5(eT$staqx{{jaZc3nxh&ZL5RCcg@k2|rhPhOIHfyKDBch{r> zU*MEpy-GRIqjSNx!VXiOFwO$ijHeoHCnO_AWW}2DRy|)G^=MzV+;Md8Y`UcG`(!h( zo~Tf(SZkK2eQO)SOjxjN*DxDQ5a~S*wZf7=o)&C`Q5%Y8m=dAS&RwhL^9&B&71bC0 z7CyyJXj^Q~XC>T*CITjWz3~r%RbUYu)h3;1U!iSN*{GjCes*4KOlkrUKQdA3R_E?mUW=Q; z1)6GvMSa2$1+TW!6}ZcI(iB}xUXJLK6(VGa)q(<;pkv$Q#3f4mqU^`kd4pP&%8fJM zv<}9sJ#2V|Q`^RZ3;LmMNe1jau$MhIXfiKbi+C>$VIF`9!R)G-dR^;PVYD{tgJ2#} z_)SSOV_1&QOggIbC37j0t(v&X*<4pB!Rf*#Z03tv_93Wi44(Of6@051PVC1NhHYQUpXxplth&ujzxRyshO zaK#~1`?|dkO5c=0$olflI0#VzuM+QIMvfj_*e7!iK0*Y`2^ZROOrSOH=Y(9*`Hj!Z z%3zs0i#G1qtkJmb57%7nHyfkxtMXPG1lwv4$B>oNU`@2Zf4?nuR0^t2@|Mgq;rbxnHL zCcRiy348JQUwOi!Ya{te9kaV>S^_1RapDaob!h&{h>32URO95v=nU<{c746B;bPw8 zA8&>noP@URR=n}5O8;2EE3%TL&6`Hoo`IreGQ6P6KmB5+D9DxTY3+`T#R5C3hp>cw z0d70ksG?UYDFWCl0)WaqSQ-6Q&)$@rX}+v;#VyQj#qQ^z?>gz?-2BpT@N0*8f0^3R zoP`~nNt~9}mRiFcJ=>fk0}>z%Ja)X_*9Rg(JF?wi_j;gNp)-Lr zf$lNxzC-h7D;?S*fZKoNVxx&Y$tR`MGKpmpmBcS()qaPpNaucr-b<#uT}_FdnkxQvKxa>! zQ6SArYhuG6d4d%lv?~exyl;7@xc^-$M_XXfw1DhvECxKNZ_FwvXwt*|o2#vBy-fbXasnQEODe;gu@8<^KO8lS4F6;rkIBT#F}wZl zp>Bj>YbL{yyr3qR;y_vT)^?&%5~%#o%1qa^dO|xV>MakPh&rW0vx>S(q^EdU+z3-c zjYv;^zWhR#-b%^msYapXP79KArl%w9) zE6->OELXYJ7dQ;63XNj~AK8g?O0uKQ26)_N=i?CF`o{Q-j{GCKW#t8Z=Hpx|m8&Nh zzUxo3{hje<{}4@Rva@gKW(~#A!~tbMxp2S$h!o`5U=?I%3x1&cUUk}EiW{_)|9A|= z!lO=6;89HMX`4r}8ZexzVRLjHqc~}O@s)7jvtY2kDj5?fc0X_Y_ z8_Rar&0&!q&B%RP5pOLJ<>(YU-}Fhzq!uYtY6cKFe78<_*+F<4o=rA>R^(1nQ7z`R zrp^UKB?O@mc_fx+)^--bV^e}8JJ$X|^YlHn%uJfdHnYqvPnLK$OOp^3;<2M~*7CMq z9MZO#nUZ*OJ!|;9F>(vbHNoaMO)vt4M-tr<<$+w_jdtrlS*k*@5E#<3ts~wG z8bOKyN2p%nXob?Tg?iIE?6aE=<0o04>F3>Z$kwkLFv^!GM~hE3I2)#T6e4GO zX>9}8?OC(I2_ko&3&03~QfG-eHyMDE=Oo1YqA6qrRD5 z7wP8*JuCq!l}~|G-gLg2Z6-Z&(aBNs0O0=;l%XSFRnh)WFR?($dt+QM>@HK+dY|0N zUjr|^7rbq=P$>{{9|p zuPIB#lJp{7YTbVn0%1_#)i&S#A2RLK{+>}y3*Ojn#Ts2;m#k#aWgngA+n82QXNP(L zExX{kP_c}q6}3-ljh({|?rYiF#Hig$dFaz5tsr`A{&I^O5`#LWcE|A@a<^uGADM?= zLu*Y&jMCNXn&g@v?5_)ycymYh&)%8o@xutK;9~x>BflKA^d{ zR);VB$xFk`f@`E#nM5;Lr3Lqx!UufxJp#02w0Ulmkk(Txz`gdaQ}EaI1I7o8z)UbUMl!^K zh+|CGR4ZdrCH(KL1MKQe{afBI*9-uU$s0=F1-X# zaBjSk_e3?%6_`MYMzm(ViM>~1dc(^nhF!%#bVai&F` z!$vronhjMN^Z`$gw)~ielh)iR}-2Eo)xk8sSzcvpV3?aB|YSfXJIz&M13rUxrFYFZ7qZQ8T{^$R0ai79U@Jqz)*b+r=KQM$Zq3sT zHcp4<0X(f}EY}xWB}!h}CX%umD{f%o!R`OGl8-QsH^Z>WFgWn`n!vt`iFP!AA4+(Z za6N;7L*I@QCtFs}HSqSFFdLBHqR$jKox%+!JkaK@^~3ez4u=PUzL68PhC+s`a=Ty_ zq@m%WS>bPbTFu5fZYg$>H<}=XEZ^srrwXdXcS4??-)i5PkED|=awhb}%YlmHqHMPa zaHQj$zue2M4;slyiHtw3c&lB;8AtBj{)Ef(>WjuBAVnrY|Ed|43jTC)+f!d+=b$am zocoPXH8F^n6iOJ9!6(f`i?;D>DXN*RQ}Y|x+(SEl6xpS(1m2Yrs2lP7W@cV zMQt~`gt9j;jQk%hKs9&vLq*tin_Dqd&ECzsO1EH?JLdcwNm>b8!tGwR5p(vN1`(r4 z-u0X3PYaQ@spIHIiB+0+7drA9ml*3B}S*^>8x@elLf&j{xkm7!$ zu4J>=)8MMDl!utkyHiPC!lr_+EQDcP*CUx0G2khJ^qqD5H3C=KpzN;W{=kv&C^G__ zvk+;bvR&O@zDZ2&cPnCqqBd3~I*0}A_V z!;y*!kipGqwh3cOn}De%hd&xuD>s_#gO&|7sZ#MqDykhdc0T?YnWoW56_1#f7)kb? z{$sFqa$#To>Q*>8c~wCX!vsNd*?@ATOzCJR=WB&CcA{;-$4YCHK#vOFbiPBAaHHVp zl9xfdQC>Q&l7{UdMcB7o^8|u2cCyqja=*59J9vuE&O2P+4DRd-lg3U)z^l6F%p(Q{ zLM4J8cyX8Lmw&Ku7ucA^dI|cV&W}(T^0^-i`unOx4)J8UaEY(%5RW?**JOCFplaNo zP6xezltUD|LFLJidPulWUKfBceKWA<0WxXYan+>95tkc$>%>4gd?dAQE+hh@7~~6e zi6Enn{N4>>1#ly+WTwj3zF^S5Q!}MwJExbY^AfEr*YNf798GXKGXQ^jruifG749UpQwz|69AiRRz)S zJi7N8#;s3chGs0Edxivn22RtH1HCGw*)!IHsZIb7Z+u0WWskm`uUGLpG{*zleEfJn z4p8@?{`D6Lw?~*{I;ld}2dFfSsM_e(I14TSWHqoE`*6X67U}8x+U)MZz4x4;SUl6Y zA(!P+NEoZB%!{=H+07w6I{w8cGm|L-gXf7#V)=~qiCulzwD^L8O)b#%9JS#Py{Gm_ zDM>j=&Ria?sr+Cyy1;UAH$sP4(dLIu~&ZvtRS;LAME6t7FS z@W6Ym!r48#*#q-g+}12q@C2yRIx%z`TfK1&(UlpqY7;9uTXsAx5UV@OLgzEtlS_HR zLu6o-wbq;e>eP%uWUg>~9VltZ zD1Px>JXl9SRmtgMq4>%_egZn8xL)zkz1N3a6(v0n>kaR@jo7RjtYn4a6>aaFQ9 z1%ThcC@aPf%^ZIXj!i8NY&O8`Mv|1#O-VE!%!nEwQi$)?Z2&hFd{#jMxeE$Yfa4u` z<>)VGgGm9!TPM%xvr?=HpUtU&#FVICWt|B_SQlEJ4XzIq03_RS#{@TW?r6Upr)mlG z?|h+1TYa&XR>Vs*Ef^gp;QRhGdIeCD+EMv?DBu*I@dFT6z@p6Ksx8 zMNa*Y@k&MV^pQ;zk202TbOm!YI5;=vM8|ZLBg@N>0p)A}WU}+EPmRyB2_uUkBbz#@ zDDF(fteb`qvV%&m8UmLvt7Prv?^PlKo#6s0*1ST0h(* z8+HydnSP5#cEK_!AWxhOe!XA5U(viN{nn^W3}MdQf9waO?IYE^88q9l#B!rlOV`5A z3s3aabZP5Y7=c0f&>riVOgQtdwAe#HlJNs@ZC^{}TQMqOBHev;eqzj*?9L%mwaA&m zlqkh+-i-n^$nd7_7mkWbT_Nu7bwOO;BvK&ij!T~zKJ64)RVdWPD*p#}AMsmXT3nmo zK_-@-)7pzhlgQ@FuY(MYVx_iwlW1l1isQo{p}-R)y5;GDYk)Yrk#3tW^eA*mn;sCx zJB6+POSXB^?G}9&ElMjgoj=RRskE!J+B&~|a&=)#uRzR1$bn#{y>u-Tu-({}K?FYF zi8~#P@+Z3=vVsW-#9A7=Wd#7y6)IjCD#H*T8R=ad%|6@1N)i}wBhT1ihz4NH4Q4l- z1hvvo)&YRYN+CTNgcY!u6K$o7)S)iFe)0T0AUx!mbD6{qutUJ9ESk`hB}D8>=1t^l z*qD+}Qt9)kiij&-iO8uY=U09ybm8;A77k*CupTw`WKC}N333}^r9aRbVaxSr&s@a!xuqWW-N>duY0ZIBj2GHdHuP({3FrD zec#5NePrmy?P7m7%B5CBlp!?xoBLyG(t-{X1rH&v7(pR>eWlUz{=^?^72 zkjygq625euVhiCvq_!e4#dH2GQjh{yi&wGVXaZW3d@|Y}=KaMU_MhjwJnG^!ZnCO^ zaBIrBo{eE=2UPq_T1QFw%HV?Ib)XhP*=wsAim3%d0`+JX?F){kWF2NW#Z`7AwG8%TU_e=_WIuai$)7=%M`w z6Y35Q@7`>cc?V@gm3q2oY3eiRj-yx{jWf;4=hl>GJAmvnkG!+7!tlqkAo~k-pqgss z*z{hbxmI>|QI-hdhwE+FDeg*Iz~k2B-`0K;HLnIRjh?W8-z6=@8nXZ!2&m94OjtvU z+w2}^Bo8?>q5w!~&by*#MrQjhp(-(;%j(4xAiZ4oB};wv4W8w6p8!z=Z9_whAC9q# zpdmx1(LU9YtEuIDTd0g2d#8(KCY9{HqxpH@22it45BKE@!24#Umc>l`3y#=imU5nY zI&5VMf#oB1^6(K-i#4~?Be+3MdYDbVEz=v~SVq>0lqw(!O*WWU88fj)b|zAleSdI9}2Gcl8RbRhp)>$U&hNTTybIYfC;Go?*qzrYt6Z`_aBDB)Rq@CyJ{2(7! z?ojS}FiJYxJdyHjF~L{u73|w(bu7nGNi2IjJkx+n>KsCgFc9j^&&LQnLh*4USQZxz z^CtL>rg@%cSKF?sGg0x4=r$_s;L!LI(f5N#5t-c@tiN?hnsNRp0~Q){OP zre+*I^xrRe0{-u+7Y}CP=}x&0+vA}2$}i|W?kWQCWe5v=HLZ{Iak+Znmlj6dc=$G} zqU#&6yDe@!t$JPmCgEcf2VH(36*X6VFO>atmaoyrV5&?_R-WrI8=1L3m+h@5>J3NHS<12Ism>)N>==4Tq2=Vuam}r-eXxmE81V-BN z%GZ&#R=x}>{%(dTD@H&=!SJ#Y@&W)cWuVm*?STtyeUHG{i&!K9lyIfqMce& zak06TRnO!G59jp3R|EcE@{_!@MrxSften-HW_E2VVsf)()kJcuO&`lc_&vKHNfRS^ zWVt^SSp9N!p(V9`>%d&m|5zN4PdVo`kTlVx`0@Algi=RaX1J7gRSyyRu8(exQu#+B zRXhnk!X#JcZBGpJ(?mw)!nLvNY2H*DzKvUV9g>&NO)*N%9(GyXq4pox*w!O33wfSB z;S=uYC~o2c>X$`t$}@uc;``9`*+&^1v=x==Jyp2-s=8Stu6xH200igMmusDDYJUqZ z2E~o^B4jjNh@QI{=Ihv0*Q%S;Yar{W?U3Gk8M?M^-}!|8>`ye-?+le|nIrP2Apk6% zUi`(|Z0fQq(Rkk*Hl9w8)mH^C_HnIRgj#bxv%mX25Qr>ddvN+m+S_Y#OgU$u=A1d8 z=pC`nl>dPW=yO`rbiedn)qKpp&a))7K$?|80$-YmnGj}fYQFJ^|fju+P7OiIFYGJd8(cp<)VT8>z)IDhyukLbQphTm8C}lr%Etau? zGkX&Nu3Z2k0D67at4QZn&#TFljW|L10^Bg+EgB$Q0LD63r#SkD&KoSBRx#iFr-2XC zG_<9A$B`G>4c->XfYM-?(db&Ju+=FHugJc+ZE$dT0ba}s11~Fn`H@7pgzkqomACu zxi_Dp%qUgF-E55JRn2bEa`yb;z_pqibNW(PHkRKp9!{;Q`(=pRP|j43 zpQdZ&o}oPC$HX?xESwh$HULm8v|`gh!X3l*>{MwWvR&Cqo|(Z+^W2N}HhvDgetfGlHv*N>ALH19CntClBEs*z_8J$o-1mZ#pB@~ zf~Sjn$vc1fjR;>Hrju7$_DS1rJ{+wA@`P#q%-#pr7>Os_m6C|F-;HOl!Z#rC&U15J{y2m6Z!B%-~MpE?OPLk6$K;$&Mmk*kNWiR zk%b>@mwK*bpkGsOB0Wjd278_DF~?6SH=CIIN=X&n15R#y$;0GD3S8Z7{?gV(2iP%* za^4G6?h6C2;hu3+B$Mk$DL9}%uD+gY`Ix#{=W3zW% z_kJ_*NbF?1u)gltnMx-9F~B+(X@pod$AT20e4)U4*G2Hn&;XRDarI_*WC|c*xK57F zl>>lLkz8k!fS^XysaJAZR+Ye*_1RQO-4=!H#o@D{wg^=n#Z~C0xt3a*gUOf z;W5q|)n5)&w_bq>daY7LGaKmkhQZ(2%l( zeRB*cf}Xl@n6Fh$Z@TLCs)H=LcUYFa)mO-6=5M7aTjT~(*W?7JB8l$!gW7M`SOJVX z+5@kv<`u9gd=Q`dfprw1qER41y2urRAS3I_;c_xlguv~Ct;_FB0jN5YjmK{PcWT;j zRjpyq_o#xw{i$I^i>c0rjm9+Whhq-Mrl46xehJ^#`&uj<+VqDq(OU9^ z2nC~<>+uWi%avwL)`?y@kGPvJahPx!jSVYiubX}mG&>ByhGQ0ZJZGTX@M;uD{pxWe zEUI3MsqxM_Bk&?a*e}p3S}$)eIz}Y)g>9{`NI+F21gjyaZ_&@i-471-f-4`%02goX zRExGXRx8&Acv*ZYC^8=dluA`U1~(V1xg?!BbYooKca3KR*}M@9AUxK2LA*@7ZZZ5J zTKa)cCZ|rSxUa*F0&wqYaLlLiUAu@d+`F$=i>G(*-QHlPewy#Jz$i<7WbV z23CLvy`5mz*7>5~>ilx#j=5PxkInSFG>+FSW)23>55Jc(^i}!_bJv(w01^WBO#AyBuOPL50J`|{a^8Y;v#Renqxu_=_Kj{GUT(8LYzAIN zEC!xA+2Jlm&r|MF`PR(No27LRh)4O-A;=ae$=YA_WzuR^Fb{wb4ZVO2;$eqlarxvx z`)Xc0cH2EVj-*6sJa>BM_{vkI!Y*9=p@*c*AQeoj8fURha{k9TtB=Y<`W(=Mq-Fze zQPhzX$@7QU7Qi+~@jP|SK?!Te{ls+h21}($@}TSKsN>JZRy?RG-c;cL3-1Vk%DgQM zyp2;URjQuOAK#8<*K~f?KS8?wAySfGUMw4$l&{WAc%g|}BW}S*y6euC9bVztiuhFx zEd0C5@#r`i{E3Z>>8ixIwdW`7Ji6D}kZdO!_e{phJTt!%hbG!r%Ji!Zza=e7^+tvG zv74r)w?hz&H4G9dqVrmfwfXe5?YGUr3=7lap*_C3iya`>Hdp6LL?v>NUPs^}d>e#8 z@KvI%s2wc8d#;#%qS7YY%9upKq46wh>IQmQD|hu9x@jYs)3sT89bB2e8fy||3Cmq= zxR7MxBI|&B!NXrE6Wz1p6Bl@y*=Nq*J7za&+b!JFkA*(NJsW>M7+sZSSa(h-qBpzh zxhS&YX)JDO*6gx1vUc){9kS8rY?1t;nh0!Wl}hzSqGw!%Mk2PikpLynsOBXWcOp{u zi^h5A+t;e?)JQdRgoeRtYl&;>!#olo=JBrP1!5~9FJ@h2^w`I107G!QIkK;2>vox8 zY-r`ouL#ptaeInQsfp*EvRd5e0c=0xK%Y>(QdF;&h50%l0{*2zp_DMvg0=S>4klGa zNNWH>A%LTMr>PX6|{=+R5DMKhdXy({)lM6RW$kyEV=Jq?RsQ=|BINV;KTi z<3>Z-x%1qM>V#LOs-cViC#iDKE_a_(+4y3YN*c_8Dt~8fDqW$BryJ@VpWd0r0dTuE z-H!_1g!Piykp}m`1jhpr0PR?&=2^SvOf66Xek9yi-(1Z(;A)@y#dw-JIDXWE&xk~{ z%iOH+uh_HgcKMZxfWi;^#8=uG;rDwmp-yXNVxLq&QP8(+IN_a@@;x!|s4BW<$ zZU>(k;J&%AF7aRLk!L1qirT^oMF?iMwM#g;42J$TbG%BF-1@1}h`0)(dCR>c}lZ(tl5(c_4XGC%r{UKNwF}w1aI(5PJvpUIAc@wKBnNVRs z5A!EO7GUEjqlXnUW)l)qz7hbu<8!Nu_TAXnK^ma}tzg z0w|%}*Z^zllk@f^)#l3WV}QBaTzuFd)oF04dL=rz89Wx4RFUZ1=kg;r4Pg6>8aRpjkX7YUOqiboq7Aci!n31=rAM_CcI`1*g^{&{(N z2`HqmuEPrxOJ27xtv=foBDZr_-rI|L5#t*49C5k+eKXOH&cY{;#S0W)o?D$9Aq&*8 z89%I07C{pqE;HyFE~XB{8lo#$I_>i4=70`JNMkg}vQzJcL!XQ@RH z%&BQxmje|01(4Y<&gD7kFbnb+7T4moU#g_GOFNpMp^VZOREMV=<6*?KGU3YFkTmk#H&*5YnI7rg3Wc; zR!nInLWbs93)U+d)$_->WQ528_hew}yxGZ=1`WB|#wH^>0X9lZYs$Xral2Vvw^2aX zGD-%q7+BwbZR!1uZzeWtbQ1tlwdF+b5P*ozJzX&z_*H!FTS8%Ye(}4T_?v;N&zktNkKvGiG+A;Nuip9-d@N4kSZus# z^BsA9D4LoL9u1F!r4Cc0IIrUVVWxy;CXTMDnSAHQGpzp_N^-mEm@SF-p37HfpUXZ` z!QJo1?on;>r-!3~S@IE?McbNUAtZS7-d>exUua7B;YbT2WV)yVh zN|b&$(k$Vr@Joo`9l^1(9y;J5Cb#=Ii?Lsjd-+_y^@ZBJTViBKU{iHOQ&bBlB06=E znUW;4z80|9p05&Og(-Q+N0IpWLFzb0+}Mw#335V7%;O2n)d`|v!CZXF-ADl@;7LI1_29_wyG_6a-JPO&+>=lW}OBJH7kR;rvBi zj18}BclqmFhv$d@eym&re~OeG!N^{l`PUrwMd$nGO2LStqsPyVDq8AdwFW-!K26D} zqakxVCb9dIe294CtjrN6E{icjHQ3p~4gbJu$u!>J>56sX05fsmjvlSq7`VW@`aH+k zCFQ8qOebk$>qH|x|Ks+KmVDl1rur?h*I*Q5PCv+P;1d{&g__srSm;BoQjI&2v8bLz z5m2`CfNmy7$>1r~#|XWPWq;k?+S^r0FYE-({$y>@Z;*rFvB;wZ+WWX9_ zd}~J_f(%H79(%}#Sdh#aQOa(U)gKMStijS18UFh9C6X9PZ zepLIU-Nd-{pMNOa<)IQ9p0gWx3OFs@>}@{8PmVrPoiOwmykRx`fTsf?Z$3OgQq`XeR-6BDs*fJ z<`vU(*24wpJxz-ulA`b48mb4#qonlfM?dIWoqra`NjSuam4o(--9A%8J^SE(S3xwu zYd;n9NFJYl0K;521QaRPtzk|`0E=bj;-f^)K?zNygTT+Fv~-VzRJX&kk{%DSHy56M zwODKYI=lBS&ciAD^*?E!PZSq4rMt&qPccSvM(h3w>ojV^81TR-L1^2)=1muBQ-jvv zU?SjjKUzfvyEjzenI5gXCv=*Gx_78#7T04J??1)CFrszbrf8N-?d3it`yXYnog6V11 z!TnahzM|5wJ7ZpLDVw>wYuJe5W4Hzk5ZNzJt~@hMzgD-2{5(9>am3gi8MKPeJHw<^ zA9)#wXKdnaagcd3)Sj~TS>EPy7gKTR4eny=6i_%rTS683cI;KH9u-^3jaO|tayJxI zg?hGxt!j!xotH4 z&e+(Zc%q~{@r)ZD_5alNU13dhQM=NMNQoGF2?Rt$>AfRhK&qhh5{iIyKR~(!klxXN zAP6ETRf_aZK)|S>NR5y{C_-qVOZ~_HoU3zx*5y1id!E^Q&sy((SKIDT&jKU;@4St1 zZ5Nq3S8RCLN`?(0|2r34_@cOq3;d;)eo=A=+6Sb?WeuTXj?&h~l^d(CLP6s}wKi1? z2fDnt?&-crl3l(X63)yx%#I!)tyO!7B+(k-HEg4+<%KK{hvx#Sn-U*m`@cP5QLouJ zwQJ;)%Di%AP%`%oY@vjhJ&mz2QTRl2qBx}rH+#Da6jQbq{D=%~4RDc)b*qiX7jDi` zxaWF?%*h_cxku>nEytGWUO)EjZedJx8hNYT`_MAoKxZhnU1aWwgqTNS-FX^;&J$bcApf36P&8mh5cDiuQC$Oudm{gsNS52!)I?^m}L8| zhW^cU(cl?DW#77{P@?qcO~w7sZyRd36yZ$VjE8|S{`8?c zh~qt8^-PuHRkNo+O8_}P@2hQ0pk!w(6yN8(mIPQS8PL7s%RB%>PdzC||H(XW`};(l zSd67i>@Z1YYc98c&XYhJFC@WmHPcN(HM9RSuPti3%Zkwe8V3i0G4R8?j52p(-{Ib< zH8O9Rq!?7zk8pHdogDw|4M7Smn1`ybW@a)^m2eCTk?xTGNF5o-)nG5Fqgu-NKfqeT zB0y~(1c-{4SB_)u<07&r*dSA}iMlqco|09YT03$p(20O`@NA%r7#GcJaAEiCz>&I7 ziMdDL8PiifyX(C(!!l}JiZ9=gKKO1;-5HQ%0Dd90E;YpF9H>xyyGNqx`i*G2oE{19 zDjzVgpL02k`Lk*7v4$Rrb0m!+p(I)~s3qz{Pc4JXuy6IU!piT$3bvxKkJw}*+D<{m zDn+Jcw>@%UsJh-1195zxv9qlcaXyeu4YJe1AGVGTSoA(20p@@mtqW(Dvu@iw<)UJD zJXHS}U(iW^vCxc>$VwB)Nz?=#7tfST#36pn(RW2OAqFw>Ma{T#d+tH4EXv>AvM(=p z2MkkOowr}@o7G8tsZHUtIFeM#(^hjpJo2U%t*rI|J7O7urRe$PPVR4r7&>gyy;s}~ z_%s=?)THRfU7#seZW%v|nep;mI4@UEw-?O-GhbKEE$98XjfR#jNBwpNl*Uzb?$7`U zza^%2=|Wc0s$i}|50(wns4SU0f6^WOuraX-Zg;E{R*2g=eHO@fdEriFqb%gGKu9>8 zvlUKCuQ6Wu=EX>8Wj9}*3u7pB1FZSV&GBHr=ZvieGCSvWH8u(&@&M+bF-GEwM%V4w zcl*j`_Ei3qrRrj1Hz@@{h0d8N@tJzM{Do!#{+8{G3e0P^UsL+S(6`2}9#WvDNddX= zV0(PdESF;~E*p_Il`nPh*ER2^&WVd-^$|CkpEHw$#?&}Md31`+?>Be{QG<=U!sQLQ zkjqi79DXYCvn)qqb14BPM1utNzMVgRg)i37ZbNL9gEgxgF4PX;K{t{cte`T>os>Y< zTbu}KdQP0Myw0m(bYT?BEMqO)brH!EOSU3B2K%Z7Sm(w#|6*}fQj}Kf%O3?&)}a!e zcMz)*Z<3vZRH&B8U-{!6({}|}=`qEN(pfTcpY5#~n%Clf=JqD*4n}mPh3;Qr+kp!B zw_T`GoWR6T8n1Oy()&s8)VtHfBO|HS%vrODRU%G|CA;*7{)O+Mxmn7LnZPEU(24y^Oa z7;3(!k=MD%zX@nx$hiMsE_XSt@a(*aYI5Go+L!v(5sN^d#2YgK48z*&nY96tlMSkI zNnJkaIO^|q0;Th)tPHlQwH}^tAcvi?$482c>n8hH&oC}zz%Z$zk*)E*ZG6Cz!pZby zn9G~wmjcO_Z;c2q&QF}rF4`ZRVfm1wKBqyfh=j9FC=Q3gxxW#4Y<;{iahEruJ4tJ8 z?y()x6++7me$sHf-QAX2xz}1a_2(p=og4 zyzDi^Zam5z6C$j&`O;u+;rsV!Oy=9qT78P*BzVtq8_G;$Upg!KO^K6Lw}50}vS5|I zpB>xne5#EbPeopH74SQ0Fs-ms+SWAIbv*9bT~~WNd6fS9dDfrXr+0t4kp6at^ebD# zJF7wHIZv`i&g0!tMz<(&E8g&?xiawzx(nmA2rw#8s}#`0dAa*`F6z z#uRFPq%RVPgf6wzp`%oTwj67W#Ubf*&@=e(8BJs8)uxDW!?ZPt&Fb6E$BU~EhRVKN zXxFK}=BBk>j6Pz=gIuASOq1{*u*j@F+Q+k;zXnLf4g71H^>cwV?LRfoVBCw*Eo>jR z`02Tw@{-!8ZUS{YBKP85&$fs;s&AHfUMGe{jGaOHV>X#P=0)(nmw%PTK5y`Z$>$h) z948xp#uM_*5_DW(PQC@@3>37{xS5mD)LUP!aXGwbj*fXIsNrWY;*&o;dust5{~5p? zXB(3;E!XQok)9u8waO8?SnbA|7!s}UAPA;=kG33SKEQ`pOo#9eLL|hx?^RBYkmi_d zj@L&;n}WVcq#O}ZL-kSa+5>$7)bgKGAYjwGXFbpC7JX+QOg`bdc zqFzuTRp$<5$vobsxwglXP3}@s)z+*oC?nA59uEP8L?)WKI-j+ z*|?YC<%k^5)8I1{7&xOUL;L(AXMDn;2xA{ZXMZJ%M{08;vV--sw*-(Y&)j7KJFIc{ zJBv@V_HMp9^1^Bsn-7+(<|la4`-r7zy~e2z4PV!C%mY83Jj@g~CxwSx%`VZiwc{Q< zGpA2B;^p~u2IPe!0=TFa9F8-~wQweWFOc6t>yjP03Za()cHIw{~c>?(V2ejqr zNpG(eg?f`6s4z7VdxOsC92j#b?3v~i=1$IaL?qq?Pg8lb?+j^d^F>No&yb=u})y0N@zHBrQZ6S4oT zqEW7}Yq}368g1;00pQ+zCG&S_28t;mV2XhB3jJkaM$tRJ@`MlRZ)|KJ0ppZmq|HpP zXX4889^ZaRr!rON>B2O4z?0MCPwO?M`dxzorCZ`!Wa;4))*PMV84})oMqR2;m`;0n zml6>Vr2}*_z9D@@LKYdN1iir5Jixcyy}O{GhacJ(C>h&Ro~Fskd@HoavsC*#(UlX+ zlO$H|nI*5771i_K^bdYA*A2QT`L z*x@Ycaek}o3O?egko*+>fUp0hIiJIS)_Ji`vE3i_;&5-;*U$#4Dt?;~p2WQZ456G_ zo7`cfz=Fcz4%_p17y1FtibinZMGIZ#Dv(eI>le%|gu#Km)KVq@0*nhZ)|@U+6hW|* zU>NyzN5)1t&->~@8A7WSaqe`jk}HJuLEtZ{V z9lQ>5gMo1698U?-&EX73?cHMZ+Ns+77QU@1w1eSLr3W$><;uJ{d{bVOd9nA4-E@tz z3`Vl%mdOn=hqDd(F9}KAr&EKU^kTrppcAUyfG5;1d z^=B%XP^V&b(v`JY$u8BDF?SA;N7zrY0Ua}y{8jn@E>05DKvIf;n2@f$Jr?!947uXg zG~~s8Tjdo!?E>i>bTu;+QC8c#9QWcQ-&P>My5 zDbQ(3sFvrs$OD^B7P>X}kJm&f)?L#+G++#{Je+;P1(+p<(avj_I!7zAac4Sa49dQk z90{+jd!$`*!|TtiP-OX`3bK{Uo!8v@_;8K7>qT8EVDmm?yoc_#D5*z>$$ylT&C@V2 z`)PcSIZA+(%dO`aDH^kuD5G*^Szmf2vO+$f%KOGnXi1a>myS!;f?!ODT25ktyRd5j zz~3~|m0{PvT}ipbC|ASdH>Z7v8IR))cjBS6D!}|>EpG0-xL8qpSjVi5Aa0Y*-m_i| z;WfY_JZAXzHA7vXi z;#$e%h^a_8-Y>B_n>g2T8J}$(R^tJ^?h(vMa|GC?%B#*2Vl)%hS8Kv{8$5}^0jU06 zeO_FeHzAwr`u*#}=gQLj{is8qwdvEOn%z&t5RG>j22(ss`b$aW%)Uq)~rzz z$In^Pom#42E<$*fv={BA9J28G4Y3(0)CU}mpD#_4cnON?hrRNwX_@!)t;^}it@=Vn z2h5(M)m;WONjy3}HrxPTj=HJ)*apC!(%n3-;c`WHHO1QW6J9&S@r&4+W>Mf{DQ;{R5d<%!W##F z7d$u<(LB|36=;j(+TRC~8XkhnZ$mP}L*2k-Iz{>5S?|3*>QwePGPD$6oxa{TYk3|9 zzTBJQgUeKFz8>h}duVSga4Ry@cjoRsB(xVJE=XrTyX&Cj+q3uM=C)9wTQAkV`JalJ zyfO+MVf?8`QUs@_-uRXaz)ID&^gC4Af61k$0|2jVUX(zx`x+xVvNy7r8XJVmSA8z@ z!Yk)(BFt86#GT`KWtckhXh(LJ=0LFh3wxZVQZYP8G`V$H=BxB*SIq-a-oBW2X%X&U zJJ`<-Cx+ZlY8@RtSFe=nU$EH^1Rbfx;|t(4CmXfX;bAo$e*S8GW1H^Op8qfijPK^4=m&+i?mJ ziCvbHIYIdI&g)C<(~O!AG$B>j(Uv@s+7~w5FCKVO@KFF4hBTz@tvnDY?3^E9`W#f-V4);;ebJH{ zh^9E+*b*Bfnc${kRxLjzB>;ze-thXURkZKU(?D^*kxyJ;fFq{XQaL+_5dwlOAoSdp zNHTTcw-x5lw0zAxt|cLM72we3N8pxnVrbO~=8025-Ag`GJaA_pgri)W^0}`OVe3Fo zrA0a>KtN@QioaXuXNOnL<{$6EuR^@DWvNX*noCx-8w19_YOA`NLrE1t>DbgJIzuz+ z+MZ6H^)`$3%l(Wk?f$I+t zR~9H~z$HGlcYHFe^jLnEX9igU>zA+0D}XH=jqfkIN27h7JqO?Ja@Vo{Wz zv{)8_NXN6<`s60KvlBEfw@jdbRuf5yOV?&q_?~i;C3Psb0Osi05Oq_13-CT9G*XeP*f#x z{Bw-fl&KN(v{CQo()QSx;Rbkpq>p~A?t)5k{?@nn#!#+_r=IRxP}?b;O4mNxX++2< zKz1DuoQEWkCnMp`fzEtbMaMy_xZtel}h1a zTqt+lnBO1UGfOfacm(^oQTqnz2cHn+IIpRWn6#{hxXWGh+Tz9o{c{=G2b3buEv6)8 zK}U(P&Q||uWR{srrx|whN1CE6x(3;%)oY*R11|Aj3XF*Fupas0VOu@Q9mJhW;#9d} z+Cc+TW{eoU$s@Xjj1<6^48XURh9%=sG}&um441)2EMfLHt!R0IxNHPDuqR61hzLMJ z+^w@P20IKfbzTh3H7UJKZ#7VHbqVx$su(7YXe&W0A0IlZL~Co){dy#)n0E!!;CO0z z-<6#ol$G(o(=rdOdCd_498AW_MaB~S9NNLSi!g{z|B^fT^BO~LJ1P3xL#|FR?FlBW z1Enf`U_4Im>!odJEyAaTtM>r~4EV>48krJ^=|&0U@v&tByryYFv%xYc0oEvB3~TpV z#D7pIq$;UJPCYu^*Qmtav$&Mzxz3Ve_uGldYNO^7ny+ER{LmdCDF(D|r$uD#H~zObhm!g-*{zXdxr&t^hrTPsXIC89&`y_Es@X$J|VrNry8Dc2>n-7~dIw zt@P=*aUca{z6wU*Mmj$T2}us$F)CMkUupw{!H!%bE*TXxlgDU_QR;wCCKU-G8V%m> zXXH#Po8gqlUI6G|R)~GnZBvHJtlVs=^gRUdG{}(sPF5sVj9@R(}(Z6I90h={y(X`yRpU6owB~fxqlkfX@|^$G3EPtVlBS z?5UXRXbW@1i6y?!hYpr5oYEL>un_@w4&b*mt!W$q;9aAkC6eN!G=~8#u!_u-VDjzj ziDFlQb$Xa6F-DTml`{RX2>C#O*D~BqO{bxvq8fO2d;S5`uA{nOIUwK#Ekxa_I#hj> z8x;`8`o<`v(rkTEDNiB%{<~y?r3rm;QBl#cGz3KdPm%~dV?w|MK(w_q|4CwO^gjX7 z0pn6p3H_hj==Gtj|Kt@+ Date: Sat, 29 Dec 2018 15:27:15 +0100 Subject: [PATCH 19/24] Refs #240 use HTTPD images with reverse proxy capabilities --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index c26a08e0..7a235566 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -210,7 +210,7 @@ services: # Web Server # ------------------------------------------------------------ httpd: - image: devilbox/${HTTPD_SERVER}:0.24 + image: devilbox/${HTTPD_SERVER}:0.25 hostname: httpd environment: From 03ead39f2c0ed5384981c0e4e5cff64bea9a74a8 Mon Sep 17 00:00:00 2001 From: cytopia Date: Sat, 29 Dec 2018 15:39:41 +0100 Subject: [PATCH 20/24] Remove duplicate newlines --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 86d96564..9e32ef0e 100644 --- a/README.md +++ b/README.md @@ -766,7 +766,6 @@ starts up as soon as you run `docker-compose up`. > [Setup reverse proxy NodeJs](https://devilbox.readthedocs.io/en/latest/examples/setup-reverse-proxy-nodejs.html) | > [Setup reverse proxy Sphinx documentation](https://devilbox.readthedocs.io/en/latest/examples/setup-reverse-proxy-sphinx-docs.html) - ## Intranet overview The Devilbox comes with a pre-configured intranet on `http://localhost` and `https://localhost`. This can be explicitly disabled or password-protected. The intranet will not only show you, the chosen configuration, but also validate the status of the current configuration, such as if **DNS records** exists (on host and container), are directories properly set-up. Additionally it provides external tools to let you interact with databases and emails. From c93f97ce2eba09db131ed444ac915dd3bbc479ae Mon Sep 17 00:00:00 2001 From: cytopia Date: Sat, 29 Dec 2018 17:38:15 +0100 Subject: [PATCH 21/24] Fix vhost-gen documentation to also reflect changes of rproxy templates --- docs/examples/setup-phalcon.rst | 2 +- .../customize-all-virtual-hosts-globally.rst | 33 ++++++------ docs/vhost-gen/virtual-host-templates.rst | 54 +++++++++++++++---- 3 files changed, 63 insertions(+), 26 deletions(-) diff --git a/docs/examples/setup-phalcon.rst b/docs/examples/setup-phalcon.rst index 39319ee2..900aaa0e 100644 --- a/docs/examples/setup-phalcon.rst +++ b/docs/examples/setup-phalcon.rst @@ -170,7 +170,7 @@ By default routes will not work if using Nginx. To fix this, you will need to cr In your project folder, you will need to create a folder called .devilbox unless you changed `HTTPD_TEMPLATE_DIR` in your .env -Copy the default nginx config from ./cfg/vhost-gen/nginx.yml-example to ./data/www/my-project/.devilbox/nginx.yml +Copy the default nginx config from ./cfg/vhost-gen/nginx.yml-example-vhost to ./data/www/my-project/.devilbox/nginx.yml Carefully edit the nginx.yml file and change: diff --git a/docs/vhost-gen/customize-all-virtual-hosts-globally.rst b/docs/vhost-gen/customize-all-virtual-hosts-globally.rst index ed86ca88..8fe5298d 100644 --- a/docs/vhost-gen/customize-all-virtual-hosts-globally.rst +++ b/docs/vhost-gen/customize-all-virtual-hosts-globally.rst @@ -31,17 +31,21 @@ if you have already a specific vhost template for a project in place. In order for template files to be picked up by the web server they must be copied to their correct filename. -+----------------+--------------------------+------------------+ -| Web server | Example template | Template name | -+================+==========================+==================+ -| Apache 2.2 | ``apache22.yml-example`` | ``apache22.yml`` | -+----------------+--------------------------+------------------+ -| Apache 2.4 | ``apache24.yml-example`` | ``apache24.yml`` | -+----------------+--------------------------+------------------+ -| Nginx stable | ``nginx.yml-example`` | ``nginx.yml`` | -+----------------+--------------------------+------------------+ -| Nginx mainline | ``nginx.yml-example`` | ``nginx.yml`` | -+----------------+--------------------------+------------------+ ++----------------+--------------------------------+------------------+ +| Web server | Example template | Template name | ++================+================================+==================+ +| Apache 2.2 | ``apache22.yml-example-vhost`` | ``apache22.yml`` | ++----------------+--------------------------------+------------------+ +| Apache 2.4 | ``apache24.yml-example-vhost`` | ``apache24.yml`` | ++----------------+--------------------------------+------------------+ +| Nginx stable | ``nginx.yml-example-vhost`` | ``nginx.yml`` | ++----------------+--------------------------------+------------------+ +| Nginx mainline | ``nginx.yml-example-vhost`` | ``nginx.yml`` | ++----------------+--------------------------------+------------------+ + +.. important:: + Do not use ``*.yml-example-rproxy`` templates for global configuration. These are only + intended to be used on a per project base. .. note:: If you simply copy the files to their corresponding template file name, nothing will change @@ -52,7 +56,7 @@ Apache 2.2 ---------- 1. Navigate to ``cfg/vhost-gen/`` inside the Devilbox directory -2. Copy ``apache22.yml-example`` to ``apache22.yml`` and restart the Devilbox +2. Copy ``apache22.yml-example-vhost`` to ``apache22.yml`` and restart the Devilbox 3. Whenever you adjust ``apache22.yml``, you need to restart the Devilbox @@ -60,7 +64,7 @@ Apache 2.4 ---------- 1. Navigate to ``cfg/vhost-gen/`` inside the Devilbox directory -2. Copy ``apache24.yml-example`` to ``apache24.yml`` and restart the Devilbox +2. Copy ``apache24.yml-example-vhost`` to ``apache24.yml`` and restart the Devilbox 3. Whenever you adjust ``apache24.yml``, you need to restart the Devilbox @@ -68,6 +72,5 @@ Nginx stable and Nginx mainline ------------------------------- 1. Navigate to ``cfg/vhost-gen/`` inside the Devilbox directory -2. Copy ``nginx.yml-example`` to ``nginx.yml`` and restart the Devilbox +2. Copy ``nginx.yml-example-vhost`` to ``nginx.yml`` and restart the Devilbox 3. Whenever you adjust ``nginx.yml``, you need to restart the Devilbox - diff --git a/docs/vhost-gen/virtual-host-templates.rst b/docs/vhost-gen/virtual-host-templates.rst index 54b24f99..9b0b937c 100644 --- a/docs/vhost-gen/virtual-host-templates.rst +++ b/docs/vhost-gen/virtual-host-templates.rst @@ -30,7 +30,7 @@ Template files -------------- By default, vhost-gen templates are located within the Devilbox root directory under ``cfg/vhost-gen/``. -The templates file names are suffixed with ``-example`` and are absolutely identical to what is +The templates file names are suffixed with ``-example-`` and are absolutely identical to what is shipped inside each Devilbox web server Docker container. .. code-block:: bash @@ -38,12 +38,15 @@ shipped inside each Devilbox web server Docker container. host> tree -L 1 cfg/vhost-gen/ cfg/vhost-gen/ - β”œβ”€β”€ apache22.yml-example - β”œβ”€β”€ apache24.yml-example - β”œβ”€β”€ nginx.yml-example + β”œβ”€β”€ apache22.yml-example-rproxy + β”œβ”€β”€ apache22.yml-example-vhost + β”œβ”€β”€ apache24.yml-example-rproxy + β”œβ”€β”€ apache24.yml-example-vhost + β”œβ”€β”€ nginx.yml-example-rproxy + β”œβ”€β”€ nginx.yml-example-vhost └── README.md - 0 directories, 4 files + 0 directories, 7 files .. note:: Also note that nginx stable and nginx mainline share the same template as their configuration @@ -69,13 +72,15 @@ All vhost-gen templates consist of three sections: .. |features| replace:: The feature section contains many sub-sections that are replaced into the ``vhost`` |br| section before final rendering. -Templates -========= +Virtual host Templates +====================== + +These templates can be used to alter the behaviour of the vhost on a per project base or globally. Apache 2.2 template ------------------- -.. literalinclude:: ../../cfg/vhost-gen/apache22.yml-example +.. literalinclude:: ../../cfg/vhost-gen/apache22.yml-example-vhost :caption: apache22.yml :language: yaml @@ -83,7 +88,7 @@ Apache 2.2 template Apache 2.4 template ------------------- -.. literalinclude:: ../../cfg/vhost-gen/apache24.yml-example +.. literalinclude:: ../../cfg/vhost-gen/apache24.yml-example-vhost :caption: apache24.yml :language: yaml @@ -91,7 +96,36 @@ Apache 2.4 template Nginx template -------------- -.. literalinclude:: ../../cfg/vhost-gen/nginx.yml-example +.. literalinclude:: ../../cfg/vhost-gen/nginx.yml-example-vhost :caption: nginx.yml :language: yaml + +Reverse proxy Templates +======================= + +These templates can be used to change a normal vhost into a reverse proxy project. This might be +useful if you use NodeJs applications for example. + +Apache 2.2 template +------------------- + +.. literalinclude:: ../../cfg/vhost-gen/apache22.yml-example-rproxy + :caption: apache22.yml + :language: yaml + + +Apache 2.4 template +------------------- + +.. literalinclude:: ../../cfg/vhost-gen/apache24.yml-example-rproxy + :caption: apache24.yml + :language: yaml + + +Nginx template +-------------- + +.. literalinclude:: ../../cfg/vhost-gen/nginx.yml-example-rproxy + :caption: nginx.yml + :language: yaml From 782a7c05be7198c250583f32bcbb56104e61857a Mon Sep 17 00:00:00 2001 From: cytopia Date: Mon, 31 Dec 2018 10:55:22 +0100 Subject: [PATCH 22/24] Simplify Reverse Proxy vhost-gen templates --- cfg/vhost-gen/apache22.yml-example-rproxy | 8 +------- cfg/vhost-gen/apache24.yml-example-rproxy | 8 +------- cfg/vhost-gen/nginx.yml-example-rproxy | 8 +------- 3 files changed, 3 insertions(+), 21 deletions(-) diff --git a/cfg/vhost-gen/apache22.yml-example-rproxy b/cfg/vhost-gen/apache22.yml-example-rproxy index befed4f8..f2d4f018 100644 --- a/cfg/vhost-gen/apache22.yml-example-rproxy +++ b/cfg/vhost-gen/apache22.yml-example-rproxy @@ -1,13 +1,12 @@ --- -# Apache 2.2 vHost Template defintion for vhost-gen.py +# Apache 2.2 Reverse Proxy Template defintion for vhost-gen.py # # The 'feature' section contains optional features that can be enabled via # conf.yml and will then be replaced into the main vhost ('structure' section) # into their corresponding position: # # __XDOMAIN_REQ__ -# __PHP_FPM__ # __ALIASES__ # __DENIES__ # __STATUS__ @@ -16,9 +15,6 @@ # and will then be replaced in their corresponding feature section # before being replaced into the vhost section (if enabled): # -# PHP-FPM: -# __PHP_ADDR__ -# __PHP_PORT__ # XDomain: # __REGEX__ # Alias: @@ -36,8 +32,6 @@ # __INDEX__ # __ACCESS_LOG__ # __ERROR_LOG__ -# __PHP_ADDR__ -# __PHP_PORT__ # diff --git a/cfg/vhost-gen/apache24.yml-example-rproxy b/cfg/vhost-gen/apache24.yml-example-rproxy index 75432a42..c5170b0a 100644 --- a/cfg/vhost-gen/apache24.yml-example-rproxy +++ b/cfg/vhost-gen/apache24.yml-example-rproxy @@ -1,13 +1,12 @@ --- -# Apache 2.4 vHost Template defintion for vhost-gen.py +# Apache 2.4 Reverse Proxy Template defintion for vhost-gen.py # # The 'feature' section contains optional features that can be enabled via # conf.yml and will then be replaced into the main vhost ('structure' section) # into their corresponding position: # # __XDOMAIN_REQ__ -# __PHP_FPM__ # __ALIASES__ # __DENIES__ # __STATUS__ @@ -16,9 +15,6 @@ # and will then be replaced in their corresponding feature section # before being replaced into the vhost section (if enabled): # -# PHP-FPM: -# __PHP_ADDR__ -# __PHP_PORT__ # XDomain: # __REGEX__ # Alias: @@ -36,8 +32,6 @@ # __INDEX__ # __ACCESS_LOG__ # __ERROR_LOG__ -# __PHP_ADDR__ -# __PHP_PORT__ # diff --git a/cfg/vhost-gen/nginx.yml-example-rproxy b/cfg/vhost-gen/nginx.yml-example-rproxy index 2c3f685b..26729ab4 100644 --- a/cfg/vhost-gen/nginx.yml-example-rproxy +++ b/cfg/vhost-gen/nginx.yml-example-rproxy @@ -1,13 +1,12 @@ --- -# Nginx vHost Template defintion for vhost-gen.py +# Nginx Reverse Proxy Template defintion for vhost-gen.py # # The 'feature' section contains optional features that can be enabled via # conf.yml and will then be replaced into the main vhost ('structure' section) # into their corresponding position: # # __XDOMAIN_REQ__ -# __PHP_FPM__ # __ALIASES__ # __DENIES__ # __STATUS__ @@ -16,9 +15,6 @@ # and will then be replaced in their corresponding feature section # before being replaced into the vhost section (if enabled): # -# PHP-FPM: -# __PHP_ADDR__ -# __PHP_PORT__ # XDomain: # __REGEX__ # Alias: @@ -36,8 +32,6 @@ # __INDEX__ # __ACCESS_LOG__ # __ERROR_LOG__ -# __PHP_ADDR__ -# __PHP_PORT__ # From 83eb20d1388ad621d855312de7eff4b4d5e7ff9b Mon Sep 17 00:00:00 2001 From: cytopia Date: Mon, 31 Dec 2018 13:14:29 +0100 Subject: [PATCH 23/24] Add autostart and reverse proxy documentation --- docs/_includes/links/blogs.rst | 12 + docs/_includes/links/tools.rst | 6 + docs/autostart/autostarting-nodejs-apps.rst | 99 ++++ docs/autostart/custom-scripts-globally.rst | 98 ++++ .../custom-scripts-per-php-version.rst} | 107 ++--- docs/examples/setup-reverse-proxy-nodejs.rst | 440 ++++++++++++++++++ .../setup-reverse-proxy-sphinx-docs.rst | 428 +++++++++++++++++ docs/getting-started/directory-overview.rst | 2 + docs/index.rst | 27 +- docs/readings/available-tools.rst | 2 + .../reverse-proxy-for-custom-docker.rst | 263 +++++++++++ .../reverse-proxy-with-https.rst | 250 ++++++++++ docs/support/blogs-videos-and-use-cases.rst | 17 + docs/vhost-gen/virtual-host-templates.rst | 58 ++- .../virtual-host-vs-reverse-proxy.rst | 61 +++ 15 files changed, 1792 insertions(+), 78 deletions(-) create mode 100644 docs/autostart/autostarting-nodejs-apps.rst create mode 100644 docs/autostart/custom-scripts-globally.rst rename docs/{advanced/custom-startup-commands.rst => autostart/custom-scripts-per-php-version.rst} (61%) create mode 100644 docs/examples/setup-reverse-proxy-nodejs.rst create mode 100644 docs/examples/setup-reverse-proxy-sphinx-docs.rst create mode 100644 docs/reverse-proxy/reverse-proxy-for-custom-docker.rst create mode 100644 docs/reverse-proxy/reverse-proxy-with-https.rst create mode 100644 docs/vhost-gen/virtual-host-vs-reverse-proxy.rst diff --git a/docs/_includes/links/blogs.rst b/docs/_includes/links/blogs.rst index f708a97b..a9b22388 100644 --- a/docs/_includes/links/blogs.rst +++ b/docs/_includes/links/blogs.rst @@ -21,3 +21,15 @@ Google Summer of Code 2017 + +.. |ext_lnk_blog_drupalcamp_ghent_2018_slides| raw:: html + + + Drupalcamp Ghent 2018: Slides + + +.. |ext_lnk_blog_drupalcamp_ghent_2018_presentation| raw:: html + + + Drupalcamp Ghent 2018: Presentation + diff --git a/docs/_includes/links/tools.rst b/docs/_includes/links/tools.rst index 6cb2cba8..971341d9 100644 --- a/docs/_includes/links/tools.rst +++ b/docs/_includes/links/tools.rst @@ -189,6 +189,12 @@ Photon CMS cli +.. |ext_lnk_tool_pm2| raw:: html + + + pm2 + + .. |ext_lnk_tool_sass| raw:: html diff --git a/docs/autostart/autostarting-nodejs-apps.rst b/docs/autostart/autostarting-nodejs-apps.rst new file mode 100644 index 00000000..d2f5b078 --- /dev/null +++ b/docs/autostart/autostarting-nodejs-apps.rst @@ -0,0 +1,99 @@ +.. include:: /_includes/all.rst + +.. _autostarting_nodejs_apps: + +************************ +Autostarting NodeJS Apps +************************ + + +You can have all of your NodeJS applications spin up automtically as soon as you ``docker-compose up``. +This can be achieved by makeing use of |ext_lnk_tool_pm2| (Node.js Process Manager) and the +autostart feature. + +.. seealso:: + **Read more about how to add scripts for autostart commands:** + + * :ref:`custom_scripts_per_php_version` (individually for different PHP versions) + * :ref:`custom_scripts_globally` (equal for all PHP versions) + + +**Table of Contents** + +.. contents:: :local: + + +Self-built +========== + +Simply add a script ending by ``.sh`` to the ``autostart/`` directory that will accomplish this. +The following example will make use of |ext_lnk_tool_pm2| to spin up your NodeJS application. + +Assumption +---------- + +* Path to your NodeJS project (within the Docker container): ``/shared/httpd/my-node/src`` +* Name of the JS file to startup: ``index.js`` + +The script +---------- + +Add the following script to ``autostart/`` + +.. code-block:: bash + :caption: autostart/myscript.sh + + su -c "cd /shared/httpd/my-node/src; pm2 start index.js" -l devilbox + +* The whole command is wrapped into ``su`` to ensure the application will be started as the user ``devilbox``. +* ``cd`` tells it to you enter the directory where ``index.js`` can be found +* And finally |ext_lnk_tool_pm2| will take care about starting up your javascript file. + +Once the Devilbox is running, you can enter the PHP container and verify with ``pm2 list`` that +everything is running as expected. + + +Pre-built +========= + +Instead of writing multiple scripts for multiple applications, you can also make use of the +pre-shipped script that allows you to start unlimitted NodeJS applications via |ext_lnk_tool_pm2|. + +The following script is provided in ``autostart/run-node-js-projects.sh-example`` and needs to be +copied to a file ending by ``.sh`` + +.. code-block:: bash + + host> cd /path/to/devilbox + host> cd autostart + host> cp run-node-js-projects.sh-example run-node-js-projects.sh + + +In that newly created file, you can simply add the full paths (path inside the Docker containre) +of your Javascript files that need to be started. There is already one example which is not +commented. Change this to your path and add as many lines as you have projects to startup. + +.. literalinclude:: ../../autostart/run-node-js-projects.sh + :caption: autostart/run-node-js-projects.sh + :language: bash + :emphasize-lines: 16 + + +Reverse proxy NodeJS +==================== + +If you also want to know how to reverse proxy your NodeJS service and have it available via the web +server including HTTPS support have a look at the following links: + +.. seealso:: + + * :ref:`reverse_proxy_with_https` + * :ref:`example_setup_reverse_proxy_nodejs` + + +Imagine you have started an application within the PHP container that creates a listening port +(e.g.: NodeJS). This will now only listen on the PHP container and you would have to adjust +the docker-compose.yml definition in order to have that port available outside to your host OS. + +Alternatively, there is a simple way to reverse proxy it to the already running web server and even +make use of the already available HTTPS feature. diff --git a/docs/autostart/custom-scripts-globally.rst b/docs/autostart/custom-scripts-globally.rst new file mode 100644 index 00000000..e0b31d68 --- /dev/null +++ b/docs/autostart/custom-scripts-globally.rst @@ -0,0 +1,98 @@ +.. _custom_scripts_globally: + +*********************** +Custom scripts globally +*********************** + +You can provide custom startup commands via bash scripts that are executed by all PHP container. +This may be useful to specify additional software to install or additional settings to apply during +the initial startup. + + +.. seealso:: + * :ref:`custom_scripts_per_php_version` (individually for different PHP versions) + * :ref:`autostarting_nodejs_apps` + + +.. note:: + Global scripts are always executed **after** per PHP version scripts. + + +**Table of Contents** + +.. contents:: :local: + + +General +======= + +You can add shell scripts that are executed for all PHP container equally. + +.. important:: + Provided scripts must end by the file extension ``.sh`` and should be executable. + Anything not ending by ``.sh`` will be ignored. + +.. important:: + Provided scripts will be executed by the ``root`` user within the PHP container. + + +Where +----- + +Startup scripts can be added to ``autostart/``. + +.. code-block:: bash + :emphasize-lines: 3 + + host> ls -l path/to/devilbox/ + + drwxr-xr-x 2 cytopia cytopia 4096 Mar 5 21:53 autostart/ + drwxr-xr-x 2 cytopia cytopia 4096 Mar 5 21:53 backups/ + drwxr-xr-x 2 cytopia cytopia 4096 Mar 5 21:53 bash/ + drwxr-xr-x 2 cytopia cytopia 4096 Mar 5 21:53 ca/ + drwxr-xr-x 2 cytopia cytopia 4096 Mar 5 21:53 cfg/ + drwxr-xr-x 2 cytopia cytopia 4096 Mar 5 21:53 compose/ + drwxr-xr-x 2 cytopia cytopia 4096 Mar 5 21:53 data/ + drwxr-xr-x 2 cytopia cytopia 4096 Mar 5 21:53 docs/ + drwxr-xr-x 2 cytopia cytopia 4096 Mar 5 21:53 mail/ + drwxr-xr-x 2 cytopia cytopia 4096 Mar 5 21:53 mod/ + + +Custom scripts are added by placing a file into ``autostart/``. The file must end by ``.sh`` in +order to be executed by the PHP container. + +When +---- + +The scripts will be executed by the PHP container during initial startup. Whenever you change your +scripts, ensure to restart the Devilbox. + +How +--- + +The scripts will always be executed inside the PHP container (Debian Linux) and will be run with +``root`` privileges. It is however possible to drop privileges within the script to have them +executed as a normal user. + + +Examples +======== + +Running commands as devilbox user +--------------------------------- + +As mentioned above, all scripts are run by the ``root`` user. +If you do need something to be executed as the normal user: ``devilbox``, you can simply ``su`` +inside the shell script. + +The following example will install ``grunt`` and start a NodeJS application as the devilbox user +for whatever PHP container has been started. + +.. code-block:: bash + :caption: autostart/myscript.sh + + # Install grunt as devilbox user + su -c "npm install grunt" -l devilbox + + # Start a NodeJS application with pm2 as devilbox user + su -c "cd /shared/httpd/my-node/src/; pm2 start index.js" -l devilbox diff --git a/docs/advanced/custom-startup-commands.rst b/docs/autostart/custom-scripts-per-php-version.rst similarity index 61% rename from docs/advanced/custom-startup-commands.rst rename to docs/autostart/custom-scripts-per-php-version.rst index 89cd52c8..1849b6f3 100644 --- a/docs/advanced/custom-startup-commands.rst +++ b/docs/autostart/custom-scripts-per-php-version.rst @@ -1,13 +1,23 @@ -.. _custom_startup_commands: +.. _custom_scripts_per_php_version: -*********************** -Custom startup commands -*********************** +****************************** +Custom scripts per PHP version +****************************** -You can provide custom startup commands via bash scripts to each of the PHP container. +You can provide custom startup commands via bash scripts to each of the PHP container individually. This may be useful to specify additional software to install or additional settings to apply during the initial startup. + +.. seealso:: + * :ref:`custom_scripts_globally` (equal for all PHP versions) + * :ref:`autostarting_nodejs_apps` + + +.. note:: + Per PHP version scripts are always executed **before** global scripts. + + **Table of Contents** .. contents:: :local: @@ -16,9 +26,15 @@ the initial startup. General ======= -You can add custom ``bash`` scripts for each PHP version separately. Provided scripts must end -by the file extension ``.sh`` and should be executable. Anything not ending by ``.sh`` will be -ignored. +You can add custom shell scripts for each PHP version separately. + +.. important:: + Provided scripts must end by the file extension ``.sh`` and should be executable. + Anything not ending by ``.sh`` will be ignored. + +.. important:: + Provided scripts will be executed by the ``root`` user within the PHP container. + Where ----- @@ -59,15 +75,13 @@ How --- The scripts will always be executed inside the PHP container (Debian Linux) and will be run with -``root`` privileges. +``root`` privileges. It is however possible to drop privileges within the script to have them +executed as a normal user. Examples ======== -The following examples should already exist as example files within ``cfg/php-startup-X.Y``, but -will covered here as well to show some real world examples of what can be done with startup scripts. - Installing Microsoft ODBC driver -------------------------------- @@ -94,7 +108,7 @@ Paste the following into ``ms-obbc.sh`` and **ensure to accept the EULA** by cha ``ACCEPT_EULA=N`` to ``ACCEPT_EULA=Y``. .. code-block:: bash - :caption: ms-odbc.sh + :caption: cfg/php-startup-7.1/install-ms-odbc.sh :emphasize-lines: 18 !/bin/bash @@ -158,64 +172,21 @@ Paste the following into ``ms-obbc.sh`` and **ensure to accept the EULA** by cha The script will not work, if you have not accepted the EULA. -Installing Oracle oci8 and pdo_oci PHP modules ----------------------------------------------- +Running commands as devilbox user +--------------------------------- -This example will install Oracle instaclient as well as PHP modules ``pdo_oci`` and ``oci8`` in -order to use PHP to connect to Oracle. This startup script will only be provided to PHP 7.2 +As mentioned above, all scripts are run by the ``root`` user. +If you do need something to be executed as the normal user: ``devilbox``, you can simply ``su`` +inside the shell script. +The following example will install ``grunt`` and start a NodeJS application as the devilbox user +for the PHP 7.1 Docker container only. .. code-block:: bash + :caption: cfg/php-startup-7.1/myscript.sh - # Navigate to starup dir of PHP 7.2 - host> cd path/to/devilbox/cfg/php-startup-7.2 + # Install grunt as devilbox user + su -c "npm install grunt" -l devilbox - # Create an .sh file - host> touch oracle.sh - - # Open the file in your favourite editor - host> vi oracle.sh - - -Paste the following into ``oracle.sh``: - -.. code-block:: bash - :caption: oracle.sh - - #!/bin/bash - # - # https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/x86_64/ - # - - # Install 'alien' to install rpm packages - apt-get update -q - DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests alien - - # Instantclient (basic lite) - curl -o /tmp/oracle-instantclient18.3-basiclite-18.3.0.0.0-2.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/x86_64/getPackage/oracle-instantclient18.3-basiclite-18.3.0.0.0-2.x86_64.rpm - - # Instantclient (devel) - curl -o /tmp/oracle-instantclient18.3-devel-18.3.0.0.0-2.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/x86_64/getPackage/oracle-instantclient18.3-devel-18.3.0.0.0-2.x86_64.rpm - - # Install RPMs - alien -i /tmp/oracle-instantclient18.3-basiclite-18.3.0.0.0-2.x86_64.rpm - alien -i /tmp/oracle-instantclient18.3-devel-18.3.0.0.0-2.x86_64.rpm - - # Rempve RPMs - rm -f /tmp/oracle-instantclient18.3-basiclite-18.3.0.0.0-2.x86_64.rpm - rm -f /tmp/oracle-instantclient18.3-devel-18.3.0.0.0-2.x86_64.rpm - - # Necessary symlinks - ln -s /usr/lib/oracle/18.3/client64/lib/libmql1.so /usr/lib/ - ln -s /usr/lib/oracle/18.3/client64/lib/libipc1.so /usr/lib/ - ln -s /usr/lib/oracle/18.3/client64/lib/libnnz18.so /usr/lib/ - ln -s /usr/lib/oracle/18.3/client64/lib/libons.so /usr/lib/ - ln -s /usr/lib/oracle/18.3/client64/lib/libclntshcore.so.18.1 /usr/lib/ - - # Build and install PHP extension oci8 - docker-php-ext-configure oci8 --with-oci8=instantclient - docker-php-ext-install oci8 - - # Build and install PHP extension pdo_oci - docker-php-ext-configure pdo_oci --with-pdo-oci=instantclient,/usr,18.3 - docker-php-ext-install pdo_oci + # Start a NodeJS application with pm2 as devilbox user + su -c "cd /shared/httpd/my-node/src/; pm2 start index.js" -l devilbox diff --git a/docs/examples/setup-reverse-proxy-nodejs.rst b/docs/examples/setup-reverse-proxy-nodejs.rst new file mode 100644 index 00000000..dd9cf3b0 --- /dev/null +++ b/docs/examples/setup-reverse-proxy-nodejs.rst @@ -0,0 +1,440 @@ +.. include:: /_includes/all.rst + +.. _example_setup_reverse_proxy_nodejs: + +************************** +Setup reverse proxy NodeJS +************************** + +This example will walk you through creating a NodeJS hello world application, which is started +automatically on ``docker-compose up`` via |ext_lnk_tool_pm2|, will be proxied to the web server and can be reached via valid HTTPS. + + +.. note:: + It is also possible to attach a leight-weight NodeJS container to the Devilbox instead of running + this in the PHP container. See here for details: :ref:`reverse_proxy_with_custom_docker` + + +**Table of Contents** + +.. contents:: :local: + +Overview +======== + +The following configuration will be used: + ++--------------+--------------------------+-------------+------------+---------------------------------------------+ +| Project name | VirtualHost directory | Database | TLD_SUFFIX | Project URL | ++==============+==========================+=============+============+=============================================+ +| my-node | /shared/httpd/my-node | - | loc | http://my-node.loc |br| https://my-node.loc | ++--------------+--------------------------+-------------+------------+---------------------------------------------+ + +Additionally we will set the listening port of the NodeJS appliation to ``4000`` inside the PHP container. + +We also want NodeJS running regardless of which PHP container will bestarted (global autostart). + +.. note:: + * Inside the Devilbox PHP container, projects are always in ``/shared/httpd/``. + * On your host operating system, projects are by default in ``./data/www/`` inside the + Devilbox git directory. This path can be changed via :ref:`env_httpd_datadir`. + +Walk through +============ + +It will be ready in nine simple steps: + +1. Enter the PHP container +2. Create a new VirtualHost directory +3. Create NodeJS hello world application +4. Create *virtual* docroot directory +5. Add reverse proxy vhost-gen config files +6. Create autostart script +7. Setup DNS record +8. Restart the Devilbox +9. Visit http://my-node.loc in your browser + + +1. Enter the PHP container +-------------------------- + +All work will be done inside the PHP container as it provides you with all required command line +tools. + +Navigate to the Devilbox git directory and execute ``shell.sh`` (or ``shell.bat`` on Windows) to +enter the running PHP container. + +.. code-block:: bash + + host> ./shell.sh + +.. seealso:: + * :ref:`enter_the_php_container` + * :ref:`work_inside_the_php_container` + * :ref:`available_tools` + + +2. Create new vhost directory +----------------------------- + +The vhost directory defines the name under which your project will be available. |br| +( ``.TLD_SUFFIX`` will be the final URL ). + +.. code-block:: bash + + devilbox@php-7.0.20 in /shared/httpd $ mkdir my-node + +.. seealso:: :ref:`env_tld_suffix` + + +3. Create NodeJS application +---------------------------- + +.. code-block:: bash + + # Navigate to your project directory + devilbox@php-7.0.20 in /shared/httpd $ cd my-node + + # Create a directory which will hold the source code + devilbox@php-7.0.20 in /shared/httpd/my-node $ mkdir src + + # Create the index.js file with your favourite editor + devilbox@php-7.0.20 in /shared/httpd/my-node/src $ vi index.js + +.. code-block:: javascript + :caption: index.js + + // Load the http module to create an http server. + var http = require('http'); + + // Configure our HTTP server to respond with Hello World to all requests. + var server = http.createServer(function (request, response) { + response.writeHead(200, {"Content-Type": "text/plain"}); + response.end("Hello World\n"); + }); + + // Listen on port 3000 + server.listen(3000); + +4. Create *virtual* docroot directory +------------------------------------- + +Every project for the Devilbox requires a ``htdocs`` directory present inside the project dir. +For a reverse proxy this is not of any use, but rather only for the Intranet vhost page to stop +complaining about the missing ``htdocs`` directory. So that's why this is only a *virtual* directory +which will not hold any data. + +.. code-block:: bash + + # Navigate to your project directory + devilbox@php-7.0.20 in /shared/httpd $ cd my-node + + # Create the docroot directory + devilbox@php-7.0.20 in /shared/httpd/my-node $ mkdir htdocs + +.. seealso:: :ref:`env_httpd_docroot_dir` + + +5. Add reverse proxy vhost-gen config files +------------------------------------------- + +5.1 Create vhost-gen template directory +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Before we can copy the vhost-gen templates, we must create the ``.devilbox`` template directory +inside the project directory. + +.. code-block:: bash + + # Navigate to your project directory + devilbox@php-7.0.20 in /shared/httpd $ cd my-node + + # Create the .devilbox template directory + devilbox@php-7.0.20 in /shared/httpd/my-node $ mkdir .devilbox + + +.. seealso:: :ref:`env_httpd_template_dir` + +5.2 Copy vhost-gen templates +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Now we can copy and adjust the vhost-gen reverse proxy files for Apache 2.2, Apache 2.4 and Nginx. + + +The reverse vhost-gen templates are available in ``cfg/vhost-gen``: + +.. code-block:: bash + :emphasize-lines: 4,6,8 + + host> tree -L 1 cfg/vhost-gen/ + + cfg/vhost-gen/ + β”œβ”€β”€ apache22.yml-example-rproxy + β”œβ”€β”€ apache22.yml-example-vhost + β”œβ”€β”€ apache24.yml-example-rproxy + β”œβ”€β”€ apache24.yml-example-vhost + β”œβ”€β”€ nginx.yml-example-rproxy + β”œβ”€β”€ nginx.yml-example-vhost + └── README.md + + 0 directories, 7 files + +For this example we will copy all ``*-example-rproxy`` files into ``/shared/httpd/my-node/.devilbox`` +to ensure this will work with all web servers. + +.. code-block:: bash + + host> cd /path/to/devilbox + host> cp cfg/vhost-gen/apache22.yml-example-rproxy data/www/my-node/.devilbox/apache22.yml + host> cp cfg/vhost-gen/apache24.yml-example-rproxy data/www/my-node/.devilbox/apache24.yml + host> cp cfg/vhost-gen/nginx.yml-example-rproxy data/www/my-node/.devilbox/nginx.yml + + +5.3 Adjust ports +^^^^^^^^^^^^^^^^ + +By default, all vhost-gen templates will forward requests to port ``8000`` into the PHP container. +Our current example however uses port ``4000``, so we must change that accordingly for all three +templates. + +5.3.1 Adjust Apache 2.2 template +"""""""""""""""""""""""""""""""" + +Open the ``apache22.yml`` vhost-gen template in your project: + +.. code-block:: bash + + host> cd /path/to/devilbox + host> vi data/www/my-node/.devilbox/apache22.yml + + +Find the two lines with ``ProxyPass`` and ``ProxyPassReverse`` and change the port from ``8000`` +to ``4000`` + +.. code-block:: yaml + :caption: data/www/my-node/.devilbox/apache22.yml + :emphasize-lines: 16,17 + + # ... more lines above ... # + + ### + ### Basic vHost skeleton + ### + vhost: | + + ServerName __VHOST_NAME__ + + CustomLog "__ACCESS_LOG__" combined + ErrorLog "__ERROR_LOG__" + + # Reverse Proxy definition (Ensure to adjust the port, currently '8000') + ProxyRequests On + ProxyPreserveHost On + ProxyPass / http://php:4000/ + ProxyPassReverse / http://php:4000/ + + # ... more lines below ... # + +5.3.2 Adjust Apache 2.4 template +"""""""""""""""""""""""""""""""" + +Open the ``apache24.yml`` vhost-gen template in your project: + +.. code-block:: bash + + host> cd /path/to/devilbox + host> vi data/www/my-node/.devilbox/apache24.yml + + +Find the two lines with ``ProxyPass`` and ``ProxyPassReverse`` and change the port from ``8000`` +to ``4000`` + +.. code-block:: yaml + :caption: data/www/my-node/.devilbox/apache24.yml + :emphasize-lines: 16,17 + + # ... more lines above ... # + + ### + ### Basic vHost skeleton + ### + vhost: | + + ServerName __VHOST_NAME__ + + CustomLog "__ACCESS_LOG__" combined + ErrorLog "__ERROR_LOG__" + + # Reverse Proxy definition (Ensure to adjust the port, currently '8000') + ProxyRequests On + ProxyPreserveHost On + ProxyPass / http://php:4000/ + ProxyPassReverse / http://php:4000/ + + # ... more lines below ... # + +5.3.3 Adjust Nginx template +""""""""""""""""""""""""""" + +Open the ``nginx.yml`` vhost-gen template in your project: + +.. code-block:: bash + + host> cd /path/to/devilbox + host> vi data/www/my-node/.devilbox/nginx.yml + + +Find the lines with ``proxy_pass`` and change the port from ``8000`` to ``4000`` + +.. code-block:: yaml + :caption: data/www/my-node/.devilbox/nginx.yml + :emphasize-lines: 18 + + # ... more lines above ... # + + ### + ### Basic vHost skeleton + ### + vhost: | + server { + listen __PORT____DEFAULT_VHOST__; + server_name __VHOST_NAME__; + + access_log "__ACCESS_LOG__" combined; + error_log "__ERROR_LOG__" warn; + + # Reverse Proxy definition (Ensure to adjust the port, currently '8000') + location / { + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_pass http://php:4000; + } + + # ... more lines below ... # + +6. Create autostart script +-------------------------- + +For NodeJS applications, the Devilbox already bundles an autostart template which you can use +and simply just add the path of your NodeJS application. This template does nothing by default +as its file name does not end by ``.sh``. So let's have a look at the template from ``autostart/run-node-js-projects.sh-example``. +The location where you will have to add your path is highlighted: + +.. literalinclude:: ../../autostart/run-node-js-projects.sh-example + :caption: autostart/run-node-js-projects.sh-example + :language: bash + :emphasize-lines: 15 + + +So in order to proceed copy this file inside the ``autostart/`` directory of the Devilbox git directory +to a new file ending by ``.sh`` + +.. code-block:: bash + + host> cd /path/to/devilbox + + # Navigate to the autostart directory + host> cd autostart + + # Copy the template + host> cp run-node-js-projects.sh-example run-node-js-projects.sh + + # Adjust the template and add your path: + host> vi run-node-js-projects.sh + + +.. code-block:: bash + :caption: autostart/run-node-js-projects.sh + :emphasize-lines: 7 + + # ... more lines above ... # + + # Add the full paths of your Nodejs projects startup files into this array + # Each project separated by a newline and enclosed in double quotes. (No commas!) + # Paths are internal paths inside the PHP container. + NODE_PROJECTS=( + "/shared/httpd/my-node/js/index.js" + ) + + # ... more lines below ... # + +.. seealso:: + + * :ref:`custom_scripts_per_php_version` (individually for different PHP versions) + * :ref:`custom_scripts_globally` (equal for all PHP versions) + * :ref:`autostarting_nodejs_apps` + +7. DNS record +------------- + +If you **have** Auto DNS configured already, you can skip this section, because DNS entries will +be available automatically by the bundled DNS server. + +If you **don't have** Auto DNS configured, you will need to add the following line to your +host operating systems ``/etc/hosts`` file (or ``C:\Windows\System32\drivers\etc`` on Windows): + +.. code-block:: bash + :caption: /etc/hosts + + 127.0.0.1 my-node.loc + +.. seealso:: + + * :ref:`howto_add_project_hosts_entry_on_mac` + * :ref:`howto_add_project_hosts_entry_on_win` + * :ref:`setup_auto_dns` + + +8. Restart the Devilbox +----------------------- + +Now for those changes to take affect, you will have to restart the Devilbox. + +.. code-block:: bash + + host> cd /path/to/devilbox + + # Stop the Devilbox + host> docker-compose down + host> docker-compose rm -f + + # Start the Devilbox + host> docker-compose up -d php httpd bind + + +9. Open your browser +-------------------- + +All set now, you can visit http://my-node.loc or https://my-node.loc in your browser. +The NodeJS application has been started up automatically and the reverse proxy will direct all +requests to it. + +.. seealso:: :ref:`setup_valid_https` + + + +Managing NodeJS +=============== + +If you have never worked with |ext_lnk_tool_pm2|, I suggest to visit their website and get familiar +with the available commands. A quick guide is below: + + + +.. code-block:: bash + + # Navigate to Devilbox git directory + host> cd /path/to/devilbox + + # Enter the PHP container + host> ./shell.sh + + # List your running NodeJS apps + devilbox@php-7.0.20 in /shared/httpd $ pm2 list + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ App name β”‚ id β”‚ version β”‚ mode β”‚ pid β”‚ status β”‚ restart β”‚ uptime β”‚ cpu β”‚ mem β”‚ user β”‚ watching β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ index β”‚ 0 β”‚ N/A β”‚ fork β”‚ 1906 β”‚ online β”‚ 0 β”‚ 42h β”‚ 0% β”‚ 39.7 MB β”‚ devilbox β”‚ disabled β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + diff --git a/docs/examples/setup-reverse-proxy-sphinx-docs.rst b/docs/examples/setup-reverse-proxy-sphinx-docs.rst new file mode 100644 index 00000000..4e1ce124 --- /dev/null +++ b/docs/examples/setup-reverse-proxy-sphinx-docs.rst @@ -0,0 +1,428 @@ +.. include:: /_includes/all.rst + +.. _example_setup_reverse_proxy_sphinx_docs: + +******************************* +Setup reverse proxy Sphinx docs +******************************* + +This example will walk you through creating a Sphinx documentation, which is started +automatically on ``docker-compose up``, will be proxied to the web server and can be reached via valid HTTPS. + +.. note:: + It is also possible to attach a leight-weight Python container to the Devilbox instead of running + this in the PHP container. See here for details: :ref:`reverse_proxy_with_custom_docker` + + +**Table of Contents** + +.. contents:: :local: + +Overview +======== + +The following configuration will be used: + ++--------------+--------------------------+-------------+------------+-------------------------------------------------+ +| Project name | VirtualHost directory | Database | TLD_SUFFIX | Project URL | ++==============+==========================+=============+============+=================================================+ +| my-sphinx | /shared/httpd/my-sphinx | - | loc | http://my-sphinx.loc |br| https://my-sphinx.loc | ++--------------+--------------------------+-------------+------------+-------------------------------------------------+ + +Additionally we will set the listening port of the Sphinx appliation to ``4000`` inside the PHP container. + +We also want Sphinx running and autostarted only in the PHP 7.2 container (local autostart) and +have all its required Python packages installed during ``docker-compose up``. + +.. note:: + * Inside the Devilbox PHP container, projects are always in ``/shared/httpd/``. + * On your host operating system, projects are by default in ``./data/www/`` inside the + Devilbox git directory. This path can be changed via :ref:`env_httpd_datadir`. + +Walk through +============ + +It will be ready in nine simple steps: + +1. Enter the PHP container +2. Create a new VirtualHost directory +3. Create basic Sphinx project +4. Create *virtual* docroot directory +5. Add reverse proxy vhost-gen config files +6. Create autostart script +7. Setup DNS record +8. Restart the Devilbox +9. Visit http://my-sphinx.loc in your browser + +1. Enter the PHP container +-------------------------- + +All work will be done inside the PHP container as it provides you with all required command line +tools. + +Navigate to the Devilbox git directory and execute ``shell.sh`` (or ``shell.bat`` on Windows) to +enter the running PHP container. + +.. code-block:: bash + + host> ./shell.sh + +.. seealso:: + * :ref:`enter_the_php_container` + * :ref:`work_inside_the_php_container` + * :ref:`available_tools` + + +2. Create new vhost directory +----------------------------- + +The vhost directory defines the name under which your project will be available. |br| +( ``.TLD_SUFFIX`` will be the final URL ). + +.. code-block:: bash + + devilbox@php-7.0.20 in /shared/httpd $ mkdir my-sphinx + +.. seealso:: :ref:`env_tld_suffix` + + +3. Create basic Sphinx project +------------------------------ + +.. code-block:: bash + + # Navigate to your project directory + devilbox@php-7.0.20 in /shared/httpd $ cd my-sphinx + + # Create a directory which will hold the documentation source code + devilbox@php-7.0.20 in /shared/httpd/my-sphinx $ mkdir doc + + +Create a basic Sphinx configuration file: + +.. code-block:: python + :caption: /shared/httpd/my-sphinx/doc/conf.py + + source_suffix = '.rst' + master_doc = 'index' + html_theme = 'default' + + exclude_patterns = [ + u'_build/*' + ] + +Create the table of contents file: + +.. code-block:: rst + :caption: /shared/httpd/my-sphinx/doc/index.rst + + .. :hidden: + + ******* + My Docs + ******* + + Description + + .. toctree:: + :maxdepth: 2 + + page1 + +Create the first page ``page1``: + +.. code-block:: rst + :caption: /shared/httpd/my-sphinx/doc/page1.rst + + ****** + Page 1 + ****** + + Hello world + + +4. Create *virtual* docroot directory +------------------------------------- + +Every project for the Devilbox requires a ``htdocs`` directory present inside the project dir. +For a reverse proxy this is not of any use, but rather only for the Intranet vhost page to stop +complaining about the missing ``htdocs`` directory. So that's why this is only a *virtual* directory +which will not hold any data. + +.. code-block:: bash + + # Navigate to your project directory + devilbox@php-7.0.20 in /shared/httpd $ cd my-sphinx + + # Create the docroot directory + devilbox@php-7.0.20 in /shared/httpd/my-sphinx $ mkdir htdocs + +.. seealso:: :ref:`env_httpd_docroot_dir` + + +5. Add reverse proxy vhost-gen config files +------------------------------------------- + +5.1 Create vhost-gen template directory +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Before we can copy the vhost-gen templates, we must create the ``.devilbox`` template directory +inside the project directory. + +.. code-block:: bash + + # Navigate to your project directory + devilbox@php-7.0.20 in /shared/httpd $ cd my-sphinx + + # Create the .devilbox template directory + devilbox@php-7.0.20 in /shared/httpd/my-sphinx $ mkdir .devilbox + + +.. seealso:: :ref:`env_httpd_template_dir` + +5.2 Copy vhost-gen templates +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Now we can copy and adjust the vhost-gen reverse proxy files for Apache 2.2, Apache 2.4 and Nginx. + + +The reverse vhost-gen templates are available in ``cfg/vhost-gen``: + +.. code-block:: bash + :emphasize-lines: 4,6,8 + + host> tree -L 1 cfg/vhost-gen/ + + cfg/vhost-gen/ + β”œβ”€β”€ apache22.yml-example-rproxy + β”œβ”€β”€ apache22.yml-example-vhost + β”œβ”€β”€ apache24.yml-example-rproxy + β”œβ”€β”€ apache24.yml-example-vhost + β”œβ”€β”€ nginx.yml-example-rproxy + β”œβ”€β”€ nginx.yml-example-vhost + └── README.md + + 0 directories, 7 files + +For this example we will copy all ``*-example-rproxy`` files into ``/shared/httpd/my-sphinx/.devilbox`` +to ensure this will work with all web servers. + +.. code-block:: bash + + host> cd /path/to/devilbox + host> cp cfg/vhost-gen/apache22.yml-example-rproxy data/www/my-sphinx/.devilbox/apache22.yml + host> cp cfg/vhost-gen/apache24.yml-example-rproxy data/www/my-sphinx/.devilbox/apache24.yml + host> cp cfg/vhost-gen/nginx.yml-example-rproxy data/www/my-sphinx/.devilbox/nginx.yml + + +5.3 Adjust ports +^^^^^^^^^^^^^^^^ + +By default, all vhost-gen templates will forward requests to port ``8000`` into the PHP container. +Our current example however uses port ``4000``, so we must change that accordingly for all three +templates. + +5.3.1 Adjust Apache 2.2 template +"""""""""""""""""""""""""""""""" + +Open the ``apache22.yml`` vhost-gen template in your project: + +.. code-block:: bash + + host> cd /path/to/devilbox + host> vi data/www/my-sphinx/.devilbox/apache22.yml + + +Find the two lines with ``ProxyPass`` and ``ProxyPassReverse`` and change the port from ``8000`` +to ``4000`` + +.. code-block:: yaml + :caption: data/www/my-sphinx/.devilbox/apache22.yml + :emphasize-lines: 16,17 + + # ... more lines above ... # + + ### + ### Basic vHost skeleton + ### + vhost: | + + ServerName __VHOST_NAME__ + + CustomLog "__ACCESS_LOG__" combined + ErrorLog "__ERROR_LOG__" + + # Reverse Proxy definition (Ensure to adjust the port, currently '8000') + ProxyRequests On + ProxyPreserveHost On + ProxyPass / http://php:4000/ + ProxyPassReverse / http://php:4000/ + + # ... more lines below ... # + +5.3.2 Adjust Apache 2.4 template +"""""""""""""""""""""""""""""""" + +Open the ``apache24.yml`` vhost-gen template in your project: + +.. code-block:: bash + + host> cd /path/to/devilbox + host> vi data/www/my-sphinx/.devilbox/apache24.yml + + +Find the two lines with ``ProxyPass`` and ``ProxyPassReverse`` and change the port from ``8000`` +to ``4000`` + +.. code-block:: yaml + :caption: data/www/my-sphinx/.devilbox/apache24.yml + :emphasize-lines: 16,17 + + # ... more lines above ... # + + ### + ### Basic vHost skeleton + ### + vhost: | + + ServerName __VHOST_NAME__ + + CustomLog "__ACCESS_LOG__" combined + ErrorLog "__ERROR_LOG__" + + # Reverse Proxy definition (Ensure to adjust the port, currently '8000') + ProxyRequests On + ProxyPreserveHost On + ProxyPass / http://php:4000/ + ProxyPassReverse / http://php:4000/ + + # ... more lines below ... # + +5.3.3 Adjust Nginx template +""""""""""""""""""""""""""" + +Open the ``nginx.yml`` vhost-gen template in your project: + +.. code-block:: bash + + host> cd /path/to/devilbox + host> vi data/www/my-sphinx/.devilbox/nginx.yml + + +Find the lines with ``proxy_pass`` and change the port from ``8000`` to ``4000`` + +.. code-block:: yaml + :caption: data/www/my-sphinx/.devilbox/nginx.yml + :emphasize-lines: 18 + + # ... more lines above ... # + + ### + ### Basic vHost skeleton + ### + vhost: | + server { + listen __PORT____DEFAULT_VHOST__; + server_name __VHOST_NAME__; + + access_log "__ACCESS_LOG__" combined; + error_log "__ERROR_LOG__" warn; + + # Reverse Proxy definition (Ensure to adjust the port, currently '8000') + location / { + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_pass http://php:4000; + } + + # ... more lines below ... # + + +6. Create autostart script +-------------------------- + +Remember, we only wanted to have our Sphinx application run on the PHP 7.2 container, so we will create +a autostart script only for that container. + +Navigate to ``cfg/php-startup-7.2/`` in the Devilbox git directory and create a new shell script +ending by ``.sh`` + + +.. code-block:: bash + + # Navigate to the Devilbox git directory + host> cd /path/to/devilbox + + # Nagivate to startup directory for PHP 7.2 and create the script + host> cd cfg/php-startup-7.2/ + host> vi my-sphinx.sh + + +.. code-block:: bash + :caption: cfg/php-startup-7.2/my-sphinx.sh + + #!/usr/bin/env bash + + # Install required Python modules as root user + pip install sphinx sphinx-autobuild + + # Autostart Sphinx by devilbox user on Port 4000 and sent it to backgroun with '&' + sh -c "cd /shared/httpd/my-sphinx; sphinx-autobuild . _build/html -p 4000 -H 0.0.0.0" -l devilbox & + + +.. seealso:: + + * :ref:`custom_scripts_per_php_version` (individually for different PHP versions) + * :ref:`custom_scripts_globally` (equal for all PHP versions) + * :ref:`autostarting_nodejs_apps` + + +7. DNS record +------------- + +If you **have** Auto DNS configured already, you can skip this section, because DNS entries will +be available automatically by the bundled DNS server. + +If you **don't have** Auto DNS configured, you will need to add the following line to your +host operating systems ``/etc/hosts`` file (or ``C:\Windows\System32\drivers\etc`` on Windows): + +.. code-block:: bash + :caption: /etc/hosts + + 127.0.0.1 my-node.loc + +.. seealso:: + + * :ref:`howto_add_project_hosts_entry_on_mac` + * :ref:`howto_add_project_hosts_entry_on_win` + * :ref:`setup_auto_dns` + + +8. Restart the Devilbox +----------------------- + +Now for those changes to take affect, you will have to restart the Devilbox. + +.. code-block:: bash + + host> cd /path/to/devilbox + + # Stop the Devilbox + host> docker-compose down + host> docker-compose rm -f + + # Start the Devilbox + host> docker-compose up -d php httpd bind + + +9. Open your browser +-------------------- + +All set now, you can visit http://my-sphinx.loc or https://my-sphinx.loc in your browser. +The Sphinx application has been started up automatically and the reverse proxy will direct all +requests to it. + +.. seealso:: :ref:`setup_valid_https` + + + diff --git a/docs/getting-started/directory-overview.rst b/docs/getting-started/directory-overview.rst index 37968251..998eb3d3 100644 --- a/docs/getting-started/directory-overview.rst +++ b/docs/getting-started/directory-overview.rst @@ -35,6 +35,8 @@ You can verifiy that the path is actually ``./data/www/`` by checking your ``.en HOST_PATH_HTTPD_DATADIR=./data/www +.. _getting_started_directory_overview_project_directory: + Project directory ================= diff --git a/docs/index.rst b/docs/index.rst index d5f3e1c3..ca6b9a5e 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -70,7 +70,6 @@ host is ready to be served with your custom domain. :maxdepth: 2 :numbered: - advanced/custom-startup-commands advanced/customize-php-globally advanced/customize-webserver-globally advanced/connect-to-host-os @@ -81,6 +80,15 @@ host is ready to be served with your custom domain. advanced/overwrite-existing-docker-image +.. toctree:: + :caption: Autostart commands + :maxdepth: 2 + + autostart/custom-scripts-per-php-version + autostart/custom-scripts-globally + autostart/autostarting-nodejs-apps + + .. toctree:: :caption: vhost-gen :maxdepth: 2 @@ -88,8 +96,18 @@ host is ready to be served with your custom domain. vhost-gen/virtual-host-templates vhost-gen/customize-all-virtual-hosts-globally vhost-gen/customize-specific-virtual-host + vhost-gen/virtual-host-vs-reverse-proxy vhost-gen/example-add-subdomains + +.. toctree:: + :caption: reverse-proxy + :maxdepth: 2 + + reverse-proxy/reverse-proxy-with-https + reverse-proxy/reverse-proxy-for-custom-docker + + .. toctree:: :caption: Enable custom container :maxdepth: 2 @@ -164,6 +182,13 @@ host is ready to be served with your custom domain. examples/setup-zend examples/setup-other-frameworks +.. toctree:: + :maxdepth: 2 + :caption: Examples - reverse proxy + + examples/setup-reverse-proxy-nodejs + examples/setup-reverse-proxy-sphinx-docs + .. toctree:: :caption: Readings diff --git a/docs/readings/available-tools.rst b/docs/readings/available-tools.rst index 175fd734..685b3d16 100644 --- a/docs/readings/available-tools.rst +++ b/docs/readings/available-tools.rst @@ -74,6 +74,8 @@ The PHP container is your workhorse and these are your tools: +----------------------+---------------------------------------+ | ``photon`` | |ext_lnk_tool_photon| | +----------------------+---------------------------------------+ +| ``pm2`` | |ext_lnk_tool_pm2| | ++----------------------+---------------------------------------+ | ``redis*`` | Various Redis client tools | +----------------------+---------------------------------------+ | ``sass`` | |ext_lnk_tool_sass| | diff --git a/docs/reverse-proxy/reverse-proxy-for-custom-docker.rst b/docs/reverse-proxy/reverse-proxy-for-custom-docker.rst new file mode 100644 index 00000000..5897fd3e --- /dev/null +++ b/docs/reverse-proxy/reverse-proxy-for-custom-docker.rst @@ -0,0 +1,263 @@ +.. include:: /_includes/all.rst + +.. _reverse_proxy_with_custom_docker: + +******************************* +Reverse Proxy for custom Docker +******************************* + + +Imagine you have added a custom service container to the Devilbox which has a project that +is available via http on a very specific port in that container. + +You do not want to expose this port to the host system, but rather want to make it available +via the bundled web server and also be able to see it on the Devilbox intranet vhost section. + +Additionally you want the project to make use of the same DNS naming scheme and also have HTTPS +for it. + +You can easily achieve this by setting up a reverse proxy for it. + + +.. seealso:: :ref:`add_your_own_docker_image` + + +**Table of Contents** + +.. contents:: :local: + + +Walkthrough +=========== + +Assumption +---------- + +Let's imagine you have added a custom Python Docker image to the Devilbox which starts up a Django +application listening on port ``3000``. + +* :ref:`env_TLD_SUFFIX`: ``loc`` +* Desired DNS name: ``my-pthon.loc`` +* :ref:`env_httpd_datadir` on the host: ``./data/www`` +* :ref:`env_httpd_template_dir`: ``.devilbox`` +* Listening port: ``3000`` +* Listening host: ``python`` (hostname of the Python container) + + +Create *virtual* directory +-------------------------- + +In order to create a reverse proxy for that custom container, you must add a *virtual* project +directory without any data in it. This directory is purely for the purpose of determining the +DNS name and for having the vhost-gen configuration in. + +Navigate to the :ref:`env_httpd_datadir` directory and create your project + +.. code-block:: bash + + host> cd /path/to/devilbox + host> cd /path/to/devilbox/data/www + + # Create the project directory + host> mkdir my-python + + # Create the htdocs directory (to have a valid project for the Intranet page) + host> mkdir my-python/htdocs + + + # Create the vhost-gen directory (to be apply to apply custom templates) + host> mkdir my-python/.devilbox + +This part is now sufficient to have the project visible on the Devilbox intranet. + + +Copy vhost-gen templates +------------------------ + +The reverse vhost-gen templates are available in ``cfg/vhost-gen``: + +.. code-block:: bash + :emphasize-lines: 4,6,8 + + host> tree -L 1 cfg/vhost-gen/ + + cfg/vhost-gen/ + β”œβ”€β”€ apache22.yml-example-rproxy + β”œβ”€β”€ apache22.yml-example-vhost + β”œβ”€β”€ apache24.yml-example-rproxy + β”œβ”€β”€ apache24.yml-example-vhost + β”œβ”€β”€ nginx.yml-example-rproxy + β”œβ”€β”€ nginx.yml-example-vhost + └── README.md + + 0 directories, 7 files + +For this example we will copy all ``*-example-rproxy`` files into ``/shared/httpd/my-python/.devilbox`` +to ensure this will work with all web servers. + +.. code-block:: bash + + host> cd /path/to/devilbox + host> cp cfg/vhost-gen/apache22.yml-example-rproxy data/www/my-python/.devilbox/apache22.yml + host> cp cfg/vhost-gen/apache24.yml-example-rproxy data/www/my-python/.devilbox/apache24.yml + host> cp cfg/vhost-gen/nginx.yml-example-rproxy data/www/my-python/.devilbox/nginx.yml + + +Adjust port +----------- + +By default, all vhost-gen templates will forward requests to port ``8000`` into the PHP container. +Our current example however uses port ``3000`` and host ``python``, so we must change that accordingly for all three +templates. + +Adjust Apache 2.2 template +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Open the ``apache22.yml`` vhost-gen template in your project: + +.. code-block:: bash + + host> cd /path/to/devilbox + host> vi data/www/my-python/.devilbox/apache22.yml + +Find the two lines with ``ProxyPass`` and ``ProxyPassReverse`` and change the port from ``8000`` +to ``3000`` and host ``php`` to ``python``: + +.. code-block:: yaml + :caption: data/www/my-python/.devilbox/apache22.yml + :emphasize-lines: 16,17 + + # ... more lines above ... # + + ### + ### Basic vHost skeleton + ### + vhost: | + + ServerName __VHOST_NAME__ + + CustomLog "__ACCESS_LOG__" combined + ErrorLog "__ERROR_LOG__" + + # Reverse Proxy definition (Ensure to adjust the port, currently '8000') + ProxyRequests On + ProxyPreserveHost On + ProxyPass / http://python:3000/ + ProxyPassReverse / http://python:3000/ + + # ... more lines below ... # + +Adjust Apache 2.4 template +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Open the ``apache24.yml`` vhost-gen template in your project: + +.. code-block:: bash + + host> cd /path/to/devilbox + host> vi data/www/my-python/.devilbox/apache24.yml + +Find the two lines with ``ProxyPass`` and ``ProxyPassReverse`` and change the port from ``8000`` +to ``3000`` and host ``php`` to ``python``: + +.. code-block:: yaml + :caption: data/www/my-python/.devilbox/apache24.yml + :emphasize-lines: 16,17 + + # ... more lines above ... # + + ### + ### Basic vHost skeleton + ### + vhost: | + + ServerName __VHOST_NAME__ + + CustomLog "__ACCESS_LOG__" combined + ErrorLog "__ERROR_LOG__" + + # Reverse Proxy definition (Ensure to adjust the port, currently '8000') + ProxyRequests On + ProxyPreserveHost On + ProxyPass / http://python:3000/ + ProxyPassReverse / http://python:3000/ + + # ... more lines below ... # + +Adjust Nginx template +^^^^^^^^^^^^^^^^^^^^^ + +Open the ``nginx.yml`` vhost-gen template in your project: + +.. code-block:: bash + + host> cd /path/to/devilbox + host> vi data/www/my-python/.devilbox/nginx.yml + +Find the line with ``proxy_pass`` and change the port from ``8000`` +to ``3000`` and host ``php`` to ``python``: + +.. code-block:: yaml + :caption: data/www/my-python/.devilbox/nginx.yml + :emphasize-lines: 18 + + # ... more lines above ... # + + ### + ### Basic vHost skeleton + ### + vhost: | + server { + listen __PORT____DEFAULT_VHOST__; + server_name __VHOST_NAME__; + + access_log "__ACCESS_LOG__" combined; + error_log "__ERROR_LOG__" warn; + + # Reverse Proxy definition (Ensure to adjust the port, currently '8000') + location / { + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_pass http://python:3000; + } + + # ... more lines below ... # + + + +Restart the Devilbox +-------------------- + +Now for the changes to take affect, simply restart the Devilbox (or start if not yet running): + + +.. code-block:: bash + + host> cd /path/to/devilbox + + # Stop the Devilbox + host> docker-compose stop + host> docker-compose rm -f + + # Start the Devilbox (Your Python container and the PHP and HTTPD container only) + host> docker-compose up -d php httpd bind python + + +Visit your project +------------------ + +That's it, your service application will now be available via: + +* http://my-python.loc + +It will also be available on HTTPS. This is by default and automatically: + +* https://my-python.loc + +.. seealso:: :ref:`setup_valid_https` + + +And is even shown as a project in the Devilbox intranet: + +* http://localhost/vhosts.php +* https://localhost/vhosts.php diff --git a/docs/reverse-proxy/reverse-proxy-with-https.rst b/docs/reverse-proxy/reverse-proxy-with-https.rst new file mode 100644 index 00000000..008d8688 --- /dev/null +++ b/docs/reverse-proxy/reverse-proxy-with-https.rst @@ -0,0 +1,250 @@ +.. include:: /_includes/all.rst + +.. _reverse_proxy_with_https: + +************************ +Reverse Proxy with HTTPS +************************ + +Imagine you have started an application within the PHP container that creates a listening port +(e.g.: NodeJS). This will now only listen on the PHP container and you would have to adjust +the docker-compose.yml definition in order to have that port available outside to your host OS. + +Alternatively, there is a simple way to reverse proxy it to the already running web server and even +make use of the available HTTPS feature. + +.. seealso:: + **Read more about how to autostart applications:** + + * :ref:`custom_scripts_per_php_version` (individually for different PHP versions) + * :ref:`custom_scripts_globally` (equal for all PHP versions) + + +**Table of Contents** + +.. contents:: :local: + + +Walkthrough +=========== + +Assumption +---------- + +Let's imagine you have started an application in the PHP container with the following settings: + +* :ref:`env_TLD_SUFFIX`: ``loc`` +* :ref:`getting_started_directory_overview_project_directory` inside PHP container: ``/shared/httpd/my-app`` +* :ref:`env_httpd_datadir` on the host: ``./data/www`` +* :ref:`env_httpd_template_dir`: ``.devilbox`` +* Listening port: ``8081`` +* Listening host: ``php`` (any of the PHP container) +* Resulting vhost name: ``my-app.loc`` + + +Copy vhost-gen templates +------------------------ + +The reverse vhost-gen templates are available in ``cfg/vhost-gen``: + +.. code-block:: bash + :emphasize-lines: 4,6,8 + + host> tree -L 1 cfg/vhost-gen/ + + cfg/vhost-gen/ + β”œβ”€β”€ apache22.yml-example-rproxy + β”œβ”€β”€ apache22.yml-example-vhost + β”œβ”€β”€ apache24.yml-example-rproxy + β”œβ”€β”€ apache24.yml-example-vhost + β”œβ”€β”€ nginx.yml-example-rproxy + β”œβ”€β”€ nginx.yml-example-vhost + └── README.md + + 0 directories, 7 files + +For this example we will copy all ``*-example-rproxy`` files into ``/shared/httpd/my-app/.devilbox`` +to ensure this will work with all web servers. + +.. code-block:: bash + + host> cd /path/to/devilbox + host> cp cfg/vhost-gen/apache22.yml-example-rproxy data/www/my-app/.devilbox/apache22.yml + host> cp cfg/vhost-gen/apache24.yml-example-rproxy data/www/my-app/.devilbox/apache24.yml + host> cp cfg/vhost-gen/nginx.yml-example-rproxy data/www/my-app/.devilbox/nginx.yml + + +Adjust port +----------- + +By default, all vhost-gen templates will forward requests to port ``8000`` into the PHP container. +Our current example however uses port ``8081``, so we must change that accordingly for all three +templates. + +Adjust Apache 2.2 template +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Open the ``apache22.yml`` vhost-gen template in your project: + +.. code-block:: bash + + host> cd /path/to/devilbox + host> vi data/www/my-app/.devilbox/apache22.yml + + +Find the two lines with ``ProxyPass`` and ``ProxyPassReverse`` and change the port from ``8000`` +to ``8081`` + +.. code-block:: yaml + :caption: data/www/my-app/.devilbox/apache22.yml + :emphasize-lines: 16,17 + + # ... more lines above ... # + + ### + ### Basic vHost skeleton + ### + vhost: | + + ServerName __VHOST_NAME__ + + CustomLog "__ACCESS_LOG__" combined + ErrorLog "__ERROR_LOG__" + + # Reverse Proxy definition (Ensure to adjust the port, currently '8000') + ProxyRequests On + ProxyPreserveHost On + ProxyPass / http://php:8081/ + ProxyPassReverse / http://php:8081/ + + # ... more lines below ... # + +Adjust Apache 2.4 template +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Open the ``apache24.yml`` vhost-gen template in your project: + +.. code-block:: bash + + host> cd /path/to/devilbox + host> vi data/www/my-app/.devilbox/apache24.yml + + +Find the two lines with ``ProxyPass`` and ``ProxyPassReverse`` and change the port from ``8000`` +to ``8081`` + +.. code-block:: yaml + :caption: data/www/my-app/.devilbox/apache24.yml + :emphasize-lines: 16,17 + + # ... more lines above ... # + + ### + ### Basic vHost skeleton + ### + vhost: | + + ServerName __VHOST_NAME__ + + CustomLog "__ACCESS_LOG__" combined + ErrorLog "__ERROR_LOG__" + + # Reverse Proxy definition (Ensure to adjust the port, currently '8000') + ProxyRequests On + ProxyPreserveHost On + ProxyPass / http://php:8081/ + ProxyPassReverse / http://php:8081/ + + # ... more lines below ... # + +Adjust Nginx template +^^^^^^^^^^^^^^^^^^^^^ + +Open the ``nginx.yml`` vhost-gen template in your project: + +.. code-block:: bash + + host> cd /path/to/devilbox + host> vi data/www/my-app/.devilbox/nginx.yml + + +Find the lines with ``proxy_pass`` and change the port from ``8000`` to ``8081`` + +.. code-block:: yaml + :caption: data/www/my-app/.devilbox/nginx.yml + :emphasize-lines: 18 + + # ... more lines above ... # + + ### + ### Basic vHost skeleton + ### + vhost: | + server { + listen __PORT____DEFAULT_VHOST__; + server_name __VHOST_NAME__; + + access_log "__ACCESS_LOG__" combined; + error_log "__ERROR_LOG__" warn; + + # Reverse Proxy definition (Ensure to adjust the port, currently '8000') + location / { + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_pass http://php:8081; + } + + # ... more lines below ... # + + + +Restart the Devilbox +-------------------- + +Now for the changes to take affect, simply restart the Devilbox (or start if not yet running): + + +.. code-block:: bash + + host> cd /path/to/devilbox + + # Stop the Devilbox + host> docker-compose stop + host> docker-compose rm -f + + # Start the Devilbox (PHP and HTTPD container only) + host> docker-compose up -d php httpd bind + + +Start your application +---------------------- + +Enter the PHP container and start your application which creates the listening port in port ``8081``. + + +.. seealso:: + This can also be automated to happen automatically during ``docker-compose up`` via: + + * :ref:`custom_scripts_per_php_version` (individually for different PHP versions) + * :ref:`custom_scripts_globally` (equal for all PHP versions) + * Example: :ref:`autostarting_nodejs_apps` + + +Visit your project +------------------ + +That's it, your service application will now be available via: + +* http://my-app.loc + +It will also be available on HTTPS. This is by default and automatically: + +* https://my-app.loc + +.. seealso:: :ref:`setup_valid_https` + + +And is even shown as a project in the Devilbox intranet: + +* http://localhost/vhosts.php +* https://localhost/vhosts.php diff --git a/docs/support/blogs-videos-and-use-cases.rst b/docs/support/blogs-videos-and-use-cases.rst index 46f660f4..498b6dbd 100644 --- a/docs/support/blogs-videos-and-use-cases.rst +++ b/docs/support/blogs-videos-and-use-cases.rst @@ -6,6 +6,11 @@ Blogs, Videos and Use-cases *************************** +**Table of Contents** + +.. contents:: :local: + + Official videos =============== @@ -16,6 +21,18 @@ even if the intranet UI has changed a bit. .. include:: /_includes/figures/blogs/youtube-email-catch-all.rst +Conferences +=========== + +DrupalCamp Ghent 2018 +--------------------- + +Simple local development with Devilbox: + +* |ext_lnk_blog_drupalcamp_ghent_2018_presentation| +* |ext_lnk_blog_drupalcamp_ghent_2018_slides| + + Blog posts ========== diff --git a/docs/vhost-gen/virtual-host-templates.rst b/docs/vhost-gen/virtual-host-templates.rst index 9b0b937c..1c626e4e 100644 --- a/docs/vhost-gen/virtual-host-templates.rst +++ b/docs/vhost-gen/virtual-host-templates.rst @@ -33,7 +33,18 @@ By default, vhost-gen templates are located within the Devilbox root directory u The templates file names are suffixed with ``-example-`` and are absolutely identical to what is shipped inside each Devilbox web server Docker container. +.. note:: + Also note that nginx stable and nginx mainline share the same template as their configuration + syntax is identical. + +Normal virtual host +^^^^^^^^^^^^^^^^^^^ + +All template files ending by ``-example-vhost`` can be used to customize a normal file serving +virtual host. + .. code-block:: bash + :emphasize-lines: 5,7,9 host> tree -L 1 cfg/vhost-gen/ @@ -48,9 +59,27 @@ shipped inside each Devilbox web server Docker container. 0 directories, 7 files -.. note:: - Also note that nginx stable and nginx mainline share the same template as their configuration - syntax is identical. +Reverse proxy +^^^^^^^^^^^^^ + +All template files ending by ``-example-rproxy`` can be used to create a reverse proxy for your +project. + +.. code-block:: bash + :emphasize-lines: 4,6,8 + + host> tree -L 1 cfg/vhost-gen/ + + cfg/vhost-gen/ + β”œβ”€β”€ apache22.yml-example-rproxy + β”œβ”€β”€ apache22.yml-example-vhost + β”œβ”€β”€ apache24.yml-example-rproxy + β”œβ”€β”€ apache24.yml-example-vhost + β”œβ”€β”€ nginx.yml-example-rproxy + β”œβ”€β”€ nginx.yml-example-vhost + └── README.md + + 0 directories, 7 files Template sections ----------------- @@ -81,7 +110,7 @@ Apache 2.2 template ------------------- .. literalinclude:: ../../cfg/vhost-gen/apache22.yml-example-vhost - :caption: apache22.yml + :caption: apache22.yml-example-vhost :language: yaml @@ -89,7 +118,7 @@ Apache 2.4 template ------------------- .. literalinclude:: ../../cfg/vhost-gen/apache24.yml-example-vhost - :caption: apache24.yml + :caption: apache24.yml-example-vhost :language: yaml @@ -97,7 +126,7 @@ Nginx template -------------- .. literalinclude:: ../../cfg/vhost-gen/nginx.yml-example-vhost - :caption: nginx.yml + :caption: nginx.yml-example-vhost :language: yaml @@ -107,25 +136,36 @@ Reverse proxy Templates These templates can be used to change a normal vhost into a reverse proxy project. This might be useful if you use NodeJs applications for example. +.. important:: Do not apply those templates globally. They are intended to be used on a per project base. + +.. note:: + In order to use the Reverse Proxy templates you will only need to adjust the listening port, + everything else will work as already defined. So you simply need to copy those files into + your project directory. Lines that need to be changed are marked below. The currently set default + listening port is ``8000``. + Apache 2.2 template ------------------- .. literalinclude:: ../../cfg/vhost-gen/apache22.yml-example-rproxy - :caption: apache22.yml + :caption: apache22.yml-example-rproxy :language: yaml + :emphasize-lines: 51,52 Apache 2.4 template ------------------- .. literalinclude:: ../../cfg/vhost-gen/apache24.yml-example-rproxy - :caption: apache24.yml + :caption: apache24.yml-example-rproxy :language: yaml + :emphasize-lines: 51,52 Nginx template -------------- .. literalinclude:: ../../cfg/vhost-gen/nginx.yml-example-rproxy - :caption: nginx.yml + :caption: nginx.yml-example-rproxy :language: yaml + :emphasize-lines: 53 diff --git a/docs/vhost-gen/virtual-host-vs-reverse-proxy.rst b/docs/vhost-gen/virtual-host-vs-reverse-proxy.rst new file mode 100644 index 00000000..96d3724f --- /dev/null +++ b/docs/vhost-gen/virtual-host-vs-reverse-proxy.rst @@ -0,0 +1,61 @@ +.. _vhost_gen_virtual_host_vs_reverse_proxy: + +***************************** +Virtual host vs Reverse Proxy +***************************** + +.. note:: + Ensure you have read :ref:`vhost_gen_virtual_host_templates` + + +**Table of Contents** + +.. contents:: :local: + + +Motivation +========== + +By default, all virtual hosts will simply serve files located in your document root directory within +your project directory. Sometimes however your *project* is already its own server that will serve +requests through a listening network port. (e.g. a running NodeJS application). +This listening port will however only be available inside the PHP container (or any other container) +you have added to the Devilbox and the webserver is not aware of this. + +For this kind of project you will want to create a reverse proxy which simply forwards the requests +incoming to the webserver to your application (either to the PHP container to a specific port or +to any other container you have attached). + + +Benefits +======== + +By using the already available web server to reverse proxy requests to your service you will be +able to have all the current features for you application such as: + +* Have it displayed in the intranet page +* Have standardized domain names +* Have valid HTTPS + + +Creating a reverse proxy +======================== + +Creating a reverse proxy is as simply as copying the ``vhost-gen`` templates to your project +directory. + +In order to make your life simple there are a few generic docs that get you started and let you +know more about the theory behind it: + +.. seealso:: + + * :ref:`reverse_proxy_with_https` + * :ref:`reverse_proxy_with_custom_docker` + +If this is too generic you can also have a look at two specific examples to setup fully automated +Reverse Proxies including autostarting your application on ``docker-compose up``. + +.. seealso:: + + * :ref:`example_setup_reverse_proxy_nodejs` + * :ref:`example_setup_reverse_proxy_sphinx_docs` From 3a3aec4d668dd20f92367c83283dd8f59b85e005 Mon Sep 17 00:00:00 2001 From: cytopia Date: Mon, 31 Dec 2018 13:41:57 +0100 Subject: [PATCH 24/24] Bump version --- .devilbox/www/config.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devilbox/www/config.php b/.devilbox/www/config.php index d8e6132c..d0b0419a 100644 --- a/.devilbox/www/config.php +++ b/.devilbox/www/config.php @@ -14,7 +14,7 @@ putenv('RES_OPTIONS=retrans:1 retry:1 timeout:1 attempts:1'); $DEVILBOX_VERSION = 'v0.15'; -$DEVILBOX_DATE = '2018-12-29'; +$DEVILBOX_DATE = '2018-12-31'; $DEVILBOX_API_PAGE = 'devilbox-api/status.json'; //