Esempio n. 1
0
 public function process(Vtiger_Request $request)
 {
     $currentUser = Users_Record_Model::getCurrentUserModel();
     $viewer = $this->getViewer($request);
     $moduleName = $request->getModule();
     $linkId = $request->get('linkid');
     $data = $request->get('data');
     $createdTime = $request->get('createdtime');
     //Date conversion from user to database format
     if (!empty($createdTime)) {
         $dates['start'] = Vtiger_Date_UIType::getDBInsertedValue($createdTime['start']);
         $dates['end'] = Vtiger_Date_UIType::getDBInsertedValue($createdTime['end']);
     }
     $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
     $data = $moduleModel->getCountriesByRating($request->get('owner'), $dates);
     $listViewUrl = $moduleModel->getListViewUrl();
     for ($i = 0; $i < count($data); $i++) {
         $data[$i]["links"] = $listViewUrl . $this->getSearchParams($data[$i][2], $request->get('owner'), $dates);
     }
     $widget = Vtiger_Widget_Model::getInstance($linkId, $currentUser->getId());
     //Include special script and css needed for this widget
     $viewer->assign('WIDGET', $widget);
     $viewer->assign('MODULE_NAME', $moduleName);
     $viewer->assign('DATA', $data);
     $viewer->assign('CURRENTUSER', $currentUser);
     $accessibleUsers = $currentUser->getAccessibleUsersForModule($moduleName);
     $viewer->assign('ACCESSIBLE_USERS', $accessibleUsers);
     $content = $request->get('content');
     if (!empty($content)) {
         $viewer->view('dashboards/DashBoardWidgetContents.tpl', $moduleName);
     } else {
         $viewer->view('dashboards/CountriesByRating.tpl', $moduleName);
     }
 }
Esempio n. 2
0
 public function save(Vtiger_Request $request)
 {
     $fieldId = $request->get('fieldid');
     $fieldInstance = Vtiger_Field_Model::getInstance($fieldId);
     $fields = ['presence', 'quickcreate', 'summaryfield', 'helpinfo', 'generatedtype', 'masseditable', 'displaytype'];
     foreach ($request->getAll() as $key => $value) {
         if ($key == 'mandatory') {
             $fieldInstance->updateTypeofDataFromMandatory($value);
         }
         if (in_array($key, $fields)) {
             $fieldInstance->set($key, $value);
         }
     }
     $defaultValue = $request->get('fieldDefaultValue');
     if ($fieldInstance->getFieldDataType() == 'date') {
         $dateInstance = new Vtiger_Date_UIType();
         $defaultValue = $dateInstance->getDBInsertedValue($defaultValue);
     }
     if ($request->has('fieldMask')) {
         $fieldInstance->set('fieldparams', $request->get('fieldMask'));
     }
     if (is_array($defaultValue)) {
         $defaultValue = implode(' |##| ', $defaultValue);
     }
     $fieldInstance->set('defaultvalue', $defaultValue);
     $response = new Vtiger_Response();
     try {
         $fieldInstance->save();
         $response->setResult(array('success' => true, 'presence' => $request->get('presence'), 'mandatory' => $fieldInstance->isMandatory(), 'label' => vtranslate($fieldInstance->get('label'), $request->get('sourceModule'))));
     } catch (Exception $e) {
         $response->setError($e->getCode(), $e->getMessage());
     }
     $response->emit();
 }
Esempio n. 3
0
 public function process(Vtiger_Request $request)
 {
     $currentUser = Users_Record_Model::getCurrentUserModel();
     $viewer = $this->getViewer($request);
     $moduleName = $request->getModule();
     $linkId = $request->get('linkid');
     $expectedclosedate = $request->get('expectedclosedate');
     //Date conversion from user to database format
     if (!empty($expectedclosedate)) {
         $closingdates['start'] = Vtiger_Date_UIType::getDBInsertedValue($expectedclosedate['start']);
         $closingdates['end'] = Vtiger_Date_UIType::getDBInsertedValue($expectedclosedate['end']);
     }
     $createdTime = $request->get('createdtime');
     //Date conversion from user to database format
     if (!empty($createdTime)) {
         $dates['start'] = Vtiger_Date_UIType::getDBInsertedValue($createdTime['start']);
         $dates['end'] = Vtiger_Date_UIType::getDBInsertedValue($createdTime['end']);
     }
     $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
     $data = $moduleModel->getForecast($closingdates, $dates);
     $widget = Vtiger_Widget_Model::getInstance($linkId, $currentUser->getId());
     //Include special script and css needed for this widget
     $viewer->assign('SCRIPTS', $this->getHeaderScripts($request));
     $viewer->assign('WIDGET', $widget);
     $viewer->assign('MODULE_NAME', $moduleName);
     $viewer->assign('DATA', $data);
     $content = $request->get('content');
     if (!empty($content)) {
         $viewer->view('dashboards/DashBoardWidgetContents.tpl', $moduleName);
     } else {
         $viewer->view('dashboards/Forecast.tpl', $moduleName);
     }
 }
Esempio n. 4
0
 public function process(Vtiger_Request $request)
 {
     $currentUser = Users_Record_Model::getCurrentUserModel();
     $viewer = $this->getViewer($request);
     $moduleName = $request->getModule();
     $linkId = $request->get('linkid');
     $owner = $request->get('owner');
     $dates = $request->get('expectedclosedate');
     //Date conversion from user to database format
     if (!empty($dates)) {
         $dates['start'] = Vtiger_Date_UIType::getDBInsertedValue($dates['start']);
         $dates['end'] = Vtiger_Date_UIType::getDBInsertedValue($dates['end']);
     }
     $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
     $data = $moduleModel->getCampaignsWidget($owner, $dates);
     $listViewUrl = $moduleModel->getListViewUrl();
     for ($i = 0; $i < count($data); $i++) {
         $data[$i][] = $listViewUrl . $this->getSearchParams($data[$i][0], $owner, $dates);
     }
     $widget = Vtiger_Widget_Model::getInstance($linkId, $currentUser->getId());
     $viewer->assign('WIDGET', $widget);
     $viewer->assign('MODULE_NAME', $moduleName);
     $viewer->assign('DATA', $data);
     //Include special script and css needed for this widget
     $viewer->assign('STYLES', $this->getHeaderCss($request));
     $viewer->assign('CURRENTUSER', $currentUser);
     $content = $request->get('content');
     if (!empty($content)) {
         $viewer->view('dashboards/CampaignsWidget.tpl', $moduleName);
     } else {
         $viewer->view('dashboards/CampaignsWidget.tpl', $moduleName);
     }
 }
 public function process(Vtiger_Request $request)
 {
     $currentUser = Users_Record_Model::getCurrentUserModel();
     $viewer = $this->getViewer($request);
     $moduleName = $request->getModule();
     $linkId = $request->get('linkid');
     $owner = $request->get('owner');
     $dates = $request->get('expectedclosedate');
     //Date conversion from user to database format
     if (!empty($dates)) {
         $dates['start'] = Vtiger_Date_UIType::getDBInsertedValue($dates['start']);
         $dates['end'] = Vtiger_Date_UIType::getDBInsertedValue($dates['end']);
     }
     $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
     $data = $moduleModel->getPotentialsCountBySalesStage($owner, $dates);
     $widget = Vtiger_Widget_Model::getInstance($linkId, $currentUser->getId());
     $viewer->assign('WIDGET', $widget);
     $viewer->assign('MODULE_NAME', $moduleName);
     $viewer->assign('DATA', $data);
     //Include special script and css needed for this widget
     $viewer->assign('SCRIPTS', $this->getHeaderScripts($request));
     $viewer->assign('STYLES', $this->getHeaderCss($request));
     $viewer->assign('CURRENTUSER', $currentUser);
     $content = $request->get('content');
     if (!empty($content)) {
         $viewer->view('dashboards/DashBoardWidgetContents.tpl', $moduleName);
     } else {
         $viewer->view('dashboards/GroupBySalesStage.tpl', $moduleName);
     }
 }
Esempio n. 6
0
 public function process(Vtiger_Request $request)
 {
     $currentUser = Users_Record_Model::getCurrentUserModel();
     $viewer = $this->getViewer($request);
     $moduleName = $request->getModule();
     $linkId = $request->get('linkid');
     $createdTime = $request->get('createdtime');
     $owner = $request->get('owner');
     //Date conversion from user to database format
     if (!empty($createdTime)) {
         $dates['start'] = Vtiger_Date_UIType::getDBInsertedValue($createdTime['start']);
         $dates['end'] = Vtiger_Date_UIType::getDBInsertedValue($createdTime['end']);
     }
     $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
     $data = $moduleModel->getLeadsCreated($owner, $dates);
     $widget = Vtiger_Widget_Model::getInstance($linkId, $currentUser->getId());
     //Include special script and css needed for this widget
     $viewer->assign('SCRIPTS', $this->getHeaderScripts($request));
     $viewer->assign('WIDGET', $widget);
     $viewer->assign('MODULE_NAME', $moduleName);
     $viewer->assign('DATA', $data);
     $viewer->assign('CURRENTUSER', $currentUser);
     $accessibleUsers = $currentUser->getAccessibleUsersForModule('Leads');
     $viewer->assign('ACCESSIBLE_USERS', $accessibleUsers);
     $content = $request->get('content');
     if (!empty($content)) {
         $viewer->view('dashboards/DashBoardWidgetContents.tpl', $moduleName);
     } else {
         $viewer->view('dashboards/LeadsCreated.tpl', $moduleName);
     }
 }
 public function process(Vtiger_Request $request)
 {
     $currentUser = Users_Record_Model::getCurrentUserModel();
     $viewer = $this->getViewer($request);
     $moduleName = $request->getModule();
     $linkId = $request->get('linkid');
     $data = $request->get('data');
     $createdTime = $request->get('createdtime');
     $widget = Vtiger_Widget_Model::getInstance($linkId, $currentUser->getId());
     if (!$request->has('owner')) {
         $owner = Settings_WidgetsManagement_Module_Model::getDefaultUserId($widget, 'Leads');
     } else {
         $owner = $request->get('owner');
     }
     $ownerForwarded = $owner;
     if ($owner == 'all') {
         $owner = '';
     }
     //Date conversion from user to database format
     if (!empty($createdTime)) {
         $dates['start'] = Vtiger_Date_UIType::getDBInsertedValue($createdTime['start']);
         $dates['end'] = Vtiger_Date_UIType::getDBInsertedValue($createdTime['end']);
     }
     $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
     $data = $owner === false ? array() : $moduleModel->getLeadsByStatusConverted($owner, $dates);
     $listViewUrl = $moduleModel->getListViewUrl();
     for ($i = 0; $i < count($data); $i++) {
         $data[$i]["links"] = $listViewUrl . $this->getSearchParams($data[$i][2], $owner, $dates);
     }
     //Include special script and css needed for this widget
     $viewer->assign('WIDGET', $widget);
     $viewer->assign('MODULE_NAME', $moduleName);
     $viewer->assign('DATA', $data);
     $viewer->assign('CURRENTUSER', $currentUser);
     $accessibleUsers = $currentUser->getAccessibleUsersForModule('Leads');
     $accessibleGroups = $currentUser->getAccessibleGroupForModule('Leads');
     $viewer->assign('ACCESSIBLE_USERS', $accessibleUsers);
     $viewer->assign('ACCESSIBLE_GROUPS', $accessibleGroups);
     $viewer->assign('OWNER', $ownerForwarded);
     $content = $request->get('content');
     if (!empty($content)) {
         $viewer->view('dashboards/DashBoardWidgetContents.tpl', $moduleName);
     } else {
         $viewer->view('dashboards/LeadsByStatusConverted.tpl', $moduleName);
     }
 }
Esempio n. 8
0
 public function process(Vtiger_Request $request)
 {
     $currentUser = Users_Record_Model::getCurrentUserModel();
     $viewer = $this->getViewer($request);
     $moduleName = "ITS4YouReports";
     $recordId = $request->get("record");
     $viewer->assign('recordid', $recordId);
     $linkId = $request->get('linkid');
     $data = $request->get('data');
     $createdTime = $request->get('createdtime');
     //Date conversion from user to database format
     if (!empty($createdTime)) {
         $dates['start'] = Vtiger_Date_UIType::getDBInsertedValue($createdTime['start']);
         $dates['end'] = Vtiger_Date_UIType::getDBInsertedValue($createdTime['end']);
     }
     $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
     $recordModel = ITS4YouReports_Record_Model::getInstanceById($recordId);
     $data = $moduleModel->getReports4You($recordId, $request->get('smownerid'), $dates);
     $detailViewUrl = 'index.php?module=ITS4YouReports&view=Detail&record=' . $recordId;
     $viewer->assign('detailViewUrl', $detailViewUrl);
     //echo "<pre>";print_r("<textarea>".$data."</textarea>");echo "</pre>";
     $widget = Vtiger_Widget_Model::getInstance($linkId, $currentUser->getId());
     $widget->set('title', $recordModel->getName());
     //Include special script and css needed for this widget
     $viewer->assign('WIDGET', $widget);
     $viewer->assign('MODULE_NAME', $moduleName);
     $viewer->assign('DATA', $data);
     $viewer->assign('CURRENTUSER', $currentUser);
     $accessibleUsers = $currentUser->getAccessibleUsersForModule('Leads');
     $viewer->assign('ACCESSIBLE_USERS', $accessibleUsers);
     $viewer->assign('SETTING_EXIST', false);
     $content = $request->get('content');
     if (!empty($content)) {
         $display_widget_header = false;
     } else {
         $display_widget_header = true;
     }
     $viewer->assign('display_widget_header', $display_widget_header);
     $viewer->view('dashboards/DashBoardWidgetContents.tpl', $moduleName);
 }
Esempio n. 9
0
 public function save(Vtiger_Request $request)
 {
     $fieldId = $request->get('fieldid');
     $fieldInstance = Vtiger_Field_Model::getInstance($fieldId);
     $fieldInstance->updateTypeofDataFromMandatory($request->get('mandatory'))->set('presence', $request->get('presence'))->set('quickcreate', $request->get('quickcreate'))->set('summaryfield', $request->get('summaryfield'))->set('masseditable', $request->get('masseditable'));
     $defaultValue = $request->get('fieldDefaultValue');
     if ($fieldInstance->getFieldDataType() == 'date') {
         $dateInstance = new Vtiger_Date_UIType();
         $defaultValue = $dateInstance->getDBInsertedValue($defaultValue);
     }
     if (is_array($defaultValue)) {
         $defaultValue = implode(' |##| ', $defaultValue);
     }
     $fieldInstance->set('defaultvalue', $defaultValue);
     $response = new Vtiger_Response();
     try {
         $fieldInstance->save();
         $response->setResult(array('success' => true, 'presence' => $request->get('presence'), 'mandatory' => $fieldInstance->isMandatory(), 'label' => vtranslate($fieldInstance->get('label'), $request->get('sourceModule'))));
     } catch (Exception $e) {
         $response->setError($e->getCode(), $e->getMessage());
     }
     $response->emit();
 }
Esempio n. 10
0
 /**
  * Function to get the record model based on the request parameters
  * @param Vtiger_Request $request
  * @return Vtiger_Record_Model or Module specific Record Model instance
  */
 protected function getRecordModelFromRequest(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $recordId = $request->get('record');
     $user = Users_Record_Model::getCurrentUserModel();
     $allDay = $request->get('allday');
     if ('on' == $allDay) {
         $request->set('time_start', $user->get('start_hour'));
         $request->set('time_end', $user->get('end_hour'));
     }
     $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
     if (!empty($recordId)) {
         $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleName);
         $modelData = $recordModel->getData();
         $recordModel->set('id', $recordId);
         $recordModel->set('mode', 'edit');
         //Due to dependencies on the activity_reminder api in Activity.php(5.x)
         $_REQUEST['mode'] = 'edit';
     } else {
         $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName);
         $modelData = $recordModel->getData();
         $recordModel->set('mode', '');
     }
     $fieldModelList = $moduleModel->getFields();
     foreach ($fieldModelList as $fieldName => $fieldModel) {
         $fieldValue = $request->get($fieldName, null);
         // For custom time fields in Calendar, it was not converting to db insert format(sending as 10:00 AM/PM)
         $fieldDataType = $fieldModel->getFieldDataType();
         if ($fieldDataType == 'time') {
             $fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue);
         }
         // End
         if ($fieldValue !== null) {
             if (!is_array($fieldValue)) {
                 $fieldValue = trim($fieldValue);
             }
             $recordModel->set($fieldName, $fieldValue);
         }
     }
     //Start Date and Time values
     $startTime = Vtiger_Time_UIType::getTimeValueWithSeconds($request->get('time_start'));
     $startDate = Vtiger_Date_UIType::getDBInsertedValue($request->get('date_start'));
     if ($startTime) {
         $startTime = Vtiger_Time_UIType::getTimeValueWithSeconds($startTime);
         $startDateTime = Vtiger_Datetime_UIType::getDBDateTimeValue($request->get('date_start') . " " . $startTime);
         list($startDate, $startTime) = explode(' ', $startDateTime);
     }
     $recordModel->set('date_start', $startDate);
     $recordModel->set('time_start', $startTime);
     //End Date and Time values
     $endTime = $request->get('time_end');
     $endDate = Vtiger_Date_UIType::getDBInsertedValue($request->get('due_date'));
     if ($endTime) {
         $endTime = Vtiger_Time_UIType::getTimeValueWithSeconds($endTime);
         $endDateTime = Vtiger_Datetime_UIType::getDBDateTimeValue($request->get('due_date') . " " . $endTime);
         list($endDate, $endTime) = explode(' ', $endDateTime);
     }
     $recordModel->set('time_end', $endTime);
     $recordModel->set('due_date', $endDate);
     $activityType = $request->get('activitytype');
     if (empty($activityType)) {
         $recordModel->set('activitytype', 'Task');
         $recordModel->set('visibility', 'Private');
     }
     //Due to dependencies on the older code
     $setReminder = $request->get('set_reminder');
     if ($setReminder) {
         $_REQUEST['set_reminder'] = 'Yes';
     } else {
         $_REQUEST['set_reminder'] = 'No';
     }
     $time = strtotime($request->get('time_end')) - strtotime($request->get('time_start'));
     $diffinSec = strtotime($request->get('due_date')) - strtotime($request->get('date_start'));
     $diff_days = floor($diffinSec / (60 * 60 * 24));
     $hours = (double) $time / 3600 + $diff_days * 24;
     $minutes = ((double) $hours - (int) $hours) * 60;
     $recordModel->set('duration_hours', (int) $hours);
     $recordModel->set('duration_minutes', round($minutes, 0));
     return $recordModel;
 }
Esempio n. 11
0
 /**
  * Function to save the record
  */
 public function save()
 {
     $currentUser = Users_Record_Model::getCurrentUserModel();
     $mode = $this->get('mode');
     $db = PearDatabase::getInstance();
     $this->setCheckBoxValue('enabled');
     $this->setCheckBoxValue('captcha');
     $this->setCheckBoxValue('roundrobin');
     if (is_array($this->get('roundrobin_userid'))) {
         $roundrobinUsersList = json_encode($this->get('roundrobin_userid'), JSON_FORCE_OBJECT);
     }
     //Saving data about webform
     if ($mode) {
         $updateQuery = "UPDATE vtiger_webforms SET description = ?, returnurl = ?, ownerid = ?, enabled = ?, captcha = ? , roundrobin = ?, roundrobin_userid = ?, roundrobin_logic = ? ,targetmodule = ? WHERE id = ?";
         $params = array($this->get('description'), $this->get('returnurl'), $this->get('ownerid'), $this->get('enabled'), $this->get('captcha'), $this->get('roundrobin'), $roundrobinUsersList, 0, $this->get('targetmodule'), $this->getId());
         $db->pquery($updateQuery, $params);
     } else {
         $insertQuery = "INSERT INTO vtiger_webforms(name, targetmodule, publicid, enabled, description, ownerid, returnurl, captcha, roundrobin, roundrobin_userid, roundrobin_logic) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
         $params = array($this->getName(), $this->get('targetmodule'), $this->generatePublicId(), $this->get('enabled'), $this->get('description'), $this->get('ownerid'), $this->get('returnurl'), $this->get('captcha'), $this->get('roundrobin'), $roundrobinUsersList, 0);
         $db->pquery($insertQuery, $params);
         $this->set('id', $db->getLastInsertID());
     }
     //Deleting existing data
     $db->pquery("DELETE FROM vtiger_webforms_field WHERE webformid = ?", array($this->getId()));
     //Saving data of source module fields info for this webform
     $selectedFieldsData = $this->get('selectedFieldsData');
     $sourceModuleModel = Vtiger_Module_Model::getInstance($this->get('targetmodule'));
     $fieldInsertQuery = "INSERT INTO vtiger_webforms_field(webformid, fieldname, neutralizedfield, defaultvalue, required, sequence, hidden) VALUES(?, ?, ?, ?, ?, ?, ?)";
     foreach ($selectedFieldsData as $fieldName => $fieldDetails) {
         $params = array($this->getId());
         $neutralizedField = $fieldName;
         $fieldDefaultValue = $fieldDetails['defaultvalue'];
         $fieldModel = Vtiger_Field_Model::getInstance($fieldName, $sourceModuleModel);
         $dataType = $fieldModel->getFieldDataType();
         //Updating custom field label
         if (self::isCustomField($fieldName)) {
             $neutralizedField = 'label:' . str_replace(' ', '_', decode_html($fieldModel->get('label')));
         }
         //Handling multi picklist
         if (is_array($fieldDefaultValue)) {
             $fieldDefaultValue = implode(" |##| ", $fieldDefaultValue);
         }
         //Handling Data format
         if ($dataType === 'date') {
             $fieldDefaultValue = Vtiger_Date_UIType::getDBInsertedValue($fieldDefaultValue);
         }
         if ($dataType === 'time') {
             $fieldDefaultValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldDefaultValue);
         }
         //Handling CheckBox value
         if ($dataType === 'boolean') {
             if ($fieldDefaultValue) {
                 $fieldDefaultValue = 'on';
             } else {
                 $fieldDefaultValue = '';
             }
         }
         if ($dataType === 'reference') {
             $referenceModule = $fieldDetails['referenceModule'];
             $referenceObject = VtigerWebserviceObject::fromName($db, $referenceModule);
             $referenceEntityId = $referenceObject->getEntityId();
             $fieldDefaultValue = $referenceEntityId . "x" . $fieldDefaultValue;
         }
         if ($dataType === 'currency') {
             $decimalSeperator = $currentUser->get('currency_decimal_separator');
             $groupSeperator = $currentUser->get('currency_grouping_separator');
             $fieldDefaultValue = str_replace($decimalSeperator, '.', $fieldDefaultValue);
             $fieldDefaultValue = str_replace($groupSeperator, '', $fieldDefaultValue);
         }
         array_push($params, $fieldName, $neutralizedField, $fieldDefaultValue, $fieldDetails['required'], $fieldDetails['sequence'], $fieldDetails['hidden']);
         $db->pquery($fieldInsertQuery, $params);
     }
 }
Esempio n. 12
0
 /**
  * Function to save the record
  */
 public function save()
 {
     $mode = $this->get('mode');
     $db = PearDatabase::getInstance();
     if ($this->get('enabled') == "on") {
         $this->set('enabled', 1);
     } else {
         $this->set('enabled', 0);
     }
     //Saving data about webform
     if ($mode) {
         $updateQuery = "UPDATE vtiger_webforms SET description = ?, returnurl = ?, ownerid = ?, enabled = ? WHERE id = ?";
         $params = array($this->get('description'), $this->get('returnurl'), $this->get('ownerid'), $this->get('enabled'), $this->getId());
         $db->pquery($updateQuery, $params);
     } else {
         $insertQuery = "INSERT INTO vtiger_webforms(name, targetmodule, publicid, enabled, description, ownerid, returnurl) VALUES(?, ?, ?, ?, ?, ?, ?)";
         $params = array($this->getName(), $this->get('targetmodule'), $this->generatePublicId(), $this->get('enabled'), $this->get('description'), $this->get('ownerid'), $this->get('returnurl'));
         $db->pquery($insertQuery, $params);
         $this->set('id', $db->getLastInsertID());
     }
     //Deleting existing data
     $db->pquery("DELETE FROM vtiger_webforms_field WHERE webformid = ?", array($this->getId()));
     //Saving data of source module fields info for this webform
     $selectedFieldsData = $this->get('selectedFieldsData');
     $sourceModuleModel = Vtiger_Module_Model::getInstance($this->get('targetmodule'));
     $fieldInsertQuery = "INSERT INTO vtiger_webforms_field(webformid, fieldname, neutralizedfield, defaultvalue, required) VALUES(?, ?, ?, ?, ?)";
     foreach ($selectedFieldsData as $fieldName => $fieldDetails) {
         $params = array($this->getId());
         $neutralizedField = $fieldName;
         $fieldDefaultValue = $fieldDetails['defaultvalue'];
         $fieldModel = Vtiger_Field_Model::getInstance($fieldName, $sourceModuleModel);
         $dataType = $fieldModel->getFieldDataType();
         //Updating custom field label
         if (self::isCustomField($fieldName)) {
             $neutralizedField = 'label:' . str_replace(' ', '_', decode_html($fieldModel->get('label')));
         }
         //Handling multi picklist
         if (is_array($fieldDefaultValue)) {
             $fieldDefaultValue = implode(" |##| ", $fieldDefaultValue);
         }
         //Handling Data format
         if ($dataType === 'date') {
             $fieldDefaultValue = Vtiger_Date_UIType::getDBInsertedValue($fieldDefaultValue);
         }
         if ($dataType === 'time') {
             $fieldDefaultValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldDefaultValue);
         }
         //Handling CheckBox value
         if ($dataType === 'boolean') {
             if ($fieldDefaultValue) {
                 $fieldDefaultValue = 'on';
             } else {
                 $fieldDefaultValue = '';
             }
         }
         array_push($params, $fieldName, $neutralizedField, $fieldDefaultValue, $fieldDetails['required']);
         $db->pquery($fieldInsertQuery, $params);
     }
 }
Esempio n. 13
0
 /**
  * Function to get the record model based on the request parameters
  * @param Vtiger_Request $request
  * @return Vtiger_Record_Model or Module specific Record Model instance
  */
 protected function getRecordModelFromRequest(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $recordId = $request->get('record');
     $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
     if (!empty($recordId)) {
         $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleName);
         $modelData = $recordModel->getData();
         $recordModel->set('id', $recordId);
         $recordModel->set('mode', 'edit');
         //Due to dependencies on the activity_reminder api in Activity.php(5.x)
         $_REQUEST['mode'] = 'edit';
     } else {
         $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName);
         $modelData = $recordModel->getData();
         $recordModel->set('mode', '');
     }
     $fieldModelList = $moduleModel->getFields();
     foreach ($fieldModelList as $fieldName => $fieldModel) {
         $fieldValue = $request->get($fieldName, null);
         if ($fieldValue !== null) {
             if (!is_array($fieldValue)) {
                 $fieldValue = trim($fieldValue);
             }
             $recordModel->set($fieldName, $fieldValue);
         }
     }
     //Start Date and Time values
     $startTime = Vtiger_Time_UIType::getTimeValueWithSeconds($request->get('time_start'));
     $startDateTime = Vtiger_Datetime_UIType::getDBDateTimeValue($request->get('date_start') . " " . $startTime);
     list($startDate, $startTime) = explode(' ', $startDateTime);
     $recordModel->set('date_start', $startDate);
     $recordModel->set('time_start', $startTime);
     //End Date and Time values
     $endTime = $request->get('time_end');
     $endDate = Vtiger_Date_UIType::getDBInsertedValue($request->get('due_date'));
     if ($endTime) {
         $endTime = Vtiger_Time_UIType::getTimeValueWithSeconds($endTime);
         $endDateTime = Vtiger_Datetime_UIType::getDBDateTimeValue($request->get('due_date') . " " . $endTime);
         list($endDate, $endTime) = explode(' ', $endDateTime);
     }
     $recordModel->set('time_end', $endTime);
     $recordModel->set('due_date', $endDate);
     $activityType = $request->get('activitytype');
     if (empty($activityType)) {
         $recordModel->set('activitytype', 'Task');
         $recordModel->set('visibility', 'Private');
     }
     //Due to dependencies on the older code
     $setReminder = $request->get('set_reminder');
     if ($setReminder == 'on') {
         $_REQUEST['set_reminder'] = 'Yes';
     } else {
         $_REQUEST['set_reminder'] = 'No';
     }
     $time = strtotime($request->get('due_date')) - strtotime($request->get('date_start'));
     $hours = (double) $time / 3600;
     $minutes = ((double) $hours - (int) $hours) * 60;
     $recordModel->set('duration_hours', (int) $hours);
     $recordModel->set('duration_minutes', $minutes);
     return $recordModel;
 }
Esempio n. 14
0
 /**
  * Process the request to perform relationship operations
  * @global Users Instance $currentUserModel
  * @global PearDataBase Instance $adb
  * @global String $currentModule
  * @param Vtiger_Request $request
  * @return boolean
  */
 public function process(Vtiger_Request $request)
 {
     $currentUserModel = Users_Record_Model::getCurrentUserModel();
     $response = new Vtiger_Response(true);
     $viewer = $this->getViewer($request);
     if ('find' == $this->getOperationArg($request)) {
         $this->skipConnection = true;
         // No need to connect to mailbox here, improves performance
         // Check if the message is already linked.
         $linkedto = MailManager_Relate_Action::associatedLink($request->get('_msguid'));
         // If the message was not linked, lookup for matching records, using FROM address
         if (empty($linkedto)) {
             $results = array();
             $modules = array();
             $allowedModules = $this->getCurrentUserMailManagerAllowedModules();
             foreach (self::$MODULES as $MODULE) {
                 if (!in_array($MODULE, $allowedModules)) {
                     continue;
                 }
                 $from = $request->get('_mfrom');
                 if (empty($from)) {
                     continue;
                 }
                 $results[$MODULE] = $this->lookupModuleRecordsWithEmail($MODULE, $from);
                 $describe = $this->ws_describe($MODULE);
                 $modules[$MODULE] = array('label' => $describe['label'], 'name' => textlength_check($describe['name']), 'id' => $describe['idPrefix']);
                 // If look is found in a module, skip rest. - for performance
                 //if (!empty($results[$MODULE])) break;
             }
             $viewer->assign('LOOKUPS', $results);
             $viewer->assign('MODULES', $modules);
         } else {
             $viewer->assign('LINKEDTO', $linkedto);
         }
         $viewer->assign('LINK_TO_AVAILABLE_ACTIONS', $this->linkToAvailableActions());
         $viewer->assign('ALLOWED_MODULES', $allowedModules);
         $viewer->assign('MSGNO', $request->get('_msgno'));
         $viewer->assign('FOLDER', $request->get('_folder'));
         $response->setResult(array('ui' => $viewer->view('Relationship.tpl', 'MailManager', true)));
     } else {
         if ('link' == $this->getOperationArg($request)) {
             $linkto = $request->get('_mlinkto');
             $foldername = $request->get('_folder');
             $connector = $this->getConnector($foldername);
             // This is to handle larger uploads
             $memory_limit = MailManager_Config_Model::get('MEMORY_LIMIT');
             ini_set('memory_limit', $memory_limit);
             $mail = $connector->openMail($request->get('_msgno'));
             $mail->attachments();
             // Initialize attachments
             $linkedto = MailManager_Relate_Action::associate($mail, $linkto);
             $viewer->assign('LINK_TO_AVAILABLE_ACTIONS', $this->linkToAvailableActions());
             $viewer->assign('ALLOWED_MODULES', $this->getCurrentUserMailManagerAllowedModules());
             $viewer->assign('LINKEDTO', $linkedto);
             $viewer->assign('MSGNO', $request->get('_msgno'));
             $viewer->assign('FOLDER', $foldername);
             $response->setResult(array('ui' => $viewer->view('Relationship.tpl', 'MailManager', true)));
         } else {
             if ('create_wizard' == $this->getOperationArg($request)) {
                 $moduleName = $request->get('_mlinktotype');
                 $parent = $request->get('_mlinkto');
                 $foldername = $request->get('_folder');
                 $connector = $this->getConnector($foldername);
                 $mail = $connector->openMail($request->get('_msgno'));
                 $formData = $this->processFormData($mail);
                 foreach ($formData as $key => $value) {
                     $request->set($key, $value);
                 }
                 $request->set('module', $moduleName);
                 // Delegate QuickCreate FormUI to the target view controller of module.
                 $quickCreateviewClassName = $moduleName . '_QuickCreateAjax_View';
                 if (!class_exists($quickCreateviewClassName)) {
                     $quickCreateviewClassName = 'Vtiger_QuickCreateAjax_View';
                 }
                 $quickCreateViewController = new $quickCreateviewClassName();
                 $quickCreateViewController->process($request);
                 // UI already sent
                 $response = false;
             } else {
                 if ('create' == $this->getOperationArg($request)) {
                     $linkModule = $request->get('_mlinktotype');
                     $parent = $request->get('_mlinkto');
                     $foldername = $request->get('_folder');
                     if (!empty($foldername)) {
                         // This is to handle larger uploads
                         $memory_limit = MailManager_Config_Model::get('MEMORY_LIMIT');
                         ini_set('memory_limit', $memory_limit);
                         $connector = $this->getConnector($foldername);
                         $mail = $connector->openMail($request->get('_msgno'));
                         $attachments = $mail->attachments();
                         // Initialize attachments
                     }
                     $linkedto = MailManager_Relate_Action::getSalesEntityInfo($parent);
                     $recordModel = Vtiger_Record_Model::getCleanInstance($linkModule);
                     $fields = $recordModel->getModule()->getFields();
                     foreach ($fields as $fieldName => $fieldModel) {
                         if ($request->has($fieldName)) {
                             $fieldValue = $request->get($fieldName);
                             $fieldDataType = $fieldModel->getFieldDataType();
                             if ($fieldDataType == 'time') {
                                 $fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue);
                             }
                             $recordModel->set($fieldName, $fieldValue);
                         }
                     }
                     switch ($linkModule) {
                         case 'Calendar':
                             $activityType = $recordModel->get('activitytype');
                             if (!$activityType) {
                                 $activityType = 'Task';
                             }
                             $recordModel->set('activitytype', $activityType);
                             //Start Date and Time values
                             $startTime = Vtiger_Time_UIType::getTimeValueWithSeconds($request->get('time_start'));
                             $startDateTime = Vtiger_Datetime_UIType::getDBDateTimeValue($request->get('date_start') . " " . $startTime);
                             list($startDate, $startTime) = explode(' ', $startDateTime);
                             $recordModel->set('date_start', $startDate);
                             $recordModel->set('time_start', $startTime);
                             //End Date and Time values
                             $endDate = Vtiger_Date_UIType::getDBInsertedValue($request->get('due_date'));
                             if ($activityType != 'Task') {
                                 $endTime = Vtiger_Time_UIType::getTimeValueWithSeconds($request->get('time_end'));
                                 $endDateTime = Vtiger_Datetime_UIType::getDBDateTimeValue($request->get('due_date') . " " . $endTime);
                                 list($endDate, $endTime) = explode(' ', $endDateTime);
                             } else {
                                 $endTime = '';
                             }
                             $recordModel->set('time_end', $endTime);
                             $recordModel->set('due_date', $endDate);
                             if ($parent) {
                                 if ($linkedto['module'] == 'Contacts') {
                                     $recordModel->set('contact_id', $parent);
                                 } else {
                                     $recordModel->set('parent_id', $parent);
                                 }
                             }
                             $recordModel->set('visibility', 'Public');
                             break;
                         case 'HelpDesk':
                             $from = $mail->from();
                             if ($parent) {
                                 if ($linkedto['module'] == 'Contacts') {
                                     $referenceFieldName = 'contact_id';
                                 } elseif ($linkedto['module'] == 'Accounts') {
                                     $referenceFieldName = 'parent_id';
                                 }
                             }
                             $recordModel->set($referenceFieldName, $this->setParentForHelpDesk($parent, $from));
                             break;
                         case 'ModComments':
                             $recordModel->set('assigned_user_id', $currentUserModel->getId());
                             $recordModel->set('commentcontent', $request->getRaw('commentcontent'));
                             $recordModel->set('userid', $currentUserModel->getId());
                             $recordModel->set('creator', $currentUserModel->getId());
                             $recordModel->set('related_to', $parent);
                             break;
                     }
                     try {
                         $recordModel->save();
                         // This condition is added so that emails are not created for Tickets and Todo without Parent,
                         // as there is no way to relate them
                         if (empty($parent) && $linkModule != 'HelpDesk' && $linkModule != 'Calendar') {
                             $linkedto = MailManager_Relate_Action::associate($mail, $recordModel->getId());
                         }
                         if ($linkModule === 'Calendar') {
                             // Handled to save follow up event
                             $followupMode = $request->get('followup');
                             //Start Date and Time values
                             $startTime = Vtiger_Time_UIType::getTimeValueWithSeconds($request->get('followup_time_start'));
                             $startDateTime = Vtiger_Datetime_UIType::getDBDateTimeValue($request->get('followup_date_start') . " " . $startTime);
                             list($startDate, $startTime) = explode(' ', $startDateTime);
                             $subject = $request->get('subject');
                             if ($followupMode == 'on' && $startTime != '' && $startDate != '') {
                                 $recordModel->set('eventstatus', 'Planned');
                                 $recordModel->set('subject', '[Followup] ' . $subject);
                                 $recordModel->set('date_start', $startDate);
                                 $recordModel->set('time_start', $startTime);
                                 $currentUser = Users_Record_Model::getCurrentUserModel();
                                 $activityType = $recordModel->get('activitytype');
                                 if ($activityType == 'Call') {
                                     $minutes = $currentUser->get('callduration');
                                 } else {
                                     $minutes = $currentUser->get('othereventduration');
                                 }
                                 $dueDateTime = date('Y-m-d H:i:s', strtotime("{$startDateTime}+{$minutes} minutes"));
                                 list($startDate, $startTime) = explode(' ', $dueDateTime);
                                 $recordModel->set('due_date', $startDate);
                                 $recordModel->set('time_end', $startTime);
                                 $recordModel->set('recurringtype', '');
                                 $recordModel->set('mode', 'create');
                                 $recordModel->save();
                             }
                         }
                         // add attachments to the tickets as Documents
                         if ($linkModule == 'HelpDesk' && !empty($attachments)) {
                             $relationController = new MailManager_Relate_Action();
                             $relationController->__SaveAttachements($mail, $linkModule, $recordModel);
                         }
                         $viewer->assign('MSGNO', $request->get('_msgno'));
                         $viewer->assign('LINKEDTO', $linkedto);
                         $viewer->assign('ALLOWED_MODULES', $this->getCurrentUserMailManagerAllowedModules());
                         $viewer->assign('LINK_TO_AVAILABLE_ACTIONS', $this->linkToAvailableActions());
                         $viewer->assign('FOLDER', $foldername);
                         $response->setResult(array('ui' => $viewer->view('Relationship.tpl', 'MailManager', true)));
                     } catch (Exception $e) {
                         $response->setResult(array('ui' => '', 'error' => $e));
                     }
                 } else {
                     if ('savedraft' == $this->getOperationArg($request)) {
                         $connector = $this->getConnector('__vt_drafts');
                         $draftResponse = $connector->saveDraft($request);
                         $response->setResult($draftResponse);
                     } else {
                         if ('saveattachment' == $this->getOperationArg($request)) {
                             $connector = $this->getConnector('__vt_drafts');
                             $uploadResponse = $connector->saveAttachment($request);
                             $response->setResult($uploadResponse);
                         } else {
                             if ('commentwidget' == $this->getOperationArg($request)) {
                                 $viewer->assign('LINKMODULE', $request->get('_mlinktotype'));
                                 $viewer->assign('PARENT', $request->get('_mlinkto'));
                                 $viewer->assign('MSGNO', $request->get('_msgno'));
                                 $viewer->assign('FOLDER', $request->get('_folder'));
                                 $viewer->view('MailManagerCommentWidget.tpl', 'MailManager');
                                 $response = false;
                             }
                         }
                     }
                 }
             }
         }
     }
     return $response;
 }
Esempio n. 15
0
 /**
  * Function to get the record model based on the request parameters
  * @param Vtiger_Request $request
  * @return Vtiger_Record_Model or Module specific Record Model instance
  */
 public function getRecordModelFromRequest(Vtiger_Request $request)
 {
     $recordModel = parent::getRecordModelFromRequest($request);
     $startDate = $request->get('date_start');
     if (!empty($startDate)) {
         //Start Date and Time values
         $startTime = Vtiger_Time_UIType::getTimeValueWithSeconds($request->get('time_start'));
         $startDate = Vtiger_Date_UIType::getDBInsertedValue($request->get('date_start'));
         if ($startTime) {
             $startDateTime = Vtiger_Datetime_UIType::getDBDateTimeValue($request->get('date_start') . " " . $startTime);
             list($startDate, $startTime) = explode(' ', $startDateTime);
         }
         $recordModel->set('date_start', $startDate);
         $recordModel->set('time_start', $startTime);
     }
     $endDate = $request->get('due_date');
     if (!empty($endDate)) {
         //End Date and Time values
         $endTime = $request->get('time_end');
         $endDate = Vtiger_Date_UIType::getDBInsertedValue($request->get('due_date'));
         if ($endTime) {
             $endTime = Vtiger_Time_UIType::getTimeValueWithSeconds($endTime);
             $endDateTime = Vtiger_Datetime_UIType::getDBDateTimeValue($request->get('due_date') . " " . $endTime);
             list($endDate, $endTime) = explode(' ', $endDateTime);
         }
         $recordModel->set('time_end', $endTime);
         $recordModel->set('due_date', $endDate);
     }
     $record = $request->get('record');
     if (!$record) {
         $activityType = $request->get('activitytype');
         $visibility = $request->get('visibility');
         if (empty($activityType)) {
             $recordModel->set('activitytype', 'Task');
             $visibility = 'Private';
             $recordModel->set('visibility', $visibility);
         }
     }
     if (empty($visibility)) {
         $assignedUserId = $recordModel->get('assigned_user_id');
         $sharedType = Calendar_Module_Model::getSharedType($assignedUserId);
         if ($sharedType == 'selectedusers') {
             $sharedType = 'public';
         }
         $recordModel->set('visibility', ucfirst($sharedType));
     }
     return $recordModel;
 }
Esempio n. 16
0
 /**
  * Function to get the record model based on the request parameters
  * @param Vtiger_Request $request
  * @return Vtiger_Record_Model or Module specific Record Model instance
  */
 public function getRecordModelFromRequest(Vtiger_Request $request)
 {
     $recordModel = parent::getRecordModelFromRequest($request);
     $startDate = $request->get('date_start');
     if (!empty($startDate)) {
         //Start Date and Time values
         $startTime = Vtiger_Time_UIType::getTimeValueWithSeconds($request->get('time_start'));
         $startDate = Vtiger_Date_UIType::getDBInsertedValue($request->get('date_start'));
         if ($startTime) {
             $startDateTime = Vtiger_Datetime_UIType::getDBDateTimeValue($request->get('date_start') . " " . $startTime);
             list($startDate, $startTime) = explode(' ', $startDateTime);
         }
         $recordModel->set('date_start', $startDate);
         $recordModel->set('time_start', $startTime);
     }
     $endDate = $request->get('due_date');
     if (!empty($endDate)) {
         //End Date and Time values
         $endTime = $request->get('time_end');
         $endDate = Vtiger_Date_UIType::getDBInsertedValue($request->get('due_date'));
         if ($endTime) {
             $endTime = Vtiger_Time_UIType::getTimeValueWithSeconds($endTime);
             $endDateTime = Vtiger_Datetime_UIType::getDBDateTimeValue($request->get('due_date') . " " . $endTime);
             list($endDate, $endTime) = explode(' ', $endDateTime);
         }
         $recordModel->set('time_end', $endTime);
         $recordModel->set('due_date', $endDate);
     }
     $record = $request->get('record');
     if (!$record) {
         $activityType = $request->get('activitytype');
         $visibility = $request->get('visibility');
         if (empty($activityType)) {
             $recordModel->set('activitytype', 'Task');
             $visibility = 'Private';
             $recordModel->set('visibility', $visibility);
         }
     }
     if (empty($visibility)) {
         $assignedUserId = $recordModel->get('assigned_user_id');
         $sharedType = Calendar_Module_Model::getSharedType($assignedUserId);
         if ($sharedType == 'selectedusers') {
             $sharedType = 'public';
         }
         $recordModel->set('visibility', ucfirst($sharedType));
     }
     $time = strtotime($endTime) - strtotime($startTime);
     $diffinSec = strtotime($endDate) - strtotime($startDate);
     $diff_days = floor($diffinSec / (60 * 60 * 24));
     $hours = (double) $time / 3600 + $diff_days * 24;
     $minutes = ((double) $hours - (int) $hours) * 60;
     $recordModel->set('duration_hours', (int) $hours);
     $recordModel->set('duration_minutes', round($minutes, 0));
     return $recordModel;
 }
Esempio n. 17
0
    public function save(Vtiger_Request $request) {
        $fieldId = $request->get('fieldid');
        $fieldInstance = Vtiger_Field_Model::getInstance($fieldId);
		
		$saveResult = Array();
		if((!$fieldInstance->isMandatory() && $request->get('mandatory')=='M') || ($fieldInstance->isMandatory() && $request->get('mandatory')=='O')) {
			$fieldInstance->updateTypeofDataFromMandatory($request->get('mandatory'));
			$saveResult['mandatory'] = $fieldInstance->isMandatory();
			$saveResult['success'] = true;
		}
		if($fieldInstance->get('label') != $request->get('label')) {
			$saveResult['label'] = $request->get('label');
			$fieldInstance->set('label', $saveResult['label'])->setFieldLabel($saveResult['label']);
			$saveResult['success'] = true;
		}
		if($fieldInstance->get('wiki') != $request->get('wikiid')) {
			$saveResult['wiki'] = $fieldInstance->setFieldWiki($request->get('wikiid'));
			if($saveResult['wiki']) {
				$fieldInstance->set('wiki', $request->get('wikiid'));
			}
			$saveResult['success'] = true;
		}
		if($fieldInstance->get('presence') != $request->get('presence')) {
			$saveResult['presence'] = $request->get('presence');
			$fieldInstance->set('presence', $saveResult['presence']);
			$saveResult['success'] = true;
		}
		if($fieldInstance->get('quickcreate') != $request->get('quickcreate')) {
			$saveResult['quickcreate'] = $request->get('quickcreate');
			$fieldInstance->set('quickcreate', $saveResult['quickcreate']);
			$saveResult['success'] = true;
		}
		if($fieldInstance->get('summaryfield') != $request->get('summaryfield')) {
			$saveResult['summaryfield'] = $request->get('summaryfield');
			$fieldInstance->set('summaryfield', $saveResult['summaryfield']);
			$saveResult['success'] = true;
		}
		if($fieldInstance->get('masseditable') != $request->get('masseditable')) {
			$saveResult['masseditable'] = $request->get('masseditable');
			$fieldInstance->set('masseditable', $saveResult['masseditable']);
			$saveResult['success'] = true;
		}
		
		$defaultValue = $request->get('fieldDefaultValue');
		if($fieldInstance->getFieldDataType() == 'date') {
			$dateInstance = new Vtiger_Date_UIType();
			$defaultValue = $dateInstance->getDBInsertedValue($defaultValue);
		}

		if(is_array($defaultValue)) {
			$defaultValue = implode(' |##| ',$defaultValue);
		}
        $fieldInstance->set('defaultvalue', $defaultValue);
        $response = new Vtiger_Response();
		
        try{
            $fieldInstance->save();
            $response->setResult($saveResult);
        }catch(Exception $e) {
            $response->setError($e->getCode(), $e->getMessage());
        }
        $response->emit();
    }