public static function manageReportDomain($reportId, $userDomainId, $reportDomainId) { global $db; require_once "modules/asol_Domains/AlineaSolDomainsFunctions.php"; $domainReportQuery = $db->query("SELECT * FROM asol_reports WHERE id='" . $reportId . "' LIMIT 1"); $domainReportRow = $db->fetchByAssoc($domainReportQuery); $reportDomainIsPublished = $domainReportRow['asol_published_domain'] == '1' ? true : false; $reportDomainPublishedMode = $domainReportRow['asol_domain_published_mode']; $reportDomainPublishedLevels = $domainReportRow['asol_domain_child_share_depth'] === ';;' ? array() : explode(';;', substr($domainReportRow['asol_domain_child_share_depth'], 1, -1)); $reportDomainPublishedDomains = $domainReportRow['asol_multi_create_domain'] === ';;' ? array() : explode(';;', substr($domainReportRow['asol_multi_create_domain'], 1, -1)); $isPublished = $domainPublishingInfo; $domainPublishingInfo = array('domains' => $reportDomainPublishedDomains, 'levels' => $reportDomainPublishedLevels, 'mode' => $reportDomainPublishedMode, 'mainDomain' => $reportDomainId, 'isPublished' => $reportDomainIsPublished); $reportPublishedDomains = asol_manageDomains::getDomainsPublished($domainPublishingInfo); $reportParentDomains = asol_manageDomains::getParentDomainsIds($reportDomainId, true); return in_array($userDomainId, array_merge($reportPublishedDomains, $reportParentDomains)); }
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) "; } } }