/**
 * Kopiert die Inhalte eines Artikels in einen anderen Artikel
 * 
 * @param $from_id           ArtikelId des Artikels, aus dem kopiert werden (Quell ArtikelId)
 * @param $to_id             ArtikelId des Artikel, in den kopiert werden sollen (Ziel ArtikelId)
 * @param [$from_clang]      ClangId des Artikels, aus dem kopiert werden soll (Quell ClangId)
 * @param [$to_clang]        ClangId des Artikels, in den kopiert werden soll (Ziel ClangId)
 * @param [$from_re_sliceid] Id des Slices, bei dem begonnen werden soll
 */
function rex_copyContent($from_id, $to_id, $from_clang = 0, $to_clang = 0, $from_re_sliceid = 0)
{
    global $REX, $REX_USER;
    if ($from_id == $to_id && $from_clang == $to_clang) {
        return false;
    }
    $gc = new 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}'");
    if ($gc->getRows() == 1) {
        // letzt slice_id des ziels holen ..
        $glid = new 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 r1.article_id={$to_id} and r1.clang={$to_clang} and r2.id is NULL;");
        if ($glid->getRows() == 1) {
            $to_last_slice_id = $glid->getValue("r1.id");
        } else {
            $to_last_slice_id = 0;
        }
        $ins = new sql();
        // $ins->debugsql = 1;
        $ins->setTable($REX['TABLE_PREFIX'] . "article_slice");
        $cols = new 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 = addslashes($gc->getValue("{$colname}"));
            }
            if ($colname != "id") {
                $ins->setValue($colname, $value);
            }
        }
        $ins->insert();
        // id holen und als re setzen und weitermachen..
        rex_copyContent($from_id, $to_id, $from_clang, $to_clang, $gc->getValue("id"));
        return true;
    }
    rex_generateArticle($to_id);
    return true;
}
Exemplo n.º 2
0
                 next($tar->message);
             }
         }
     }
 } elseif ($dbanlegen == 4) {
     // ----- community0.5 anlegen
     $REX[version] = "2.7";
     // ----- db anlegen
     $file_temp = "include/install/community0.5_redaxo2.7.sql";
     $h = fopen($file_temp, "r");
     $conts = fread($h, filesize($file_temp));
     $all = explode("\n", $conts);
     $add = new sql();
     // $add->debugsql = 1;
     foreach ($all as $hier) {
         $add->setquery(Trim(str_replace("||||||+N+||||||", "\n", $hier), ";"));
         $add->flush();
     }
     // ----- dateien anlegen
     $file_temp = $REX[INCLUDE_PATH] . "/install/community0.5_redaxo2.7.tar.gz";
     $tar = new tar();
     $tar->openTAR($file_temp);
     if (!$tar->extractTar()) {
         $err_msg = $I18N->msg("problem_when_extracting") . "<br>";
         if (count($tar->message) > 0) {
             $err_msg .= $I18N->msg("create_dirs_manually") . "<br>";
             reset($tar->message);
             for ($fol = 0; $fol < count($tar->message); $fol++) {
                 $err_msg .= key($tar->message) . "<br>";
                 next($tar->message);
             }
Exemplo n.º 3
0
 }
 if (count($key) > 0) {
     $query .= ", PRIMARY KEY(";
     for ($k = 0, reset($key); $k < count($key); $k++, next($key)) {
         // <-- yeah super for schleife, rock 'em hard :)
         $query .= current($key);
         if ($k + 1 != count($key)) {
             $query .= ",";
         }
     }
     $query .= ")";
 }
 $query .= ")TYPE=MyISAM;";
 $dump .= $query . "\n";
 $cont = new sql();
 $cont->setquery("SELECT * FROM " . $tabs->getvalue("Tables_in_" . $DB[1][NAME]));
 for ($j = 0; $j < $cont->rows; $j++, $cont->next()) {
     $query = "INSERT INTO " . $tabs->getvalue("Tables_in_" . $DB[1][NAME]) . " VALUES (";
     $cols->counter = 0;
     for ($k = 0; $k < $cols->rows; $k++, $cols->next()) {
         if (is_numeric($cont->getvalue($cols->getvalue("Field")))) {
             $query .= "'" . $cont->getvalue($cols->getvalue("Field")) . "'";
         } else {
             $query .= "'" . addslashes($cont->getvalue($cols->getvalue("Field"))) . "'";
         }
         if ($k + 1 != $cols->rows) {
             $query .= ",";
         }
     }
     $query .= ");";
     $dump .= str_replace("\n", "||||||+N+||||||", $query) . "\n";
Exemplo n.º 4
0
 }
 if (count($key) > 0) {
     $query .= ", PRIMARY KEY(";
     for ($k = 0, reset($key); $k < count($key); $k++, next($key)) {
         // <-- yeah super for schleife, rock 'em hard :)
         $query .= current($key);
         if ($k + 1 != count($key)) {
             $query .= ",";
         }
     }
     $query .= ")";
 }
 $query .= ")TYPE=MyISAM;";
 $dump .= $query . "\n";
 $cont = new sql();
 $cont->setquery("SELECT * FROM " . $tab);
 for ($j = 0; $j < $cont->rows; $j++, $cont->next()) {
     $query = "INSERT INTO " . $tab . " VALUES (";
     $cols->counter = 0;
     for ($k = 0; $k < $cols->rows; $k++, $cols->next()) {
         $con = $cont->getvalue($cols->getvalue("Field"));
         if (is_numeric($con)) {
             $query .= "'" . $con . "'";
         } else {
             $query .= "'" . addslashes($con) . "'";
         }
         if ($k + 1 != $cols->rows) {
             $query .= ",";
         }
     }
     $query .= ");";
/**
 * Erstellt einen SQL Dump, der die aktuellen Datebankstruktur darstellt
 * @return string SQL Dump der Datenbank
 */
function rex_a1_export_db()
{
    global $REX;
    $tabs = new sql();
    $tabs->setquery("SHOW TABLES");
    $dump = '';
    for ($i = 0; $i < $tabs->rows; $i++, $tabs->next()) {
        $tab = $tabs->getValue("Tables_in_" . $REX['DB']['1']['NAME']);
        if (strstr($tab, $REX['TABLE_PREFIX']) == $tab && $tab != $REX['TABLE_PREFIX'] . 'user') {
            $cols = new sql();
            $cols->setquery("SHOW COLUMNS FROM " . $tab);
            $query = "DROP TABLE IF EXISTS " . $tab . ";\nCREATE TABLE " . $tab . " (";
            $key = array();
            // Spalten auswerten
            for ($j = 0; $j < $cols->rows; $j++, $cols->next()) {
                $colname = $cols->getValue("Field");
                $coltype = $cols->getValue("Type");
                // Null Werte
                if ($cols->getValue("Null") == 'YES') {
                    $colnull = "NULL";
                } else {
                    $colnull = "NOT NULL";
                }
                // Default Werte
                if ($cols->getValue("Default") != '') {
                    $coldef = "DEFAULT " . $cols->getValue("Default") . " ";
                } else {
                    $coldef = "";
                }
                // Spezial Werte
                $colextra = $cols->getValue("Extra");
                if ($cols->getValue("Key") != '') {
                    $key[] = $colname;
                    $colnull = "NOT NULL";
                }
                $query .= " {$colname} {$coltype} {$colnull} {$coldef} {$colextra}";
                if ($j + 1 != $cols->rows) {
                    $query .= ",";
                }
            }
            // Primärschlüssel Auswerten
            if (count($key) > 0) {
                $query .= ", PRIMARY KEY(";
                for ($k = 0, reset($key); $k < count($key); $k++, next($key)) {
                    // <-- yeah super for schleife, rock 'em hard :)
                    $query .= current($key);
                    if ($k + 1 != count($key)) {
                        $query .= ",";
                    }
                }
                $query .= ")";
            }
            $query .= ")TYPE=MyISAM;";
            $dump .= $query . "\n";
            // Inhalte der Tabelle Auswerten
            $cont = new sql();
            $cont->setquery("SELECT * FROM " . $tab);
            for ($j = 0; $j < $cont->rows; $j++, $cont->next()) {
                $query = "INSERT INTO " . $tab . " VALUES (";
                $cols->counter = 0;
                for ($k = 0; $k < $cols->rows; $k++, $cols->next()) {
                    $con = $cont->getValue($cols->getValue("Field"));
                    if (is_numeric($con)) {
                        $query .= "'" . $con . "'";
                    } else {
                        $query .= "'" . addslashes($con) . "'";
                    }
                    if ($k + 1 != $cols->rows) {
                        $query .= ",";
                    }
                }
                $query .= ");";
                $dump .= str_replace(array("\r\n", "\n"), '\\r\\n', $query) . "\n";
            }
        }
    }
    // Versionsstempel hinzufügen
    $dump = str_replace("\r", "", $dump);
    $header = "## Redaxo Database Dump Version " . $REX['VERSION'] . "\n";
    $header .= "## Prefix " . $REX['TABLE_PREFIX'] . "\n";
    return $header . $dump;
}