[Vtigercrm-developers] What is the best practice to create Extensions Store compatible vtiger 6.1 custom module?
Holbok István
holbok at gmail.com
Mon Jul 14 08:47:55 GMT 2014
Dear Vtiger Team,
I am in the vtiger custom module development and there is an interesting
question:
This Custom module is related to the (standard) Contacts module and when
some fields were changed in the Contacts module record, accordingly some
change should be done in the related Custom module record.
It is easy to manage with the following:
(1) Register an Eventhandler for the Contacts module (note: there is not
any event registered for the Contacts module in the standard install of
vtiger 6.1. SVN 14164)
Vtiger_Event::register(
'Contacts','vtiger.entity.aftersave',
'ContactsHandler','modules/Contacts/ContactsHandler.php'
);
Vtiger_Event::register(
'Contacts','vtiger.entity.beforesave',
'ContactsHandler','modules/Contacts/ContactsHandler.php'
);
This action can be done during postinstall action of the Custom module.
And
(2) Append the already existing 'modules/Contacts/ContactsHandler.php'
file with the following class:
class ContactsHandler extends VTEventHandler {
function handleEvent($eventName, $data) {
if($eventName == 'vtiger.entity.beforesave') {
// Entity is about to be saved, take required action
}
if($eventName == 'vtiger.entity.aftersave') {
// Entity has been saved, take next action
}
}
}
This will work without any doubt but in this way I have to modify a core
file: 'modules/Contacts/ContactsHandler.php' and it could make some
troubles for the Estension Store Custom module.
*The Question is:* To avoid modifying core files, will it work, if I
will put the custom Contacts handler into Custom module directory?
The step 1, registering the eventhandler file in an other place:
Vtiger_Event::register(
'Contacts','vtiger.entity.aftersave',
'Contacts*Custommodule*Handler','modules/*Custommodule*/Contacts*Custommodule*Handler.php'
);
Vtiger_Event::register(
'Contacts','vtiger.entity.beforesave',
'Contacts*Custommodule*Handler','modules/*Custommodule*/Contacts*Custommodule*Handler.php'
);
The step 2, create a handler file in the Custommodule directory:
modules/*Custommodule*/Contacts*Custommodule*Handler.php
<?php class Contacts*Custommodule*Handler extends VTEventHandler {
function handleEvent($eventName, $data) {
if($eventName == 'vtiger.entity.beforesave') {
// Entity is about to be saved, take required action
// Some code to handle Contacts related actions in the related module.
}
if($eventName == 'vtiger.entity.aftersave') {
// Entity has been saved, take next action
// Some code to handle Contacts related actions in the related module.
}
}
}
?>
Summary: Can I register an event handler with any name in any place?
Will it triggered on a proper time?
Kindest regards:
István
--
üdvözlettel:
*Holbok István*
+3670-342-0900
*e-mail:* holbok at gmail.com
*SkyPe:* holboki
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.vtigercrm.com/pipermail/vtigercrm-developers/attachments/20140714/dcfe4098/attachment.html>
More information about the vtigercrm-developers
mailing list