Standalone DBTNG outside Drupal

Drupal

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

Rispondi