Skip to content

Instantly share code, notes, and snippets.

Nathan Klatt nklatt

View GitHub Profile
@nklatt
nklatt / 0 intro.txt
Last active Sep 30, 2019
Import Google Maps polygons into MySQL
View 0 intro.txt
We have a client that ships from multiple warehouses using zones to determine
pricing. They maintain the zones in a Goole Maps document. We are creating a
front end that clients can enter their address and we'll show them what their
shipping options are. We will have the client export their zones as a KML
file and we'll import it into a MySQL database and use ST_Contains to find
the shipping zone(s) customers are in. (They can only be in one zone for any
given warehouse but may be within range of multiple warehouses.)
One thing to point out is there is confusion about the order of latitude and
longitude. Mathematically, it is naturally ordered "longitude, latitude" but
@nklatt
nklatt / concrete5_adjust_file_permissions.php
Last active Apr 30, 2018
For Concrete5 v8, how to programmatically set file permissions so that they are only accessible by a single user plus a single group of users and are stored outside of the webroot.
View concrete5_adjust_file_permissions.php
use Concrete\Core\Entity\File\File;
use Concrete\Core\File\Set\Set as FileSet;
use Concrete\Core\File\StorageLocation\StorageLocationFactory as FileStorageLocationFactory;
use Concrete\Core\Permission\Access\Entity\GroupEntity as GroupPermissionAccessEntity;
use Concrete\Core\Permission\Access\Entity\UserEntity as UserPermissionAccessEntity;
use Concrete\Core\Support\Facade\Application;
use Concrete\Core\User\Group\Group as UserGroup;
use PermissionKey;
use UserInfo;
@nklatt
nklatt / create_attributes.php
Last active May 14, 2020
Programmatically add new product attribute with options to a Magento 2 store and add to Default attribute group
View create_attributes.php
<?php
defined('STDIN') or die(_("Access Denied. CLI Only"));
// execute from the command line: php <path to magento root>/cli/create_attributes.php
require __DIR__.'/../app/bootstrap.php'; // assuming this file is in /cli under the root magento dir
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
$installer = $bootstrap->getObjectManager()->create('Magento\Catalog\Setup\CategorySetup');
$objectManager = $bootstrap->getObjectManager();
@nklatt
nklatt / add_column.php
Created May 12, 2016
Ensure a column exists in a MySQL table using concrete5, though that is secondary
View add_column.php
<?php defined('C5_EXECUTE') or die(_('Access Denied.'));
function addColumnToTable($table, $column, $type = 'tinyint(1) not null default 0') {
$db = Loader::db();
$qResult = $db->Execute('show columns from `'.$table.'` like "'.$column.'"');
$columnAlreadyExists = false;
foreach ($qResult as $row) {
if (is_array($row) && !empty($row['Field']) && $row['Field'] === $column) {
$columnAlreadyExists = true;
}
}
@nklatt
nklatt / dbTablesLoop.php
Created Nov 17, 2015
Loop over all tables in a database.
View dbTablesLoop.php
use Illuminate\Database\Capsule\Manager as DB;
$capsule->addConnection(array(
'host' => 'localhost',
'database' => 'information_schema',
'username' => 'usr',
'password' => 'pwd',
'collation' => 'utf8_general_ci',
'charset' => 'utf8',
'driver' => 'mysql',
@nklatt
nklatt / myApp.js
Last active Aug 29, 2015
Extending Angular number inputs to validate for step attribute
View myApp.js
angular
.module('myApp', [])
.directive("step", function() {
return {
restrict: "A",
require: "ngModel",
link: function(scope, element, attributes, ngModelCtrl) {
ngModelCtrl.$validators.step = function(modelValue, viewValue) {
var isValid = true; // assumed innocent until proven guilty
if ( ! ngModelCtrl.$isEmpty(modelValue) ) { // empty is okay
@nklatt
nklatt / mountsshfs
Last active Aug 29, 2015 — forked from pete-otaqui/mountsshfs
mountsshfs with addition of MOUNT_AS variable
View mountsshfs
#!/bin/sh
## http://ubuntuforums.org/showthread.php?t=430312
## The script will attempt to mount any fstab entry with an option
## "...,comment=$SELECTED_STRING,..."
## Use this to select specific sshfs mounts rather than all of them.
SELECTED_STRING="sshfs"
## mount as user, default = "root"
MOUNT_AS="root"
You can’t perform that action at this time.