tl_content::getArticles PHP Method

getArticles() public method

Get all articles and return them as array (article teaser)
public getArticles ( DataContainer $dc ) : array
$dc DataContainer
return array
    public function getArticles(DataContainer $dc)
    {
        $arrPids = array();
        $arrArticle = array();
        $arrRoot = array();
        $intPid = $dc->activeRecord->pid;
        if (Input::get('act') == 'overrideAll') {
            $intPid = Input::get('id');
        }
        // Limit pages to the website root
        $objArticle = $this->Database->prepare("SELECT pid FROM tl_article WHERE id=?")->limit(1)->execute($intPid);
        if ($objArticle->numRows) {
            $objPage = PageModel::findWithDetails($objArticle->pid);
            $arrRoot = $this->Database->getChildRecords($objPage->rootId, 'tl_page');
            array_unshift($arrRoot, $objPage->rootId);
        }
        unset($objArticle);
        // Limit pages to the user's pagemounts
        if ($this->User->isAdmin) {
            $objArticle = $this->Database->execute("SELECT a.id, a.pid, a.title, a.inColumn, p.title AS parent FROM tl_article a LEFT JOIN tl_page p ON p.id=a.pid" . (!empty($arrRoot) ? " WHERE a.pid IN(" . implode(',', array_map('intval', array_unique($arrRoot))) . ")" : "") . " ORDER BY parent, a.sorting");
        } else {
            foreach ($this->User->pagemounts as $id) {
                if (!in_array($id, $arrRoot)) {
                    continue;
                }
                $arrPids[] = $id;
                $arrPids = array_merge($arrPids, $this->Database->getChildRecords($id, 'tl_page'));
            }
            if (empty($arrPids)) {
                return $arrArticle;
            }
            $objArticle = $this->Database->execute("SELECT a.id, a.pid, a.title, a.inColumn, p.title AS parent FROM tl_article a LEFT JOIN tl_page p ON p.id=a.pid WHERE a.pid IN(" . implode(',', array_map('intval', array_unique($arrPids))) . ") ORDER BY parent, a.sorting");
        }
        // Edit the result
        if ($objArticle->numRows) {
            System::loadLanguageFile('tl_article');
            while ($objArticle->next()) {
                $key = $objArticle->parent . ' (ID ' . $objArticle->pid . ')';
                $arrArticle[$key][$objArticle->id] = $objArticle->title . ' (' . ($GLOBALS['TL_LANG']['COLS'][$objArticle->inColumn] ?: $objArticle->inColumn) . ', ID ' . $objArticle->id . ')';
            }
        }
        return $arrArticle;
    }