setNewId() 공개 메소드

Setzt eine Spalte auf den naechst moeglich auto_increment Wert.
public setNewId ( string $field, integer $start_id ) : integer
$field string Name der Spalte
$start_id integer
리턴 integer
예제 #1
0
 }
 // ------- 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);
}