/**
 * Löscht einen Artikel
 * 
 * @param $id ArtikelId des Artikels, der gelöscht werden soll
 */
function rex_deleteArticle($id, $ebene = 0)
{
    global $REX, $I18N;
    // artikel loeschen
    //
    // kontrolle ob erlaubnis nicht hier.. muss vorher geschehen
    //
    // -> startpage = 0
    // --> artikelfiles löschen
    // ---> article
    // ---> content
    // ---> clist
    // ---> alist
    // -> startpage = 1
    // --> rekursiv aufrufen
    if ($id == $REX['START_ARTICLE_ID']) {
        return $I18N->msg("cant_delete_startarticle");
    }
    $ART = new sql();
    $ART->setQuery("select * from " . $REX['TABLE_PREFIX'] . "article where id='{$id}' and clang='0'");
    if ($ART->getRows() > 0) {
        $re_id = $ART->getValue("re_id");
        if ($ART->getValue("startpage") == 1) {
            $SART = new sql();
            $SART->setQuery("select * from " . $REX['TABLE_PREFIX'] . "article where re_id='{$id}' and clang='0'");
            for ($i = 0; $i < $SART->getRows(); $i++) {
                rex_deleteArticle($id, $ebene + 1);
                $SART->next();
            }
        }
        $CL = $REX['CLANG'];
        reset($CL);
        for ($i = 0; $i < count($CL); $i++) {
            $clang = key($CL);
            @unlink($REX['INCLUDE_PATH'] . "/generated/articles/{$id}.{$clang}.article");
            @unlink($REX['INCLUDE_PATH'] . "/generated/articles/{$id}.{$clang}.content");
            @unlink($REX['INCLUDE_PATH'] . "/generated/articles/{$id}.{$clang}.alist");
            @unlink($REX['INCLUDE_PATH'] . "/generated/articles/{$id}.{$clang}.clist");
            $ART->query("delete from " . $REX['TABLE_PREFIX'] . "article where id='{$id}'");
            $ART->query("delete from " . $REX['TABLE_PREFIX'] . "article_slice where article_id='{$id}'");
            next($CL);
        }
        // --------------------------------------------------- Listen generieren
        rex_generateLists($re_id);
        return $I18N->msg('category_deleted') . ' ' . $I18N->msg('article_deleted');
    } else {
        return $I18N->msg('category_doesnt_exist');
    }
}
/**
 * Löscht einen Artikel
 *
 * @param $id ArtikelId des Artikels, der gelöscht werden soll
 */
function rex_deleteArticle($id, $ebene = 0)
{
    global $REX, $I18N;
    // artikel loeschen
    //
    // kontrolle ob erlaubnis nicht hier.. muss vorher geschehen
    //
    // -> startpage = 0
    // --> artikelfiles löschen
    // ---> article
    // ---> content
    // ---> clist
    // ---> alist
    // -> startpage = 1
    // --> rekursiv aufrufen
    $ART = new rex_sql();
    $ART->setQuery("select * from " . $REX['TABLE_PREFIX'] . "article where id='{$id}' and clang='0'");
    if ($ART->getRows() > 0) {
        $re_id = $ART->getValue("re_id");
        if ($ART->getValue("startpage") == 1) {
            $SART = new rex_sql();
            $SART->setQuery("select * from " . $REX['TABLE_PREFIX'] . "article where re_id='{$id}' and clang='0'");
            for ($i = 0; $i < $SART->getRows(); $i++) {
                rex_deleteArticle($id, $ebene + 1);
                $SART->next();
            }
        }
        rex_deleteCacheArticle($id);
        $ART->setQuery("delete from " . $REX['TABLE_PREFIX'] . "article where id='{$id}'");
        $ART->setQuery("delete from " . $REX['TABLE_PREFIX'] . "article_slice where article_id='{$id}'");
        // --------------------------------------------------- Listen generieren
        rex_generateLists($re_id);
        return $I18N->msg('category_deleted') . ' ' . $I18N->msg('article_deleted');
    } else {
        return $I18N->msg('category_doesnt_exist');
    }
}
            $EA->where("id='{$article_id}' and clang={$clang}");
            $EA->setValue("name", $article_name);
            $EA->setValue("template_id", $template_id);
            // $EA->setValue("path",$KATPATH);
            $EA->setValue("updatedate", time());
            $EA->setValue("updateuser", $REX_USER->getValue("login"));
            $EA->setValue("prior", $Position_Article);
            $EA->update();
            // ----- PRIOR
            rex_newArtPrio($category_id, $clang, $Position_Article, $thisArt->getValue("prior"));
            rex_generateArticle($article_id);
            // ----- EXTENSION POINT
            $message = rex_register_extension_point('ART_UPDATED', $message, array("id" => $article_id, "status" => $thisArt->getValue("status"), "name" => $article_name, "clang" => $clang, "re_id" => $category_id, "prior" => $Position_Article, "path" => $KATPATH, "template_id" => $template_id));
        } elseif (isset($function) and $function == "delete_article" && $article_id != "" && $KATPERM && !$REX_USER->isValueOf("rights", "editContentOnly[]")) {
            // --------------------- ARTIKEL DELETE
            $message = rex_deleteArticle($article_id);
            $re_id = $thisArt->getValue("re_id");
            // ----- PRIO
            $CL = $REX['CLANG'];
            reset($CL);
            for ($j = 0; $j < count($CL); $j++) {
                $mlang = key($CL);
                rex_newArtPrio($thisArt->getValue("re_id"), $mlang, 0, 1);
                next($CL);
            }
            // ----- EXTENSION POINT
            $message = rex_register_extension_point('ART_DELETED', $message, array("id" => $article_id, "re_id" => $re_id));
        }
    }
}
// --------------------------------------------- KATEGORIE LISTE
/**
 * Löscht einen Artikel und reorganisiert die Prioritäten verbleibender Geschwister-Artikel
 *
 * @param int $article_id Id des Artikels die gelöscht werden soll
 *
 * @return array Ein Array welches den status sowie eine Fehlermeldung beinhaltet
 */
function rex_deleteArticleReorganized($article_id)
{
    global $REX;
    $return = array();
    $return['state'] = false;
    $return['message'] = '';
    $Art = rex_sql::factory();
    $Art->setQuery('select * from ' . $REX['TABLE_PREFIX'] . 'article where id=' . $article_id . ' and startpage=0');
    if ($Art->getRows() == count($REX['CLANG'])) {
        $return = rex_deleteArticle($article_id);
        $re_id = $Art->getValue('re_id');
        foreach ($REX['CLANG'] as $clang => $clang_name) {
            // ----- PRIOR
            rex_newArtPrio($Art->getValue('re_id'), $clang, 0, 1);
            // ----- EXTENSION POINT
            $return = rex_register_extension_point('ART_DELETED', $return, array('id' => $article_id, 'clang' => $clang, 're_id' => $re_id, 'name' => $Art->getValue('name'), 'status' => $Art->getValue('status'), 'prior' => $Art->getValue('prior'), 'path' => $Art->getValue('path'), 'template_id' => $Art->getValue('template_id')));
            $Art->next();
        }
    }
    return array($return['state'], $return['message']);
}