/** * Kopieren eines Artikels von einer Kategorie in eine andere * * @param $id ArtikelId des zu kopierenden Artikels * @param $to_cat_id KategorieId in die der Artikel kopiert werden soll */ function rex_copyArticle($id, $to_cat_id) { global $REX, $REX_USER; $id = (int) $id; $to_cat_id = (int) $to_cat_id; // Artikel in jeder Sprache kopieren foreach ($REX['CLANG'] as $clang => $clang_name) { // validierung der id & from_cat_id $from_sql = new sql(); $qry = 'select * from ' . $REX['TABLE_PREFIX'] . 'article where clang="' . $clang . '" and id="' . $id . '"'; $from_sql->setQuery($qry); if ($from_sql->getRows() == 1) { // validierung der to_cat_id $to_sql = new sql(); $to_sql->setQuery('select * from ' . $REX['TABLE_PREFIX'] . 'article where clang="' . $clang . '" and startpage=1 and id="' . $to_cat_id . '"'); if ($to_sql->getRows() == 1) { $art_sql = new sql(); $art_sql->setTable($REX['TABLE_PREFIX'] . 'article'); if ($new_id == "") { $new_id = $art_sql->setNewId('id'); } $art_sql->setValue('id', $new_id); // neuen auto_incrment erzwingen $art_sql->setValue('re_id', $to_sql->getValue('id')); $art_sql->setValue('path', $to_sql->getValue('path') . $to_sql->getValue('id') . '|'); $art_sql->setValue('catname', $to_sql->getValue('name')); $art_sql->setValue('prior', 99999); // Artikel als letzten Artikel in die neue Kat einfügen $art_sql->setValue('status', 0); // Kopierter Artikel offline setzen $art_sql->setValue('createdate', time()); $art_sql->setValue('createuser', addslashes($REX_USER->getValue('login'))); $art_sql->setValue('startpage', 0); // schon gesetzte Felder nicht wieder überschreiben $dont_copy = array('id', 'pid', 're_id', 'catname', 'path', 'prior', 'status', 'createdate', 'createuser', 'startpage'); foreach (array_diff($to_sql->getFieldnames(), $dont_copy) as $fld_name) { $art_sql->setValue($fld_name, $from_sql->getValue($fld_name)); } $art_sql->setValue("clang", $clang); $art_sql->insert(); // ArticleSlices kopieren rex_copyContent($id, $new_id, $clang, $clang); // Prios neu berechnen rex_newArtPrio($to_cat_id, $clang, 1, 0); } else { return false; } } else { return false; } } // Generated des Artikels neu erzeugen rex_generateArticle($id, false); // Generated der Kategorien neu erzeugen, da sich derin befindliche Artikel geändert haben rex_generateArticle($to_cat_id, false); return $new_id; }
if (isset($function) and $function == "add_article" && $KATPERM && !$REX_USER->isValueOf("rights", "editContentOnly[]")) { // --------------------- ARTIKEL ADD $Position_New_Article = (int) $Position_New_Article; if ($Position_New_Article == 0) { $Position_New_Article = 1; } $amessage = $I18N->msg("article_added"); unset($id); reset($REX['CLANG']); while (list($key, $val) = each($REX['CLANG'])) { // ### erstelle neue prioliste wenn noetig $AART = new sql(); // $AART->debugsql = 1; $AART->setTable($REX['TABLE_PREFIX'] . "article"); if (!isset($id) or !$id) { $id = $AART->setNewId("id"); } else { $AART->setValue("id", $id); } $AART->setValue("name", $article_name); $AART->setValue("catname", $article_name); $AART->setValue("clang", $key); $AART->setValue("re_id", $category_id); $AART->setValue("prior", $Position_New_Article); $AART->setValue("path", $KATPATH); $AART->setValue("startpage", 0); $AART->setValue("status", 0); $AART->setValue("online_from", time()); $AART->setValue("online_to", mktime(0, 0, 0, 1, 1, 2010)); $AART->setValue("createdate", time()); $AART->setValue("createuser", $REX_USER->getValue("login"));