/**
 * 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;
}
Exemplo n.º 2
0
 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"));