Skip to content

Instantly share code, notes, and snippets.

View hsimah's full-sized avatar

hsimah

View GitHub Profile
@hsimah
hsimah / Dockerfile
Last active September 6, 2020 20:56
Initial Dockerfile for WordPress, WSL2 & Docker
########################################################################
# Pre-configured WordPress Installation for local PHP/node development #
# For development & testing only, use in production not recommended. #
########################################################################
FROM wordpress:latest
LABEL author=hsimah
LABEL author_uri=https://github.com/hsimah-services
@hsimah
hsimah / PowerShellMenu.cs
Created May 16, 2020 23:26
PowerShell interactive menu
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Management.Automation;
namespace ProjectShell.Startup
{
enum ActionType
{
@hsimah
hsimah / karabiner.json
Last active December 18, 2019 18:03
[WIP] OS X keybindings - system and vs code
{
"global": {
"check_for_updates_on_startup": true,
"show_in_menu_bar": true,
"show_profile_name_in_menu_bar": false
},
"profiles": [
{
"complex_modifications": {
"parameters": {
function Move-ByDate {
param(
$Path = '.',
$Destination
)
Get-ChildItem -Path $Path | ForEach-Object {
$Date = $_.LastWriteTimeUtc | Get-Date -f yyyy.M
$DestPath = Join-Path $Destination $Date
# Join-Path will handle trailing slashes or lack thereof
Join-Path -Path $Branch -ChildPath $Leaf
# Other useful functions include:
[IO.Path]::GetDirectoryName() # Gets the directory name
[IO.Path]::GetFileName() # Gets the file name
[IO.Path]::GetFileNameWithoutExtension() # Gets the file name sans extension
[IO.Path]::GetExtension() # Gets the file extension including leading .
# Resolves a relative path
# throws an exception if path doesn't exist
$Path | Resolve-Path | Select-Object -ExpandProperty Path
# Clean a filename
$Path.Split([IO.Path]::GetInvalidFileNameChars()) -join '_'
# Clean a directory path
$Path.Split([IO.Path]::GetInvalidPathChars()) -join '_'
@hsimah
hsimah / wpgraphql-rcp-check.php
Last active June 22, 2019 00:44
A hook handler to check whether the current user has appropriate access in Restrict Content Pro to view the post (a tutorial type)
<?php
add_filter( 'graphql_data_is_private', function( $is_private, $model_name, $data ) {
if ( $model_name === 'PostObject' ) {
if ( $data->post_type === 'tutorial' ) {
$user_id = get_current_user_id();
if ( ! rcp_user_can_access( $user_id, $data->ID ) ) return true;
if ( ! rcp_is_active( $user_id ) ) return true;
// TODO update RCP and stop using deprecated rcp_is_active
// if ( ! rcp_user_has_active_membership( $user_id ) ) return true;
CREATE TABLE `ps_edgeusertut` (
`ID` int(11) unsigned NOT NULL,
`ut_userid` text COLLATE utf8mb4_unicode_520_ci NOT NULL,
`ut_tutorial` text COLLATE utf8mb4_unicode_520_ci NOT NULL,
`ut_faved` tinyint(1) DEFAULT NULL,
`ut_datefaved` text COLLATE utf8mb4_unicode_520_ci NOT NULL,
`ut_unlocked` tinyint(1) DEFAULT NULL,
`ut_dateunlocked` text COLLATE utf8mb4_unicode_520_ci NOT NULL,
`ut_watched` tinyint(1) DEFAULT NULL,
`ut_watch_history` text COLLATE utf8mb4_unicode_520_ci NOT NULL,
add_filter( 'posts_clauses', function( $clauses, $query_object ) {
global $wpdb;
$user_id = get_current_user_id();
if ( ! array_key_exists('graphql_args', $query_object->query ) ) {
return $clauses;
}
switch ( $query_object->query['post_type'] ) {
case 'tutorial':
$joined = false;
if ( ! array_key_exists( 'where', $query_object->query['graphql_args'] ) ) {