
Supponiamo di dover interagire con le tabelle del database dove risiede la nostra installazione di Drupal, però siamo costretti a farlo fuori dal’ambiente del CMF. Lo possiamo fare sfruttando l’abstraction layer chiamato DBTNG.
Ci basta includere le librerie necessarie:
<?php /** * Drupal 8 */ // Bring in the Composer autoloader. require_once __DIR__ . '/../vendor/autoload.php'; // Bring in the DBTNG procerural wrappers. // @see https://wiki.php.net/rfc/function_autoloading require_once __DIR__ . '/../core/includes/database.inc'; // Finally load DBTNG configuration. require_once __DIR__ . '/config/settings.php';
Anche per Drupal 7 è possibile semplicemente includendo due file:
<?php
/**
* Drupal 7
*/
define('DRUPAL_ROOT', getcwd());
require_once DRUPAL_ROOT . '/includes/database/database.inc';
require_once DRUPAL_ROOT . '/sites/default/settings.php';
A questo punto siamo liberi di utilizzare le funzioni che ben conosciamo per fare il CRUD sul database. Un esempio per tutti anche se ce ne sono migliaia:
/* Standalone DBTNG outside Drupal */
$columns = array(
'collection',
'name',
'value',
);
// DBTNG FTW !
$result = db_select('key_value', 'kv')
->fields('kv', $columns)
->condition('kv.collection', 'system.schema')
->range(0, 10)
->execute();
foreach ($result as $v) {
$v = (array) $v;
$value = print_r(unserialize($v['value']), true);
printf("%-32s %-32s %s\n", $v['collection'], $v['name'], $value);
}