public static function modifySqlWhereForAsolDomainsQuery(&$sqlWhere, $domainReportTable, $current_user, $schedulerCall, $asolReportDomainId, $domainField = null, $aliasSuffix = '') { global $db; if (!empty($asolReportDomainId) || $schedulerCall) { require_once "modules/asol_Domains/AlineaSolDomainsFunctions.php"; $domainsBean = BeanFactory::getBean('asol_Domains', $asolReportDomainId); if ($domainsBean->asol_domain_enabled) { if ($domainField !== null) { if ($domainField != "") { $externalIdUsage = isset($domainField["externalIdUsage"]) && $domainField["externalIdUsage"]; $domainFieldName = $domainField["fieldName"]; $domainIsNumeric = $externalIdUsage ? false : $domainField["isNumeric"]; $domainShowUpperLevels = isset($domainField["showUpperLevels"]) ? $domainField["showUpperLevels"] : false; $asolReportDomainValue = $externalIdUsage ? $domainsBean->external_id : $asolReportDomainId; if (isset($domainField["domainRelation"])) { $domainReportTable = $domainField["domainRelation"]["relatedTable"]; } $domainFieldChar = $domainIsNumeric ? "" : "'"; $sqlWhere .= (empty($sqlWhere) ? " WHERE " : " AND ") . " ( (" . $domainReportTable . $aliasSuffix . "." . $domainFieldName . "=" . $domainFieldChar . $asolReportDomainValue . $domainFieldChar . ") "; //***asol_child_domains***// $childDomainsIds = asol_manageDomains::getChildDomainsArray($asolReportDomainId); $childDomainsStr = array(); foreach ($childDomainsIds as $key => $domainId) { if (!$domainId['enabled']) { array_splice($childDomainsIds, $key, 1); } else { $childDomainsStr[] = $externalIdUsage ? $domainId['external_id'] : $domainId['id']; } } $sqlWhere .= count($childDomainsIds) > 0 ? "OR (" . $domainReportTable . $aliasSuffix . "." . $domainFieldName . " IN (" . $domainFieldChar . implode($domainFieldChar . "," . $domainFieldChar, $childDomainsStr) . $domainFieldChar . ")) " : " "; //***asol_child_domains***// //***asol_parent_domains***// if ($domainShowUpperLevels) { $parentDomainIds = asol_manageDomains::getParentDomainsIds($asolReportDomainId); if (!empty($parentDomainIds)) { $sqlWhere .= "OR (" . $domainReportTable . $aliasSuffix . "." . $domainFieldName . " IN (" . $domainFieldChar . implode($domainFieldChar . "," . $domainFieldChar, $parentDomainIds) . $domainFieldChar . ")) "; } } //***asol_parent_domains***// $sqlWhere .= ") "; } } else { $sqlWhere .= " AND ( (" . $domainReportTable . $aliasSuffix . ".asol_domain_id='" . $asolReportDomainId . "')"; if ($current_user->asol_only_my_domain == 0 || $schedulerCall) { //***asol_domain_child_share_depth***// $sqlWhere .= asol_manageDomains::getChildShareDepthQuery($domainReportTable . $aliasSuffix . '.', $asolReportDomainId); //***asol_domain_child_share_depth***// //***asol_multi_create_domain***// if ($domainReportTable != 'users') { $sqlWhere .= asol_manageDomains::getMultiCreateQuery($domainReportTable . $aliasSuffix . '.', $asolReportDomainId); } //***asol_multi_create_domain***// //***asol_publish_to_all***// $sqlWhere .= asol_manageDomains::getPublishToAllQuery($domainReportTable . $aliasSuffix . '.', $asolReportDomainId); //***asol_publish_to_all***// //***asol_child_domains***// $sqlWhere .= asol_manageDomains::getChildHierarchyQuery($domainReportTable . $aliasSuffix . '.', $asolReportDomainId); //***asol_child_domains***// } else { $sqlWhere .= ") "; } } } else { $sqlWhere .= " AND (1!=1) "; } } }
public static function getFilteredReportList($sDatabase = '-1', $sModule = '', $sScope = '', $sName = '') { global $db, $current_user; $sqlAllowedModules = ""; $allowedModules = asol_ReportsUtils::getCurrentUserAvailableModules(false); foreach ($allowedModules as $key => $isAllowed) { if ($isAllowed) { $sqlAllowedModules .= "'" . $key . "',"; } } $sqlAllowedModules = substr($sqlAllowedModules, 0, -1) . ",''"; //***********************// //***AlineaSol Premium***// //***********************// $extraParams = array('report_database' => $sDatabase); $sqlExternalModules = asol_ReportsUtils::managePremiumFeature("externalDatabasesReports", "reportFunctions.php", "getExternalDatabasesExtendedWhereQuery", $extraParams); $sqlExternalModules = !$sqlExternalModules ? " )" : $sqlExternalModules; //***********************// //***AlineaSol Premium***// //***********************// if ($sDatabase != '-1') { $sModule = ''; $sqlAllowedModules = '\'\''; } $sqlReport = "SELECT id, name FROM asol_reports WHERE deleted=0"; $sqlReport .= !empty($sName) ? " AND name LIKE '%" . $sName . "%'" : ""; $sqlReport .= !empty($sModule) ? " AND report_module LIKE '%" . $sModule . "%'" : ""; //***********************// //***AlineaSol Premium***// //***********************// $wsReportQueryExt = asol_ReportsUtils::managePremiumFeature("webServiceReports", "reportFunctions.php", "getWebServiceReportQueryExt", null); //***********************// //***AlineaSol Premium***// //***********************// $sqlReport .= " AND ((asol_reports.report_module IN (" . $sqlAllowedModules . ")" . $wsReportQueryExt . ")"; $sqlReport .= $sqlExternalModules; $sqlReport .= !empty($sScope) ? " AND report_scope LIKE '%" . $sScope . "%'" : ""; if (!$current_user->is_admin) { $idsRoles = array(); $queryUserRoles = $db->query("SELECT DISTINCT role_id FROM acl_roles_users WHERE user_id='" . $current_user->id . "' AND deleted=0"); while ($queryRow = $db->fetchByAssoc($queryUserRoles)) { $idsRoles[] = $queryRow['role_id']; } $sqlReport .= " AND (report_scope = 'public' OR asol_reports.assigned_user_id = '" . $current_user->id . "' OR asol_reports.created_by = '" . $current_user->id . "'"; $sqlWhereRoles = " OR ("; foreach ($idsRoles as $idRole) { $sqlWhereRoles .= " report_scope LIKE '%" . $idRole . "%' OR"; } $sqlWhereRoles = substr($sqlWhereRoles, 0, -2) . ")"; if (empty($idsRoles)) { $sqlWhereRoles = ""; } $sqlReport .= $sqlWhereRoles . " )"; } //**************************// //***Is Domains Installed***// //**************************// if (asol_ReportsUtils::isDomainsInstalled()) { if (!$current_user->is_admin || $current_user->is_admin && !empty($current_user->asol_default_domain)) { $domainsBean = BeanFactory::getBean('asol_Domains', $current_user->asol_default_domain); if ($domainsBean->asol_domain_enabled) { $sqlReport .= " AND ( (asol_reports.asol_domain_id='" . $current_user->asol_default_domain . "')"; if ($current_user->asol_only_my_domain == 0) { //asol_domain_child_share_depth $sqlReport .= asol_manageDomains::getChildShareDepthQuery('asol_reports.'); //asol_domain_child_share_depth //asol_multi_create_domain $sqlReport .= asol_manageDomains::getMultiCreateQuery('asol_reports.'); //asol_multi_create_domain //***asol_publish_to_all***// $sqlReport .= asol_manageDomains::getPublishToAllQuery('asol_reports.'); //***asol_publish_to_all***// } $sqlReport .= ") "; } else { $sqlReport .= " AND (1!=1) "; } } } //**************************// //***Is Domains Installed***// //**************************// $sqlReport .= " ORDER BY date_entered ASC"; $reportsArray = array(); $queryReport = $db->query($sqlReport); while ($queryRow = $db->fetchByAssoc($queryReport)) { $reportsArray[] = $queryRow; } foreach ($reportsArray as $value) { $reportList[$value['id']] = $value['name']; } return $reportList; }
} //**************************// //***Is Domains Installed***// //**************************// if (asol_ReportsUtils::isDomainsInstalled()) { if (!$current_user->is_admin || $current_user->is_admin && !empty($current_user->asol_default_domain)) { require_once "modules/asol_Domains/AlineaSolDomainsFunctions.php"; $domainsBean = BeanFactory::getBean('asol_Domains', $current_user->asol_default_domain); if ($domainsBean->asol_domain_enabled) { $sqlWhere .= " AND ( (asol_reports.asol_domain_id='" . $current_user->asol_default_domain . "')"; if ($current_user->asol_only_my_domain == 0) { //asol_domain_child_share_depth $sqlWhere .= asol_manageDomains::getChildShareDepthQuery('asol_reports.'); //asol_domain_child_share_depth //asol_multi_create_domain $sqlWhere .= asol_manageDomains::getMultiCreateQuery('asol_reports.'); //asol_multi_create_domain //***asol_publish_to_all***// $sqlWhere .= asol_manageDomains::getPublishToAllQuery('asol_reports.'); //***asol_publish_to_all***// //***asol_child_domains***// $sqlWhere .= asol_manageDomains::getChildHierarchyQuery('asol_reports.'); //***asol_child_domains***// } else { $sqlWhere .= ") "; } } else { $sqlWhere .= " AND (1!=1) "; } } }