{"id":4775,"date":"2018-12-21T00:00:00","date_gmt":"2018-12-21T00:00:00","guid":{"rendered":"https:\/\/dev-redoo-unify.oder.media\/1723\/"},"modified":"2019-07-05T12:59:50","modified_gmt":"2019-07-05T12:59:50","slug":"eventhandler-modul","status":"publish","type":"post","link":"https:\/\/redoo-networks.com\/de\/eventhandler-modul\/","title":{"rendered":"EventHandler Modul"},"content":{"rendered":"<div class=\"wpb-content-wrapper\"><p>[vc_row row_type=&#8220;row&#8220; stretch_row_type=&#8220;no&#8220;][vc_column][vc_column_text]Um eine bessere M\u00f6glichkeit zu erhalten, erweiterte Funktionen in das VtigerCRM zu implementieren, haben wir ein kostenloses Event Handling Modul entwickelt, mit dem Sie einen sicheren Weg zur Erweiterung von VtigerCRM erhalten k\u00f6nnen.<br \/>\nSie werden wegen des Installation dieses Moduls keine Probleme bekommen, da es selbst absolut nichts tut.<br \/>\nDie Aufgabe dieses Moduls ist durch folgenden Funktionen eine schnelle Schnittstelle bereitzustellen.<\/p>\n<pre><strong>EventHandler_Module_Model::do_filter(..)<\/strong><\/pre>\n<p>\u00fcnd<\/p>\n<pre><strong>EventHandler_Module_Model::do_action(..)<\/strong><\/pre>\n<p>Wir f\u00fcgen diese Funktionen im Quellcode hinzu, wo wir benutzerdefinierten Code einf\u00fcgen wollen, um gro\u00dfe \u00c4nderungen im Kerncode zu verhindern und eine Schicht zwischen dem benutzerdefinierten Code und dem Kerncode zu haben. Dies wird die F\u00e4higkeit, Ihren benutzerdefinierten Code auf sp\u00e4tere Versionen zu migrieren, erheblich verbessern.<\/p>\n<p>Wenn Sie andere Plugin-Systeme wie WordPress CMS kennen, wissen Sie auch, was diese Funktionen bewirken.<\/p>\n<p>[\/vc_column_text][vc_custom_heading text=&#8220;Wie man einen Event Handler registriert&#8220; font_container=&#8220;tag:h3|text_align:left&#8220;][vc_column_text]Wenn Sie an ein Event anh\u00e4ngen m\u00f6chten, geschieht dies mit dem internen EventHandler.<\/p>\n<p>So geht es:<\/p>\n<p>[prism field=eventhandler language=php]<\/p>\n<p>Die Funktion registerHandler hat diese Parameter:[\/vc_column_text][vc_table vc_table_theme=&#8220;classic&#8220;]Parameter,Definition|[b]%24forEvent,Name%20des%20Hooks%2C%20den%20Sie%20anbringen%20m%C3%B6chten|[b]%24path,Pfad%20zur%20EventHandler-Datei|[b]%24className,Klassenname%20Ihres%20EventHandlers[\/vc_table][vc_column_text]Die Funktion hat mehr Parameter, aber sie sind nicht hilfreich.<br \/>\nDiese Registrierung darf nur einmalig erfolgen, z.B. bei der Einrichtung des Moduls.<\/p>\n<p>Nun m\u00fcssen Sie Ihre EventHandler-Klasse erstellen. Benennen Sie die Klasse, wie Sie es bei der Registrierung festgelegt haben. (Im n\u00e4chsten Beispiel <strong>ColorizerEventHandler<\/strong>)<br \/>\nEs m\u00fcssen 2 Funktionen vorhanden sein, die sich auf das beziehen, was Sie bearbeiten wollen.<\/p>\n<p>Eine <strong>handleEvent($hook, $data)<\/strong> Funktion oder\/und eine <strong>handleFilter($hook, $parameter, &#8230;) <\/strong>Funktion. Siehe folgendes Beispiel:<\/p>\n<p>[prism field=eventhandlerexample language=php][\/vc_column_text][vc_column_text]Wenn Sie mit der handleFilter-Funktion mehrere verschiedene Filter behandeln wollen, definieren Sie nur den $parameter Parameter, da dieser in jedem Fall verf\u00fcgbar ist.<\/p>\n<p>Um auf benutzerdefinierte Parameter zuzugreifen, verwenden Sie so etwas wie dieses:<\/p>\n<pre>$additionalParameter = func_get_arg(2);\n\/\/ The first additional parameter is the index 2<\/pre>\n<p>Die Variable <strong>$hook<\/strong> enth\u00e4lt den Namen des aktuell ausgef\u00fchrten Hook.[\/vc_column_text][vc_custom_heading text=&#8220;Erweiterte M\u00f6glichkeit, einen Handler zu registrieren&#8220; font_container=&#8220;tag:h3|text_align:left&#8220;][vc_column_text]Wenn Sie Erfahrung mit Ihrer Datenbank haben, m\u00fcssen Sie die Funktion <strong>registerHandler<\/strong> nicht aufrufen, sondern k\u00f6nnen Ihr Event auch direkt in die Datenbank einf\u00fcgen.<\/p>\n<p>F\u00fcgen Sie eine neue Zeile in der Tabelle <strong>vtiger_eventhandlers<\/strong> mit korrektem <strong>event_name, handler_path, handler_class<\/strong> und <strong>1<\/strong> als Spalte &#8222;<strong>is_active<\/strong>&#8220; ein.<br \/>\n<strong>Vergessen Sie aber nicht, die Reihenfolge in vtiger_eventhandlers_seq zu erh\u00f6hen<\/strong>, da Sie sonst beim n\u00e4chsten Modul-Setup Probleme bekommen, die auch ein Ereignis anh\u00e4ngen.[\/vc_column_text][vc_custom_heading text=&#8220;Wie man Trigger benutzt?&#8220; font_container=&#8220;tag:h3|text_align:left&#8220;][vc_column_text]<\/p>\n<pre><strong>EventHandler_Module_Model::do_action(\"$actionName\", [$parameter])<\/strong><\/pre>\n<p>$actionName ist der Name des Hook, den Sie definieren und mit diesem Aktionsnamen k\u00f6nnen sich andere Plugins selbst anh\u00e4ngen.<br \/>\nDiese Funktion wird intern vom Core EventHandler verwaltet.<\/p>\n<p>Sie k\u00f6nnen bis zu 1 Parameter einstellen, der auch in Plugins verf\u00fcgbar ist. Diese Funktion gibt nichts zur\u00fcck. Diese Funktion kann z.B. verwendet werden, um das Laden der Einstiegsseite zu markieren.<\/p>\n<pre><strong>EventHandler_Module_Model::do_filter(\"$actionName\", $parameter1, [$parameter2, [$parameter3, ...]])<\/strong>\n\n<strong>EventHandler_Module_Model::do_filter(array($actionName1, $actionNameN,...), $parameter1, [$parameter2, [$parameter3, ...]])<\/strong><\/pre>\n<p>Diese Funktion bietet eine Filterschnittstelle, in der Sie einen $parameter1 setzen, der durch Plugins modifiziert werden kann.<br \/>\nWie in der <strong>do_action<\/strong>-Funktion haben Sie einen <strong>$actionName<\/strong>, der den Namen dieses Hooks definiert. Diese Funktion ist aber im Gegensatz zu do_action auch in der Lage, mehrere Hook-Namen in einem Array zu behandeln, die nacheinander von 1 bis N ausgef\u00fchrt werden.<br \/>\nSie m\u00fcssen einen $parameter1 angeben, der von Plugins gefiltert wird. Ansonsten k\u00f6nnen Sie eine unbegrenzte Anzahl von Parametern einstellen, die auch an Plugins \u00fcbergeben werden.<\/p>\n<p>Sie k\u00f6nnen diese Funktion beispielsweise verwenden, um eine SQL-Query zu \u00e4ndern, bevor vTiger sie ausf\u00fchrt.<\/p>\n<p>Beispiel, wo wir die Mehrfachhaken (hooks) verwenden, ist es, einen allgemeinen Hook zusammen mit einem modulspezifischen Hook bereitzustellen.<br \/>\nDann k\u00f6nnen Sie nur noch das Modul einh\u00e4ngen, das Sie ben\u00f6tigen. Hier haben wir ein Beispiel, wo wir den QueryGenerator in der allgemeinen ListView-Datei modifizieren, bevor der QueryGenerator in das ListView-Modell gesetzt wird. Einmal mit einem allgemeinen Hook und einmal mit einem modulspezifischen Hook-Namen.<\/p>\n<p>[prism field=examplehook1 language=php]<\/p>\n<p>Sie k\u00f6nnen an alle Module anh\u00e4ngen, wenn Sie an Hook <strong>vtiger.filter.listview.querygenerator.before<\/strong> anh\u00e4ngen. Sie k\u00f6nnen das Modul ListView of Accounts aber auch nur \u00e4ndern, wenn Sie an <strong> vtiger.filter.listview.accounts.querygenerator.before <\/strong>anh\u00e4ngen. In diesem Beispiel ist der Query-Generator der Parameter, der ge\u00e4ndert werden kann. Das Paging-Modell wird als zus\u00e4tzlicher Parameter eingestellt.[\/vc_column_text][vc_custom_heading text=&#8220;Modul herunterladen&#8220;][vc_column_text]Das Modul wird auf <a href=\"https:\/\/github.com\/swarnat\/vtigerCRM-EventHandler\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">GitHub<\/a>, wo Sie auch den Quellcode sehen k\u00f6nnen.<\/p>\n<p><a href=\"https:\/\/github.com\/swarnat\/vtigerCRM-EventHandler\/raw\/vtiger6\/release\/EventHandler-2015-01-21.zip\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">Download f\u00fcr Vtiger 6<\/a><\/p>\n<p><a href=\"https:\/\/github.com\/swarnat\/vtigerCRM-EventHandler\/raw\/Vtiger7\/release\/EventHandler-2017-05-27-12-37.zip\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">Download f\u00fcr Vtiger 7<\/a>[\/vc_column_text][\/vc_column][\/vc_row]<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>[vc_row row_type=&#8220;row&#8220; stretch_row_type=&#8220;no&#8220;][vc_column][vc_column_text]Um eine bessere M\u00f6glichkeit zu erhalten, erweiterte Funktionen in das VtigerCRM zu implementieren, haben wir ein kostenloses Event Handling Modul entwickelt, mit dem Sie einen sicheren Weg zur Erweiterung von VtigerCRM erhalten k\u00f6nnen. Sie werden wegen des Installation dieses Moduls keine Probleme bekommen, da es selbst absolut nichts tut. Die Aufgabe dieses Moduls&hellip;<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[156,154],"tags":[],"class_list":["post-4775","post","type-post","status-publish","format-standard","hentry","category-allgemein","category-vtigercrm-de","category-156","category-154","description-off"],"_links":{"self":[{"href":"https:\/\/redoo-networks.com\/de\/wp-json\/wp\/v2\/posts\/4775","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/redoo-networks.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/redoo-networks.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/redoo-networks.com\/de\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/redoo-networks.com\/de\/wp-json\/wp\/v2\/comments?post=4775"}],"version-history":[{"count":1,"href":"https:\/\/redoo-networks.com\/de\/wp-json\/wp\/v2\/posts\/4775\/revisions"}],"predecessor-version":[{"id":4846,"href":"https:\/\/redoo-networks.com\/de\/wp-json\/wp\/v2\/posts\/4775\/revisions\/4846"}],"wp:attachment":[{"href":"https:\/\/redoo-networks.com\/de\/wp-json\/wp\/v2\/media?parent=4775"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/redoo-networks.com\/de\/wp-json\/wp\/v2\/categories?post=4775"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/redoo-networks.com\/de\/wp-json\/wp\/v2\/tags?post=4775"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}