ArticleList::processItem PHP Method

processItem() public method

Process item
public processItem ( Article $article ) : array
$article Article
return array
    public function processItem($article)
    {
        global $g_user, $Campsite;
        $translator = \Zend_Registry::get('container')->getService('translator');
        $editorService = \Zend_Registry::get('container')->getService('newscoop.editor');
        $articleLink = $editorService->getLink($article);
        $articleLinkParams = $editorService->getLinkParameters($article);
        $articleLinkParamsTranslate = $articleLinkParams . '&f_action=translate&f_action_workflow=' . $article->getWorkflowStatus() . '&f_article_code=' . $article->getArticleNumber() . '_' . $article->getLanguageId();
        $previewLink = $Campsite['WEBSITE_URL'] . '/admin/articles/preview.php' . $editorService->getLinkParameters($article);
        $htmlPreviewLink = '<a href="' . $previewLink . '" target="_blank" title="' . $translator->trans('Preview') . '">' . $translator->trans('Preview') . '</a>';
        $translateLink = $Campsite['WEBSITE_URL'] . '/admin/articles/translate.php' . $articleLinkParamsTranslate;
        $htmlTranslateLink = '<a href="' . $translateLink . '" target="_blank" title="' . $translator->trans('Translate') . '">' . $translator->trans('Translate') . '</a>';
        $lockInfo = '';
        $lockHighlight = false;
        $timeDiff = camp_time_diff_str($article->getLockTime());
        if ($article->isLocked() && $timeDiff['days'] <= 0) {
            $lockUser = new User($article->getLockedByUser());
            if ($timeDiff['hours'] > 0) {
                $lockInfo = $translator->trans('The article has been locked by $1 ($2) $3 hour(s) and $4 minute(s) ago.', array('$1' => htmlspecialchars($lockUser->getRealName()), '$2' => htmlspecialchars($lockUser->getUserName()), '$3' => $timeDiff['hours'], '$4' => $timeDiff['minutes']), 'articles');
            } else {
                $lockInfo = $translator->trans('The article has been locked by $1 ($2) $3 minute(s) ago.', array('$1' => htmlspecialchars($lockUser->getRealName()), '$2' => htmlspecialchars($lockUser->getUserName()), '$3' => $timeDiff['minutes']), 'articles');
            }
            if ($article->getLockedByUser() != $g_user->getUserId()) {
                $lockHighlight = true;
            }
        }
        $tmpUser = new User($article->getCreatorId());
        $tmpArticleType = new ArticleType($article->getType());
        $tmpAuthor = new Author();
        $articleAuthors = ArticleAuthor::GetAuthorsByArticle($article->getArticleNumber(), $article->getLanguageId());
        foreach ((array) $articleAuthors as $author) {
            if (strtolower($author->getAuthorType()->getName()) == 'author') {
                $tmpAuthor = $author;
                break;
            }
        }
        if (!$tmpAuthor->exists() && isset($articleAuthors[0])) {
            $tmpAuthor = $articleAuthors[0];
        }
        $onFrontPage = $article->onFrontPage() ? $translator->trans('Yes') : $translator->trans('No');
        $onSectionPage = $article->onSectionPage() ? $translator->trans('Yes') : $translator->trans('No');
        $imagesNo = (int) ArticleImage::GetImagesByArticleNumber($article->getArticleNumber(), true);
        $topicsNo = (int) ArticleTopic::GetArticleTopics($article->getArticleNumber(), true);
        $commentsNo = '';
        if ($article->commentsEnabled()) {
            global $controller;
            $repositoryComments = $controller->getHelper('entity')->getRepository('Newscoop\\Entity\\Comment');
            $filter = array('thread' => $article->getArticleNumber(), 'language' => $article->getLanguageId());
            $params = array('sFilter' => $filter);
            $commentsNo = $repositoryComments->getCount($params);
        } else {
            $commentsNo = 'No';
        }
        // get language code
        $language = new Language($article->getLanguageId());
        return array($article->getArticleNumber(), $article->getLanguageId(), $article->getOrder(), sprintf('%s <a href="%s" title="%s %s">%s</a>', $article->isLocked() ? '<span class="ui-icon ui-icon-locked' . (!$lockHighlight ? ' current-user' : '') . '" title="' . $lockInfo . '"></span>' : '', $articleLink, $translator->trans('Edit'), htmlspecialchars($article->getName() . " ({$article->getLanguageName()})"), htmlspecialchars($article->getName() . (empty($_REQUEST['language']) ? " ({$language->getCode()})" : ''))), htmlspecialchars($article->getSection()->getName()), $article->getWebcode(), htmlspecialchars($tmpArticleType->getDisplayName()), htmlspecialchars($tmpUser->getRealName()), htmlspecialchars($tmpAuthor->getName()), $article->getWorkflowStatus(), $onFrontPage, $onSectionPage, $imagesNo, $topicsNo, $commentsNo, (int) $article->getReads(), Geo_Map::GetArticleMapId($article) != null ? $translator->trans('Yes') : $translator->trans('No'), (int) sizeof(Geo_Map::GetLocationsByArticle($article)), $article->getCreationDate(), $article->getPublishDate(), $article->getLastModified(), $htmlPreviewLink, $htmlTranslateLink);
    }

Usage Example

Example #1
0
            $articlesParams[] = new ComparisonOperation('type', new Operator('not', 'string'), $one_art_type->getTypeName());
        }
    }
}
// search
if (isset($_REQUEST['sSearch']) && strlen($_REQUEST['sSearch']) > 0) {
    $search_phrase = $_REQUEST['sSearch'];
    //$articlesParams[] = new ComparisonOperation('search_phrase', new Operator('is', 'integer'), $search_phrase);
    $articlesParams[] = new ComparisonOperation('search_phrase', new Operator('like', 'string'), "__match_all." . $search_phrase);
}
// sorting
$cols = $list->getColumnKeys();
$sortOptions = array('Number' => 'bynumber', 'Order' => 'bysectionorder', 'Name' => 'byname', 'Comments' => 'bycomments', 'Reads' => 'bypopularity', 'CreateDate' => 'bycreationdate', 'PublishDate' => 'bypublishdate');
$sortBy = 'bysectionorder';
$sortDir = 'asc';
$sortingCols = min(1, (int) $_REQUEST['iSortingCols']);
for ($i = 0; $i < $sortingCols; $i++) {
    $sortOptionsKey = (int) $_REQUEST['iSortCol_' . $i];
    if (!empty($sortOptions[$cols[$sortOptionsKey]])) {
        $sortBy = $sortOptions[$cols[$sortOptionsKey]];
        $sortDir = $_REQUEST['sSortDir_' . $i];
        break;
    }
}
// get articles
$articles = Article::GetList($articlesParams, array(array('field' => $sortBy, 'dir' => $sortDir)), $start, $limit, $articlesCount, true);
$return = array();
foreach ($articles as $article) {
    $return[] = $list->processItem($article);
}
return array('iTotalRecords' => Article::GetTotalCount(), 'iTotalDisplayRecords' => $articlesCount, 'sEcho' => (int) $_REQUEST['sEcho'], 'aaData' => $return);