* SPDX-License-Identifier: AGPL-3.0-only ************************************/ global $adb, $table_prefix; global $app_strings, $mod_strings, $current_language, $currentModule, $theme, $list_max_entries_per_page; //crmv@208173 //crmv@102334 OLD MODE : redirect to a tab list in the home page view if (empty($_REQUEST['fetch_only']) && empty($_REQUEST['ajax']) && empty($homepage)) { require_once('include/utils/ModuleHomeView.php'); $MHW = ModuleHomeView::getInstance($currentModule, $current_user->id); $MHW->setModHomeListId(); include('modules/VteCore/index.php'); return; } //crmv@102334 if ($_REQUEST['calc_nav'] == 'true'){ //Retreive the List View Table Header $customView = CRMEntity::getInstance('CustomView', $currentModule); // crmv@115329 $viewid = $customView->getViewId($currentModule); if($viewid !='') $url_string .= "&viewname=".$viewid; if ($_REQUEST['get_all_ids'] == 'true'){ echo '&#&#&#'; echo get_allids(VteSession::get($currentModule.'_listquery'),$_REQUEST['ids_to_jump']); } else{ echo '&#&#&#'; echo get_navigation_values(VteSession::get($currentModule.'_listquery'),$url_string,$currentModule,$_REQUEST['folderid'],false,$viewid); //crmv@83034 } die(); } $LVU = ListViewUtils::getInstance(); $category = getParentTab(); $tool_buttons = Button_Check($currentModule); $list_buttons = Array(); if (empty($homepage)) $smarty = new VteSmarty(); //crmv@102334 // crmv@205449 if (isInventoryModule($currentModule)) { $tool_buttons['Import'] = 'no'; $tool_buttons['DuplicatesHandling'] = 'no'; $tool_buttons['Merge'] = 'no'; } // crmv@205449e //crmv@141557 crmv@146666 if (!isset($modhomeid)) { require_once('include/utils/ModuleHomeView.php'); $MHW = ModuleHomeView::getInstance($currentModule, $current_user->id); $modhomeid = $MHW->getModHomeId(); } $smarty->assign("MODHOMEID",$modhomeid); // crmv@173746 $smarty->assign("EDITMODE", $_REQUEST['editmode']); // crmv@105193 $smarty->assign("CAN_ADD_HOME_BLOCKS", $MHW->getPermissions('CAN_ADD_HOME_BLOCKS')); $smarty->assign("CAN_EDIT_COUNTS", $MHW->getPermissions('CAN_EDIT_COUNTS')); $smarty->assign("CAN_ADD_HOME_VIEWS", $MHW->getPermissions('CAN_ADD_HOME_VIEWS')); $smarty->assign("CAN_DELETE_HOME_VIEWS", $MHW->getPermissions('CAN_DELETE_HOME_VIEWS')); $smarty->assign("HOME_BLOCK_TYPES", $MHW->getSupportedBlocks()); // crmv@173746e //crmv@141557e crmv@146666e // crmv@30967 if (in_array($currentModule,array('Documents','Charts','Reports','Myfiles'))){ //crmv@3079m $list_buttons['back'] = $app_strings['LBL_GO_BACK']; } // crmv@30967e if(isPermitted($currentModule,'Delete','') == 'yes') $list_buttons['del'] = $app_strings['LBL_MASS_DELETE']; if($currentModule !='Sms'){ if(isPermitted($currentModule,'EditView','') == 'yes') $list_buttons['mass_edit'] = $app_strings['LBL_MASS_EDIT']; } //custom code start if(in_array($currentModule,array('Leads','Accounts','Contacts','Vendors'))){ // crmv@43765 if(isPermitted('Emails','EditView','') == 'yes') $list_buttons['s_mail'] = $app_strings['LBL_SEND_MAIL_BUTTON']; if(isPermitted('Fax','EditView','') == 'yes') $list_buttons['s_fax'] = $app_strings['LBL_SEND_FAX_BUTTON']; if(!in_array($currentModule, array('Accounts','Vendors')) && isPermitted("Sms","EditView",'') == 'yes' && vtlib_isModuleActive('Sms')) //crmv@16703 crmv@43765 $list_buttons['s_sms'] = $app_strings['LBL_SEND_SMS_BUTTON']; } //custom code end //crmv@18592 $view_script = ""; //crmv@18592e $focus = CRMEntity::getInstance($currentModule); $focus->initSortbyField($currentModule); // Custom View $customView = CRMEntity::getInstance('CustomView', $currentModule); // crmv@115329 $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 global $current_user; $queryGenerator = QueryGenerator::getInstance($currentModule, $current_user); if ($viewid != "0") { $queryGenerator->initForCustomViewById($viewid); } else { $queryGenerator->initForDefaultCustomView(); } $controller = ListViewController::getInstance($adb, $current_user, $queryGenerator); //crmv@42752 $skipActions = false; $append_url = ''; if ($_REQUEST['hide_list_actions'] == '1') { $skipActions = true; $url_string .= '&hide_list_actions=1'; $append_url .= '&hide_list_actions=1'; } if ($_REQUEST['hide_cv_follow'] == '1') { $smarty->assign('HIDE_CV_FOLLOW', '1'); $url_string .= '&hide_cv_follow=1'; $append_url .= '&hide_cv_follow=1'; } if ($_REQUEST['hide_custom_links'] == '1') { $smarty->assign('HIDE_CUSTOM_LINKS', '1'); $url_string .= '&hide_custom_links=1'; $append_url .= '&hide_custom_links=1'; } if ($_REQUEST['hide_list_checkbox'] == '1') { $smarty->assign('HIDE_LIST_CHECKBOX', '1'); $url_string .= '&hide_list_checkbox=1'; $append_url .= '&hide_list_checkbox=1'; } if ($_REQUEST['hide_list_links'] == '1') { $url_string .= '&hide_list_links=1'; $append_url .= '&hide_list_links=1'; } if ($_REQUEST['hide_switchview_buttons'] == '1') { $url_string .= '&hide_switchview_buttons=1'; $append_url .= '&hide_switchview_buttons=1'; } // Enabling Module Search if($_REQUEST['query'] == 'true') { //crmv@55317 $SearchUtils = SearchUtils::getInstance(); $listview_header_search = $controller->getBasicSearchFieldInfoList(); $listview_header_search_new = $SearchUtils->getUnifiedSearchFieldInfoList($currentModule); $listview_header_search = array_merge($listview_header_search, $listview_header_search_new); //crmv@55317e $_REQUEST['search_fields'] = $listview_header_search; $queryGenerator->addUserSearchConditions($_REQUEST); $ustring = getSearchURL($_REQUEST); $url_string .= "&query=true$ustring"; //crmv@159559 $advanced_search_params = $SearchUtils->getAdvancedSearchParams($_REQUEST); $smarty->assign('ADVANCED_SEARCH_PARAMS', Zend_Json::encode($advanced_search_params)); //crmv@159559e } $smarty->assign('SEARCH_URL', $url_string); $smarty->assign('APPEND_URL', $append_url); //crmv@42752e //<<<<<<< sort ordering >>>>>>>>>>>>> list($focus->customview_order_by,$focus->customview_sort_order) = $customView->getOrderByFilterSQL($viewid); $sorder = $focus->getSortOrder(); $order_by = $focus->getOrderBy(); if(!getLVS($currentModule)) { unsetLVS(); $modObj = new ListViewSession(); $modObj->sorder = $sorder; $modObj->sortby = $order_by; setLVS($currentModule,get_object_vars($modObj)); } VteSession::set($currentModule.'_ORDER_BY', $order_by); VteSession::set($currentModule.'_SORT_ORDER', $sorder); //<<<<<<< sort ordering >>>>>>>>>>>>> $list_query = $queryGenerator->getQuery(); $where = $queryGenerator->getConditionalWhere(); //crmv@7634 if(isset($_REQUEST['lv_user_id'])) { VteSession::set('lv_user_id_'.$currentModule, $_REQUEST['lv_user_id']); // crmv@107328 } else { $_REQUEST['lv_user_id'] = VteSession::get('lv_user_id_'.$currentModule); // crmv@107328 } $smarty->assign("LV_USER_PICKLIST",getUserOptionsHTML($_REQUEST['lv_user_id'],$currentModule,'','',$modhomeid)); //crmv@141557 if( $_REQUEST['lv_user_id'] == "all" || $_REQUEST['lv_user_id'] == "") { // all event (normal rule) } else if ( $_REQUEST['lv_user_id'] == "mine") { // only assigned to me $list_where .= " and {$focus->getEntityTableInfo('table')}.smownerid = ".$current_user->id." "; // crmv@185647 } else if ( $_REQUEST['lv_user_id'] == "others") { // only assigneto others $list_where .= " and {$focus->getEntityTableInfo('table')}.smownerid <> ".$current_user->id." "; // crmv@185647 } else { // a selected userid $list_where .= " and {$focus->getEntityTableInfo('table')}.smownerid = ".intval($_REQUEST['lv_user_id'])." "; // crmv@185647 crmv@194999 } $list_query.=$list_where; $where.=$list_where; //crmv@7634e if(isset($where) && $where != '') { VteSession::set('export_where', $where); } else { VteSession::remove('export_where'); } if(!empty($order_by) && $order_by != '' && $order_by != null) { $list_query .= $focus->getFixedOrderBy($currentModule,$order_by,$sorder); //crmv@25403 crmv@127820 } //crmv@11597 $smarty->assign("CUSTOMCOUNTS_OPTION", $LVU->get_selection_options($currentModule, $noofrows)); $list_max_entries_per_page = $LVU->get_selection_options($currentModule, $noofrows, 'list'); if ($_REQUEST['ajax'] == 'true' && $_REQUEST['search']!= 'true' && $_REQUEST['changecount']!= 'true' && $_REQUEST['changecustomview']!= 'true'){ if ($_REQUEST['noofrows'] != '') $noofrows = $_REQUEST['noofrows']; else { $lvs_noofrows = getLVSDetails($currentModule,$viewid,'noofrows'); if ($lvs_noofrows != '') $noofrows = $lvs_noofrows; } if ($noofrows > 0){ $list_max_entries_per_page = $LVU->get_selection_options($currentModule, $noofrows, 'list'); $queryMode = (isset($_REQUEST['query']) && $_REQUEST['query'] == 'true'); $start = ListViewSession::getRequestCurrentPage($currentModule, $list_query, $viewid, $queryMode); // crmv@137476 $limit_start_rec = ($start-1) * $list_max_entries_per_page; if (!PerformancePrefs::getBoolean('LIST_COUNT', true)) { $skey = $currentModule.'_'.$viewid.'_list_nrows'; $list_result = $adb->limitQuery($list_query,$limit_start_rec,$list_max_entries_per_page+1); $sqlrows = $adb->num_rows($list_result); VteSession::set($skey,$sqlrows); if ($sqlrows > $list_max_entries_per_page) { // there is a next page $noofrows = $list_max_entries_per_page*($start+1); $list_result->_numOfRows = $list_max_entries_per_page; } else { // this is the last page $noofrows = $list_max_entries_per_page*($start-1) + $sqlrows; } } // crmv@137476e $navigation_array = VT_getSimpleNavigationValues($start,$list_max_entries_per_page,$noofrows); $limit_start_rec = ($start-1) * $list_max_entries_per_page; $navigationOutput = getTableHeaderSimpleNavigation($navigation_array, $url_string,$currentModule,$_REQUEST['folderid'],$viewid); // crmv@110503 if (PerformancePrefs::getBoolean('LIST_COUNT', true)) { $record_string = getRecordRangeMessage($list_max_entries_per_page, $limit_start_rec,$noofrows); $smarty->assign("RECORD_COUNTS", $record_string); } if ($noofrows > $list_max_entries_per_page) $smarty->assign("NAVIGATION", $navigationOutput); $smarty->assign("AJAX", 'true'); } } else { $queryMode = (isset($_REQUEST['query']) && $_REQUEST['query'] == 'true'); $start = ListViewSession::getRequestCurrentPage($currentModule, $list_query, $viewid, $queryMode); //crmv@15530 if ($_REQUEST['ajax'] == 'delete'){ $res = $adb->query(replaceSelectQuery($list_query,'count(*) as cnt')); if ($res){ $noofrows = $adb->query_result($res,0,'cnt'); setLVSDetails($currentModule,$viewid,$noofrows,'noofrows'); $_REQUEST['noofrows'] = $noofrows; if ($start > ceil($noofrows/$list_max_entries_per_page)){ $start-=1; } } } $limit_start_rec = ($start-1) * $list_max_entries_per_page; setLVSDetails($currentModule,$viewid,$start,'start'); $navigation_array['current'] = $start; $navigation_array['start'] = $start; $_REQUEST['start'] = $start; //crmv@15530 end } // crmv@137476 if (PerformancePrefs::getBoolean('LIST_COUNT', true)) { $list_result = $adb->limitQuery($list_query,$limit_start_rec,$list_max_entries_per_page); } else { $skey = $currentModule.'_'.$viewid.'_list_nrows'; if (!isset($list_result)) $list_result = $adb->limitQuery($list_query,$limit_start_rec,$list_max_entries_per_page+1); $sqlrows = $adb->num_rows($list_result); VteSession::set($skey,$sqlrows); if ($sqlrows > $list_max_entries_per_page) { $list_result->_numOfRows = $list_max_entries_per_page; } } // crmv@137476e if (isset($_REQUEST["selected_ids"])) { $smarty->assign("SELECTED_IDS_ARRAY", explode(";",$_REQUEST["selected_ids"])); $smarty->assign("SELECTED_IDS", $_REQUEST["selected_ids"]); } if (isset($_REQUEST["all_ids"])) { $smarty->assign("ALL_IDS", $_REQUEST["all_ids"]); } //crmv@11597 e //crmv@10759 $smarty->assign("DATEFORMAT",$current_user->date_format); $smarty->assign("OWNED_BY",getTabOwnedBy($currentModule)); //crmv@10759 e $listview_entries_other = $controller->getListViewEntriesOther($list_result->sql,$queryGenerator,$customView,$viewid,$navigation_array); //crmv@47905 //crmv@42752 $listview_header = $controller->getListViewHeader($focus,$currentModule,$url_string,$sorder, $order_by, $skipActions, $_REQUEST['folderid']); //crmv@83034 crmv@86355 $listview_entries = $controller->getListViewEntries($focus,$currentModule,$list_result,$navigation_array,$skipActions,$listview_entries_other); //crmv@42752e crmv@34627e // Convert field value to DetailView Link if(isset($focus->detailview_links) && count($focus->detailview_links)) { foreach($listview_entries as $listview_recid=>$listview_row) { foreach($listview_row as $listview_key=>$listview_val) { $listview_key_header = $listview_header[$listview_key]; preg_match('/(<[^>]+>)([^<]+)(<[^>]+>)/', $listview_key_header, $matches); $linktext = array_search(trim($matches[2], '  \t\r\n'), $mod_strings); if(in_array($linktext, $focus->detailview_links)) { $listview_row[$listview_key] = "".$listview_val.""; } } $listview_entries[$listview_recid] = $listview_row; } } $fieldnames = $controller->getAdvancedSearchOptionString(); $criteria = getcriteria_options(); //crmv@3084m $grid_search_js_array = ''; $grid_search_array = $controller->getGridSearch($focus,$currentModule,$url_string,$sorder,$order_by,$skipActions,$grid_search_js_array); //crmv@3084me global $theme; // Identify this module as custom module. if (isset($focus->IsCustomModule)){ $custom_module = true; }else{ $custom_module = false; } $smarty->assign('CUSTOM_MODULE', $custom_module); if($viewinfo['viewname'] == 'All') $smarty->assign('ALL', 'All'); $smarty->assign("VIEWID", $viewid); $smarty->assign('MOD', $mod_strings); $smarty->assign('APP', $app_strings); $smarty->assign('MODULE', $currentModule); $smarty->assign('SINGLE_MOD', getTranslatedString('SINGLE_'.$currentModule)); $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("LISTHEADER", $listview_header); $smarty->assign("LISTENTITY", $listview_entries); //crmv@3084m $smarty->assign("GRIDSEARCHARR", $grid_search_array); $smarty->assign("GRIDSEARCH_JS_ARRAY", $grid_search_js_array); //crmv@3084me $smarty->assign("SELECT_SCRIPT", $view_script); $smarty->assign("CRITERIA", $criteria); $smarty->assign("FIELDNAMES", $fieldnames); $smarty->assign("CUSTOMVIEW_OPTION",$customview_html); $smarty->assign("SKIP_SWITCHBTN",($_REQUEST['hide_switchview_buttons'] == '1')); // crmv@30967 $folderid = intval($_REQUEST['folderid']); $smarty->assign("FOLDERID", $folderid); if ($folderid > 0) { $folderinfo = getEntityFolder($folderid); $smarty->assign("FOLDERINFO", $folderinfo); } if ($currentModule == 'Charts') { $smarty->assign('HIDE_BUTTON_CREATE', true); } // crmv@30967e VteSession::set($currentModule.'_listquery', $list_query); // Gather the custom link information to display include_once('vtlib/Vtecrm/Link.php'); $customlink_params = Array('MODULE'=>$currentModule, 'ACTION'=>vtlib_purify($_REQUEST['action']), 'CATEGORY'=> $category); $smarty->assign('CUSTOM_LINKS', Vtecrm_Link::getAllByType(getTabid($currentModule), Array('LISTVIEWBASIC','LISTVIEW'), $customlink_params)); // END $smarty_ajax_template = 'ListViewEntries.tpl'; $smarty_template = 'ListView.tpl'; $sdk_custom_file = 'ListViewCustomisations'; if (isModuleInstalled('SDK')) { $tmp_sdk_custom_file = SDK::getFile($currentModule,$sdk_custom_file); if (!empty($tmp_sdk_custom_file)) { $sdk_custom_file = $tmp_sdk_custom_file; } } @include("modules/$currentModule/$sdk_custom_file.php"); // crmv@83340 if($_REQUEST['fetch_only'] == 'true') { if(isset($_REQUEST['ajax']) && $_REQUEST['ajax'] != '') { $outputHtml = $smarty->fetch($smarty_ajax_template); } else { $outputHtml = $smarty->fetch($smarty_template); } } else { if(isset($_REQUEST['ajax']) && $_REQUEST['ajax'] != '') { $smarty->display($smarty_ajax_template); } /* crmv@102334 */ }