Example #1
0
 public static function addNewstoSitemap($params)
 {
     $mainArticle = rex_asd_news_config::getConfig('article');
     $mainArticle = new rex_article($mainArticle);
     foreach (rex_asd_news::getByWhere(array('clang' => null)) as $news) {
         /** @var rex_asd_news $news */
         $fragment = array('loc' => $news->getUrl(), 'lastmod' => $news->getPublishDate()->format('c'), 'changefreq' => self::calc_article_changefreq($news->getPublishDate()->getTimestamp()), 'priority' => self::calc_article_priority($mainArticle->getValue('id'), $mainArticle->getValue('clang'), $mainArticle->getValue('path') . '|' . $news->getValue('id')));
         $params['subject'][rex_asd_news_config::getName()][] = $fragment;
     }
     return $params['subject'];
 }
 static function getListValue($params)
 {
     if (intval($params['value']) < 1) {
         return '-';
     }
     if ($art = new rex_article($params['value'])) {
         return $art->getValue('name');
     } else {
         return 'article ' . $params['value'] . ' not found';
     }
 }
Example #3
0
 /**
  * @param rex_article         $art
  * @param rex_yrewrite_domain $domain
  *
  * @return string|false
  */
 public function getCustomUrl(rex_article $art, rex_yrewrite_domain $domain)
 {
     if ($domain->getStartId() == $art->getId()) {
         if ($domain->getStartClang() == $art->getClang()) {
             return '/';
         }
         return $this->getClang($art->getClang(), $domain) . '/';
     }
     if ($url = $art->getValue('yrewrite_url')) {
         return $url;
     }
     return false;
 }
/**
 * Generiert alle *.article u. *.content Dateien eines Artikels/einer Kategorie
 *
 * @param $id ArtikelId des Artikels, der generiert werden soll
 * @param $refreshall Boolean Bei True wird der Inhalte auch komplett neu generiert, bei False nur die Metainfos
 */
function rex_generateArticle($id, $refreshall = true)
{
    global $REX, $I18N;
    // artikel generieren
    // vorraussetzung: articel steht schon in der datenbank
    //
    // -> infos schreiben -> abhaengig von clang
    // --> artikel infos / einzelartikel metadaten
    // --> artikel content / einzelartikel content
    // --> listen generieren // wenn startpage = 1
    // ---> artikel liste
    // ---> category liste
    // --------------------------------------------------- generiere generated/articles/xx.article
    foreach ($REX['CLANG'] as $clang => $clang_name) {
        $MSG = '';
        $CONT = new rex_article();
        $CONT->setCLang($clang);
        $CONT->getContentAsQuery();
        $CONT->setMode("generate");
        // keine Ausgabe als eval(CONTENT) sondern nur speichern in datei
        if (!$CONT->setArticleId($id)) {
            return false;
        }
        // --------------------------------------------------- Artikelparameter speichern
        $params = array('article_id' => $id, 'last_update_stamp' => time());
        $class_vars = OORedaxo::getClassVars();
        unset($class_vars[array_search('id', $class_vars)]);
        $db_fields = $class_vars;
        foreach ($db_fields as $field) {
            $params[$field] = $CONT->getValue($field);
        }
        $content = '<?php' . "\n";
        foreach ($params as $name => $value) {
            $content .= '$REX[\'ART\'][' . $id . '][\'' . $name . '\'][' . $clang . '] = \'' . rex_addslashes($value, '\\\'') . '\';' . "\n";
        }
        $content .= '?>';
        if ($fp = @fopen($REX['INCLUDE_PATH'] . "/generated/articles/{$id}.{$clang}.article", "w")) {
            fputs($fp, $content);
            fclose($fp);
            @chmod($REX['INCLUDE_PATH'] . "/generated/articles/{$id}.{$clang}.article", 0777);
        } else {
            $MSG = $I18N->msg('article_could_not_be_generated') . " " . $I18N->msg('check_rights_in_directory') . $REX['INCLUDE_PATH'] . "/generated/articles/";
        }
        // --------------------------------------------------- Artikelcontent speichern
        if ($refreshall) {
            if ($fp = @fopen($REX['INCLUDE_PATH'] . "/generated/articles/{$id}.{$clang}.content", "w")) {
                $article_content = "?>" . $CONT->getArticle();
                fputs($fp, $article_content);
                fclose($fp);
                @chmod($REX['INCLUDE_PATH'] . "/generated/articles/{$id}.{$clang}.content", 0777);
            } else {
                $MSG = $I18N->msg('article_could_not_be_generated') . " " . $I18N->msg('check_rights_in_directory') . $REX['INCLUDE_PATH'] . "/generated/articles/";
            }
        }
        // ----- EXTENSION POINT
        $MSG = rex_register_extension_point('CLANG_ARTICLE_GENERATED', '', array('id' => $id, 'clang' => $clang, 'article' => $CONT));
        if ($MSG != '') {
            echo rex_warning($MSG);
        }
        // --------------------------------------------------- Listen generieren
        if ($CONT->getValue("startpage") == 1) {
            rex_generateLists($id);
            rex_generateLists($CONT->getValue("re_id"));
        } else {
            rex_generateLists($CONT->getValue("re_id"));
        }
    }
    // ----- EXTENSION POINT
    $MSG = rex_register_extension_point('ARTICLE_GENERATED', '', array('id' => $id));
}
/**
 * Generiert alle *.article u. *.content Dateien eines Artikels/einer Kategorie
 *
 * @param $id ArtikelId des Artikels, der generiert werden soll
 * @param $refreshall Boolean Bei True wird der Inhalte auch komplett neu generiert, bei False nur die Metainfos
 * 
 * @return TRUE bei Erfolg, FALSE wenn eine ungütlige article_id übergeben wird
 */
function rex_generateArticle($id, $refreshall = true)
{
    global $REX, $I18N;
    // artikel generieren
    // vorraussetzung: articel steht schon in der datenbank
    //
    // -> infos schreiben -> abhaengig von clang
    // --> artikel infos / einzelartikel metadaten
    // --> artikel content / einzelartikel content
    // --> listen generieren // wenn startpage = 1
    // ---> artikel liste
    // ---> category liste
    foreach ($REX['CLANG'] as $clang => $clang_name) {
        $CONT = new rex_article();
        $CONT->setCLang($clang);
        $CONT->getContentAsQuery();
        // Content aus Datenbank holen, no cache
        $CONT->setEval(FALSE);
        // Content nicht ausführen, damit in Cachedatei gespeichert werden kann
        if (!$CONT->setArticleId($id)) {
            return FALSE;
        }
        // ----------------------- generiere generated/articles/xx.article
        $MSG = rex_generateArticleMeta($id, $clang);
        if ($MSG === FALSE) {
            return FALSE;
        }
        if ($refreshall) {
            // ----------------------- generiere generated/articles/xx.content
            $MSG = rex_generateArticleContent($id, $clang);
            if ($MSG === FALSE) {
                return FALSE;
            }
        }
        // ----- EXTENSION POINT
        $MSG = rex_register_extension_point('CLANG_ARTICLE_GENERATED', '', array('id' => $id, 'clang' => $clang, 'article' => $CONT));
        if ($MSG != '') {
            echo rex_warning($MSG);
        }
        // --------------------------------------------------- Listen generieren
        if ($CONT->getValue("startpage") == 1) {
            rex_generateLists($id);
            rex_generateLists($CONT->getValue("re_id"));
        } else {
            rex_generateLists($CONT->getValue("re_id"));
        }
    }
    // ----- EXTENSION POINT
    $MSG = rex_register_extension_point('ARTICLE_GENERATED', '', array('id' => $id));
    return TRUE;
}