function save_module($module) { global $adb; //Handling module specific save //Insert into seactivity rel if (isset($this->column_fields['parent_id']) && $this->column_fields['parent_id'] != '') { $this->insertIntoEntityTable("vtiger_seactivityrel", $module); } elseif ($this->column_fields['parent_id'] == '' && $insertion_mode == "edit") { $this->deleteRelation("vtiger_seactivityrel"); } //Insert into cntactivity rel if (isset($this->column_fields['contact_id']) && $this->column_fields['contact_id'] != '') { $this->insertIntoEntityTable('vtiger_cntactivityrel', $module); } elseif ($this->column_fields['contact_id'] == '' && $insertion_mode == "edit") { $this->deleteRelation('vtiger_cntactivityrel'); } if (!empty($this->column_fields['sendnotification'])) { $mail_data = array(); $mail_data['user_id'] = $this->column_fields['assigned_user_id']; $mail_data['subject'] = $this->column_fields['subject']; $mail_data['status'] = $this->column_fields['activitytype'] == 'Task' ? $this->column_fields['taskstatus'] : $this->column_fields['eventstatus']; $mail_data['taskpriority'] = $this->column_fields['taskpriority']; $relatedContacts = getActivityRelatedContacts($this->id); $mail_data['contact_name'] = implode(',', $relatedContacts); $mail_data['description'] = $this->column_fields['description']; $mail_data['st_date_time'] = $this->column_fields['date_start'] . ' ' . $this->column_fields['time_start']; $mail_data['end_date_time'] = $this->column_fields['due_date'] . ' ' . $this->column_fields['time_end']; $mail_data['relatedto'] = getParentName($this->column_fields['parent_id']); $mail_data['location'] = $this->column_fields['location']; getEventNotification($this->column_fields['activitytype'], $this->column_fields['subject'], $mail_data); } $recur_type = ''; if (($recur_type == "--None--" || $recur_type == '') && $this->mode == "edit") { $sql = 'delete from vtiger_recurringevents where activityid=?'; $adb->pquery($sql, array($this->id)); } //Handling for recurring type //Insert into vtiger_recurring event table if (isset($this->column_fields['recurringtype']) && $this->column_fields['recurringtype'] != '' && $this->column_fields['recurringtype'] != '--None--') { $recur_type = trim($this->column_fields['recurringtype']); $recur_data = getrecurringObjValue(); if (is_object($recur_data)) { $this->insertIntoRecurringTable($recur_data); } } //Insert into vtiger_activity_remainder table $this->insertIntoReminderTable('vtiger_activity_reminder', $module, ""); //Handling for invitees $selected_users_string = $_REQUEST['inviteesid']; $invitees_array = explode(';', $selected_users_string); $this->insertIntoInviteeTable($module, $invitees_array); //Inserting into sales man activity rel $this->insertIntoSmActivityRel($module); $this->insertIntoActivityReminderPopup($module); }
/** * Function returns the Calendar Events for the module * @param <String> $mode - upcoming/overdue mode * @param <Vtiger_Paging_Model> $pagingModel - $pagingModel * @param <String> $user - all/userid * @param <String> $recordId - record id * @return <Array> */ function getCalendarActivities($mode, $pagingModel, $user, $recordId = false) { $currentUser = Users_Record_Model::getCurrentUserModel(); $db = PearDatabase::getInstance(); if (!$user) { $user = $currentUser->getId(); } $orderBy = $pagingModel->getForSql('orderby'); $sortOrder = $pagingModel->getForSql('sortorder'); if (empty($sortOrder) || !in_array($sortOrder, ['asc', 'desc'])) { $sortOrder = 'ASC'; } if (empty($orderBy)) { $orderBy = "date_start {$sortOrder}, time_start {$sortOrder}"; } else { $orderBy .= ' ' . $sortOrder; } $nowInUserFormat = Vtiger_Datetime_UIType::getDisplayDateTimeValue(date('Y-m-d H:i:s')); $nowInDBFormat = Vtiger_Datetime_UIType::getDBDateTimeValue($nowInUserFormat); list($currentDate, $currentTime) = explode(' ', $nowInDBFormat); $instance = CRMEntity::getInstance('Calendar'); $UserAccessConditions = $instance->getUserAccessConditionsQuerySR('Calendar'); $params = []; $query = "SELECT vtiger_crmentity.crmid, vtiger_crmentity.smownerid, vtiger_crmentity.setype, vtiger_activity.*\n\t\t\tFROM vtiger_activity\n\t\t\tINNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_activity.activityid\n\t\t\tWHERE vtiger_crmentity.deleted=0"; $query .= $UserAccessConditions; if ($mode === 'upcoming') { $query .= " AND (vtiger_activity.activitytype NOT IN ('Emails'))\n\t\t\tAND (vtiger_activity.status is NULL OR vtiger_activity.status NOT IN ('Completed', 'Deferred'))\n\t\t\tAND (vtiger_activity.eventstatus is NULL OR vtiger_activity.eventstatus NOT IN ('Held')) \n\t\t\tAND CASE WHEN vtiger_activity.activitytype='Task' THEN due_date >= '{$currentDate}' ELSE CONCAT(due_date,' ',time_end) >= '{$nowInDBFormat}' END"; } elseif ($mode === 'overdue') { $query .= " AND (vtiger_activity.activitytype NOT IN ('Emails'))\n\t\t\tAND (vtiger_activity.status is NULL OR vtiger_activity.status NOT IN ('Completed', 'Deferred'))\n\t\t\tAND (vtiger_activity.eventstatus is NULL OR vtiger_activity.eventstatus NOT IN ('Held')) \n\t\t\tAND CASE WHEN vtiger_activity.activitytype='Task' THEN due_date < '{$currentDate}' ELSE CONCAT(due_date,' ',time_end) < '{$nowInDBFormat}' END"; } elseif ($mode === 'assigned_upcoming') { $query .= " AND (vtiger_activity.status is NULL OR vtiger_activity.status NOT IN ('Completed', 'Deferred'))\n\t\t\tAND (vtiger_activity.eventstatus is NULL OR vtiger_activity.eventstatus NOT IN ('Held')) \n\t\t\tAND CASE WHEN vtiger_activity.activitytype='Task' THEN due_date >= '{$currentDate}' ELSE CONCAT(due_date,' ',time_end) >= '{$nowInDBFormat}' END AND vtiger_crmentity.smcreatorid = ?"; $params[] = $currentUser->getId(); } elseif ($mode === 'assigned_over') { $query .= " AND (vtiger_activity.status is NULL OR vtiger_activity.status NOT IN ('Completed', 'Deferred'))\n\t\t\tAND (vtiger_activity.eventstatus is NULL OR vtiger_activity.eventstatus NOT IN ('Held')) \n\t\t\tAND CASE WHEN vtiger_activity.activitytype='Task' THEN due_date < '{$currentDate}' ELSE CONCAT(due_date,' ',time_end) < '{$nowInDBFormat}' END AND vtiger_crmentity.smcreatorid = ?"; $params[] = $currentUser->getId(); } $accessibleUsers = $currentUser->getAccessibleUsers(); $accessibleGroups = $currentUser->getAccessibleGroups(); if ($user != 'all' && $user != '' && (array_key_exists($user, $accessibleUsers) || array_key_exists($user, $accessibleGroups))) { $query .= ' AND vtiger_crmentity.smownerid = ?'; $params[] = $user; } $query .= ' ORDER BY ' . $orderBy . ' LIMIT ?, ?'; $params[] = $pagingModel->getStartIndex(); $params[] = $pagingModel->getPageLimit() + 1; $result = $db->pquery($query, $params); $numOfRows = $db->num_rows($result); $activities = array(); for ($i = 0; $i < $numOfRows; $i++) { $row = $db->query_result_rowdata($result, $i); $model = Vtiger_Record_Model::getCleanInstance('Calendar'); $model->setData($row); if ($row['activitytype'] == 'Task') { $due_date = $row['due_date']; $dayEndTime = '23:59:59'; $endInUserFormat = Vtiger_Datetime_UIType::getDisplayDateTimeValue($due_date . " " . $dayEndTime); $EndDateTime = Vtiger_Datetime_UIType::getDBDateTimeValue($endInUserFormat); $dueDateTimeInDbFormat = explode(' ', $EndDateTime); $dueTimeInDbFormat = $dueDateTimeInDbFormat[1]; $model->set('time_end', $dueTimeInDbFormat); } $model->setId($row['crmid']); if ($row['parent_id']) { if (isRecordExists($row['parent_id'])) { $record = Vtiger_Record_Model::getInstanceById($row['parent_id']); if ($record->getModuleName() == 'Accounts') { $model->set('contractor', $record); } else { if ($record->getModuleName() == 'Potentials') { if (isRecordExists($record->get('related_to'))) { $recordContractor = Vtiger_Record_Model::getInstanceById($record->get('related_to')); $model->set('contractor', $recordContractor); } } else { if ($record->getModuleName() == 'Project') { if (isRecordExists($record->get('linktoaccountscontacts'))) { $recordContractor = Vtiger_Record_Model::getInstanceById($record->get('linktoaccountscontacts')); $model->set('contractor', $recordContractor); } } else { if ($record->getModuleName() == 'ServiceContracts') { if (isRecordExists($record->get('sc_realted_to'))) { $recordContractor = Vtiger_Record_Model::getInstanceById($record->get('sc_realted_to')); $model->set('contractor', $recordContractor); } } else { if ($record->getModuleName() == 'HelpDesk') { if (isRecordExists($record->get('parent_id'))) { $recordContractor = Vtiger_Record_Model::getInstanceById($record->get('parent_id')); $model->set('contractor', $recordContractor); } } } } } } } } $contactsA = getActivityRelatedContacts($row['activityid']); if (count($contactsA)) { foreach ($contactsA as $j => $rcA2) { $contactsA[$j] = '<a href="index.php?module=Contacts&view=Detail&record=' . $j . '">' . $rcA2 . '</a>'; $model->set('contact_id', $contactsA); } } $activities[] = $model; } $pagingModel->calculatePageRange($activities); if ($numOfRows > $pagingModel->getPageLimit()) { array_pop($activities); $pagingModel->set('nextPageExists', true); } else { $pagingModel->set('nextPageExists', false); } return $activities; }
function getActivityMailInfo($return_id, $status, $activity_type) { $mail_data = array(); global $adb; $qry = "select * from vtiger_activity where activityid=?"; $ary_res = $adb->pquery($qry, array($return_id)); $send_notification = $adb->query_result($ary_res, 0, "sendnotification"); $subject = $adb->query_result($ary_res, 0, "subject"); $priority = $adb->query_result($ary_res, 0, "priority"); $st_date = $adb->query_result($ary_res, 0, "date_start"); $st_time = $adb->query_result($ary_res, 0, "time_start"); $end_date = $adb->query_result($ary_res, 0, "due_date"); $end_time = $adb->query_result($ary_res, 0, "time_end"); $location = $adb->query_result($ary_res, 0, "location"); if (!empty($st_time)) { $date = new DateTimeField($st_date . ' ' . $st_time); $st_date = $date->getDisplayDate(); $st_time = $date->getDisplayTime(); } if (!empty($end_time)) { $date = new DateTimeField($end_date . ' ' . $end_time); $end_date = $date->getDisplayDate(); $end_time = $date->getDisplayTime(); } $owner_qry = "select smownerid from vtiger_crmentity where crmid=?"; $res = $adb->pquery($owner_qry, array($return_id)); $owner_id = $adb->query_result($res, 0, "smownerid"); $usr_res = $adb->pquery("select count(*) as count from vtiger_users where id=?", array($owner_id)); if ($adb->query_result($usr_res, 0, 'count') > 0) { $assignType = "U"; $usr_id = $owner_id; } else { $assignType = "T"; $group_qry = "select groupname from vtiger_groups where groupid=?"; $grp_res = $adb->pquery($group_qry, array($owner_id)); $grp_name = $adb->query_result($grp_res, 0, "groupname"); } $desc_qry = "select description from vtiger_crmentity where crmid=?"; $des_res = $adb->pquery($desc_qry, array($return_id)); $description = $adb->query_result($des_res, 0, "description"); $rel_qry = "select case vtiger_crmentity.setype when 'Leads' then vtiger_leaddetails.lastname when 'Accounts' then vtiger_account.accountname when 'Potentials' then vtiger_potential.potentialname when 'Quotes' then vtiger_quotes.subject when 'PurchaseOrder' then vtiger_purchaseorder.subject when 'SalesOrder' then vtiger_salesorder.subject when 'Invoice' then vtiger_invoice.subject when 'Campaigns' then vtiger_campaign.campaignname when 'HelpDesk' then vtiger_troubletickets.title end as relname from vtiger_seactivityrel inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_seactivityrel.crmid left join vtiger_leaddetails on vtiger_leaddetails.leadid = vtiger_seactivityrel.crmid left join vtiger_account on vtiger_account.accountid=vtiger_seactivityrel.crmid left join vtiger_potential on vtiger_potential.potentialid=vtiger_seactivityrel.crmid left join vtiger_quotes on vtiger_quotes.quoteid= vtiger_seactivityrel.crmid left join vtiger_purchaseorder on vtiger_purchaseorder.purchaseorderid = vtiger_seactivityrel.crmid left join vtiger_salesorder on vtiger_salesorder.salesorderid = vtiger_seactivityrel.crmid left join vtiger_invoice on vtiger_invoice.invoiceid = vtiger_seactivityrel.crmid left join vtiger_campaign on vtiger_campaign.campaignid = vtiger_seactivityrel.crmid left join vtiger_troubletickets on vtiger_troubletickets.ticketid = vtiger_seactivityrel.crmid where vtiger_seactivityrel.activityid=?"; $rel_res = $adb->pquery($rel_qry, array($return_id)); $rel_name = $adb->query_result($rel_res, 0, "relname"); $relatedContacts = getActivityRelatedContacts($return_id); $mail_data['mode'] = "edit"; $mail_data['activity_mode'] = $activity_type; $mail_data['sendnotification'] = $send_notification; $mail_data['user_id'] = $usr_id; $mail_data['subject'] = $subject; $mail_data['status'] = $status; $mail_data['taskpriority'] = $priority; $mail_data['relatedto'] = $rel_name; $mail_data['contact_name'] = implode(',', $relatedContacts); $mail_data['description'] = $description; $mail_data['assign_type'] = $assignType; $mail_data['group_name'] = $grp_name; $value = getaddEventPopupTime($st_time, $end_time, '24'); $start_hour = $value['starthour'] . ':' . $value['startmin'] . '' . $value['startfmt']; if ($activity_type != 'Task') { $end_hour = $value['endhour'] . ':' . $value['endmin'] . '' . $value['endfmt']; } $date = new DateTimeField($st_date . " " . $start_hour); $endDate = new DateTimeField($end_date . " " . $end_hour); $mail_data['st_date_time'] = $date->getDBInsertDateTimeValue(); $mail_data['end_date_time'] = $endDate->getDBInsertDateValue() . ' ' . $endDate->getDBInsertTimeValue(); $mail_data['location'] = $location; return $mail_data; }
/** * Function returns the Calendar Events for the module * @param <String> $mode - upcoming/overdue mode * @param <Vtiger_Paging_Model> $pagingModel - $pagingModel * @param <String> $user - all/userid * @param <String> $recordId - record id * @return <Array> */ function getCalendarActivities($mode, $pagingModel, $user, $recordId = false, $paramsMore = []) { $currentUser = Users_Record_Model::getCurrentUserModel(); $db = PearDatabase::getInstance(); if (!$user) { $user = $currentUser->getId(); } $orderBy = $pagingModel->getForSql('orderby'); $sortOrder = $pagingModel->getForSql('sortorder'); if (empty($sortOrder) || !in_array(strtolower($sortOrder), ['asc', 'desc'])) { $sortOrder = 'ASC'; } if (empty($orderBy)) { $orderBy = "due_date {$sortOrder}, time_end {$sortOrder}"; } else { $orderBy .= ' ' . $sortOrder; } $stateActivityLabels = Calendar_Module_Model::getComponentActivityStateLabel(); $nowInUserFormat = Vtiger_Datetime_UIType::getDisplayDateTimeValue(date('Y-m-d H:i:s')); $nowInDBFormat = Vtiger_Datetime_UIType::getDBDateTimeValue($nowInUserFormat); $instance = CRMEntity::getInstance('Calendar'); $userAccessConditions = $instance->getUserAccessConditionsQuerySR('Calendar'); $params = []; $query = 'SELECT vtiger_crmentity.crmid, vtiger_crmentity.smownerid, vtiger_crmentity.setype, vtiger_activity.* FROM vtiger_activity INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_activity.activityid WHERE vtiger_crmentity.deleted=0 '; $query .= $userAccessConditions; if ($mode === 'upcoming') { $query .= "AND (vtiger_activity.activitytype NOT IN ('Emails'))\n\t\t\tAND (vtiger_activity.status is NULL OR vtiger_activity.status IN (?))"; array_push($params, $paramsMore['status']); } elseif ($mode === 'overdue') { $overdueActivityLabels = Calendar_Module_Model::getComponentActivityStateLabel('overdue'); $query .= "AND (vtiger_activity.activitytype NOT IN ('Emails'))\n\t\t\tAND (vtiger_activity.status is NULL OR vtiger_activity.status IN (?))"; //AND CONCAT(due_date,' ',time_end) < '$nowInDBFormat'"; array_push($params, $overdueActivityLabels); } elseif ($mode === 'assigned_upcoming') { $stateActivityLabels = Calendar_Module_Model::getComponentActivityStateLabel('current'); $query .= "AND (vtiger_activity.status is NULL OR vtiger_activity.status IN (" . generateQuestionMarks($stateActivityLabels) . ")) AND vtiger_crmentity.smcreatorid = ?"; $params = array_merge($params, $stateActivityLabels); $params[] = $currentUser->getId(); } elseif ($mode === 'assigned_over') { $overdueActivityLabels = Calendar_Module_Model::getComponentActivityStateLabel('overdue'); $query .= "AND (vtiger_activity.status is NULL OR vtiger_activity.status IN (?)) AND vtiger_crmentity.smcreatorid = ?"; array_push($params, $overdueActivityLabels, $currentUser->getId()); } elseif ($mode === 'createdByMeButNotMine') { if ($paramsMore['activitesType'] != 'upcoming') { $status = [$stateActivityLabels['not_started'], $stateActivityLabels['in_realization']]; } else { $status = [$stateActivityLabels['overdue']]; } $query .= "AND (vtiger_activity.status is NULL OR vtiger_activity.status IN (" . generateQuestionMarks($status) . ")) AND vtiger_crmentity.smcreatorid = ? AND vtiger_crmentity.smownerid NOT IN (?) "; $params = array_merge($params, $status); array_push($params, $currentUser->getId(), $currentUser->getId()); } $accessibleUsers = $currentUser->getAccessibleUsers(); $accessibleGroups = $currentUser->getAccessibleGroups(); if ($user != 'all' && $user != '' && (array_key_exists($user, $accessibleUsers) || array_key_exists($user, $accessibleGroups))) { $query .= ' AND vtiger_crmentity.smownerid = ?'; $params[] = $user; } $query .= ' ORDER BY ' . $orderBy . ' LIMIT ?, ?'; $params[] = $pagingModel->getStartIndex(); $params[] = $pagingModel->getPageLimit() + 1; $result = $db->pquery($query, $params); $activities = []; while ($row = $db->fetch_array($result)) { $model = Vtiger_Record_Model::getCleanInstance('Calendar'); $model->setData($row); $model->setId($row['crmid']); if ($row['parent_id']) { if (isRecordExists($row['parent_id'])) { $record = Vtiger_Record_Model::getInstanceById($row['parent_id']); if ($record->getModuleName() == 'Accounts') { $model->set('contractor', $record); } else { if ($record->getModuleName() == 'Potentials') { if (isRecordExists($record->get('related_to'))) { $recordContractor = Vtiger_Record_Model::getInstanceById($record->get('related_to')); $model->set('contractor', $recordContractor); } } else { if ($record->getModuleName() == 'Project') { if (isRecordExists($record->get('linktoaccountscontacts'))) { $recordContractor = Vtiger_Record_Model::getInstanceById($record->get('linktoaccountscontacts')); $model->set('contractor', $recordContractor); } } else { if ($record->getModuleName() == 'ServiceContracts') { if (isRecordExists($record->get('sc_realted_to'))) { $recordContractor = Vtiger_Record_Model::getInstanceById($record->get('sc_realted_to')); $model->set('contractor', $recordContractor); } } else { if ($record->getModuleName() == 'HelpDesk') { if (isRecordExists($record->get('parent_id'))) { $recordContractor = Vtiger_Record_Model::getInstanceById($record->get('parent_id')); $model->set('contractor', $recordContractor); } } } } } } } } $contactsA = getActivityRelatedContacts($row['activityid']); if (count($contactsA)) { foreach ($contactsA as $j => $rcA2) { $contactsA[$j] = '<a href="index.php?module=Contacts&view=Detail&record=' . $j . '">' . $rcA2 . '</a>'; $model->set('contact_id', $contactsA); } } $activities[] = $model; } $pagingModel->calculatePageRange($activities); if ($result->rowCount() > $pagingModel->getPageLimit()) { array_pop($activities); $pagingModel->set('nextPageExists', true); } else { $pagingModel->set('nextPageExists', false); } return $activities; }
public function process($feed, $request, $start, $end, &$result, $userid = false, $color = null, $textColor = 'white') { $dbStartDateOject = DateTimeField::convertToDBTimeZone($start); $dbStartDateTime = $dbStartDateOject->format('Y-m-d H:i:s'); $dbStartDateTimeComponents = explode(' ', $dbStartDateTime); $dbStartDate = $dbStartDateTimeComponents[0]; $dbEndDateObject = DateTimeField::convertToDBTimeZone($end); $dbEndDateTime = $dbEndDateObject->format('Y-m-d H:i:s'); $currentUser = Users_Record_Model::getCurrentUserModel(); $db = PearDatabase::getInstance(); $moduleModel = Vtiger_Module_Model::getInstance('Events'); if ($userid) { $focus = new Users(); $focus->id = $userid; $focus->retrieve_entity_info($userid, 'Users'); $user = Users_Record_Model::getInstanceFromUserObject($focus); $userName = $user->getName(); } $params = array(); if (empty($userid)) { $eventUserId = $currentUser->getId(); } else { $eventUserId = $userid; } $params = array_merge(array($eventUserId), $feed->getGroupsIdsForUsers($eventUserId)); $query = 'SELECT vtiger_activity.subject, vtiger_activity.eventstatus, vtiger_activity.visibility, vtiger_activity.date_start, vtiger_activity.time_start, vtiger_activity.due_date, vtiger_activity.time_end, vtiger_activity.activityid, vtiger_activity.activitytype, vtiger_seactivityrel.crmid as parent_id FROM vtiger_activity LEFT JOIN vtiger_seactivityrel ON vtiger_seactivityrel.activityid = vtiger_activity.activityid WHERE'; $query .= " vtiger_activity.activitytype NOT IN ('Emails','Task') AND "; $hideCompleted = $currentUser->get('hidecompletedevents'); if ($hideCompleted) { $query .= "vtiger_activity.eventstatus != 'HELD' AND "; } $query .= " ((concat(date_start, '', time_start) >= '{$dbStartDateTime}' AND concat(due_date, '', time_end) < '{$dbEndDateTime}') ) AND vtiger_activity.smownerid IN (" . generateQuestionMarks($params) . ") AND vtiger_activity.deleted=0"; $queryResult = $db->pquery($query, $params); while ($record = $db->fetchByAssoc($queryResult)) { $item = array(); $crmid = $record['activityid']; $visibility = $record['visibility']; $activitytype = $record['activitytype']; $status = $record['eventstatus']; $item['id'] = $crmid; $item['visibility'] = $visibility; $item['activitytype'] = $activitytype; $item['status'] = $status; //dodanie powiazan albo z kontaktow albo z powiazanych $title_add = $record['parent_id'] ? Vtiger_Functions::getCRMRecordLabel($record['parent_id']) : implode(', ', getActivityRelatedContacts($crmid)); if (!$currentUser->isAdminUser() && $visibility == 'Private' && $userid && $userid != $currentUser->getId()) { $item['title'] = decode_html($userName); $item['url'] = ''; } else { $item['title'] = decode_html($record['subject']); $item['url'] = sprintf('index.php?module=Calendar&view=Detail&record=%s', $crmid); } if ($title_add != '') { $item['title'] .= ' [' . decode_html($title_add) . ']'; } $dateTimeFieldInstance = new DateTimeField($record['date_start'] . ' ' . $record['time_start']); $userDateTimeString = $dateTimeFieldInstance->getDisplayDateTimeValue($currentUser); $dateTimeComponents = explode(' ', $userDateTimeString); $dateComponent = $dateTimeComponents[0]; //Conveting the date format in to Y-m-d . since full calendar expects in the same format $dataBaseDateFormatedString = DateTimeField::__convertToDBFormat($dateComponent, $currentUser->get('date_format')); $item['start'] = $dataBaseDateFormatedString . ' ' . $dateTimeComponents[1]; $dateTimeFieldInstance = new DateTimeField($record['due_date'] . ' ' . $record['time_end']); $userDateTimeString = $dateTimeFieldInstance->getDisplayDateTimeValue($currentUser); $dateTimeComponents = explode(' ', $userDateTimeString); $dateComponent = $dateTimeComponents[0]; //Conveting the date format in to Y-m-d . since full calendar expects in the same format $dataBaseDateFormatedString = DateTimeField::__convertToDBFormat($dateComponent, $currentUser->get('date_format')); $item['end'] = $dataBaseDateFormatedString . ' ' . $dateTimeComponents[1]; $item['className'] = $cssClass; $item['allDay'] = false; $item['color'] = $color; $item['textColor'] = $textColor; $item['module'] = $moduleModel->getName(); $result[] = $item; } return $widget; }
public function process($feed, $request, $start, $end, &$result, $userid = false, $color = null, $textColor = 'white') { $user = Users_Record_Model::getCurrentUserModel(); $db = PearDatabase::getInstance(); $moduleModel = Vtiger_Module_Model::getInstance('Calendar'); $userAndGroupIds = array_merge(array($user->getId()), $feed->getGroupsIdsForUsers($user->getId())); $queryGenerator = new QueryGenerator($moduleModel->get('name'), $user); $queryGenerator->setFields(array('activityid', 'subject', 'taskstatus', 'activitytype', 'date_start', 'time_start', 'due_date', 'time_end', 'id')); $query = $queryGenerator->getQuery(); $newQuery = spliti('FROM', $query); foreach ($newQuery as $key => $val) { if ($key == 0) { $query = $newQuery[0] . ' ,vtiger_seactivityrel.crmid as parent_id'; } else { $query .= ' FROM ' . $val; } } $joinQuery = ' LEFT JOIN vtiger_seactivityrel ON vtiger_seactivityrel.activityid = vtiger_activity.activityid'; $newQuery = spliti('WHERE ', $query); $query = $newQuery[0] . $joinQuery; foreach ($newQuery as $key => $val) { if ($key != 0) { $query .= ' WHERE ' . $val; } } $query .= " AND vtiger_activity.activitytype = 'Task' AND "; $currentUser = Users_Record_Model::getCurrentUserModel(); $hideCompleted = $currentUser->get('hidecompletedevents'); if ($hideCompleted) { $query .= "vtiger_activity.status != 'Completed' AND "; } //$query.= " ((date_start >= '$start' AND due_date < '$end') OR ( due_date >= '$start'))"; // opensaas $query .= " ((date_start >= '{$start}' AND due_date < '{$end}') )"; // opensaas $params = $userAndGroupIds; $query .= " AND vtiger_crmentity.smownerid IN (" . generateQuestionMarks($params) . ")"; $queryResult = $db->pquery($query, $params); while ($record = $db->fetchByAssoc($queryResult)) { $item = array(); $crmid = $record['activityid']; //dodanie infromacji z wyciagnietych $title_add = $record['parent_id'] ? Vtiger_Functions::getCRMRecordLabel($record['parent_id']) : implode(', ', getActivityRelatedContacts($crmid)); $item['title'] = decode_html($record['subject']); if ($title_add != '') { $item['title'] .= ' [' . decode_html($title_add) . ']'; } $item['status'] = $record['status']; $item['activitytype'] = $record['activitytype']; $item['id'] = $crmid; $dateTimeFieldInstance = new DateTimeField($record['date_start'] . ' ' . $record['time_start']); $userDateTimeString = $dateTimeFieldInstance->getDisplayDateTimeValue(); $dateTimeComponents = explode(' ', $userDateTimeString); $dateComponent = $dateTimeComponents[0]; //Conveting the date format in to Y-m-d . since full calendar expects in the same format $dataBaseDateFormatedString = DateTimeField::__convertToDBFormat($dateComponent, $user->get('date_format')); $item['start'] = $dataBaseDateFormatedString . ' ' . $dateTimeComponents[1]; $item['end'] = $record['due_date']; $item['url'] = sprintf('index.php?module=Calendar&view=Detail&record=%s', $crmid); $item['color'] = $color; $item['textColor'] = $textColor; $item['module'] = $moduleModel->getName(); $result[] = $item; } }