Skip to content

Instantly share code, notes, and snippets.

View nmcgann's full-sized avatar

Neil McGann nmcgann

  • UK
  • 06:10 (UTC +01:00)
View GitHub Profile
@nmcgann
nmcgann / mysql_backup.class.php
Last active March 17, 2017 06:58
PHP Class to dump a Mysql/Maria database to a string. Includes views, triggers, procedures and functions. (Improved!)
<?php
/*
* PHP backup class. Based on an old script updated to use mysqli_ routines.
* Extended and bugfixed - now handles NULL's, doesn't quote numbers, handles utf-8,
* creates multiple inserts and breaks to a new one after a defined number, creates gzip
* or zip files, generates foriegn key disable and table lock/unlock statements.
* Handles Views, Triggers, Procedures and Functions.
* Optionally removes DEFINER from views/procs/funcs and DB names from views.
*
* Thanks to Phil Rodgers (https://github.com/placeposition) for spotting the field type
@nmcgann
nmcgann / s3-signer-test.php
Last active October 9, 2015 06:03
Amazon S3 Version 4 API request signer script
<?php
//TEST CODE
//Simple example of links to files in a privately accessible s3 bucket being authorised.
//If the link is followed directly a 403 error will be returned with an xml error page.
//Instead jquery catches the click and creates an authorisation for the request assisted by
//a server that holds the access keys. The region, bucket and key are extracted and then a
//server-side authorisation query string is requested, appended to the link href and then the
//file is requested from s3.
// Bucket needs CORS turning on (for GET) and s3:GetObject permission needs to be present.
?>
@nmcgann
nmcgann / Dbpdo.php
Created November 23, 2015 21:57
PDO class to include timing and logging. Tested with mysql and mssql
<?php
/**
* dbpdo.php
*
* Wrapper class for PDO to handle connecting to different types of db (mssql and mysql).
* Also handles mssql on both windows and linux platforms by using sqlsrv and dblib pdo drivers.
* Adds a logging and timing facility for queries and prepared statements.
* A logging function can be passed to the constructor to capture all calls to the PDO routines.
*
* All normal PDO and PDOStatement functions can be used with no alterations.
@nmcgann
nmcgann / Logger.php
Created November 23, 2015 22:01
Simple Logging class - logs to files only.
<?php
/**
* Logger class.
* Logs to file and defaults to a /logs/ subdirectory under this script location
*
* This is a bit mickey-mouse as loggers go, but helpful.
*
*/
// ------------------------------------------------------------------------- //
@nmcgann
nmcgann / install-cluster-client.config
Created January 13, 2016 09:10
AWS Elastic Beanstalk .ebextensions config to install Elasticache memcached cluster client (PHP 5.6)
files:
"/home/ec2-user/install-cluster-client.sh":
mode: "000744"
owner: root
group: root
content: |
#!/bin/bash
#hide old ini
if [ -a /etc/php.d/50-memcached.ini ]
then
@nmcgann
nmcgann / verify.js
Last active February 10, 2017 16:29
Javascript verify class based on using data atttibutes on the form inputs and submit(s). No jquery, just plain js (ES5).
/**
* JS form data verification routine. Uses data attributes on the field:
* "data-verify": regex pattern that must be true for no error.
* "data-error": error message.
* "data-options": options separated by "|". First is regex parameters i/g/m as per the RegExp constructor,
* second is inversion of the test if "not", or "req" if the test must pass and a non-empty field is
* not allowed (both req and not can be used if separated by a ";" or space). Third is the name of a special test function when
* a regex isn't sufficient to do the test. Test fn must be within ValidateForm (or added to the prototype).
* If an option is blank, it can just be left empty e.g. "|req" if there are no regex params, but data-verify
* field must be present so the field is recognised as needing verifying.
@nmcgann
nmcgann / sql_import_class.php
Last active May 11, 2023 09:12
PHP SQL Import Class to read an SQL dump file and run it as SQL statements over a PDO connection
<?php
/**
* Sql_import class.
*
* Reads a SQL file (e.g. a dump from phpmyadmin) and executes it programmatically.
*
* Handles procedures, triggers etc. and can load large dumps. Great for
* installer scripts to load up a db schema and populate with initial data.
*
* Came from: http://stackoverflow.com/questions/147821/loading-sql-files-from-within-php
@nmcgann
nmcgann / pdo_mysql_session.php
Last active February 10, 2017 16:49
PHP Mysql session handling class using PDO. Includes row locking on reads to prevent ajax race condition issues. Needs php >= 5.4.
<?php
/**
* Mysql DB Session class with PDO
*
* Uses row locking to handle concurrent ajax access
*
* Requires a PDO db connection to be handed to the session constructor.
*
* Table:
*
@nmcgann
nmcgann / pub-sub.js
Created February 10, 2017 16:38
Simple JS Pub-Sub implementation. Synchronous or Asynchronous.
/*
* Simple Publish / subscribe events routine.
*
* Used to extend an object with the subscribe and publish methods.
* The return value of subscribe has a remove method that can be used
* to unsubscribe.
*
* Modifies the object directly.
*/
var $$ = $$ || {}; //This is the utility functions object used elsewhere.
@nmcgann
nmcgann / async-scriptloader.js
Created February 10, 2017 16:43
Simple Asynchronous JS script loader. Not clever or modern - just works.
//js async loader
var $$ = $$ || {};
$$.asyncScriptLoader = function (url) {
//get currently loaded scripts
var allScripts = document.getElementsByTagName('script'),
alreadyLoaded = false;
function onLoad(){}; //url is parameter
function onError(){}; //url is parameter