Example #1
0
 function getOrderBy()
 {
     $currentModule = vglobal('currentModule');
     $use_default_order_by = '';
     if (AppConfig::performance('LISTVIEW_DEFAULT_SORTING', true)) {
         $use_default_order_by = $this->default_order_by;
     }
     $orderby = $use_default_order_by;
     if ($_REQUEST['order_by']) {
         $orderby = $this->db->sql_escape_string($_REQUEST['order_by']);
     } else {
         if ($_SESSION[$currentModule . '_Order_By']) {
             $orderby = $_SESSION[$currentModule . '_Order_By'];
         }
     }
     return $orderby;
 }
Example #2
0
 public static function load($key, $config)
 {
     switch ($key) {
         case 'debug':
             self::$debug = $config;
             break;
         case 'developer':
             self::$developer = $config;
             break;
         case 'security':
             self::$security = $config;
             break;
         case 'securityKeys':
             self::$securityKeys = $config;
             break;
         case 'performance':
             self::$performance = $config;
             break;
         case 'relation':
             self::$relation = $config;
             break;
     }
 }
Example #3
0
 function process(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $relatedModuleName = $request->get('relatedModule');
     $parentId = $request->get('record');
     $label = $request->get('tab_label');
     $requestedPage = $request->get('page');
     if (empty($requestedPage)) {
         $requestedPage = 1;
     }
     $pagingModel = new Vtiger_Paging_Model();
     $pagingModel->set('page', $requestedPage);
     $parentRecordModel = Vtiger_Record_Model::getInstanceById($parentId, $moduleName);
     $relationListView = Vtiger_RelationListView_Model::getInstance($parentRecordModel, $relatedModuleName, $label);
     $orderBy = $request->get('orderby');
     $sortOrder = $request->get('sortorder');
     if (empty($orderBy) && empty($sortOrder)) {
         $moduleInstance = CRMEntity::getInstance($relatedModuleName);
         $orderBy = $moduleInstance->default_order_by;
         $sortOrder = $moduleInstance->default_sort_order;
     }
     if ($sortOrder == "ASC") {
         $nextSortOrder = "DESC";
         $sortImage = "glyphicon glyphicon-chevron-down";
     } else {
         $nextSortOrder = "ASC";
         $sortImage = "glyphicon glyphicon-chevron-up";
     }
     if (!empty($orderBy)) {
         $relationListView->set('orderby', $orderBy);
         $relationListView->set('sortorder', $sortOrder);
     }
     $models = $relationListView->getEntries($pagingModel);
     $links = $relationListView->getLinks();
     $header = $relationListView->getHeaders();
     $noOfEntries = count($models);
     $relationModel = $relationListView->getRelationModel();
     $relatedModuleModel = $relationModel->getRelationModuleModel();
     $relationField = $relationModel->getRelationField();
     $viewer = $this->getViewer($request);
     $viewer->assign('RELATED_RECORDS', $models);
     $viewer->assign('PARENT_RECORD', $parentRecordModel);
     $viewer->assign('RELATED_LIST_LINKS', $links);
     $viewer->assign('RELATED_HEADERS', $header);
     $viewer->assign('RELATED_MODULE', $relatedModuleModel);
     $viewer->assign('RELATED_ENTIRES_COUNT', $noOfEntries);
     $viewer->assign('RELATION_FIELD', $relationField);
     if (AppConfig::performance('LISTVIEW_COMPUTE_PAGE_COUNT')) {
         $totalCount = $relationListView->getRelatedEntriesCount();
         $pageLimit = $pagingModel->getPageLimit();
         $pageCount = ceil((int) $totalCount / (int) $pageLimit);
         if ($pageCount == 0) {
             $pageCount = 1;
         }
         $viewer->assign('PAGE_COUNT', $pageCount);
         $viewer->assign('TOTAL_ENTRIES', $totalCount);
         $viewer->assign('PERFORMANCE', true);
     }
     $viewer->assign('MODULE', $moduleName);
     $viewer->assign('PAGING', $pagingModel);
     $viewer->assign('ORDER_BY', $orderBy);
     $viewer->assign('SORT_ORDER', $sortOrder);
     $viewer->assign('NEXT_SORT_ORDER', $nextSortOrder);
     $viewer->assign('SORT_IMAGE', $sortImage);
     $viewer->assign('COLUMN_NAME', $orderBy);
     $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel());
     $viewer->assign('IS_EDITABLE', $relationModel->isEditable());
     $viewer->assign('IS_DELETABLE', $relationModel->isDeletable());
     $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel());
     $viewer->assign('VIEW', $request->get('view'));
     return $viewer->view('EmailRelatedList.tpl', $moduleName, 'true');
 }
Example #4
0
 /**
  * Function to get order by
  * return string  $order_by    - fieldname(eg: 'subject')
  */
 function getOrderBy()
 {
     $log = vglobal('log');
     $log->debug("Entering getOrderBy() method ...");
     $use_default_order_by = '';
     if (AppConfig::performance('LISTVIEW_DEFAULT_SORTING', true)) {
         $use_default_order_by = $this->default_order_by;
     }
     if (isset($_REQUEST['order_by'])) {
         $order_by = $this->db->sql_escape_string($_REQUEST['order_by']);
     } else {
         $order_by = $_SESSION['USERS_ORDER_BY'] != '' ? $_SESSION['USERS_ORDER_BY'] : $use_default_order_by;
     }
     $log->debug("Exiting getOrderBy method ...");
     return $order_by;
 }
Example #5
0
 public function executeCron($who_trigger)
 {
     $log = vglobal('log');
     $log->debug('Start executeCron');
     $row = self::getActiveScan();
     if ($row > 0) {
         $log->warn(vtranslate('ERROR_ACTIVE_CRON', 'OSSMailScanner'));
         return vtranslate('ERROR_ACTIVE_CRON', 'OSSMailScanner');
     }
     $OSSMailModel = Vtiger_Record_Model::getCleanInstance('OSSMail');
     $OSSMailScannerModel = Vtiger_Record_Model::getCleanInstance('OSSMailScanner');
     $countEmails = 0;
     $scanId = 0;
     $accounts = $OSSMailModel->getAccountsList();
     if (!$accounts) {
         $log->warn('There are no accounts to be scanned');
         return false;
     }
     self::setCronStatus('2');
     $scanId = $OSSMailScannerModel->add_scan_history(array('user' => $who_trigger));
     foreach ($OSSMailModel->getAccountsList() as $account) {
         $log->debug('Start checking account: ' . $account['username']);
         foreach ($OSSMailScannerModel->getConfigFolderList() as $key => $folders) {
             if ($folders != null) {
                 $folderArray = array();
                 if (strpos($folders, ',')) {
                     $folderArray = explode(",", $folders);
                 } else {
                     $folderArray[0] = $folders;
                 }
                 foreach ($folderArray as $folder) {
                     $log->debug('Start checking folder: ' . $folder);
                     $mbox = $OSSMailModel->imapConnect($account['username'], $account['password'], $account['mail_host'], $folder, false);
                     if (!$mbox) {
                         $log->fatal('Incorrect mail access data: ' . $account['username']);
                         continue;
                     }
                     $countEmails = $OSSMailScannerModel->mail_Scan($mbox, $account, $folder, $scanId, $countEmails);
                     imap_close($mbox);
                     if ($countEmails >= AppConfig::performance('NUMBERS_EMAILS_DOWNLOADED_DURING_ONE_SCANNING')) {
                         $log->warn('Reached the maximum number of scanned mails');
                         $OSSMailScannerModel->update_scan_history($scanId, ['status' => '0', 'count' => $countEmails, 'action' => 'Action_CronMailScanner']);
                         self::setCronStatus('1');
                         return 'ok';
                     }
                 }
             }
         }
     }
     $OSSMailScannerModel->update_scan_history($scanId, ['status' => '0', 'count' => $countEmails, 'action' => 'Action_CronMailScanner']);
     self::setCronStatus('1');
     $log->debug('End executeCron');
     return 'ok';
 }
Example #6
0
 public function initializeListViewContents(Vtiger_Request $request, Vtiger_Viewer $viewer)
 {
     $moduleName = $this->getModule($request);
     $cvId = $request->get('cvid');
     $pageNumber = $request->get('page');
     $orderBy = $request->get('orderby');
     $sortOrder = $request->get('sortorder');
     $sourceModule = $request->get('src_module');
     $sourceField = $request->get('src_field');
     $sourceRecord = $request->get('src_record');
     $searchKey = $request->get('search_key');
     $searchValue = $request->get('search_value');
     $currencyId = $request->get('currency_id');
     $relatedParentModule = $request->get('related_parent_module');
     $relatedParentId = $request->get('related_parent_id');
     //To handle special operation when selecting record from Popup
     $getUrl = $request->get('get_url');
     //Check whether the request is in multi select mode
     $multiSelectMode = $request->get('multi_select');
     if (empty($multiSelectMode)) {
         $multiSelectMode = false;
     }
     if (empty($cvId)) {
         $cvId = '0';
     }
     if (empty($pageNumber)) {
         $pageNumber = '1';
     }
     $pagingModel = new Vtiger_Paging_Model();
     $pagingModel->set('page', $pageNumber);
     if (vglobal('popupAjax')) {
         $pagingModel->set('noLimit', true);
     }
     $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
     $recordStructureInstance = Vtiger_RecordStructure_Model::getInstanceForModule($moduleModel);
     $isRecordExists = Vtiger_Util_Helper::checkRecordExistance($relatedParentId);
     if ($isRecordExists || $isRecordExists === NULL) {
         $relatedParentModule = '';
         $relatedParentId = '';
     }
     if (!empty($relatedParentModule) && !empty($relatedParentId)) {
         $parentRecordModel = Vtiger_Record_Model::getInstanceById($relatedParentId, $relatedParentModule);
         $listViewModel = Vtiger_RelationListView_Model::getInstance($parentRecordModel, $moduleName, $label);
     } else {
         $listViewModel = Vtiger_ListView_Model::getInstanceForPopup($moduleName, $sourceModule);
     }
     if (empty($orderBy) && empty($sortOrder)) {
         $moduleInstance = CRMEntity::getInstance($moduleName);
         $orderBy = $moduleInstance->default_order_by;
         $sortOrder = $moduleInstance->default_sort_order;
     }
     if (!empty($orderBy)) {
         $listViewModel->set('orderby', $orderBy);
         $listViewModel->set('sortorder', $sortOrder);
     }
     if (!empty($sourceModule)) {
         $listViewModel->set('src_module', $sourceModule);
         $listViewModel->set('src_field', $sourceField);
         $listViewModel->set('src_record', $sourceRecord);
     }
     if (!empty($searchKey) && !empty($searchValue)) {
         $listViewModel->set('search_key', $searchKey);
         $listViewModel->set('search_value', $searchValue);
     }
     $searchParmams = $request->get('search_params');
     if (empty($searchParmams)) {
         $searchParmams = array();
     }
     $transformedSearchParams = Vtiger_Util_Helper::transferListSearchParamsToFilterCondition($searchParmams, $moduleModel);
     $listViewModel->set('search_params', $transformedSearchParams);
     //To make smarty to get the details easily accesible
     foreach ($searchParmams as $fieldListGroup) {
         foreach ($fieldListGroup as $fieldSearchInfo) {
             $fieldSearchInfo['searchValue'] = $fieldSearchInfo[2];
             $fieldSearchInfo['fieldName'] = $fieldName = $fieldSearchInfo[0];
             $searchParmams[$fieldName] = $fieldSearchInfo;
         }
     }
     if (!empty($relatedParentModule) && !empty($relatedParentId)) {
         $this->listViewHeaders = $listViewModel->getHeaders();
         $models = $listViewModel->getEntries($pagingModel);
         $noOfEntries = count($models);
         foreach ($models as $recordId => $recordModel) {
             foreach ($this->listViewHeaders as $fieldName => $fieldModel) {
                 $recordModel->set($fieldName, $recordModel->getDisplayValue($fieldName));
             }
             $models[$recordId] = $recordModel;
         }
         $this->listViewEntries = $models;
         if (count($this->listViewEntries) > 0) {
             $parent_related_records = true;
         }
     } else {
         $this->listViewHeaders = $listViewModel->getListViewHeaders();
         $this->listViewEntries = $listViewModel->getListViewEntries($pagingModel);
     }
     // If there are no related records with parent module then, we should show all the records
     if (!$parent_related_records && !empty($relatedParentModule) && !empty($relatedParentId)) {
         $relatedParentModule = null;
         $relatedParentId = null;
         $listViewModel = Vtiger_ListView_Model::getInstanceForPopup($moduleName, $sourceModule);
         $listViewModel->set('search_params', $transformedSearchParams);
         if (!empty($orderBy)) {
             $listViewModel->set('orderby', $orderBy);
             $listViewModel->set('sortorder', $sortOrder);
         }
         if (!empty($sourceModule)) {
             $listViewModel->set('src_module', $sourceModule);
             $listViewModel->set('src_field', $sourceField);
             $listViewModel->set('src_record', $sourceRecord);
         }
         if (!empty($searchKey) && !empty($searchValue)) {
             $listViewModel->set('search_key', $searchKey);
             $listViewModel->set('search_value', $searchValue);
         }
         $this->listViewHeaders = $listViewModel->getListViewHeaders();
         $this->listViewEntries = $listViewModel->getListViewEntries($pagingModel);
     }
     // End
     $noOfEntries = count($this->listViewEntries);
     if (empty($sortOrder)) {
         $sortOrder = "ASC";
     }
     if ($sortOrder == "ASC") {
         $nextSortOrder = "DESC";
         $sortImage = "downArrowSmall.png";
     } else {
         $nextSortOrder = "ASC";
         $sortImage = "upArrowSmall.png";
     }
     $viewer->assign('MODULE', $moduleName);
     $viewer->assign('RELATED_MODULE', $moduleName);
     $viewer->assign('MODULE_NAME', $moduleName);
     $viewer->assign('SOURCE_MODULE', $sourceModule);
     $viewer->assign('SOURCE_FIELD', $sourceField);
     $viewer->assign('SOURCE_RECORD', $sourceRecord);
     $viewer->assign('RELATED_PARENT_MODULE', $relatedParentModule);
     $viewer->assign('RELATED_PARENT_ID', $relatedParentId);
     $viewer->assign('SEARCH_KEY', $searchKey);
     $viewer->assign('SEARCH_VALUE', $searchValue);
     $viewer->assign('ORDER_BY', $orderBy);
     $viewer->assign('SORT_ORDER', $sortOrder);
     $viewer->assign('NEXT_SORT_ORDER', $nextSortOrder);
     $viewer->assign('SORT_IMAGE', $sortImage);
     $viewer->assign('GETURL', $getUrl);
     $viewer->assign('CURRENCY_ID', $currencyId);
     $viewer->assign('POPUPTYPE', vglobal('popupType'));
     $viewer->assign('RECORD_STRUCTURE_MODEL', $recordStructureInstance);
     $viewer->assign('RECORD_STRUCTURE', $recordStructureInstance->getStructure());
     $viewer->assign('PAGING_MODEL', $pagingModel);
     $viewer->assign('PAGE_NUMBER', $pageNumber);
     $viewer->assign('LISTVIEW_ENTRIES_COUNT', $noOfEntries);
     $viewer->assign('LISTVIEW_HEADERS', $this->listViewHeaders);
     $viewer->assign('LISTVIEW_ENTRIES', $this->listViewEntries);
     if (AppConfig::performance('LISTVIEW_COMPUTE_PAGE_COUNT')) {
         if (!$this->listViewCount) {
             $this->listViewCount = $listViewModel->getListViewCount();
         }
         $totalCount = $this->listViewCount;
         $pageLimit = $pagingModel->getPageLimit();
         $pageCount = ceil((int) $totalCount / (int) $pageLimit);
         if ($pageCount == 0) {
             $pageCount = 1;
         }
         $viewer->assign('PAGE_COUNT', $pageCount);
         $viewer->assign('LISTVIEW_COUNT', $totalCount);
     }
     $viewer->assign('MULTI_SELECT', $multiSelectMode);
     $viewer->assign('CURRENT_USER_MODEL', Users_Record_Model::getCurrentUserModel());
     $viewer->assign('SEARCH_DETAILS', $searchParmams);
 }
Example #7
0
 /**	Function to display the Services which are related to the PriceBook
  *	@param string $query - query to get the list of products which are related to the current PriceBook
  *	@param object $focus - PriceBook object which contains all the information of the current PriceBook
  *	@param string $returnset - return_module, return_action and return_id which are sequenced with & to pass to the URL which is optional
  *	return array $return_data which will be formed like array('header'=>$header,'entries'=>$entries_list) where as $header contains all the header columns and $entries_list will contain all the Service entries
  */
 function getPriceBookRelatedServices($query, $focus, $returnset = '')
 {
     $log = vglobal('log');
     $log->debug("Entering getPriceBookRelatedServices(" . $query . "," . get_class($focus) . "," . $returnset . ") method ...");
     $adb = PearDatabase::getInstance();
     global $app_strings;
     $current_user = vglobal('current_user');
     $current_language = vglobal('current_language');
     $current_module_strings = return_module_language($current_language, 'Services');
     $no_of_decimal_places = getCurrencyDecimalPlaces();
     global $list_max_entries_per_page;
     global $urlPrefix;
     global $theme;
     $pricebook_id = $_REQUEST['record'];
     $theme_path = "themes/" . $theme . "/";
     $image_path = $theme_path . "images/";
     $computeCount = $_REQUEST['withCount'];
     if (AppConfig::performance('LISTVIEW_COMPUTE_PAGE_COUNT') === true || (bool) $computeCount == true) {
         $noofrows = $adb->query_result($adb->query(Vtiger_Functions::mkCountQuery($query)), 0, 'count');
     } else {
         $noofrows = null;
     }
     $module = 'PriceBooks';
     $relatedmodule = 'Services';
     if (!$_SESSION['rlvs'][$module][$relatedmodule]) {
         $modObj = new ListViewSession();
         $modObj->sortby = $focus->default_order_by;
         $modObj->sorder = $focus->default_sort_order;
         $_SESSION['rlvs'][$module][$relatedmodule] = get_object_vars($modObj);
     }
     if (isset($_REQUEST['relmodule']) && $_REQUEST['relmodule'] != '' && $_REQUEST['relmodule'] == $relatedmodule) {
         $relmodule = vtlib_purify($_REQUEST['relmodule']);
         if ($_SESSION['rlvs'][$module][$relmodule]) {
             setSessionVar($_SESSION['rlvs'][$module][$relmodule], $noofrows, $list_max_entries_per_page, $module, $relmodule);
         }
     }
     global $relationId;
     $start = RelatedListViewSession::getRequestCurrentPage($relationId, $query);
     $navigation_array = VT_getSimpleNavigationValues($start, $list_max_entries_per_page, $noofrows);
     $limit_start_rec = ($start - 1) * $list_max_entries_per_page;
     if ($adb->isPostgres()) {
         $list_result = $adb->pquery($query . " OFFSET {$limit_start_rec} LIMIT {$list_max_entries_per_page}", array());
     } else {
         $list_result = $adb->pquery($query . " LIMIT {$limit_start_rec}, {$list_max_entries_per_page}", array());
     }
     $header = array();
     $header[] = $current_module_strings['LBL_LIST_SERVICE_NAME'];
     if (getFieldVisibilityPermission('Services', $current_user->id, 'unit_price') == '0') {
         $header[] = $current_module_strings['LBL_SERVICE_UNIT_PRICE'];
     }
     $header[] = $current_module_strings['LBL_PB_LIST_PRICE'];
     if (isPermitted("PriceBooks", "EditView", "") == 'yes' || isPermitted("PriceBooks", "Delete", "") == 'yes') {
         $header[] = $app_strings['LBL_ACTION'];
     }
     $currency_id = $focus->column_fields['currency_id'];
     $numRows = $adb->num_rows($list_result);
     for ($i = 0; $i < $numRows; $i++) {
         $entity_id = $adb->query_result($list_result, $i, "crmid");
         $unit_price = $adb->query_result($list_result, $i, "unit_price");
         if ($currency_id != null) {
             $prod_prices = getPricesForProducts($currency_id, array($entity_id), 'Services');
             $unit_price = $prod_prices[$entity_id];
         }
         $listprice = $adb->query_result($list_result, $i, "listprice");
         $field_name = $entity_id . "_listprice";
         $entries = array();
         $entries[] = textlength_check($adb->query_result($list_result, $i, "servicename"));
         if (getFieldVisibilityPermission('Services', $current_user->id, 'unit_price') == '0') {
             $entries[] = CurrencyField::convertToUserFormat($unit_price, null, true);
         }
         $entries[] = CurrencyField::convertToUserFormat($listprice, null, true);
         $action = "";
         if (isPermitted("PriceBooks", "EditView", "") == 'yes' && isPermitted('Services', 'EditView', $entity_id) == 'yes') {
             $action .= '<img style="cursor:pointer;" src="themes/images/editfield.gif" border="0" onClick="fnvshobj(this,\'editlistprice\'),editProductListPrice(\'' . $entity_id . '\',\'' . $pricebook_id . '\',\'' . number_format($listprice, $no_of_decimal_places, '.', '') . '\')" alt="' . $app_strings["LBL_EDIT_BUTTON"] . '" title="' . $app_strings["LBL_EDIT_BUTTON"] . '"/>';
         } else {
             $action .= '<img src="' . vtiger_imageurl('blank.gif', $theme) . '" border="0" />';
         }
         if (isPermitted("PriceBooks", "Delete", "") == 'yes' && isPermitted('Services', 'Delete', $entity_id) == 'yes') {
             if ($action != "") {
                 $action .= '&nbsp;|&nbsp;';
             }
             $action .= '<img src="themes/images/delete.gif" onclick="if(confirm(\'' . $app_strings['ARE_YOU_SURE'] . '\')) deletePriceBookProductRel(' . $entity_id . ',' . $pricebook_id . ');" alt="' . $app_strings["LBL_DELETE"] . '" title="' . $app_strings["LBL_DELETE"] . '" style="cursor:pointer;" border="0">';
         }
         if ($action != "") {
             $entries[] = $action;
         }
         $entries_list[] = $entries;
     }
     $navigationOutput[] = getRecordRangeMessage($list_result, $limit_start_rec, $noofrows);
     $navigationOutput[] = getRelatedTableHeaderNavigation($navigation_array, '', $module, $relatedmodule, $focus->id);
     $return_data = array('header' => $header, 'entries' => $entries_list, 'navigation' => $navigationOutput);
     $log->debug("Exiting getPriceBookRelatedServices method ...");
     return $return_data;
 }
Example #8
0
 public function initializeListViewContents(Vtiger_Request $request, Vtiger_Viewer $viewer)
 {
     //src_module value is added to just to stop showing inactive products
     $request->set('src_module', $request->getModule());
     $moduleName = $this->getModule($request);
     $cvId = $request->get('cvid');
     $pageNumber = $request->get('page');
     $orderBy = $request->get('orderby');
     $sortOrder = $request->get('sortorder');
     $sourceModule = $request->get('src_module');
     $sourceField = $request->get('src_field');
     $sourceRecord = $request->get('src_record');
     $searchKey = $request->get('search_key');
     $searchValue = $request->get('search_value');
     $currencyId = $request->get('currency_id');
     $potentialId = $request->get('potentialid');
     $searchParams = $request->get('search_params');
     //To handle special operation when selecting record from Popup
     $getUrl = $request->get('get_url');
     //Check whether the request is in multi select mode
     $multiSelectMode = $request->get('multi_select');
     if (empty($multiSelectMode)) {
         $multiSelectMode = false;
     }
     if (empty($cvId)) {
         $cvId = '0';
     }
     if (empty($pageNumber)) {
         $pageNumber = '1';
     }
     $pagingModel = new Vtiger_Paging_Model();
     $pagingModel->set('page', $pageNumber);
     $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
     $listViewModel = Vtiger_ListView_Model::getInstanceForPopup($moduleName, $sourceModule);
     $recordStructureInstance = Vtiger_RecordStructure_Model::getInstanceForModule($moduleModel);
     if (empty($orderBy) && empty($sortOrder)) {
         $moduleInstance = CRMEntity::getInstance($moduleName);
         $orderBy = $moduleInstance->default_order_by;
         $sortOrder = $moduleInstance->default_sort_order;
     }
     if (!empty($orderBy)) {
         $listViewModel->set('orderby', $orderBy);
         $listViewModel->set('sortorder', $sortOrder);
     }
     if (!empty($sourceModule)) {
         $listViewModel->set('src_module', $sourceModule);
         $listViewModel->set('src_field', $sourceField);
         $listViewModel->set('src_record', $sourceRecord);
     }
     if (!empty($searchKey) && !empty($searchValue)) {
         $listViewModel->set('search_key', $searchKey);
         $listViewModel->set('search_value', $searchValue);
     }
     $searchParmams = $request->get('search_params');
     if (empty($searchParmams)) {
         $searchParmams = array();
     }
     $transformedSearchParams = Vtiger_Util_Helper::transferListSearchParamsToFilterCondition($searchParmams, $moduleModel);
     $listViewModel->set('search_params', $transformedSearchParams);
     //To make smarty to get the details easily accesible
     foreach ($searchParmams as $fieldListGroup) {
         foreach ($fieldListGroup as $fieldSearchInfo) {
             $fieldSearchInfo['searchValue'] = $fieldSearchInfo[2];
             $fieldSearchInfo['fieldName'] = $fieldName = $fieldSearchInfo[0];
             $searchParmams[$fieldName] = $fieldSearchInfo;
         }
     }
     if (Settings_SalesProcesses_Module_Model::checkRelatedToPotentialsLimit() && Settings_SalesProcesses_Module_Model::isLimitForModule($sourceModule)) {
         if ($potentialId == '') {
             $potentialId = -1;
         }
         $listViewModel->set('potential_id', $potentialId);
         $viewer->assign('INVENTORY_LIMITED_FROM_POTENTIALS', true);
     }
     $productModel = Vtiger_Module_Model::getInstance('Products');
     if (!$this->listViewHeaders) {
         $this->listViewHeaders = $listViewModel->getListViewHeaders();
     }
     if (!$this->listViewEntries && $productModel->isActive()) {
         $this->listViewEntries = $listViewModel->getListViewEntries($pagingModel);
     }
     if (!$productModel->isActive()) {
         $this->listViewEntries = array();
         $viewer->assign('LBL_MODULE_DISABLED', true);
     }
     foreach ($this->listViewEntries as $key => $listViewEntry) {
         $productId = $listViewEntry->getId();
         $subProducts = $listViewModel->getSubProducts($productId);
         if ($subProducts) {
             $listViewEntry->set('subProducts', $subProducts);
         }
     }
     $noOfEntries = count($this->listViewEntries);
     if (empty($sortOrder)) {
         $sortOrder = "ASC";
     }
     if ($sortOrder == "ASC") {
         $nextSortOrder = "DESC";
         $sortImage = "downArrowSmall.png";
     } else {
         $nextSortOrder = "ASC";
         $sortImage = "upArrowSmall.png";
     }
     $viewer->assign('MODULE', $moduleName);
     $viewer->assign('MODULE_NAME', $moduleName);
     $viewer->assign('RELATED_MODULE', $moduleName);
     $viewer->assign('SOURCE_MODULE', $sourceModule);
     $viewer->assign('SOURCE_FIELD', $sourceField);
     $viewer->assign('SOURCE_RECORD', $sourceRecord);
     $viewer->assign('SEARCH_KEY', $searchKey);
     $viewer->assign('SEARCH_VALUE', $searchValue);
     $viewer->assign('ORDER_BY', $orderBy);
     $viewer->assign('SORT_ORDER', $sortOrder);
     $viewer->assign('NEXT_SORT_ORDER', $nextSortOrder);
     $viewer->assign('SORT_IMAGE', $sortImage);
     $viewer->assign('GETURL', $getUrl);
     $viewer->assign('CURRENCY_ID', $currencyId);
     $viewer->assign('RECORD_STRUCTURE_MODEL', $recordStructureInstance);
     $viewer->assign('RECORD_STRUCTURE', $recordStructureInstance->getStructure());
     $viewer->assign('PAGING_MODEL', $pagingModel);
     $viewer->assign('PAGE_NUMBER', $pageNumber);
     $viewer->assign('LISTVIEW_ENTRIES_COUNT', $noOfEntries);
     $viewer->assign('LISTVIEW_HEADERS', $this->listViewHeaders);
     $viewer->assign('LISTVIEW_ENTRIES', $this->listViewEntries);
     $viewer->assign('POPUPTYPE', vglobal('popupType'));
     if (AppConfig::performance('LISTVIEW_COMPUTE_PAGE_COUNT')) {
         if (!$this->listViewCount) {
             $this->listViewCount = $listViewModel->getListViewCount();
         }
         $totalCount = $this->listViewCount;
         $pageLimit = $pagingModel->getPageLimit();
         $pageCount = ceil((int) $totalCount / (int) $pageLimit);
         if ($pageCount == 0) {
             $pageCount = 1;
         }
         $viewer->assign('PAGE_COUNT', $pageCount);
         $viewer->assign('LISTVIEW_COUNT', $totalCount);
     }
     $viewer->assign('MULTI_SELECT', $multiSelectMode);
     $viewer->assign('CURRENT_USER_MODEL', Users_Record_Model::getCurrentUserModel());
     $viewer->assign('TARGET_MODULE', $moduleName);
     $viewer->assign('MODULE', $request->getModule());
     $viewer->assign('GETURL', 'getTaxesURL');
     $viewer->assign('VIEW', 'ProductsPopup');
     $viewer->assign('SEARCH_DETAILS', $searchParmams);
 }
Example #9
0
 public function initializeListViewContents(Vtiger_Request $request, Vtiger_Viewer $viewer)
 {
     $moduleName = $request->getModule();
     $cvId = $request->get('viewname');
     $pageNumber = $request->get('page');
     $orderBy = $request->get('orderby');
     $sortOrder = $request->get('sortorder');
     if (empty($orderBy) && empty($sortOrder)) {
         $moduleInstance = CRMEntity::getInstance($moduleName);
         $orderBy = $moduleInstance->default_order_by;
         $sortOrder = $moduleInstance->default_sort_order;
     }
     if ($sortOrder == "ASC") {
         $nextSortOrder = "DESC";
         $sortImage = "glyphicon glyphicon-chevron-down";
     } else {
         $nextSortOrder = "ASC";
         $sortImage = "glyphicon glyphicon-chevron-up";
     }
     if (empty($pageNumber)) {
         $pageNumber = '1';
     }
     $listViewModel = EmailTemplates_ListView_Model::getInstance($moduleName, $cvId);
     $linkParams = array('MODULE' => $moduleName, 'ACTION' => $request->get('view'), 'CVID' => $cvId);
     $linkModels = $listViewModel->getListViewMassActions($linkParams);
     $pagingModel = new Vtiger_Paging_Model();
     $pagingModel->set('page', $pageNumber);
     if (!empty($orderBy)) {
         $listViewModel->set('orderby', $orderBy);
         $listViewModel->set('sortorder', $sortOrder);
     }
     $searchKey = $request->get('search_key');
     $searchValue = $request->get('search_value');
     $operator = $request->get('operator');
     if (!empty($operator)) {
         $listViewModel->set('operator', $operator);
         $viewer->assign('OPERATOR', $operator);
         $viewer->assign('ALPHABET_VALUE', $searchValue);
     }
     if (!empty($searchKey) && !empty($searchValue)) {
         $listViewModel->set('search_key', $searchKey);
         $listViewModel->set('search_value', $searchValue);
     }
     if (!$this->listViewHeaders) {
         $this->listViewHeaders = $listViewModel->getListViewHeaders();
     }
     if (!$this->listViewEntries) {
         $this->listViewEntries = $listViewModel->getListViewEntries($pagingModel);
     }
     $noOfEntries = count($this->listViewEntries);
     $viewer->assign('VIEWID', $cvId);
     $viewer->assign('MODULE', $moduleName);
     if (!$this->listViewLinks) {
         $this->listViewLinks = $listViewModel->getListViewLinks($linkParams);
     }
     $viewer->assign('LISTVIEW_LINKS', $this->listViewLinks);
     $viewer->assign('LISTVIEW_MASSACTIONS', $linkModels['LISTVIEWMASSACTION']);
     $viewer->assign('PAGING_MODEL', $pagingModel);
     $viewer->assign('PAGE_NUMBER', $pageNumber);
     $viewer->assign('ORDER_BY', $orderBy);
     $viewer->assign('SORT_ORDER', $sortOrder);
     $viewer->assign('NEXT_SORT_ORDER', $nextSortOrder);
     $viewer->assign('SORT_IMAGE', $sortImage);
     $viewer->assign('COLUMN_NAME', $orderBy);
     $viewer->assign('LISTVIEW_ENTRIES_COUNT', $noOfEntries);
     $viewer->assign('LISTVIEW_HEADERS', $this->listViewHeaders);
     $viewer->assign('LISTVIEW_ENTRIES', $this->listViewEntries);
     if (AppConfig::performance('LISTVIEW_COMPUTE_PAGE_COUNT')) {
         if (!$this->listViewCount) {
             $this->listViewCount = $listViewModel->getListViewCount();
         }
         $viewer->assign('LISTVIEW_COUNT', $this->listViewCount);
     }
     $viewer->assign('IS_MODULE_EDITABLE', $listViewModel->getModule()->isPermitted('EditView'));
     $viewer->assign('IS_MODULE_DELETABLE', $listViewModel->getModule()->isPermitted('Delete'));
 }
Example #10
0
 /**
  * Static Function to get the list of records matching the search key
  * @param <String> $searchKey
  * @return <Array> - List of Vtiger_Record_Model or Module Specific Record Model instances
  */
 public static function getSearchResult($searchKey, $module = false, $limit = false)
 {
     $db = PearDatabase::getInstance();
     $params = ["%{$searchKey}%"];
     $sortColumns = $join = $where = '';
     if ($module !== false) {
         $where .= ' AND vtiger_crmentity.setype = ?';
         $params[] = $module;
     } else {
         $join = 'INNER JOIN vtiger_entityname ON vtiger_crmentity.setype = vtiger_entityname.modulename';
         $where .= ' AND vtiger_entityname.turn_off = ?';
         $sortColumns .= 'vtiger_entityname.sequence ASC,';
         $params[] = 1;
     }
     if (AppConfig::performance('SORT_SEARCH_RESULTS')) {
         $sortColumns .= 'vtiger_crmentity.label ASC,';
     }
     $query = 'SELECT label, searchlabel, crmid, setype, createdtime, smownerid FROM vtiger_crmentity ' . $join . ' WHERE vtiger_crmentity.searchlabel LIKE ? AND vtiger_crmentity.deleted = 0' . $where;
     if (!empty($sortColumns)) {
         $query .= ' ORDER BY ' . $sortColumns;
         $query = rtrim($query, ',');
     }
     $result = $db->pquery($query, $params);
     $noOfRows = $db->num_rows($result);
     $moduleModels = $matchingRecords = $leadIdsList = array();
     for ($i = 0; $i < $noOfRows; ++$i) {
         $row = $db->query_result_rowdata($result, $i);
         if ($row['setype'] === 'Leads') {
             $leadIdsList[] = $row['crmid'];
         }
     }
     $convertedInfo = Leads_Module_Model::getConvertedInfo($leadIdsList);
     $user = Users_Record_Model::getCurrentUserModel();
     $roleInstance = Settings_Roles_Record_Model::getInstanceById($user->get('roleid'));
     $searchunpriv = $roleInstance->get('searchunpriv');
     for ($i = 0, $recordsCount = 0; $i < $noOfRows && $recordsCount < vglobal('max_number_search_result'); ++$i) {
         $row = $db->query_result_rowdata($result, $i);
         if ($row['setype'] === 'Leads' && $convertedInfo[$row['crmid']]) {
             continue;
         }
         $recordPermitted = $permitted = Users_Privileges_Model::isPermitted($row['setype'], 'DetailView', $row['crmid']);
         if (!empty($searchunpriv)) {
             if (in_array($row['setype'], explode(',', $searchunpriv))) {
                 $recordPermitted = true;
             }
         }
         if ($recordPermitted) {
             $row['id'] = $row['crmid'];
             $row['permitted'] = $permitted;
             $moduleName = $row['setype'];
             if (!array_key_exists($moduleName, $moduleModels)) {
                 $moduleModels[$moduleName] = Vtiger_Module_Model::getInstance($moduleName);
             }
             $moduleModel = $moduleModels[$moduleName];
             $modelClassName = Vtiger_Loader::getComponentClassName('Model', 'Record', $moduleName);
             $recordInstance = new $modelClassName();
             $matchingRecords[$moduleName][$row['id']] = $recordInstance->setData($row)->setModuleFromInstance($moduleModel);
             $recordsCount++;
         }
         if ($limit && $limit == $recordsCount) {
             return $matchingRecords;
         }
     }
     return $matchingRecords;
 }
Example #11
0
 function process(Vtiger_Request $request)
 {
     $targetModuleName = $request->getModule();
     if ($targetModuleName == 'Assets' || $targetModuleName == 'Accounts' || $targetModuleName == 'Contacts' || $targetModuleName == 'Leads' || $targetModuleName == 'Products' || $targetModuleName == 'Services' || $targetModuleName == 'HelpDesk' || $targetModuleName == 'Vendors') {
         $moduleName = $request->getModule();
         $relatedModuleName = $request->get('relatedModule');
         $parentId = $request->get('record');
         $label = $request->get('tab_label');
         $requestedPage = $request->get('page');
         if (empty($requestedPage)) {
             $requestedPage = 1;
         }
         $pagingModel = new Vtiger_Paging_Model();
         $pagingModel->set('page', $requestedPage);
         $parentRecordModel = Vtiger_Record_Model::getInstanceById($parentId, $moduleName);
         $relationListView = Vtiger_RelationListView_Model::getInstance($parentRecordModel, $relatedModuleName, $label);
         $orderBy = $request->get('orderby');
         $sortOrder = $request->get('sortorder');
         if (empty($orderBy) && empty($sortOrder)) {
             $moduleInstance = CRMEntity::getInstance($relatedModuleName);
             $orderBy = $moduleInstance->default_order_by;
             $sortOrder = $moduleInstance->default_sort_order;
         }
         if ($sortOrder == 'ASC') {
             $nextSortOrder = 'DESC';
             $sortImage = 'glyphicon glyphicon-chevron-down';
         } else {
             $nextSortOrder = 'ASC';
             $sortImage = 'glyphicon glyphicon-chevron-up';
         }
         if (!empty($orderBy)) {
             $relationListView->set('orderby', $orderBy);
             $relationListView->set('sortorder', $sortOrder);
         }
         $models = $relationListView->getEntries($pagingModel);
         $links = $relationListView->getLinks();
         $header = $relationListView->getHeaders();
         $noOfEntries = count($models);
         $relationModel = $relationListView->getRelationModel();
         $relatedModuleModel = $relationModel->getRelationModuleModel();
         $relationField = $relationModel->getRelationField();
         $viewer = $this->getViewer($request);
         $viewer->assign('RELATED_RECORDS', $models);
         $viewer->assign('PARENT_RECORD', $parentRecordModel);
         $viewer->assign('RELATED_LIST_LINKS', $links);
         $viewer->assign('RELATED_HEADERS', $header);
         $viewer->assign('RELATED_MODULE', $relatedModuleModel);
         $viewer->assign('RELATED_ENTIRES_COUNT', $noOfEntries);
         $viewer->assign('RELATION_FIELD', $relationField);
         if (AppConfig::performance('LISTVIEW_COMPUTE_PAGE_COUNT')) {
             $totalCount = $relationListView->getRelatedEntriesCount();
             $pageLimit = $pagingModel->getPageLimit();
             $pageCount = ceil((int) $totalCount / (int) $pageLimit);
             $viewer->assign('PAGE_COUNT', $pageCount);
             $viewer->assign('TOTAL_ENTRIES', $totalCount);
             $viewer->assign('PERFORMANCE', true);
         }
         $viewer->assign('SOURCEMODULE', $relatedModuleName);
         $viewer->assign('MODULE', $moduleName);
         $viewer->assign('PAGING', $pagingModel);
         $viewer->assign('ORDER_BY', $orderBy);
         $viewer->assign('SORT_ORDER', $sortOrder);
         $viewer->assign('NEXT_SORT_ORDER', $nextSortOrder);
         $viewer->assign('SORT_IMAGE', $sortImage);
         $viewer->assign('COLUMN_NAME', $orderBy);
         $viewer->assign('IS_EDITABLE', $relationModel->isEditable());
         $viewer->assign('IS_DELETABLE', $relationModel->isDeletable());
         $viewer->assign('VIEW', $request->get('view'));
         $record = $request->get('record');
         $view = $request->get('view');
         // check if passwords are encrypted
         if (file_exists('modules/OSSPasswords/config.ini')) {
             // encryption key exists so passwords are encrypted
             $config = parse_ini_file('modules/OSSPasswords/config.ini');
             // let smarty know that passwords are encrypted
             $viewer->assign('ENCRYPTED', true);
             $viewer->assign('ENC_KEY', $config['key']);
             $viewer->assign('RECORD', $record);
             $viewer->assign('VIEW', $view);
         } else {
             $viewer->assign('ENCRYPTED', false);
             $viewer->assign('ENC_KEY', '');
             $viewer->assign('RECORD', $record);
             $viewer->assign('VIEW', $view);
         }
         return $viewer->view('ViewRelatedList.tpl', 'OSSPasswords', 'true');
     } else {
         return parent::process($request);
     }
 }
Example #12
0
 public function initializeListViewContents(Vtiger_Request $request, Vtiger_Viewer $viewer)
 {
     //src_module value is added to just to stop showing inactive products
     $request->set('src_module', $request->getModule());
     $moduleName = $this->getModule($request);
     $cvId = $request->get('cvid');
     $pageNumber = $request->get('page');
     $orderBy = $request->get('orderby');
     $sortOrder = $request->get('sortorder');
     $sourceField = $request->get('src_field');
     $sourceRecord = $request->get('src_record');
     $searchKey = $request->get('search_key');
     $searchValue = $request->get('search_value');
     $currencyId = $request->get('currency_id');
     //To handle special operation when selecting record from Popup
     $getUrl = $request->get('get_url');
     // To handle subproducts in popup view
     $subProductsPopup = $request->get('subProductsPopup');
     $parentProductId = $request->get('productid');
     //Check whether the request is in multi select mode
     $multiSelectMode = $request->get('multi_select');
     if (empty($multiSelectMode)) {
         $multiSelectMode = false;
     }
     if (empty($cvId)) {
         $cvId = '0';
     }
     if (empty($pageNumber)) {
         $pageNumber = '1';
     }
     $pagingModel = new Vtiger_Paging_Model();
     $pagingModel->set('page', $pageNumber);
     $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
     $listViewModel = Vtiger_ListView_Model::getInstanceForPopup($moduleName);
     $recordStructureInstance = Vtiger_RecordStructure_Model::getInstanceForModule($moduleModel);
     if (empty($orderBy) && empty($sortOrder)) {
         $moduleInstance = CRMEntity::getInstance($moduleName);
         $orderBy = $moduleInstance->default_order_by;
         $sortOrder = $moduleInstance->default_sort_order;
     }
     if (!empty($orderBy)) {
         $listViewModel->set('orderby', $orderBy);
         $listViewModel->set('sortorder', $sortOrder);
     }
     if (!empty($sourceModule)) {
         $listViewModel->set('src_module', $sourceModule);
         $listViewModel->set('src_field', $sourceField);
         $listViewModel->set('src_record', $sourceRecord);
     }
     if (!empty($searchKey) && !empty($searchValue)) {
         $listViewModel->set('search_key', $searchKey);
         $listViewModel->set('search_value', $searchValue);
     }
     if ($subProductsPopup && $parentProductId) {
         $listViewModel->set('subProductsPopup', true);
         $listViewModel->set('productId', $parentProductId);
         $viewer->assign('SUBPRODUCTS_POPUP', $subProductsPopup);
         $viewer->assign('PARENT_PRODUCT_ID', $parentProductId);
     }
     if (!$this->listViewHeaders) {
         $this->listViewHeaders = $listViewModel->getListViewHeaders();
     }
     if (!$this->listViewEntries) {
         $this->listViewEntries = $listViewModel->getListViewEntries($pagingModel);
     }
     $noOfEntries = count($this->listViewEntries);
     if (empty($sortOrder)) {
         $sortOrder = "ASC";
     }
     if ($sortOrder == "ASC") {
         $nextSortOrder = "DESC";
         $sortImage = "downArrowSmall.png";
     } else {
         $nextSortOrder = "ASC";
         $sortImage = "upArrowSmall.png";
     }
     $viewer->assign('MODULE', $moduleName);
     $viewer->assign('SOURCE_MODULE', $sourceModule);
     $viewer->assign('SOURCE_FIELD', $sourceField);
     $viewer->assign('SOURCE_RECORD', $sourceRecord);
     $viewer->assign('SEARCH_KEY', $searchKey);
     $viewer->assign('SEARCH_VALUE', $searchValue);
     $viewer->assign('ORDER_BY', $orderBy);
     $viewer->assign('SORT_ORDER', $sortOrder);
     $viewer->assign('NEXT_SORT_ORDER', $nextSortOrder);
     $viewer->assign('SORT_IMAGE', $sortImage);
     $viewer->assign('GETURL', $getUrl);
     $viewer->assign('CURRENCY_ID', $currencyId);
     $viewer->assign('RECORD_STRUCTURE_MODEL', $recordStructureInstance);
     $viewer->assign('RECORD_STRUCTURE', $recordStructureInstance->getStructure());
     $viewer->assign('PAGING_MODEL', $pagingModel);
     $viewer->assign('PAGE_NUMBER', $pageNumber);
     $viewer->assign('LISTVIEW_ENTRIES_COUNT', $noOfEntries);
     $viewer->assign('LISTVIEW_HEADERS', $this->listViewHeaders);
     $viewer->assign('LISTVIEW_ENTRIES', $this->listViewEntries);
     if (AppConfig::performance('LISTVIEW_COMPUTE_PAGE_COUNT')) {
         if (!$this->listViewCount) {
             $this->listViewCount = $listViewModel->getListViewCount();
         }
         $totalCount = $this->listViewCount;
         $pageLimit = $pagingModel->getPageLimit();
         $pageCount = ceil((int) $totalCount / (int) $pageLimit);
         if ($pageCount == 0) {
             $pageCount = 1;
         }
         $viewer->assign('PAGE_COUNT', $pageCount);
         $viewer->assign('LISTVIEW_COUNT', $totalCount);
     }
     $viewer->assign('MULTI_SELECT', $multiSelectMode);
     $viewer->assign('CURRENT_USER_MODEL', Users_Record_Model::getCurrentUserModel());
     $viewer->assign('MODULE', $request->getModule());
     $viewer->assign('GETURL', 'getTaxesURL');
     $viewer->assign('VIEW', 'SubProductsPopup');
     $viewer->assign('MAIN_PRODUCT_POPUP', true);
 }
Example #13
0
 function process(Vtiger_Request $request)
 {
     $viewer = $this->getViewer($request);
     $moduleName = $request->getModule();
     $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
     $folders = $moduleModel->getFolders();
     $folderId = $request->get('viewname');
     if (empty($folderId) || $folderId == 'undefined') {
         $folderId = 'All';
     }
     $pageNumber = $request->get('page');
     $orderBy = $request->get('orderby');
     $sortOrder = $request->get('sortorder');
     if ($sortOrder == "ASC") {
         $nextSortOrder = "DESC";
         $sortImage = "glyphicon glyphicon-chevron-down";
     } else {
         $nextSortOrder = "ASC";
         $sortImage = "glyphicon glyphicon-chevron-up";
     }
     $listViewModel = new Reports_ListView_Model();
     $listViewModel->set('module', $moduleModel);
     $listViewModel->set('folderid', $folderId);
     if (!empty($orderBy)) {
         $listViewModel->set('orderby', $orderBy);
         $listViewModel->set('sortorder', $sortOrder);
     }
     $listViewMassActionModels = $listViewModel->getListViewMassActions();
     if (empty($pageNumber)) {
         $pageNumber = '1';
     }
     $viewer->assign('MODULE', $moduleName);
     $pagingModel = new Vtiger_Paging_Model();
     $pagingModel->set('page', $pageNumber);
     $viewer->assign('PAGING_MODEL', $pagingModel);
     $viewer->assign('LISTVIEW_MASSACTIONS', $listViewMassActionModels);
     if (!$this->listViewHeaders) {
         $this->listViewHeaders = $listViewModel->getListViewHeaders();
     }
     if ($folderId == 'All') {
         $this->listViewHeaders['foldername'] = 'LBL_FOLDER_NAME';
     }
     if (!$this->listViewEntries) {
         $this->listViewEntries = $listViewModel->getListViewEntries($pagingModel);
     }
     $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
     $noOfEntries = count($this->listViewEntries);
     $viewer->assign('PAGE_NUMBER', $pageNumber);
     $viewer->assign('LISTVIEW_ENTRIES_COUNT', $noOfEntries);
     $viewer->assign('LISTVIEW_HEADERS', $this->listViewHeaders);
     $viewer->assign('LISTVIEW_ENTRIES', $this->listViewEntries);
     $viewer->assign('MODULE_MODEL', $moduleModel);
     $viewer->assign('VIEWNAME', $folderId);
     $viewer->assign('ORDER_BY', $orderBy);
     $viewer->assign('SORT_ORDER', $sortOrder);
     $viewer->assign('NEXT_SORT_ORDER', $nextSortOrder);
     $viewer->assign('SORT_IMAGE', $sortImage);
     $viewer->assign('COLUMN_NAME', $orderBy);
     if (AppConfig::performance('LISTVIEW_COMPUTE_PAGE_COUNT')) {
         if (!$this->listViewCount) {
             $this->listViewCount = $listViewModel->getListViewCount();
         }
         $totalCount = $this->listViewCount;
         $pageLimit = $pagingModel->getPageLimit();
         $pageCount = ceil((int) $totalCount / (int) $pageLimit);
         if ($pageCount == 0) {
             $pageCount = 1;
         }
         $viewer->assign('PAGE_COUNT', $pageCount);
         $viewer->assign('LISTVIEW_COUNT', $totalCount);
     }
     $viewer->view('ListViewContents.tpl', $moduleName);
 }
Example #14
0
function getRecordRangeMessage($listResult, $limitStartRecord, $totalRows = '')
{
    global $adb, $app_strings;
    $numRows = $adb->num_rows($listResult);
    $recordListRangeMsg = '';
    if ($numRows > 0) {
        $recordListRangeMsg = $app_strings['LBL_SHOWING'] . ' ' . $app_strings['LBL_RECORDS'] . ' ' . ($limitStartRecord + 1) . ' - ' . ($limitStartRecord + $numRows);
        if (AppConfig::performance('LISTVIEW_COMPUTE_PAGE_COUNT', false) === true) {
            $recordListRangeMsg .= ' ' . $app_strings['LBL_LIST_OF'] . " {$totalRows}";
        }
    }
    return $recordListRangeMsg;
}
Example #15
0
function get_user_array($add_blank = true, $status = 'Active', $assigned_user = '', $private = '', $module = false)
{
    $log = vglobal('log');
    $log->debug('Entering get_user_array(' . $add_blank . ',' . $status . ',' . $assigned_user . ',' . $private . ') method ...');
    $current_user = vglobal('current_user');
    if (isset($current_user) && $current_user->id != '') {
        require 'user_privileges/sharing_privileges_' . $current_user->id . '.php';
        require 'user_privileges/user_privileges_' . $current_user->id . '.php';
    }
    static $user_array = null;
    if (!$module) {
        $module = $_REQUEST['module'];
    }
    if ($user_array == null) {
        require_once 'include/database/PearDatabase.php';
        $db = PearDatabase::getInstance();
        $temp_result = array();
        // Including deleted vtiger_users for now.
        if (empty($status)) {
            $query = 'SELECT id, user_name, is_admin from vtiger_users';
            $params = array();
        } else {
            if ($private == 'private') {
                $log->debug('Sharing is Private. Only the current user should be listed');
                $query = "select id as id,user_name as user_name,first_name,last_name,is_admin from vtiger_users where id=? and status='Active' union select vtiger_user2role.userid as id,vtiger_users.user_name as user_name ,\n\t\t\t\t\t\t\t  vtiger_users.first_name as first_name ,vtiger_users.last_name as last_name, is_admin \n\t\t\t\t\t\t\t  from vtiger_user2role inner join vtiger_users on vtiger_users.id=vtiger_user2role.userid inner join vtiger_role on vtiger_role.roleid=vtiger_user2role.roleid where vtiger_role.parentrole like ? and status='Active' union\n\t\t\t\t\t\t\t  select shareduserid as id,vtiger_users.user_name as user_name ,\n\t\t\t\t\t\t\t  vtiger_users.first_name as first_name ,vtiger_users.last_name as last_name, is_admin from vtiger_tmp_write_user_sharing_per inner join vtiger_users on vtiger_users.id=vtiger_tmp_write_user_sharing_per.shareduserid where status='Active' and vtiger_tmp_write_user_sharing_per.userid=? and vtiger_tmp_write_user_sharing_per.tabid=?";
                $params = array($current_user->id, $current_user_parent_role_seq . "::%", $current_user->id, getTabid($module));
            } else {
                $log->debug('Sharing is Public. All vtiger_users should be listed');
                $query = 'SELECT id, user_name,first_name,last_name,is_admin from vtiger_users WHERE status=?';
                $params = array($status);
            }
        }
        if (!empty($assigned_user)) {
            $query .= ' OR id=?';
            array_push($params, $assigned_user);
        }
        $query .= ' ORDER BY last_name ASC, first_name ASC';
        $result = $db->pquery($query, $params, true, 'Error filling in user array: ');
        if ($add_blank == true) {
            // Add in a blank row
            $temp_result[''] = '';
        }
        // Get the id and the name.
        while ($row = $db->fetchByAssoc($result)) {
            if ($current_user->is_admin == 'on' || !(!AppConfig::performance('SHOW_ADMINISTRATORS_IN_USERS_LIST') && $row['is_admin'] == 'on')) {
                $temp_result[$row['id']] = getFullNameFromArray('Users', $row);
            }
        }
        $user_array =& $temp_result;
    }
    $log->debug('Exiting get_user_array method ...');
    return $user_array;
}
 public function initializeListViewContents(Vtiger_Request $request, Vtiger_Viewer $viewer)
 {
     $moduleName = $this->getModule($request);
     $cvId = $request->get('cvid');
     $pageNumber = $request->get('page');
     $orderBy = $request->get('orderby');
     $sortOrder = $request->get('sortorder');
     $sourceModule = $request->get('src_module');
     $sourceField = $request->get('src_field');
     $sourceRecord = $request->get('src_record');
     $searchKey = $request->get('search_key');
     $searchValue = $request->get('search_value');
     $currencyId = $request->get('currency_id');
     $selectedFields = $request->get('selectedFields');
     if (!empty($selectedFields)) {
         foreach ($selectedFields as $key => $value) {
             $selectFields[$value] = $value;
         }
     }
     $view = $request->get('view');
     //To handle special operation when selecting record from Popup
     $getUrl = $request->get('get_url');
     //Enable multiselect mode for email related popup
     $multiSelectMode = true;
     if (empty($cvId)) {
         $cvId = '0';
     }
     if (empty($pageNumber)) {
         $pageNumber = '1';
     }
     $pagingModel = new Vtiger_Paging_Model();
     $pagingModel->set('page', $pageNumber);
     $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
     $listViewModel = Vtiger_ListView_Model::getInstanceForPopup($moduleName);
     $recordStructureInstance = Vtiger_RecordStructure_Model::getInstanceForModule($moduleModel);
     $primaryEmailFieldName = 'email';
     if ($moduleName == 'Accounts' || $moduleName == 'Users') {
         $primaryEmailFieldName = 'email1';
     }
     $listViewModel->extendPopupFields(array($primaryEmailFieldName => $primaryEmailFieldName));
     if (!empty($orderBy)) {
         $listViewModel->set('orderby', $orderBy);
         $listViewModel->set('sortorder', $sortOrder);
     }
     if (!empty($sourceModule)) {
         $listViewModel->set('src_module', $sourceModule);
         $listViewModel->set('src_field', $sourceField);
         $listViewModel->set('src_record', $sourceRecord);
     }
     if (!empty($searchKey) && !empty($searchValue)) {
         $listViewModel->set('search_key', $searchKey);
         $listViewModel->set('search_value', $searchValue);
     }
     if (!$this->listViewHeaders) {
         $this->listViewHeaders = $listViewModel->getListViewHeaders();
     }
     if (!$this->listViewEntries) {
         $this->listViewEntries = $listViewModel->getListViewEntries($pagingModel);
     }
     $noOfEntries = count($this->listViewEntries);
     if (empty($sortOrder)) {
         $sortOrder = "ASC";
     }
     if ($sortOrder == "ASC") {
         $nextSortOrder = "DESC";
         $sortImage = "downArrowSmall.png";
     } else {
         $nextSortOrder = "ASC";
         $sortImage = "upArrowSmall.png";
     }
     $viewer->assign('MODULE', $moduleName);
     $viewer->assign('SELECT_FIELDS', $selectFields);
     $viewer->assign('SOURCE_MODULE', $sourceModule);
     $viewer->assign('SOURCE_FIELD', $sourceField);
     $viewer->assign('SOURCE_RECORD', $sourceRecord);
     $viewer->assign('VIEW', $view);
     $viewer->assign('SEARCH_KEY', $searchKey);
     $viewer->assign('SEARCH_VALUE', $searchValue);
     $viewer->assign('ORDER_BY', $orderBy);
     $viewer->assign('SORT_ORDER', $sortOrder);
     $viewer->assign('NEXT_SORT_ORDER', $nextSortOrder);
     $viewer->assign('SORT_IMAGE', $sortImage);
     $viewer->assign('GETURL', $getUrl);
     $viewer->assign('CURRENCY_ID', $currencyId);
     $viewer->assign('RECORD_STRUCTURE_MODEL', $recordStructureInstance);
     $viewer->assign('RECORD_STRUCTURE', $recordStructureInstance->getStructure());
     $viewer->assign('PAGING_MODEL', $pagingModel);
     $viewer->assign('PAGE_NUMBER', $pageNumber);
     $viewer->assign('LISTVIEW_ENTRIES_COUNT', $noOfEntries);
     $viewer->assign('LISTVIEW_HEADERS', $this->listViewHeaders);
     $viewer->assign('LISTVIEW_ENTRIES', $this->listViewEntries);
     if (AppConfig::performance('LISTVIEW_COMPUTE_PAGE_COUNT')) {
         if (!$this->listViewCount) {
             $this->listViewCount = $listViewModel->getListViewCount();
         }
         $totalCount = $this->listViewCount;
         $pageLimit = $pagingModel->getPageLimit();
         $pageCount = ceil((int) $totalCount / (int) $pageLimit);
         if ($pageCount == 0) {
             $pageCount = 1;
         }
         $viewer->assign('PAGE_COUNT', $pageCount);
         $viewer->assign('LISTVIEW_COUNT', $totalCount);
     }
     $viewer->assign('MULTI_SELECT', $multiSelectMode);
     $viewer->assign('PRIMARY_EMAIL_FIELD_NAME', $primaryEmailFieldName);
     $viewer->assign('CURRENT_USER_MODEL', Users_Record_Model::getCurrentUserModel());
 }
Example #17
0
 public function logSqlTime($startat, $endat, $sql, $params = false)
 {
     if (!AppConfig::performance('SQL_LOG_INCLUDE_CALLER')) {
         return;
     }
     $db = PearDatabase::getInstance('log');
     $now = date('Y-m-d H:i:s');
     $logTable = 'l_yf_sqltime';
     $logQuery = 'INSERT INTO ' . $logTable . '(id, type, qtime, data, date) VALUES (?,?,?,?,?)';
     if ($this->logSqlTimeID === false) {
         $stmt = $db->database->query('SELECT MAX(id) FROM ' . $logTable);
         $this->logSqlTimeID = (int) $this->getSingleValue($stmt) + 1;
         $type = PHP_SAPI;
         $data = '';
         if (isset($_SERVER['REQUEST_METHOD'])) {
             $uri = $_SERVER['REQUEST_URI'];
             $qmarkIndex = strpos($_SERVER['REQUEST_URI'], '?');
             if ($qmarkIndex !== false) {
                 $uri = substr($uri, 0, $qmarkIndex);
             }
             $data = $uri . '?' . http_build_query($_SERVER['REQUEST_METHOD'] == 'GET' ? $_GET : $_POST);
         }
         $stmt = $db->database->prepare($logQuery);
         $stmt->execute([$this->logSqlTimeID, $type, NULL, $data, $now]);
     }
     $type = 'SQL';
     $data = trim($sql);
     if (is_array($params) && !empty($params)) {
         $data .= '[' . implode(',', $params) . ']';
     }
     $qtime = round(($endat - $startat) * 1000) / 1000;
     $stmt = $db->database->prepare($logQuery);
     $stmt->execute([$this->logSqlTimeID, $type, $qtime, $data, $now]);
     $type = 'CALLERS';
     $data = [];
     $callers = debug_backtrace();
     for ($calleridx = 0, $callerscount = count($callers); $calleridx < $callerscount; ++$calleridx) {
         if ($calleridx == 0) {
             continue;
         }
         if ($calleridx < $callerscount) {
             $callerfunc = $callers[$calleridx + 1]['function'];
             if (!empty($callerfunc)) {
                 $callerfunc = " ({$callerfunc}) ";
             }
         }
         $data[] = 'CALLER: (' . $callers[$calleridx]['line'] . ') ' . $callers[$calleridx]['file'] . $callerfunc;
     }
     $stmt = $db->database->prepare($logQuery);
     $stmt->execute([$this->logSqlTimeID, $type, NULL, implode('\\n', $data), $now]);
 }
Example #18
0
 /**
  * Function returns related records based on related moduleName
  * @param Vtiger_Request $request
  * @return <type>
  */
 function showRelatedRecords(Vtiger_Request $request)
 {
     $parentId = $request->get('record');
     $pageNumber = $request->get('page');
     $limit = $request->get('limit');
     $whereCondition = $request->get('whereCondition');
     $relatedModuleName = $request->get('relatedModule');
     $orderBy = $request->get('orderby');
     $sortOrder = $request->get('sortorder');
     $moduleName = $request->getModule();
     if (empty($pageNumber)) {
         $pageNumber = 1;
     }
     $pagingModel = new Vtiger_Paging_Model();
     $pagingModel->set('page', $pageNumber);
     if (!empty($limit)) {
         $pagingModel->set('limit', $limit);
     } else {
         $pagingModel->set('limit', 10);
     }
     if ($sortOrder == 'ASC') {
         $nextSortOrder = 'DESC';
         $sortImage = 'glyphicon glyphicon-chevron-down';
     } else {
         $nextSortOrder = 'ASC';
         $sortImage = 'glyphicon glyphicon-chevron-up';
     }
     if (empty($orderBy) && empty($sortOrder)) {
         if (is_numeric($relatedModuleName)) {
             $relatedModuleName = Vtiger_Functions::getModuleName($relatedModuleName);
         }
         $relatedInstance = CRMEntity::getInstance($relatedModuleName);
         $orderBy = $relatedInstance->default_order_by;
         $sortOrder = $relatedInstance->default_sort_order;
     }
     $parentRecordModel = Vtiger_Record_Model::getInstanceById($parentId, $moduleName);
     $relationListView = Vtiger_RelationListView_Model::getInstance($parentRecordModel, $relatedModuleName);
     if (!empty($whereCondition)) {
         $relationListView->set('whereCondition', $whereCondition);
     }
     if (!empty($orderBy)) {
         $relationListView->set('orderby', $orderBy);
         $relationListView->set('sortorder', $sortOrder);
     }
     $models = $relationListView->getEntries($pagingModel);
     $links = $relationListView->getLinks();
     $header = $relationListView->getHeaders();
     $relationModel = $relationListView->getRelationModel();
     $relatedModuleModel = $relationModel->getRelationModuleModel();
     $relationField = $relationModel->getRelationField();
     $noOfEntries = count($models);
     if ($relationModel->isFavorites() && Users_Privileges_Model::isPermitted($moduleName, 'FavoriteRecords')) {
         $favorites = $relationListView->getFavoriteRecords();
         $favorites = array_intersect_key($models, $favorites);
         if (!empty($favorites)) {
             $models = $favorites;
         }
     }
     $viewer = $this->getViewer($request);
     $viewer->assign('MODULE', $moduleName);
     $viewer->assign('COLUMNS', $request->get('col'));
     $viewer->assign('LIMIT', $request->get('limit'));
     $viewer->assign('RELATED_RECORDS', $models);
     $viewer->assign('RELATED_HEADERS', $header);
     $viewer->assign('RELATED_MODULE', $relatedModuleModel);
     $viewer->assign('RELATED_MODULE_NAME', $relatedModuleName);
     $viewer->assign('PAGING_MODEL', $pagingModel);
     $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel());
     $viewer->assign('PARENT_RECORD', $parentRecordModel);
     $viewer->assign('RELATED_LIST_LINKS', $links);
     $viewer->assign('RELATED_ENTIRES_COUNT', $noOfEntries);
     $viewer->assign('RELATION_FIELD', $relationField);
     if (AppConfig::performance('LISTVIEW_COMPUTE_PAGE_COUNT')) {
         $totalCount = $relationListView->getRelatedEntriesCount();
         $pageLimit = $pagingModel->getPageLimit();
         $pageCount = ceil((int) $totalCount / (int) $pageLimit);
         if ($pageCount == 0) {
             $pageCount = 1;
         }
         $viewer->assign('PAGE_COUNT', $pageCount);
         $viewer->assign('TOTAL_ENTRIES', $totalCount);
         $viewer->assign('PERFORMANCE', true);
     }
     $viewer->assign('PAGING', $pagingModel);
     $viewer->assign('ORDER_BY', $orderBy);
     $viewer->assign('SORT_ORDER', $sortOrder);
     $viewer->assign('NEXT_SORT_ORDER', $nextSortOrder);
     $viewer->assign('SORT_IMAGE', $sortImage);
     $viewer->assign('COLUMN_NAME', $orderBy);
     $viewer->assign('IS_EDITABLE', $relationModel->isEditable());
     $viewer->assign('IS_DELETABLE', $relationModel->isDeletable());
     $viewer->assign('SHOW_CREATOR_DETAIL', $relationModel->showCreatorDetail());
     $viewer->assign('SHOW_COMMENT', $relationModel->showComment());
     return $viewer->view('SummaryWidgets.tpl', $moduleName, 'true');
 }
Example #19
0
 /**
  * Function used to get the order by value for Documents listview
  * @return String order by column for a given folder.
  */
 function getOrderByForFolder($folderId)
 {
     $use_default_order_by = '';
     if (AppConfig::performance('LISTVIEW_DEFAULT_SORTING', true)) {
         $use_default_order_by = $this->default_order_by;
     }
     if (isset($_REQUEST['order_by']) && $_REQUEST['folderid'] == $folderId) {
         $order_by = $this->db->sql_escape_string($_REQUEST['order_by']);
     } elseif (is_array($_SESSION['NOTES_FOLDER_ORDER_BY']) && !empty($_SESSION['NOTES_FOLDER_ORDER_BY'][$folderId])) {
         $order_by = $_SESSION['NOTES_FOLDER_ORDER_BY'][$folderId];
     } else {
         $order_by = $use_default_order_by;
     }
     return $order_by;
 }