コード例 #1
0
 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);
 }
コード例 #2
0
ファイル: Module.php プロジェクト: rcrrich/UpdatePackages
 /**
  * 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;
 }
コード例 #3
0
ファイル: CalendarCommon.php プロジェクト: mslokhat/corebos
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;
}
コード例 #4
0
ファイル: Module.php プロジェクト: Bergdahls/YetiForceCRM
    /**
     * 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;
    }
コード例 #5
0
ファイル: Events.php プロジェクト: rcrrich/UpdatePackages
 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;
 }
コード例 #6
0
ファイル: Calendar.php プロジェクト: rcrrich/UpdatePackages
 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;
     }
 }