Skip to content

Instantly share code, notes, and snippets.

View cgi-caesar's full-sized avatar

Andrey Yerokhin cgi-caesar

View GitHub Profile
@cgi-caesar
cgi-caesar / site.php
Last active December 17, 2019 10:51
aMember (site.php): add Open Graph Meta to Product Page
<?php
Am_Di::getInstance()->blocks->add('cart/product/title', new Am_Block_Base(null, 'ogp-me', null, function(Am_View $v) {
if ($v->displayProductDetails) {
/** @var Product $product */
$product = $v->product;
$product_url = $product->path ?
$v->surl('product/' . urlencode($product->path), false) :
@cgi-caesar
cgi-caesar / site.php
Last active April 5, 2021 08:48
aMember (site.php): disallow signups with same first and last name (usually spam signups)
<?php
Am_Di::getInstance()->hook->add(Am_Event::VALIDATE_SAVED_FORM, function (Am_Event_ValidateSavedForm $event) {
$form = $event->getForm();
$vars = $form->getValue();
if (isset($vars['name_f']) && isset($vars['name_l']) && $vars['name_f'] == $vars['name_l'])
{
$event->addError('Some Error Occurred! Please try to signup later...');
}
});
@cgi-caesar
cgi-caesar / site.php
Created November 21, 2019 15:54
aMember (site.php): Sync user comment field to user notes
<?php
Am_Di::getInstance()->hook->add(Am_Event::USER_AFTER_UPDATE, function(Am_Event_UserAfterUpdate $e) {
$user = $e->getUser();
$old = $e->getOldUser();
if ($user->comment && $user->comment != $old->comment) {
$note = $e->getDi()->userNoteRecord;
$note->user_id = $user->pk();
$note->content = $user->comment;
@cgi-caesar
cgi-caesar / site.js
Created November 20, 2019 15:58
aMember (site.js): responsive iframe (maintain aspect ratio)
jQuery(function(){
jQuery(window).resize(function(){
jQuery('iframe.embed-video-16-9').each(function(){
jQuery(this).height(jQuery(this).width() * 9/16)
});
}).resize();
});
@cgi-caesar
cgi-caesar / site.php
Created November 18, 2019 08:40
aMember (site.php): Forms Editor - Use click event to add Brick to Form
<?php
/**
* Use click event to add Brick to Form
*/
Am_Di::getInstance()->hook->add('gridSavedFormInitForm', function(Am_Event_Grid $e) {
$e->getGrid()->getForm()
->addScript()
->setScript(<<<'CUT'
let drag = false;
@cgi-caesar
cgi-caesar / site.php
Created October 31, 2019 17:16
aMember (site.php): Limit usage of coupon by IP address
<?php
Am_Di::getInstance()->hook->add(Am_Event::VALIDATE_COUPON, function(Am_Event $e) {
$batch = $e->getCouponBatch();
$coupon = $e->getCoupon();
$used = $e->getDi()->invoiceTable->countBy([
'coupon_id' => $coupon->pk(),
'remote_addr' => $_SERVER['REMOTE_ADDR']
]);
@cgi-caesar
cgi-caesar / site.php
Created October 17, 2019 14:40
aMember (site.php): Discount based on Qty
<?php
Am_Di::getInstance()->hook->add(Am_Event::INVOICE_GET_CALCULATORS, function(Am_Event_InvoiceGetCalculators $e){
$e->insertBeforeTax(new class() extends Am_Invoice_Calc
{
public function calculate(Invoice $invoiceBill)
{
$discount_rules = [
108 => [ //Product ID
@cgi-caesar
cgi-caesar / site.php
Created August 23, 2019 07:39
aMember (site.php): User friendly error message display in case of there is no product to purchase
<?php
Am_Di::getInstance()->hook->add(Am_Event::AFTER_RENDER, function(Am_Event_AfterRender $e) {
if (defined('AM_ADMIN') && AM_ADMIN) return;
if (
stripos($e->getOutput(), 'There are no products available for purchase. Please come back later') !== false
&& $e->getDi()->request->getControllerName() == 'signup'
) {
$url = $e->getDi()->url('no-product', ['c' => $e->getDi()->request->getParam('c')], false);
header("Location: {$url}");
@cgi-caesar
cgi-caesar / site.php
Last active August 1, 2019 08:02
aMember (site.php): Change URL to signup page on Login Page
<?php
Am_Di::getInstance()->hook->add(Am_Event::BEFORE_RENDER, function (Am_Event $e) {
if (stripos($e->getTemplateName(), '/login.phtml') !== false) {
$e->getView()->signup_url = '/your/custom/url';
}
});
@cgi-caesar
cgi-caesar / site.php
Created June 26, 2019 11:59
aMember (site.php): Set Return-Path for all Emails from aMember
<?php
Am_Di::getInstance()->hook->add([Am_Event::MAIL_TEMPLATE_BEFORE_PARSE, Am_Event::MAIL_SIMPLE_TEMPLATE_BEFORE_PARSE], function(Am_Event $e) {
$e->getMail()->setReturnPath('demo@example.com');
});