hello!
late #introduction
I'm Dmitri, Belgian #php dev for about 20 years
Since 4 years very in love with #DDD which was a real revelation to me...
The missing link between Business, Architecture and Code
I prefer backend work (really don't enjoy frontend)
Work a lot with #symfony and very fond of @ApiPlatform which is, to me, the perfect stack to express my art/code.
also:
- #podcast addict
- #OSS enthusiast
- [belgian] beer lover
- drink too much coffee
- love walking in nature
Okay, as an overdue #introduction I'm Luc (he/him), a #developer from the Netherlands with a passion for #opensource. I work a lot with #php and #javascript.
When I'm not working I'm usually running a game of #dnd or caring for my #autistic special-needs kid :)
HACKLOG 2x21 - Attacchi Blind SQL Injection & SQLmap
https://peertube.uno/w/wZMe6PrruQ5g6516PLAXQ3
HACKLOG 2x20 - Attacchi SQL Injection
https://peertube.uno/w/76Zd1asV3NoxXeSAEVGvFU
HACKLOG 2x19 - Attacchi Command Execution (PHP)
https://peertube.uno/w/a6o2zC3L8rsi55hBDxz4fj
5 Ways Underpin Helps You Build Better WordPress Plugins
WordPress is not a framework, it's a management system. When building WordPress plugins, there's a few rough rules on how to use WordPress, but otherwise you're pretty much on your own to build your plugin's architecture. I use Underpin to help me create structure in my plugin. This post talks about 5 of the biggest reasons why I use Underpin, and how it can help you build better WordPress plugins It Logs Everything It Does Underpin comes with a robust event logger. This logger allows you […]
PHP Profissional - Padrões e Ferramentas
https://peertube.debian.social/w/2bQJU9cthp4qCVzDx64PSF
Kontakteverwaltung: Perfektionistisch bis zwanghaft
Ich gebe zu, bei meiner Kontaktverwaltung bin ich durchaus perfektionistisch bis zwanghaft. Jahre lang habe ich Outlook dafür herangezogen und war auch mit der Synchronisation mit meinen ersten mobilen Endgeräten sehr zufrieden. Mit dem Umstieg auf Android bin ich dann schweren Herzens auch mit meinen Kontakten zu Google Contacts umgezogen. Mit welchem Programm ich das gemacht habe weiß ich leider nicht mehr, die Suche hat damals etwas gedauert, weil es mir wichtig war, alle Kontaktbilder (und das waren viele!) beim Umzug nicht zu verlieren. Hat dann auch alles soweit geklappt, einzig die Darstellung der Namen war etwas unschön. Dazu muss man wissen, dass es in Kontaktverwaltungen verschiedenste Namensfelder gibt, einfach Vor- und Nachname wäre da zu simpel. Bei meinem Umzug wurden die Felder für Vor- und Nachnamen korrekt belegt, zusätzlich wurde aber der angezeigte Name auf “Nachname, Vorname” gesetzt. Das ist eigentlich erst mal egal, kann aber unschön werden, wenn man dann andere Tools mit seinen Google-Kontakten synchronisiert. Ich nutze bspw. den automatischen Datenabgleich mit meiner Fritzbox, der dafür sorgt, dass bei allen Nummern, die ich in meinen Kontakten habe, auf dem Festnetztelefon der Name des Anrufers angezeigt wird, auch wenn dieser gar nicht im Festnetztelefon gespeichert ist. Und ich nutze das Thunderbird-Add-On “Google Contacts”, um im Mailclient meines Vertrauens immer die Kontakte aktuell zu haben. Und dort ergibt sich dann z.B. das “Problem”, dass eine Mail dann nicht an ‘Vorname Nachname <mail@dres.se>’ gesendet wird, sondern an ‘”Nachname, Vorname” <mail@dres.se>’. Ist jetzt nicht weiter schlimm, erzeugt aber beim Kontaktperfektionisten ein gewisses Unbehagen.
In Outlook hatte ich mir mal ein kleines VBA-Schnipsel erstellt, um alle Kontakte durchzugehen und Felder nach meinen Änderungswünschen zu modifizieren. Sowas wollte ich jetzt auch für meine Google-Kontakte haben und habe mich mal hingesetzt, und eine kleine PHP-Lösung zusammengestrickt. Der Großteil des Codes ist von irgendwo zusammengeklaut und eben für meine Bedürfnisse angepasst, benutzt wird außerdem das Zend Framework. Ich habe damit jetzt einfach mal alle “Nachname, Vorname” in “Vorname Nachname” ändern lassen, es lässt sich aber auch leicht an andere “Problemfälle” anpassen. Viel Spaß.
<?php
// Pfad zur ZendFramework-Library setzen:
set_include_path(get_include_path() . PATH_SEPARATOR . '/DEIN_PFAD/ZendFramework-1.10.8-minimal/library');
// Zend Gdata-Libraries laden:
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
Zend_Loader::loadClass('Zend_Http_Client');
Zend_Loader::loadClass('Zend_Gdata_Query');
Zend_Loader::loadClass('Zend_Gdata_Feed');
// Zugangsdaten für Google-Account.
// Bei "Bestätigung in zwei Schritten" muss ein extra "anwendungsspezifisches Passwort" angelegt werden:
$user = "DEIN_LOGIN@gmail.com";
$pass = "DEIN_PASSWORT";
// Einloggen und richtige Protokollversion setzen:
$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, 'cp');
$gdata = new Zend_Gdata($client);
$gdata->setMajorProtocolVersion(3);
// Abfrage starten, die einfach mal alle (max. 2000) Kontakte holt:
$query = new Zend_Gdata_Query('http://www.google.com/m8/feeds/contacts/default/full');
$query->maxResults = 2000;
$query->setParam('orderby', 'lastmodified');
$query->setParam('sortorder', 'descending');
$feed = $gdata->getFeed($query);
//echo "<pre>"; print_r($feed); echo "</pre>";
echo "<pre>";
echo "<h1>".$feed->totalResults." Kontakte gefunden in '".$feed->title."'</h1>";
// Alle Einträge durchgehen:
foreach($feed as $entry)
{
// Der Einfachheit halber die Daten auch in XML konvertieren:
$xml = simplexml_load_string($entry->getXML());
//echo "\n<hr>\n"; print_r($xml);
// Jetzt nur DIE Kontakte durchgehen, die eine bestimmte Bedingung erfüllen:
//if (preg_match("/Vorname/i", (string) $xml->name->fullName)) // "Vorname" kommt im angezeigten Namen vor
//if (preg_match("/Daniel/i", (string) $xml->name->fullName)) // "Daniel" kommt im angezeigten Namen vor
if (preg_match("/,/", (string) $xml->name->fullName)) // "," kommt im angezeigten Namen vor
{
echo "\n<hr>\n"; print_r($xml);
// Es gibt verschiedene Namensfelder: Vorname, Nachname, angezeigter Name etc.
// Sinnvollerweise soll der angezeigte Name gleich "Vorname Nachname" sein.
// Oft ist er aber "Nachname, Vorname", was dann Probleme macht, wenn man die Google Contacts auch in andere Programme importiert (Thunderbird, Fritz!Box, ...)
// Daher einfach denn angezeigten Namen immer aufh "Vorname Nachname" setzen:
echo "<h2>Setze angezeigten Namen von \"".$xml->name->fullName."\" auf \"".$xml->name->givenName." ".$xml->name->familyName."\"...</h2>";
$xml->name->fullName = $xml->name->givenName.' '.$xml->name->familyName;
// Geänderten Eintrag speichern.
// Dazu noch irgendwelche Header setzen, sonst geht es nicht (siehe http://stackoverflow.com/questions/2989257/if-match-or-if-none-match-header-or-entry-etag-attribute-required-error-when-t)
$extra_header = array('If-Match'=>'*');
$entryResult = $gdata->updateEntry($xml->saveXML(), $entry->getEditLink()->href, null, $extra_header);
}
}
echo "<h1>Fertig!</h1>";
echo "</pre>";
#Code #Google #Kontakte #PHP #Programmierung #ZendFrameworkWordPress Snippets
Mit WPSnippets ist vor Kurzem eine Microsite online gegangen die mehr oder weniger bekannte WordPress Hacks, Tipps und Snippets aggregiert. Die Seite wird regelmäßig erweitert und bietet somit eine schöne Quelle an Code-Schnipseln die Ihr sofort in Euer Theme einbauen könnt. WordPress Snippetshttps://kulturbanause.de/news/wordpress-snippets/