public static function render($userInputObject, $user) { global $list_max_entries_per_page; $adb = PearDatabase::getInstance(); $viewer = new Import_UI_Viewer(); $ownerId = $userInputObject->get('foruser'); $owner = new Users(); $owner->id = $ownerId; $owner->retrieve_entity_info($ownerId, 'Users'); if (!is_admin($user) && $user->id != $owner->id) { $viewer->display('OperationNotPermitted.tpl', 'Vtiger'); exit; } $userDBTableName = Import_Utils::getDbTableName($owner); $moduleName = $userInputObject->get('module'); $moduleMeta = self::getModuleMeta($moduleName, $user); $result = $adb->query('SELECT recordid FROM ' . $userDBTableName . ' WHERE status is NOT NULL AND recordid IS NOT NULL'); $noOfRecords = $adb->num_rows($result); $importedRecordIds = array(); for ($i = 0; $i < $noOfRecords; ++$i) { $importedRecordIds[] = $adb->query_result($result, $i, 'recordid'); } if (count($importedRecordIds) == 0) { $importedRecordIds[] = 0; } $focus = CRMEntity::getInstance($moduleName); $queryGenerator = new QueryGenerator($moduleName, $user); $customView = new CustomView($moduleName); $viewId = $customView->getViewIdByName('All', $moduleName); $queryGenerator->initForCustomViewById($viewId); $list_query = $queryGenerator->getQuery(); // Fetch only last imported records $list_query .= ' AND ' . $focus->table_name . '.' . $focus->table_index . ' IN (' . implode(',', $importedRecordIds) . ')'; if (PerformancePrefs::getBoolean('LISTVIEW_COMPUTE_PAGE_COUNT', false) === true) { $count_result = $adb->query(mkCountQuery($list_query)); $noofrows = $adb->query_result($count_result, 0, "count"); } else { $noofrows = null; } $start = ListViewSession::getRequestCurrentPage($moduleName, $list_query, $viewId, false); $navigation_array = VT_getSimpleNavigationValues($start, $list_max_entries_per_page, $noofrows); $limit_start_rec = ($start - 1) * $list_max_entries_per_page; $list_result = $adb->pquery($list_query . " LIMIT {$limit_start_rec}, {$list_max_entries_per_page}", array()); $recordListRangeMsg = getRecordRangeMessage($list_result, $limit_start_rec, $noofrows); $viewer->assign('recordListRange', $recordListRangeMsg); $controller = new ListViewController($adb, $user, $queryGenerator); $listview_header = $controller->getListViewHeader($focus, $moduleName, $url_string, $sorder, $order_by, true); $listview_entries = $controller->getListViewEntries($focus, $moduleName, $list_result, $navigation_array, true); $viewer->assign('CURRENT_PAGE', $start); $viewer->assign('LISTHEADER', $listview_header); $viewer->assign('LISTENTITY', $listview_entries); $viewer->assign('FOR_MODULE', $moduleName); $viewer->assign('FOR_USER', $ownerId); $isAjax = $userInputObject->get('ajax'); if (!empty($isAjax)) { echo $viewer->fetch('ListViewEntries.tpl'); } else { $viewer->display('ImportListView.tpl'); } }
function preProcess(Vtiger_Request $request, $display = true) { global $current_user; parent::preProcess($request, false); $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $listViewModel = Vtiger_ListView_Model::getInstance($moduleName); $linkParams = array('MODULE' => $moduleName, 'ACTION' => $request->get('view')); $viewer->assign('CUSTOM_VIEWS', CustomView_Record_Model::getAllByGroup($moduleName)); $this->viewName = $request->get('viewname'); if (empty($this->viewName)) { //If not view name exits then get it from custom view //This can return default view id or view id present in session $customView = new CustomView(); $this->viewName = $customView->getViewId($moduleName); } $quickLinkModels = $listViewModel->getSideBarLinks($linkParams); $viewer->assign('QUICK_LINKS', $quickLinkModels); $this->initializeListViewContents($request, $viewer); $viewer->assign('VIEWID', $this->viewName); //Modified by jmangarret 16jun2015 $viewer->assign('ROLEID', $current_user->roleid); if ($display) { $this->preProcessDisplay($request); } }
protected function getKeyMetricsWithCount() { global $current_user, $adb; $current_user = Users_Record_Model::getCurrentUserModel(); require_once 'modules/CustomView/ListViewTop.php'; $metriclists = getMetricList(); foreach ($metriclists as $key => $metriclist) { $metricresult = NULL; if ($metriclist['module'] == "Calendar") { $listquery = getListQuery($metriclist['module']); $oCustomView = new CustomView($metriclist['module']); $metricsql = $oCustomView->getModifiedCvListQuery($metriclist['id'], $listquery, $metriclist['module']); $metricresult = $adb->query(Vtiger_Functions::mkCountQuery($metricsql)); } else { $queryGenerator = new QueryGenerator($metriclist['module'], $current_user); $queryGenerator->initForCustomViewById($metriclist['id']); $metricsql = $queryGenerator->getQuery(); $metricresult = $adb->query(Vtiger_Functions::mkCountQuery($metricsql)); } if ($metricresult) { $rowcount = $adb->fetch_array($metricresult); $metriclists[$key]['count'] = $rowcount['count']; } } return $metriclists; }
/** to get the details of a KeyMetrics on Home page * @returns $customviewlist Array in the following format * $values = Array('Title'=>Array(0=>'image name', * 1=>'Key Metrics', * 2=>'home_metrics' * ), * 'Header'=>Array(0=>'Metrics', * 1=>'Count' * ), * 'Entries'=>Array($cvid=>Array( * 0=>$customview name, * 1=>$no of records for the view * ), * $cvid=>Array( * 0=>$customview name, * 1=>$no of records for the view * ), * | * | * $cvid=>Array( * 0=>$customview name, * 1=>$no of records for the view * ) * ) * */ function getKeyMetrics() { require_once "data/Tracker.php"; require_once 'modules/CustomView/CustomView.php'; require_once 'include/logging.php'; require_once 'include/ListView/ListView.php'; global $app_strings; global $adb; global $log; global $current_language; $metricviewnames = "'Hot Leads'"; $current_module_strings = return_module_language($current_language, "CustomView"); $log = LoggerManager::getLogger('metrics'); $metriclists = getMetricList(); $log->info("Metrics :: Successfully got MetricList to be displayed"); if (isset($metriclists)) { foreach ($metriclists as $key => $metriclist) { $listquery = getListQuery($metriclist['module']); if (empty($listquery)) { if (is_file("modules/" . $metriclist['module'] . "/" . $metriclist['module'] . ".php")) { include_once "modules/" . $metriclist['module'] . "/" . $metriclist['module'] . ".php"; $metric_focus = new $metriclist['module'](); $listquery = $metric_focus->getListQuery(''); } } $oCustomView = new CustomView($metriclist['module']); $metricsql = $oCustomView->getMetricsCvListQuery($metriclist['id'], $listquery, $metriclist['module']); $metricresult = $adb->query($metricsql); if ($metricresult) { $rowcount = $adb->fetch_array($metricresult); if (isset($rowcount)) { $metriclists[$key]['count'] = $rowcount['count']; } } } $log->info("Metrics :: Successfully build the Metrics"); } $title = array(); $title[] = 'keyMetrics.gif'; $title[] = $app_strings['LBL_HOME_KEY_METRICS']; $title[] = 'home_metrics'; $header = array(); $header[] = $app_strings['LBL_HOME_METRICS']; $header[] = $app_strings['LBL_HOME_COUNT']; $entries = array(); if (isset($metriclists)) { $oddRow = true; foreach ($metriclists as $metriclist) { $value = array(); $metric_fields = array('ID' => $metriclist['id'], 'NAME' => $metriclist['name'], 'COUNT' => $metriclist['count'], 'MODULE' => $metriclist['module']); $value[] = '<a href="index.php?action=index&module=' . $metriclist['module'] . '&viewname=' . $metriclist['id'] . '">' . $metriclist['name'] . '</a>'; $value[] = '<a href="index.php?action=index&module=' . $metriclist['module'] . '&viewname=' . $metriclist['id'] . '">' . $metriclist['count'] . '</a>'; $entries[$metriclist['id']] = $value; } } $values = array('Title' => $title, 'Header' => $header, 'Entries' => $entries); //if ( ($display_empty_home_blocks ) || (count($value)!= 0) ) return $values; }
function getContent(Mobile_API_Request $request) { global $current_user, $adb; $current_user = $this->getActiveUser(); $module = $request->get('module'); $limit = $request->get('number'); $offset = $request->get('offset'); $search = isset($_REQUEST['src_str']) ? $request->get('src_str') : ''; $customView = new CustomView($module); if (!empty($_REQUEST['view'])) { $viewid = $_REQUEST['view']; } else { $viewid = $customView->getViewId($module); } $queryGenerator = new QueryGenerator($module, $current_user); if ($viewid != "0") { $queryGenerator->initForCustomViewById($viewid); } else { $queryGenerator->initForDefaultCustomView(); } $list_query = $queryGenerator->getQuery(); //get entity fields for each module $entity_sql = "select fieldname,tablename,entityidfield from vtiger_entityname where modulename =?"; $ws_entity = $adb->pquery($entity_sql, array($module)); $fieldname = $adb->query_result($ws_entity, 0, 'fieldname'); $tablename = $adb->query_result($ws_entity, 0, 'tablename'); //set the list and content order if ($module == 'Contacts' || $module == 'Leads') { $list_query .= " AND (lastname LIKE '%{$search}%' OR firstname LIKE '%{$search}%') ORDER BY lastname"; } elseif ($module != 'Calendar' and $module != 'Events') { $list_query .= " AND " . $tablename . "." . $fieldname . " LIKE '%{$search}%' ORDER BY " . $tablename . "." . $fieldname; } elseif ($module == 'Calendar' || $module == 'Events') { $calendarview_selected = $request->get('viewName'); $list_query .= " AND vtiger_activity.activitytype!='Emails'"; if ($calendarview_selected == 'week') { $list_query .= " AND week(date_start) = week(NOW()) AND year(date_start) = year(NOW())"; } elseif ($calendarview_selected == 'month') { $list_query .= " AND month(date_start) = month(NOW()) AND year(date_start) = year(NOW())"; } elseif ($calendarview_selected == 'year') { $list_query .= " AND year(date_start) = year(NOW())"; } elseif ($calendarview_selected == 'today') { $list_query .= " AND DATE(date_start) = DATE(NOW())"; } $list_query .= " AND subject LIKE '%{$search}%' ORDER BY date_start DESC"; } else { $list_query .= " AND " . $tablename . "." . $fieldname . " LIKE '%{$search}%' ORDER BY " . $tablename . "." . $fieldname; } $list_query .= " LIMIT {$offset}, {$limit};"; $listview_entries = $adb->pquery($list_query, array()); $response = new Mobile_API_Response(); $response->setResult(array('records' => $listview_entries, 'module' => $module)); return $response; }
public function process(Vtiger_Request $request) { $customView = new CustomView(); $modules = $request->get('related_modules'); $cvIds = array(); if (is_array($modules)) { foreach ($modules as $key => $module) { $cvIds[$module] = $customView->getViewId($module); } } $response = new Vtiger_Response(); $response->setResult($cvIds); $response->emit(); }
function vtws_getfilterfields($module, $user) { global $log, $adb, $default_language; $log->debug("Entering function vtws_getfilterfields"); include_once "modules/{$module}/{$module}.php"; $focus = new $module(); $linkfields = array($focus->list_link_field); if ($module == 'Contacts' or $module == 'Leads') { $linkfields = array('firstname', 'lastname'); } $customView = new CustomView($module); $viewid = $customView->getViewId($module); $viewinfo = $customView->getColumnsListByCvid($viewid); $fields = array(); foreach ($viewinfo as $fld) { $finfo = explode(':', $fld); $fields[] = $finfo[1] == 'smownerid' ? 'assigned_user_id' : $finfo[2]; } return array('fields' => $fields, 'linkfields' => $linkfields); }
protected function getModuleFilterDetails($filterid) { global $adb; $result = $adb->pquery("SELECT * FROM vtiger_customview WHERE cvid=?", array($filterid)); if ($result && $adb->num_rows($result)) { $resultrow = $adb->fetch_array($result); $module = $resultrow['entitytype']; $view = new CustomView($module); $viewid = $resultrow['cvid']; $view->getCustomViewByCvid($viewid); $viewQuery = $view->getModifiedCvListQuery($viewid, getListQuery($module), $module); $countResult = $adb->pquery(Vtiger_Functions::mkCountQuery($viewQuery), array()); $count = 0; if ($countResult && $adb->num_rows($countResult)) { $count = $adb->query_result($countResult, 0, 'count'); } $filter = $this->prepareFilterDetailUsingResultRow($resultrow); $filter['userName'] = getUserName($resultrow['userid']); $filter['count'] = $count; return $filter; } }
$stdfiltercolhtml = getStdFilterHTML($cv_module); $stdfilterjs = $oCustomView->getCriteriaJS(); $smarty->assign("STDFILTERCOLUMNS", $stdfiltercolhtml); $smarty->assign("STDCOLUMNSCOUNT", count($stdfiltercolhtml)); $smarty->assign("STDFILTERCRITERIA", $stdfilterhtml); $smarty->assign("STDFILTER_JAVASCRIPT", $stdfilterjs); $advfilterhtml = getAdvCriteriaHTML(); $modulecolumnshtml = getByModule_ColumnsHTML($cv_module, $modulecollist); $smarty->assign("FOPTION", $advfilterhtml); $smarty->assign("COLUMNS_BLOCK", $modulecolumnshtml); $smarty->assign("MANDATORYCHECK", implode(",", array_unique($oCustomView->mandatoryvalues))); $smarty->assign("SHOWVALUES", implode(",", $oCustomView->showvalues)); $data_type[] = $oCustomView->data_type; $smarty->assign("DATATYPE", $data_type); } else { $oCustomView = new CustomView($cv_module); $now_action = vtlib_purify($_REQUEST['action']); if ($oCustomView->isPermittedCustomView($recordid, $now_action, $oCustomView->customviewmodule) == 'yes') { $customviewdtls = $oCustomView->getCustomViewByCvid($recordid); $log->info('CustomView :: Successfully got ViewDetails for the Viewid' . $recordid); $modulecollist = $oCustomView->getModuleColumnsList($cv_module); $selectedcolumnslist = $oCustomView->getColumnsListByCvid($recordid); $log->info('CustomView :: Successfully got ColumnsList for the Viewid' . $recordid); $smarty->assign("VIEWNAME", $customviewdtls["viewname"]); if ($customviewdtls["setdefault"] == 1) { $smarty->assign("CHECKED", "checked"); } if ($customviewdtls["setmetrics"] == 1) { $smarty->assign("MCHECKED", "checked"); } $status = $customviewdtls["status"];
function generateAdvFilterSql($advfilterlist) { $adb = PearDatabase::getInstance(); $advfiltersql = ""; $customView = new CustomView(); $dateSpecificConditions = $customView->getStdFilterConditions(); foreach ($advfilterlist as $groupindex => $groupinfo) { $groupcondition = $groupinfo['condition']; $groupcolumns = $groupinfo['columns']; if (count($groupcolumns) > 0) { $advfiltergroupsql = ""; foreach ($groupcolumns as $columnindex => $columninfo) { $fieldcolname = $columninfo["columnname"]; $comparator = $columninfo["comparator"]; $value = $columninfo["value"]; $columncondition = $columninfo["column_condition"]; $advcolsql = array(); if ($fieldcolname != "" && $comparator != "") { if (in_array($comparator, $dateSpecificConditions)) { if ($fieldcolname != 'none') { $selectedFields = explode(':', $fieldcolname); if ($selectedFields[0] == 'vtiger_crmentity' . $this->primarymodule) { $selectedFields[0] = 'vtiger_crmentity'; } if ($comparator != 'custom') { list($startDate, $endDate) = $this->getStandarFiltersStartAndEndDate($comparator); } else { list($startDateTime, $endDateTime) = explode(',', $value); list($startDate, $startTime) = explode(' ', $startDateTime); list($endDate, $endTime) = explode(' ', $endDateTime); } $type = $selectedFields[4]; if ($startDate != '0000-00-00' && $endDate != '0000-00-00' && $startDate != '' && $endDate != '') { $startDateTime = new DateTimeField($startDate . ' ' . date('H:i:s')); $userStartDate = $startDateTime->getDisplayDate(); if ($type == 'DT') { $userStartDate = $userStartDate . ' 00:00:00'; } $startDateTime = getValidDBInsertDateTimeValue($userStartDate); $endDateTime = new DateTimeField($endDate . ' ' . date('H:i:s')); $userEndDate = $endDateTime->getDisplayDate(); if ($type == 'DT') { $userEndDate = $userEndDate . ' 23:59:59'; } $endDateTime = getValidDBInsertDateTimeValue($userEndDate); if ($selectedFields[1] == 'birthday') { $tableColumnSql = 'DATE_FORMAT(' . $selectedFields[0] . '.' . $selectedFields[1] . ', "%m%d")'; $startDateTime = "DATE_FORMAT('{$startDateTime}', '%m%d')"; $endDateTime = "DATE_FORMAT('{$endDateTime}', '%m%d')"; } else { if ($selectedFields[0] == 'vtiger_activity' && $selectedFields[1] == 'date_start') { $tableColumnSql = 'CAST((CONCAT(date_start, " ", time_start)) AS DATETIME)'; } else { $tableColumnSql = $selectedFields[0] . '.' . $selectedFields[1]; } $startDateTime = "'{$startDateTime}'"; $endDateTime = "'{$endDateTime}'"; } $advfiltergroupsql .= "{$tableColumnSql} BETWEEN {$startDateTime} AND {$endDateTime}"; if (!empty($columncondition)) { $advfiltergroupsql .= ' ' . $columncondition . ' '; } $this->queryPlanner->addTable($selectedFields[0]); } } continue; } $selectedFields = explode(":", $fieldcolname); $tempComparators = array('e', 'n', 'bw', 'a', 'b'); if ($selectedFields[4] == 'DT' && in_array($comparator, $tempComparators)) { if ($selectedFields[0] == 'vtiger_crmentity' . $this->primarymodule) { $selectedFields[0] = 'vtiger_crmentity'; } if ($selectedFields[0] == 'vtiger_activity' && $selectedFields[1] == 'date_start') { $tableColumnSql = 'CAST((CONCAT(date_start, " ", time_start)) AS DATETIME)'; } else { $tableColumnSql = $selectedFields[0] . '.' . $selectedFields[1]; } if ($value != null && $value != '') { if ($comparator == 'e' || $comparator == 'n') { $dateTimeComponents = explode(' ', $value); $dateTime = new DateTime($dateTimeComponents[0] . ' ' . '00:00:00'); $date1 = $dateTime->format('Y-m-d H:i:s'); $dateTime->modify("+1 days"); $date2 = $dateTime->format('Y-m-d H:i:s'); $tempDate = strtotime($date2) - 1; $date2 = date('Y-m-d H:i:s', $tempDate); $start = getValidDBInsertDateTimeValue($date1); $end = getValidDBInsertDateTimeValue($date2); $start = "'{$start}'"; $end = "'{$end}'"; if ($comparator == 'e') { $advfiltergroupsql .= "{$tableColumnSql} BETWEEN {$start} AND {$end}"; } else { $advfiltergroupsql .= "{$tableColumnSql} NOT BETWEEN {$start} AND {$end}"; } } else { if ($comparator == 'bw') { $values = explode(',', $value); $startDateTime = explode(' ', $values[0]); $endDateTime = explode(' ', $values[1]); $startDateTime = new DateTimeField($startDateTime[0] . ' ' . date('H:i:s')); $userStartDate = $startDateTime->getDisplayDate(); $userStartDate = $userStartDate . ' 00:00:00'; $start = getValidDBInsertDateTimeValue($userStartDate); $endDateTime = new DateTimeField($endDateTime[0] . ' ' . date('H:i:s')); $userEndDate = $endDateTime->getDisplayDate(); $userEndDate = $userEndDate . ' 23:59:59'; $end = getValidDBInsertDateTimeValue($userEndDate); $advfiltergroupsql .= "{$tableColumnSql} BETWEEN '{$start}' AND '{$end}'"; } else { if ($comparator == 'a' || $comparator == 'b') { $value = explode(' ', $value); $dateTime = new DateTime($value[0]); if ($comparator == 'a') { $modifiedDate = $dateTime->modify('+1 days'); $nextday = $modifiedDate->format('Y-m-d H:i:s'); $temp = strtotime($nextday) - 1; $date = date('Y-m-d H:i:s', $temp); $value = getValidDBInsertDateTimeValue($date); $advfiltergroupsql .= "{$tableColumnSql} > '{$value}'"; } else { $prevday = $dateTime->format('Y-m-d H:i:s'); $temp = strtotime($prevday) - 1; $date = date('Y-m-d H:i:s', $temp); $value = getValidDBInsertDateTimeValue($date); $advfiltergroupsql .= "{$tableColumnSql} < '{$value}'"; } } } } if (!empty($columncondition)) { $advfiltergroupsql .= ' ' . $columncondition . ' '; } $this->queryPlanner->addTable($selectedFields[0]); } continue; } $selectedfields = explode(":", $fieldcolname); $moduleFieldLabel = $selectedfields[2]; list($moduleName, $fieldLabel) = explode('__', $moduleFieldLabel, 2); $fieldInfo = getFieldByReportLabel($moduleName, $fieldLabel); $concatSql = getSqlForNameInDisplayFormat(array('first_name' => $selectedfields[0] . ".first_name", 'last_name' => $selectedfields[0] . ".last_name"), 'Users'); // Added to handle the crmentity table name for Primary module if ($selectedfields[0] == "vtiger_crmentity" . $this->primarymodule) { $selectedfields[0] = "vtiger_crmentity"; } //Added to handle yes or no for checkbox field in reports advance filters. -shahul if ($selectedfields[4] == 'C') { if (strcasecmp(trim($value), "yes") == 0) { $value = "1"; } if (strcasecmp(trim($value), "no") == 0) { $value = "0"; } } if (in_array($comparator, $dateSpecificConditions)) { $customView = new CustomView($moduleName); $columninfo['stdfilter'] = $columninfo['comparator']; $valueComponents = explode(',', $columninfo['value']); if ($comparator == 'custom') { if ($selectedfields[4] == 'DT') { $startDateTimeComponents = explode(' ', $valueComponents[0]); $endDateTimeComponents = explode(' ', $valueComponents[1]); $columninfo['startdate'] = DateTimeField::convertToDBFormat($startDateTimeComponents[0]); $columninfo['enddate'] = DateTimeField::convertToDBFormat($endDateTimeComponents[0]); } else { $columninfo['startdate'] = DateTimeField::convertToDBFormat($valueComponents[0]); $columninfo['enddate'] = DateTimeField::convertToDBFormat($valueComponents[1]); } } $dateFilterResolvedList = $customView->resolveDateFilterValue($columninfo); $startDate = DateTimeField::convertToDBFormat($dateFilterResolvedList['startdate']); $endDate = DateTimeField::convertToDBFormat($dateFilterResolvedList['enddate']); $columninfo['value'] = $value = implode(',', array($startDate, $endDate)); $comparator = 'bw'; } $valuearray = explode(",", trim($value)); $datatype = isset($selectedfields[4]) ? $selectedfields[4] : ""; if (isset($valuearray) && count($valuearray) > 1 && $comparator != 'bw') { $advcolumnsql = ""; for ($n = 0; $n < count($valuearray); $n++) { if (($selectedfields[0] == "vtiger_users" . $this->primarymodule || $selectedfields[0] == "vtiger_users" . $this->secondarymodule) && $selectedfields[1] == 'user_name') { $module_from_tablename = str_replace("vtiger_users", "", $selectedfields[0]); $advcolsql[] = " (trim({$concatSql})" . $this->getAdvComparator($comparator, trim($valuearray[$n]), $datatype) . " or vtiger_groups" . $module_from_tablename . ".groupname " . $this->getAdvComparator($comparator, trim($valuearray[$n]), $datatype) . ")"; $this->queryPlanner->addTable("vtiger_groups" . $module_from_tablename); } elseif ($selectedfields[1] == 'status') { //when you use comma seperated values. if ($selectedfields[2] == 'Calendar_Status') { $advcolsql[] = "(case when (vtiger_activity.status not like '') then vtiger_activity.status else vtiger_activity.eventstatus end)" . $this->getAdvComparator($comparator, trim($valuearray[$n]), $datatype); } else { if ($selectedfields[2] == 'HelpDesk_Status') { $advcolsql[] = "vtiger_troubletickets.status" . $this->getAdvComparator($comparator, trim($valuearray[$n]), $datatype); } else { if ($selectedfields[2] == 'Faq_Status') { $advcolsql[] = "vtiger_faq.status" . $this->getAdvComparator($comparator, trim($valuearray[$n]), $datatype); } else { $advcolsql[] = $selectedfields[0] . "." . $selectedfields[1] . $this->getAdvComparator($comparator, trim($valuearray[$n]), $datatype); } } } } elseif ($selectedfields[1] == 'description') { //when you use comma seperated values. if ($selectedfields[0] == 'vtiger_crmentity' . $this->primarymodule) { $advcolsql[] = "vtiger_crmentity.description" . $this->getAdvComparator($comparator, trim($valuearray[$n]), $datatype); } else { $advcolsql[] = $selectedfields[0] . "." . $selectedfields[1] . $this->getAdvComparator($comparator, trim($valuearray[$n]), $datatype); } } elseif ($selectedfields[2] == 'Quotes_Inventory_Manager') { $advcolsql[] = "trim({$concatSql})" . $this->getAdvComparator($comparator, trim($valuearray[$n]), $datatype); } elseif ($selectedfields[1] == 'modifiedby') { $module_from_tablename = str_replace("vtiger_crmentity", "", $selectedfields[0]); if ($module_from_tablename != '') { $tableName = 'vtiger_lastModifiedBy' . $module_from_tablename; } else { $tableName = 'vtiger_lastModifiedBy' . $this->primarymodule; } $advcolsql[] = 'trim(' . getSqlForNameInDisplayFormat(array('last_name' => "{$tableName}.last_name", 'first_name' => "{$tableName}.first_name"), 'Users') . ')' . $this->getAdvComparator($comparator, trim($valuearray[$n]), $datatype); } else { $advcolsql[] = $selectedfields[0] . "." . $selectedfields[1] . $this->getAdvComparator($comparator, trim($valuearray[$n]), $datatype); } } //If negative logic filter ('not equal to', 'does not contain') is used, 'and' condition should be applied instead of 'or' if ($comparator == 'n' || $comparator == 'k') { $advcolumnsql = implode(" and ", $advcolsql); } else { $advcolumnsql = implode(" or ", $advcolsql); } $fieldvalue = " (" . $advcolumnsql . ") "; } elseif ($selectedfields[1] == 'user_name') { if ($selectedfields[0] == "vtiger_users" . $this->primarymodule) { $module_from_tablename = str_replace("vtiger_users", "", $selectedfields[0]); $fieldvalue = " trim(case when (" . $selectedfields[0] . ".last_name NOT LIKE '') then " . $concatSql . " else vtiger_groups" . $module_from_tablename . ".groupname end) " . $this->getAdvComparator($comparator, trim($value), $datatype); $this->queryPlanner->addTable("vtiger_groups" . $module_from_tablename); } else { $secondaryModules = explode(':', $this->secondarymodule); $firstSecondaryModule = "vtiger_users" . $secondaryModules[0]; $secondSecondaryModule = "vtiger_users" . $secondaryModules[1]; if ($firstSecondaryModule && $firstSecondaryModule == $selectedfields[0] || $secondSecondaryModule && $secondSecondaryModule == $selectedfields[0]) { $module_from_tablename = str_replace("vtiger_users", "", $selectedfields[0]); $moduleInstance = CRMEntity::getInstance($module_from_tablename); $fieldvalue = " trim(case when (" . $selectedfields[0] . ".last_name NOT LIKE '') then " . $concatSql . " else vtiger_groups" . $module_from_tablename . ".groupname end) " . $this->getAdvComparator($comparator, trim($value), $datatype); $this->queryPlanner->addTable("vtiger_groups" . $module_from_tablename); $this->queryPlanner->addTable($moduleInstance->table_name); } } } elseif ($comparator == 'bw' && count($valuearray) == 2) { if ($selectedfields[0] == "vtiger_crmentity" . $this->primarymodule) { $fieldvalue = "(" . "vtiger_crmentity." . $selectedfields[1] . " between '" . trim($valuearray[0]) . "' and '" . trim($valuearray[1]) . "')"; } else { $fieldvalue = "(" . $selectedfields[0] . "." . $selectedfields[1] . " between '" . trim($valuearray[0]) . "' and '" . trim($valuearray[1]) . "')"; } } elseif ($selectedfields[0] == "vtiger_crmentity" . $this->primarymodule) { $fieldvalue = "vtiger_crmentity." . $selectedfields[1] . " " . $this->getAdvComparator($comparator, trim($value), $datatype); } elseif ($selectedfields[2] == 'Quotes_Inventory_Manager') { $fieldvalue = "trim({$concatSql})" . $this->getAdvComparator($comparator, trim($value), $datatype); } elseif ($selectedfields[1] == 'modifiedby') { $module_from_tablename = str_replace("vtiger_crmentity", "", $selectedfields[0]); if ($module_from_tablename != '') { $tableName = 'vtiger_lastModifiedBy' . $module_from_tablename; } else { $tableName = 'vtiger_lastModifiedBy' . $this->primarymodule; } $this->queryPlanner->addTable($tableName); $fieldvalue = 'trim(' . getSqlForNameInDisplayFormat(array('last_name' => "{$tableName}.last_name", 'first_name' => "{$tableName}.first_name"), 'Users') . ')' . $this->getAdvComparator($comparator, trim($value), $datatype); } elseif ($selectedfields[1] == 'smcreatorid') { $module_from_tablename = str_replace("vtiger_crmentity", "", $selectedfields[0]); if ($module_from_tablename != '') { $tableName = 'vtiger_createdby' . $module_from_tablename; } else { $tableName = 'vtiger_createdby' . $this->primarymodule; } if ($moduleName == 'ModComments') { $tableName = 'vtiger_users' . $moduleName; } $this->queryPlanner->addTable($tableName); $fieldvalue = 'trim(' . getSqlForNameInDisplayFormat(array('last_name' => "{$tableName}.last_name", 'first_name' => "{$tableName}.first_name"), 'Users') . ')' . $this->getAdvComparator($comparator, trim($value), $datatype); } elseif ($selectedfields[0] == "vtiger_activity" && ($selectedfields[1] == 'status' || $selectedfields[1] == 'eventstatus')) { // for "Is Empty" condition we need to check with "value NOT NULL" OR "value = ''" conditions if ($comparator == 'y') { $fieldvalue = "(case when (vtiger_activity.status not like '') then vtiger_activity.status\n else vtiger_activity.eventstatus end) IS NULL OR (case when (vtiger_activity.status not like '')\n then vtiger_activity.status else vtiger_activity.eventstatus end) = ''"; } else { $fieldvalue = "(case when (vtiger_activity.status not like '') then vtiger_activity.status\n else vtiger_activity.eventstatus end)" . $this->getAdvComparator($comparator, trim($value), $datatype); } } else { if ($comparator == 'ny') { if ($fieldInfo['uitype'] == '10' || isReferenceUIType($fieldInfo['uitype'])) { $fieldvalue = "(" . $selectedfields[0] . "." . $selectedfields[1] . " IS NOT NULL AND " . $selectedfields[0] . "." . $selectedfields[1] . " != '' AND " . $selectedfields[0] . "." . $selectedfields[1] . " != '0')"; } else { $fieldvalue = "(" . $selectedfields[0] . "." . $selectedfields[1] . " IS NOT NULL AND " . $selectedfields[0] . "." . $selectedfields[1] . " != '')"; } } elseif ($comparator == 'y' || $comparator == 'e' && (trim($value) == "NULL" || trim($value) == '')) { if ($selectedfields[0] == 'vtiger_inventoryproductrel') { $selectedfields[0] = 'vtiger_inventoryproductrel' . $moduleName; } if ($fieldInfo['uitype'] == '10' || isReferenceUIType($fieldInfo['uitype'])) { $fieldvalue = "(" . $selectedfields[0] . "." . $selectedfields[1] . " IS NULL OR " . $selectedfields[0] . "." . $selectedfields[1] . " = '' OR " . $selectedfields[0] . "." . $selectedfields[1] . " = '0')"; } else { $fieldvalue = "(" . $selectedfields[0] . "." . $selectedfields[1] . " IS NULL OR " . $selectedfields[0] . "." . $selectedfields[1] . " = '')"; } } elseif ($selectedfields[0] == 'vtiger_inventoryproductrel') { if ($selectedfields[1] == 'productid') { $fieldvalue = "vtiger_products{$moduleName}.productname " . $this->getAdvComparator($comparator, trim($value), $datatype); $this->queryPlanner->addTable("vtiger_products{$moduleName}"); } else { if ($selectedfields[1] == 'serviceid') { $fieldvalue = "vtiger_service{$moduleName}.servicename " . $this->getAdvComparator($comparator, trim($value), $datatype); $this->queryPlanner->addTable("vtiger_service{$moduleName}"); } else { //for inventory module table should be follwed by the module name $selectedfields[0] = 'vtiger_inventoryproductrel' . $moduleName; $fieldvalue = $selectedfields[0] . "." . $selectedfields[1] . $this->getAdvComparator($comparator, $value, $datatype); } } } elseif ($fieldInfo['uitype'] == '10' || isReferenceUIType($fieldInfo['uitype'])) { $fieldSqlColumns = $this->getReferenceFieldColumnList($moduleName, $fieldInfo); $comparatorValue = $this->getAdvComparator($comparator, trim($value), $datatype, $fieldSqlColumns[0]); $fieldSqls = array(); foreach ($fieldSqlColumns as $columnSql) { $fieldSqls[] = $columnSql . $comparatorValue; } $fieldvalue = ' (' . implode(' OR ', $fieldSqls) . ') '; } else { $fieldvalue = $selectedfields[0] . "." . $selectedfields[1] . $this->getAdvComparator($comparator, trim($value), $datatype); } } $advfiltergroupsql .= $fieldvalue; if (!empty($columncondition)) { $advfiltergroupsql .= ' ' . $columncondition . ' '; } $this->queryPlanner->addTable($selectedfields[0]); } } if (trim($advfiltergroupsql) != "") { $advfiltergroupsql = "( {$advfiltergroupsql} ) "; if (!empty($groupcondition)) { $advfiltergroupsql .= ' ' . $groupcondition . ' '; } $advfiltersql .= $advfiltergroupsql; } } } if (trim($advfiltersql) != "") { $advfiltersql = '(' . $advfiltersql . ')'; } return $advfiltersql; }
public static function getListViewNavigation($currentRecordId) { global $currentModule, $current_user, $adb, $log, $list_max_entries_per_page; Zend_Json::$useBuiltinEncoderDecoder = true; $reUseData = false; $displayBufferRecordCount = 10; $bufferRecordCount = 15; if ($currentModule == 'Documents') { $sql = "select folderid from vtiger_notes where notesid=?"; $params = array($currentRecordId); $result = $adb->pquery($sql, $params); $folderId = $adb->query_result($result, 0, 'folderid'); } $cv = new CustomView(); $viewId = $cv->getViewId($currentModule); if (!empty($_SESSION[$currentModule . '_DetailView_Navigation' . $viewId])) { $recordNavigationInfo = Zend_Json::decode($_SESSION[$currentModule . '_DetailView_Navigation' . $viewId]); $pageNumber = 0; if (count($recordNavigationInfo) == 1) { foreach ($recordNavigationInfo as $recordIdList) { if (in_array($currentRecordId, $recordIdList)) { $reUseData = true; } } } else { $recordList = array(); $recordPageMapping = array(); foreach ($recordNavigationInfo as $start => $recordIdList) { foreach ($recordIdList as $index => $recordId) { $recordList[] = $recordId; $recordPageMapping[$recordId] = $start; if ($recordId == $currentRecordId) { $searchKey = count($recordList) - 1; } } } if ($searchKey > $displayBufferRecordCount - 1 && $searchKey < count($recordList) - $displayBufferRecordCount) { $reUseData = true; } } } if ($reUseData === false) { $recordNavigationInfo = array(); if (!empty($_REQUEST['start'])) { $start = ListViewSession::getRequestStartPage(); } else { $start = ListViewSession::getCurrentPage($currentModule, $viewId); } $startRecord = ($start - 1) * $list_max_entries_per_page - $bufferRecordCount; if ($startRecord < 0) { $startRecord = 0; } $list_query = $_SESSION[$currentModule . '_listquery']; $instance = CRMEntity::getInstance($currentModule); $instance->getNonAdminAccessControlQuery($currentModule, $current_user); vtlib_setup_modulevars($currentModule, $instance); if ($currentModule == 'Documents' && !empty($folderId)) { $list_query = preg_replace("/[\n\r\\s]+/", " ", $list_query); $hasOrderBy = stripos($list_query, 'order by'); if ($hasOrderBy > 0) { $list_query = substr($list_query, 0, $hasOrderBy - 1) . " AND vtiger_notes.folderid={$folderId} " . substr($list_query, $hasOrderBy); } else { $list_query .= " AND vtiger_notes.folderid={$folderId}"; $order_by = $instance->getOrderByForFolder($folderId); $sorder = $instance->getSortOrderForFolder($folderId); $tablename = getTableNameForField($currentModule, $order_by); $tablename = $tablename != '' ? $tablename . "." : ''; if (!empty($order_by)) { $list_query .= ' ORDER BY ' . $tablename . $order_by . ' ' . $sorder; } } } if ($start != 1) { $recordCount = $list_max_entries_per_page + 2 * $bufferRecordCount; } else { $recordCount = $list_max_entries_per_page + $bufferRecordCount; } $list_query .= " LIMIT {$startRecord}, {$recordCount}"; $resultAllCRMIDlist_query = $adb->pquery($list_query, array()); $navigationRecordList = array(); while ($forAllCRMID = $adb->fetch_array($resultAllCRMIDlist_query)) { $navigationRecordList[] = $forAllCRMID[$instance->table_index]; } $pageCount = 0; $current = $start; if ($start == 1) { $firstPageRecordCount = $list_max_entries_per_page; } else { $firstPageRecordCount = $bufferRecordCount; $current -= 1; } $searchKey = array_search($currentRecordId, $navigationRecordList); $recordNavigationInfo = array(); if ($searchKey !== false) { foreach ($navigationRecordList as $index => $recordId) { if (!is_array($recordNavigationInfo[$current])) { $recordNavigationInfo[$current] = array(); } if ($index == $firstPageRecordCount || $index == $firstPageRecordCount + $pageCount * $list_max_entries_per_page) { $current++; $pageCount++; } $recordNavigationInfo[$current][] = $recordId; } } $_SESSION[$currentModule . '_DetailView_Navigation' . $viewId] = Zend_Json::encode($recordNavigationInfo); } return $recordNavigationInfo; }
/** function used to get the top 5 quotes from the ListView query * @return array $values - array with the title, header and entries like Array('Title'=>$title,'Header'=>$listview_header,'Entries'=>$listview_entries) where as listview_header and listview_entries are arrays of header and entity values which are returned from function getListViewHeader and getListViewEntries */ function getTopQuotes($maxval, $calCnt) { require_once "data/Tracker.php"; require_once 'modules/Quotes/Quotes.php'; require_once 'include/logging.php'; require_once 'include/ListView/ListView.php'; require_once 'include/utils/utils.php'; require_once 'modules/CustomView/CustomView.php'; global $app_strings, $current_language, $current_user; $current_module_strings = return_module_language($current_language, 'Quotes'); global $list_max_entries_per_page, $adb, $theme, $mod_strings; $log = LoggerManager::getLogger('quote_list'); $url_string = ''; $sorder = ''; $oCustomView = new CustomView("Quotes"); $customviewcombo_html = $oCustomView->getCustomViewCombo(); if (isset($_REQUEST['viewname']) == false || $_REQUEST['viewname'] == '') { if ($oCustomView->setdefaultviewid != "") { $viewid = $oCustomView->setdefaultviewid; } else { $viewid = "0"; } } $theme_path = "themes/" . $theme . "/"; $image_path = $theme_path . "images/"; //Retreive the list from Database //<<<<<<<<<customview>>>>>>>>> $date_var = date('Y-m-d'); $currentModule = 'Quotes'; $viewId = getCvIdOfAll($currentModule); $queryGenerator = new QueryGenerator($currentModule, $current_user); $queryGenerator->initForCustomViewById($viewId); $meta = $queryGenerator->getMeta($currentModule); $accessibleFieldNameList = array_keys($meta->getModuleFields()); $customViewFields = $queryGenerator->getCustomViewFields(); $fields = $queryGenerator->getFields(); $newFields = array_diff($fields, $customViewFields); $widgetFieldsList = array('subject', 'potential_id', 'account_id', 'total'); $widgetFieldsList = array_intersect($accessibleFieldNameList, $widgetFieldsList); $widgetSelectedFields = array_chunk(array_intersect($customViewFields, $widgetFieldsList), 2); //select the first chunk of two fields $widgetSelectedFields = $widgetSelectedFields[0]; if (count($widgetSelectedFields) < 2) { $widgetSelectedFields = array_chunk(array_merge($widgetSelectedFields, $accessibleFieldNameList), 2); //select the first chunk of two fields $widgetSelectedFields = $widgetSelectedFields[0]; } $newFields = array_merge($newFields, $widgetSelectedFields); $queryGenerator->setFields($newFields); $_REQUEST = getTopQuotesSearch($_REQUEST, array('assigned_user_id' => $current_user->column_fields['user_name'], 'validtill' => $date_var, 'quotestage.Rejected' => $current_module_strings['Rejected'], 'quotestage.Accepted' => $current_module_strings['Accepted'])); $queryGenerator->addUserSearchConditions($_REQUEST); $search_qry = '&query=true' . getSearchURL($_REQUEST); $query = $queryGenerator->getQuery(); //<<<<<<<<customview>>>>>>>>> $query .= " LIMIT " . $adb->sql_escape_string($maxval); if ($calCnt == 'calculateCnt') { $list_result_rows = $adb->query(mkCountQuery($query)); return $adb->query_result($list_result_rows, 0, 'count'); } $list_result = $adb->query($query); //Retreiving the no of rows $noofrows = $adb->num_rows($list_result); //Retreiving the start value from request if (isset($_REQUEST['start']) && $_REQUEST['start'] != '') { $start = vtlib_purify($_REQUEST['start']); } else { $start = 1; } //Retreive the Navigation array $navigation_array = getNavigationValues($start, $noofrows, $list_max_entries_per_page); if ($navigation_array['start'] == 1) { if ($noofrows != 0) { $start_rec = $navigation_array['start']; } else { $start_rec = 0; } if ($noofrows > $list_max_entries_per_page) { $end_rec = $navigation_array['start'] + $list_max_entries_per_page - 1; } else { $end_rec = $noofrows; } } else { if ($navigation_array['next'] > $list_max_entries_per_page) { $start_rec = $navigation_array['next'] - $list_max_entries_per_page; $end_rec = $navigation_array['next'] - 1; } else { $start_rec = $navigation_array['prev'] + $list_max_entries_per_page; $end_rec = $noofrows; } } $focus = new Quotes(); $title = array('TopOpenQuotes.gif', $current_module_strings['LBL_MY_TOP_QUOTE'], 'home_mytopquote'); //Retreive the List View Table Header $controller = new ListViewController($adb, $current_user, $queryGenerator); $controller->setHeaderSorting(false); $header = $controller->getListViewHeader($focus, $currentModule, $url_string, $sorder, $order_by, true); $entries = $controller->getListViewEntries($focus, $currentModule, $list_result, $navigation_array, true); $values = array('ModuleName' => 'Quotes', 'Title' => $title, 'Header' => $header, 'Entries' => $entries, 'search_qry' => $search_qry); if ($display_empty_home_blocks && $noofrows == 0 || $noofrows > 0) { return $values; } }
/** * Function gives default custom view for a module * @param <String> $module * @return <CustomView_Record_Model> */ public static function getAllFilterByModule($module) { $db = PearDatabase::getInstance(); $query = "SELECT cvid FROM vtiger_customview WHERE viewname='All' AND entitytype = ?"; $result = $db->pquery($query, array($module)); $viewId = $db->query_result($result, 0, 'cvid'); if (!$viewId) { $customView = new CustomView($module); $viewId = $customView->getViewId($module); } return self::getInstanceById($viewId); }
/** to get the details of a KeyMetrics on Home page * @returns $customviewlist Array in the following format * $values = Array('Title'=>Array(0=>'image name', * 1=>'Key Metrics', * 2=>'home_metrics' * ), * 'Header'=>Array(0=>'Metrics', * 1=>'Count' * ), * 'Entries'=>Array($cvid=>Array( * 0=>$customview name, * 1=>$no of records for the view * ), * $cvid=>Array( * 0=>$customview name, * 1=>$no of records for the view * ), * | * | * $cvid=>Array( * 0=>$customview name, * 1=>$no of records for the view * ) * ) * */ function getKeyMetrics($maxval, $calCnt) { require_once "data/Tracker.php"; require_once 'modules/CustomView/CustomView.php'; require_once 'include/logging.php'; require_once 'include/ListView/ListView.php'; global $app_strings; global $adb; global $log; global $current_language; $metricviewnames = "'Hot Leads'"; $current_module_strings = return_module_language($current_language, "CustomView"); $log = LoggerManager::getLogger('metrics'); $metriclists = getMetricList(); // Determine if the KeyMetrics widget should appear or not? if ($calCnt == 'calculateCnt') { return count($metriclists); } $log->info("Metrics :: Successfully got MetricList to be displayed"); if (isset($metriclists)) { foreach ($metriclists as $key => $metriclist) { $listquery = getListQuery($metriclist['module']); if ($metriclist['module'] == 'Calendar') { $listquery .= " AND vtiger_activity.activitytype != 'Emails' "; } $oCustomView = new CustomView($metriclist['module']); $metricsql = $oCustomView->getMetricsCvListQuery($metriclist['id'], $listquery, $metriclist['module']); if ($metriclist['module'] == "Calendar" and !$adb->isPostgres()) { $metricsql .= " group by vtiger_activity.activityid "; } $metricresult = $adb->query($metricsql); if ($metricresult) { if ($metriclist['module'] == "Calendar") { $metriclists[$key]['count'] = $adb->num_rows($metricresult); } else { $rowcount = $adb->fetch_array($metricresult); if (isset($rowcount)) { $metriclists[$key]['count'] = $rowcount['count']; } } } } $log->info("Metrics :: Successfully build the Metrics"); } $title = array(); $title[] = 'keyMetrics.gif'; $title[] = $app_strings['LBL_HOME_KEY_METRICS']; $title[] = 'home_metrics'; $header = array(); $header[] = $app_strings['LBL_HOME_METRICS']; $header[] = $app_strings['LBL_MODULE']; $header[] = $app_strings['LBL_HOME_COUNT']; $entries = array(); if (isset($metriclists)) { $oddRow = true; foreach ($metriclists as $metriclist) { $value = array(); $CVname = strlen($metriclist['name']) > 20 ? substr($metriclist['name'], 0, 20) . '...' : $metriclist['name']; $value[] = '<a href="index.php?action=ListView&module=' . $metriclist['module'] . '&viewname=' . $metriclist['id'] . '">' . $CVname . '</a> <font style="color:#6E6E6E;">(' . $metriclist['user'] . ')</font>'; $value[] = '<a href="index.php?action=ListView&module=' . $metriclist['module'] . '&viewname=' . $metriclist['id'] . '">' . getTranslatedString($metriclist['module']) . '</a>'; $value[] = '<a href="index.php?action=ListView&module=' . $metriclist['module'] . '&viewname=' . $metriclist['id'] . '">' . $metriclist['count'] . '</a>'; $entries[$metriclist['id']] = $value; } } $values = array('Title' => $title, 'Header' => $header, 'Entries' => $entries); if ($display_empty_home_blocks || count($value) != 0) { return $values; } }
public function parseAdvFilterList($advFilterList, $glue = '') { if (!empty($glue)) { $this->addConditionGlue($glue); } $customView = new CustomView($this->module); $dateSpecificConditions = $customView->getStdFilterConditions(); foreach ($advFilterList as $groupindex => $groupcolumns) { $filtercolumns = $groupcolumns['columns']; if (count($filtercolumns) > 0) { $this->startGroup(''); foreach ($filtercolumns as $index => $filter) { $nameComponents = explode(':', $filter['columnname']); // For Events "End Date & Time" field datatype should be DT. But, db will give D for due_date field if ($nameComponents[2] == 'due_date' && $nameComponents[3] == 'Events_End_Date_&_Time') { $nameComponents[4] = 'DT'; } if (empty($nameComponents[2]) && $nameComponents[1] == 'crmid' && $nameComponents[0] == 'vtiger_crmentity') { $name = $this->getSQLColumn('id'); } else { $name = $nameComponents[2]; } if (($nameComponents[4] == 'D' || $nameComponents[4] == 'DT') && in_array($filter['comparator'], $dateSpecificConditions)) { $filter['stdfilter'] = $filter['comparator']; $valueComponents = explode(',', $filter['value']); if ($filter['comparator'] == 'custom') { if ($nameComponents[4] == 'DT') { $startDateTimeComponents = explode(' ', $valueComponents[0]); $endDateTimeComponents = explode(' ', $valueComponents[1]); $filter['startdate'] = DateTimeField::convertToDBFormat($startDateTimeComponents[0]); $filter['enddate'] = DateTimeField::convertToDBFormat($endDateTimeComponents[0]); } else { $filter['startdate'] = DateTimeField::convertToDBFormat($valueComponents[0]); $filter['enddate'] = DateTimeField::convertToDBFormat($valueComponents[1]); } } $dateFilterResolvedList = $customView->resolveDateFilterValue($filter); // If datatype is DT then we should append time also if ($nameComponents[4] == 'DT') { $startdate = explode(' ', $dateFilterResolvedList['startdate']); if ($startdate[1] == '') { $startdate[1] = '00:00:00'; } $dateFilterResolvedList['startdate'] = $startdate[0] . ' ' . $startdate[1]; $enddate = explode(' ', $dateFilterResolvedList['enddate']); if ($enddate[1] == '') { $enddate[1] = '23:59:59'; } $dateFilterResolvedList['enddate'] = $enddate[0] . ' ' . $enddate[1]; } $value = array(); $value[] = $this->fixDateTimeValue($name, $dateFilterResolvedList['startdate']); $value[] = $this->fixDateTimeValue($name, $dateFilterResolvedList['enddate'], false); $this->addCondition($name, $value, 'BETWEEN'); } else { if ($nameComponents[4] == 'DT' && ($filter['comparator'] == 'e' || $filter['comparator'] == 'n')) { $filter['stdfilter'] = $filter['comparator']; $dateTimeComponents = explode(' ', $filter['value']); $filter['startdate'] = DateTimeField::convertToDBFormat($dateTimeComponents[0]); $filter['enddate'] = DateTimeField::convertToDBFormat($dateTimeComponents[0]); $startDate = $this->fixDateTimeValue($name, $filter['startdate']); $endDate = $this->fixDateTimeValue($name, $filter['enddate'], false); $value = array(); $start = explode(' ', $startDate); if ($start[1] == "") { $startDate = $start[0] . ' ' . '00:00:00'; } $end = explode(' ', $endDate); if ($end[1] == "") { $endDate = $end[0] . ' ' . '23:59:59'; } $value[] = $startDate; $value[] = $endDate; if ($filter['comparator'] == 'n') { $this->addCondition($name, $value, 'NOTEQUAL'); } else { $this->addCondition($name, $value, 'BETWEEN'); } } else { if ($nameComponents[4] == 'DT' && ($filter['comparator'] == 'a' || $filter['comparator'] == 'b')) { $dateTime = explode(' ', $filter['value']); $date = DateTimeField::convertToDBFormat($dateTime[0]); $value = array(); $value[] = $this->fixDateTimeValue($name, $date, false); // Still fixDateTimeValue returns only date value, we need to append time because it is DT type for ($i = 0; $i < count($value); $i++) { $values = explode(' ', $value[$i]); if ($values[1] == '') { $values[1] = '00:00:00'; } $value[$i] = $values[0] . ' ' . $values[1]; } $this->addCondition($name, $value, $filter['comparator']); } else { $this->addCondition($name, $filter['value'], $filter['comparator']); } } } $columncondition = $filter['column_condition']; if (!empty($columncondition)) { $this->addConditionGlue($columncondition); } } $this->endGroup(); $groupConditionGlue = $groupcolumns['condition']; if (!empty($groupConditionGlue)) { $this->addConditionGlue($groupConditionGlue); } } } }
<?php // Copyright SQCRM. For licensing, reuse, modification and distribution see license.txt /** * User Module index file * @author Abhik Chakraborty */ $custom_view_allowed = true; $do_custom_view = new CustomView(); if (true === $do_custom_view->has_custom_view($module_id)) { $custom_view_data = $do_custom_view->get_custom_views($module_id); $default_custom_view = $do_custom_view->get_default_custom_view($module_id); } else { $custom_view_allowed = false; } require_once 'view/listview.php';
$smarty->assign('CATEGORY', $category); $smarty->assign('BUTTONS', $list_buttons); $smarty->assign('CHECK', $tool_buttons); $smarty->assign('THEME', $theme); $smarty->assign('IMAGE_PATH', "themes/{$theme}/images/"); $smarty->assign('CHANGE_OWNER', getUserslist()); $smarty->assign('CHANGE_GROUP_OWNER', getGroupslist()); // Enabling Module Search $url_string = ''; if ($_REQUEST['query'] == 'true') { list($where, $ustring) = split('#@@#', getWhereCondition($currentModule)); $url_string .= "&query=true{$ustring}"; $smarty->assign('SEARCH_URL', $url_string); } // Custom View $customView = new CustomView($currentModule); $viewid = $customView->getViewId($currentModule); $customview_html = $customView->getCustomViewCombo($viewid); $viewinfo = $customView->getCustomViewByCvid($viewid); // Feature available from 5.1 if (method_exists($customView, 'isPermittedChangeStatus')) { // Approving or Denying status-public by the admin in CustomView $statusdetails = $customView->isPermittedChangeStatus($viewinfo['status']); // To check if a user is able to edit/delete a CustomView $edit_permit = $customView->isPermittedCustomView($viewid, 'EditView', $currentModule); $delete_permit = $customView->isPermittedCustomView($viewid, 'Delete', $currentModule); $smarty->assign("CUSTOMVIEW_PERMISSION", $statusdetails); $smarty->assign("CV_EDIT_PERMIT", $edit_permit); $smarty->assign("CV_DELETE_PERMIT", $delete_permit); } // END
/** * This function exports all the data for a given module * Param $type - module name * Return type text */ function export($type) { global $log, $list_max_entries_per_page; $log->debug("Entering export(" . $type . ") method ..."); global $adb; $focus = 0; $content = ''; if ($type != "") { // vtlib customization: Hook to dynamically include required module file. // Refer to the logic in setting $currentModule in index.php $focus = CRMEntity::getInstance($type); } $log = LoggerManager::getLogger('export_' . $type); $db = PearDatabase::getInstance(); $oCustomView = new CustomView("{$type}"); $viewid = $oCustomView->getViewId("{$type}"); $sorder = $focus->getSortOrder(); $order_by = $focus->getOrderBy(); $search_type = $_REQUEST['search_type']; $export_data = $_REQUEST['export_data']; if (isset($_SESSION['export_where']) && $_SESSION['export_where'] != '' && $search_type == 'includesearch') { $where = $_SESSION['export_where']; } $query = $focus->create_export_query($where); if ($search_type != 'includesearch' && $type != 'Calendar') { $stdfiltersql = $oCustomView->getCVStdFilterSQL($viewid); $advfiltersql = $oCustomView->getCVAdvFilterSQL($viewid); if (isset($stdfiltersql) && $stdfiltersql != '') { $query .= ' and ' . $stdfiltersql; } if (isset($advfiltersql) && $advfiltersql != '') { $query .= ' and ' . $advfiltersql; } } $params = array(); if (($search_type == 'withoutsearch' || $search_type == 'includesearch') && $export_data == 'selecteddata') { $idstring = explode(";", $_REQUEST['idstring']); if ($type == 'Accounts' && count($idstring) > 0) { $query .= ' and vtiger_account.accountid in (' . generateQuestionMarks($idstring) . ')'; array_push($params, $idstring); } elseif ($type == 'Contacts' && count($idstring) > 0) { $query .= ' and vtiger_contactdetails.contactid in (' . generateQuestionMarks($idstring) . ')'; array_push($params, $idstring); } elseif ($type == 'Potentials' && count($idstring) > 0) { $query .= ' and vtiger_potential.potentialid in (' . generateQuestionMarks($idstring) . ')'; array_push($params, $idstring); } elseif ($type == 'Leads' && count($idstring) > 0) { $query .= ' and vtiger_leaddetails.leadid in (' . generateQuestionMarks($idstring) . ')'; array_push($params, $idstring); } elseif ($type == 'Products' && count($idstring) > 0) { $query .= ' and vtiger_products.productid in (' . generateQuestionMarks($idstring) . ')'; array_push($params, $idstring); } elseif ($type == 'Documents' && count($idstring) > 0) { $query .= ' and vtiger_notes.notesid in (' . generateQuestionMarks($idstring) . ')'; array_push($params, $idstring); } elseif ($type == 'HelpDesk' && count($idstring) > 0) { $query .= ' and vtiger_troubletickets.ticketid in (' . generateQuestionMarks($idstring) . ')'; array_push($params, $idstring); } elseif ($type == 'Vendors' && count($idstring) > 0) { $query .= ' and vtiger_vendor.vendorid in (' . generateQuestionMarks($idstring) . ')'; array_push($params, $idstring); } else { if (count($idstring) > 0) { // vtlib customization: Hook to make the export feature available for custom modules. $query .= " and {$focus->table_name}.{$focus->table_index} in (" . generateQuestionMarks($idstring) . ')'; array_push($params, $idstring); // END } } } if (isset($order_by) && $order_by != '') { if ($order_by == 'smownerid') { $query .= ' ORDER BY user_name ' . $sorder; } elseif ($order_by == 'lastname' && $type == 'Documents') { $query .= ' ORDER BY vtiger_contactdetails.lastname ' . $sorder; } elseif ($order_by == 'crmid' && $type == 'HelpDesk') { $query .= ' ORDER BY vtiger_troubletickets.ticketid ' . $sorder; } else { $tablename = getTableNameForField($type, $order_by); $tablename = $tablename != '' ? $tablename . "." : ''; if ($adb->dbType == "pgsql") { $query .= ' GROUP BY ' . $tablename . $order_by; } $query .= ' ORDER BY ' . $tablename . $order_by . ' ' . $sorder; } } if ($export_data == 'currentpage') { $current_page = ListViewSession::getCurrentPage($type, $viewid); $limit_start_rec = ($current_page - 1) * $list_max_entries_per_page; if ($limit_start_rec < 0) { $limit_start_rec = 0; } $query .= ' LIMIT ' . $limit_start_rec . ',' . $list_max_entries_per_page; } $result = $adb->pquery($query, $params, true, "Error exporting {$type}: " . "<BR>{$query}"); $fields_array = $adb->getFieldsArray($result); $fields_array = array_diff($fields_array, array("user_name")); $__processor = new ExportUtils($type, $fields_array); // Translated the field names based on the language used. $translated_fields_array = array(); for ($i = 0; $i < count($fields_array); $i++) { $translated_fields_array[$i] = getTranslatedString($fields_array[$i], $type); } $header = implode("\",\"", array_values($translated_fields_array)); $header = "\"" . $header; $header .= "\"\r\n"; /** Output header information */ echo $header; $column_list = implode(",", array_values($fields_array)); while ($val = $adb->fetchByAssoc($result, -1, false)) { $new_arr = array(); $val = $__processor->sanitizeValues($val); foreach ($val as $key => $value) { if ($type == 'Documents' && $key == 'description') { $value = strip_tags($value); $value = str_replace(' ', '', $value); array_push($new_arr, $value); } elseif ($key != "user_name") { // Let us provide the module to transform the value before we save it to CSV file $value = $focus->transform_export_value($key, $value); array_push($new_arr, preg_replace("/\"/", "\"\"", $value)); } } $line = implode("\",\"", $new_arr); $line = "\"" . $line; $line .= "\"\r\n"; /** Output each row information */ echo $line; } $log->debug("Exiting export method ..."); return true; }
require_once 'include/database/PearDatabase.php'; require_once 'include/ComboUtil.php'; require_once 'include/utils/utils.php'; require_once 'modules/CustomView/CustomView.php'; require_once 'modules/Memdays/ModuleConfig.php'; require_once 'include/DatabaseUtil.php'; global $app_strings; global $currentModule; global $theme; $url_string = ''; $smarty = new CRMSmarty(); if (!isset($where)) { $where = ""; } //<<<<cutomview>>>>>>> $oCustomView = new CustomView($currentModule); $viewid = $oCustomView->getViewId($currentModule); $customviewcombo_html = $oCustomView->getCustomViewCombo($viewid); $viewnamedesc = $oCustomView->getCustomViewByCvid($viewid); //<<<<<customview>>>>> $popuptype = ''; $popuptype = $_REQUEST["popuptype"]; require_once "modules/{$currentModule}/{$currentModule}.php"; $focus = new $currentModule(); $single_module = substr($currentModule, 0, strlen($currentModule) - 1); $smarty->assign("SINGLE_MOD", $single_module); if (isset($_REQUEST['return_module']) && $_REQUEST['return_module'] != '') { $smarty->assign("RETURN_MODULE", $_REQUEST['return_module']); } $alphabetical = AlphabeticalSearch($currentModule, 'Popup', strtolower($single_module) . 'name', 'true', 'basic', $popuptype, "", "", "", $viewid); if (isset($_REQUEST['select'])) {
} if (isset($_REQUEST['selected_module']) && $_REQUEST['selected_module'] != '') { $select_module = vtlib_purify($_REQUEST['selected_module']); if (!in_array($select_module, $module_name)) { show_error_msg(); } } else { if (count($module_name) > 0) { $select_module = $module_name[0]; } else { show_error_msg('no_permitted_modules'); } } $focus = CRMEntity::getInstance($select_module); if (count($module_name) > 0) { $cur_mod_view = new CustomView($select_module); $viewid = $cur_mod_view->getViewIdByName('All', $select_module); global $current_user; $queryGenerator = new QueryGenerator($select_module, $current_user); $queryGenerator->initForCustomViewById($viewid); // Enabling Module Search $url_string = ''; if ($_REQUEST['query'] == 'true') { $queryGenerator->addUserSearchConditions($_REQUEST); $ustring = getSearchURL($_REQUEST); $url_string .= "&query=true{$ustring}"; $smarty->assign('SEARCH_URL', $url_string); } $list_query = $queryGenerator->getQuery(); $list_query = preg_replace("/vtiger_crmentity.deleted\\s*=\\s*0/i", 'vtiger_crmentity.deleted = 1', $list_query); //Search criteria added to the list Query
/** * Function to get Campaign related Leads * @param integer $id - campaignid * returns related Leads record in array format */ function get_leads($id, $cur_tab_id, $rel_tab_id, $actions = false) { global $log, $singlepane_view, $currentModule; $log->debug("Entering get_leads(" . $id . ") method ..."); $this_module = $currentModule; $related_module = vtlib_getModuleNameById($rel_tab_id); require_once "modules/{$related_module}/{$related_module}.php"; $other = new $related_module(); $is_CampaignStatusAllowed = false; global $current_user; if (getFieldVisibilityPermission('Leads', $current_user->id, 'campaignrelstatus') == '0') { $other->list_fields['Status'] = array('vtiger_campaignrelstatus' => 'campaignrelstatus'); $other->list_fields_name['Status'] = 'campaignrelstatus'; $other->sortby_fields[] = 'campaignrelstatus'; $is_CampaignStatusAllowed = getFieldVisibilityPermission('Leads', $current_user->id, 'campaignrelstatus', 'readwrite') == '0' ? true : false; } vtlib_setup_modulevars($related_module, $other); $singular_modname = vtlib_toSingular($related_module); $parenttab = getParentTab(); if ($singlepane_view == 'true') { $returnset = '&return_module=' . $this_module . '&return_action=DetailView&return_id=' . $id; } else { $returnset = '&return_module=' . $this_module . '&return_action=CallRelatedList&return_id=' . $id; } $button = ''; // Send mail button for selected Leads $button .= "<input title='" . getTranslatedString('LBL_SEND_MAIL_BUTTON') . "' class='crmbutton small edit' value='" . getTranslatedString('LBL_SEND_MAIL_BUTTON') . "' type='button' name='button' onclick='rel_eMail(\"{$this_module}\",this,\"{$related_module}\")'>"; $button .= '  '; /* To get Leads CustomView -START */ require_once 'modules/CustomView/CustomView.php'; $lhtml = "<select id='" . $related_module . "_cv_list' class='small'><option value='None'>-- " . getTranslatedString('Select One') . " --</option>"; $oCustomView = new CustomView($related_module); $viewid = $oCustomView->getViewId($related_module); $customviewcombo_html = $oCustomView->getCustomViewCombo($viewid, false); $lhtml .= $customviewcombo_html; $lhtml .= "</select>"; /* To get Leads CustomView -END */ $button .= $lhtml . "<input title='" . getTranslatedString('LBL_LOAD_LIST', $this_module) . "' class='crmbutton small edit' value='" . getTranslatedString('LBL_LOAD_LIST', $this_module) . "' type='button' name='button' onclick='loadCvList(\"{$related_module}\",\"{$id}\")'>"; $button .= ' '; $button .= "<input title='" . getTranslatedString('LBL_EMPTY_LIST', $this_module) . "' class='crmbutton small edit' value='" . getTranslatedString('LBL_EMPTY_LIST', $this_module) . "' type='button' name='button' onclick='emptyCvList(\"{$related_module}\",\"{$id}\")'>"; $button .= ' '; if ($actions) { if (is_string($actions)) { $actions = explode(',', strtoupper($actions)); } if (in_array('SELECT', $actions) && isPermitted($related_module, 4, '') == 'yes') { $button .= "<input title='" . getTranslatedString('LBL_SELECT') . " " . getTranslatedString($related_module) . "' class='crmbutton small edit' type='button' onclick=\"return window.open('index.php?module={$related_module}&return_module={$currentModule}&action=Popup&popuptype=detailview&select=enable&form=EditView&form_submit=false&recordid={$id}&parenttab={$parenttab}','test','width=640,height=602,resizable=0,scrollbars=0');\" value='" . getTranslatedString('LBL_SELECT') . " " . getTranslatedString($related_module) . "'> "; } if (in_array('ADD', $actions) && isPermitted($related_module, 1, '') == 'yes') { $button .= "<input type='hidden' name='createmode' id='createmode' value='link' />" . "<input title='" . getTranslatedString('LBL_ADD_NEW') . " " . getTranslatedString($singular_modname) . "' class='crmbutton small create'" . " onclick='this.form.action.value=\"EditView\";this.form.module.value=\"{$related_module}\"' type='submit' name='button'" . " value='" . getTranslatedString('LBL_ADD_NEW') . " " . getTranslatedString($singular_modname) . "'> "; } } $userNameSql = getSqlForNameInDisplayFormat(array('first_name' => 'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users'); $query = "SELECT vtiger_leaddetails.*, vtiger_crmentity.crmid,vtiger_leadaddress.phone,vtiger_leadsubdetails.website,\n\t\t\t\tCASE when (vtiger_users.user_name not like '') then {$userNameSql} else vtiger_groups.groupname end as user_name,\n\t\t\t\tvtiger_crmentity.smownerid, vtiger_campaignrelstatus.*\n\t\t\t\tFROM vtiger_leaddetails\n\t\t\t\tINNER JOIN vtiger_campaignleadrel ON vtiger_campaignleadrel.leadid=vtiger_leaddetails.leadid\n\t\t\t\tINNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_leaddetails.leadid\n\t\t\t\tINNER JOIN vtiger_leadsubdetails ON vtiger_leadsubdetails.leadsubscriptionid = vtiger_leaddetails.leadid\n\t\t\t\tINNER JOIN vtiger_leadaddress ON vtiger_leadaddress.leadaddressid = vtiger_leadsubdetails.leadsubscriptionid\n\t\t\t\tLEFT JOIN vtiger_users ON vtiger_crmentity.smownerid = vtiger_users.id\n\t\t\t\tLEFT JOIN vtiger_groups ON vtiger_groups.groupid=vtiger_crmentity.smownerid\n\t\t\t\tLEFT JOIN vtiger_campaignrelstatus ON vtiger_campaignrelstatus.campaignrelstatusid = vtiger_campaignleadrel.campaignrelstatusid\n\t\t\t\tWHERE vtiger_crmentity.deleted=0 AND vtiger_campaignleadrel.campaignid = " . $id; $return_value = GetRelatedList($this_module, $related_module, $other, $query, $button, $returnset); if ($return_value == null) { $return_value = array(); } else { if ($is_CampaignStatusAllowed) { $statusPos = count($return_value['header']) - 2; // Last column is for Actions, exclude that. Also the index starts from 0, so reduce one more count. $return_value = $this->add_status_popup($return_value, $statusPos, 'Leads'); } } $return_value['CUSTOM_BUTTON'] = $button; $log->debug("Exiting get_leads method ..."); return $return_value; }
public function createRecords() { $adb = PearDatabase::getInstance(); $moduleName = $this->module; $focus = CRMEntity::getInstance($moduleName); $moduleHandler = vtws_getModuleHandlerFromName($moduleName, $this->user); $moduleMeta = $moduleHandler->getMeta(); $moduleObjectId = $moduleMeta->getEntityId(); $moduleFields = $moduleMeta->getModuleFields(); $entityData = array(); $tableName = Import_Utils_Helper::getDbTableName($this->user); $sql = 'SELECT * FROM ' . $tableName . ' WHERE status = ' . Import_Data_Action::$IMPORT_RECORD_NONE; if ($this->batchImport) { $configReader = new Import_Config_Model(); $importBatchLimit = $configReader->get('importBatchLimit'); $sql .= ' LIMIT ' . $importBatchLimit; } $result = $adb->query($sql); $numberOfRecords = $adb->num_rows($result); if ($numberOfRecords <= 0) { return; } $fieldMapping = $this->fieldMapping; $fieldColumnMapping = $moduleMeta->getFieldColumnMapping(); for ($i = 0; $i < $numberOfRecords; ++$i) { $row = $adb->raw_query_result_rowdata($result, $i); $rowId = $row['id']; $entityInfo = null; $fieldData = array(); foreach ($fieldMapping as $fieldName => $index) { $fieldData[$fieldName] = $row[$fieldName]; } $mergeType = $this->mergeType; $createRecord = false; if (method_exists($focus, 'importRecord')) { $entityInfo = $focus->importRecord($this, $fieldData); } else { if (!empty($mergeType) && $mergeType != Import_Utils_Helper::$AUTO_MERGE_NONE) { $queryGenerator = new QueryGenerator($moduleName, $this->user); $customView = new CustomView($moduleName); $viewId = $customView->getViewIdByName('All', $moduleName); if (!empty($viewId)) { $queryGenerator->initForCustomViewById($viewId); } else { $queryGenerator->initForDefaultCustomView(); } $fieldsList = array('id'); $queryGenerator->setFields($fieldsList); $mergeFields = $this->mergeFields; if ($queryGenerator->getWhereFields() && $mergeFields) { $queryGenerator->addConditionGlue(QueryGenerator::$AND); } foreach ($mergeFields as $index => $mergeField) { if ($index != 0) { $queryGenerator->addConditionGlue(QueryGenerator::$AND); } $comparisonValue = $fieldData[$mergeField]; $fieldInstance = $moduleFields[$mergeField]; if ($fieldInstance->getFieldDataType() == 'owner') { $userId = getUserId_Ol($comparisonValue); $comparisonValue = getUserFullName($userId); } if ($fieldInstance->getFieldDataType() == 'reference') { if (strpos($comparisonValue, '::::') > 0) { $referenceFileValueComponents = explode('::::', $comparisonValue); } else { $referenceFileValueComponents = explode(':::', $comparisonValue); } if (count($referenceFileValueComponents) > 1) { $comparisonValue = trim($referenceFileValueComponents[1]); } } $queryGenerator->addCondition($mergeField, $comparisonValue, 'e', '', '', '', true); } $query = $queryGenerator->getQuery(); $duplicatesResult = $adb->query($query); $noOfDuplicates = $adb->num_rows($duplicatesResult); if ($noOfDuplicates > 0) { if ($mergeType == Import_Utils_Helper::$AUTO_MERGE_IGNORE) { $entityInfo['status'] = self::$IMPORT_RECORD_SKIPPED; } elseif ($mergeType == Import_Utils_Helper::$AUTO_MERGE_OVERWRITE || $mergeType == Import_Utils_Helper::$AUTO_MERGE_MERGEFIELDS) { for ($index = 0; $index < $noOfDuplicates - 1; ++$index) { $duplicateRecordId = $adb->query_result($duplicatesResult, $index, $fieldColumnMapping['id']); $entityId = vtws_getId($moduleObjectId, $duplicateRecordId); vtws_delete($entityId, $this->user); } $baseRecordId = $adb->query_result($duplicatesResult, $noOfDuplicates - 1, $fieldColumnMapping['id']); $baseEntityId = vtws_getId($moduleObjectId, $baseRecordId); if ($mergeType == Import_Utils_Helper::$AUTO_MERGE_OVERWRITE) { $fieldData = $this->transformForImport($fieldData, $moduleMeta); $fieldData['id'] = $baseEntityId; $entityInfo = vtws_update($fieldData, $this->user); $entityInfo['status'] = self::$IMPORT_RECORD_UPDATED; } if ($mergeType == Import_Utils_Helper::$AUTO_MERGE_MERGEFIELDS) { $filteredFieldData = array(); foreach ($fieldData as $fieldName => $fieldValue) { // empty will give false for value = 0 if (!empty($fieldValue) || $fieldValue != "") { $filteredFieldData[$fieldName] = $fieldValue; } } // Custom handling for default values & mandatory fields // need to be taken care than normal import as we merge // existing record values with newer values. $fillDefault = false; $mandatoryValueChecks = false; $existingFieldValues = vtws_retrieve($baseEntityId, $this->user); $defaultFieldValues = $this->getDefaultFieldValues($moduleMeta); foreach ($existingFieldValues as $fieldName => $fieldValue) { if (empty($fieldValue) && empty($filteredFieldData[$fieldName]) && !empty($defaultFieldValues[$fieldName])) { $filteredFieldData[$fieldName] = $defaultFieldValues[$fieldName]; } } $filteredFieldData = $this->transformForImport($filteredFieldData, $moduleMeta, $fillDefault, $mandatoryValueChecks); $filteredFieldData['id'] = $baseEntityId; $entityInfo = vtws_revise($filteredFieldData, $this->user); $entityInfo['status'] = self::$IMPORT_RECORD_MERGED; $fieldData = $filteredFieldData; } } else { $createRecord = true; } } else { $createRecord = true; } } else { $createRecord = true; } if ($createRecord) { $fieldData = $this->transformForImport($fieldData, $moduleMeta); if ($fieldData == null) { $entityInfo = null; } else { try { $entityInfo = vtws_create($moduleName, $fieldData, $this->user); } catch (Exception $e) { } } } } if ($entityInfo == null) { $entityInfo = array('id' => null, 'status' => self::$IMPORT_RECORD_FAILED); } else { if ($createRecord) { $entityInfo['status'] = self::$IMPORT_RECORD_CREATED; } } if ($createRecord || $mergeType == Import_Utils_Helper::$AUTO_MERGE_MERGEFIELDS || $mergeType == Import_Utils_Helper::$AUTO_MERGE_OVERWRITE) { $entityIdComponents = vtws_getIdComponents($entityInfo['id']); $recordId = $entityIdComponents[1]; $entityfields = getEntityFieldNames($this->module); switch ($this->module) { case 'HelpDesk': $entityfields['fieldname'] = array('ticket_title'); break; case 'Documents': $entityfields['fieldname'] = array('notes_title'); break; case 'Documents': $entityfields['fieldname'] = array('notes_title'); break; } $label = ''; if (is_array($entityfields['fieldname'])) { foreach ($entityfields['fieldname'] as $field) { $label .= $fieldData[$field] . " "; } } else { $label = $fieldData[$entityfields['fieldname']]; } $label = trim($label); $adb->pquery('UPDATE vtiger_crmentity SET label=? WHERE crmid=?', array($label, $recordId)); } $this->importedRecordInfo[$rowId] = $entityInfo; $this->updateImportStatus($rowId, $entityInfo); } if ($this->entityData) { $entity = new VTEventsManager($adb); $entity->triggerEvent('vtiger.batchevent.save', $this->entityData); } $this->entityData = null; $result = null; return true; }
foreach ($fieldname as $fieldName) { $checkForFieldAccess = $fieldName; // Handling case where fieldname in vtiger_entityname mismatches fieldname in vtiger_field if ($sModule == 'HelpDesk' && $checkForFieldAccess == 'title') { $checkForFieldAccess = 'ticket_title'; } else { if ($sModule == 'Documents' && $checkForFieldAccess == 'title') { $checkForFieldAccess = 'notes_title'; } } // END if (getFieldVisibilityPermission($sModule, $current_user->id, $checkForFieldAccess) == '0') { $permittedFieldNameList[] = $fieldName; } } $cv = new CustomView(); $viewId = $cv->getViewId($sModule); if (!empty($_SESSION[$sModule . '_DetailView_Navigation' . $viewId])) { $recordNavigationInfo = Zend_Json::decode($_SESSION[$sModule . '_DetailView_Navigation' . $viewId]); $recordList = array(); $recordIndex = null; $recordPageMapping = array(); foreach ($recordNavigationInfo as $start => $recordIdList) { foreach ($recordIdList as $index => $recordId) { if (!isRecordExists($recordId)) { continue; } $recordList[] = $recordId; $recordPageMapping[$recordId] = $start; if ($recordId == $iCurRecord) { $recordIndex = count($recordList) - 1;
function vtws_getSearchResults($query, $search_onlyin, $restrictionids, $user) { global $adb, $log, $current_user; $res = array(); // security restrictions if (empty($query) or empty($restrictionids) or !is_array($restrictionids)) { return serialize($res); } if (empty($restrictionids['userId']) or empty($restrictionids['accountId']) or empty($restrictionids['contactId'])) { return serialize($res); } list($void, $accountId) = explode('x', $restrictionids['accountId']); list($void, $contactId) = explode('x', $restrictionids['contactId']); list($void, $userId) = explode('x', $restrictionids['userId']); $current_user->retrieveCurrentUserInfoFromFile($userId); // if connected user does not have admin privileges > user must be the connected user if ($user->is_admin != 'on' and $user->id != $userId) { return serialize($res); } // connected user must have access to account and contact > this will be restricted by the coreBOS system and the rest of the code // start work require_once 'modules/CustomView/CustomView.php'; require_once 'include/utils/utils.php'; // Was the search limited by user for specific modules? $search_onlyin = empty($search_onlyin) ? array() : explode(',', $search_onlyin); $object_array = getSearchModules($search_onlyin); $total_record_count = 0; $i = 0; $j = 0; $moduleRecordCount = array(); foreach ($object_array as $module => $object_name) { $listquery = getListQuery($module); $oCustomView = new CustomView($module); //Instead of getting current customview id, use cvid of All so that all entities will be found $cv_res = $adb->pquery("select cvid from vtiger_customview where viewname='All' and entitytype=?", array($module)); $viewid = $adb->query_result($cv_res, 0, 'cvid'); $listquery = $oCustomView->getModifiedCvListQuery($viewid, $listquery, $module); if (!empty($accountId) and !empty($contactId)) { switch ($module) { case 'Products': // FIXME: add inner join on relations to accounts and contacts break; case 'Services': // FIXME: add inner join on relations to accounts and contacts break; case 'Documents': $listquery = str_replace(' WHERE ', " inner join vtiger_senotesrel on vtiger_senotesrel.notesid=vtiger_notes.notesid and (vtiger_senotesrel.crmid={$accountId} or vtiger_senotesrel.crmid={$contactId}) WHERE ", $listquery); break; } } $where = getUnifiedWhere($listquery, $module, $query); if ($where != '') { $listquery .= ' and (' . $where . ')'; } if (!empty($accountId) and !empty($contactId)) { $cond = evvt_PortalModuleRestrictions($module, $accountId, $contactId); if ($cond != '') { $listquery .= ' and (' . $cond . ')'; } } $count_result = $adb->query($listquery); $noofrows = $adb->num_rows($count_result); $moduleRecordCount[$module]['count'] = $noofrows; $navigation_array = VT_getSimpleNavigationValues(1, 100, $noofrows); $list_result = $adb->query($listquery); $focus = CRMEntity::getInstance($module); $listview_entries = getSearchingListViewEntries($focus, $module, $list_result, $navigation_array, "", "", "", "", $oCustomView, "", "", "", true); $total_record_count = $total_record_count + $noofrows; if (!empty($listview_entries)) { foreach ($listview_entries as $key => $element) { $res[$j] = $element; $j++; } } $i++; } $result = serialize($res); return $result; }
function getSelectAllQuery($input, $module) { global $adb, $current_user; $viewid = vtlib_purify($input['viewname']); if ($module == "Calendar") { $listquery = getListQuery($module); $oCustomView = new CustomView($module); $query = $oCustomView->getModifiedCvListQuery($viewid, $listquery, $module); $where = ''; if ($input['query'] == 'true') { list($where, $ustring) = split("#@@#", getWhereCondition($module, $input)); if (isset($where) && $where != '') { $query .= " AND " . $where; } } } else { $queryGenerator = new QueryGenerator($module, $current_user); $queryGenerator->initForCustomViewById($viewid); if ($input['query'] == 'true') { $queryGenerator->addUserSearchConditions($input); } $queryGenerator->setFields(array('id')); $query = $queryGenerator->getQuery(); if ($module == 'Documents') { $folderid = vtlib_purify($input['folderidstring']); $folderid = str_replace(';', ',', $folderid); $query .= " AND vtiger_notes.folderid in (" . $folderid . ")"; } } $result = $adb->pquery($query, array()); return $result; }
function getTopInvoice($maxval, $calCnt) { require_once "data/Tracker.php"; require_once 'modules/Invoice/Invoice.php'; require_once 'include/logging.php'; require_once 'include/ListView/ListView.php'; require_once 'include/utils/utils.php'; require_once 'modules/CustomView/CustomView.php'; global $app_strings, $current_language, $current_user, $adb, $list_max_entries_per_page, $theme; $current_module_strings = return_module_language($current_language, 'Invoice'); $log = LoggerManager::getLogger('invoice_list'); $url_string = ''; $sorder = ''; $oCustomView = new CustomView("Invoice"); $customviewcombo_html = $oCustomView->getCustomViewCombo(); if (isset($_REQUEST['viewname']) == false || $_REQUEST['viewname'] == '') { if ($oCustomView->setdefaultviewid != "") { $viewid = $oCustomView->setdefaultviewid; } else { $viewid = "0"; } } $theme_path = "themes/" . $theme . "/"; $image_path = $theme_path . "images/"; //Retreive the list from Database //<<<<<<<<<customview>>>>>>>>> $date_var = date('Y-m-d'); //Changed for Patch 2 by Don $where = ' and vtiger_crmentity.smownerid=' . $current_user->id . ' and vtiger_invoice.invoicestatus != \'Paid\''; $query = getListQuery("Invoice", $where); $query .= " ORDER BY total DESC"; //<<<<<<<<customview>>>>>>>>> $query .= " LIMIT " . $adb->sql_escape_string($maxval); if ($calCnt == 'calculateCnt') { $list_result_rows = $adb->query(mkCountQuery($query)); return $adb->query_result($list_result_rows, 0, 'count'); } $list_result = $adb->query($query); //Retreiving the no of rows $noofrows = $adb->num_rows($list_result); //Retreiving the start value from request if (isset($_REQUEST['start']) && $_REQUEST['start'] != '') { $start = vtlib_purify($_REQUEST['start']); } else { $start = 1; } //Retreive the Navigation array $navigation_array = getNavigationValues($start, $noofrows, $list_max_entries_per_page); if ($navigation_array['start'] == 1) { if ($noofrows != 0) { $start_rec = $navigation_array['start']; } else { $start_rec = 0; } if ($noofrows > $list_max_entries_per_page) { $end_rec = $navigation_array['start'] + $list_max_entries_per_page - 1; } else { $end_rec = $noofrows; } } else { if ($navigation_array['next'] > $list_max_entries_per_page) { $start_rec = $navigation_array['next'] - $list_max_entries_per_page; $end_rec = $navigation_array['next'] - 1; } else { $start_rec = $navigation_array['prev'] + $list_max_entries_per_page; $end_rec = $noofrows; } } $focus = new Invoice(); $title = array('myTopInvoices.gif', $current_module_strings['LBL_MY_TOP_INVOICE'], 'home_mytopinv'); //Retreive the List View Table Header $listview_header = getListViewHeader($focus, "Invoice", $url_string, $sorder, $order_by, "HomePage", $oCustomView); $header = array($listview_header[1], $listview_header[2]); $listview_entries = getListViewEntries($focus, "Invoice", $list_result, $navigation_array, "HomePage", "", "EditView", "Delete", $oCustomView); foreach ($listview_entries as $crmid => $valuearray) { $entries[$crmid] = array($valuearray[1], $valuearray[2]); } $search_qry = "&query=true&Fields0=vtiger_invoice.invoicestatus&Condition0=isn&Srch_value0=Paid&Fields1=vtiger_crmentity.smownerid&Condition1=is&Srch_value1=" . $current_user->column_fields['user_name'] . "&searchtype=advance&search_cnt=2&matchtype=all"; $values = array('ModuleName' => 'Invoice', 'Title' => $title, 'Header' => $header, 'Entries' => $entries, 'search_qry' => $search_qry); if ($display_empty_home_blocks && $noofrows == 0 || $noofrows > 0) { return $values; } }
/** * this function returns the widget information for an module type widget */ private function getModuleFilters($sid) { global $adb, $current_user; $querycvid = "select vtiger_homemoduleflds.fieldname,vtiger_homemodule.* from vtiger_homemoduleflds\n\t\t\t\t\tleft join vtiger_homemodule on vtiger_homemodule.stuffid=vtiger_homemoduleflds.stuffid\n\t\t\t\t\twhere vtiger_homemoduleflds.stuffid=?"; $resultcvid = $adb->pquery($querycvid, array($sid)); $modname = $adb->query_result($resultcvid, 0, "modulename"); $cvid = $adb->query_result($resultcvid, 0, "customviewid"); $maxval = $adb->query_result($resultcvid, 0, "maxentries"); $column_count = $adb->num_rows($resultcvid); $cvid_check_query = $adb->pquery("SELECT * FROM vtiger_customview WHERE cvid = ?", array($cvid)); if (isPermitted($modname, 'index') == "yes") { if ($adb->num_rows($cvid_check_query) > 0) { $focus = CRMEntity::getInstance($modname); $oCustomView = new CustomView($modname); if ($modname == "Calendar") { $listquery = getListQuery($modname); if (trim($listquery) == '') { $listquery = $focus->getListQuery($modname); } $query = $oCustomView->getModifiedCvListQuery($cvid, $listquery, $modname); } else { $queryGenerator = new QueryGenerator($modname, $current_user); $queryGenerator->initForCustomViewById($cvid); $customViewFields = $queryGenerator->getCustomViewFields(); $fields = $queryGenerator->getFields(); $newFields = array_diff($fields, $customViewFields); for ($l = 0; $l < $column_count; $l++) { $customViewColumnInfo = $adb->query_result($resultcvid, $l, "fieldname"); $details = explode(':', $customViewColumnInfo); $newFields[] = $details[2]; } $queryGenerator->setFields($newFields); $query = $queryGenerator->getQuery(); } $count_result = $adb->query(mkCountQuery($query)); $noofrows = $adb->query_result($count_result, 0, "count"); $navigation_array = getNavigationValues(1, $noofrows, $maxval); //To get the current language file global $current_language, $app_strings; $fieldmod_strings = return_module_language($current_language, $modname); if ($modname == "Calendar") { $query .= "AND vtiger_activity.activitytype NOT IN ('Emails')"; } $list_result = $adb->query($query . " LIMIT 0," . $maxval); if ($modname == "Calendar") { for ($l = 0; $l < $column_count; $l++) { $fieldinfo = $adb->query_result($resultcvid, $l, "fieldname"); list($tabname, $colname, $fldname, $fieldmodlabel) = explode(":", $fieldinfo); $fieldheader = explode("_", $fieldmodlabel, 2); $fldlabel = $fieldheader[1]; $pos = strpos($fldlabel, "_"); if ($pos == true) { $fldlabel = str_replace("_", " ", $fldlabel); } $field_label = isset($app_strings[$fldlabel]) ? $app_strings[$fldlabel] : (isset($fieldmod_strings[$fldlabel]) ? $fieldmod_strings[$fldlabel] : $fldlabel); $cv_presence = $adb->pquery("SELECT * from vtiger_cvcolumnlist WHERE cvid = ? and columnname LIKE '%" . $fldname . "%'", array($cvid)); if ($is_admin == false) { $fld_permission = getFieldVisibilityPermission($modname, $current_user->id, $fldname); } if ($fld_permission == 0 && $adb->num_rows($cv_presence)) { $field_query = $adb->pquery("SELECT fieldlabel FROM vtiger_field WHERE fieldname = ? AND tablename = ? and vtiger_field.presence in (0,2)", array($fldname, $tabname)); $field_label = $adb->query_result($field_query, 0, 'fieldlabel'); $header[] = $field_label; } $fieldcolumns[$fldlabel] = array($tabname => $colname); } $listview_entries = getListViewEntries($focus, $modname, $list_result, $navigation_array, "", "", "EditView", "Delete", $oCustomView, 'HomePage', $fieldcolumns); } else { $controller = new ListViewController($adb, $current_user, $queryGenerator); $controller->setHeaderSorting(false); $header = $controller->getListViewHeader($focus, $modname, '', '', '', true); $listview_entries = $controller->getListViewEntries($focus, $modname, $list_result, $navigation_array, true); } $return_value = array('ModuleName' => $modname, 'cvid' => $cvid, 'Maxentries' => $maxval, 'Header' => $header, 'Entries' => $listview_entries); if (sizeof($header) != 0) { return $return_value; } else { return array('Entries' => "Fields not found in Selected Filter"); } } else { return array('Entries' => "<font color='red'>Filter You have Selected is Not Found</font>"); } } else { return array('Entries' => "<font color='red'>Permission Denied</font>"); } }
require_once 'include/ListView/ListView.php'; require_once 'include/database/PearDatabase.php'; require_once 'include/ComboUtil.php'; require_once 'include/utils/utils.php'; require_once 'modules/CustomView/CustomView.php'; require_once 'include/DatabaseUtil.php'; global $app_strings; global $currentModule; global $theme; $url_string = ''; $smarty = new CRMSmarty(); if (!isset($where)) { $where = ""; } //<<<<cutomview>>>>>>> $oCustomView = new CustomView($currentModule); $viewid = $oCustomView->getViewId($currentModule); $customviewcombo_html = $oCustomView->getCustomViewCombo($viewid); $viewnamedesc = $oCustomView->getCustomViewByCvid($viewid); //<<<<<customview>>>>> $popuptype = ''; $popuptype = $_REQUEST["popuptype"]; require_once "modules/Products/Products.php"; $focus = new Products(); $smarty->assign("SINGLE_MOD", 'Product'); if (isset($_REQUEST['return_module']) && $_REQUEST['return_module'] != '') { $smarty->assign("RETURN_MODULE", $_REQUEST['return_module']); } else { $smarty->assign("RETURN_MODULE", 'Products'); } if (isset($_REQUEST['select'])) {
} //<<<<<<<<<<<<<<<<<<< sorting - stored in session >>>>>>>>>>>>>>>>>>>> $sorder = $focus->getSortOrder(); $order_by = $focus->getOrderBy(); $_SESSION['SALESORDER_ORDER_BY'] = $order_by; $_SESSION['SALESORDER_SORT_ORDER'] = $sorder; //<<<<<<<<<<<<<<<<<<< sorting - stored in session >>>>>>>>>>>>>>>>>>>> if (isset($_REQUEST['query']) && $_REQUEST['query'] != '' && $_REQUEST['query'] == 'true') { list($where, $ustring) = split("#@@#", getWhereCondition($currentModule)); // we have a query $url_string .= "&query=true" . $ustring; $log->info("Here is the where clause for the list view: {$where}"); $smarty->assign("SEARCH_URL", $url_string); } //<<<<cutomview>>>>>>> $oCustomView = new CustomView("SalesOrder"); $viewid = $oCustomView->getViewId($currentModule); $customviewcombo_html = $oCustomView->getCustomViewCombo($viewid); $viewnamedesc = $oCustomView->getCustomViewByCvid($viewid); //Added to handle approving or denying status-public by the admin in CustomView $statusdetails = $oCustomView->isPermittedChangeStatus($viewnamedesc['status']); $smarty->assign("CUSTOMVIEW_PERMISSION", $statusdetails); //To check if a user is able to edit/delete a customview $edit_permit = $oCustomView->isPermittedCustomView($viewid, 'EditView', $currentModule); $delete_permit = $oCustomView->isPermittedCustomView($viewid, 'Delete', $currentModule); $smarty->assign("CV_EDIT_PERMIT", $edit_permit); $smarty->assign("CV_DELETE_PERMIT", $delete_permit); //<<<<<customview>>>>> $smarty->assign("CHANGE_OWNER", getUserslist()); $smarty->assign("CHANGE_GROUP_OWNER", getGroupslist()); // Buttons and View options
$errormsg = vtlib_purify($_REQUEST['errormsg']); $smarty->assign("ERROR", "The User does not have permission to Change/Delete " . $errormsg . " " . $currentModule); } else { $smarty->assign("ERROR", ""); } if (ListViewSession::hasViewChanged($currentModule, $viewid)) { $_SESSION['CONTACTS_ORDER_BY'] = ''; } //<<<<<<<<<<<<<<<<<<< sorting - stored in session >>>>>>>>>>>>>>>>>>>> $sorder = $focus->getSortOrder(); $order_by = $focus->getOrderBy(); $_SESSION['CONTACTS_ORDER_BY'] = $order_by; $_SESSION['CONTACTS_SORT_ORDER'] = $sorder; //<<<<<<<<<<<<<<<<<<< sorting - stored in session >>>>>>>>>>>>>>>>>>>> //<<<<cutomview>>>>>>> $oCustomView = new CustomView("Contacts"); $viewid = $oCustomView->getViewId($currentModule); $customviewcombo_html = $oCustomView->getCustomViewCombo($viewid); $viewnamedesc = $oCustomView->getCustomViewByCvid($viewid); //Added to handle approving or denying status-public by the admin in CustomView $statusdetails = $oCustomView->isPermittedChangeStatus($viewnamedesc['status']); $smarty->assign("CUSTOMVIEW_PERMISSION", $statusdetails); //To check if a user is able to edit/delete a customview $edit_permit = $oCustomView->isPermittedCustomView($viewid, 'EditView', $currentModule); $delete_permit = $oCustomView->isPermittedCustomView($viewid, 'Delete', $currentModule); $smarty->assign("CV_EDIT_PERMIT", $edit_permit); $smarty->assign("CV_DELETE_PERMIT", $delete_permit); //<<<<<customview>>>>> $smarty->assign("CHANGE_OWNER", getUserslist()); $smarty->assign("CHANGE_GROUP_OWNER", getGroupslist()); // Buttons and View options