Skip to content

Instantly share code, notes, and snippets.

View tistre's full-sized avatar

Tim Strehle tistre

View GitHub Profile
@tistre
tistre / asset-ingestion.bpmn
Last active September 28, 2021 18:15
Simple Camunda example: Handling external tasks with PHP
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_0w41w6f" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.16.2">
<bpmn:process id="asset-ingestion" name="Asset Ingestion" isExecutable="true">
<bpmn:startEvent id="StartEvent_1" name="Asset to be ingested">
<bpmn:outgoing>SequenceFlow_16kf6eb</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:sequenceFlow id="SequenceFlow_16kf6eb" sourceRef="StartEvent_1" targetRef="extract-metadata" />
<bpmn:serviceTask id="extract-metadata" name="Extract metadata" camunda:type="external" camunda:topic="asset-extract-metadata">
<bpmn:incoming>SequenceFlow_16kf6eb</bpmn:incoming>
<?php
namespace App\Command;
use App\Module\ModuleList;
use \Exception;
use App\Event\ElvisJob;
use App\Queue\ElvisJobQueue;
use App\Queue\QueueServerConfig;
use Psr\Log\LoggerInterface;
@tistre
tistre / googlemaps_demo.js
Last active February 16, 2017 14:16
Google Maps demo for Tim’s simple JavaScript component test, see https://www.strehle.de/tim/weblog/archives/2014/02/19/1694
/* Namespace */
var DCX = DCX || { };
DCX.Ui = DCX.Ui || { };
DCX.Ui.Model = DCX.Ui.Model || { };
DCX.Ui.View = DCX.Ui.View || { };
DCX.Ui.Controller = DCX.Ui.Controller || { };
DCX.Ui.Service = DCX.Ui.Service || { };
@tistre
tistre / js-component-demo-dcc-components.js
Created February 16, 2017 12:59
Simplistic JavaScript component architecture demo
/* A sample "Die" component using the "library" */
/**
* Create a "Die" component instance
*
* Creates an anonymous object you can only interact with using events.
*
* @param object config componentConfig.config object from the component JSON data
* @constructor
@tistre
tistre / intldateformatter_error_handling.php
Last active December 7, 2015 12:23
Lack of error handling in IntlDateFormatter::localtime()
<?php
// Correct input value:
// $value = 'Wednesday, December 18, 2014 4:05:06 PM PT';
// Wrong input value that I suppose should rather return false:
$value = 'XXX';
$formatter = new IntlDateFormatter
(
@tistre
tistre / planetdam_easyrdf_demo.php
Created July 10, 2015 06:48
Minimal example for parsing planetdam.org RDF/XML using EasyRDF
<?php
/*
Minimal example for parsing http://planetdam.org article list RDF/XML
using http://www.easyrdf.org
1) Install Composer, see http://www.easyrdf.org/docs/getting-started :
curl -s https://getcomposer.org/installer | php
@tistre
tistre / charcheck.php
Created May 29, 2015 11:03
Check files for Unicode U+00A0 No-Break Space
<?php
// Find invisible non-breaking spaces in source code
// which can cause errors in PHP and JavaScript.
//
// see: http://www.strehle.de/tim/weblog/archives/2013/02/26/1563
//
// Usage:
// php charcheck.php path/to/*.php
// or:
@tistre
tistre / test.js
Last active August 29, 2015 14:11
How I do private and public in JavaScript. No “this”, no “new”! Drawback compared to .prototype: Objects hold copies of functions.
// Factory function
var Greeter = function(config)
{
// Hold public and private variables and functions in two objects:
var _public = { };
var _private = { };
// Storing "constructor" parameters in a private variable
@tistre
tistre / ie_upload.php
Last active August 29, 2015 14:10
Internet Explorer 9 and 10 do not submit the form if a file input click has been triggered
<html>
<head>
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
</head>
<body>
<?php
if ($_SERVER[ 'REQUEST_METHOD' ] === 'POST')
{
if (isset($_FILES[ 'file' ]) && isset($_FILES[ 'file' ][ 'tmp_name' ]) && is_uploaded_file($_FILES[ 'file' ][ 'tmp_name' ]))
@tistre
tistre / gist:575ef1f0220097c7a585
Last active August 29, 2015 14:04
jQuery.Deferred(): If an array contains promises, replace them with the real value once resolved
// Usage:
// resolvePromisesInArray(values_with_promises).then(function(values_resolved)
// { console.log(values_resolved); });
function resolvePromisesInArray(values)
{
var deferred, deferred_values;
if (! $.isArray(values))
{