registerHandler($eventname, $filename, $classname, $condition); $eventsManager->setModuleForHandler($moduleInstance->name, $classname); self::log("Registering Event $eventname with [$filename] $classname ... DONE"); } } /** * Trigger event based on CRM Record * @param String Name of the Event to trigger * @param Integer CRM record id on which event needs to be triggered. */ static function trigger($eventname, $crmid) { if(!self::hasSupport()) return; global $adb; $checkres = $adb->pquery("SELECT setype, crmid, deleted FROM vtiger_crmentity WHERE crmid=?", Array($crmid)); if($adb->num_rows($checkres)) { $result = $adb->fetch_array($checkres, 0); if($result['deleted'] == '0') { $module = $result['setype']; $moduleInstance = CRMEntity::getInstance($module); $moduleInstance->retrieve_entity_info($result['crmid'], $module); $moduleInstance->id = $result['crmid']; global $current_user; if(!$current_user) { $current_user = new Users(); $current_user->id = $moduleInstance->column_fields['assigned_user_id']; } // Trigger the event $em = new VTEventsManager($adb); $em->triggerEvent($eventname, VTEntityData::fromCRMEntity($moduleInstance)); } } } /** * Get all the registered module events * @param Vtiger_Module Instance of the module to use */ static function getAll($moduleInstance) { global $adb; $events = false; if(self::hasSupport()) { // Get all events related to module $records = $adb->pquery("SELECT * FROM vtiger_eventhandlers WHERE handler_class IN (SELECT handler_class FROM vtiger_eventhandler_module WHERE module_name=?)", Array($moduleInstance->name)); if($records) { while($record = $adb->fetch_array($records)) { $event = new Vtiger_Event(); $event->eventname = $record['event_name']; $event->classname = $record['handler_class']; $event->filename = $record['handler_path']; $event->condition = $record['condition']; $events[] = $event; } } } return $events; } } ?>