Skip to content

Instantly share code, notes, and snippets.

View codearachnid's full-sized avatar
:octocat:
curiouser and curiouser

Timothy Wood codearachnid

:octocat:
curiouser and curiouser
View GitHub Profile
@codearachnid
codearachnid / listAllEventListeners.js
Created November 26, 2024 17:37
Javascript - Listing active event listeners on a Web page. Great for use in Chrome console
function listAllEventListeners() {
const allElements = Array.prototype.slice.call(document.querySelectorAll('*'));
allElements.push(document);
allElements.push(window);
const types = [];
for (let ev in window) {
if (/^on/.test(ev)) types[types.length] = ev;
}
@codearachnid
codearachnid / toSqlBoolean.php
Created September 2, 2024 00:44
variety of values and convert to a boolean sql value
<?php
function toSqlBoolean($value) {
// Convert the value to a boolean first
$booleanValue = filter_var($value, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
// Return SQL boolean equivalent
return $booleanValue ? 1 : 0;
}
@codearachnid
codearachnid / export-ga-analytics.py
Created June 12, 2024 19:48
Export Universal Analytics from Google Analytics API with pagination due to API limits
from google.oauth2 import service_account
from googleapiclient.discovery import build
from datetime import datetime
import csv
# Set up credentials and analytics service
SCOPES = ['https://www.googleapis.com/auth/analytics.readonly']
KEY_FILE_LOCATION = 'path/to/your-credentials-file.json'
VIEW_ID = 'your-view-id'
@codearachnid
codearachnid / acf_field_gravity_forms_list.php
Last active March 21, 2024 18:12
Populate ACF field with list of active Gravity Forms
<?php
/***
* Populate ACF field (list_gravity_forms) with list of active Gravity Forms
***/
add_filter( 'acf/load_field/name=list_gravity_forms', function( $field ) {
$forms = GFFormsModel::get_forms();
// Filter active forms
$forms = array_filter( $forms, function( $form ) {
@codearachnid
codearachnid / gform_entry_page_replay_webhooks.php
Created February 14, 2024 21:56
Gravity Forms: Webhooks Entry Caller
<?php
// add meta boxes on entry detail
add_filter('gform_entry_detail_meta_boxes', function( $meta_boxes ){
// check that Webhooks class is available
if( class_exists('GF_Webhooks') ){
$meta_boxes['webhooks'] = [
'title' => 'Webhooks',
@codearachnid
codearachnid / gppa-explode-commas-as-selected-choices.php
Last active January 26, 2024 17:45
This is the rework of the explode commas into selected choices as there are changes in how gravitywiz populate anything now behaves. https://github.com/gravitywiz/snippet-library/blob/master/gp-populate-anything/gppa-explode-commas-as-selected-choices.php
/**
* Gravity Perks // Populate Anything // Explode Commas into Selected Choices
* https://gravitywiz.com/documentation/gravity-forms-populate-anything/
*
* Plugin Name: GPPA Explode Commas into Selected Choices
* Plugin URI: https://gravitywiz.com/documentation/gravity-forms-populate-anything/
* Description: Convert comma-delimited values into selected choices when populated into a choice-based field.
* Author: Gravity Wiz
* Version: 0.1
* Author URI: https://gravitywiz.com
<?php
// The field accepts a value with this structure
$value = [
'address' => '123 Example St, Townsville XYZ 1234, Country',
'lat' => - 38.1486228,
'lng' => 144.360414,
'zoom' => 14,
'place_id' => 'Ei0xMjMgTW9vcmFib29sIFN0LCBHZWVsb25nIFZJQyAzMjIwLCBBdXN0cmFsaWEiMBIuChQKEgmX0JaIHBTUahFyH_LC9sYD8hB7KhQKEglDz-DYDxTUahECZY8QisCjzg',
'street_number' => 123,
<?php
// The field accepts a value with this structure
$value = [
'address' => '123 Example St, Townsville XYZ 1234, Country',
'lat' => - 38.1486228,
'lng' => 144.360414,
'zoom' => 14,
'place_id' => 'Ei0xMjMgTW9vcmFib29sIFN0LCBHZWVsb25nIFZJQyAzMjIwLCBBdXN0cmFsaWEiMBIuChQKEgmX0JaIHBTUahFyH_LC9sYD8hB7KhQKEglDz-DYDxTUahECZY8QisCjzg',
'street_number' => 123,
@codearachnid
codearachnid / vuejs-actions-filters.md
Last active May 5, 2023 18:33
A recommendation on building actions/filters management similar to WordPress within a Vuejs (3) app.

VueJS (3) Action + Filters

This is a proposal to extend a compiled Vuejs application at runtime by adding actions and filters. This would allow for permitting functional extension to the data models/patterns or runtime executions of the application with discrete injection points by the development team. The purpose is to allow extensibility of functionality or filtering of data that the original application may not have considered or leveraged due to constraints. This concept is a potential benefit/risk because it gives discrete exposure to aspects of the application during runtime. By exposing controlled points during runtime for global access into the vuejs application this allows other UI frameworks within the same global space an opportunity to hook into application based api with promise driven callbacks.

[Sequence diagram for reference](https://viewer.diagrams.net/?tags=%7B%7D&amp;highlight=0000ff&amp;edit=_blank&amp;layers=1&amp;nav=1&amp;title=vuejs-actions-filters.drawio#R%3Cmxfile%3E%3Cdiagram%20name%3D%22Overvi

@codearachnid
codearachnid / ninja_table_raw_sql_placeholders.php
Created March 10, 2023 04:07
Improve the Ninja Tables admin experience by hooking into `ninja_table_raw_sql_placeholders` filter to add additional placeholders while in admin to allow queries to run in psuedo-mode.
<?php
/**
* hook into `ninja_table_raw_sql_placeholders` filter to add additional placeholders
* while in admin to allow queries to run in psuedo-mode
* @param array $filter
*/
add_filter('ninja_table_raw_sql_placeholders', function($filter){
if( is_admin() ){
/**
* these should already be set passing into this filter