Skip to content

Instantly share code, notes, and snippets.

@inogo
inogo / yandex_search_regions.csv
Created February 7, 2020 09:38
Список кодов регионов поиска Яндекса (параметр &lr=) ранее был доступен по ссылке https://yandex.ru/yaca/geo.c2n
We can't make this file beautiful and searchable because it's too large.
1,"Москва и Московская область"
2,"Санкт-Петербург"
3,"Центральный федеральный округ"
4,"Белгород"
5,"Иваново"
6,"Калуга"
7,"Кострома"
8,"Курск"
9,"Липецк"
10,"Орёл"
@inogo
inogo / build-qpdf84-ubuntu.sh
Created September 10, 2019 06:35
Build QPDF 8.4 from sources (Ubuntu 18 Bionic)
# run as root
apt-get update && apt-get install -y wget unzip
BUILD_DEPS='build-essential zlib1g-dev libjpeg-dev make'
apt-get install -y $BUILD_DEPS --no-install-recommends \
&& wget -q https://github.com/qpdf/qpdf/archive/release-qpdf-8.4.2.zip \
&& unzip -q release-qpdf-8.4.2.zip && rm release-qpdf-8.4.2.zip \
&& cd qpdf-release-qpdf-8.4.2 && ./configure && make && make install && ldconfig \
&& cd .. && rm -rf qpdf-release-qpdf-8.4.2
# optional remove build deps
apt-get purge -y --auto-remove $BUILD_DEPS && apt-get clean
@inogo
inogo / express_php_proxy.js
Last active April 30, 2017 18:36
NodeJS proxy for PHP development server. Usable for serving static content.
#!/usr/bin/env node
let express = require('express'),
logger = require('morgan'),
proxy = require('express-http-proxy');
let php = process.argv.length > 2 ? process.argv[2] : '127.0.0.1:8080';
let staticResult = express.static(process.cwd());
let proxyResult = proxy(php);
@inogo
inogo / ntlm_auth.php
Created January 19, 2017 13:25
PHP NTLM Authentication
<?php // by SiMM
$headers = apache_request_headers(); // получаем все заголовки клиента
if (!isset($headers['Authorization'])) { // если заголовка авторизации нет
header('HTTP/1.0 401 Unauthorized'); // требуем от клиента авторизации
header('WWW-Authenticate: NTLM'); // тип требуемой авторизации - NTLM
exit; // завершаем выполнение скрипта
}
// заголовок авторизации от клиента пришёл
if (substr($headers['Authorization'],0,5) == 'NTLM ') { // проверяем, что это NTLM-аутентификация
$chain = base64_decode(substr($headers['Authorization'],5)); // получаем декодированное значение
@inogo
inogo / oc_delete_orders.sql
Last active April 28, 2017 18:54
Delete old OpenCart orders
DELETE `or`, ort FROM `order_recurring` `or`, `order_recurring_transaction` `ort` WHERE order_id IN (SELECT order_id FROM `order` where order_id < 14000) AND ort.order_recurring_id = `or`.order_recurring_id;
DELETE FROM `order_product` WHERE order_id IN (SELECT order_id FROM `order` where order_id < 14000);
DELETE FROM `order_option` WHERE order_id IN (SELECT order_id FROM `order` where order_id < 14000);
DELETE FROM `order_voucher` WHERE order_id IN (SELECT order_id FROM `order` where order_id < 14000);
DELETE FROM `order_total` WHERE order_id IN (SELECT order_id FROM `order` where order_id < 14000);
DELETE FROM `order_history` WHERE order_id IN (SELECT order_id FROM `order` where order_id < 14000);
DELETE FROM `affiliate_transaction` WHERE order_id IN (SELECT order_id FROM `order` where order_id < 14000);
DELETE FROM `order` WHERE order_id < 14000;
DELETE FROM `sbacquiring` WHERE num_order < 14000; -- optional
[[!FormIt?
&hooks=`email`
&submitVar=`callback`
&emailTpl=`callback-email-tpl`
&emailSubject=`Запрос обратного звонка с сайта [[++site_name]]`
&emailTo=`[[++contact_email]]`
&emailFrom=`[[++emailsender]]`
&successMessage=`ok`
&validate=`name:required:minLength=^3^,phone:required:minLength=^7^`
]]
/*
* Yandex.Metrika ecommerce helper script
* Docs: https://yandex.ru/support/metrika/data/e-commerce.xml
* Author: isoshin@outlook.com
*/
window.dataLayer = window.dataLayer || [];
function ecommDetail(products) {
products = [].concat(products);
<?php
// usage:
// [[!metrikaPurchase? &orderId=`[[!+fi.orderID]]`]]
$orderId = intval($modx->getOption('orderId', $scriptProperties, 0));
$modx->addPackage('shopkeeper', MODX_CORE_PATH . 'components/shopkeeper/model/');
$order = $modx->getObject('SHKorder', $orderId);
if ($order == null) {
return;
<?php
$auth_redirect = $modx->makeUrl($modx->resource->id, '', '', 'full');
// token
if (isset($_GET['code'])) {
$code = $_GET['code'];
$ctx = stream_context_create(array(
'http' => array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
@inogo
inogo / modx-snippets.php
Last active November 23, 2016 03:42 — forked from christianhanvey/modx-snippets.php
Useful snippets for MODX Revo
Snippet: [[SnippetName]]
Chunk: [[$ChunkName]]
System Setting: [[++SettingName]]
TV: [[*fieldName/TvName]]
Link tag: [[~PageId? &paramName=`value`]]
Placeholder: [[+PlaceholderName]]
<?php