/**
 * Ändert den Status der Kategorie
 *
 * @param int      $category_id Id der Kategorie die gelöscht werden soll
 * @param int      $clang       Id der Sprache
 * @param int|null $status      Status auf den die Kategorie gesetzt werden soll, oder NULL wenn zum nächsten Status weitergeschaltet werden soll
 *
 * @return array Ein Array welches den status sowie eine Fehlermeldung beinhaltet
 */
function rex_categoryStatus($category_id, $clang, $status = null)
{
    global $REX, $I18N;
    $success = false;
    $message = '';
    $catStatusTypes = rex_categoryStatusTypes();
    $KAT = rex_sql::factory();
    $KAT->setQuery('select * from ' . $REX['TABLE_PREFIX'] . "article where id='{$category_id}' and clang={$clang} and startpage=1");
    if ($KAT->getRows() == 1) {
        // Status wurde nicht von außen vorgegeben,
        // => zyklisch auf den nächsten Weiterschalten
        if (!$status) {
            $newstatus = ($KAT->getValue('status') + 1) % count($catStatusTypes);
        } else {
            $newstatus = $status;
        }
        $EKAT = rex_sql::factory();
        $EKAT->setTable($REX['TABLE_PREFIX'] . 'article');
        $EKAT->setWhere("id='{$category_id}' and clang={$clang} and startpage=1");
        $EKAT->setValue('status', $newstatus);
        $EKAT->addGlobalCreateFields();
        if ($EKAT->update()) {
            $message = $I18N->msg('category_status_updated');
            rex_deleteCacheArticle($category_id, $clang);
            // ----- EXTENSION POINT
            $message = rex_register_extension_point('CAT_STATUS', $message, array('id' => $category_id, 'clang' => $clang, 'status' => $newstatus));
            $success = true;
        } else {
            $message = $EKAT->getError();
        }
    } else {
        $message = $I18N->msg('no_such_category');
    }
    return array($success, $message);
}
示例#2
0
$warning = '';
// --------------------------------------------- Mountpoints
$mountpoints = $REX['USER']->getMountpoints();
if (count($mountpoints) == 1 && $category_id == 0) {
    // Nur ein Mointpoint -> Sprung in die Kategory
    $category_id = current($mountpoints);
}
// --------------------------------------------- Rechte prŸfen
require $REX['INCLUDE_PATH'] . '/functions/function_rex_category.inc.php';
require $REX['INCLUDE_PATH'] . '/functions/function_rex_content.inc.php';
// --------------------------------------------- TITLE
rex_title($I18N->msg('title_structure'), $KATout);
$sprachen_add = '&category_id=' . $category_id;
require $REX['INCLUDE_PATH'] . '/functions/function_rex_languages.inc.php';
// -------------- STATUS_TYPE Map
$catStatusTypes = rex_categoryStatusTypes();
$artStatusTypes = rex_articleStatusTypes();
// --------------------------------------------- KATEGORIE FUNKTIONEN
if (rex_post('catedit_function', 'boolean') && $edit_id != '' && $KATPERM) {
    // --------------------- KATEGORIE EDIT
    $data = array();
    $data['catprior'] = rex_post('Position_Category', 'int');
    $data['catname'] = rex_post('kat_name', 'string');
    $data['path'] = $KATPATH;
    list($success, $message) = rex_editCategory($edit_id, $clang, $data);
    if ($success) {
        $info = $message;
    } else {
        $warning = $message;
    }
} elseif ($function == 'catdelete_function' && $edit_id != '' && $KATPERM && !$REX['USER']->hasPerm('editContentOnly[]')) {