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); }