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);
 }
示例#2
0
    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();
        
    }
示例#3
0
//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;
//***********************//