Skip to content

Instantly share code, notes, and snippets.

GDmac / upload_example.php
Created Apr 1, 2019
composing objects and make methods and objects testable
View upload_example.php
require_once __DIR__ . '/../vendor/autoload.php';
$uploadHandler = new \Acme\FileUpload\UploadHandler();
->setTargetDirectory(__DIR__ . '/../uploads')
->addValidator(new JpegFileTypeValidator())
->addValidator(new maxFileSizeValidator(4096))
GDmac / rollyourown.php
Created Mar 27, 2019 — forked from mathiasverraes/rollyourown.php
We don't need no DIC libs / we don't need no deps control
View rollyourown.php
// Context: I'm trying to argue that DI (and DIC) are great, and DIC libs suck.
// Happy to be proven wrong!
final class Router {
private $dependencies;
public function __construct (Dependencies $dependencies) {
$this->dependencies = $dependencies;
// You might say that this is Service Locator, but it's not. This router is toplevel,
// and toplevel must have access to dependencies. After that it can all just bubble nicely using proper DI.
GDmac / pi.debug_override.php
Created Jun 22, 2014
Debug Override plugin, disable ExpressionEngine template debugging from a template
View pi.debug_override.php
$plugin_info = array(
'pi_name' => 'debug_override',
'pi_version' =>'1.0',
'pi_author' =>'GDmac',
'pi_author_url' => '',
'pi_description' => '',
'pi_usage' => '{exp:debug_override override="all|ajax"} default is override on ajax calls',
GDmac / hello.php
Created May 25, 2014
Simple request
View hello.php
$req = parse_url($_SERVER['REQUEST_URI']);
// querystring
isset($req['query']) ? parse_str($req['query'], $req['query_arr']) : $req['query_arr'] = array();
// route
$req['route'] = substr($_SERVER['PHP_SELF'], strlen($_SERVER['SCRIPT_NAME']));
GDmac /
Last active Aug 29, 2015
Protected Pages extension

ProtectedPages extension

Make sections of your site (template) accessible to members only.

Quick Setup

Create a template with a loginform and the processform tag. The form should at least provide username, password and action. e.g.:

GDmac /
Last active Aug 29, 2015
Mobile sharing buttons (app or website)

Sharing on the mobile platform

Many smartphone users (probably most) use dedicated apps for their social sharing. However, when clicking on a share button on websites, the user is redirected to the website instead of to the app for twitter and facebook. This document tries to offer an alternative route for sharing on mobile.

User story and technique

  1. When a user clicks the share button for the first time
    ask if he/she wants to use an app or to go to the website.
    Use local storage (jstorage) or cookies to store user preferences.
  2. When the user wants to use the app, use a small script to verify
View pi.example_plugin.php
$plugin_info = array(
'pi_name' => 'example_plugin',
'pi_version' => '0.1',
'pi_author' => 'John Doe',
'pi_author_url' => '',
'pi_description' => '',
'pi_usage' => '',
View pi.admin_edit_link.php
GDmac / database_DB_driver.php
Last active Dec 29, 2015
Codeigniter profiler, where are the queries coming from ?
View database_DB_driver.php
// from
// adapted for codeigniter
// database/DB_driver.php method query()
// Save the query for debugging
if ($this->save_queries == TRUE)
$this->queries[] = $sql . "\n# ".get_caller_info();
GDmac / EE_ftp.php
Last active Dec 29, 2015 — forked from davist11/Ftp.php
Call with $this->EE->load->library('my_ftp'); It will load CI_ftp and replace $this->EE->ftp with your ftp class
View EE_ftp.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
require_once(BASEPATH . 'libraries/Ftp.php');
class EE_FTP extends CI_FTP {
var $timeout = 90;
* FTP Connect