function getArticle($curctype = -1)
 {
     // bc
     if ($this->viasql) {
         return parent::getArticle($curctype);
     }
     global $REX;
     $this->ctype = $curctype;
     if (!$this->getSlice && $this->article_id != 0) {
         // ----- start: article caching
         ob_start();
         ob_implicit_flush(0);
         $article_content_file = $REX['INCLUDE_PATH'] . '/generated/articles/' . $this->article_id . '.' . $this->clang . '.content';
         if (!file_exists($article_content_file)) {
             include_once $REX["INCLUDE_PATH"] . "/functions/function_rex_generate.inc.php";
             $generated = rex_generateArticleContent($this->article_id, $this->clang);
             if ($generated !== true) {
                 // fehlermeldung ausgeben
                 echo $generated;
             }
         }
         if (file_exists($article_content_file)) {
             eval(rex_get_file_contents($article_content_file));
         }
         // ----- end: article caching
         $CONTENT = ob_get_contents();
         ob_end_clean();
     } else {
         // Inhalt ueber sql generierens
         $CONTENT = parent::getArticle($curctype);
     }
     return $CONTENT;
 }
/**
 * Generiert den Artikel-Cache des Artikelinhalts.
 *
 * @param $article_id Id des zu generierenden Artikels
 * @param [$clang ClangId des Artikels]
 *
 * @return TRUE bei Erfolg, FALSE wenn eine ungütlige article_id übergeben wird, sonst eine Fehlermeldung
 */
function rex_generateArticleContent($article_id, $clang = null)
{
    global $REX, $I18N;
    foreach ($REX['CLANG'] as $_clang => $clang_name) {
        if ($clang !== null && $clang != $_clang) {
            continue;
        }
        $CONT = new rex_article_base();
        $CONT->setCLang($_clang);
        $CONT->setEval(false);
        // Content nicht ausführen, damit in Cachedatei gespeichert werden kann
        if (!$CONT->setArticleId($article_id)) {
            return false;
        }
        // --------------------------------------------------- Artikelcontent speichern
        $article_content_file = $REX['GENERATED_PATH'] . "/articles/{$article_id}.{$_clang}.content";
        $article_content = '?>' . $CONT->getArticle();
        // ----- EXTENSION POINT
        $article_content = rex_register_extension_point('GENERATE_FILTER', $article_content, array('id' => $article_id, 'clang' => $_clang, 'article' => $CONT));
        if (rex_file::put($article_content_file, $article_content) === false) {
            return $I18N->msg('article_could_not_be_generated') . ' ' . $I18N->msg('check_rights_in_directory') . $REX['GENERATED_PATH'] . '/articles/';
        }
    }
    return true;
}
예제 #3
0
 function getArticle($curctype = -1)
 {
     global $REX;
     $this->ctype = $curctype;
     // bc
     if ($this->viasql) {
         $CONTENT = parent::getArticle($curctype);
     } elseif (!$this->getSlice && $this->article_id != 0) {
         // ----- start: article caching
         ob_start();
         ob_implicit_flush(0);
         $article_content_file = $REX['GENERATED_PATH'] . '/articles/' . $this->article_id . '.' . $this->clang . '.content';
         if (!file_exists($article_content_file)) {
             include_once $REX['INCLUDE_PATH'] . '/functions/function_rex_generate.inc.php';
             $generated = rex_generateArticleContent($this->article_id, $this->clang);
             if ($generated !== true) {
                 // fehlermeldung ausgeben
                 echo $generated;
             }
         }
         if (file_exists($article_content_file)) {
             eval(rex_get_file_contents($article_content_file));
         }
         // ----- end: article caching
         $CONTENT = ob_get_contents();
         ob_end_clean();
     } else {
         // Inhalt ueber sql generierens
         $CONTENT = parent::getArticle($curctype);
     }
     $CONTENT = rex_register_extension_point('ART_CONTENT', $CONTENT, array('ctype' => $curctype, 'article' => &$this));
     return $CONTENT;
 }