Skip to content

Instantly share code, notes, and snippets.

@schmengler
schmengler / README.md
Last active April 17, 2019 08:56
Domain Objects from Magento Configuration

Domain Objects from Magento Configuration

A pattern suggestion to integrate framework independent domain models into Magento.

Problem:

We want to instantiate a domain model based on Magento configuration.

Implementation:

@schmengler
schmengler / add-checkout-form-key.sh
Last active September 2, 2022 16:23
Magento SUPEE-9767 Checkout Form Key Theme Patch
find -L app/design/frontend -regex '.*\(shipping\|billing\|shipping_method\|payment\).phtml' -exec grep -L formkey {} \; \
| xargs sed -i 's/<\/form>/<?php echo $this->getBlockHtml("formkey") ?><\/form>/g'
find -L skin/frontend -name 'opcheckout.js' -exec grep -L form_key {} \; \
| xargs sed -i 's/if (elements\[i\].name=='\''payment\[method\]'\'') {/if (elements[i].name=='\''payment[method]'\'' || elements[i].name == '\''form_key'\'') {/g'
@schmengler
schmengler / Stock.php
Created November 21, 2016 10:30
Magento1 Stock Model Rewrite to add events
<?php
/**
* Add events to observe stock qty change
*
* @author Fabian Schmengler
*
*/
class SGH_ShippingExpress_Model_CatalogInventory_Stock
extends Mage_CatalogInventory_Model_Stock
{
<?php
trait Memoize
{
/**
* @var array [method][parameters]
*/
private $memoizedResults = [];
protected function memoizedCall($methodName, $args)
{
@schmengler
schmengler / collection-with-generators.php
Created June 2, 2016 09:20
Collections with PHP 5.5 Generators
<?php
// PoC for collection pipeleines with improved memory footprint
// requires php 5.5 >= 5.5.24
// or php 5.6 >= 5.6.8
// or php 7
//
// see: https://bugs.php.net/bug.php?id=69221
class Collection extends \IteratorIterator {
@schmengler
schmengler / array-random-benchmark.php
Last active April 6, 2021 07:15
Draw Elements From Large PHP Array: Benchmark Script
<?php
require 'Timer.php';
$testData = array(
// $k | count($a)
// -------+---------
array( 10, 1000),
array( 10, 10000),
array( 10, 100000),
array( 10, 1000000),
@schmengler
schmengler / bookmarklets.md
Created July 9, 2015 12:45
Magento Admin Bookmarklets

Select all attributes to "Skip" in product export

javascript:$$('input[name="skip_attr[]"]').each(function(el) {el.checked=true;});
@schmengler
schmengler / Request.php
Created June 20, 2015 09:41
Example: Use the Builder pattern to build immutable objects (usage see below in example.php)
<?php
namespace Example\Http;
use Psr\Http\Message\UriInterface;
use Psr\Http\Message\StreamInterface;
use Symfony\Component\HttpFoundation\HeaderBag;
/**
* Immutable request object
*/
@schmengler
schmengler / PATCH_SUPEE-5994_EE_1.14.1.0_v1-2015-05-14-05-05-02-without-downloader.sh
Created May 15, 2015 09:11
Magento Security Patch SUPEE-5994 (Magento CE 1.6 - 1.9 / EE 1.11 - 1.14) WITHOUT DOWNLOADER PATCHES
#!/bin/bash
# Patch apllying tool template
# v0.1.2
# (c) Copyright 2013. Magento Inc.
#
# DO NOT CHANGE ANY LINE IN THIS FILE.
# 1. Check required system tools
_check_installed_tools() {
local missed=""
<?php
/**
* Generate modman file from Magento Connect 2.0 package.xml
*
* Usage:
*
* php package2modman.php path/to/package.xml > path/to/modman
*
*/
require_once(__DIR__ . "/../www/app/Mage.php");