- MS SQL: Limit one INSERT in export to 1000 rows (bug #983)
- CSS: Add logo
- Editor: Move mass sending e-mails to a plugin
-- Plugins: Allow formatting translations using Adminer\lang_format()
+- Plugins: Support translations by extending Adminer\Plugin
- New plugin: Configure options by end-users and store them to a cookie
- New plugin: Configure menu table links
- New plugin: Set up driver, server and database in Adminer Editor
include "../adminer/drivers/mssql.inc.php";
include "./include/adminer.inc.php";
include "../adminer/include/plugins.inc.php";
+include "../adminer/include/plugin.inc.php";
-if (function_exists('adminer_object')) {
- Adminer::$instance = adminer_object();
-} elseif (is_dir("adminer-plugins") || file_exists("adminer-plugins.php")) {
- Adminer::$instance = new Plugins(null);
-} else {
- Adminer::$instance = new Adminer;
-}
+Adminer::$instance =
+ (function_exists('adminer_object') ? adminer_object() :
+ (is_dir("adminer-plugins") || file_exists("adminer-plugins.php") ? new Plugins(null) :
+ new Adminer
+));
// this is matched by compile.php
include "../adminer/drivers/mysql.inc.php"; // must be included as last driver
--- /dev/null
+<?php
+namespace Adminer;
+
+abstract class Plugin {
+ /** @var array<literal-string, string|list<string>>[] */ protected static $translations = array(); // key is language code
+
+ /** Translate a string from static::$translations; use Adminer\lang() for strings used by Adminer
+ * @param literal-string $idf
+ * @param float|string $number
+ */
+ protected function lang(string $idf, $number = null) {
+ $args = func_get_args();
+ $args[0] = idx(static::$translations[LANG], $idf) ?: $idf;
+ return call_user_func_array('Adminer\lang_format', $args);
+ }
+}
<?php
namespace Adminer;
-const VERSION = "5.1.2-dev";
+const VERSION = "5.2.0-dev";
* @license https://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* @license https://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
*/
-class AdminerConfig {
+class AdminerConfig extends Adminer\Plugin {
function headers() {
static $called; // this function is called from page_header() and it also calls page_header()
}
}
- protected function lang($idf, $number = null) {
- return Adminer\lang_format(Adminer\idx(self::$translations[Adminer\LANG], $idf) ?: $idf, $number);
- }
-
protected static $translations = array(
'cs' => array(
'Configuration' => 'Konfigurace',
* @license https://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* @license https://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
*/
-class AdminerMenuLinks {
+class AdminerMenuLinks extends Adminer\Plugin {
private $menu;
/** @param ''|'table'|'select'|'auto' $menu see config() for explanation */
return true;
}
- protected function lang($idf, $number = null) {
- return Adminer\lang_format(Adminer\idx(self::$translations[Adminer\LANG], $idf) ?: $idf, $number);
- }
-
protected static $translations = array(
'cs' => array(
'Menu table links' => 'Odkazy na tabulky v menu',
* @license https://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* @license https://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
*/
-class AdminerSelectEmail {
+class AdminerSelectEmail extends Adminer\Plugin {
function selectEmailPrint($emailFields, $columns) {
if ($emailFields) {
return mail($email, $this->emailHeader($subject), $beginning . $message . $attachments, $headers);
}
- private function lang($idf, $number = null) {
- return Adminer\lang_format(Adminer\idx(self::$translations[Adminer\LANG], $idf) ?: $idf, $number);
- }
-
- private static $translations = array(
+ protected static $translations = array(
'ar' => array('E-mail' => 'البريد الإلكتروني', 'From' => 'من', 'Subject' => 'الموضوع', 'Send' => 'إرسال', '%d e-mail(s) have been sent.' => 'تم إرسال %d رسالة.', 'Attachments' => 'ملفات مرفقة'),
'bg' => array('E-mail' => 'E-mail', 'From' => 'От', 'Subject' => 'Тема', 'Attachments' => 'Прикачени', 'Send' => 'Изпращане', '%d e-mail(s) have been sent.' => array('%d писмо беше изпратено.', '%d писма бяха изпратени.')),
'bn' => array('E-mail' => 'ই-মেইল', 'From' => 'থেকে', 'Subject' => 'বিষয়', 'Send' => 'পাঠান', '%d e-mail(s) have been sent.' => array('%d ইমেইল(গুলি) পাঠানো হয়েছে।', '%d ইমেইল(গুলি) পাঠানো হয়েছে।'), 'Attachments' => 'সংযুক্তিগুলো'),
* @license https://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* @license https://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
*/
-class AdminerSqlGemini {
+class AdminerSqlGemini extends Adminer\Plugin {
private $apiKey;
private $model;
<?php
}
- private function lang($idf, $number = null) {
- return Adminer\lang_format(Adminer\idx(self::$translations[Adminer\LANG], $idf) ?: $idf, $number);
- }
-
- private static $translations = array(
+ protected static $translations = array(
'cs' => array(
'Ask Gemini' => 'Zeptat se Gemini',
'Just a sec...' => 'Chviličku...',