Skip to content

Instantly share code, notes, and snippets.

View nmcgann's full-sized avatar

Neil McGann nmcgann

  • UK
  • 14:40 (UTC)
View GitHub Profile
@nmcgann
nmcgann / phpzip.php
Created May 7, 2017 16:29
PHP Command line zip utility. Simply zips a directory structure into an archive. No bells or whistles.
<?php
/*
* Command line zip equivalent - very simple version that just zips a directory structure completely.
* No options!
* Useful when it is needed to build e.g. a Wordpress plugin zip archive, but the dev environment
* doesn't have zip - i.e. MINGW64 as bundled with Git - has unzip, but not zip.
*/
date_default_timezone_set('UTC');
error_reporting (E_ALL);
@nmcgann
nmcgann / wp-db-find-and-replace.sh
Created April 13, 2017 06:30
Wordpress Database search and replace domain including serialized data.
#!/bin/bash
#wp-db-find-and-replace.sh
#
#Script to search and replace on wordpress db in .sql format e.g. to change domain url
#Works with serialized data as it recognises the php serialized format
#writes a file output
#Based on version of:
#http://wojnowski.net.pl/main/index/updating-wordpress-database-urls-part-2
#(this doesn't work as-is, but the principles are good once it is fixed)
@nmcgann
nmcgann / lightsail_install_memcache.sh
Created March 14, 2017 08:41
bash script to install memcache on AWS lightsail LAMP stack (Mar 2017)
#!/bin/bash
#install memcache on AWS lightsail bitnami
#memcache (no "d") is handy for cross platform testing as it will work on windows
#WAMP etc. where the memcached version does not appear to have a windows port)
#(lightsail lamp has the build environment gcc etc. already installed)
#memcache version
VERSION='3.0.8'
cd /root/bitnami
@nmcgann
nmcgann / vultr_prov.sh
Created March 12, 2017 18:56
Provision and fix the Vultr LAMP stack (Centos 6). Adds PhpMyAdmin and fixes the broken .htaccess files due to fcgi config (as of March 2017)
#!/bin/bash
#Provision the vultr Centos6 LAMP stack as it is a bit broken as standard
#update and fetch missing things
yum update -y
yum install -y php56u-bcmath php56u-imap php56u-intl php56u-pecl-memcache
#disable opcache for development
perl -pi -e 's/^opcache.enable=1/opcache.enable=0/' /etc/php.d/10-opcache.ini
@nmcgann
nmcgann / IMAP_access.php
Created February 15, 2017 09:09
IMAP access class to decode imap body, fetch and assemble all the parts and attachments. Used as an utility class for processing a whole mailbox.
<?php
/**
* IMAP_access. Utility class for processing a mailbox for applications that
* want to grab the body text and do something with it e.g. create a new
* todo list item. Enough clues in there that it can be expanded to do
* a lot more if required - e.g. also grab file attachments.
*
* Based on several part-working tutorials (fixed), the PHP manual examples
* and testing on real email samples from Gmail, Thunderbird and MS outlook 2010.
* (flatten_parts is the tricky bit and was from here:
@nmcgann
nmcgann / get_host_url.php
Last active March 14, 2017 21:42
PHP function to automatically get a host url from $_SERVER variables to enable creation of absolute links etc. (Apache)
<?php
//e.g.semi-colon separated define list of all allowable hosts (does not need to show sub-domains - works automatically)
//$valid_hosts = 'first-host.com;second-host.com';
//create absolute url for page address - quite tricky to make this work on linux / windows and shared hosting and also
//php built-in web server.
//Constructed URL ends up in a trailing slash with the $target parameter appended.
//defaults to not checking a valid host list unless one is supplied
function get_host_url($target = '', $valid_hosts = '*'){
// Get HTTP/HTTPS (the possible values for this vary from server to server)
@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
@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 / 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 / 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