@@ 3917-3941 (lines=25) @@ | ||
3914 | * @param string $fields Default: id, pagetitle, description, parent, alias, menutitle |
|
3915 | * @return array |
|
3916 | */ |
|
3917 | public function getAllChildren($id = 0, $sort = 'menuindex', $dir = 'ASC', $fields = 'id, pagetitle, description, parent, alias, menutitle') |
|
3918 | { |
|
3919 | ||
3920 | $cacheKey = md5(print_r(func_get_args(), true)); |
|
3921 | if (isset($this->tmpCache[__FUNCTION__][$cacheKey])) { |
|
3922 | return $this->tmpCache[__FUNCTION__][$cacheKey]; |
|
3923 | } |
|
3924 | ||
3925 | $tblsc = $this->getFullTableName("site_content"); |
|
3926 | $tbldg = $this->getFullTableName("document_groups"); |
|
3927 | // modify field names to use sc. table reference |
|
3928 | $fields = 'sc.' . implode(',sc.', array_filter(array_map('trim', explode(',', $fields)))); |
|
3929 | $sort = 'sc.' . implode(',sc.', array_filter(array_map('trim', explode(',', $sort)))); |
|
3930 | // get document groups for current user |
|
3931 | if ($docgrp = $this->getUserDocGroups()) { |
|
3932 | $docgrp = implode(",", $docgrp); |
|
3933 | } |
|
3934 | // build query |
|
3935 | $access = ($this->isFrontend() ? "sc.privateweb=0" : "1='" . $_SESSION['mgrRole'] . "' OR sc.privatemgr=0") . (!$docgrp ? "" : " OR dg.document_group IN ($docgrp)"); |
|
3936 | $result = $this->getDatabase()->select("DISTINCT {$fields}", "{$tblsc} sc |
|
3937 | LEFT JOIN {$tbldg} dg on dg.document = sc.id", "sc.parent = '{$id}' AND ({$access}) GROUP BY sc.id", "{$sort} {$dir}"); |
|
3938 | $resourceArray = $this->getDatabase()->makeArray($result); |
|
3939 | $this->tmpCache[__FUNCTION__][$cacheKey] = $resourceArray; |
|
3940 | return $resourceArray; |
|
3941 | } |
|
3942 | ||
3943 | /** |
|
3944 | * Gets all active child documents of the specified document, i.e. those which published and not deleted. |
|
@@ 3954-3980 (lines=27) @@ | ||
3951 | * @param string $fields Default: id, pagetitle, description, parent, alias, menutitle |
|
3952 | * @return array |
|
3953 | */ |
|
3954 | public function getActiveChildren($id = 0, $sort = 'menuindex', $dir = 'ASC', $fields = 'id, pagetitle, description, parent, alias, menutitle') |
|
3955 | { |
|
3956 | $cacheKey = md5(print_r(func_get_args(), true)); |
|
3957 | if (isset($this->tmpCache[__FUNCTION__][$cacheKey])) { |
|
3958 | return $this->tmpCache[__FUNCTION__][$cacheKey]; |
|
3959 | } |
|
3960 | ||
3961 | $tblsc = $this->getFullTableName("site_content"); |
|
3962 | $tbldg = $this->getFullTableName("document_groups"); |
|
3963 | ||
3964 | // modify field names to use sc. table reference |
|
3965 | $fields = 'sc.' . implode(',sc.', array_filter(array_map('trim', explode(',', $fields)))); |
|
3966 | $sort = 'sc.' . implode(',sc.', array_filter(array_map('trim', explode(',', $sort)))); |
|
3967 | // get document groups for current user |
|
3968 | if ($docgrp = $this->getUserDocGroups()) { |
|
3969 | $docgrp = implode(",", $docgrp); |
|
3970 | } |
|
3971 | // build query |
|
3972 | $access = ($this->isFrontend() ? "sc.privateweb=0" : "1='" . $_SESSION['mgrRole'] . "' OR sc.privatemgr=0") . (!$docgrp ? "" : " OR dg.document_group IN ($docgrp)"); |
|
3973 | $result = $this->getDatabase()->select("DISTINCT {$fields}", "{$tblsc} sc |
|
3974 | LEFT JOIN {$tbldg} dg on dg.document = sc.id", "sc.parent = '{$id}' AND sc.published=1 AND sc.deleted=0 AND ({$access}) GROUP BY sc.id", "{$sort} {$dir}"); |
|
3975 | $resourceArray = $this->getDatabase()->makeArray($result); |
|
3976 | ||
3977 | $this->tmpCache[__FUNCTION__][$cacheKey] = $resourceArray; |
|
3978 | ||
3979 | return $resourceArray; |
|
3980 | } |
|
3981 | ||
3982 | /** |
|
3983 | * getDocumentChildren |