function handleEvent($eventName, $data)
 {
     if ($eventName == 'vtiger.entity.beforesave') {
         // Entity is about to be saved, take required action
     }
     if ($eventName == 'vtiger.entity.aftersave') {
         $db = PearDatabase::getInstance();
         $relatedToId = $data->get('related_to');
         if ($relatedToId) {
             $moduleName = getSalesEntityType($relatedToId);
             $focus = CRMEntity::getInstance($moduleName);
             $focus->retrieve_entity_info($relatedToId, $moduleName);
             $focus->id = $relatedToId;
             $fromPortal = $data->get('from_portal');
             if ($fromPortal) {
                 $focus->column_fields['from_portal'] = $fromPortal;
             }
             $entityData = VTEntityData::fromCRMEntity($focus);
             $wfs = new VTWorkflowManager($db);
             $relatedToEventHandler = new VTWorkflowEventHandler();
             $relatedToEventHandler->workflows = $wfs->getWorkflowsForModuleSupportingComments($entityData->getModuleName());
             $wsId = vtws_getWebserviceEntityId($entityData->getModuleName(), $entityData->getId());
             $fromPortal = $entityData->get('from_portal');
             $util = new VTWorkflowUtils();
             $entityCache = new VTEntityCache($util->adminUser());
             $entityCacheData = $entityCache->forId($wsId);
             $entityCacheData->set('from_portal', $fromPortal);
             $entityCache->cache[$wsId] = $entityCacheData;
             $relatedToEventHandler->handleEvent($eventName, $entityData, $entityCache);
             $util->revertUser();
         }
     }
 }
 /** Function to restore a deleted record of specified module with given crmid
  * @param $module -- module name:: Type varchar
  * @param $entity_ids -- list of crmids :: Array
  */
 function restore($module, $id)
 {
     global $current_user, $adb;
     $this->db->println("TRANS restore starts {$module}");
     $this->db->startTransaction();
     $date_var = date("Y-m-d H:i:s");
     $query = 'UPDATE vtiger_crmentity SET deleted=0,modifiedtime=?,modifiedby=? WHERE crmid = ?';
     $this->db->pquery($query, array($this->db->formatDate($date_var, true), $current_user->id, $id), true, "Error restoring records :");
     //Restore related entities/records
     $this->restoreRelatedRecords($module, $id);
     //Event triggering code
     require_once "include/events/include.inc";
     global $adb;
     $em = new VTEventsManager($adb);
     // Initialize Event trigger cache
     $em->initTriggerCache();
     $this->id = $id;
     $entityData = VTEntityData::fromCRMEntity($this);
     //Event triggering code
     $em->triggerEvent("vtiger.entity.afterrestore", $entityData);
     //Event triggering code ends
     $this->db->completeTransaction();
     $this->db->println("TRANS restore ends");
 }
Exemple #3
0
 public function triggerAfterSaveEventHandlers()
 {
     $adb = PearDatabase::getInstance();
     require_once "include/events/include.inc";
     //In Bulk mode stop triggering events
     if (!self::isBulkSaveMode()) {
         $em = new VTEventsManager($adb);
         // Initialize Event trigger cache
         $em->initTriggerCache();
         $entityData = VTEntityData::fromCRMEntity($this);
     }
     //Event triggering code ends
     if ($em) {
         //Event triggering code
         $em->triggerEvent("vtiger.entity.aftersave", $entityData);
         $em->triggerEvent("vtiger.entity.aftersave.final", $entityData);
     }
 }
Exemple #4
0
 /**
  * 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;
     }
     $adb = PearDatabase::getInstance();
     $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'];
             $current_user = vglobal('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));
         }
     }
 }
Exemple #5
0
 public function createEntityRecord($moduleName, $entityLabel)
 {
     $moduleHandler = vtws_getModuleHandlerFromName($moduleName, $this->user);
     $moduleMeta = $moduleHandler->getMeta();
     $moduleFields = $moduleMeta->getModuleFields();
     $mandatoryFields = $moduleMeta->getMandatoryFields();
     $entityNameFieldsString = $moduleMeta->getNameFields();
     $entityNameFields = explode(',', $entityNameFieldsString);
     $fieldData = array();
     foreach ($entityNameFields as $entityNameField) {
         $entityNameField = trim($entityNameField);
         if (in_array($entityNameField, $mandatoryFields)) {
             $fieldData[$entityNameField] = $entityLabel;
         }
     }
     foreach ($mandatoryFields as $mandatoryField) {
         if (empty($fieldData[$mandatoryField])) {
             $fieldInstance = $moduleFields[$mandatoryField];
             if ($fieldInstance->getFieldDataType() == 'owner') {
                 $fieldData[$mandatoryField] = $this->user->id;
             } else {
                 if (!in_array($mandatoryField, $entityNameFields) && $fieldInstance->getFieldDataType() != 'reference') {
                     $fieldData[$mandatoryField] = '????';
                 }
             }
         }
     }
     $fieldData = DataTransform::sanitizeData($fieldData, $moduleMeta);
     $entityIdInfo = vtws_create($moduleName, $fieldData, $this->user);
     $adb = PearDatabase::getInstance();
     $entityIdComponents = vtws_getIdComponents($entityIdInfo['id']);
     $recordId = $entityIdComponents[1];
     $entityfields = getEntityFieldNames($moduleName);
     switch ($moduleName) {
         case 'HelpDesk':
             $entityfields['fieldname'] = array('ticket_title');
             break;
         case 'Documents':
             $entityfields['fieldname'] = array('notes_title');
             break;
         case 'Documents':
             $entityfields['fieldname'] = array('notes_title');
             break;
     }
     $label = '';
     if (is_array($entityfields['fieldname'])) {
         foreach ($entityfields['fieldname'] as $field) {
             $label .= $fieldData[$field] . " ";
         }
     } else {
         $label = $fieldData[$entityfields['fieldname']];
     }
     $label = trim($label);
     $adb->pquery('UPDATE vtiger_crmentity SET label=? WHERE crmid=?', array($label, $recordId));
     $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName);
     $focus = $recordModel->getEntity();
     $focus->id = $recordId;
     $focus->column_fields = $fieldData;
     $this->entityData[] = VTEntityData::fromCRMEntity($focus);
     $focus->updateMissingSeqNumber($moduleName);
     return $entityIdInfo;
 }
 /** Function to saves the values in all the tables mentioned in the class variable $tab_name for the specified module
  * @param $module -- module:: Type varchar
  */
 function save($module_name, $fileid = '')
 {
     global $log;
     $log->debug("module name is " . $module_name);
     //Event triggering code
     require_once "include/events/include.inc";
     global $adb;
     $em = new VTEventsManager($adb);
     // Initialize Event trigger cache
     $em->initTriggerCache();
     $entityData = VTEntityData::fromCRMEntity($this);
     $em->triggerEvent("vtiger.entity.beforesave.modifiable", $entityData);
     $em->triggerEvent("vtiger.entity.beforesave", $entityData);
     $em->triggerEvent("vtiger.entity.beforesave.final", $entityData);
     //Event triggering code ends
     //GS Save entity being called with the modulename as parameter
     $this->saveentity($module_name, $fileid);
     //Event triggering code
     $em->triggerEvent("vtiger.entity.aftersave", $entityData);
     //Event triggering code ends
 }
Exemple #7
0
 function undoImport(Vtiger_Request $request)
 {
     $viewer = new Vtiger_Viewer();
     $db = PearDatabase::getInstance();
     $moduleName = $request->getModule();
     $ownerId = $request->get('foruser');
     $user = Users_Record_Model::getCurrentUserModel();
     $dbTableName = Import_Utils_Helper::getDbTableName($user);
     if (!$user->isAdminUser() && $user->id != $ownerId) {
         $viewer->assign('MESSAGE', 'LBL_PERMISSION_DENIED');
         $viewer->view('OperationNotPermitted.tpl', 'Vtiger');
         exit;
     }
     $previousBulkSaveMode = $VTIGER_BULK_SAVE_MODE;
     $VTIGER_BULK_SAVE_MODE = true;
     $query = "SELECT recordid FROM {$dbTableName} WHERE temp_status = ? AND recordid IS NOT NULL";
     //For inventory modules
     $inventoryModules = getInventoryModules();
     if (in_array($moduleName, $inventoryModules)) {
         $query .= ' GROUP BY subject';
     }
     //End
     $result = $db->pquery($query, array(Import_Data_Action::$IMPORT_RECORD_CREATED));
     $noOfRecords = $db->num_rows($result);
     $noOfRecordsDeleted = 0;
     $entityData = array();
     for ($i = 0; $i < $noOfRecords; $i++) {
         $recordId = $db->query_result($result, $i, 'recordid');
         if (isRecordExists($recordId) && isPermitted($moduleName, 'Delete', $recordId) == 'yes') {
             $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName);
             $recordModel->setId($recordId);
             $recordModel->delete();
             $focus = $recordModel->getEntity();
             $focus->id = $recordId;
             $entityData[] = VTEntityData::fromCRMEntity($focus);
             $noOfRecordsDeleted++;
         }
     }
     $entity = new VTEventsManager($db);
     $entity->triggerEvent('vtiger.batchevent.delete', $entityData);
     $VTIGER_BULK_SAVE_MODE = $previousBulkSaveMode;
     $viewer->assign('FOR_MODULE', $moduleName);
     $viewer->assign('MODULE', 'Import');
     $viewer->assign('TOTAL_RECORDS', $noOfRecords);
     $viewer->assign('DELETED_RECORDS_COUNT', $noOfRecordsDeleted);
     $viewer->view('ImportUndoResult.tpl', 'Import');
 }
 /** Function to restore a deleted record of specified module with given crmid
  * @param $module -- module name:: Type varchar
  * @param $entity_ids -- list of crmids :: Array
  */
 function restore($module, $id)
 {
     $db = PearDatabase::getInstance();
     $currentUser = vglobal('current_user');
     $db->startTransaction();
     $db->update('vtiger_crmentity', ['deleted' => 0, 'modifiedtime' => date('Y-m-d H:i:s'), 'modifiedby' => $currentUser->id], 'crmid = ?', [$id]);
     //Restore related entities/records
     $this->restoreRelatedRecords($module, $id);
     //Event triggering code
     require_once 'include/events/include.inc';
     $em = new VTEventsManager($db);
     // Initialize Event trigger cache
     $em->initTriggerCache();
     $this->id = $id;
     $entityData = VTEntityData::fromCRMEntity($this);
     //Event triggering code
     $em->triggerEvent('vtiger.entity.afterrestore', $entityData);
     //Event triggering code ends
     $db->completeTransaction();
 }
 require_once "data/Tracker.php";
 require_once "modules/com_vtiger_workflow/VTWorkflowManager.inc";
 require_once "modules/com_vtiger_workflow/VTTaskManager.inc";
 require_once "modules/com_vtiger_workflow/VTWorkflowApplication.inc";
 require_once "modules/com_vtiger_workflow/VTEntityMethodManager.inc";
 require_once "include/utils/CommonUtils.php";
 require_once "include/events/SqlResultIterator.inc";
 require_once "modules/com_vtiger_workflow/VTWorkflowUtils.php";
 require_once "modules/Project/Project.php";
 $focus1 = new Project();
 $focus1->retrieve_entity_info($pcdetailsproject, "Project");
 $focus1->id = $pcdetailsproject;
 $em = new VTEventsManager($adb);
 // Initialize Event trigger cache
 $em->initTriggerCache();
 $entityData = VTEntityData::fromCRMEntity($focus1);
 $em->triggerEvent("vtiger.entity.beforesave.modifiable", $entityData);
 $em->triggerEvent("vtiger.entity.beforesave", $entityData);
 $em->triggerEvent("vtiger.entity.beforesave.final", $entityData);
 $em->triggerEvent("vtiger.entity.aftersave", $entityData);
 //}
 $projectQuery1 = $adb->query("select * from vtiger_project where projectid={$pcdetailsproject}");
 if ($adb->query_result($projectQuery1, 0, "substatusproj") == "CAT_parts sent by Teknema" && $adb->query_result($projectQuery1, 0, "statopartech") == 'SHIPPED') {
     $logpart .= "Movimento frecce avvenuto con successo </span><br><br>";
     $logs[$i - 1] .= "Movimento frecce avvenuto con successo";
 } elseif ($subs != "CAT_parts request" && strstr($subs, "attesa parti") != '' && $adb->query_result($projectQuery1, 0, "statopartech") == 'SHIPPED') {
     $logpart .= "<span style='color:blue'> Substatus errato {$d['2']} </span></span><br><br>";
     $logs[$i - 1] .= "Substatus errato {$d['2']}";
 } else {
     $logpart .= "Substatus non modificato </span><br><br>";
     $logs[$i - 1] .= "Substatus non modificato";