Delete all tables in a MySQL database

Quick and dirty on linux based systems:

mysql -u$DB_USER -p$DB_PASS -D$DB_NAME -h$DB_HOST -e "show tables" -s   \
  | awk \
    -v DB_USER=$DB_USER \
    -v DB_PASS=$DB_PASS \
    -v DB_NAME=$DB_NAME \
    -v DB_HOST=$DB_HOST \
    '{ print "mysql -u"DB_USER" -p"DB_PASS" -D"DB_NAME" -h"DB_HOST" -e \"DROP TABLE "$1"\""}' \
  | sh

Repeating table headers in PDF downloads using headless chrome

For repeating table headers across pages when creating PDFs with puppeteer and headless chrome, use thead and these CSS declarations:

thead {
  display: table-header-group;
  break-inside: avoid;

Revert configuration from file based to database based

The D8 project I'm currently working on used the file-system based workflow for configuration management. As our deployment workflow improved and got slightly more complex, we started to run into issues with file permissions during deployments and wanted to revert back to the database based workflow that is the default for a new D8 installation.

Title of the current page manager page.

When trying to get the title of the current page manager panels page in Drupal 7 and drupal_get_title() isn't working, try this one:

$page = page_manager_get_current_page();
$page_title = $page['handler']->conf['display']->get_title();

Showcase: Art market

The last months I was busy with a friends art project. Today I'm very happy to announce that it went public on july 15th and is doing good so far.

Dynamically define blocks in Drupal 8 with derivatives

During the Drupal 8 port of my relatively new Mefibs module I realized that block creation in code got somewhat more complex than it used to be in Drupal 7 and earlier. It took me quite a while to figure out how this works, especially because there is not a lot of documentation for Drupal 8 yet. So I had to dig my way through core to see how it's done there and finally I got around it. The following is a comparison between how we used to do this in Drupal 7 and how it's done in Drupal 8.