} // ------- Kategorienamen holen $category = OOCategory::getCategoryById($category_id, $clang); $category_name = ''; if ($category) { $category_name = addslashes($category->getName()); } $amessage = $I18N->msg('article_added'); unset($id); $AART = new rex_sql(); foreach ($REX['CLANG'] as $key => $val) { // ### erstelle neue prioliste wenn noetig // $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', $category_name); // TODO Neue noch nicht verwendete Datenbankspalten // $AART->setValue('attributes', $category_attributes); $AART->setValue('attributes', ''); $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('template_id', $template_id);
/** * 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; $new_id = ''; // Artikel in jeder Sprache kopieren foreach ($REX['CLANG'] as $clang => $clang_name) { // validierung der id & from_cat_id $from_sql = new rex_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 rex_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 || $to_cat_id == 0) { if ($to_sql->getRows() == 1) { $path = $to_sql->getValue('path') . $to_sql->getValue('id') . '|'; $catname = $to_sql->getValue('name'); } else { // In RootEbene $path = '|'; $catname = $from_sql->getValue("name"); } $art_sql = new rex_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_cat_id); $art_sql->setValue('path', $path); $art_sql->setValue('catname', $catname); $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->addGlobalCreateFields(); $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($from_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; }
/** * Erstellt einen neuen Artikel * * @param array $data Array mit den Daten des Artikels * * @return array Ein Array welches den status sowie eine Fehlermeldung beinhaltet */ function rex_addArticle($data) { global $REX, $I18N; $success = true; $message = ''; if (!is_array($data)) { trigger_error('Expecting $data to be an array!', E_USER_ERROR); } if (isset($data['prior'])) { if ($data['prior'] <= 0) { $data['prior'] = 1; } } $message = $I18N->msg('article_added'); $AART = new rex_sql(); foreach ($REX['CLANG'] as $key => $val) { // ------- Kategorienamen holen $category = OOCategory::getCategoryById($data['category_id'], $key); $category_name = ''; if ($category) { $category_name = addslashes($category->getName()); } $AART->setTable($REX['TABLE_PREFIX'] . 'article'); if (!isset($id) or !$id) { $id = $AART->setNewId('id'); } else { $AART->setValue('id', $id); } $AART->setValue('name', $data['name']); $AART->setValue('catname', $category_name); $AART->setValue('attributes', ''); $AART->setValue('clang', $key); $AART->setValue('re_id', $data['category_id']); $AART->setValue('prior', $data['prior']); $AART->setValue('path', $data['path']); $AART->setValue('startpage', 0); $AART->setValue('status', 0); $AART->setValue('template_id', $data['template_id']); $AART->addGlobalCreateFields(); $AART->addGlobalUpdateFields(); if ($AART->insert()) { // ----- PRIOR rex_newArtPrio($data['category_id'], $key, 0, $data['prior']); } else { $success = false; $message = $AART->getError(); } // ----- EXTENSION POINT $message = rex_register_extension_point('ART_ADDED', $message, array('id' => $id, 'clang' => $key, 'status' => 0, 'name' => $data['name'], 're_id' => $data['category_id'], 'prior' => $data['prior'], 'path' => $data['path'], 'template_id' => $data['template_id'], 'data' => $data)); } return array($success, $message); }