/**
 * Löscht die gecachten Dateien eines Artikels. Wenn keine clang angegeben, wird
 * der Artikel in allen Sprachen gelöscht.
 *
 * @param $id ArtikelId des Artikels
 * @param [$clang ClangId des Artikels]
 *
 * @return void
 */
function rex_deleteCacheArticle($id, $clang = null)
{
    global $REX;
    foreach ($REX['CLANG'] as $_clang => $clang_name) {
        if ($clang !== null && $clang != $_clang) {
            continue;
        }
        rex_deleteCacheArticleMeta($id, $clang);
        rex_deleteCacheArticleContent($id, $clang);
        rex_deleteCacheArticleLists($id, $clang);
    }
}
/**
 * Kopiert die Inhalte eines Artikels in einen anderen Artikel
 *
 * @param int $from_id ArtikelId des Artikels, aus dem kopiert werden (Quell ArtikelId)
 * @param int $to_id   ArtikelId des Artikel, in den kopiert werden sollen (Ziel ArtikelId)
 * @param int [$from_clang]      ClangId des Artikels, aus dem kopiert werden soll (Quell ClangId)
 * @param int [$to_clang]        ClangId des Artikels, in den kopiert werden soll (Ziel ClangId)
 * @param int [$from_re_sliceid] Id des Slices, bei dem begonnen werden soll
 *
 * @return boolean TRUE bei Erfolg, sonst FALSE
 */
function rex_copyContent($from_id, $to_id, $from_clang = 0, $to_clang = 0, $from_re_sliceid = 0, $revision = 0)
{
    global $REX;
    if ($from_id == $to_id && $from_clang == $to_clang) {
        return false;
    }
    $gc = rex_sql::factory();
    $gc->setQuery('select * from ' . $REX['TABLE_PREFIX'] . "article_slice where re_article_slice_id='{$from_re_sliceid}' and article_id='{$from_id}' and clang='{$from_clang}' and revision='{$revision}'");
    if ($gc->getRows() == 1) {
        // letzt slice_id des ziels holen ..
        $glid = rex_sql::factory();
        $glid->setQuery('select r1.id, r1.re_article_slice_id
                                         from ' . $REX['TABLE_PREFIX'] . 'article_slice as r1
                                         left join ' . $REX['TABLE_PREFIX'] . "article_slice as r2 on r1.id=r2.re_article_slice_id\n                                         where\n                                                r1.article_id={$to_id} and r1.clang={$to_clang} and r1.revision={$revision}\n                                                and r2.id is NULL");
        if ($glid->getRows() == 1) {
            $to_last_slice_id = $glid->getValue('r1.id');
        } else {
            $to_last_slice_id = 0;
        }
        $ins = rex_sql::factory();
        $ins->setTable($REX['TABLE_PREFIX'] . 'article_slice');
        $cols = rex_sql::factory();
        // $cols->debugsql = 1;
        $cols->setquery('SHOW COLUMNS FROM ' . $REX['TABLE_PREFIX'] . 'article_slice');
        for ($j = 0; $j < $cols->rows; $j++, $cols->next()) {
            $colname = $cols->getValue('Field');
            if ($colname == 'clang') {
                $value = $to_clang;
            } elseif ($colname == 're_article_slice_id') {
                $value = $to_last_slice_id;
            } elseif ($colname == 'article_id') {
                $value = $to_id;
            } elseif ($colname == 'createdate') {
                $value = time();
            } elseif ($colname == 'updatedate') {
                $value = time();
            } elseif ($colname == 'createuser') {
                $value = $REX['USER']->getValue('login');
            } elseif ($colname == 'updateuser') {
                $value = $REX['USER']->getValue('login');
            } else {
                $value = $gc->getValue($colname);
            }
            if ($colname != 'id') {
                $ins->setValue($colname, $ins->escape($value));
            }
        }
        $ins->insert();
        // id holen und als re setzen und weitermachen..
        rex_copyContent($from_id, $to_id, $from_clang, $to_clang, $gc->getValue('id'), $revision);
        return true;
    }
    rex_deleteCacheArticleContent($to_id, $to_clang);
    return true;
}
Exemple #3
0
        echo rex_info($I18N->msg('seo42_urlpage_updated'));
        // extension point 1
        $params = array();
        $params['id'] = $articleId;
        $params['url_type'] = $newUrlType;
        if ($newUrlData['url_clone']) {
            foreach ($REX['CLANG'] as $theClang => $clang_name) {
                $params['clang'] = $theClang;
                rex_register_extension_point('SEO42_URL_UPDATE', '', $params);
            }
        } else {
            $params['clang'] = $clang;
            rex_register_extension_point('SEO42_URL_UPDATE', '', $params);
        }
        // generate stuff new
        rex_deleteCacheArticleContent($articleId, $clang);
        rex_generateArticle($articleId);
        seo42_generate_pathlist(array());
        // extension point 2
        rex_register_extension_point('SEO42_URL_UPDATED', '', $params);
        // this is for frontend link fix with js
        $dataUpdated = true;
    } else {
        // err msg
        if ($sql->getError() != '') {
            echo rex_warning($sql->getError());
        }
    }
}
$sql = rex_sql::factory();
//$sql->debugsql = 1;
/**
 * Kopiert die Inhalte eines Artikels in einen anderen Artikel
 *
 * @param int $from_id           ArtikelId des Artikels, aus dem kopiert werden (Quell ArtikelId)
 * @param int $to_id             ArtikelId des Artikel, in den kopiert werden sollen (Ziel ArtikelId)
 * @param int [$from_clang]      ClangId des Artikels, aus dem kopiert werden soll (Quell ClangId)
 * @param int [$to_clang]        ClangId des Artikels, in den kopiert werden soll (Ziel ClangId)
 * @param int [$from_re_sliceid] Id des Slices, bei dem begonnen werden soll
 * 
 * @return boolean TRUE bei Erfolg, sonst FALSE
 */
function rex_copyContent($from_id, $to_id, $from_clang = 0, $to_clang = 0, $from_re_sliceid = 0, $revision = 0)
{
    global $REX;
    if ($from_id == $to_id && $from_clang == $to_clang) {
        return false;
    }
    $gc = new rex_sql();
    $gc->setQuery("select * from " . $REX['TABLE_PREFIX'] . "article_slice where re_article_slice_id='{$from_re_sliceid}' and article_id='{$from_id}' and clang='{$from_clang}' and revision='{$revision}'");
    if ($gc->getRows() == 1) {
        // letzt slice_id des ziels holen ..
        $glid = new rex_sql();
        $glid->setQuery("select r1.id, r1.re_article_slice_id\r\n                     from " . $REX['TABLE_PREFIX'] . "article_slice as r1\r\n                     left join " . $REX['TABLE_PREFIX'] . "article_slice as r2 on r1.id=r2.re_article_slice_id\r\n                     where \r\n\t\t\t\t\t\t\t\t\t\t\t\tr1.article_id={$to_id} and r1.clang={$to_clang} and r1.revision={$revision}\r\n\t\t\t\t\t\t\t\t\t\t\t\tand r2.id is NULL");
        if ($glid->getRows() == 1) {
            $to_last_slice_id = $glid->getValue("r1.id");
        } else {
            $to_last_slice_id = 0;
        }
        $ins = new rex_sql();
        $ins->setTable($REX['TABLE_PREFIX'] . "article_slice");
        $cols = new rex_sql();
        // $cols->debugsql = 1;
        $cols->setquery("SHOW COLUMNS FROM " . $REX['TABLE_PREFIX'] . "article_slice");
        for ($j = 0; $j < $cols->rows; $j++, $cols->next()) {
            $colname = $cols->getValue("Field");
            if ($colname == "clang") {
                $value = $to_clang;
            } elseif ($colname == "re_article_slice_id") {
                $value = $to_last_slice_id;
            } elseif ($colname == "article_id") {
                $value = $to_id;
            } elseif ($colname == "createdate") {
                $value = time();
            } elseif ($colname == "updatedate") {
                $value = time();
            } elseif ($colname == "createuser") {
                $value = $REX['USER']->getValue("login");
            } elseif ($colname == "updateuser") {
                $value = $REX['USER']->getValue("login");
            } else {
                $value = $gc->getValue($colname);
            }
            if ($colname != "id") {
                $ins->setValue($colname, $ins->escape($value));
            }
        }
        $ins->insert();
        // id holen und als re setzen und weitermachen..
        rex_copyContent($from_id, $to_id, $from_clang, $to_clang, $gc->getValue("id"), $revision);
        return true;
    }
    rex_deleteCacheArticleContent($to_id, $to_clang);
    return true;
}