Skip to content

Instantly share code, notes, and snippets.

View kevinquillen's full-sized avatar

Kevin kevinquillen

View GitHub Profile
@kevinquillen
kevinquillen / OpenNowCheckController.php
Last active July 12, 2018 19:15
Simple Controller in Drupal via Symfony, returns a JsonResponse cached for 30 seconds.
<?php
declare(strict_types = 1);
namespace Drupal\harlib_open_now\Controller;
use Drupal\Core\Controller\ControllerBase;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Drupal\Component\Serialization\Json;
<?php
/**
* Class ResourceNotFoundController.
*/
class ResourceNotFoundController extends ControllerBase {
/**
* Display the Resource Not Found message.
*
@kevinquillen
kevinquillen / SurpriseMeController.php
Created July 14, 2018 13:35
Fetch a random node by type and return it as a JSON response.
<?php
declare(strict_types = 1);
namespace Drupal\harlib_surprise_me\Controller;
use Drupal\Core\Controller\ControllerBase;
use Drupal\node\Entity\Node;
use Symfony\Component\HttpFoundation\JsonResponse;
@kevinquillen
kevinquillen / SurpriseMeController.php
Created July 14, 2018 13:35
Fetch a random node by type and return it as a JSON response.
<?php
declare(strict_types = 1);
namespace Drupal\harlib_surprise_me\Controller;
use Drupal\Core\Controller\ControllerBase;
use Drupal\node\Entity\Node;
use Symfony\Component\HttpFoundation\JsonResponse;
@kevinquillen
kevinquillen / prune.sh
Created July 24, 2018 14:06
Blow away branches that are older than a year.
#!/bin/sh
for branch in $(git branch -a | sed 's/^\s*//' | sed 's/^remotes\///' | grep -v 'master$'); do
if [[ "$(git log $branch --since "12 months ago" | wc -l)" -eq 0 ]]; then
# I have to do this because "git log" for me returns current directory contents... not sure why yet.
if [[ ${branch} == *".sh" ]]; then
continue
fi
local_branch_name=$(echo "$branch" | sed 's/remotes\/origin\///')
@kevinquillen
kevinquillen / replaceFieldTextTo.sql
Created July 10, 2017 17:38
Does a mass find+replace on Drupal field_*_value fields within tables - useful for when you need to replace a string in a huge amount of tables.
CREATE PROCEDURE replaceFieldTextTo (IN v_string_from VARCHAR(255), IN v_string_to VARCHAR(255))
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE table_name_value VARCHAR(64);
DECLARE column_name_value VARCHAR(64);
DECLARE cursor_fields CURSOR FOR SELECT TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE 'field_%_value';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cursor_fields;
@kevinquillen
kevinquillen / mymodule.module
Created January 5, 2019 15:25
Custom module for Drupal 7 defining a token for a custom field that stores its data in a `year` column (instead of `value`).
<?php
declare(strict_types = 1);
/**
* Implements hook_token_info().
*/
function mymodule_token_info() : array {
$info['tokens']['node']['custom_year'] = array(
'name' => t('Year Field Value'),
@kevinquillen
kevinquillen / SearchResults.php
Created September 6, 2016 16:58
Example of a Controller using SearchAPI to generate a results page (without Views).
<?php
namespace Drupal\velirsearch\Controller;
use Drupal\Core\Controller\ControllerBase;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\Request;
use Drupal\velirsearch\Service\PagerService;
class SearchResults extends ControllerBase {
@kevinquillen
kevinquillen / ssl.sh
Created January 25, 2019 15:36
Generate self signed cert for local docker dev with SAN for Chrome (example done on MacOS)
openssl req -newkey rsa:2048 -x509 -nodes -keyout cert.key -new -out cert.crt -subj /CN=*.docker.localhost -reqexts SAN -extensions SAN -config <(cat /etc/ssl/openssl.cnf <(printf '[SAN]\nsubjectAltName=DNS:*.docker.localhost')) -sha256 -days 3650
@kevinquillen
kevinquillen / gist:4235124
Created December 7, 2012 18:02
Adding menu names to the ul menus in Drupal 7
function themename_menu_link(&$variables) {
$element = $variables['element'];
$sub_menu = '';
$element['#attributes']['data-menu-parent'] = $element['#original_link']['menu_name'] . '-' . $element['#original_link']['depth'];
if ($element['#below']) {
$sub_menu = drupal_render($element['#below']);
}