Skip to content

Instantly share code, notes, and snippets.

View ostark's full-sized avatar

Oliver Stark ostark

  • Berlin area, countryside
View GitHub Profile
@ostark
ostark / TerminationSignals.php
Last active February 11, 2024 16:37
Better signal handling for long running Jobs in Craft
<?php
class TerminationSignals extends \yii\base\Module
{
public function init()
{
parent::init();
// Listen to SIGTERM
@ostark
ostark / NoFields.php
Created February 10, 2021 21:09
lightweight entry queries without custom fields
<?php
namespace modules;
class NoFields extends \craft\services\Fields
{
public function getAllFields($context = null): array
{
return [];
}
@ostark
ostark / sql.md
Last active December 10, 2020 11:20
CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name JSON NOT NULL
);   

INSERT INTO products (name) VALUES('{"en": "Traffic lights", "de": "Verkehrsampel", "nl": "Stoplichten"}');
INSERT INTO products (name) VALUES('{"en": "Car", "de": "Auto", "nl": "Wagen"}');
INSERT INTO products (name) VALUES('{"en": "Bike", "de": "Fahrrad", "nl": "Fietsen"}');
INSERT INTO products (name) VALUES('{"en": "Airplane", "de": "Flugzeug", "nl": "Vliegtuig"}');
<?php
# Run this script once a day via cron
# to persist apache_access.log.1.gz log in ./storage/logs/
$src = '../logs/apache_access.log.1.gz';
$dest_dir = './storage/logs/';
$dest_prefix = 'apache_access.';
$dest_file = $dest_dir . $dest_prefix . date("Y-m-d", strtotime("yesterday")).'.log.gz';
$keep_max_files = 10;
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Laravel\Passport\Passport;
class PassportKeysCommand extends Command
{
const MAP = [
@ostark
ostark / EventCatcher.php
Created September 27, 2018 16:56
A wildcard event handler that logs all Yii/Craft events
class EventCatcher
{
/**
* @var array
*/
protected $classConstants = [];
public function __invoke(yii\base\Event $event)
{
@ostark
ostark / make-auth-json.php
Last active April 16, 2022 10:12
Creates auth.json from ENV vars
<?php
/**
* Example: Oauth with Github token
* php make-auth-json.php github-oauth.github.com GITHUB_TOKEN
*
* Example: Basic auth for private satis repo
* php make-auth-json.php http-basic.nova.laravel.com NOVA_USERNAME NOVA_PASSWORD
*/
// remove script name
@ostark
ostark / tree.txt
Last active March 21, 2018 13:29
Craft cpresources
web/cpresources
├── 016a4edfe03d2d869433f50aa5c5f39f
│   ├── EntryDraftEditor.js
│   ├── EntryDraftEditor.min.js
│   ├── EntryDraftEditor.min.js.map
│   ├── EntryTypeSwitcher.js
│   ├── EntryTypeSwitcher.min.js
│   ├── EntryTypeSwitcher.min.js.map
│   ├── entry.css
│   ├── entry.css.map
@ostark
ostark / cloudflareWhitelistUpdate.php
Last active April 15, 2019 06:40
Updates the .htaccess with the recent ClouldFlare IPs
<?php
# Exec during deployment
# php cloudflareWhitelistUpdate.php public/.htaccess
$srcUrls = [
'https://www.cloudflare.com/ips-v4',
'https://www.cloudflare.com/ips-v6'
];
$htacessFile = $argv[1] ?? '.htaccess';
@ostark
ostark / app.php
Created September 11, 2017 10:22
Craft 3 - Events - config/app.php
<?php
// VIEW EVENTS
$elements = [];
yii\base\Event::on(\craft\elements\db\ElementQuery::class, \craft\elements\db\ElementQuery::EVENT_AFTER_POPULATE_ELEMENT, function ($event) use (&$elements) {
// Don't collect MatrixBlock and User elements for now
if (in_array(get_class($event->element),['craft\elements\User', 'craft\elements\MatrixBlock'])) {
return;
}