mirror of
https://github.com/vrana/adminer.git
synced 2025-08-06 14:46:36 +02:00
Plugins: Autoload plugins in adminer-plugins/
This commit is contained in:
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,4 +1,8 @@
|
||||
/adminer/adminer.css
|
||||
/adminer/adminer-dark.css
|
||||
/editor/adminer.css
|
||||
/editor/adminer-dark.css
|
||||
/adminer*.php
|
||||
/editor*.php
|
||||
/vendor/
|
||||
adminer-plugins/
|
||||
|
@@ -5,6 +5,8 @@
|
||||
- CSS: Sticky table headers (bug #918)
|
||||
- CSS: Allow more custom styles with dark mode (bug #925)
|
||||
- IMAP: New plugin driver created for fun
|
||||
- Plugins: autoload plugins from adminer-plugins/
|
||||
- Plugins: configure plugins with adminer-plugins/config.php
|
||||
|
||||
## Adminer 5.0.6 (released 2025-03-17)
|
||||
- Align numbers right (bug #912)
|
||||
|
30
README.md
30
README.md
@@ -1,7 +1,8 @@
|
||||
# Adminer
|
||||
|
||||
**Adminer** is a full-featured database management tool written in PHP. It consists of a single file ready to deploy
|
||||
to the target server. **Adminer Editor** offers data manipulation for end-users.
|
||||
**Adminer** is a full-featured database management tool written in PHP.
|
||||
It consists of a single file ready to deploy to the target server.
|
||||
**Adminer Editor** offers data manipulation for end-users.
|
||||
|
||||
https://www.adminer.org/
|
||||
|
||||
@@ -18,11 +19,32 @@ If downloaded from Git then run: `git submodule update --init`
|
||||
- `adminer/index.php` - Run development version of Adminer
|
||||
- `editor/index.php` - Run development version of Adminer Editor
|
||||
- `editor/example.php` - Example customization
|
||||
- `plugins/readme.txt` - Plugins for Adminer and Adminer Editor
|
||||
- `adminer/plugin.php` - Plugin demo
|
||||
- `adminer/sqlite.php` - Development version of Adminer with SQLite allowed
|
||||
- `editor/sqlite.php` - Development version of Editor with SQLite allowed
|
||||
- `adminer/designs.php` - Development version of Adminer with `adminer.css` switcher
|
||||
- `compile.php` - Create a single file version
|
||||
- `lang.php` - Update translations
|
||||
- `tests/*.html` - Katalon Recorder test suites
|
||||
|
||||
## Plugins
|
||||
There are [several plugins](plugins/) distributed with Adminer and there are also many user-contributed plugins linked from https://www.adminer.org/plugins/.
|
||||
To use a plugin, simply upload it to `adminer-plugins/` next to `adminer.php`.
|
||||
|
||||
```
|
||||
- adminer.php
|
||||
- adminer-plugins
|
||||
- config.php
|
||||
- dump-xml.php
|
||||
- login-password-less.php
|
||||
```
|
||||
|
||||
Some plugins require configuration. To use them, you need to create another file in `adminer-plugins/`:
|
||||
|
||||
```php
|
||||
<?php // config.php
|
||||
require_once __DIR__ . "/login-password-less.php";
|
||||
|
||||
return array(
|
||||
new AdminerLoginPasswordLess('$2y$07$Czp9G/aLi3AnaUqpvkF05OHO1LMizrAgMLvnaOdvQovHaRv28XDhG'),
|
||||
);
|
||||
```
|
||||
|
@@ -77,7 +77,16 @@ include "../adminer/drivers/pgsql.inc.php";
|
||||
include "../adminer/drivers/oracle.inc.php";
|
||||
include "../adminer/drivers/mssql.inc.php";
|
||||
include "./include/adminer.inc.php";
|
||||
$adminer = (function_exists('adminer_object') ? adminer_object() : new Adminer);
|
||||
|
||||
if (function_exists('adminer_object')) {
|
||||
$adminer = adminer_object();
|
||||
} elseif (file_exists("adminer-plugins/")) {
|
||||
include "./include/plugins.inc.php";
|
||||
$adminer = new Plugins(null);
|
||||
} else {
|
||||
$adminer = new Adminer;
|
||||
}
|
||||
|
||||
// this is matched by compile.php
|
||||
include "../adminer/drivers/mysql.inc.php"; // must be included as last driver
|
||||
|
||||
|
@@ -1,18 +1,29 @@
|
||||
<?php
|
||||
namespace Adminer;
|
||||
|
||||
/** Adminer customization allowing usage of plugins
|
||||
* @link https://www.adminer.org/plugins/#use
|
||||
* @author Jakub Vrana, https://www.vrana.cz/
|
||||
* @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 AdminerPlugin extends Adminer\Adminer {
|
||||
class Plugins extends Adminer {
|
||||
protected $plugins;
|
||||
|
||||
/** Register plugins
|
||||
* @param array object instances
|
||||
* @param array object instances or null to autoload plugins from adminer-plugins/
|
||||
*/
|
||||
function __construct($plugins) {
|
||||
if ($plugins === null) {
|
||||
$plugins = array();
|
||||
foreach (glob("adminer-plugins/*.php") as $filename) {
|
||||
$include = include_once "./$filename";
|
||||
if (is_array($include)) { // example: return array(new AdminerLoginOtp($secret))
|
||||
foreach ($include as $plugin) {
|
||||
$plugins[get_class($plugin)] = $plugin;
|
||||
}
|
||||
}
|
||||
}
|
||||
foreach (get_declared_classes() as $class) {
|
||||
if (!$plugins[$class] && preg_match('~^Adminer\w~i', $class)) {
|
||||
$plugins[$class] = new $class; // if the constructor have some required parameters then PHP triggers an error here
|
||||
}
|
||||
}
|
||||
}
|
||||
$this->plugins = $plugins;
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
<?php
|
||||
namespace Adminer;
|
||||
|
||||
$VERSION = "5.0.7-dev";
|
||||
$VERSION = "5.1.0-dev";
|
||||
|
@@ -1,44 +0,0 @@
|
||||
<?php
|
||||
function adminer_object() {
|
||||
// required to run any plugin
|
||||
include_once "../plugins/plugin.php";
|
||||
|
||||
// autoloader
|
||||
foreach (glob("../plugins/*.php") as $filename) {
|
||||
include_once $filename;
|
||||
}
|
||||
|
||||
// enable extra drivers just by including them
|
||||
//~ include "../plugins/drivers/simpledb.php";
|
||||
|
||||
$plugins = array(
|
||||
// specify enabled plugins here
|
||||
new AdminerDatabaseHide(array('information_schema')),
|
||||
new AdminerDumpJson,
|
||||
new AdminerDumpBz2,
|
||||
new AdminerDumpZip,
|
||||
new AdminerDumpXml,
|
||||
new AdminerDumpAlter,
|
||||
//~ new AdminerSqlLog("past-" . rtrim(`git describe --tags --abbrev=0`) . ".sql"),
|
||||
//~ new AdminerTinymce("../externals/tinymce/jscripts/tiny_mce/tiny_mce_dev.js"),
|
||||
new AdminerFileUpload(""),
|
||||
new AdminerJsonColumn,
|
||||
new AdminerSlugify,
|
||||
new AdminerTranslation,
|
||||
new AdminerForeignSystem,
|
||||
new AdminerEnumOption,
|
||||
new AdminerTablesFilter,
|
||||
new AdminerEditForeign,
|
||||
);
|
||||
|
||||
/* It is possible to combine customization and plugins:
|
||||
class AdminerCustomization extends AdminerPlugin {
|
||||
}
|
||||
return new AdminerCustomization($plugins);
|
||||
*/
|
||||
|
||||
return new AdminerPlugin($plugins);
|
||||
}
|
||||
|
||||
// include original Adminer or Adminer Editor (usually named adminer.php)
|
||||
include "./index.php";
|
@@ -1,2 +0,0 @@
|
||||
../adminer/plugin.php - demo usage
|
||||
https://www.adminer.org/plugins/ - documentation
|
1
todo.txt
1
todo.txt
@@ -8,7 +8,6 @@ Draggable columns in alter table (thanks to Michal Manak)
|
||||
<option class> for system databases and schemas - information_schema and driver-specific (thanks to Vaclav Novotny)
|
||||
Define foreign keys name - http://forum.zdrojak.root.cz/index.php?topic=185.msg1255#msg1255
|
||||
Skinnable plus.gif and other images - http://typo3.org/extensions/repository/view/t3adminer/current/
|
||||
Plugins autoloader: branch autoload; are there security risks?
|
||||
? Filter by value in row under <thead> in select
|
||||
? Column and table names auto-completion in SQL textarea - http://blog.quplo.com/2010/06/css-code-completion-in-your-browser/
|
||||
? Aliasing of built-in functions can save 7 KB, function minification can save 7 KB, substitution of repetitive $a["a"] can save 4 KB, substitution of $_GET and friends can save 2 KB, aliasing of $connection->query can save 24 B, JS Closure compiler can save 2 KB, not enclosing HTML attribute values can save 1.2 KB, replacing \\n by \n can save .3 KB
|
||||
|
Reference in New Issue
Block a user