Code Duplication    Length = 31-32 lines in 2 locations

core/src/Core.php 2 locations

@@ 3488-3518 (lines=31) @@
3485
     * @param string $fields Default: id, pagetitle, description, parent, alias, menutitle
3486
     * @return array
3487
     */
3488
    public function getAllChildren(
3489
        $id = 0,
3490
        $sort = 'menuindex',
3491
        $dir = 'ASC',
3492
        $fields = 'id, pagetitle, description, parent, alias, menutitle'
3493
    ) {
3494
3495
        $cacheKey = md5(print_r(func_get_args(), true));
3496
        if (isset($this->tmpCache[__FUNCTION__][$cacheKey])) {
3497
            return $this->tmpCache[__FUNCTION__][$cacheKey];
3498
        }
3499
3500
        $tblsc = $this->getDatabase()->getFullTableName("site_content");
3501
        $tbldg = $this->getDatabase()->getFullTableName("document_groups");
3502
        // modify field names to use sc. table reference
3503
        $fields = 'sc.' . implode(',sc.', array_filter(array_map('trim', explode(',', $fields))));
3504
        $sort = 'sc.' . implode(',sc.', array_filter(array_map('trim', explode(',', $sort))));
3505
        // get document groups for current user
3506
        if ($docgrp = $this->getUserDocGroups()) {
3507
            $docgrp = implode(",", $docgrp);
3508
        }
3509
        // build query
3510
        $access = ($this->isFrontend() ? "sc.privateweb=0" : "1='" . $_SESSION['mgrRole'] . "' OR sc.privatemgr=0") . (!$docgrp ? "" : " OR dg.document_group IN ($docgrp)");
3511
        $result = $this->getDatabase()->select("DISTINCT {$fields}", "{$tblsc} sc
3512
                LEFT JOIN {$tbldg} dg on dg.document = sc.id", "sc.parent = '{$id}' AND ({$access}) GROUP BY sc.id",
3513
            "{$sort} {$dir}");
3514
        $resourceArray = $this->getDatabase()->makeArray($result);
3515
        $this->tmpCache[__FUNCTION__][$cacheKey] = $resourceArray;
3516
3517
        return $resourceArray;
3518
    }
3519
3520
    /**
3521
     * Gets all active child documents of the specified document, i.e. those which published and not deleted.
@@ 3531-3562 (lines=32) @@
3528
     * @param string $fields Default: id, pagetitle, description, parent, alias, menutitle
3529
     * @return array
3530
     */
3531
    public function getActiveChildren(
3532
        $id = 0,
3533
        $sort = 'menuindex',
3534
        $dir = 'ASC',
3535
        $fields = 'id, pagetitle, description, parent, alias, menutitle'
3536
    ) {
3537
        $cacheKey = md5(print_r(func_get_args(), true));
3538
        if (isset($this->tmpCache[__FUNCTION__][$cacheKey])) {
3539
            return $this->tmpCache[__FUNCTION__][$cacheKey];
3540
        }
3541
3542
        $tblsc = $this->getDatabase()->getFullTableName("site_content");
3543
        $tbldg = $this->getDatabase()->getFullTableName("document_groups");
3544
3545
        // modify field names to use sc. table reference
3546
        $fields = 'sc.' . implode(',sc.', array_filter(array_map('trim', explode(',', $fields))));
3547
        $sort = 'sc.' . implode(',sc.', array_filter(array_map('trim', explode(',', $sort))));
3548
        // get document groups for current user
3549
        if ($docgrp = $this->getUserDocGroups()) {
3550
            $docgrp = implode(",", $docgrp);
3551
        }
3552
        // build query
3553
        $access = ($this->isFrontend() ? "sc.privateweb=0" : "1='" . $_SESSION['mgrRole'] . "' OR sc.privatemgr=0") . (!$docgrp ? "" : " OR dg.document_group IN ($docgrp)");
3554
        $result = $this->getDatabase()->select("DISTINCT {$fields}", "{$tblsc} sc
3555
                LEFT JOIN {$tbldg} dg on dg.document = sc.id",
3556
            "sc.parent = '{$id}' AND sc.published=1 AND sc.deleted=0 AND ({$access}) GROUP BY sc.id", "{$sort} {$dir}");
3557
        $resourceArray = $this->getDatabase()->makeArray($result);
3558
3559
        $this->tmpCache[__FUNCTION__][$cacheKey] = $resourceArray;
3560
3561
        return $resourceArray;
3562
    }
3563
3564
    /**
3565
     * getDocumentChildren