Intel kündigt Z390-Chipsatz für Core-i-8000-Prozessoren an

heise online Newsticker - 16. Mai 2018 - 10:00
Rechtzeitig vor der Computex kündigt Intel den Chipsatz Z390 an, der speziell für die Übertakter-Modelle der Core-i-8000-Reihe gedacht ist; damit ist die Zwischenlösung Z370 passé.

Landgericht: StayFriends muss Datenschutz-Voreinstellungen ändern

heise online Newsticker - 16. Mai 2018 - 10:00
Das soziale Netzwerk Stayfriends darf in den Voreinstellungen für seine Nutzer nicht festlegen, dass deren Profilbilder automatisch auf Suchmaschinen und Partnerwebseiten sichtbar sind. Das hat der vzbv durchgesetzt.

Deutsche Bahn: 60.000 Mitarbeiter bekommen Smartphone oder Tablet

heise online Newsticker - 16. Mai 2018 - 10:00
Bis zum Ende des nächsten Jahres sollen alle Mitarbeiter der Deutschen Bahn ein Dienst-Handy oder -Tablet haben.

Axelerant Blog: DrupalCamp Mumbai 2018: A Recap

Planet Drupal - 16. Mai 2018 - 9:46


DrupalCamp Mumbai
was held on 28th-29th April at IIT Bombay, bringing developers, students, managers, and organizations together and providing them the opportunity to interact, share knowledge, and help the community grow. 

EasyMesh: Wi-Fi Alliance zertifiziert jetzt Mesh-WLAN-Systeme

heise online Newsticker - 16. Mai 2018 - 9:00
2016 haben Startups wie Eero und andere Firmen den Herstellerverband Wi-Fi Alliance rechts überholt: Die ersten Mesh-WLAN-Systeme kamen als proprietäre Lösungen auf den Markt, ohne dass die WFA sie zertifizieren konnte. Jetzt erst erscheint ein Testplan.

Moog Grandmother: Erste Sounds des neuen Synthesizers

heise online Newsticker - 16. Mai 2018 - 9:00
Kurz vor dem Moogfest waren bereits Bilder des neuen semimodularen Synthesizers aufgetaucht. Nun zeigen erste Videos, wie die bunte Kiste klingt.

DSGVO: EU-Justizkommissarin will "die Panik verringern"

heise online Newsticker - 16. Mai 2018 - 8:00
EU-Justizkommissarin Věra Jourová geht nicht davon aus, dass am Stichtag in elf Tagen alle in Europa vollständig bereit sind für die neuen Datenschutzvorgaben. Bundeskanzlerin Merkel hatte zuvor von einer "Überforderung" gesprochen.

PGP und S/MIME: E-Mail-Verschlüsselung akut angreifbar

heise online Newsticker - 16. Mai 2018 - 8:00
Die Verschlüsselung mit PGP und S/MIME ist bei weitem nicht so zuverlässig, wie gedacht. Aufgrund unzureichender Standards, veralteter Technik und fehlerhaften Programmen könnten Angreifer in den Besitz verschlüsselt versendeter E-Mails gelangen.

Google will israelischen Cloud-Spezialisten Velostrata übernehmen

heise online Newsticker - 16. Mai 2018 - 7:00
Der Internet-Gigant stärkt seine Cloud-Sparte mit einem Zukauf: Velostrata bietet Tools für die unkomplizierte Migration von Workloads und Daten in eine Cloud an.

Hook 42: April Accessibility (A11Y) Talks

Planet Drupal - 16. Mai 2018 - 1:32

This month’s Accessibility Talk was an encore presentation of the panel’s Core Conversation at DrupalCon Nashville: Core Accessibility: Building Inclusivity into the Drupal Project
Helena McCabeCatherine McNally, and Carie Fisher discussed the fundamentals of accessibility and how they can be injected further into the Drupal project. All three are accessibility specialists in their fields.

Commerce Guys: Human Presence protects Drupal forms after Mollom

Planet Drupal - 16. Mai 2018 - 0:01

On April 2, 2018, Acquia retired Mollom, a spam fighting tool built by Drupal founder Dries Buytaert. As Dries tells the story, Mollom was both a technical and financial success but was ultimately shut down to enable Acquia to deploy its resources more strategically. At its peak, Mollom served over 60,000 websites, including many of ours!

Many sites are looking for alternatives now that Mollom is shut down. One such service Commerce Guys integrated earlier this year in anticipation of Mollom's closing is Human Presence, a fraud prevention and form protection service that uses multiple overlapping strategies to fight form spam. In the context of Drupal, this includes protecting user registration and login forms, content creation forms, contact forms, and more.

Similar to Mollom, Human Presence evaluates various parameters of a visitor's session to decide if the visitor is a human or a bot. When a protected form is submitted, the Drupal module requests a "human presence" confidence rating from the API (hence the name), and if the response does not meet a configurable confidence threshold, it will block form submission or let you configure additional validation steps if you choose. For example, out of the box, the module integrates the CAPTCHA module to rebuild the submitted form with a CAPTCHA that must be completed before the form will submit.

We believe Human Presence is a great tool to integrate on its own or in conjunction with other standalone modules like Honeypot. Furthermore, they're joining other companies like Authorize.Net, Avalara, and PayPal as Drupal Commerce Technology Partners. Their integration includes support for protecting shopping cart and checkout forms, and we are looking for other ways they can help us combat payment fraud in addition to spam.

Learn more about Human Presence or reach the company's support engineer through their project page on drupal.org.

Kanada: Sammelklage gegen Facebook wegen Reklame mit User-Fotos

heise online Newsticker - 15. Mai 2018 - 19:00
Seit sechs Jahren wehrt sich Facebook mit Formalargumenten gegen eine kanadische Sammelklage. Doch nun könnte bald über den Inhalt gestritten werden: Darf Facebook mit Namen und Fotos seiner User Werbung machen?

Eclipse Mita: Neue Programmiersprache für das Internet der Dinge

heise online Newsticker - 15. Mai 2018 - 18:30
Eclipse Mita ist für den Einsatz im Internet der Dinge konzipiert: Sie trennt strikt zwischen Applikationslogik und den Zielplattformen. Mita basiert grundsätzlich auf XDK Live, einer Programmiersprache von Bosch.

Acquia Developer Center Blog: Decoupling Drupal 8 with JSON API

Planet Drupal - 15. Mai 2018 - 17:51

As we saw in the previous post, core REST only allows for individual entities to be retrieved, and Views REST exports only permit the issuance of GET requests rather than unsafe methods as well. But application developers often need greater flexibility and control, such as the ability to fetch collections, sort and paginate them, and access related entities that are referenced.

In this column, we'll inspect JSON API, part of the surrounding contributed web services ecosystem that Drupal 8 relies on to provide even more extensive features relevant to application developers that include relationships and complex operations such as sorting and pagination.

Tags: acquia drupal planet

Virtuoso Performance: Importing specific fields with overwrite_properties

Planet Drupal - 15. Mai 2018 - 17:50
Importing specific fields with overwrite_properties mikeryan Tuesday, May 15, 2018 - 10:50am

While I had planned to stretch out my posts related to the "Acme" project, there are currently some people with questions about using overwrite_properties - so, I've moved this post forward.

By default, migration treats the source data as the system of record - that is, when reimporting previously-imported records, the expectation is to completely replace the destination side with fresh source data, discarding any interim changes which might have been made on the destination side. However, sometimes, when updating you may want to only pull specific fields from the source, leaving others (potentially manually-edited) intact. We had this situation with the event feed - in particular, the titles received from the feed may need to be edited for the public site. To achieve that, we used the overwrite_properties property on the destination plugin:

destination: plugin: 'entity:node' overwrite_properties: - 'field_address/address_line1' - 'field_address/address_line2' - 'field_address/locality' - 'field_address/administrative_area' - 'field_address/postal_code' - field_start_date - field_end_date - field_instructor - field_location_name - field_registration_price - field_remaining_spots - field_synchronized_title

When overwrite_properties is present, nothing changes when importing a new entity - but, if the destination entity already exists, the existing entity is loaded, and only the fields and properties enumerated in overwrite_properties will be, well, overwritten. In our example, note in particular field_synchronized_title - on initial import, both the regular node title and this field are populated from ClassName, but on updates only field_synchronized_title receives any changes in ClassName. This prevents any unexpected changes to the public title, but does make the canonical title from the feed available should an editor care to review and decide whether to modify the public title to reflect any changes.

Now, in this case we are creating the entities initially through this migration, and thus we know via the map table when a previously-migrated entity is being updated and thus overwrite_properties should be applied. Another use case is when the entire purpose of your migration is to update specific fields on pre-existing entities (i.e., not created by this migration). In this case, you need to map the IDs of the entities that are to be updated, otherwise the migration will simply create new entities. So, if you had a "nid_to_update" property in your source data, you would include

process: nid: nid_to_update

in your migration configuration. The destination plugin will then load that existing node, and only alter the specifies overwrite_properties in it.

Tags Drupal Planet Drupal Migration Use the Twitter thread below to comment on this post:

Importing specific fields with overwrite_properties https://t.co/0H3W1Ll0ts

— Virtuoso Performance (@VirtPerformance) May 15, 2018

 

Großbritannien: Codekarte aus dem Laden soll Zugang zu Online-Pornographie öffnen

heise online Newsticker - 15. Mai 2018 - 17:30
In Großbritannien soll Pornographie im Internet künftig nicht mehr für Minderjährige zugänglich sein. Damit Erwachsene solch einen Zugang nicht nur per Kreditkarte freischalten können, soll es auch anonyme Freischaltkarten geben.

Virtuoso Performance: Drupal 8 migration from a SOAP API

Planet Drupal - 15. Mai 2018 - 17:12
Drupal 8 migration from a SOAP API mikeryan Tuesday, May 15, 2018 - 10:12am

Returning from my sabbatical, as promised I’m catching up on blogging about previous projects. For one such project, I was contracted by Acquia to provide migration assistance to a client of theirs [redacted, but let’s call them Acme]. This project involved some straightforward node migrations from CSV files, but more interestingly required implementing two ongoing feeds to synchronize external data periodically - one a SOAP feed, and the other a JSON feed protected by OAuth-based authentication. There were a number of other interesting techniques employed on this project which I think may be broadly useful and haven’t previously blogged about - all-in-all, there was enough to write about on this project that rather than compose one big epic post, I’m going to break things down in a series of posts, spread out over several days so as not to spam Planet Drupal. In this first post of the sequence, I’ll cover migration from SOAP. The full custom migration module for this project is on Gitlab.

A key requirement of the Acme project was to implement an ongoing feed, representing classes (the kind people attend in person, not the PHP kind), from a SOAP API to “event” nodes in Drupal. The first step, of course, was to develop (in migrate_plus) a parser plugin to handle SOAP feeds, based on PHP’s SoapClient class. This class exposes functions of the web service as class methods which may be directly invoked. In WSDL mode (the default, and the only mode this plugin currently supports), it can also report the signatures of the methods it supports (via __getFunctions()) and the data structures passed as parameters and returned as results (via __getTypes()). WSDL allows our plugin to do introspection and saves the need for some explicit configuration (in particular, it can automatically determine the property to be returned from within the response).

migrate_example_advanced (a submodule of migrate_plus) demonstrates a simple example of how to use the SOAP parser plugin - the .yml is well-documented, so please review that for a general introduction to the configuration. Here’s the basic source configuration for this specific project:

source: plugin: url # To remigrate any changed events. track_changes: true data_fetcher_plugin: http # Ignored - SoapClient does the fetching itself. data_parser_plugin: soap # The method to invoke via the SOAP API. function: GetClientSessionsByClientId # Within the response, the object property containing the list of events. item_selector: SessionBOLExternal # Indicates that the response will be in the form of a PHP object. response_type: object # You won’t find ‘urls’ and ‘parameters’ in the source .yml file (they are inserted # by a web UI - the subject of a future post), but for demonstration purposes # this is what they might look like. urls: http://services.example.com/CFService.asmx?wsdl parameters: clientId: 1234 clientCredential: ClientID: 1234 Password: service_password startDate: 08-31-2016 # Unique identifier for each event (section) to be imported, composed of 3 columns. ids: ClassID: type: integer SessionID: type: integer SectionID: type: integer fields: - name: ClientSessionID label: Session ID for the client selector: ClientSessionID ...

Of particular note is the three-part source ID defined here. The way this data is structured, a “class” contains multiple “sessions”, which each have multiple “sections” - the sections are the instances that have specific dates and times, which we need to import into event nodes, and we need all three IDs to uniquely identify each unique section.

Not all of the data we need for our event nodes is in the session feed, unfortunately - we want to capture some of the class-level data as well. So, while, the base migration uses the SOAP parser plugin to get the session rows to migrate, we need to fetch the related data at run time by making direct SOAP calls ourselves. We do this in our subscriber to the PREPARE_ROW event - this event is dispatched after the source plugin has obtained the basic data per its configuration, and gives us an opportunity to retrieve further data to add to the canonical source row before it enters the processing pipeline. I won’t go into detail on how that data is retrieved since it isn’t relevant to general migration principles, but the idea is since all the class data is not prohibitively large, and multiple sessions may reference the same class data, we fetch it all on the first source row processed and cache it for reference by subsequent rows.

Community contributions

SOAP Source plugin - Despite the title (from the original feature request), it was implemented as a parser plugin.

Altering migration configuration at import time - the PRE_IMPORT event

Our event feed permits filtering by the event start date - by passing a ‘startDate’ parameter in the format 12-31-2016 to the SOAP method, the feed will only return events starting on or after that date. At any given point in time we are only interested in future events, and don’t want to waste time retrieving and processing past events. To optimize this, we want the startDate parameter in our source configuration to be today’s date each time we run the migration. We can do this by subscribing to the PRE_IMPORT event.

In acme_migrate.services.yml:

services: ... acme_migrate.update_event_filter: class: Drupal\acme_migrate\EventSubscriber\UpdateEventFilter tags: - { name: event_subscriber }

In UpdateEventFilter.php:

class UpdateEventFilter implements EventSubscriberInterface { /** * {@inheritdoc} */ public static function getSubscribedEvents() { $events[MigrateEvents::PRE_IMPORT] = 'onMigrationPreImport'; return $events; }

The migration system dispatches the PRE_IMPORT event before the actual import begins executing. At that point, we can insert the desired date filter into the migration configuration entity and save it:

/** * Set the event start date filter to today. * * @param \Drupal\migrate\Event\MigrateImportEvent $event * The import event. */ public function onMigrationPreImport(MigrateImportEvent $event) { // $event->getMigration() returns the migration *plugin*. if ($event->getMigration()->id() == 'event') { // Migration::load() returns the migration *entity*. $event_migration = Migration::load('event'); $source = $event_migration->get('source'); $source['parameters']['startDate'] = date('m-d-Y'); $event_migration->set('source', $source); $event_migration->save(); } }

Note that the entity get() and set() functions only operate directly on top-level configuration properties - we can’t get and set, for example ‘source.parameters.startDate’ directly. We need to retrieve the entire source configuration, modify our one value within it, and set the entire source configuration back on the migration.

Tags Drupal Planet Drupal Migration Use the Twitter thread below to comment on this post:

Drupal 8 migration from a SOAP API https://t.co/hf8LGiATsh

— Virtuoso Performance (@VirtPerformance) May 15, 2018

Web Wash: Managing Media Assets using Core Media in Drupal 8

Planet Drupal - 15. Mai 2018 - 17:00

There's a lot of momentum to fix media management in Drupal 8 thanks to the Media Entity module. By using a combination of Media EntityEntity Embed, Entity Browser and some media providers such as Media entity image you could add decent media handling in Drupal 8.

Then in Drupal 8.4, the Media Entity functionality was moved into a core module called Media. However, the core module was hidden by default. Now in Drupal 8.5 it's no longer hidden and you can install it yourself.

In this tutorial, you'll learn how to install and configure the Media module in Drupal 8 core. This tutorial is an updated version of the How to Manage Media Assets in Drupal 8 tutorial where we cover Media Entity.

Configuring Entity Embed and Entity Browser for the core Media module is essentially the same as with Media Entity. So if you have experience using Media Entity, then you'll be fine using the core Media module.

c't-Fotowettbewerb "Illusion": die Gewinner

heise online Newsticker - 15. Mai 2018 - 17:00
Die Bewertungsphase unseres Fotowettbewerbs "Illusion" ist beendet und die zehn am höchsten bewerteten Fotos stehen fest. Sieger ist die Arbeit "Spiegelbild" von Wilhelm Schultes.

US-Präsident Trump will Smartphone-Hersteller ZTE retten

heise online Newsticker - 15. Mai 2018 - 17:00
ZTE musste kürzlich seinen Betrieb aufgrund von US-Sanktionen nahezu einstellen. Jetzt drängt US-Präsident Donald Trump das US-Handelsministerium, eine Lösung zu finden, um ZTE wieder ins Geschäft zu bringen. Kritik gibt es von den Demokraten.