Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

17. Migrationsreferenz

Dieses Kapitel ist der Referenzanhang zu den drei vorangehenden Migrationskapiteln. Es enthält die Tabellen, auf die diese Kapitel verweisen, statt sie zu wiederholen: jede Tabelle des Kernel-Schemas von Exponential 6.0…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/install/17-migration-reference.md

On this page

This page is a translation. Read the English original

17. Migrationsreferenz

Dieses Kapitel ist der Referenzanhang zu den drei vorangehenden Migrationskapiteln. Es enthält die Tabellen, auf die diese Kapitel verweisen, statt sie zu wiederholen: jede Tabelle des Kernel-Schemas von Exponential 6.0 mit ihrem Zweck und ihrem Namen in eZ Platform und Ibexa; jeden Kernel-Datentyp mit den Spalten, in denen er seinen Wert speichert, und dem passenden Feldtyp; die INI-Einstellungen, die ein YAML-Gegenstück haben; Template-Konstrukte neben ihren Twig-Entsprechungen; die Legacy-PHP-Klassen neben den Diensten der Public API; Passwort-Hash-Typen, URL-Alias-Tabellen und Speicherpfade für Bilder; jedes Upgrade-, Reparatur- und Konvertierungsskript der Installation; eine Liste von Datenprüfungen, die vor dem Verschieben von Inhalten auszuführen sind; und ein Glossar der Namen, die sich zwischen den Generationen geändert haben. Die alten Produktnamen (eZ Publish 4.x und 5.x, eZ Platform, Ibexa DXP) erscheinen nur dort, wo sie das System bezeichnen, von dem eine Website kommt oder zu dem sie wechselt.

Inhalt · Zurück: 16. Migration von eZ Platform und Ibexa

Inhalt dieses Kapitels

So verwenden Sie es: Beginnen Sie mit dem Kapitel Ihres Weges (14 für 4.x, 15 für den 5.x-Stack, 16 für eZ Platform und Ibexa) und kommen Sie hierher, wenn ein Schritt einen Namen braucht. Führen Sie vor jedem Umzug die Prüfungen aus 17.8 auf einer Kopie der Datenbank aus: Sie finden die Daten, die die andere Seite ablehnen wird, solange sie noch günstig zu beheben sind. Bei einem Umzug auf die Plattform entscheidet die Datentyptabelle in 17.3, was konvertiert werden muss; bei einem Umzug zu Exponential zeigen Ihnen die Spalten „Ibexa 4.6“ und „Ibexa 5“ in 17.2, welche Ihrer Tabellen Exponential liest und welche es ignoriert.

17.1 Wie die Tabellen geprüft wurden

Jeder Name in diesem Kapitel wurde an Code oder Daten überprüft, und zwar an einer dieser Stellen:

QuelleWofür sie verwendet wurde
Dieses Repositoryshare/db_schema.dba und kernel/sql/{mysql,postgresql,sqlite}/, kernel/classes/datatypes/*/, settings/*.ini, kernel/common/eztemplateautoload.php, lib/eztemplate/classes/eztemplateautoload.php, kernel/classes/*.php, bin/php/, update/
Eine Ibexa-DXP-4.6-Installation auf demselben Server (ibexa/core v4.6.28)Die Methoden der Public-API-Dienste, die Namen der Twig-Funktionen, die Aliase der Feldtypen (fieldtypes.yml) und das Schema des Legacy-Speichers (schema.yaml)
Die Ibexa-5-Referenzinstallation der Media-Site, die für die Portierung der Media-Site verwendet wurde (nur lesend)Die Namen und Spalten der ibexa_*-Tabellen, die in ihren Inhalten gespeicherten Feldtyp-Bezeichner, der verwendete Passwort-Hash-Typ, der Aufbau der Bildpfade sowie echte ibexa.yaml-Konfiguration für Siteaccesses, Bildvarianten, DFS und HTTP-Cache
Die Migrationsseiten und die Feldtyp-Referenz des Herstellers (Quellen)Die dokumentierte Zuordnung der Feldtypen, die nicht unterstützten Feldtypen, Attributtypen für benutzerdefinierte Tags und die häufigen Probleme nach einer Migration

Die Referenzdatenbank (SQLite) wurde nur lesend geöffnet und ausschließlich mit SELECT-Anweisungen abgefragt. Alles, was sich an keiner dieser Stellen überprüfen ließ, ist mit (hier nicht geprüft) gekennzeichnet.

Ibexa DXP 4.6 verwendet noch die Legacy-Tabellennamen (ezcontentobject, ezuser ...) und die Legacy-Bezeichner der Feldtypen (ezstring, ezimage ...). Die Ibexa-5-Datenbank benennt beides um: Tabellen werden zu ibexa_*, wobei einige Spalten umbenannt werden, und Feldtypen werden zu ibexa_*. Wo sie sich unterscheiden, sind unten beide Spalten angegeben.

17.2 Referenz des Datenbankschemas

Das Kernel-Schema von Exponential 6.0 umfasst 128 Tabellen: share/db_schema.dba, kernel/sql/mysql/kernel_schema.sql und kernel/sql/postgresql/kernel_schema.sql führen dieselben 128 auf. kernel/sql/sqlite/schema.sql hat drei weitere, die zu Extensions gehören, für SQLite aber vorab angelegt werden: ezgmaplocation (ezgmaplocation), ezstarrating und ezstarrating_data (ezstarrating). Die Cluster-Tabellen (ezdfsfile, ezdfsfile_cache) stehen in der separaten Datei kernel/sql/mysql/cluster_dfs_schema.sql.

Legende für die letzten beiden Spalten: der Name der Tabelle im Schema des Legacy-Speichers von Ibexa DXP 4.6 und in der Ibexa-5-Referenzdatenbank; „gleich“ bedeutet derselbe Name; „—“ bedeutet, dass die Tabelle dort nicht existiert.

Inhalts-Repository

TabelleZweckIbexa 4.6Ibexa 5
ezcontentobjectEine Zeile pro Inhaltsobjekt: Klasse, Eigentümer, Sektion, aktuelle Version, Sprachmaske, Remote-IDgleich (ergänzt is_hidden)ibexa_content (contentclass_id heißt content_type_id; ergänzt is_hidden)
ezcontentobject_versionVersionen eines Objekts, mit Status und Erstellergleichibexa_content_version
ezcontentobject_attributeFeldwerte pro Objekt, Version und Sprache (data_text, data_int, data_float, sort_key_int, sort_key_string)gleichibexa_content_field (contentclassattribute_id heißt content_type_field_definition_id)
ezcontentobject_nameObjektname pro Version und Sprachegleichibexa_content_name
ezcontentobject_linkBeziehungen zwischen Objekten (relation_type 1 allgemein, 2 Einbettung, 4 Link, 8 Attribut)gleichibexa_content_relation
ezcontentobject_treeKnoten: der Baum, mit path_string, depth, Sortierfeld und -reihenfolge, Sichtbarkeitgleichibexa_content_tree
ezcontentobject_trashKnoten im Papierkorbgleichibexa_content_trash
eznode_assignmentWo eine Version bei der Veröffentlichung platziert wirdgleichibexa_node_assignment
ezcontent_languageSprachen und ihr Bit in den Sprachmaskengleichibexa_content_language
ezcontentclassInhaltsklassen pro Versiongleichibexa_content_type (version heißt status)
ezcontentclass_attributeKlassenattribute mit ihrem Datentyp und ihren Einstellungen (data_int1..4, data_text1..5, data_float1..4)gleich (ergänzt is_thumbnail)ibexa_content_type_field_definition
ezcontentclass_nameKlassennamen pro Sprachegleichibexa_content_type_name
ezcontentclassgroupKlassengruppengleich (ergänzt is_system)ibexa_content_type_group
ezcontentclass_classgroupZuordnungen von Klassen zu Gruppengleichibexa_content_type_group_assignment
ezcobj_state, ezcobj_state_group, ezcobj_state_language, ezcobj_state_group_language, ezcobj_state_linkObjektzustände, ihre Gruppen, Übersetzungen und der Zustand jedes Objektsgleichibexa_object_state, ibexa_object_state_group, ibexa_object_state_language, ibexa_object_state_group_language, ibexa_object_state_link
ezsectionSektionengleichibexa_section
ezsite_dataSchlüssel-Wert-Paare wie die Schemaversion (ezpublish-version)gleichibexa_site_data
ezpackageInstallierte Paketegleichibexa_package
ezpending_actionsZurückgestellte Arbeiten wie Index-Aktualisierungen (action, param)——
ezpublishingqueueprocessesWarteschlange für asynchrones Veröffentlichen——

Datentyp-Speicher

TabelleZweckIbexa 4.6Ibexa 5
ezbinaryfileDateien von ezbinaryfile-Attributengleichibexa_binary_file
ezmediaDateien und Player-Einstellungen von ezmedia-Attributengleichibexa_media
ezimagefileJeder Dateipfad, den ein ezimage-Attribut verwendet (Original und Aliase)gleichibexa_image_file
ezkeyword, ezkeyword_attribute_linkSchlüsselwörter und ihre Verknüpfungen mit Attributengleich (Verknüpfung ergänzt version)ibexa_keyword, ibexa_keyword_field_link (ergänzt version)
ezurl, ezurl_object_linkExterne URLs und die Attribute, die sie verwendengleichibexa_url, ibexa_url_content_link
ezenumvalue, ezenumobjectvalueezenum-Optionen und gewählte Werte——
ezmultipricedataPreise pro Währung von ezmultiprice-Attributen——
ezisbn_group, ezisbn_group_range, ezisbn_registrant_rangeISBN-13-Bereiche für die Gliederung mit Bindestrichen und die Validierung——
ezproductcategoryProduktkategorien (Datentyp ezproductcategory)——
ezsubtree_notification_ruleTeilbaum-Abonnements (Datentyp ezsubtreesubscription)——
ezinfocollection, ezinfocollection_attributeAus Formularen gesammelte Informationen—gleich (erhalten durch das Netgen-Bundle für Informationssammlung, nicht durch Ibexa)

Benutzer, Rollen und Sitzungen

TabelleZweckIbexa 4.6Ibexa 5
ezuserLogin, E-Mail, Passwort-Hash und Hash-Typ pro Benutzerobjektgleich (ergänzt password_updated_at)ibexa_user (ergänzt password_updated_at)
ezuser_settingAktiviert-Kennzeichen und maximale Anzahl gleichzeitiger Anmeldungengleichibexa_user_setting
ezuser_accountkeySchlüssel zur Kontoaktivierunggleichibexa_user_accountkey
ezuser_roleRollenzuweisungen mit optionaler Einschränkung auf Teilbaum oder Sektiongleichibexa_user_role
ezrole, ezpolicy, ezpolicy_limitation, ezpolicy_limitation_valueRollen, Richtlinien und ihre Einschränkungengleichibexa_role, ibexa_policy, ibexa_policy_limitation, ibexa_policy_limitation_value
ezpreferencesBenutzerbezogene Präferenzengleichibexa_user_preference
ezuservisitLetzter Besuch, Anzahl der Anmeldungen, fehlgeschlagene Anmeldeversuche——
ezforgot_passwordSchlüssel zum Zurücksetzen des Passworts——
ezsessionSitzungsspeicher in der Datenbank——
ezuser_discountruleRabattregeln pro Benutzer (Shop)——
ezcontentbrowsebookmarkLesezeichen (Exponential ergänzt folder_id, priority)gleich (ohne Ordnerspalten)ibexa_content_bookmark
ezcontentbrowserecentZuletzt durchsuchte Knoten——
expbookmark_folderLesezeichenordner (Exponential)——

URLs und Suche

TabelleZweckIbexa 4.6Ibexa 5
ezurlalias_mlMehrsprachige URL-Aliase, eine Zeile pro Pfadelement und Sprachegleichibexa_url_alias_ml
ezurlalias_ml_incrID-Sequenz für ezurlalias_mlgleichibexa_url_alias_ml_incr
ezurlaliasDie URL-Alias-Tabelle aus der Zeit vor 4.0, die nur vom Import in updateniceurls.php gelesen wirdgleichibexa_url_alias
ezurlwildcardURL-Platzhaltergleichibexa_url_wildcard
ezsearch_word, ezsearch_object_word_linkDer eingebaute Suchindexgleichibexa_search_word, ibexa_search_object_word_link
ezsearch_search_phraseSuchstatistiken——

Workflows, Benachrichtigungen und Zusammenarbeit

TabelleZweckIbexa 4.6Ibexa 5
ezworkflow, ezworkflow_event, ezworkflow_group, ezworkflow_group_link, ezworkflow_assign, ezworkflow_processWorkflows, ihre Ereignisse und laufende Prozesse——
eztriggerWelcher Workflow bei welcher Operation ausgeführt wird——
ezoperation_memento, ezmodule_runZustand von Operationen und Modulen, die von einem Workflow unterbrochen wurden——
ezwaituntildatevalueEinstellungen des Ereignisses „Warten bis Datum“——
ezapprove_itemsElemente, die auf Freigabe warten——
ezcollab_group, ezcollab_item, ezcollab_item_group_link, ezcollab_item_message_link, ezcollab_item_participant_link, ezcollab_item_status, ezcollab_notification_rule, ezcollab_profile, ezcollab_simple_messageDas System für Zusammenarbeit (Freigabenachrichten)——
eznotificationevent, eznotificationcollection, eznotificationcollection_item, ezgeneral_digest_user_settingsBenachrichtigungsereignisse, Mail-Warteschlange und Einstellungen für Sammelbenachrichtigungen——
ezmessageAusgehende Benachrichtigungen——
ezscheduled_scriptFortschritt lang laufender Skripte——

Shop

TabelleZweckIbexa 4.6Ibexa 5
ezbasket, ezwishlistWarenkörbe und Wunschlisten——
ezproductcollection, ezproductcollection_item, ezproductcollection_item_optProdukte in einem Warenkorb oder einer Bestellung——
ezorder, ezorder_item, ezorder_status, ezorder_status_history, ezorder_nr_incrBestellungen, ihr Status und die Sequenz der Bestellnummern——
ezpaymentobjectZustand des Zahlungs-Gateways——
ezcurrencydataWährungen und Kurse——
ezvattype, ezvatrule, ezvatrule_product_categoryMehrwertsteuertypen und -regeln——
ezdiscountrule, ezdiscountsubrule, ezdiscountsubrule_valueRabattregeln——

Weitere Kernel-Funktionen

TabelleZweckIbexa 4.6Ibexa 5
ezrss_export, ezrss_export_item, ezrss_importAusgehende und eingehende RSS-Feeds——
ezrss_export_opml_itemElemente des OPML-Exports (Exponential)——
ezpdf_exportPDF-Exporte——
eztipafriend_counter, eztipafriend_requestWeiterempfehlen („Tip a friend“)——
ezview_counterSeitenaufrufe pro Knoten——
ezprest_clients, ezprest_authorized_clients, ezprest_authcode, ezprest_tokenOAuth-Clients und -Tokens der REST-API——
expaudit_event, expaudit_cursor, expaudit_fileDas Audit-Protokoll (Exponential)——
expmail_category, expmail_preference, expmail_consent_log, expmail_pending, expmail_suppressionMail-Präferenzen, Einwilligungen und Sperrlisten (Exponential)——

Tabellen, die es nur auf der Symfony-Plattform gibt

Ibexa 4.6Ibexa 5Zweck
ezcontentclass_attribute_mlibexa_content_type_field_definition_mlÜbersetzte Namen, Beschreibungen und Einstellungen von Felddefinitionen
eznotificationibexa_notificationBenachrichtigungen der Administrationsoberfläche
ibexa_settingibexa_settingPlattform-Einstellungen
ibexa_token, ibexa_token_typegleichTokens (zum Beispiel zum Zurücksetzen des Passworts)
ezdfsfileibexa_dfs_fileMetadaten des DFS-Clusters; in Exponential kommt dieselbe Tabelle aus kernel/sql/mysql/cluster_dfs_schema.sql
ezgmaplocationibexa_map_locationKartenorte; in Exponential gehört die Tabelle zur Extension ezgmaplocation
—ibexa_user_invitation, ibexa_user_invitation_assignmentBenutzereinladungen
—ibexa_messenger_messages, ibexa_messenger_lock_keysWarteschlange von Symfony Messenger

Extensions bringen ihre eigenen Tabellen mit, die auf beiden Seiten ihre Namen behalten, wenn die Extension ein Gegenstück auf der Plattform hat: eztags, eztags_keyword und eztags_attribute_link (eztags und das Netgen Tags Bundle) sind unter diesen Namen in der Ibexa-5-Referenzdatenbank vorhanden, ebenso sckenhancedselection (enhancedselection2). Die Tabellen ezm_block und ezm_pool von ezflow (extension/ezflow/sql/) haben kein Gegenstück; siehe den Page-Feldtyp in 17.3.

17.3 Datentypen und Feldtypen

Der Kernel registriert 35 Datentypen (settings/content.ini [DataTypeSettings] AvailableDataTypes[]). Jeder ist in kernel/classes/datatypes/<name>/<name>type.php implementiert, und der unten angegebene data_type_string ist die Konstante DATA_TYPE_STRING dieser Klasse. Die Speicherspalten sind die von ezcontentobject_attribute. Der Sortierschlüssel ist das, was sortKeyType() zurückgibt: int füllt sort_key_int, string füllt sort_key_string, und false füllt keine von beiden (kernel/classes/ezcontentobjectattribute.php).

Der Bezeichner für Ibexa 4.6 ist der Alias in der fieldtypes.yml von ibexa/core (oder im genannten Bundle); „Null“ bedeutet, dass 4.6 den Bezeichner mit dem Null-Feldtyp registriert, der den gespeicherten Wert lädt, ohne ihn zu verstehen. Der Bezeichner für Ibexa 5 ist derjenige aus der Feldtyp-Referenz oder, wo vermerkt, derjenige, der in der Referenzdatenbank gespeichert ist.

Datentyp (data_type_string)Gespeichert inSortierschlüsselExterne TabellenIbexa 4.6Ibexa 5Hinweise
ezauthordata_text: XML <ezauthor><authors><author .../>——ezauthoribexa_authorGleicher Wert: eine Liste von Paaren aus Name und E-Mail-Adresse
ezbinaryfiledie ezbinaryfile-Zeile (Attribut-ID und Version)—ezbinaryfileezbinaryfileibexa_binaryfile (in der Referenzdatenbank gespeichert)Dateien unter <storage>/original/<mime group>/; siehe 17.7
ezbooleandata_int 0 oder 1int—ezbooleanibexa_boolean (gespeichert)In der Referenz als „Checkbox“ bezeichnet
ezcountrydata_text: kommagetrennte Ländercodesstring—ezcountryibexa_countryBeide speichern Alpha-2-Codes
ezdatedata_int: Unix-Zeitstempelint—ezdateibexa_date
ezdatetimedata_int: Unix-Zeitstempelint—ezdatetimeibexa_datetime (gespeichert)
ezemaildata_textstring—ezemailibexa_email (gespeichert)
ezenumkeine Attributspalte; Werte in seinen Tabellen—ezenumvalue, ezenumobjectvalueNullkeinerZuerst mit bin/php/convertezenumtoezselection.php in ezselection konvertieren
ezfloatdata_float——ezfloatibexa_float
ezidentifierdata_text (formatierter Bezeichner), data_int (laufende Nummer)string—Nullkeiner
ezimagedata_text: XML <ezimage> mit einem <original>-Element und einem <alias> pro Variante—ezimagefileezimageibexa_image (gespeichert)Die Referenzdatenbank speichert dasselbe XML <ezimage serial_number=... alias_key=... ><original attribute_id=... /></ezimage>; die Pfade unterscheiden sich, siehe 17.7
ezinisettingdata_text (Wert), data_int (Kennzeichen für leeres Array)—schreibt INI-DateienNullkeinerHat außerhalb des Legacy-Kernels keine Bedeutung
ezintegerdata_intint—ezintegeribexa_integer (gespeichert)
ezisbndata_text—ezisbn_* (ISBN-13-Bereiche)ezisbnibexa_isbnISBN-10-Werte zuerst mit bin/php/ezconvert2isbn13.php konvertieren, wenn sie ISBN-13 sein sollen
ezkeywordkeine Attributspalte; Schlüsselwörter in seinen Tabellen—ezkeyword, ezkeyword_attribute_linkezkeywordibexa_keywordDie Verknüpfungstabelle der Plattform hat eine Spalte version, die der von Exponential fehlt
ezmatrixdata_text: XML <ezmatrix> mit Spalten und Zellen——ezmatrix (Null im Core, implementiert durch ibexa/fieldtype-matrix)ibexa_matrix (ibexa/fieldtype-matrix)
ezmediadie ezmedia-Zeile—ezmediaezmediaibexa_media (gespeichert)Gleiche Tabellenspalten, einschließlich der Player-Einstellungen
ezmultioptiondata_text: XML <ezmultioption>——NullkeinerShop-Datentyp
ezmultioption2data_text: XML <ezmultioption2>——NullkeinerShop-Datentyp
ezmultipricedata_text: "<VAT type>,<VAT included>"; Preise in seiner Tabelle—ezmultipricedataNullkeiner
ezobjectrelationdata_int: ID des verknüpften Objektsintezcontentobject_link (Typ 8)ezobjectrelationibexa_object_relation (gespeichert)
ezobjectrelationlistdata_text: XML <related-objects><relation-list><relation-item .../>—ezcontentobject_link (Typ 8)ezobjectrelationlistibexa_object_relation_list (gespeichert)Die Referenzdatenbank speichert dasselbe XML <related-objects><relation-list>
ezoptiondata_text: XML <ezoption>——NullkeinerShop-Datentyp
ezpackagedata_text: Paketnamestring—Nullkeiner
ezpricedata_float (Preis), data_text ("<VAT type>,<VAT included>")int (Preis × 100)—nicht registriertkeinerNur dann mit bin/php/convertprice2multiprice.php in ezmultiprice konvertieren, wenn ein Shop mit mehreren Währungen auf Exponential bleibt; auf der Plattform gibt es kein Ziel
ezproductcategorydata_int: Kategorie-IDintezproductcategoryNullkeiner
ezrangeoptiondata_text: XML <ezrangeoption>——NullkeinerShop-Datentyp
ezselectiondata_text: IDs der gewählten Optionen, mit - verbunden; Optionen im data_text5 des Klassenattributsstring—ezselectionibexa_selection
ezstringdata_textstring—ezstringibexa_string (gespeichert)In der Referenz „TextLine“
ezsubtreesubscriptiondata_int-Kennzeichen—ezsubtree_notification_ruleNullkeiner
eztextdata_text——eztextibexa_text (gespeichert)In der Referenz „TextBlock“
eztimedata_int: Sekunden seit Mitternachtint—eztimeibexa_timeBeide zählen Sekunden ab Tagesbeginn
ezurldata_int: ezurl.id; data_text: Linktext—ezurl, ezurl_object_linkezurlibexa_url (gespeichert)Auch die Referenzdatenbank hält die URL-ID in data_int
ezuserezuser-Zeile; data_text enthält nur, solange die Version ein Entwurf ist, einen JSON-Entwurf—ezuser, ezuser_setting, ezuser_accountkey, ezuservisitezuseribexa_user (gespeichert)Siehe die Hash-Typen in 17.7
ezxmltextdata_text: XML <section xmlns:image=... xmlns:xhtml=... xmlns:custom=...>—ezurl/ezurl_object_link für Links, ezcontentobject_link Typen 2 und 4 für Einbettungen und Linksnicht registriertkeinerDie Plattform verwendet RichText (ezrichtext in 4.6, ibexa_richtext in 5), gespeichert als DocBook <section xmlns="http://docbook.org/ns/docbook" ...>; siehe die Hinweise unten

In dieser Installation gefundene Datentypen aus Extensions:

DatentypExtensionGespeichert inIbexa 4.6Ibexa 5 / Plattformpaket
eztagseztagsTabellen eztags, eztags_keyword, eztags_attribute_linkNull im Core; implementiert durch das Netgen Tags Bundleeztags (in der Referenzdatenbank gespeichert, Netgen Tags Bundle)
ezgmaplocationezgmaplocationdata_int (hat einen Ort), Tabelle ezgmaplocationezgmaplocationibexa_gmap_location, Tabelle ibexa_map_location
ezsrratingezstarratingdata_int (Kennzeichen „deaktiviert“), Tabellen ezstarrating, ezstarrating_datanicht registriertkeiner
ezpageezflowdata_text: XML <page>; Tabellen ezm_block, ezm_poolnicht registriertkeiner in der Open-Source-Edition
sckenhancedselectionenhancedselection2Tabelle sckenhancedselection; Optionen im data_text5 des Klassenattributsnicht registriertsckenhancedselection (in der Referenzdatenbank gespeichert, Community-Bundle)
ngenhancedlinkexp_enhanced_linkdata_text (JSON), data_int (ID des internen Objekts oder 0)nicht registriertngenhancedlink (in der Referenzdatenbank gespeichert, Netgen-Bundle)
ngclasslistngclasslist(hier nicht geprüft)nicht registriertngclasslist (in der Referenzdatenbank gespeichert)

Hinweise zu den Konvertierungen, die der Hersteller dokumentiert

  • XmlText zu RichText. Die Migrationsseite des Herstellers führt XmlText als durch RichText ersetzt und auf der Plattform nicht unterstützt; Inhalte werden mit ezxmltext:convert-to-richtext aus ezsystems/ezplatform-xmltext-fieldtype konvertiert (Optionen --dry-run, --export-dir, --export-dir-filter, --image-content-types, --concurrency). RichText validiert strenger als XmlText, führen Sie daher zuerst den Probelauf aus. In diesem Repository gibt es keinen solchen Konverter, in keiner Richtung; Exponential rendert die DocBook-Elemente ezembed, para und literallayout, wenn sie in importiertem ezxmltext vorkommen (kernel/classes/datatypes/ezxmltext/handlers/output/ezxhtmlxmloutput.php), wodurch solcher Text lesbar bleibt, aber nicht konvertiert wird. Die Zuordnung der Elemente für eine eigene Konvertierung steht in 15.8 und 16.6.3.

  • Benutzerdefinierte Tags. Die Attributtypen benutzerdefinierter Tags des Online-Editors (extension/ezoe/design/standard/templates/ezoe/customattributes/) entsprechen, wie vom Hersteller dokumentiert, folgenden Attributtypen benutzerdefinierter Tags in RichText:

    ezoe-AttributtypRichText-TypHinweis des Herstellers
    linklinkunterstützt
    number, intnumber
    checkboxboolean
    selectchoice
    textstring
    textarea, email, hidden, color, htmlsize, csssize, csssize4, cssborderstring„als Behelfslösung verwenden“

    Die Tags selbst werden in settings/content.ini [CustomTagSettings] AvailableCustomTags[] deklariert (standardmäßig factbox, quote, strike, sub, sup) sowie in der content.ini.append.php von Extensions.

  • Page (ezflow). Ersetzt durch den Page-Feldtyp der kommerziellen Editionen; die Open-Source-Plattform hat kein Ziel. Der Befehl ezflow:migrate des Herstellers gehört zu diesen Editionen.

  • Sternebewertung (ezsrrating). Vom Hersteller als nicht unterstützt geführt: Implementieren Sie sie, oder entfernen Sie sie aus jeder Klasse.

  • Eigene Datentypen. Schreiben Sie sie als Feldtypen neu, oder registrieren Sie den Null-Feldtyp für ihren Bezeichner, damit die gespeicherten Werte ohne Fehler geladen werden. Ibexa 4.6 tut dies bereits für die oben mit Null gekennzeichneten Bezeichner.

17.4 Einstellungen: INI und YAML

Aufgeführt sind nur Paare, für die sich zeigen lässt, dass sie dasselbe beschreiben. Die YAML-Schlüssel wurden an der generierten Konfigurationsreferenz und an den ibexa.yaml-Dateien der Ibexa-5-Referenzinstallation überprüft; die Paare für Datenbank und Dateien sind außerdem diejenigen, die die Legacy-Bridge automatisch zuordnet (doc/eng-us/specifications/6.0/legacy-bridge-bundle.md). <scope> ist ein Siteaccess, eine Siteaccess-Gruppe oder default, unterhalb von ibexa.system.

Siteaccesses, Sprachen und Design

INI (Datei, Abschnitt, Schlüssel)YAMLHinweise
site.ini [SiteAccessSettings] AvailableSiteAccessList[]ibexa.siteaccess.list
site.ini [SiteSettings] DefaultAccessibexa.siteaccess.default_siteaccess
(keine Entsprechung; Siteaccesses teilen Einstellungen über settings/override)ibexa.siteaccess.groupsGemeinsame Konfiguration gehört an die Gruppe
site.ini [SiteAccessSettings] MatchOrder, URIMatchType=elementibexa.siteaccess.match: { URIElement: 1 }
site.ini [SiteAccessSettings] HostMatchType=map, HostMatchMapItems[]=host;siteaccessibexa.siteaccess.match: { Map\Host: { host: siteaccess } }
site.ini [RegionalSettings] SiteLanguageList[]ibexa.system.<scope>.languagesGeordnet, die erste ist die Hauptsprache
site.ini [RegionalSettings] TranslationSA[]ibexa.system.<scope>.translation_siteaccesses
site.ini [SiteAccessSettings] PathPrefixibexa.system.<scope>.content.tree_root.location_idDie Legacy-Bridge leitet das eine aus dem anderen ab
site.ini [SiteSettings] IndexPage, DefaultPageibexa.system.<scope>.index_page, default_page
site.ini [DesignSettings] SiteDesignibexa.system.<scope>.design
site.ini [DesignSettings] AdditionalSiteDesignList[], StandardDesignibexa_design_engine.design_list.<design>: [themes...]Die Fallback-Reihenfolge der Themes innerhalb eines Designs
pagelayout.tpl des Designsibexa.system.<scope>.page_layout
override.ini-Blöcke (Source, MatchFile, Match[class_identifier] ...)ibexa.system.<scope>.content_view.<view type>.<name>: { template, controller, match }Siehe 17.5

Datenbank, Dateien und Clustering

INIYAML oder UmgebungHinweise
site.ini [DatabaseSettings] Server, Port, User, Password, Database, SocketDoctrine-Verbindung: DATABASE_URL oder doctrine.dbal host, port, user, password, dbname, unix_socket
site.ini [DatabaseSettings] DatabaseImplementationDoctrine-Treiber: ezmysqli = pdo_mysql, ezpostgresql = pdo_pgsql, ezoracle = oci8, sqlite3 = pdo_sqliteDie Treiberzuordnung der Legacy-Bridge
site.ini [FileSettings] VarDiribexa.system.<scope>.var_dirSiteaccesses von Exponential verwenden var/site; die Referenzinstallation ebenso
site.ini [FileSettings] StorageDiribexa.system.<scope>.storage_dirStandardwert storage auf beiden Seiten
(festes original in den Datentypen für Binärdateien und Medien)ibexa.system.<scope>.binary_dirStandardwert original
file.ini [ClusteringSettings] FileHandler=eZDFSFileHandler mit [eZDFSClusteringSettings] MountPointPath, DBBackend, DBHost, DBName ...ibexa_io.metadata_handlers.dfs.legacy_dfs_cluster plus eine Verbindung doctrine.dbal.connections.dfs sowie ibexa_io.binarydata_handlers.nfs (Flysystem) mit dem NFS-Pfad
image.ini [ImageMagick] ExecutablePath, Executableibexa.imagemagick.path
image.ini [AliasSettings] AliasList[] und je ein [<alias>]-Block mit Reference und Filters[]ibexa.system.<scope>.image_variations.<alias>: { reference, filters: [{ name, params }] }Die Filternamen stimmen überein: Aus geometry/scaledownonly=100;100 wird { name: geometry/scaledownonly, params: [100, 100] }

Benutzer, Sitzungen, URLs, Caches und Suche

INIYAML oder UmgebungHinweise
site.ini [UserSettings] AnonymousUserIDibexa.system.<scope>.anonymous_user_id
site.ini [Session] SessionNamePrefix, SessionNamePerSiteAccessibexa.system.<scope>.session.nameVerwenden Sie das Token {siteaccess_hash} für einen Namen pro Siteaccess
site.ini [URLTranslator] TransformationGroupibexa.url_alias.slug_converter.transformationExponential hat urlalias, urlalias_iri und urlalias_compat in settings/transform.ini; der Hersteller nennt urlalias_compat und urlalias_iri für die Kompatibilität mit Legacy-Aliasen
site.ini [URLTranslator] WordSeparatoribexa.url_alias.slug_converter.separator
site.ini [SearchSettings] SearchEngineibexa.repositories.default.search.engine (legacy oder solr)
content.ini [VersionManagement] DefaultVersionHistoryLimitibexa.repositories.default.options.default_version_archive_limit
site.ini [ContentSettings] ViewCachingibexa.system.<scope>.content.view_cache
httpcache.ini [HttpCacheSettings] MaxAgeibexa.system.<scope>.content.default_ttlDer rollenbewusste HTTP-Cache von Exponential ist eine Eigenentwicklung; siehe HTTP-Caching
httpcache.ini [HttpCacheSettings] TagHeader (xkey, Surrogate-Key, Cache-Tag)ibexa.http_cache.purge_type und ibexa.system.<scope>.http_cache.purge_serversUnterschiedliche Mechanismen: Exponential versieht Seiten mit Tags im Ibexa-Stil (c<object>, l<node>, pl<parent>, p<path node>, ct<class>, s<section>, ez-all) und leert seinen eigenen Speicher; die Plattform sendet Purge-Anfragen an Varnish oder ihren lokalen Proxy
site.ini [MailSettings] Transport, TransportServerframework.mailer.dsn (MAILER_DSN)
site.ini [DebugSettings] DebugOutputAPP_DEBUG / kernel.debug
site.ini [ExtensionSettings] ActiveExtensions[]config/bundles.phpEine Extension und ein Bundle spielen dieselbe Rolle; keines lädt das andere

Zu den Einstellungen ohne Gegenstück auf der Plattform gehören site.ini [UserSettings] HashType und UpdateHash (die Plattform speichert den Hash-Typ pro Benutzer, siehe 17.7), [TemplateSettings] (Kompilierung von Templates), [SiteAccessSettings] RequireUserLogin sowie sämtliche Einstellungen für Shop, Workflows und Benachrichtigungen.

17.5 Templates: TPL und Twig

Die folgenden TPL-Konstrukte sind in lib/eztemplate/classes/eztemplateautoload.php (Sprachfunktionen) und kernel/common/eztemplateautoload.php (Operatoren und Funktionen des Kernels) definiert. Die Twig-Namen sind die von Ibexa 4.6 und 5, wie sie in den Templates der Referenzinstallation verwendet werden; eZ Platform verwendete dieselben Namen mit dem Präfix ez_ (ez_render_field, ez_path ...), die Ibexa 4.6 weiterhin akzeptiert.

TPLTwigHinweise
{def $x = 1}, {set $x = 2}, {undef $x}{% set x = 1 %}Twig-Variablen müssen nicht deklariert werden
{if $a}...{elseif $b}...{else}...{/if}{% if a %}...{% elseif b %}...{% else %}...{% endif %}
{foreach $items as $item}...{/foreach}{% for item in items %}...{% endfor %}
cond( $a, 'x', 'y' ), first_set( $a, $b )a ? 'x' : 'y', a ?? b
{include uri='design:parts/menu.tpl' node=$node}{% include '@ibexadesign/parts/menu.html.twig' with { node: node } %}design: wird über den Design-Fallback aufgelöst, @ibexadesign über ibexa_design_engine.design_list
{$text|wash}{{ text }}Twig maskiert standardmäßig; |raw schaltet das ab
{'Read more'|i18n( 'design/site' )}{{ 'Read more'|trans({}, 'design') }}Übersetzungsdomänen ersetzen i18n-Kontexte
{$node.url_alias|ezurl}{{ ibexa_path( location ) }}Relative URL eines Knotens oder Orts
{$node.url_alias|ezurl( 'no', 'full' )}{{ ibexa_url( location ) }}Absolute URL
{'stylesheets/site.css'|ezdesign}{{ asset( 'css/site.css' ) }}Asset-Verwaltung von Symfony; ezscript/ezcss (ezjscore) haben kein direktes Gegenstück
{$node.name}{{ ibexa_content_name( content ) }}
{attribute_view_gui attribute=$node.data_map.title}{{ ibexa_render_field( content, 'title' ) }}Feld-Templates kommen aus field_templates
{$node.data_map.title.content}{{ ibexa_field_value( content, 'title' ) }}
{$node.data_map.title.has_content}{{ not ibexa_field_is_empty( content, 'title' ) }}
{$node.data_map.title.contentclass_attribute_name}{{ ibexa_field_name( content, 'title' ) }}
{$node.data_map.image.content['medium'].url}{{ ibexa_image_alias( field, versionInfo, 'medium' ).uri }}Bild-Alias = Bildvariante
{node_view_gui content_node=$child view='line'}{{ render( controller( 'ibexa_content::viewAction', { contentId: child.contentInfo.id, location: child, viewType: 'line' } ) ) }}Das Template wird durch content_view-Regeln ausgewählt
fetch( 'content', 'node', hash( 'node_id', 2 ) )Keine Twig-Funktion: in einem Controller mit LocationService::loadLocation() laden
fetch( 'content', 'list', hash( 'parent_node_id', $node.node_id, 'class_filter_type', 'include', 'class_filter_array', array( 'article' ), 'sort_by', $node.sort_array, 'limit', 10 ) )Keine Twig-Funktion: eine Abfrage in einem Controller (SearchService::findLocations()) oder ein Query Type in der View-KonfigurationDie Referenzinstallation verwendet queries: mit einem query_type in content_view (Netgen Site API)
fetch( 'user', 'current_user' )app.userSecurity-Benutzer von Symfony
{cache-block keys=array( $uri_string ) subtree_expiry=$node.node_id}...{/cache-block}{{ render_esi( controller( '...' ) ) }} und HTTP-Cache-Tags (ibexa_http_cache_tag_location( location ))Kein Cache auf Template-Ebene auf der Plattform: Fragmente werden vom HTTP-Cache zwischengespeichert und über Tags invalidiert
ezini( 'SiteSettings', 'SiteName' )Ein Parameter oder ibexa.system.<scope>.twig_variables

override.ini und content_view drücken dieselbe Regel in zwei Formen aus:

# settings/siteaccess/site/override.ini.append.php
[full_article]
Source=node/view/full.tpl
MatchFile=full/article.tpl
Subdir=templates
Match[class_identifier]=article
ibexa:
    system:
        site_group:
            content_view:
                full:
                    article:
                        template: '@ibexadesign/full/article.html.twig'
                        match:
                            Identifier\ContentType: article

Die Legacy-Match-Schlüssel für Knotenansichten werden in kernel/classes/eznodeviewfunctions.php gesetzt (unter anderem class_identifier, node, parent_node, section, section_identifier, depth, url_alias, state_identifier, parent_class_identifier, remote_id, node_remote_id). Die Matcher der Plattform mit derselben Bedeutung (Klassen in Ibexa\Core\MVC\Symfony\Matcher\ContentBased, Ibexa 4.6):

override.ini-Schlüsselcontent_view-Matcher
Match[class_identifier]Identifier\ContentType
Match[class]Id\ContentType
Match[node]Id\Location
Match[object]Id\Content
Match[parent_node]Id\ParentLocation
Match[parent_class_identifier]Identifier\ParentContentType
Match[section_identifier], Match[section]Identifier\Section, Id\Section
Match[class_group]Id\ContentTypeGroup
Match[remote_id], Match[node_remote_id]Id\Remote, Id\LocationRemote
Match[depth]Depth
Match[url_alias]UrlAlias

17.6 PHP-API: Legacy-Klassen und Dienste der Public API

Die Legacy-Methoden liegen, sofern nicht anders angegeben, in kernel/classes/; die Dienste sind die Interfaces in Ibexa\Contracts\Core\Repository (Ibexa 4.6, ibexa/core v4.6.28; unter eZ Platform lautete der Namespace eZ\Publish\API\Repository). Aufrufe der Plattform laufen als der aktuelle Benutzer, der am PermissionResolver gesetzt ist, während Legacy-Code meist mit den Rechten des angemeldeten Benutzers lief und in Skripten Prüfungen übersprang.

eZContentObject und ContentService

LegacyPublic API
eZContentObject::fetch( $id )ContentService::loadContent( $id ), loadContentInfo( $id )
eZContentObject::fetchByRemoteID( $remoteID )ContentService::loadContentByRemoteId(), loadContentInfoByRemoteId()
eZContentObject::fetchByNodeID( $nodeID )LocationService::loadLocation( $id )->getContentInfo()
$object->dataMap()$content->getFields(), $content->getField( 'identifier' )
eZContentFunctions::createAndPublishObject( $params )ContentService::newContentCreateStruct(), createContent( $struct, [ $locationCreateStruct ] ), publishVersion( $versionInfo )
$object->createNewVersion()ContentService::createContentDraft( $contentInfo )
eZContentFunctions::updateAndPublishObject( $object, $params )ContentService::newContentUpdateStruct(), updateContent(), publishVersion()
eZOperationHandler::execute( 'content', 'publish', ... ) (lib/ezutils/classes/ezoperationhandler.php)ContentService::publishVersion()
eZContentObjectVersion::fetchVersion( $version, $objectID )ContentService::loadVersionInfo( $contentInfo, $versionNo ), loadVersions()
$object->removeThis(), $object->purge()ContentService::deleteContent( $contentInfo )
eZContentOperationCollection::deleteObject( $ids, $moveToTrash ) (kernel/content/)TrashService::trash( $location ) oder ContentService::deleteContent()
$object->relatedObjects() und ezcontentobject_linkContentService::loadRelationList(), loadReverseRelationList(), addRelation(), deleteRelation()

Die Legacy-Klasse hat keine Methode publish(); das Veröffentlichen läuft über die Operation publish oder über eZContentFunctions.

eZContentObjectTreeNode und LocationService

LegacyPublic API
eZContentObjectTreeNode::fetch( $nodeID )LocationService::loadLocation( $id )
eZContentObjectTreeNode::fetchByRemoteID( $remoteID )LocationService::loadLocationByRemoteId()
eZContentObjectTreeNode::fetchByContentObjectID( $objectID )LocationService::loadLocations( $contentInfo )
eZContentObjectTreeNode::subTreeByNodeID( $params, $nodeID ), $node->children()LocationService::loadLocationChildren(); gefilterte Listen mit SearchService::findLocations()
eZContentObjectTreeNode::subTreeCountByNodeID( $params, $nodeID )LocationService::getLocationChildCount(), getSubtreeSize()
eZContentObjectTreeNodeOperations::move( $nodeID, $newParentNodeID )LocationService::moveSubtree( $location, $newParent )
eZContentOperationCollection::swapNode( $nodeID, $selectedNodeID )LocationService::swapLocation()
eZContentObjectTreeNode::hideSubTree( $node ), unhideSubTree( $node )LocationService::hideLocation(), unhideLocation()
eZContentObjectTreeNode::removeSubtrees( $ids, $moveToTrash )TrashService::trash() oder LocationService::deleteLocation()
ezsubtreecopy.phpLocationService::copySubtree()
eZContentObjectTrashNode::trashList()TrashService::findTrashItems(), recover(), emptyTrash()

eZUser und UserService

Legacy (kernel/classes/datatypes/ezuser/ezuser.php)Public API
eZUser::fetch( $id )UserService::loadUser( $id )
eZUser::fetchByName( $login )UserService::loadUserByLogin( $login )
eZUser::fetchByEmail( $email )UserService::loadUserByEmail() (ein Benutzer), loadUsersByEmail()
eZUser::loginUser( $login, $password )UserService::checkUserCredentials( $user, $password ); das Anmelden übernimmt Symfony Security
eZUser::currentUser(), currentUserID()PermissionResolver::getCurrentUserReference()
eZUser::setCurrentlyLoggedInUser( $user, $userID )PermissionResolver::setCurrentUserReference( $user )
eZUser::create( $objectID ) mit $user->setInformation( ... )UserService::newUserCreateStruct(), createUser( $struct, $userGroups )
$user->hasAccessTo( $module, $function )PermissionResolver::hasAccess( $module, $function ), canUser()

eZContentClass und ContentTypeService

LegacyPublic API
eZContentClass::fetch( $id )ContentTypeService::loadContentType( $id )
eZContentClass::fetchByIdentifier( $identifier )ContentTypeService::loadContentTypeByIdentifier()
eZContentClass::fetchByRemoteID()ContentTypeService::loadContentTypeByRemoteId()
eZContentClass::fetchList()ContentTypeService::loadContentTypes( $group ), loadContentTypeList()
eZContentClass::create(), eZContentClassAttribute::create( $classID, $dataTypeString ), storeDefined()ContentTypeService::newContentTypeCreateStruct(), newFieldDefinitionCreateStruct(), createContentType(), publishContentTypeDraft()
$class->instantiate()ContentService::newContentCreateStruct( $contentType, $language )

Suche, URL-Aliase, Rollen und der Rest

LegacyPublic API
eZSearch::search( $text, $params )SearchService::findContent(), findLocations(), findSingle()
eZSearch::addObject( $object ), removeObjectById( $id )Keine öffentliche Methode: Die Suchmaschine wird vom Repository beim Veröffentlichen und Löschen aktualisiert
eZURLAliasML::fetchByPath( $uri ), eZURLAliasML::translate( $uri )URLAliasService::lookup( $url )
eZURLAliasML::fetchByAction( 'eznode', $nodeID )URLAliasService::reverseLookup( $location ), listLocationAliases()
eZURLAliasML::storePath( $path, $action )URLAliasService::createUrlAlias(), createGlobalUrlAlias()
eZURLWildcard::fetchList(), translate()URLWildcardService::loadAll(), translate(), create()
eZRole::fetch( $id ), fetchByName( $name )RoleService::loadRole(), loadRoleByIdentifier()
eZRole::create( $name ), $role->appendPolicy( $module, $function, $limitations )RoleService::createRole(), addPolicyByRoleDraft(), publishRoleDraft()
$role->assignToUser( $userID, $limitIdent, $limitValue )RoleService::assignRoleToUser(), assignRoleToUserGroup()
$role->removeUserAssignment( $userID )RoleService::removeRoleAssignment()
eZSection::fetch( $id ), fetchByIdentifier(), $section->applyTo( $object )SectionService::loadSection(), loadSectionByIdentifier(), assignSection(), assignSectionToSubtree()
eZContentObjectStateGroup::newState(), eZContentObjectState::fetchByIdentifier() (kernel/private/classes/)ObjectStateService::createObjectState(), loadObjectStateByIdentifier(), setContentState()
eZContentLanguage::fetchByLocale( $locale )LanguageService::loadLanguage( $languageCode )
eZPersistentObject::fetchObjectList() auf Kernel-TabellenKeine Entsprechung: Die Plattform liest ihre Tabellen nur über die Dienste; eigene Tabellen verwenden Doctrine
eZWorkflow, eZTrigger::runTrigger()Keine Entsprechung: Die Plattform löst vor und nach jedem Dienstaufruf Ereignisse aus (Symfony Event Subscriber) (hier nicht geprüft)

17.7 Passwörter, URL-Aliase und Bildspeicherung

Passwort-Hash-Typen

ezuser.password_hash_type enthält eine der Konstanten von eZUser (kernel/classes/datatypes/ezuser/ezuser.php); eZUser::createHash() berechnet jede davon:

WertKonstanteBezeichner (HashType)HashExponentialIbexa 4.6 / 5
0PASSWORD_HASH_EMPTYemptykeiner: Das Konto kann sich nicht anmeldenjanein
1PASSWORD_HASH_MD5_PASSWORDmd5_passwordmd5( password )janein
2PASSWORD_HASH_MD5_USERmd5_usermd5( "login\npassword" )janein
3PASSWORD_HASH_MD5_SITEmd5_sitemd5( "login\npassword\nsite" ), site = [UserSettings] SiteNamejanein
4PASSWORD_HASH_MYSQLmysqlMySQL PASSWORD(), in MySQL 8.0 entferntjanein
5PASSWORD_HASH_PLAINTEXTplaintextdas Passwort selbstjanein
6PASSWORD_HASH_BCRYPTbcryptpassword_hash( PASSWORD_BCRYPT )jaja
7PASSWORD_HASH_PHP_DEFAULTphp_defaultpassword_hash( PASSWORD_DEFAULT )ja (Standard)ja (Standard)
256——ungültig, absichtlich gesetzt, um eine Anmeldung zu sperrenneinPASSWORD_HASH_INVALID (Ibexa 5)

Ibexa 4.6 unterstützt nur 6 und 7 (SUPPORTED_PASSWORD_HASHES); Ibexa 5 ergänzt 256. ezsystems/ezpublish-kernel 7.5 (eZ Platform 2.5) deklarierte noch 1, 2, 3, 5, 6 und 7, wobei die MD5- und Klartext-Typen seit Kernel 6.13 als veraltet galten. Alle Benutzer in der Ibexa-5-Referenzdatenbank haben Typ 7.

Exponential erzeugt den Hash bei der Anmeldung neu: Mit site.ini [UserSettings] UpdateHash=true (Standard) und HashType=php_default (Standard) ersetzt eZUser::_loginUser() nach einer erfolgreichen Passwortprüfung jeden anderen gespeicherten Typ durch einen Hash vom Typ 7, aktualisiert password_hash und password_hash_type und leert den Cache des Benutzers. Benutzer, die sich angemeldet haben, seit die Website zu Exponential gewechselt ist, haben daher bereits einen Hash, den die Plattform akzeptiert. So listen Sie die übrigen vor der Migration auf:

SELECT password_hash_type, COUNT(*) FROM ezuser GROUP BY password_hash_type;

Konten, die noch die Typen 0 bis 5 haben, können sich auf der Plattform nicht anmelden; dort ist für sie ein Zurücksetzen des Passworts nötig. ezuser.password_hash ist im Schema von Exponential (kernel/sql/mysql/kernel_schema.sql) wie auf der Plattform VARCHAR(255), sodass bcrypt- und Argon2-Hashes hineinpassen.

URL-Alias-Tabellen

TabelleEnthält
ezurlalias_mlEine Zeile pro Pfadelement und Sprache: parent, text, text_md5, action (eznode:<node id>, module:<path> oder nop:), action_type, link, id, is_original, is_alias, alias_redirects, lang_mask
ezurlalias_ml_incrDie ID-Sequenz
ezurlwildcardPlatzhalter: source_url, destination_url, type
ezurlaliasDas Format aus der Zeit vor 4.0, nur vom Import in updateniceurls.php gelesen

Die Tabellen der Plattform haben dieselben Spalten unter denselben Namen (Ibexa 4.6) bzw. heißen ibexa_url_alias_ml, ibexa_url_alias_ml_incr und ibexa_url_wildcard (Ibexa 5), sodass die Aliase mit den Daten umziehen. Anschließend werden sie mit ibexa:urls:regenerate-aliases neu erzeugt (exponential:urls:regenerate-aliases auf Exponential Platform v5, das keinen ibexa:-Alias registriert). Die Slug-Transformation muss übereinstimmen: Der Standard von Exponential ist urlalias ([URLTranslator] TransformationGroup), die Ibexa-5-Referenzinstallation verwendet urlalias_lowercase.

Speicherpfade für Bilder und Dateien

ElementExponentialPlattform
Speicherwurzel<VarDir>/<StorageDir>: var/site/storage mit VarDir=var/site der Siteaccesses<var_dir>/<storage_dir>: var/site/storage in der Referenzinstallation
Veröffentlichte Bilder<storage>/images/<node path with names>/<attribute id>-<version>-<language>/<name>.<ext> (image.ini [FileSettings] PublishedImages=images)<storage>/images/<id digits reversed, one per directory>/<field id>-<version>-<language>/<name>.<ext>, zum Beispiel var/site/storage/images/0/0/3/2/2300-11-eng-GB/...
Bilder von Entwürfen<storage>/images-versioned/<attribute id>/<version>-<language>/ (VersionedImages=images-versioned)dasselbe Verzeichnisschema wie bei veröffentlichten Bildern
Bild-Aliase<basename>_<alias>.<ext> neben dem OriginalVarianten, die bei Bedarf erzeugt und benannt werden, indem _<variation> an den Dateinamen angehängt wird
Pfade eines Bildesdata_text-XML (dirpath, url, <alias>) plus jeder Pfad in ezimagefile.filepathdata_text-XML plus ibexa_image_file.filepath
Binärdateien und Medien<storage>/original/<mime group>/<md5 name>.<ext><storage>/original/... (binary_dir)

Die Anleitung des Herstellers kopiert <old root>/web/var[/<site>]/storage an dieselbe Stelle in der neuen Installation; die im XML und in ezimagefile gespeicherten Bildpfade müssen danach auf vorhandene Dateien zeigen, was die Prüfungen in 17.8 feststellen.

17.8 Datenprüfungen vor der Migration

Der Hersteller führt Probleme auf, die nach einer Migration auftreten. Nach jedem davon lässt sich zuerst in der Datenbank von Exponential suchen. Das SQL läuft auf MySQL, PostgreSQL und SQLite; führen Sie es auf einer Kopie aus.

ProblemSo erkennen Sie es in ExponentialBehebung
Knoten, die nach Klassenbezeichner oder Klassenname sortiert sind, was die Plattform nicht unterstütztSELECT node_id, parent_node_id, sort_field FROM ezcontentobject_tree WHERE sort_field IN (6, 7); (6 = SORT_FIELD_CLASS_IDENTIFIER, 7 = SORT_FIELD_CLASS_NAME in eZContentObjectTreeNode)Ändern Sie die Sortierung dieser Knoten in der Administration auf Name (9), Veröffentlichung (2) oder Priorität (8)
Veraltete URL-Aliasephp bin/php/verify_aliases.phpphp bin/php/verify_aliases.php --fix und php bin/php/updateniceurls.php --update-nodes; auf der Plattform ibexa:urls:regenerate-aliases
Bildpfade außerhalb des Speicherverzeichnisses oder mit ungewöhnlichen Zeichenphp update/common/scripts/5.1/fiximagesoutsidevardir.php --dry-run; SELECT filepath FROM ezimagefile WHERE filepath NOT LIKE 'var/site/storage/%'; (verwenden Sie Ihr VarDir)fiximagesoutsidevardir.php ohne --dry-run, update/common/scripts/5.3/recreateimagesreferences.php; auf der Plattform ezplatform:images:normalize-path
Beziehungen mit Typ 0 („Unknown relation type 0“)SELECT COUNT(*) FROM ezcontentobject_link WHERE relation_type = 0; (gültige Werte sind 1, 2, 4, 8 und ihre Summen)Auf der Plattform ezpublish:update:legacy_storage_clean_up_relation_type_eq_zero. In Exponential hat bereits die Update-Datei für 5.1 solche Zeilen gelöscht; später entstandene Zeilen werden von jeder Beziehungsabfrage ignoriert und können auf einer gesicherten Datenbank mit DELETE FROM ezcontentobject_link WHERE relation_type = 0; entfernt werden (15.20)
„Immer verfügbar“ ist bei Feldern jeder Sprache gesetzt, nicht nur bei der HauptspracheSELECT COUNT(*) FROM ezcontentobject_attribute a JOIN ezcontentobject o ON o.id = a.contentobject_id WHERE (a.language_id & 1) = 1 AND (a.language_id & ~1) <> (o.initial_language_id & ~1); (Bit 1 einer Sprach-ID ist das Kennzeichen „immer verfügbar“; Oracle: bitand())Auf der Plattform ezpublish:update:legacy_storage_fix_fields_always_available_flag
Leerer sort_key_stringSELECT data_type_string, COUNT(*) FROM ezcontentobject_attribute WHERE sort_key_string = '' AND data_text <> '' AND data_type_string IN ('ezstring', 'ezemail', 'ezcountry', 'ezidentifier', 'ezselection', 'ezpackage') GROUP BY data_type_string;Auf der Plattform ezpublish:update:legacy_storage_update_sort_keys
Datentypen, die die Plattform nicht speichern kannSELECT data_type_string, COUNT(*) FROM ezcontentclass_attribute WHERE version = 0 GROUP BY data_type_string; und mit 17.3 vergleichenKonvertieren (ezenum, ezxmltext), entfernen oder einen Null-Feldtyp registrieren
Verwaiste URL-Verknüpfungenphp update/common/scripts/5.4/fixremovedezurlobjectlinks.php (ohne --fix meldet es nur)dasselbe Skript mit --fix
Doppelte Remote-IDs (die Plattform lädt über die Remote-ID und erwartet, dass sie eindeutig ist)SELECT remote_id, COUNT(*) FROM ezcontentobject GROUP BY remote_id HAVING COUNT(*) > 1; (dasselbe für ezcontentobject_tree und ezcontentclass)update/common/scripts/4.1/fixobjectremoteid.php, fixnoderemoteid.php, fixclassremoteid.php: --mode=a behebt automatisch, --mode=d zeigt die Details, ohne --mode wird pro Remote-ID nachgefragt
Zeichensatz nicht UTF-8site.ini [DatabaseSettings] Charset und die Kollationen der Tabellenphp bin/php/ezconvertdbcharset.php

Die Befehlsnamen der Plattform sind diejenigen, die der Hersteller dokumentiert; ihr Präfix ändert sich zwischen den Plattformversionen.

17.9 Werkzeuge für Migration und Upgrade

Jedes bin/php/<name>.php steht auch als ./console exp:<name> zur Verfügung; der Code der meisten davon liegt in kernel/private/classes/commands/. Die Standardoptionen (-s/--siteaccess, -q, -v, -d, --allow-root-user) gelten für alle Skripte, die auf eZScript beruhen. Kapitel 11 erklärt, in welcher Reihenfolge sie auszuführen sind.

Datenbank-Update-Dateien

update/database/<engine>/<version>/dbupdate-<from>-to-<to>.sql, für mysql, postgresql und sqlite. MySQL und PostgreSQL enthalten die Kette von 4.0/dbupdate-3.10.0-to-4.0.0.sql über die 5.x-Schritte (mit Alpha-, Beta- und RC-Schritten in unstable/ für 4.0 bis 5.0 und dbupdate-cluster-*-Dateien für den MySQL-Cluster bei 4.3, 4.7, 5.2 und 5.4), danach das Verzeichnis 6.0 mit dem Schritt von 5.4 (dbupdate-5.4.0-6.0.0.sql auf MySQL, dbupdate-5.4-to-6.0.sql auf PostgreSQL) und dbupdate-6.0.0-6.0.15.sql. SQLite hat nur 6.0/dbupdate-6.0.0-6.0.15.sql. Jede MySQL-Datei beginnt mit SET default_storage_engine=InnoDB; (von MySQL ab 5.5.3 und von MariaDB akzeptiert); Kopien aus der Zeit vor Oktober 2026 enthielten SET storage_engine, was aktuelle Server ablehnen.

Die Verzeichnisse 6.12/, 7.2/ (nur PostgreSQL) und 7.3/ stammen aus der Upstream-Legacy-Linie der Jahre 2016 bis 2018 und sind nach der Version des Symfony-Kernels nummeriert, neben dem sie liefen; wenden Sie sie niemals als Dateien an. Ihre drei Schemaänderungen (ezuser.password_hash auf 255 erweitert, die PostgreSQL-Sequenzen in <table>_<column>_seq umbenannt, ezcontentobject_trash.trashed) nimmt die Datei von 5.4 auf 6.0.0 vor und erneut die Datei von 6.0.0 auf 6.0.15, jeweils nur dort, wo sie in der Datenbank fehlen (11.3). Oracle hat keine 6.0-Datei: Führen Sie die Anweisungen für password_hash und trashed aus 11.5 von Hand aus. php bin/php/console exp:checkdbfiles --no-verify-branches prüft, ob der Baum vollständig ist (Tabelle unten).

update/common/scripts

SkriptZweckOptionen
cleanup.phpLöscht Daten nach Namen: session, expired_session, preferences, browse, tipafriend, shop, forgotpassword, workflow, collaboration, collectedinformation, notification, searchstats, all--db-host, --db-user, --db-password, --db-database, --db-type, --sql, Name
updatecontentobjectname.phpErzeugt jeden Objektnamen neu-h, -q
updatenbxmlcontents.phpKorrigiert die Kodierung geschützter Leerzeichen in XML-Text--dry-run, -n, -v, --iteration-sleep, --iteration-limit
4.0/updatebinaryfile.phpErgänzt gespeicherte Binärdateien um die Dateiendungkeine
4.0/updatetipafriendpolicy.phpAktualisiert die Richtlinie für „Tip a friend“Siteaccess, Benutzer
4.0/updatevatcountries.phpAktualisiert die Mehrwertsteuerländerkeine
4.1/addlockstategroup.phpFügt die Zustandsgruppe ez_lock hinzukeine
4.1/correctxmlalign.phpVerschiebt Ausrichtungsattribute von Einbettungen und benutzerdefinierten Tags nach align--skip-embed-align, --skip-custom-align, --custom-align-attribute, --db-*
4.1/fixclassremoteid.php, fixnoderemoteid.php, fixobjectremoteid.phpMachen Remote-IDs eindeutig--mode (d detailliert, a automatisch)
4.1/fixezurlobjectlinks.phpVerknüpft URLs für jede Version und Übersetzung neu--fix, --fetch-limit
4.1/initurlaliasmlid.phpInitialisiert ezurlalias_ml_incrkeine
4.1/updateimagesystem.phpÜberführt Bildattribute in das Bildsystem von 3.3keine
4.2/fixorphanimages.phpRepariert Bilder, die ein Fehler im Alias-Handler hinterlassen hat-n
4.3/updatenodeassignment.phpAktualisiert Knotenzuweisungen-q
4.4/updatesectionidentifier.php (dieselbe Datei in 4.5/)Füllt die Bezeichner der Sektionen-q
4.6/removetrashedimages.phpEntfernt Bilder von Inhalten im Papierkorb-n, -q
4.6/updateordernumber.phpAktualisiert die Bestellnummern des Shops-q
5.0/deduplicatecontentstategrouplanguage.phpEntfernt doppelte Übersetzungen von Zustandsgruppen-q
5.0/disablesuspicioususers.phpListet Logins auf, die < oder > enthalten, oder deaktiviert sie--disable
5.0/restorexmlrelations.phpStellt fehlende Beziehungen aus XML-Text wieder herkeine
5.1/fiximagesoutsidevardir.phpKorrigiert Bildverweise außerhalb von VarDir--dry-run
5.2/cleanupdfscache.phpLöscht Cache-Zeilen aus der DFS-Tabelle--iteration-sleep, --iteration-limit
5.3/recreateimagesreferences.phpErzeugt die Zeilen von ezimagefile neu--dry-run
5.3/updatenodeassignmentparentremoteids.phpFüllt eznode_assignment.parent_remote_id-n, --iteration-sleep, --iteration-limit
5.4/cleanuntranslatablerelations.phpEntfernt veraltete Beziehungen nicht übersetzbarer Beziehungsattribute--dry-run, --iteration-sleep, --iteration-limit
5.4/cleanupfieldvaluerelations.phpEntfernt Beziehungen zu fehlenden Inhalten aus Feldwerten-n, -v, --iteration-sleep, --iteration-limit
5.4/fixremovedezurlobjectlinks.phpEntfernt verwaiste Zeilen aus ezurl_object_link--fix, --fetch-limit
5.4/fixtrashedimagereferences.phpKorrigiert Bildverweise von Inhalten im Papierkorb--dry-run, --iteration-sleep, --iteration-limit
6.0/createaudittables.phpLegt die Tabellen expaudit_* auf jeder Datenbank-Engine an und indexiert die Audit-Dateien; kann gefahrlos wiederholt werden--dry-run, --no-index
6.0/movetrashrecords.phpKopiert aus <VarDir>/trash/trashed.json, wer was in den Papierkorb gelegt hat, nach ezcontentobject_trash.trashed_by und trashed_via; kann gefahrlos wiederholt werden; Exit-Code 2, wenn die Datei behalten wird, 1, wenn die Spalten fehlen oder die Datei kein JSON-Objekt enthält--dry-run, --remove-file, -s <siteaccess>

bin/php: Schema, Daten und Konvertierung

SkriptZweckOptionen
checkdbfiles.phpPrüft die Update-Dateien gegen den Upgrade-Pfad: jedes Verzeichnis unter update/database/ (4.0 bis 7.3 auf MySQL und PostgreSQL, 6.0 auf SQLite), mit den Cluster-Dateien und den anders benannten 6.0-Dateien; ? kennzeichnet eine Datei oder ein Verzeichnis, das es nicht kennt, ! eine fehlende Datei. Ohne --no-verify-branches vergleicht es außerdem 4.3 bis 5.4 mit den alten SVN-Branches, was svn und das stillgelegte Repository svn.ez.no erfordert und daher eine C-Zeile meldet. Die Exporte landen in einem neuen Verzeichnis, das es innerhalb von --export-path (Standard var/tmp) anlegt und wieder entfernt; sonst wird dort nichts angefasst--no-verify-branches, --export-path
ezsqldiff.phpVergleicht zwei Schemas (Datenbank oder .dba-Datei); der Exit-Status gibt an, ob sie sich unterscheiden--source-type, --source-host, --source-user, --source-password, --source-socket, --match-type, --match-host, --match-user, --match-password, --match-socket, -t/--type, --host, -u/--user, -p/--password, --socket, --lint-check, --reverse, --check-only
ezsqldumpschema.phpGibt Schema oder Daten als .dba, serialisiert oder als SQL aus--type, --user, --host, --password, --port, --socket, --output-array, --output-serialized, --output-sql, --diff-friendly, --meta-data, --table-type, --table-charset, --compatible-sql, --no-sort, --format, --output-types, --allow-multi-insert, --schema-file, Datenbank, Datei
ezsqlinsertschema.phpLegt ein Schema und Daten aus einer .dba-Datei an--type, --user, --host, --password, --port, --socket, --table-type, --table-charset, --insert-types, --allow-multi-insert, --schema-file, --clean-existing, Datei, Datenbank
ezimportdbafile.phpImportiert die .dba eines Datentyps--datatype
ezconvertdbcharset.phpKonvertiert jede Tabelle nach UTF-8--extra-xml-attributes, --extra-xml-data, --extra-serialized-data, --collation, --skip-class-translations, --iconv-character-set, --log-filename
ezconvertmysqltabletype.phpÄndert die Storage-Engine von MySQL--host, --user, --password, --database, --list, --newtype, --usecopy
convertezenumtoezselection.phpKonvertiert ein ezenum-Attribut in ezselection--preview, Attribut-ID
convertprice2multiprice.phpKonvertiert ezprice in ezmultipricekeine
ezconvert2isbn13.phpKonvertiert ISBN-10-Werte in ISBN-13--class-id, --attribute-id, --all-classes, -f/--force
updateisbn13.phpAktualisiert die Tabellen der ISBN-Bereiche--url, --db-*
ezsqldumpisbndata.phpGibt die Tabellen der ISBN-Bereiche aus--stdout-sql, --stdout-dba, --filename-sql, --filename-dba, --db-*
updateniceurls.phpImportiert URL-Aliase aus der Zeit vor 4.0 und erzeugt die Aliase der Knoten neu--import, --no-import, --import-nodes, --import-aliases, --import-redirections, --import-wildcards, --update-nodes, --no-update-nodes, --verify-data, --interactive, --backup-tables, --column-width, --fetch-limit, --db-*, --sql
verify_aliases.phpPrüft ezurlalias_ml--fix, --verbose, --sql
updatesearchindex.phpBaut den Suchindex neu auf--clean, --db-*, --sql
adddefaultstates.phpGibt jedem Objekt die Standard-Objektzustände (Probelauf, außer mit --apply)--apply
cleanuppolicies.phpEntfernt Richtlinien von Modulen, die es nicht mehr gibt (Probelauf, außer mit --apply)--apply, -n
cleanupversions.phpEntfernt archivierte Versionen, die über die Grenzen hinausgehen-n
flatten.phpEntfernt ungenutzte Daten: contentobject, contentclass, workflow, role, all--db-*, --sql, Name
trashpurge.phpLeert den Papierkorb--iteration-sleep, --iteration-limit, --memory-monitoring, --trashed-days
ezsubtreecopy.phpKopiert einen Teilbaum--src-node-id, --dst-node-id, --all-versions, --keep-creator, --keep-time
ezsubtreeremove.phpEntfernt Teilbäume--nodes-id, --ignore-trash
expcontentjob.phpGroße Kopier- und Löschaufträge in Stapeln--all, --json, --background, --trash, --delete, --all-versions, --keep-creator, --keep-time
ezcsvimport.php, ezcsvexport.phpObjekte aus CSV importieren; einen Teilbaum nach CSV exportieren--class, --creator, --storage-dir, Knoten, Datei
clusterize.phpVerschiebt Dateien in den Cluster oder aus ihm heraus-u, --skip-binary-files, --skip-media-files, --skip-images, -r, -n
dfscleanup.phpVergleicht die DFS-Tabelle mit den Dateien und löscht, was fehlt-S, -B, -D, --path, --iteration-limit
ezflowupgrade.php, ezwebinupgrade.phpAktualisieren die Pakete ezflow und ezwebin--to-version, --repository, --package, --package-dir, --url, --auto-mode

Skripte von Extensions: extension/eztags/bin/php/convertezkeyword.php überführt ezkeyword-Attribute in eztags (--from-attr-id, --to-attr-id, --parent-tag-id); extension/enhancedselection2/bin/php/migrate_to_database.php und updateenhancedselection.php aktualisieren den Speicher von Enhanced Selection.

bin/php: Prüfungen nach einem Upgrade

SkriptZweckOptionen
checkmanifest.phpVergleicht die Dateien mit share/filelist.md5; keine Datenbank nötig--all, --staged, --fix
checkclasses.phpLädt jede deklarierte Klasse und meldet Fehler--kernel, --tests, --quiet-ok
ezpgenerateautoloads.phpErzeugt die Autoload-Arrays neu-e, -k, -o, -s, -n/--dry-run, -t/--target, --exclude, -p, -v, -q
ezcache.phpLeert Caches--clear-all, --clear-tag, --clear-id, --list-tags, --list-ids, --purge, --expiry, --iteration-sleep, --iteration-max
eztemplatecheck.phpPrüft die Syntax von TemplatesDateien
maintenance.phpSchaltet den Wartungsmodus ein oder auson, off, status, --message, --until, --allow-ip, --allow-admin
audit.phpZeigt und verifiziert das Audit-Protokollviele; siehe das Audit-Protokoll

Shell-Hilfsskripte in bin/shell/: checkdbschema.sh, checkdbupdate.sh (--check-stable, --check-previous), verifyfiles.sh (--quiet) und generatefilelist.sh. In der Administration führt Setup > Upgrade-Prüfung dieselbe Dateiprüfung gegen share/filelist.md5 aus und vergleicht das laufende Schema mit share/db_schema.dba, zusammengeführt mit den Schemas der aktiven Extensions (kernel/private/classes/views/setup/systemupgrade.php).

Umzug auf die Plattform oder von ihr weg

Dieses Repository enthält keinen Datenkonverter zu oder von eZ Platform oder Ibexa. Die Legacy-Bridge führt den Kernel von Exponential innerhalb einer Plattform-Installation auf einer gemeinsamen Datenbank aus (Branches für eZ Platform 2.5, Platform 3.3, Ibexa 4.6 und Platform 5), mit den Konsolenbefehlen exponential:legacy:init, configure, install-extensions, symlink, assets-install und script auf der Linie 3.x ab v3.0.0.30, der Linie 4.x ab v4.0.0.2 und in jedem 5.x-Tag, wobei die alten Namen ezpublish:* als veraltete Aliase erhalten bleiben. Die Linie 2.5 (master, v2.1.10 bis v2.1.12) und die früheren 3.x- und 4.x-Tags kennen nur die alten Namen (ezpublish:legacy:init ...). Auf Seiten der Plattform dokumentiert der Hersteller ezxmltext:convert-to-richtext, ibexa:urls:regenerate-aliases, ezplatform:images:normalize-path und die in 17.8 aufgeführten Befehle ezpublish:update:legacy_storage_*.

17.10 Glossar umbenannter Begriffe

Exponential (und eZ Publish 4.x und 5.x Legacy)eZ Platform und IbexaHinweise
Inhaltsobjekt (content object)Content Item (Content, ContentInfo)
Objektversion (object version)Version (VersionInfo)
Objektattribut (object attribute)Feld (field, Field)
Inhaltsklasse (content class)Inhaltstyp (content type, ContentType)
Klassenattribut (class attribute)Felddefinition (field definition, FieldDefinition)
Klassengruppe (class group)Inhaltstyp-Gruppe (content type group)
Datentyp (datatype)Feldtyp (field type)
Knoten (node)Location (Location)
Hauptknoten (main node)Haupt-Location (main location)
Sektion, Objektzustand, Rolle, Richtlinie, Einschränkung (section, object state, role, policy, limitation)dieselben Namen
Benutzer (ein Objekt einer Benutzerklasse)Benutzer (User), weiterhin ein Content Item
SiteaccessSiteAccessMatch-Regeln werden zu siteaccess.match; Einstellungen wandern aus INI-Dateien nach ibexa.system.<scope>
Siteaccess-Einstellungen in settings/siteaccess/<name>/Konfiguration eines SiteAccess oder einer SiteAccess-Gruppe
ExtensionBundle
Modul und View (/content/view/full/2)Route und Controller
Template-Override (override.ini)View-Konfiguration (content_view mit Matchern)
Ansichtsmodus (view mode: full, line, embed)View-Typ (view type)
Pagelayout (pagelayout.tpl)Seitenlayout (page layout, page_layout)
Design und seine Fallback-ListeDesign und Theme-Liste (ibexa_design_engine)
Template-Operator oder -FunktionTwig-Funktion oder -Filter
cache-block, View-CacheHTTP-Cache mit Tags, ESI-Fragmente
Bild-Alias (image alias)Bildvariante (image variation)
ezxmltext (XML-Text)RichText (DocBook)
ezflow-SeitePage-Feldtyp (kommerzielle Editionen)
eztagsNetgen TagsTaxonomie in den kommerziellen Editionen
Clustering (eZDFSFileHandler)IO-Handler (Metadaten legacy_dfs_cluster, Binärdaten über Flysystem)
Workflow, Trigger, OperationEreignisse und Subscriber(hier nicht geprüft)
Informationssammlung (information collection)Form Builder (kommerziell) oder das Netgen-Bundle für InformationssammlungDie Referenzinstallation behält ezinfocollection mit dem Netgen-Bundle
ezfind (Solr)Bundle für die Solr-Suchmaschine
ezsite_data ezpublish-versiondieselbe Zeile; die Plattform verfolgt Schemaänderungen mit Migrationen
eZ Publish 4.xExponential 6.0 setzt diese Linie fort
eZ Publish 5.x (Platform-Stack neben Legacy)eZ Platform 1.x bis 3.x, danach Ibexa DXP ab 3.3Exponential behält die Legacy-Hälfte und kann über die Legacy-Bridge neben der Plattform laufen

Quellen

In diesem Repository:

Extern:

Inhalt · Zurück: 16. Migration von eZ Platform und Ibexa

Werden Sie Exponential-Partner

Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x