public static function getCrmTableRelatedFields($reportModule, $bean, $fieldsToBeRemoved, $translateFieldLabels, &$relateField, $mainRelatedKey) { global $current_user, $app_list_strings; $primaryKey = "id"; $rsFields = self::getModuleResultSetFields($reportModule, $bean->table_name, $relateField, $fieldsToBeRemoved); $allowedModules = asol_ReportsUtils::getCurrentUserAvailableModules(false); $value = $rsFields[0]; $keys = array(); $fields_relationship = array(); $fields_relationship_labels = array(); $fields = array(); $fields_labels = array(); $fields_type = array(); $fields_enum_operators = array(); $fields_enum_references = array(); $has_index = array(); $has_related = array(); $explodedField = explode(".", $value['Field']); $currentField = count($explodedField) == 2 ? $explodedField[1] : $value['Field']; $fieldInfo = asol_Report::getFieldInfoFromVardefs($reportModule, $currentField); if ($currentField == $primaryKey) { // CRM RelationShips $k = $j = 0; $rshr = self::getModuleRelationShips($reportModule, $currentField); if (count($rshr) > 0) { while ($j < count($rshr)) { $relatedModule = $rshr[$j]['lhs_module']; if (isset($allowedModules[$relatedModule]) && $allowedModules[$relatedModule] || $current_user->is_admin) { $relatedObject = BeanFactory::newBean($relatedModule); $relatedTable = $rshr[$j]['lhs_table']; $rsrf = self::getModuleResultSetFields($relatedModule, $relatedTable, null, $fieldsToBeRemoved); foreach ($rsrf as $val) { $explodedRelatedField = explode(".", $val['Field']); $currentRelatedField = count($explodedRelatedField) == 2 ? $explodedRelatedField[1] : $val['Field']; $fieldInfo = asol_Report::getFieldInfoFromVardefs($rshr[$j]['lhs_module'], $currentRelatedField); $fields[$k] = count(explode(".", $val['Field'])) == 1 ? $relatedTable . "." . $val['Field'] : $val['Field']; $fields_labels[$k] = $translateFieldLabels ? self::getTranslatedRelatedField($relatedModule, $relatedTable, $currentRelatedField, $fieldInfo['fieldLabel']) : $fields[$k]; $fields_relationship[$k] = $rshr[$j]['relationship_name']; $fields_relationship_labels[$k] = $translateFieldLabels ? asol_Report::getRelationShipLabelFromVardefs($rshr[$j]['main_module'], $fields_relationship[$k]) : $fields_relationship[$k]; $fields_enum_operators[$k] = $fieldInfo['enumOperator']; $fields_enum_references[$k] = $fieldInfo['enumReference']; $fields_type[$k] = self::getFieldType($val['Type'], $fieldInfo['values'], $fieldInfo['fieldType']); $info = asol_Report::getReportsRelatedFields($relatedObject, $currentRelatedField); $infoIdName = !empty($info['id_name']) ? $info['id_name'] : ""; if ($currentRelatedField == $primaryKey) { $rsrhr = self::getModuleRelationShips($relatedModule, $val['Field']); $has_related[$k] = count($rsrhr) > 0 || $val['Type'] == "relate" ? "true" : "false"; } else { if ($infoIdName == $currentRelatedField) { $fields_type[$k] = "relate"; $has_related[$k] = isset($allowedModules[$info['module']]) && $allowedModules[$info['module']] || $current_user->is_admin ? "true" : "false"; } else { $has_related[$k] = "false"; } } $has_index[$k] = false; $keys[$k] = $primaryKey . " " . $fields_relationship[$k]; $keys[$k] = !empty($mainRelatedKey) ? $mainRelatedKey . ';' . $keys[$k] : $keys[$k]; $k++; } } $j++; } $relateField = $keys; } else { $relatedTable = BeanFactory::newBean(BeanFactory::getObjectName($value['RelateModule']))->table_name; $relatedTable = empty($relatedTable) ? strtolower($value['RelateModule']) : $relatedTable; $rsrf = self::getModuleResultSetFields($value['RelateModule'], $relatedTable, null, $fieldsToBeRemoved); foreach ($rsrf as $val) { $fields[$k] = $relatedTable . "." . $val['Field']; $fields_labels[$k] = $relatedTable . "." . $val['Field']; $fieldInfo = asol_Report::getFieldInfoFromVardefs($value['RelateModule'], $val['Field']); $fields_enum_operators[$k] = $fieldInfo['enumOperator']; $fields_enum_references[$k] = $fieldInfo['enumReference']; $fields_type[$k] = self::getFieldType($val['Type'], $fieldInfo['values'], $fieldInfo['fieldType']); $has_related[$k] = "false"; $has_index[$k] = false; $k++; } $j++; } } else { // CRM Relate Fields //***********************// //***AlineaSol Premium***// //***********************// $extraParams = array('database' => '-1', 'restricted' => true); $definedAvailableRelates = asol_ReportsUtils::managePremiumFeature("reportRelatesManagement", "reportFunctions.php", "getReportDefinedAvailableRelates", $extraParams); $isVirtualLink = $definedAvailableRelates !== false ? isset($definedAvailableRelates[$reportModule][$currentField]) ? true : false : false; //***********************// //***AlineaSol Premium***// //***********************// if ($isVirtualLink) { $relatedModule = $definedAvailableRelates[$reportModule][$currentField]['relationModule']; } else { $relatedInfo = asol_Report::getReportsRelatedFields($bean, $currentField); $relatedModule = $relatedInfo['module']; } if (isset($allowedModules[$relatedModule]) && $allowedModules[$relatedModule] || $current_user->is_admin) { $relatedObject = BeanFactory::newBean($relatedModule); $relatedTable = is_object($relatedObject) ? $relatedObject->table_name : strtolower($relatedModule); $relateField = !empty($mainRelatedKey) ? $mainRelatedKey . ';' . $relateField : $relateField; $rsrf = self::getModuleResultSetFields($relatedModule, $relatedTable, null, $fieldsToBeRemoved); $k = 0; foreach ($rsrf as $val) { $explodedRelatedField = explode(".", $val['Field']); $currentRelatedField = count($explodedRelatedField) == 2 ? $explodedRelatedField[1] : $val['Field']; $fieldInfo = asol_Report::getFieldInfoFromVardefs($relatedModule, $currentRelatedField); $fields[$k] = count(explode(".", $val['Field'])) == 1 ? $relatedTable . "." . $val['Field'] : $val['Field']; $fields_labels[$k] = $translateFieldLabels ? self::getTranslatedRelatedField($relatedModule, $relatedTable, $currentRelatedField, $fieldInfo['fieldLabel']) : $fields[$k]; $fields_relationship[$k] = $relatedModule; $fields_relationship_labels[$k] = !empty($app_list_strings['moduleList'][$relatedModule]) ? $app_list_strings['moduleList'][$relatedModule] : $relatedTable; $fields_enum_operators[$k] = $fieldInfo['enumOperator']; $fields_enum_references[$k] = $fieldInfo['enumReference']; $fields_type[$k] = self::getFieldType($val['Type'], $fieldInfo['values'], $fieldInfo['fieldType']); $info = asol_Report::getReportsRelatedFields($relatedObject, $currentRelatedField); $infoIdName = !empty($info['id_name']) ? $info['id_name'] : ""; if ($currentRelatedField == $primaryKey) { $rsrhr = self::getModuleRelationShips($relatedModule, $val['Field']); $has_related[$k] = count($rsrhr) > 0 || $val['Type'] == "relate" ? "true" : "false"; } else { //***********************// //***AlineaSol Premium***// //***********************// $isVirtualLink = $definedAvailableRelates !== false ? isset($definedAvailableRelates[$relatedModule][$currentRelatedField]) ? true : false : false; //***********************// //***AlineaSol Premium***// //***********************// if ($infoIdName == $currentRelatedField || $isVirtualLink) { $fields_type[$k] = "relate"; $has_related[$k] = isset($allowedModules[$info['module']]) && $allowedModules[$info['module']] || $current_user->is_admin ? "true" : "false"; } else { $has_related[$k] = "false"; } } $has_index[$k] = false; $k++; } } } return array('fields' => $fields, 'fields_labels' => $fields_labels, 'fields_relationship' => $fields_relationship, 'fields_relationship_labels' => $fields_relationship_labels, 'fields_type' => $fields_type, 'fields_enum_operators' => $fields_enum_operators, 'fields_enum_references' => $fields_enum_references, 'has_index' => $has_index, 'has_related' => $has_related); }
public function displayOptions() { require_once('modules/asol_Reports/include_basic/reportsUtils.php'); global $app_list_strings, $sugar_config, $current_user, $db, $current_language, $dashletStrings; $module = array(); $this->chartDefName = $this->which_chart[0]; if (!empty($this->chartDefs[$this->chartDefName]['searchFields'])) foreach ($this->chartDefs[$this->chartDefName]['searchFields'] as $key => $value) $this->_searchFields[$key] = $value; $this->_searchFields['which_chart']['vname'] = $dashletStrings['ReportChartDashlet']['LBL_WHICH_CHART'].":"; $sDatabase = (isset($_REQUEST['sDatabase'])) ? $_REQUEST['sDatabase'] : "-1"; $sModule = (isset($_REQUEST['sModule'])) ? $_REQUEST['sModule'] : ""; $sScope = (isset($_REQUEST['sScope'])) ? $_REQUEST['sScope'] : ""; $sName = (isset($_REQUEST['sName'])) ? $_REQUEST['sName'] : ""; //***********************// //***AlineaSol Premium***// //***********************// $alternativeDb = asol_ReportsUtils::managePremiumFeature("externalDatabasesReports", "reportFunctions.php", "fillExternalDatabasesArray", null); //***********************// //***AlineaSol Premium***// //***********************// $sqlModules = ""; $allowedModules = asol_ReportsUtils::getCurrentUserAvailableModules(false); foreach ($allowedModules as $key=>$isAllowed) { if ($isAllowed) { $module[$key] = (isset($app_list_strings['moduleList'][$key])) ? $app_list_strings['moduleList'][$key] : $key; } } asort($module); $modulesSelect = "<select id='sDatabase' name='sDatabase' style='max-width: 150px;' onChange='if (this.selectedIndex < 1) document.getElementById(\"sModule\").style.visibility = \"inherit\"; else document.getElementById(\"sModule\").style.visibility = \"hidden\";'>"; $modulesSelect .= "<option value='-1'>".translate('LBL_REPORT_NATIVE_DB', 'asol_Reports')."</option>"; foreach ($alternativeDb as $db_index=>$alternativeDb) $modulesSelect .= ($db_index == $sDatabase) ? "<option value='".$db_index."' selected>".$alternativeDb."</option>" : "<option value='".$db_index."'>".$alternativeDb."</option>"; $modulesSelect .= "</select>"; $modulesSelect .= ($sDatabase != "-1") ? "<select id='sModule' style='visibility: hidden'>" : "<select id='sModule' style='visibility: inherit'>"; $modulesSelect .= (empty($sModule)) ? "<option value='' selected></option>" : "<option value=''></option>"; foreach($module as $key=>$mod){ $modulesSelect .= ($sModule == $key) ? "<option value='".$key."' selected>".$mod."</option>" : "<option value='".$key."'>".$mod."</option>"; } $modulesSelect .= "</select>"; $scopesSelect = "<select id='sScope'>"; $scopesSelect .= (empty($sScope)) ? "<option value='' selected>".$dashletStrings['ReportChartDashlet']['LBL_REPORT_SCOPE_ALL']."</option>" : "<option value=''>".$dashletStrings['ReportChartDashlet']['LBL_REPORT_SCOPE_ALL']."</option>"; $scopesSelect .= ($sScope == "public") ? "<option value='public' selected>".$dashletStrings['ReportChartDashlet']['LBL_REPORT_SCOPE_PUBLIC']."</option>" : "<option value='public'>".$dashletStrings['ReportChartDashlet']['LBL_REPORT_SCOPE_PUBLIC']."</option>"; $scopesSelect .= ($sScope == "private") ? "<option value='private' selected>".$dashletStrings['ReportChartDashlet']['LBL_REPORT_SCOPE_PRIVATE']."</option>" : "<option value='private'>".$dashletStrings['ReportChartDashlet']['LBL_REPORT_SCOPE_PRIVATE']."</option>"; $scopesSelect .= ($sScope == "role") ? "<option value='role' selected>".$dashletStrings['ReportChartDashlet']['LBL_REPORT_SCOPE_ROLE']."</option>" : "<option value='role'>".$dashletStrings['ReportChartDashlet']['LBL_REPORT_SCOPE_ROLE']."</option>"; $scopesSelect .= "</select>"; $asolAddon = (asol_ReportsUtils::isDomainsInstalled() ? "<script type=\"text/javascript\" src=\"modules/asol_Reports/include_basic/js/jquery.js\"></script>" : ""); $asolAddon .= "<table width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" class=\"edit view\"><tbody> <tr> <td scope='row'>".$dashletStrings['ReportChartDashlet']['LBL_REPORT_NAME'].":</td> <td><input type='text' id='sName' value='".$sName."'/></td> </tr> <tr> <td scope='row'>".$dashletStrings['ReportChartDashlet']['LBL_REPORT_MODULE'].":</td> <td>".$modulesSelect."</td> </tr> <tr> <td scope='row'>".$dashletStrings['ReportChartDashlet']['LBL_REPORT_SCOPE'].":</td> <td>".$scopesSelect."</td> </tr> <tr> <td align='right' colspan='2'><input type='button' onClick='var sDatabase = document.getElementById(\"sDatabase\").value; var sModule = document.getElementById(\"sModule\").value; var sName = document.getElementById(\"sName\").value; var sScope = document.getElementById(\"sScope\").value; $(\"#dlg_mask\").remove(); SUGAR.mySugar.configureDashlet(\"".$this->id."&sDatabase=\"+sDatabase+\"&sModule=\"+sModule+\"&sName=\"+sName+\"&sScope=\"+sScope); return false;' value='".$dashletStrings['ReportChartDashlet']['LBL_REPORT_SEARCH']."'/></td> </tr> </tbody></table></div> "; return $asolAddon.parent::displayOptions(); }
//sino existe se crea $focusCfg = new AsolConfig(); $sqlCfg = "SELECT id, config FROM asol_config WHERE created_by = '" . $current_user->id . "'"; $rsCfg = asol_Report::getSelectionResults($sqlCfg, null, false); if (count($rsCfg) == 0) { $sqlCfgAux = "SELECT config FROM asol_config WHERE created_by = '1'"; $rsCfgAux = asol_Report::getSelectionResults($sqlCfgAux, null, false); $cfgAux = explode("|", $rsCfgAux[0]['config']); $db->query("INSERT IGNORE INTO `asol_config` (`id`, `name`, `date_entered`, `date_modified`, `modified_user_id`, `created_by`, `deleted`, `config`) VALUES ('" . create_guid() . "', '" . $current_user->name . "', '" . gmdate("Y-m-d H:i:s") . "', '" . gmdate("Y-m-d H:i:s") . "', '" . $current_user->id . "', '" . $current_user->id . "', 0, '" . $cfgAux[0] . "|15|landscape|" . $cfgAux[3] . "|120|" . $cfgAux[5] . "')"); $rsCfg = asol_Report::getSelectionResults($sqlCfg, null, false); } $cfg = explode("|", $rsCfg[0]['config']); $entriesPerPage = $cfg[1]; //Obtener los modulo a los que tiene acceso el usuario activo $sqlModules = ""; $allowedModules = asol_ReportsUtils::getCurrentUserAvailableModules(false); foreach ($allowedModules as $key => $isAllowed) { if ($isAllowed) { $module[$key] = isset($app_list_strings['moduleList'][$key]) ? $app_list_strings['moduleList'][$key] : $key; $sqlModules .= "'" . $key . "',"; } } asort($module); $sqlModules = substr($sqlModules, 0, -1) . ",''"; //***********************// //***AlineaSol Premium***// //***********************// $extraParams = array('report_database' => $report_database); $sqlExternalModules = asol_ReportsUtils::managePremiumFeature("externalDatabasesReports", "reportFunctions.php", "getExternalDatabasesExtendedWhereQuery", $extraParams); $sqlExternalModules = !$sqlExternalModules ? " )" : $sqlExternalModules; //***********************//