MKPortal SingleBoard  1.4.2  Invision Power Board 1.3
Mod Beschreibung MKPortal for Invisionboard (Please read the instructions below)
Mod Kompatibilität Invision Power Board 1.3
Mod Kategorie Major Mod
Mod Autor Coder: Meo, Peter
Designer: Kim
Tester and Translator: Our team at mkportal.it
Mod Emailadresse des Autors luponero@mclink.it, Peter@ibforen.de
Dokumentationspfad sources/mods/mkportal/mod_mkportal_howto.htm
Mod Version 1.4.2
Hinweis Weitergabe ohne Zustimmung ist untersagt. Download von ibforen.de oder invisionize.com
Alle Änderungen sind am mod_token zu erkennen

Dieses html-howto wurde erstellt mit The ModInstaller 1.3.2 von
Peter@ibforen.de, released on 8th January, 2007
Erstellungsdatum: 2007-09-11

Es darf ohne ausdrückliche Genehmigung nicht weiterverwendet werden.

Hinweis
  • Dieser Mod ist keine Freeware.
  • Eine Weitergabe dieser Anleitung oder einer der Mod-Dateien ist untersagt. Die Distribution des Mods und seiner Dateien ist nur mit meiner ausdrücklichen Genehmigung gestattet.
  • Die Anpassung des Mods an die Skins des eigenen Boards ist ausdrücklich gewünscht. Dabei darf jedoch nicht mein Copyright verletzt werden und abgewandelte Codeteile weitervertrieben werden.
  • Eine Verletzung dieser Regelung führt letztendlich dazu, dass ich künftig keine frei verfügbaren Modifikationen mehr produziere. In diesem Sinne bitte ich darum, die schöpferische Leistung aller Programmierer zu respektieren und die Urheberschaften zu beachten.
Mod Token mod_mkportal

 Inhalt

1 History und Change Logs
2 Veränderungen
3 Kopieren
4 Kodieren
5 Anpassen
6 Kommentar
7 Ältere History und Change Logs

 1.  History und Change Logs

1.4.2
1.3 Final ⇒ 1.4Es müssen sämtliche Dateien ausgetauscht und eine Neuinstallation im IPB ACP durchgeführt werden.
Bei einem Upgrade eines bestehenden MKPortals 1.3 muss das Upgradescript upgrade_13_14.php aufgerufen werden. Das Script sollte anschließend gelöscht werden.

 2.  Veränderungen
Changed file Changed function
index.php body
sources/Drivers/mySQL.php class properties or methods
sources/Drivers/mySQL.php query(..)
sources/functions.php authorise(..)
sources/functions.php board_offline(..)
sources/functions.php class properties or methods
sources/functions.php do_output(..)
sources/functions.php do_output(..), do_output(..)
sources/functions.php Error(..)
sources/lib/emailer.php build_headers(..)
sources/Login.php delete_cookies(..)

 3.  Kopieren

Entpacken
Entpacke das ZIP-Archiv. In dem Archiv befindet sich der Ordner ./ uploads mit zwei weiteren Ordnern Invisionboard und mkportal.

Kopiere die Invisionboard Dateien
Kopiere alle Dateien und Ordner im Ordner Invisionboard in das Hauptverzeichnis deines IPB und achte auf die Verzeichnisstruktur.
Am besten kpopierst du einfach den gesamten Inhalt des Ordner Invisionboard.Er ist bereits vorstrukturiert.
Kopiere die MKPortal Dateien

Neue Installation
Upgrade
Befolge die gleiche Anweisungen wie oben, kopiere aber nicht die Datei mkportal/conf_mk.php. Überschreibe diese Datei nicht, denn sie enthält die Konfiguration des bisherigen MKPortals.
Achtung:
Wenn bereits neue Blöcke erzeugt worden sind, so sollte auch lang_update nach lang kopiert werden und nicht der Ordner lang.

Nach diesen Schritten liegt folgende Struktur vor:Beispiel
Nehmen wir an, das Invisionboard befindet sich in /home/htdocs/forum, dann sollte die folgende Struktur vorliegen:
Berechtigungen (chmod)
Nun müssen einige Rechte auf die Verzteichnisse und Dateien gesetzt werden.(Manchmal kann man niedrigere Rechte setzen, aber nur dann, wenn man den Benutzer (bzw. Gruppe) kennt, unter dem das Script auf das Dateisystem zugreift)

Verwende dein FTP-Programm und setze die Berechtigungen wie folgt:
  1. mkportal itself: 0777
  2. mkportal/conf_mk.php: 0666
  3. mkportal/blog: 0777
  4. mkportal/cache: 0777
  5. mkportal/files: 0777
  6. mkportal/files/downloads: 0777
  7. mkportal/files/gallery: 0777
  8. mkportal/files/reviews: 0777
  9. mkportal/files/uploads: 0777
  10. mkportal/lang/xx: 0777 (alle Unterverzeichnisse in diesem Verzeichnis)
  11. mkportal/lang/xx/xx: 0666 (alle Dateien in den Unterverzeichnissen, nicht aber das Verzeichnis admin).

 4.  Kodieren


Schritt  1:  Öffne index.php

  A. Suche

$DB->obj['sql_tbl_prefix']   = $INFO['sql_tbl_prefix'];

     Füge darunter ein den blauen Code

$DB->obj['sql_tbl_prefix']   = $INFO['sql_tbl_prefix'];



//-- mod_mkportal begin
    define('IN_FORUM', TRUE);
    define("MK_PATH", "../");
    require MK_PATH."mkportal/conf_mk.php";
    if ($MK_CONFIG['forum_view'] == "1") {
        unset ($DB);
        require MK_PATH."mkportal/include/mk_mySQL.php";
        $DB = new mk_db_driver( $INFO['sql_database'],
                                $INFO['sql_user'],
                                $INFO['sql_pass'],
                                $INFO['sql_host'],
                                $INFO['sql_tbl_prefix'],
                                $MK_CONFIG['mk_tbl_prefix'],
                                $INFO['debug_level']
                                );
    }
//-- mod_mkportal end


  B. Suche

$skin_universal = $std->load_template('skin_global');

     Füge darunter ein den blauen Code

$skin_universal = $std->load_template('skin_global');



//-- mod_mkportal begin
    define('IN_MK', TRUE);
    if ($MK_CONFIG['forum_view'] == "1") {
        require MK_PATH."mkportal/include/functions.php";
        require "$mklib->template_path/tpl_main.php";
    }
//-- mod_mkportal end



Schritt  2:  Öffne sources/functions.php

  A. Suche in function Error(..)

        }


        $print = new display();

     Füge darunter ein den blauen Code

        }


        $print = new display();



//-- mod_mkportal begin
        global $MK_CONFIG, $Skin, $mklib;
        if (!defined("IN_IPB")) {
            $this->boink_it($MK_CONFIG['forum_path']."/index.php");
        }
        if (!defined("IN_MK")) {
            define('IN_MK', TRUE);
            require MK_PATH."mkportal/include/functions.php";
            require "$mklib->template_path/tpl_main.php";
        }
        if ($MK_CONFIG['forum_view'] == "1") {
            if (!class_exists("mkportal") ) {
                if (file_exists(ROOT_PATH."sources/mods/mkportal/mod_mkportal_func.php")) {
                    require ROOT_PATH."sources/mods/mkportal/mod_mkportal_func.php";
                }
                else {
                    die("Could not call required function from file 'sources/mods/mkportal/mod_mkportal_func.php'<br />Does it exist?");
                }
            }
            $print->add_output($mkportal->insert_js());
            $print->add_output($html);
            $print->to_print = str_replace( "<% MEMBER BAR %>", "", $print->to_print);
            $FORUM_OUT = $mkportal->clean_html($print->to_print);
            $mklib->forum['js'] = $FORUM_OUT['js'];
            $mklib->forum['css'] = $FORUM_OUT['css'];
            $mklib->printpage(!$mklib->forumcs, !$mklib->forumcd, $mklib->sitename."->".$ibforums->lang['error_title'], $FORUM_OUT['html']);
            exit();
        }
//-- mod_mkportal end


  B. Suche in function board_offline(..)

        $html = $skin_universal->board_offline( $msg );

        $print = new display();

     Füge darunter ein den blauen Code

        $html = $skin_universal->board_offline( $msg );

        $print = new display();



//-- mod_mkportal begin
        global $MK_CONFIG;
        if ($MK_CONFIG['forum_view'] == "1") {
            $TAGS = $DB->query("SELECT macro_value, macro_replace FROM ibf_macro WHERE macro_set={$ibforums->skin['macro_id']}");
            while ( $row = $DB->fetch_row($TAGS) ) {
                if ($row['macro_value'] != "") {
                    $print->to_print = str_replace( "<{".$row['macro_value']."}>", $row['macro_replace'], $print->to_print );
                }
            }

            $print->to_print = str_replace("<#IMG_DIR#>", $ibforums->skin['img_dir'], $print->to_print);
            if (!class_exists("mkportal") ) {
                if (file_exists(ROOT_PATH."sources/mods/mkportal/mod_mkportal_func.php")) {
                    require ROOT_PATH."sources/mods/mkportal/mod_mkportal_func.php";
                }
                else {
                    die("Could not call required function from file 'sources/mods/mkportal/mod_mkportal_func.php'<br />Does it exist?");
                }
            }
            $print->add_output($mkportal->insert_js());
            $print->add_output($html);
            $print->to_print = str_replace( "<% MEMBER BAR %>", "", $print->to_print);
            global $mklib;
            $FORUM_OUT = $mkportal->clean_html($print->to_print);
            $mklib->forum['js'] = $FORUM_OUT['js'];
            $mklib->forum['css'] = $FORUM_OUT['css'];
            $mklib->printpage(!$mklib->forumcs, !$mklib->forumcd, $mklib->sitename."->".$ibforums->lang['offline_title'], $FORUM_OUT['html']);
            exit();
        }
//-- mod_mkportal end


  C. Suche in function do_output(..)

        $nav  = $skin_universal->start_nav();

     Füge darunter ein den blauen Code

        $nav  = $skin_universal->start_nav();



//-- mod_mkportal begin
        global $MK_CONFIG;
        if (!$MK_CONFIG['forum_view']) {
            $nav .= "<a href='".$MK_CONFIG['site_url']."/index.php'>".$MK_CONFIG['site_name']."</a>"."<{F_NAV_SEP}>";
        }
//-- mod_mkportal end


  D. Suche in function do_output(..)

        $this_header  = $skin_universal->BoardHeader();

     Füge darüber ein den blauen Code



//-- mod_mkportal begin
        global $MK_CONFIG;
        if ($MK_CONFIG['forum_view'] == "1" ) {
            if (!class_exists("mkportal") ) {
                if (file_exists(ROOT_PATH."sources/mods/mkportal/mod_mkportal_func.php")) {
                    require ROOT_PATH."sources/mods/mkportal/mod_mkportal_func.php";
                }
                else {
                    die("Could not call required function from file 'sources/mods/mkportal/mod_mkportal_func.php'<br />Does it exist?");
                }
            }
            $this_header  = $mkportal->insert_js();
        } 
        else
//-- mod_mkportal end


        $this_header  = $skin_universal->BoardHeader();

  E. Suche in function do_output(..)

            if ($ibforums->member['show_popup'])

     Füge darüber ein den blauen Code



//-- mod_mkportal begin
            if (empty($output_array['OVERRIDE']) && $MK_CONFIG['forum_view'] != "1") {
                if ($ibforums->member['show_popup']) {
                    $DB->query("UPDATE ibf_members SET show_popup=0 WHERE id={$ibforums->member['id']}");
                    if ( $ibforums->input['act'] != 'Msg' ) {
                        $pm_js = $skin_universal->PM_popup();
                    }
                }
            }
            else {
                $css = preg_replace("`url\s*\(css.php`i", "url(".$ibforums->vars['board_url']."/css.php", $css);
            }
//-- mod_mkportal end


            if ($ibforums->member['show_popup'])

  F. Suche in function do_output(..), do_output(..)

        if ( empty($output_array['OVERRIDE']) )

     Füge darüber ein den blauen Code



//-- mod_mkportal begin
        if (empty($output_array['OVERRIDE']) && $MK_CONFIG['forum_view'] == "1") {
            $ibforums->skin['template'] = str_replace( "<% MEMBER BAR %>", "", $ibforums->skin['template']);
        }
//-- mod_mkportal end


        if ( empty($output_array['OVERRIDE']) )

  G. Suche

        print $ibforums->skin['template'];

        exit;

     Füge darüber ein den blauen Code



//-- mod_mkportal begin
        if ($MK_CONFIG['forum_view'] == "1") {
            if (empty($output_array['OVERRIDE'])) {
                global $mklib;
                $FORUM_OUT = $mkportal->clean_html($ibforums->skin['template']);
                unset($ibforums->skin['template']);
                $mklib->forum['js'] = $FORUM_OUT['js'];
                $mklib->forum['css'] = $FORUM_OUT['css'];
                $nav = str_replace("<{F_NAV_SEP}>", "->", $nav);
                $nav = preg_replace("`<.*?".">`", "", $nav);
                $mklib->printpage(!$mklib->forumcs, !$mklib->forumcd, $mklib->sitename."->".$nav, $FORUM_OUT['html']);
                exit();
            }
            else {
                $ibforums->skin['template'] = preg_replace("`('|\")style_images/`i", "\\1".ROOT_PATH."style_images/", $ibforums->skin['template']);
            }
        }
//-- mod_mkportal end


        print $ibforums->skin['template'];

        exit;

  H. Suche in function authorise(..)

        return $this->member;

    }

     Füge darüber ein den blauen Code



//-- mod_mkportal begin
        if (! $this->member['id'])
        {
            $lang = $std->my_getcookie('language');
            if ($lang) {
                $this->member['language'] = $lang;
            }
            $skin = $std->my_getcookie('skin');
            if ($skin !== FALSE) {
                $this->member['skin'] = $skin;
            }
        }
//-- mod_mkportal end


        return $this->member;

    }


Schritt  3:  Öffne sources/Login.php

  Suche in function delete_cookies(..)

         $std->my_setcookie('forum_read', '-1');

     Füge darunter ein den blauen Code

         $std->my_setcookie('forum_read', '-1');



//-- mod_mkportal begin
         $std->my_setcookie('language', 'en');
//-- mod_mkportal end



Schritt  4:  Öffne sources/lib/emailer.php

  Suche in function build_headers(..)

        $this->mail_headers .= "X-Mailer: IPB PHP Mailer\n";

     Füge darunter ein den blauen Code

        $this->mail_headers .= "X-Mailer: IPB PHP Mailer\n";



//-- mod_mkportal begin
        $offset = $ibforums->vars['time_offset'];
        $offset += $ibforums->vars['time_adjust']/60;
        $offset_h = floor(abs($offset));
        $offset_m = round((abs($offset) - $offset_h)*60);
        $offset_h = str_pad($offset_h, 2, "0", STR_PAD_LEFT);
        if ($offset < 0) {
            $offset_h = "-".$offset_h;
        }
        else {
            $offset_h = "+".$offset_h;
        }
        $offset_m = str_pad($offset_m, 2, "0", STR_PAD_LEFT);
        $this->mail_headers .= "Date: ".date("D, d M Y H:i:s ", time()).$offset_h.$offset_m."\n";
//-- mod_mkportal end



Schritt  5:  Öffne sources/Admin/admin_functions.php


Schritt  6:  Öffne sources/Drivers/mySQL.php

  A. Suche

                       'debug'          => 0,

     Füge darunter ein den blauen Code

                       'debug'          => 0,



//-- mod_mkportal begin
                       'debug_level'    => 0,
//-- mod_mkportal end


  B. Suche in function query(..)

        $this->obj['cached_queries'][] = $the_query;

     Füge darüber ein den blauen Code



//-- mod_mkportal begin
        if ($this->obj['debug_level'] >= 3) 
//-- mod_mkportal end


        $this->obj['cached_queries'][] = $the_query;

 5.  Anpassen

Neue Installation des MKportal

Starte das Installationsscript im Ordner mkportal

http://.../mkportal/mk_install.php

und befolge die Anweisungen.


Anpassung des Invisionboard

Zitat

Wichtig
Bevor due die Invisionboard Dateien modifizierst, versichere dich, dass der Mod Customize Date In Your Own language mit dem mod_token mod_customize_date nicht installiert ist. Sollte dies doch der Fall sein, entferne ihn bitte. Dieser Mod ist bereits in MKportal integriert.


Einige Dateien müssen modifiziert werden. Folge den obigen Anweisungen oder verwende den ModInstaller (empfohlen).


Anpassung der Sprachübersetzung für die MKPortal Sprachnamen

Dieser Schritt kann direkt im Kontrollcenter des MKPortals erfolgen. Gehe zu Portal CP ⇒ Einstellungen und ordne den Sprachen des MKPortals die entsprechenden Sprachen des Invisionboards zu.

Integration des MKPortal in das Skinsystem des Invisionboards

MKPortal enthält im Ordner templates einen Ordner Forum_Skin mit dem Template "Forum_Skin".
Neuer MKPortal Skin für das Invisionboard 1.3

Wir haben dem Archiv einen neuen Skin mKPortal_int mit Button in mehreren Sprachen hinzugefügt. Wenn du diesen Skin im ACP des Invisionboards importiert hast, wirst du mehrere Unterordner in style_images/mkportal-xxx finden.

Diese Ordner sind nach Sprachen benannt: en, de, fr, it etc. und ihr Zweck wird unmittelbar einleuchtend sein. Mit den veränderten Invisionboard Dateien wirst du in der Lage sein, unterschiedliche Sprachbutton je nach Benutzersprache anbieten zu können. Die Auswahl erfolgt dann automatisch.
Schau dir den Ordner lang des Invisionboard an und merke dir die Ordnernamen. Sie sind etwa wie en, 2, 3 etc. Schau dir einige Dateien in diesen Ordnern an, damit du weißt, welche Sprache darin gespeichert ist

Nun benenne die neuen Ordner in style_images/mkportal_xxx passend zu den Ordnern in lang.

Du kannst diese Lösung auch für andere Skins des Invisionboard verwenden, falls du Button in verschiedenen Sprachen zur Verfügung hast. Erstelle einfach neue Ordner in style_images/xx, wo sich der Skin befindet und lege die gleiche Struktutr an, wie oben beschrieben. Kopiere dann die die Originalgrafiken aus style_images/xx in diese Ordner und anschließend kopiere die neuen Button in diese Verzeichnisse hinein.

Wenn die Benutzer dann ihre Sprache auswählen, wird Invisionboard diese neuen Ordner verwenden. Wird eine Sprache gewählt, für die kein Unterordner existiert, so wird der Standardordner verwendet.

Upgrade MKportal 0.1 ⇒ MKPortal 1.0.x

Starte das Upgrade Script upgrade.php im Ordner mkportal. Vergiss nicht, diese Datei anschließend zu entfernen.

Upgrade MKportal 1.0.1 ⇒ MKPortal 1.1
  1. Starte das Upgrade Script upgrade_101_11.php im Wurzelverzeichnis deiner Site, also dort, wo sich index.php des Portal befindet. Es wird die Datenbank anpassen.

    Vergiss nicht, diese Datei anschließend zu entfernen.
  2. Entferne alle Modifikationen des Invisionboard, die eine frühere MKPortal-Installation vorgenommen hat.
  3. Entferne alle Modifikationen des Invisionboard, die eine frühere Installation des Mod "Customize Date In Your Own Language" vorgenommen hat (falls notwendig). Verwende am besten den ModInstaller (empfohlen).
  4. Modifiziere dann die Invisionboard Dateien wie oben beschrieben. Folge den Anweisungen sorgfältig oder verwende den ModInstaller (empfohlen).
  5. Gehe dann in das Portal Kontrollcenter und setze die Optionen nach deinen Vorgaben.

Upgrade MKportal 1.1a ⇒ MKPortal 1.2
  1. Starte das Upgrade Script upgrade_11a_12.php im Wurzelverzeichnis deiner Site, also dort, wo sich index.php des Portal befindet. Es wird die Datenbank anpassen.

    Vergiss nicht, diese Datei anschließend zu entfernen.
  2. Gehe dann in das Portal Kontrollcenter und setze die Optionen nach deinen Vorgaben.

Upgrade MKportal 1.2 ⇒ MKPortal 1.3
  1. Alle Dateien austauschen wie oben beschrieben.
  2. Einen neuen Ordner ./mkportal/files/uploads anlegen und mit den Rechten 0777 ausstatten
  3. Für die Invisionboard-Skins gibt es eine neue mod_mkportal_skin.php. Kopiere sie in die Skin-Ordner und passe sie eventuell an.
  4. Gehe dann in das Portal Kontrollcenter und setze die Optionen nach deinen Vorgaben.

 6.  Kommentar

Feedback ist willkommen und erwünscht. Support und Feedback bei mkportal.it

 7.  Ältere History und Change Logs

1.2 Final ⇒ 1.3Es müssen sämtliche Dateien ausgetauscht und eine Neuinstallation im IPB ACP durchgeführt werden.
Außerdem muss das Upgradescript upgrade_12_13.php aufgerufen werden.

1.2 Final ⇒ 1.3
1.1b Final ⇒ 1.2

General

Admin

User
1.1 Final ⇒ 1.1b