function getArticleById($article_id, $clang = FALSE, $OOCategory = FALSE) { global $REX; $article_id = (int) $article_id; if (!is_int($article_id)) { return NULL; } if ($clang === FALSE) { $clang = $REX['CUR_CLANG']; } $article_path = $REX['INCLUDE_PATH'] . '/generated/articles/' . $article_id . '.' . $clang . '.article'; if (!file_exists($article_path)) { require_once $REX['INCLUDE_PATH'] . '/functions/function_rex_generate.inc.php'; rex_generateArticleMeta($article_id, $clang); } if (file_exists($article_path)) { require_once $article_path; if ($OOCategory) { return new OOCategory(OORedaxo::convertGeneratedArray($REX['ART'][$article_id], $clang)); } else { return new OOArticle(OORedaxo::convertGeneratedArray($REX['ART'][$article_id], $clang)); } } return NULL; }
/** * 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_base(); $CONT->setCLang($clang); $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; }
/** * Artikel & Kategorien: * * Übernimmt die gePOSTeten werte in ein rex_sql-Objekt und speichert diese */ function _rex_a62_metainfo_cat_handleSave($params, $sqlFields) { if ($_SERVER['REQUEST_METHOD'] != 'POST') { return $params; } if ($sqlFields->rows == 0) { return $params; } global $REX; $article = rex_sql::factory(); // $article->debugsql = true; $article->setTable($REX['TABLE_PREFIX'] . 'article'); $article->setWhere('id=' . $params['id'] . ' AND clang=' . $params['clang']); _rex_a62_metainfo_handleSave($params, $article, $sqlFields); $article->update(); // Artikel nochmal mit den zusätzlichen Werten neu generieren rex_generateArticleMeta($params['id'], $params['clang']); return $params; }