Skip to content

Instantly share code, notes, and snippets.

Kris Wallsmith kriswallsmith

View GitHub Profile
View 01_example.php
<?php
class WidgetManager
{
private $em;
private $factory;
private $manipulator;
private $dispatcher;
public function __construct(ObjectManager $em, SnapshotFactory $factory, WidgetManipulator $manipulator, EventDispatcherInterface $dispatcher)
@kriswallsmith
kriswallsmith / 01_mixins_Secure.js
Last active Aug 29, 2015
My first bit of React code worth sharing.
View 01_mixins_Secure.js
var React = require('react');
var Router = require('react-router');
var SessionStore = require('../stores/SessionStore');
var Stash = require('../utils/Stash');
function authentication(transition) {
if (!SessionStore.isLoggedIn()) {
Stash.set('onLogin', transition.retry);
transition.redirect('login');
return false;
@kriswallsmith
kriswallsmith / gist:4e7ea1cb1ec83f5203e1
Last active Aug 29, 2015
These are the Neo4j Cypher queries Assetic would run
View gist:4e7ea1cb1ec83f5203e1
// what to recompile when as asset changes
MATCH (changed)<-[:INCLUDES*]-(recompile)
WHERE changed.source = "..." AND recompile.target <> NULL
RETURN recompile
// determine an asset's aggregate mtime
MATCH (root)-[:INCLUDES*]->(include)
WHERE root.source = "..."
RETURN max(collect(include.mtime) + root.mtime)
@kriswallsmith
kriswallsmith / default.vcl.erb
Created Feb 27, 2014
Here's a decent Chef workaround for Varnish's lack of support for ACL behind a proxy.
View default.vcl.erb
sub vcl_recv {
if (req.url ~ "(?i)^/admin" && req.http.x-forwarded-for !~ "\b(<%= @ips.map{ |ip| Regexp.escape(ip) }.join('|') %>)$") {
error 750 "Moved Temporarily";
}
}
sub vcl_error {
if (obj.status == 750) {
set obj.http.Location = "/";
set obj.status = 302;
@kriswallsmith
kriswallsmith / 01_before.php
Created Sep 10, 2013
I could really go for an array_index() function right now.
View 01_before.php
<?php
$widgets = array_combine(
array_map(
function($widget) {
return $widget->getId();
},
$widgets
),
$widgets
@kriswallsmith
kriswallsmith / test.php
Last active Dec 20, 2015
A test harness for your Symfony2 project. Runs functional tests in chunks.
View test.php
#!/usr/bin/env php
<?php
use Symfony\Component\Console\Application;
use Symfony\Component\Console\Input\ArrayInput as Input;
use Symfony\Component\Console\Input\InputOption as Option;
require_once __DIR__.'/../vendor/autoload.php';
/** Outputs and runs a command. */
@kriswallsmith
kriswallsmith / gist:5819198
Last active Dec 18, 2015
How do you walk a paginated API?
View gist:5819198
<?php
function walk($callback)
{
$page = 1;
do {
$results = fetch($page++, 100);
foreach ($results as $result) {
call_user_func($callback, $result);
@kriswallsmith
kriswallsmith / QSAListener.php
Created Aug 8, 2012
implements QSA on Symfony2 redirects
View QSAListener.php
<?php
use JMS\DiExtraBundle\Annotation as DI;
use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
/** @DI\Service */
class QSAListener
{
private $blacklist;
View RouteSecurityListener.php
<?php
namespace OpenSky\Bundle\MainBundle\Listener;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
use Symfony\Component\Security\Core\SecurityContextInterface;
/**
* Listens to kernel.request after the router and checks required role.
View 00_DefaultControllerTest.php
<?php
namespace Kris\JunkBundle\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class DefaultControllerTest extends WebTestCase
{
/**
* @dataProvider asdf
You can’t perform that action at this time.