コード例 #1
0
 function rex_sql($DBID = 1)
 {
     global $REX;
     $this->debugsql = false;
     $this->selectDB($DBID);
     if ($REX['MYSQL_VERSION'] == '') {
         // ggf. Strict Mode abschalten
         $this->setQuery('SET SQL_MODE=""');
         // MySQL Version bestimmen
         $res = $this->getArray('SELECT VERSION() as VERSION');
         if (preg_match('/([0-9]+\\.([0-9\\.])+)/', $res[0]['VERSION'], $matches)) {
             $REX['MYSQL_VERSION'] = $matches[1];
         } else {
             exit('Could not identifiy MySQL Version!');
         }
         // connection auf UTF8 trimmen
         if (rex_lang_is_utf8()) {
             if (function_exists('mysql_set_charset') and version_compare($REX['MYSQL_VERSION'], '5.0.7', '>=')) {
                 mysql_set_charset('utf8', $this->identifier);
             } else {
                 $this->setQuery('SET NAMES utf8');
             }
         }
     }
     $this->flush();
 }
コード例 #2
0
function rex_install_prepare_query($qry)
{
    global $REX;
    // $REX['USER'] gibts im Setup nicht
    if (isset($REX['USER'])) {
        $qry = str_replace('%USER%', $REX['USER']->getValue('login'), $qry);
    }
    $qry = str_replace('%TIME%', time(), $qry);
    $qry = str_replace('%TABLE_PREFIX%', $REX['TABLE_PREFIX'], $qry);
    $qry = str_replace('%TEMP_PREFIX%', $REX['TEMP_PREFIX'], $qry);
    $qry = trim($qry);
    if (rex_lang_is_utf8() and strpos($qry, 'CREATE TABLE') === 0 and !strpos($qry, 'DEFAULT CHARSET')) {
        $qry .= ' DEFAULT CHARSET=utf8';
    } elseif (!rex_lang_is_utf8() and strpos($qry, 'CREATE TABLE') === 0 and !strpos($qry, 'DEFAULT CHARSET')) {
        $qry .= ' DEFAULT CHARSET=latin1';
    }
    return $qry;
}
コード例 #3
0
        </script>';
}
// ---------------------------------- MODUS 3 | Datenbank anlegen ...
if ($checkmodus == 3 && $send == 1) {
    $err_msg = '';
    $dbanlegen = rex_post('dbanlegen', 'int', '');
    // -------------------------- Benˆtigte Tabellen pr¸fen
    $requiredTables = array($REX['TABLE_PREFIX'] . 'action', $REX['TABLE_PREFIX'] . 'article', $REX['TABLE_PREFIX'] . 'article_slice', $REX['TABLE_PREFIX'] . 'clang', $REX['TABLE_PREFIX'] . 'file', $REX['TABLE_PREFIX'] . 'file_category', $REX['TABLE_PREFIX'] . 'module_action', $REX['TABLE_PREFIX'] . 'module', $REX['TABLE_PREFIX'] . 'template', $REX['TABLE_PREFIX'] . 'user');
    if ($dbanlegen == 4) {
        // ----- vorhandenen seite updaten
        $import_sql = $REX['INCLUDE_PATH'] . '/install/update4_x_to_4_3.sql';
        if ($err_msg == '') {
            $err_msg .= rex_setup_import($import_sql);
        }
        // Aktuelle Daten updaten wenn utf8, da falsch in v4.2.1 abgelegt wurde.
        if (rex_lang_is_utf8()) {
            rex_setup_setUtf8();
        }
        if ($err_msg == '') {
            $err_msg .= rex_setup_addons();
        }
    } elseif ($dbanlegen == 3) {
        // ----- vorhandenen Export importieren
        $import_name = rex_post('import_name', 'string');
        if ($import_name == '') {
            $err_msg .= '<p>' . $I18N->msg('setup_03701') . '</p>';
        } else {
            $import_sql = getImportDir() . '/' . $import_name . '.sql';
            $import_archiv = getImportDir() . '/' . $import_name . '.tar.gz';
            // Nur hier zuerst die Addons installieren
            // Da sonst Daten aus dem eingespielten Export
コード例 #4
0
ファイル: functions.inc.php プロジェクト: olien/rexsearch
function a587_getFiles($_startDir = '', $_fileexts = array(), $_getSubdirs = false)
{
    global $REX;
    $return = array();
    $fileextPattern;
    if (!empty($_fileexts)) {
        $fileextPattern = '~\\.(' . implode('|', $_fileexts) . ')$~is';
    } else {
        $fileextPattern = '~\\.([^.]+)$~is';
    }
    $startDepth = substr_count($_startDir, '/');
    if (@is_dir($_SERVER['DOCUMENT_ROOT'] . $_startDir)) {
        $dirs2 = array_diff(scandir($_SERVER['DOCUMENT_ROOT'] . $_startDir), array('.', '..'));
    } else {
        return array();
    }
    $dirs = array();
    foreach ($dirs2 as $k => $dir) {
        if (@is_dir($_SERVER['DOCUMENT_ROOT'] . $_startDir . '/' . $dir)) {
            $dirs[$_SERVER['DOCUMENT_ROOT'] . $_startDir . '/' . $dir] = $_startDir . '/' . $dir;
        } elseif (preg_match($fileextPattern, $dir)) {
            $return[] = rex_lang_is_utf8() ? utf8_encode($_startDir . '/' . $dir) : $_startDir . '/' . $dir;
        }
    }
    if (!$_getSubdirs) {
        return $return;
    }
    while (!empty($dirs)) {
        $dir = array_shift($dirs);
        $depth = substr_count($dir, '/') - $startDepth;
        if (@is_dir($_SERVER['DOCUMENT_ROOT'] . $dir) and $depth <= $REX['ADDON']['settings']['rexsearch']['dirdepth']) {
            $subdirs = array();
            foreach (array_diff(scandir($_SERVER['DOCUMENT_ROOT'] . $dir), array('.', '..')) as $subdir) {
                if (@is_dir($_SERVER['DOCUMENT_ROOT'] . $dir . '/' . $subdir)) {
                    $subdirs[] = $dir . '/' . $subdir;
                } elseif (preg_match($fileextPattern, $subdir)) {
                    $return[] = rex_lang_is_utf8() ? utf8_encode($dir . '/' . $subdir) : $dir . '/' . $subdir;
                }
            }
            array_splice($dirs, 0, 0, $subdirs);
        } elseif (preg_match($fileextPattern, $subdir)) {
            $return[] = rex_lang_is_utf8() ? utf8_encode($dir) : $dir;
        }
    }
    return $return;
}
コード例 #5
0
ファイル: functions.inc.php プロジェクト: olien/rexsearch
function a685_encodeRegex($_regex)
{
    if (rex_lang_is_utf8()) {
        return utf8_encode($_regex . 'u');
    } else {
        return $_regex;
    }
}
コード例 #6
0
/**
 * Importiert den SQL Dump $filename in die Datenbank
 *
 * @param string Pfad + Dateinamen zur SQL-Datei
 *
 * @return array Gibt ein Assoc. Array zurück.
 *               'state' => boolean (Status ob fehler aufgetreten sind)
 *               'message' => Evtl. Status/Fehlermeldung
 */
function rex_a1_import_db($filename)
{
    global $REX, $I18N;
    $return = array();
    $return['state'] = false;
    $return['message'] = '';
    $msg = '';
    $error = '';
    if ($filename == '' || substr($filename, -4, 4) != ".sql") {
        $return['message'] = $I18N->msg('im_export_no_import_file_chosen_or_wrong_version') . '<br>';
        return $return;
    }
    $conts = rex_get_file_contents($filename);
    // Versionsstempel prüfen
    // ## Redaxo Database Dump Version x.x
    $version = strpos($conts, '## Redaxo Database Dump Version ' . $REX['VERSION']);
    if ($version === false) {
        $return['message'] = $I18N->msg('im_export_no_valid_import_file') . '. [## Redaxo Database Dump Version ' . $REX['VERSION'] . '] is missing';
        return $return;
    }
    // Versionsstempel entfernen
    $conts = trim(str_replace('## Redaxo Database Dump Version ' . $REX['VERSION'], '', $conts));
    // Prefix prüfen
    // ## Prefix xxx_
    if (preg_match('/^## Prefix ([a-zA-Z0-9\\_]*)/', $conts, $matches) && isset($matches[1])) {
        // prefix entfernen
        $prefix = $matches[1];
        $conts = trim(str_replace('## Prefix ' . $prefix, '', $conts));
    } else {
        // Prefix wurde nicht gefunden
        $return['message'] = $I18N->msg('im_export_no_valid_import_file') . '. [## Prefix ' . $REX['TABLE_PREFIX'] . '] is missing';
        return $return;
    }
    // Charset prüfen
    // ## charset xxx_
    if (preg_match('/^## charset ([a-zA-Z0-9\\_\\-]*)/', $conts, $matches) && isset($matches[1])) {
        // charset entfernen
        $charset = $matches[1];
        $conts = trim(str_replace('## charset ' . $charset, '', $conts));
        if ($I18N->msg('htmlcharset') == 'utf-8' and $charset != 'utf-8') {
            $conts = utf8_encode($conts);
        } elseif ($I18N->msg('htmlcharset') != $charset) {
            $return['message'] = $I18N->msg('im_export_no_valid_charset') . '. ' . $I18N->msg('htmlcharset') . ' != ' . $charset;
            return $return;
        }
    }
    // Prefix im export mit dem der installation angleichen
    if ($REX['TABLE_PREFIX'] != $prefix) {
        // Hier case-insensitiv ersetzen, damit alle möglich Schreibweisen (TABLE TablE, tAblE,..) ersetzt werden
        // Dies ist wichtig, da auch SQLs innerhalb von Ein/Ausgabe der Module vom rex-admin verwendet werden
        $conts = preg_replace('/(TABLES? `?)' . preg_quote($prefix, '/') . '/i', '$1' . $REX['TABLE_PREFIX'], $conts);
        $conts = preg_replace('/(INTO `?)' . preg_quote($prefix, '/') . '/i', '$1' . $REX['TABLE_PREFIX'], $conts);
        $conts = preg_replace('/(EXISTS `?)' . preg_quote($prefix, '/') . '/i', '$1' . $REX['TABLE_PREFIX'], $conts);
    }
    // ----- EXTENSION POINT
    $filesize = filesize($filename);
    $msg = rex_register_extension_point('A1_BEFORE_DB_IMPORT', $msg, array('content' => $conts, 'filename' => $filename, 'filesize' => $filesize));
    // require import skript to do some userside-magic
    rex_a1_import_skript(str_replace('.sql', '.php', $filename), REX_A1_IMPORT_DB, REX_A1_IMPORT_EVENT_PRE);
    if (!function_exists('PMA_splitSqlFile')) {
        include_once $REX['INCLUDE_PATH'] . '/functions/function_rex_addons.inc.php';
    }
    // Datei aufteilen
    $lines = array();
    PMA_splitSqlFile($lines, $conts, 0);
    $sql = rex_sql::factory();
    foreach ($lines as $line) {
        $line['query'] = trim($line['query']);
        if (rex_lang_is_utf8() and strpos($line['query'], 'CREATE TABLE') === 0 and !strpos($line['query'], 'DEFAULT CHARSET')) {
            $line['query'] .= ' DEFAULT CHARSET=utf8';
        } elseif (!rex_lang_is_utf8() and strpos($line['query'], 'CREATE TABLE') === 0 and !strpos($line['query'], 'DEFAULT CHARSET')) {
            $line['query'] .= ' DEFAULT CHARSET=latin1';
        }
        $sql->setQuery($line['query']);
        if ($sql->hasError()) {
            $error .= "\n" . $sql->getError();
        }
    }
    if ($error != '') {
        $return['message'] = trim($error);
        return $return;
    }
    $msg .= $I18N->msg('im_export_database_imported') . '. ' . $I18N->msg('im_export_entry_count', count($lines)) . '<br />';
    unset($lines);
    // prüfen, ob eine user tabelle angelegt wurde
    $tables = rex_sql::showTables();
    $user_table_found = in_array($REX['TABLE_PREFIX'] . 'user', $tables);
    if (!$user_table_found) {
        $create_user_table = '
    CREATE TABLE ' . $REX['TABLE_PREFIX'] . 'user
     (
       user_id int(11) NOT NULL auto_increment,
       name varchar(255) NOT NULL,
       description text NOT NULL,
       login varchar(50) NOT NULL,
       psw varchar(50) NOT NULL,
       status varchar(5) NOT NULL,
       rights text NOT NULL,
       login_tries tinyint(4) NOT NULL DEFAULT 0,
       createuser varchar(255) NOT NULL,
       updateuser varchar(255) NOT NULL,
       createdate int(11) NOT NULL DEFAULT 0,
       updatedate int(11) NOT NULL DEFAULT 0,
       lasttrydate int(11) NOT NULL DEFAULT 0,
       session_id varchar(255) NOT NULL,
       PRIMARY KEY(user_id)
     ) ENGINE=MyISAM';
        if (rex_lang_is_utf8()) {
            $create_user_table .= ' DEFAULT CHARSET=utf8';
        } else {
            $create_user_table .= ' DEFAULT CHARSET=latin1';
        }
        $db = rex_sql::factory();
        $db->setQuery($create_user_table);
        $error = $db->getError();
        if ($error != '') {
            // evtl vorhergehende meldungen löschen, damit nur der fehler angezeigt wird
            $msg = '';
            $msg .= $error;
        }
    }
    // generated neu erstellen, wenn kein Fehler aufgetreten ist
    if ($error == '') {
        // ----- EXTENSION POINT
        $msg = rex_register_extension_point('A1_AFTER_DB_IMPORT', $msg, array('content' => $conts, 'filename' => $filename, 'filesize' => $filesize));
        // require import skript to do some userside-magic
        rex_a1_import_skript(str_replace('.sql', '.php', $filename), REX_A1_IMPORT_DB, REX_A1_IMPORT_EVENT_POST);
        $msg .= rex_generateAll();
        $return['state'] = true;
    }
    $return['message'] = $msg;
    return $return;
}
コード例 #7
0
ファイル: class.stats.inc.php プロジェクト: olien/rexsearch
    function createTestData()
    {
        $this->flushSQL();
        $str = '
Wir bieten Ihnen leckeres Essen, frische Steinofenpizza, verschiedene Pastavariationen und frische Salate für die ganze Familie, 
Drinks in geselliger Runde oder an unserer Bar, einen gemütlichen Biergarten, Fremdenzimmer zu fairen Preisen und ab sofort auch 
Pizza auf Bestellung (zum selber Abholen, kein Lieferservice). Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam 
nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo 
dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet,
consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. 
At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor
sit amet. Werde kostenlos Mitglied in der party.de-Community! Hier treffen sich in erster Linie Feierleute, die gleichgesinnte kennenlernen
wollen, neue Freundschaften schliessen möchten und sich oftmals auch im realen Leben verabreden. Klick hier, um Mitglied zu werden.
Die Zwitter kommen: PC-Monitore im Breitbildformat sind angesagt, darunter immer öfter Modelle mit integriertem TV-Empfänger. Sie 
sind die erste Wahl für alle, die nur Platz für ein Gerät haben oder am Schreibtisch auch mal fernsehen möchten. test hat vier Kombi­
geräte mit zwölf reinen PC-Bildschirmen verglichen. Probleme gabs nur im Detail.';
        $splitregex = '~\\W+~ism';
        if (rex_lang_is_utf8()) {
            $str = utf8_encode($str);
            $splitregex .= 'u';
        }
        $terms = array_unique(preg_split($splitregex, $str));
        for ($i = 0; $i <= 100000; $i++) {
            $this->insert($terms[rand(0, count($terms) - 1)], rand(0, 8), date('Y-m-d H:i:s', time() - mt_rand(30000, 100000) * rand(0, 700)));
        }
    }
コード例 #8
0
ファイル: functions.mb.inc.php プロジェクト: olien/rexsearch
 function mb_internal_encoding()
 {
     return rex_lang_is_utf8() ? 'UTF-8' : 'ISO-8859-15';
 }