Skip to content

Instantly share code, notes, and snippets.

View juban's full-sized avatar

Alban Jubert juban

  • Grenoble, France
View GitHub Profile
@juban
juban / yii2-quick-array-add-property.php
Created December 12, 2015 14:38
Yii2 - Quickly add a property to an array using ArrayHelper::getColumn
<?php
require(__DIR__ . '/vendor/autoload.php');
use yii\helpers\ArrayHelper;
use yii\helpers\VarDumper;
$fooArray = [
['name' => 'Han Solo', 'email' => 'han.solo@starwars.com'],
['name' => '', 'email' => 'luc.skywalker@starwars.com'],
@juban
juban / EFastDbAuthManager.php
Last active January 4, 2016 11:59
This class inherit from and is an enhancement for CDbAuthManager class from Yii Framework 1.1 which lower the number of database queries.
<?php
/**
* EFastDbAuthManager class file
*
* This class inherit from and is an enhancement for CDbAuthManager class which lower the number of database queries.
* The main difference with the original class is that the authorization data are loaded once for all in a very a similar way to CPhpAuthManager.
* In short terms, this is a kind of mix between CDbAuthManager and CPhpAuthManager classes to get the best of both worlds.
* The class can also be used to cache the authorization data to achieve an even faster loading.
*
@juban
juban / GTT_XML_file_fixer.php
Created January 5, 2016 14:39
Google Translator Toolkit XML file fixer
#!/usr/bin/env php
<?php
if(!isset($argv[1]))
die("Please, specify a file to process as argument\n");
$file = $argv[1];
if(!file_exists($file)) {
die("File $file does not exist\n");
}
$pathinfo = pathinfo(realpath($file));
$data = file_get_contents($file);
@juban
juban / yii2-create-activeDataProvider-from-model-relation
Created December 4, 2016 11:00
Yii2 - Create an ActiveDataProvider from a HasMany model relation
<?php
$applicationsDataProvider = new \yii\data\ActiveDataProvider([
'query' => $model->getRelation('relationName'),
'pagination' => [
'pageParam' => 'apps_page'
]
]);
?>
@juban
juban / gist:e3f3d6f7555d38829b6bfcaf6fba6a7e
Created March 21, 2017 10:27
List of installed Elasticsearch plugins
http://host.name/_nodes?plugin=true
@juban
juban / index.twig
Created July 11, 2017 16:27
Craft CMS - Redirect to first available child entity in a structure or channel section
{% set entry = craft.entries.slug('homepage').first() %}
{% redirect entry.workshopPages[0].url %}
@juban
juban / index.php
Created July 8, 2019 10:10
Test Craft CMS version
$schemaVersion = Craft::$app->getInstalledSchemaVersion();
if (version_compare($schemaVersion, '3.2.0', '>=')) {
// Do something specific to Craft CMS 3.2 and upper
}
@juban
juban / iOSPNGNormalizer.php
Last active February 15, 2021 07:20
PHP iOS PNG normalizer. This PHP class can be used to convert an iOS compressed PNG (CgBI format files) back to the standard format. Requires PHP 5.4 or greater. Credit goes to Axel E. Brzostowski for the original Python version of this script: http://www.axelbrz.com.ar/?mod=iphone-png-images-normalizer
<?php
class iOSPNGNormalizer
{
public static function fix($filename, $destfilename = null)
{
try {
$handle = fopen($filename, "rb");
$oldPNG = fread($handle, filesize($filename));
fclose($handle);
@juban
juban / index.php
Last active February 23, 2021 11:34
Craft CMS 3 - Add a Field to a section fields layout programmatically
<?php
// To put somewhere in a module, plugin or content migration
// Get the entry type to add the new field to
$entryType = Craft::$app->getSections()->getSectionByHandle('someSectionHandle')->entryTypes[0];
$field = Craft::$app->getFields()->getFieldByHandle('someFieldHandle');
// Get current fieldLayout
@juban
juban / index.php
Last active February 23, 2021 11:35
Craft CMS 3 - Set activation and reset password emails urls according to user group or site
<?php
Event::on(
\craft\records\User::class,
\craft\records\User::EVENT_AFTER_UPDATE,
static function (\yii\db\AfterSaveEvent $event) {
$userRecord = $event->sender;
$user = Craft::$app->getUsers()->getUserById($userRecord->id);
$sites = Craft::$app->getSites();
if ($user->isInGroup('user')) {