Skip to content

Instantly share code, notes, and snippets.

@chx
chx / Table.php
Last active September 13, 2023 09:52
Media migration
View Table.php
<?php
namespace Drupal\sd8_import\Plugin\migrate\source;
use Drupal\migrate\Plugin\migrate\source\SqlBase;
/**
* Table source from database.
*
* @MigrateSource(
View Generate.php
<?php
// Note this is not a transliterator. See https://unicode-org.github.io/icu/userguide/transforms/general/#overview
// on why it was originally named Transliterator but now does a lot more.
$transformation = \Transliterator::createFromRules(':: NFD; :: [:Mn:] Remove; :: NFC;');
$letters = preg_grep('/\pL/u', array_map('utf8', range(0x80, 0x2000)));
$letters = array_combine($letters, $letters);
$transformed = array_map([$transformation, 'transliterate'], $letters);
$map = array_diff_assoc($transformed, $letters);
print count($map);
View config.php
<?php
# put this file in ~/.config/psysh/
if (class_exists('Drupal')) {
foreach (\Drupal::entityTypeManager()->getDefinitions() as $definition) {
$class = $definition->getClass();
$parts = explode('\\', $class);
class_alias($class, end($parts));
}
}
@chx
chx / PauseRedirectRequestSubscriber.php
Created September 17, 2022 20:14
Pause redirect module
View PauseRedirectRequestSubscriber.php
<?php
namespace Drupal\pause_redirect\EventSubscriber;
use Drupal\Core\Messenger\MessengerInterface;
use Drupal\pause_redirect\Form\PauseRedirectSettingsForm;
use Drupal\redirect\EventSubscriber\RedirectRequestSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\Event\RequestEvent;
@chx
chx / MapItemTest.php
Created October 31, 2020 08:30
map item test
View MapItemTest.php
<?php
namespace Drupal\Tests\field\Kernel;
use Drupal\entity_test\Entity\EntityTestMapField;
class MapItemTest extends FieldKernelTestBase {
protected function setUp(): void {
parent::setUp();
@chx
chx / resolve.php
Last active May 2, 2020 21:17
Drupal config export YAML diff resolver
View resolve.php
<?php
use Drupal\Core\Serialization\Yaml;
include 'autoload.php';
chdir('..');
$old = Yaml::decode(shell_exec('git show origin/master^:' . $argv[1]));
$new = Yaml::decode(shell_exec('git show origin/master:' . $argv[1]));
$diff = make_diff($new, $old);
View Redirector.json
{
"createdBy": "Redirector v3.5.3",
"createdAt": "2020-04-16T03:37:40.345Z",
"redirects": [
{
"description": "No more JIRA popups",
"exampleUrl": "https://example.atlassian.net/secure/RapidBoard.jspa?rapidView=102&modal=detail&selectedIssue=WEB-8424&quickFilter=107",
"exampleResult": "https://example.atlassian.net/browse/WEB-8424",
"error": null,
"includePattern": "^(.*atlassian.net)/secure/RapidBoard.jspa.*modal=detail&selectedIssue=([^&]+)",
@chx
chx / gist:9dbace679a8798f96da4a40e4df51902
Last active March 4, 2020 04:44
Config export from production
View gist:9dbace679a8798f96da4a40e4df51902
On production:
rm -Rf /tmp/cex/* /tmp/cex.tgz
drush cex --destination=/tmp/cex -y sync
cd /tmp/cex
tar czf ../cex.tgz .
On local:
@chx
chx / rest.resource.user_registration.yml
Last active February 14, 2020 08:22
Drupal 8 JSON user cycle
View rest.resource.user_registration.yml
To register (admin needs to install rest module, add the registration resource attached, the right registration settings and the user permission 'restful post user_registration' granted to anonymous):
➜ curl -H "Content-type: application/json" -X POST 'http://localhost/docroot/user/register?_format=json' --data '{"name":{"value":"test name"},"mail":{"value":"chx1975@gmail.com"},"pass":{"value":"test pass"}}'
{"uid":[{"value":14048}],"uuid":[{"value":"6494d669-086a-451f-b7e5-573ffb4e1dfe"}],"langcode":[{"value":"hu"}],"name":[{"value":"test name"}],"created":[{"value":"2020-02-14T05:18:53+00:00","format":"Y-m-d\\TH:i:sP"}],"changed":[{"value":"2020-02-14T05:18:53+00:00","format":"Y-m-d\\TH:i:sP"}],"default_langcode":[{"value":true}],"synonyms":[]}%
To log in (unpatched core requires a user name here but I patched it so users can use their email as well):
➜ curl -c cookie.txt --request POST 'http://localhost/docroot/user/login?_format=json' --data '{"name":"chx1975@gmail.com","pass":"test pass"}'
{"current_
View gist:929fbcebc80cc5ead5c6a8684d5a33db
To register:
➜ fortepan git:(master) ✗ curl -H "Content-type: application/json" -X POST 'http://localhost/fortepan/docroot/user/register?_format=json' --data '{"name":{"value":"test name"},"mail":{"value":"chx1975@gmail.com"},"pass":{"value":"test pass"}}'
{"uid":[{"value":14048}],"uuid":[{"value":"6494d669-086a-451f-b7e5-573ffb4e1dfe"}],"langcode":[{"value":"hu"}],"name":[{"value":"test name"}],"created":[{"value":"2020-02-14T05:18:53+00:00","format":"Y-m-d\\TH:i:sP"}],"changed":[{"value":"2020-02-14T05:18:53+00:00","format":"Y-m-d\\TH:i:sP"}],"default_langcode":[{"value":true}],"synonyms":[]}%
To log in (unpatched core requires a user name here but I patched it so users can use their email as well):
➜ fortepan git:(master) ✗ curl -c cookie.txt --request POST 'http://localhost/fortepan/docroot/user/login?_format=json' --data '{"name":"chx1975@gmail.com","pass":"test pass"}'
{"current_user":{"uid":"14048","name":"test name"},"csrf_token":"AH8CpdwKyNdoTI89F3tUypGm470Qi9eQYYbeS-wK7is","logout_token":"NAH-