vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 General Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=111)
-   -   GoJIRC with JIRC Integration Hack (https://vborg.vbsupport.ru/showthread.php?t=72420)

GraphicW 12-02-2004 06:57 PM

GoJIRC with JIRC Integration Hack
 
I am attempting to set up GoJIRC through the JIRC integration hack. The only problem with this hack is it seems the only way that $bbuserinfo[username] pulls the username info from the Board is if it is in the template. That is unfortunately not an option with GoJirc since it pulls it's parameter data out of an XML file. Is there anybody here who knows how to get the user name information to transfer so that GoJIRC can be used?

Andreas 12-02-2004 07:05 PM

GoJIRC is a JAVA-Applet that reads a configuration-XML-file from the webserver?
Then just write a PHP-File that outputs the required XML.

GraphicW 12-02-2004 07:47 PM

It reads an XML for the Parameter data. How would I go about creating a PHP file which feeds the XML file? Would this solve my problem with parsing username from the database? THat is all I want to do is parse the current username from the database.

GraphicW 12-02-2004 08:02 PM

Here are the files in question in regard to getting this to work:

First, the chat_chatbit template:

Code:

<table align="center" border="0" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" class="tborder" width="100%">
<tr id="cat">
        <td class="tcat" width="100%"><span class="normalfont"><b>Chat</b></span></td>
</tr>
<tr>
<td class="alt1" width="100%" align="center">

  <script src="config.js" type="text/javascript"></script>
    <script src="inc.js" type="text/javascript"></script>


  <body>

    <div id="body">
      <div id="chatbox">
        <div id="chatbox-top">
          Cavy Compendium Chat
        </div>

        <div id="chatbox-mid">

          <div id="chatbox-mid-head">
            <script type="text/javascript">
              //<![CDATA[
              doWrite('menubar');
              //]]>
            </script>
          </div>

          <script type="text/javascript">
            //<![CDATA[
            smy_doSmileys();
            doWrite('chat');
            //]]>
          </script>

        </div>
      </div>

      <script type="text/javascript">
        //<![CDATA[
        doWrite('status');
        //]]>
      </script>

      <p>
        <img alt="W3C XHTML 1.1" src="script/images/xhtml11.gif" onclick="popup('http://validator.w3.org/check/referer')" height="15" width="94" />&nbsp;&nbsp;
        <img alt="W3C CSS" src="script/images/css.gif" onclick="popup('http://jigsaw.w3.org/css-validator/check/referer')" height="15" width="94" />&nbsp;&nbsp;
        <img alt="Get Firefox" src="script/images/firefox.png" onclick="popup('http://www.mozilla.org/products/firefox')" height="15" width="94" />
      </p>
      <p>
        Web Chat Powered by WillyPS' <a href="javascript:;" onclick="popup('http://gojirc.willyps.com')">GojIRC Front End 2.0</a>.
      </p>
    </div>

    <script type="text/javascript">
      //<![CDATA[
      doWrite('sound');
      //]]>
    </script>

<iframe src="$vboptions[bburl]/chat.php?do=extendsession" width=0 height=0 frameborder=0></iframe>
</td>
</tr>
</table>

Next is the lib.js which includes the call to the XML file:



Code:

// =====================================================================
//
// { GojIRC Front End }
//
// Version: 2.0
// Author: WillyPS
// Web: gojirc.willyps.com
// Copyright (c) 2001 - 2004 WillyPS
//
// File: lib.js
// File Version: 1.0
// Description: Functions' library.
// File Author: WillyPS
//
// ----------------------------------------------------------------------
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// =====================================================================


// ---------------------------------------------------------------------------
//        COMMON JAVASCRIPT API
// ---------------------------------------------------------------------------

// Get an element by it's id
function get(id) {
        return document.getElementById(id);
}

// Echo string
function echo(str) {
        return document.write(str);
}

// Show element
function show(id) {
        var st = '';
        if (id == 'statusbox') { st = 'block'; }
        else { st = 'inline'; }
       
        if (typeof id == 'string'){
                get(id).style.display = st;
        }
        else {
                id.style.display = st;
        }
}

// Hide element
function hide(id) {
        if (typeof id == 'string'){
                get(id).style.display = "none";
        }
        else {
                id.style.display = "none";
        }
}

// Process irc commands.
function command(cmd) {
        get('jchat').processJInput(cmd);
}

// Retrive values (own nick, highlithed nick, current channel)
function read(str) {
        if (typeof get('jchat') != 'undefined') {
                return get('jchat').readJOutput(str);
        }
        else { return f; }
}

// Play Sound.
// Short for playSound() in fsapi mod.
function play(soundObj) {
        if (SoundMod) {
                playSound(soundObj);
        }
}

// Create <param> tag.
function param(name,value) {
        echo('<param name="'+name+'" value="'+value+'" />');
}

// Reset a var's value to blank
// Support multiple values (comma separated list).
function rezet() {
        var arg = rezet.arguments;
        for(i = 0; i < arg.length; i++) {
                var type = typeof arg[i];
                if (type == 'string') { arg[i] = '';}
                else if (type == 'number') { arg[i] = 0; }
                else if (type == 'array') { arg[i] = ['']; }
        }
}

// Preload imgs
function preload() {
        if(document.images) {
                if(typeof document.pimg == 'undefined' || !document.pimg) {
                        document.pimg = new Array();
                        var pm = document.pimg.length, arg = preload.arguments;
                        for(i = 0; i < arg.length; i++) {
                                if (arg[i].indexOf('#') != 0) {
                                        document.pimg[pm] = new Image();
                                        document.pimg[pm++].src = arg[i];
                                }
                        }
                }
        }
}

// Open a pop-up window
function popup(url) {
        window.open(url);
}

// Read datafile
function readFile(datafile) {
        if (document.getElementById) {
                Xml.open('GET',datafile,false);
                Xml.send(null);
                return Xml.responseText;
        }
}



// ---------------------------------------------------------------------------
//        SINGLE FUNCTIONS
// ---------------------------------------------------------------------------

// Concat array params into AppletParams
function concatParams(arr) {
        if (_ns) {
                AppletParams = AppletParams.concat(arr); // for sun's jvm
        }
        else {
                AppletParams = arr.concat(AppletParams); // for msjvm
                AppletParams = AppletParams.concat(arr); // for sun's jvm
        }
}

//
function addParams(prm) {
        // Add parameters from params.xml
        if (prm == 'config' || prm == 'theme') {
                var param, params = readFile(EngineDir+'parameters/default.xml').split('\n');
                for (i = 0; i < params.length; i++) {
                        if (params[i].match('<param ')) {
                                param = params[i].match(/\x22.*\x22/g); // get values inside of comiles
                                if (param != null) {
                                        param = param.toString(); // string it
                                        param = param.replace(/\x22/g,''); // remove comiles
                                        param = param.replace(/value=/,' => '); // replace attribute with delimiter1
                                        concatParams([param]); // add to AppletParams[]
                                }
                        }
                }
        }
        // Add theme params
        if (prm == 'theme') {
                var param, params = readFile(ThemeDir+'params.theme.xml').split('\n');
                for (i = 0; i < params.length; i++) {
                        if (params[i].match('<param ')) {
                                param = params[i].match(/\x22.*\x22/g); // get values inside of comiles
                                if (param != null) {
                                        param = param.toString(); // string it
                                        param = param.replace(/\x22/g,''); // remove comiles
                                        param = param.replace(/value=/,' => '); // replace attribute with delimiter1
                                        concatParams([param]); // add to AppletParams[]
                                        ThemeParams[ThemeParams.length] = param;
                                }
                        }
                }
        }
        // Label wordings from lang file
        if (prm == 'lang') {
                // Use Language[] because for some reason Lang[] doesn't work here.
                for (i = 0; i < (Language.length -1); i++) {
                        if (Language[i].match(/^Applet_/)) {
                                var lparam = Language[i].replace(/^Applet_/,'');
                                lparam = lparam.split(delimiter1);
                                if (lparam[0] == 'FieldNameQuitMsg') {
                                        lparam[1] += ' ? GojIRC ['+ GoVersion +'] ? http://gojirc.willyps.com ?';
                                }
                                concatParams([lparam[0]+' => '+lparam[1]]);
                        }
                }
        }
}

// Add resquested FilterKeys & Vals to FilterParams[].
function addFilter(filt,ext) {
        ext = ext ? ext : '.gif'; // no extension supplied, use .gif
        var loops = (filt[filt.length -1] == '' || filt[filt.length -1] == ' ') ? filt.length -1 : filt.length ;
        for (i = 0; i < loops; i++) {
                var tmp = filt[i].split(delimiter1);
                var sname = tmp[0];
                var svals = tmp[1].split(/\x20/);
                for (j = 0; j < svals.length; j++) {
                        FilterParams[0] += ' '+svals[j]; // Add all available keys
                        FilterParams[1] += ' '+sname+ext; // Add all names for keys
                }
        }
}

// Create Lang[] vars.
function doLang(arr){
        var lang;
        if (typeof arr == 'object') {
                for(i = 0; i < (arr.length -1); i++) {
                        lang = arr[i].split(delimiter1);
                        if (typeof lang[1] == 'undefined') {
                                lang[1] = '';
                        }
                        Lang[lang[0]] = unescape(lang[1]);
                }
        }
}

// Status icon actions when double-clicked.
function statusAction(action) {
        if (AwayOn) {
                gojirc('away');
        }
        else { gojirc('quit'); }
}

// Status image change.
function statusImg(event) {
        if (Theme && (DisplayStatus == '1')) {
                var sicon = get('status-icon');
                if (event == 'disconnex') {
                        sicon.src = ImgStatus[0].src;
                        sicon.title = Lang['Status_IconDisconnected'];
                }
                else if (event == 'connex') {
                        sicon.src = ImgStatus[1].src;
                        sicon.title = Lang['Status_IconConnected'];
                }
                else if (event == 'away') {
                        sicon.src = ImgStatus[2].src;
                        sicon.title = Lang['Status_IconAway'];
                }
        }
}

// Check connex.
// Check if user is connected to the IRC.
function connex() {
        if (jout) { // 2.7.x and up only
                // Connected?
                try {
                        // connected
                        if (read('%$N') == '') { return f; }
                        // not connected
                        else { return read('%$N'); }
                }
                catch (e) {
                        // Stop ReadJOutput error after 3 loops to prevent crashes.
                        if ((typeof errNoReadJOutput != 'undefined') && (errNoReadJOutput > 2)) {
                                EnableReadJOutput = "0";
                                jout = f;
                                return jout;
                        }
                        else {
                                e.filename = (typeof e.filename == 'undefined') ? document.location : e.filename;
                                errNoReadJOutput++;
                                return getError('js',e.name,e.message,e.lineNumber,e.filename,'This error could be related with:\n- jIRC version

incompatibility. Set EnableReadJOutput to cero in config.\n- the applet did not loaded. Check all paths and files are correct.');
                        }
                }
        }
        // 2.6.0 and older
        else { return t; }
}

// Check selected nickname.
function sNick() {
        if (jout) { // 2.7.x and up only
                thissnick = '';
                thissnick = read('%$HN');
                // selected nickname?
                if (thissnick == x || thissnick == '') { return f; }
                // seleted nick
                else { return thissnick; }
        }
        // 2.6.0 support
        else { return t; }
}

// Saves a window session log.
function goLog(ref,event) {
        if (ref == 'dostat') {
                statuslog[statuslog.length] = event; // add to log
                return t;
        }
        else {
                for (i = 0, mystatuslog = ''; i < statuslog.length; i++) {
                        mystatuslog += statuslog[i]+'\n'; // add to active log
                }
                return mystatuslog;
        }
}

// Set IRC Staus messages.
function doStatus(msg) {
        if (DisplayStatus == '1') {
                var statusmsg = get('status-msg'); //var statusmsg = get('status-msg').childNodes[0];
                // add time stamp
                if (TimeStamp == '1') {
                        getUserTime();
                        msg = stamp + msg;
                }
                // apply msg to status
                statusmsg.innerHTML = msg; //statusmsg.nodeValue = msg;
                // add to historial
                goLog('dostat',statusmsg.innerHTML);
        }
}

// Create HTML elements.
function doWrite(type,arg) {
        // Sound object
        if (type == 'sound' && (EnableSound == '1')) {
                // If modules detected, create sound objects.
                if (SoundMod) { doSoundObj(); }
                // No module present
                else { getError('cfg','','No sound module installed or detected!\n\nIf you want to use sounds in GojIRC, install a sound\nmodule (e.g. Flash

Sound) in the Modules section of config.\nOtherwise, consider one of these values for EnableSound\nwich doesn\'t require a sound module:\n\n0\tDisable

sounds\n2\tUse Only Old Load Sound + Applet Sounds\n3\tUse Only Applet Sounds\n\nSet one of the above values in EnableSound in config.'); }
        }
        // Menubar
        if (((type == 'menu') || (type == 'menubar')) && (typeof Menubar == 'object')) {
                doMenu(Menubar,'runCmd','gojirc');
        }
        // Status bar
        if (((type == 'status') || (type == 'statusbar')) && (DisplayStatus == '1')) {
                StatusOn = t;
                echo(
                        '<div id="statusbox">'+
                        '<table id="status">'+
                        '<tr>'+
                        '<td width="3%" id="status-left">'
                );
                if (Modules.toString().match('myoptions')) {
                        echo('<img alt="[opts]" title="'+Lang['Menu_MyOptions']+'" onclick="myo_options()" style="cursor: pointer;"

src="'+ModDir+'myoptions/options.gif" />');
                }
                echo(
                        '</td>'+
                        '<td width="94%" id="status-center">'+
                        '<div id="status-msg">GojIRC Front End '+GoVersion+' by WillyPS</div>'+
                        '</td>'+
                        '<td width="3%" id="status-right">'+
                        '<img alt="'+Lang['Text_Status']+'" id="status-icon" ondblclick="statusAction()" src="'+ImgStatus[1].src+'" />'+
                        '</td>'+
                        '</tr>'+
                        '</table>'+
                        '</div>'
                );
        }
        // Quick bar
        if ((type == 'quick') || (type == 'quickbar')) {
                QuickOn = t;
                echo(
                        'Nick: <a href="javascript:gojirc(\'newnick\')" id="quick_nick">No nick</a>'
                );
        }
        // No Java alt text
        if (type == 'nojava') {
                echo(
                        '<div style="text-align: center;">'+
                        '<div style="margin: 20px 5px 5px;">'+
                        '<span style="font-size: 16px; font-weight: bold;">'+Lang['Text_NoJavaTitle']+'</span><br /><br />'+
                        '<img src="classes/applet_images/duke.gif" alt="Duke says: Bye!" width="55" height="68" /><br /><br

/>'+Lang['Text_NoJavaConsider']+'<br /><br />'+
                        '<div style="margin-left: 20%; text-align: left;">'+Lang['Text_NoJavaOpt']+'<br /></div>'+
                        '</div>'+
                        '</div>'
                );
        }
        // Applet/Object tag
        if ((type == 'applet') || (type == 'object')) {
                if (type == 'applet') {
                        alert(type);
                        if (arg == 'close') { echo('</applet>'); }
                        else {
                                rezet(AppletParams);
                                echo('<applet id="'+jid+'" archive="'+archive+'" codebase="'+codebase+'" code="'+codeclass+'" MAYSCRIPT>');
                                doWrite('appletparams');
                                doWrite('nojava');
                        }
                }
                else {
                        if (arg == 'close') { echo('</object>'); }
                        else {
                                rezet(AppletParams);
                                echo('<object id="'+jid+'" archive="'+archive+'" codebase="'+codebase+'" classid="java:'+codeclass+'"

codetype="application/java">');
                                doWrite('appletparams');
                                doWrite('nojava');
                        }
                }
        }
        // Chat
        if (type == 'chat') {
                var chatopentag = '', chatclosetag = '';
                if (arg == 'obj' || arg == 'object') {
                        chatopentag = '<object classid="java:'+codeclass+'" codetype="application/java"';
                        chatclosetag = '</object>';
                }
                else {
                        chatopentag = '<applet code="'+codeclass+'" MAYSCRIPT';
                        chatclosetag = '</applet>';
                }
                if (jout) {
                        chatopentag += ' codebase="'+codebase+'"';
                }
                chatopentag += ' id="'+jid+'" archive="'+archive+'">';
                echo(chatopentag);
                doWrite('appletparams');
                doWrite('nojava');
                echo(chatclosetag);
        }
        // Applet Params
        if (type == 'appletparams') {
                // CABBASE
                if (arg == 'obj' || arg == 'object') {
                        for (i = 0, tmp = '', _cabbase = cabbase.split(/\x2C/); i < _cabbase.length; i++) {
                                tmp += 'classes/'+_cabbase[i]+',';
                        }
                        cabbase = tmp.slice(0, tmp.length -1);
                        param('CABBASE',cabbase);
                }
                else { param('CABBASE',cabbase); }
                // Filter Params
                if (typeof FilterParams == 'object') {
                        concatParams(FilterParams);
                }
                // Sound params
                if (EnableSound) {
                        // disabled
                        if (EnableSound == '0') {
                                concatParams(['AllowSound => false','AllowJoinSound => false','AllowLeaveSound => false','DisplaySoundControl => false']);
                        }
                        // enable
                        else if (EnableSound != '0') {
                                concatParams(['AllowSound => true','AllowJoinSound => true','AllowLeaveSound => true','DisplaySoundControl => true']);
                        }
                }
                // URL strings
                if (ReqNickname) {
                        ParamNickName = ReqNickname;
                        concatParams(['NickName => '+ReqNickname]);
                }
                if (DirectStart) {
                        var connex = DirectStart ? 'true' : 'false';
                        ParamDirectStart = (connex == 'true') ? '1' : '0';
                        concatParams(['DirectStart => '+connex]);
                }
                // Config.js
                if (LoginCmd) {
                        concatParams(['NickAuthString => '+LoginCmd.replace(/^\x2F/,'')]);
                }
                if (ProfileUrl != '') {
                        concatParams(['UserProfileURL => '+ProfileUrl]);
                }
                // Create channel params from Channels[]
                // To dinamicly add channels, do it in the channel drop-down creation,
                // to avoid duplication in the applet's channel drop-down.
                if (typeof Channels == 'object') {
                        var ChannelsTmp = new Array();
                        for (i = 0, j = 1; i < (Channels.length -1); i++, j++) {
                                tmp = Channels[i].split(delimiter1);
                                ChannelsTmp[i] = 'Channel'+ j +' => '+tmp[0].replace(/^\x23/,'');
                        }
                        concatParams(ChannelsTmp);
                }
                // Add server params from Servers[] to AppletParams[]
                // Needs to be added and not to create params directly from here,
                // because localhost then would not be added (if DevMode).
                if (typeof Servers == 'object') {
                        var ServersTmp = new Array();
                        // If DevMod, add localhost for testing porpouses
                        if (DevMode) {
                                Servers = [localhost].concat(Servers);
                        }
                        for (i = 0, j = 1; i < (Servers.length -1); i++, j++) {
                                ServersTmp[i] = 'ServerName'+ j +' => '+ Servers[i];
                        }
                        concatParams(ServersTmp);
                }
                // Applet params
                if (typeof AppletParams == 'object') {
                        // General applet params
                        for (i = 0, j = 0; i < (AppletParams.length -1); i++) {
                                if (AppletParams[i] != '') {
                                        var aparam = AppletParams[i].split(delimiter1);
                                        // If no value, add a blank one to prevent problems.
                                        if (typeof aparam[1] == 'undefined') {
                                                aparam[1] = '';
                                        }
                                        // Get some params values
                                        if (aparam[0] == 'AliasList') { ParamAliasList = aparam[1]; } // aliases
                                        if (aparam[0] == 'NickName' && !ReqNickname) { ParamNickName = aparam[1]; } // nick
                                        if (aparam[0] == 'RealName') { ParamRealName = aparam[1]; } //realname
                                        if (aparam[0] == 'DirectStart' && !DirectStart) { // direct start
                                                ParamDirectStart = (aparam[1].toLowerCase() == 'true') ? '1' : '0';
                                        }
                                        // RealName
                                        if (aparam[0] == 'RealName') {
                                                aparam[1] += ' ? GojIRC ['+GoVersion+'] ? http://gojirc.willyps.com ?';
                                        }
                                        param(aparam[0],aparam[1]);
                                }
                        }
                }
        }
}

// Menu builder.
// menu array, <select> function, <option> function
function doMenu(menu,selfunc,optfunc) {
                for (i = 0; i < menu.length; i++) {
                        if (menu[i] == '') { break; } // stop loop if blank entry (wich is supposed to be the end)
                        var tmp = menu[i].split(delimiter1);
                        var tag = tmp[0]; // select or option
                        var args = tmp[1]; // tag arguments
                        var option;
                        var props;

                        if (args) {
                                var prop;
                                tmp = args.split(delimiter2);
                                option = tmp[0]; // tag id, title, hr or cmd
                                // lang and arguments
                                if (typeof tmp[1] != 'undefined') { prop = tmp[1]; }
                                else { prop = undefined; }
                        }
                        if (prop) {
                                props = prop.split(delimiter3);
                        }
                        doOption(tag,option,props,selfunc,optfunc);
                }
}

// Build menubar's menus.
function doOption(tag,option,props,selfunc,optfunc) {
        // Tag <select>
        if (tag == 'select' || tag == 'menu') {
                if (option == 'open') {
                        echo('<select size="1" id="'+props+'" onchange="'+selfunc+'(this.id)">');
                        pastselect = props;
                }
                else if (option == 'close'){
                        echo('</select>');
                        get(pastselect).selectedIndex = 0;
                }
        }
        // Tag is <option>
        else if (tag == 'option' || tag == 'item') {
                // Get the value of the respective asosiative Lang[]
                if (typeof props != 'undefined') {
                        var txt;
                        // check if it's a Lang[] asosiative
                        if (props[0].match(/^(Lang\[{1})/g)) {
                                txt = props[0].replace(/(Lang\[\x27)|(\x27\])/g,'');
                                txt = eval('Lang[\''+txt+'\']');
                        }
                        // Use user custome...
                        else { txt = props[0]; }
                }
                // Drop-down title
                if (option == 'title') {
                        echo('<option value="none" selected="selected">'+txt+'</option>');
                }
                // Command option
                else if (option == 'cmd') {
                        if (props[0] == 'channels') { // channels' list.
                                // Requested channel by URL string
                                if (ReqChannel) { Channels = ReqChannel.concat(Channels); }
                                // Use specified channels in Channels[] in config.js...
                                for (j = 0; j < (Channels.length - 1); j++) { // Used j to avoid conflicts with i in doOption().
                                        var ch = Channels[j].split(delimiter1);
                                        if ((typeof ch[1] == 'undefined') || (ch[1] == '') || (ch[1] == ' ') || (ch[1] == x)) { ch[1] = ch[0]; }
                                        echo('<option value="javascript:'+optfunc+'(\'channel\',\''+ch[0]+'\')"

onmouseover="window.status=\''+ch[1]+'\';return true;" onmouseout="window.status=\''+Lang['Text_WinStatus']+'\';return true;">'+ch[1]+'</option>');
                                }
                        }
                        // double argument
                        else if (typeof props[2] != 'undefined' && (props[2] || props[2] != '')) {
                                echo('<option value="javascript:'+optfunc+'(\''+props[1]+'\',\''+props[2]+'\')" id="opt_'+props[1]+'_'+props[2]+'"

onmouseover="window.status=\''+txt+'\';return true;" onmouseout="window.status=\''+Lang['Text_WinStatus']+'\';return true;">'+txt+'</option>');
                        }
                        // single argument
                        else {
                                // Don't write option if no valet config (in config.js)
                                if (props[1] == 'login' && LoginCmd == '') { return t; }
                                if (props[1] == 'register' && RegCmd == '') { return t; }
                                if (props[1] == 'status' && DisplayStatus == '0') { return t; }
                                if (props[1] == 'profile' && ProfileUrl == '') { return t; }
                                if (props[1] == 'channelinfo' && ChannelinfoCmd == '') { return t; }
                                // Write every option
                                else { echo('<option value="javascript:'+optfunc+'(\''+props[1]+'\')" id="opt_'+props[1]+'"

onmouseover="window.status=\''+txt+'\';return true;" onmouseout="window.status=\''+Lang['Text_WinStatus']+'\';return true;">'+txt+'</option>'); }
                        }
                }
                // Horizontal rule
                else if (option == 'hr') {
                        if (typeof props[0] == 'undefined') { props[0] = 'mid'}
                        var hr = props[0];
                        hrcount++;

                        if (hr == 'thiner')                { hr = "--------------"; }
                        else if (hr == 'thin')        { hr = "----------------"; }
                        else if (hr == 'mid')        { hr = "------------------"; }
                        else if (hr == 'wide')        { hr = "--------------------"; }
                        else if (hr == 'wider')        { hr = "----------------------"; }

                        echo('<option value="none" id="hr_'+hrcount+'" onmouseover="window.status=\' \';return true;"

onmouseout="window.status=\''+Lang['Text_WinStatus']+'\';return true;">'+hr+'</option>');
                }
        }
}

// Add option to <select> menu
function addOption(menu,option,props,optfunc,position) {
        // Position ???
        if ((typeof position != 'undefined') && (position != '')) {
                var tomove = new Array();
                // In place of option...
                if (isNaN(position)) {
                        var pid = position; // position is id
                        for (i = 0; i < get(menu).options.length; i++) {
                                if (get(menu).options[i].id == pid) { // match place id
                                        position = i; // position number
                                        // backup options...
                                        for (j = 0; i < get(menu).options.length; i++, j++) {
                                                tomove[j] = get(menu).options[i];
                                        }
                                        // add option
                                        get(menu).options[position] = doAddOption(menu,option,props,optfunc);
                                        // readd backuped options...
                                        for (j = 0; j < tomove.length; j++) {
                                                position++;
                                                get(menu).options[position] = tomove[j];
                                        }
                                }
                        }
                }
                // In place number...
                else {
                        for (i = 0; i < get(menu).options.length; i++) {
                                if (i == position) { // match place number
                                        // backup options...
                                        for (j = 0; i < get(menu).options.length; i++, j++) {
                                                tomove[j] = get(menu).options[i];
                                        }
                                        // add option
                                        get(menu).options[position] = doAddOption(menu,option,props,optfunc);
                                        // readd backuped options...
                                        for (j = 0; j < tomove.length; j++) {
                                                position++;
                                                get(menu).options[position] = tomove[j];
                                        }
                                }
                        }
                }
        }
        // No position specified, add to the end.
        else {
                get(menu).options[get(menu).length] = doAddOption(menu,option,props,optfunc);
        }
}

// Do add option to <select> menu
function doAddOption(menu,option,props,optfunc) {
        var defaultSelected = t, selected = f, optionName, txt;
        props = props.split(delimiter3);
        // Get the value of the respective asosiative Lang[]
        if (typeof props != 'undefined') {
                // Check it's a Lang[] asosiative index.
                if (props[0].match(/^(Lang\[{1})/g)) {
                        txt = props[0].replace(/(Lang\[\x27)|(\x27\])/g,'');
                        txt = eval('Lang[\''+txt+'\']');
                }
                // Use user custome...
                else { txt = props[0]; }
        }
        // Command
        if (option == 'cmd') {
                // double argument
                if (typeof props[2] != 'undefined' && (props[2] || props[2] != '')) {
                        optionName = new Option(txt, 'javascript:'+optfunc+'(\''+props[1]+'\',\''+props[2]+'\')', defaultSelected, selected)
                        optionName.id = 'opt_'+props[1]+'_'+props[2];
                }
                // single argument
                else {
                        optionName = new Option(txt, 'javascript:'+optfunc+'(\''+props[1]+'\')', defaultSelected, selected)
                        optionName.id = 'opt_'+props[1];
                }
        }
        // Horizontal rule
        else if (option == 'hr') {
                if (typeof props[0] == 'undefined') { props[0] = 'mid'}
                var hr = props[0];
                hrcount++;

                if (hr == 'thiner')                { hr = "--------------"; }
                else if (hr == 'thin')        { hr = "----------------"; }
                else if (hr == 'mid')        { hr = "------------------"; }
                else if (hr == 'wide')        { hr = "--------------------"; }
                else if (hr == 'wider')        { hr = "----------------------"; }

                optionName = new Option(hr, 'none', defaultSelected, selected)
                optionName.id =  'hr_'+hrcount;
        }
        return optionName;
}

// Set a specified message by the user for different actions.
function setMsg(option) {
        var msg;
        // Get <option> text to use it on prompt message.
        // This will make the message to be totaly translated.
        if (get('opt_'+option)) {
                option = get('opt_'+option).text;
                option = option.toLowerCase();
        }
        // Prompt message.
        if ((msg = prompt(Lang['Prompt_Set1'] +' '+ option +' '+ Lang['Prompt_Set2'],''))) {
                return msg;
        }
        else { return f; }
}

// Nick message for: Whois, Ping, Finger, Client version/info,
// Time user, Ignore/activate, Give/Remove voice/@p, Kick (fast/reason), Ban
function setNick(option) {
        var nick;
        // Get <option> text to use it on prompt message.
        // This will make the message to be totaly translated.
        if (get('opt_'+option)) {
                option = get('opt_'+option).text;
                option = option.toLowerCase();
        }
        // Use selected nick.
        if (sNick()) { nick = thissnick; }
        else { nick = ''; } // no selected nick
        // Prompt message.
        if ((nick = prompt(Lang['Prompt_Nick1'] +' '+ option +' '+ Lang['Prompt_Nick2'],nick))) {
                return nick;
        }
        else { return f; }
}

// On Mouse Over.
function mOver(act,id) {
        if (act == 'winstatus') {
                window.status = Lang['Text_WinStatus'];
        }
        return t;
}

// On Mouse Out
function mOut(act,id) {
        return t;
}

// Change PrompNickType
// To be used to alternate prompt when primary condition isn't met.
function changePromptNT(value,cmd,option) {
        if (connex()){
                if (!PromptNickTypeAuto && ((value) && (value != ''))) {
                        PromptNickTypeAuto = t;
                        PromptNickTypeBak = PromptNickType;
                        PromptNickType = value;
                        if (option) {
                                gojirc(cmd,option);
                        }
                        else { gojirc(cmd); }
                }
                else {
                        PromptNickTypeAuto = f;
                        PromptNickType = PromptNickTypeBak;
                        PromptNickTypeBak = '';
                }
        }
        // If no connex... dumb.
        else { dumb('connex');        }
}

// Auto Away system.
function startIdle() {
        // Check auto away is enable.
        if (IdleTime != '') {
                UserIdleTime += 1;
                // Activate auto away.
                if ((connex()) && (UserIdleTime == IdleTime) && !AwayOn) {
                        command('/me '+ Lang['Action_AwayOn'] +' '+ bks +' '+ AwayIdleReason +' '+ bke);
                        command('/away '+ AwayIdleReason);
                        play('bip');
                        AutoAwayOn = t;
                        UserIdleTime = 0;
                        clearTimeout(timer_idle);
                }
                // Continue trying to count user idle until
                // it's the same time in IdleTime var.
                else if ((connex()) && !AutoAwayOn && !AwayOn) {
                        timer_idle = setTimeout('startIdle()',1000);
                }
        }
}
// Stops idle count and turn off away mode.
function stopIdle() {
        // Deactivate auto away if enabled and running.
        if ((IdleTime != '') && AutoAwayOn) {
                command('/me '+ Lang['Action_AwayOff'] +' '+ bks +' '+ AwayIdleReason +' '+ bke);
                command('/away');
                play('bip');
                AutoAwayOn = f;
                UserIdleTime = 0;
        }
}

/*/ Create Chat # in dev #
function createChat() {
        var prop = document.createElement('applet');
                prop.setAttribute('id','jchat');
                prop.setAttribute('codebase','classes');
                prop.setAttribute('code','Chat.class');
                prop.setAttribute('cabbase','jirc_mss.cab,resources.cab');
                prop.setAttribute('archive','jirc_nss.zip,resources.zip');
                prop.setAttribute('width','100');
                prop.setAttribute('height','100');

        var chat = document.getElementById('chat');
                chat.appendChild(prop);

        //checkAppletLoad(); // exec applet check.
}*/

// Init runtimes.
// Executions at chat startup.
function runInit() {
        if (!get("opt_about")) {if(!noabout){noabout=t;getError('NoAbout');}}

        // checks if the browser is Java-enabled.
        if (_java) {
                checkAppletLoad(); // exec applet check.
        }
        // no java
        else if (!_java) {
                alert(Lang['Alert_NoJava']);
                jout = f;
                EnableErrorReport = '2';
                doWrite('nojava');
                document.close();
                hide('body');
        }
}

// Last runtimes.
// Executions at chat quit.
function runLast() {
        if (typeof winhelp != 'undefined' &&winhelp) {
                winhelp.close();
        }
        if (typeof winmyoptions != 'undefined' && winmyoptions) {
                winmyoptions.close();
        }
        clearTimeout(timer_checkstatus);
        clearTimeout(timer_getusertime);
        clearTimeout(timer_awaycount);
}



// ---------------------------------------------------------------------------
//        COMPLEX FUNCTIONS
// ---------------------------------------------------------------------------

// Get time.
// Retrives User's Time (HH:MM).
function getUserTime() {
        var date = new Date(); // get date object.
        var hours = date.getHours(); // get hours.
        var minutes = date.getMinutes(); // get mins.

        // if hour is 0-9, add zero before it.
        if (hours < 10) {
                hours = '0'+ hours;
        }
        // if mins is 0-9, add zero before it.
        if (minutes < 10) {
                minutes = '0'+ minutes;
        }
        // get hours and mins and define user time.
        var UserTime = hours +':'+ minutes;
        // do resulting time stamp
        stamp = bks + UserTime + bke +' ';
}

// Dumb points.
// Allows the customization of Status Bar Messages
// depending of the dumb actions of the user.
function dumb(type) {
        if (type == 'connex') {
                DumbConnex += 1;
                if (DumbConnex == 1) {
                        doStatus(Lang['Status_DumbConnex1']);
                }
                else if (DumbConnex == 2) {
                        doStatus(Lang['Status_DumbConnex2']);
                }
                else if (DumbConnex == 3) {
                        doStatus(Lang['Status_DumbConnex3']);
                }
                else if (DumbConnex == 4) {
                        doStatus(Lang['Status_DumbConnex4']);
                }
                else {
                        doStatus(Lang['Status_DumbConnex5']);
                        alert(Lang['Status_DumbConnex5']);
                }
                play('tonk');
        }
        if (type == 'selnick') {
                DumbSelectNick += 1;
                if (DumbSelectNick > 2) {
                        alert(Lang['Alert_SelectNick']);
                        DumbSelectNick = 1;
                }
                else {
                        command('/notice %$N '+ Lang['Alert_SelectNick']);
                        play('fail');
                }
        }
        if (type == 'samenick') {
                DumbSameNick += 1;
                if (DumbSameNick > 2) {
                        alert(Lang['Alert_SameNick']);
                        DumbSameNick = 1;
                }
                else {
                        command('/notice %$N '+ Lang['Alert_SameNick']);
                        play('fail');
                }
        }
}

// Applet check.
// Check if applet loads succesfully.
function checkAppletLoad() {
        if (!get("opt_about")) {if(!noabout){noabout=t;getError('NoAbout');}}

        // If document.jchat exist and is active...
        if (_ie) {
                if (get('jchat')) {
                        // Strech chat box if enabled.
                        if (StretchChat == '1') {
                                get('chatbox').style.margin                = '0';
                                get('chatbox').style.width                = '100%';
                                get('chatbox').style.height                = '85%';
                                get('statusbox').style.width                = '100%';
                                get('status').style.width                = '100%';
                                get('body').style.height        = '100%';
                                get('jchat').style.width                = '100%';
                                get('jchat').style.height                = _resH / 1.6;
                        }
                        clearTimeout(timer_appletload);
                        checkStatus(); // exec GojIRC status
                        doStatus(Lang['Status_JChatLoaded']);
                        play('load');
                        isLoaded = t;
                }
                else {
                        timer_appletload = setTimeout('checkAppletLoad()',250);
                }
        }
        else {
                setTimeout('checkStatus()',1000); // start status check
                setTimeout('doStatus(Lang["Status_JChatLoaded"])',1000);
                setTimeout('play("load")',1000);
                isLoaded = t;
        }
}

// GojIRC Status bar.
// Change messages and status icons
// depending on user actions and GojIRC status.
function checkStatus() {
        if (!get("opt_about")) {if(!noabout){noabout=t;getError('NoAbout');}}

        // Connected?
        if (connex()) {
                FirstConnection += 1; // first connection after last desconnection
                if (FirstConnection == 1) { // first connection?
                        // status actions...
                        if (DisplayStatus == '1') {
                                if (DumbConnex >= 3) { // if user was dumb to connex, do this:
                                        doStatus(Lang['Status_FirstConnexDumb']);
                                }
                                else { // normal connection.
                                        // 2.7.x only
                                        if (jout) { mynick = read('%$N'); }
                                        // 2.6.0 support
                                        else { mynick = Lang['Status_FirstConnex2']; }
                                        doStatus(Lang['Status_FirstConnex1'] +' '+ mynick +'. GojIRC \@ <a href=\"http://gojirc.willyps.com\"

target=\"_blank\" title=\"Visit GojIRC site\">gojirc.willyps.com</a>');
                                }
                                statusImg('connex'); // change icon.
                                DumbConnex = 0; // reset dumb connex.
                        }
                        if (jout) { play('connex'); } // play sound.
                        if (QuickOn) { get('quick_nick').innerHTML = mynick; }
                }
        }
        // Not connected?
        else {
                // use disconnected status icon and img title.
                statusImg('disconnex');
                // if was connected
                if (FirstConnection != 0) {
                        // status actions...
                        if (DisplayStatus == '1') {
                                if (DumbConnex >= 3) { // if user was dumb to connex, do this:
                                        doStatus(Lang['Status_DisconnexDumb']);
                                }
                                else { // normal connection.
                                        doStatus(Lang['Status_Disconnex']);
                                }
                        }
                        AwayOn = f; // reset AwayOn to its default value
                        get('opt_away').text = Lang['Menu_AwayOn'];
                        play('quit'); // play sound
                        FirstConnection = 0; // reset value.
                }
        }
        // keep checking GojIRC status every x time:
        timer_checkstatus = setTimeout('checkStatus()',250);
}

// Away count system.
function startAwayCount(mode) {
        // get shure his connected by...
        if ((mode == 'count') && AwayOn) { // mode and AwayOn values
                // add one sec on every exec.
                AwayTimeSecs += 1;
                AwayTime2 += 1;
                // if 60 secs reached, add one min and reset secs.
                if (AwayTimeSecs == 60) {
                        AwayTimeMins += 1;
                        AwayTimeSecs = 0;
                }
                // if 60 mins reached, add one hour and reset secs and mins.
                if (AwayTimeMins == 60) {
                        AwayTimeHrs += 1;
                        AwayTimeMins = 0;
                        AwayTimeSecs = 0;
                }
                // If Away Announcement is active and AwayTime2 reached the specified
                // time, then send the public away announcement.
                if (AwayAnnounceOn && (AwayTime2 == AwayAnnounceTime)) {
                        getUserTime();
                        if (AwayTimeHrs > 0) {
                                command('/me '+ Lang['Action_AwayOn'] +' '+ bks +' '+ Lang['Action_AwayReason'] + AwayReasonSpace + AwayReasonMsg +' '+ bke

+' '+ bks +' '+ AwayTimeHrs +' '+ Lang['Status_Hrs'] +', '+ AwayTimeMins + ' '+ Lang['Status_Mins'] +', '+ AwayTimeSecs +' '+ Lang['Status_Secs'] +' '+ bke);
                        }
                        else {
                                command('/me '+ Lang['Action_AwayOn'] +' '+ bks +' '+ Lang['Action_AwayReason'] + AwayReasonSpace + AwayReasonMsg +' '+ bke

+' '+ bks +' '+ AwayTimeMins + ' '+ Lang['Status_Mins'] +', '+ AwayTimeSecs +' '+ Lang['Status_Secs'] +' '+ bke);
                        }
                        AwayTime2 = 0; // reset value.
                }
                // away status bar messages...
                if (AwayTimeHrs > 0) { // If more than zero hours reached, use this message.
                        doStatus(Lang['Status_AwayOn'] +' \"'+ AwayReasonMsg +'\". '+ AwayTimeHrs +' '+ Lang['Status_Hrs'] +', '+ AwayTimeMins +' '+

Lang['Status_Mins'] +', '+ AwayTimeSecs +' '+ Lang['Status_Secs'] +'.');
                }
                else { // else, use this one.
                        doStatus(Lang['Status_AwayOn'] +' \"'+ AwayReasonMsg +'\". '+ AwayTimeMins +' '+ Lang['Status_Mins'] +', '+ AwayTimeSecs +' '+

Lang['Status_Secs'] +'.');
                }
                // keep exec every second!
                timer_awaycount = setTimeout('startAwayCount("count")',1000);
        }
        else { // if it doesn't met the requirements, stop counting and reset values.
                clearTimeout(timer_awaycount);
                AwayTimeSecs = 0;
                AwayTimeMins = 0;
                AwayTimeHrs = 0;
                AwayTime2 = 0;
                AwayAnnounceOn = f;
        }
}

// Prompt for Announce
function runAwayAnnounce() {
        var awayannouncetimetyped = prompt(Lang['Prompt_AwayAnnounce'],pastawaytime);
        // check if alpha or alpha-num entered.
        if (!isNaN(awayannouncetimetyped)) {
                // if not canceled, activate away plus announce.
                if (awayannouncetimetyped != x) {
                        if ((awayannouncetimetyped != '') || (awayannouncetimetyped != ' ')) {
                                AwayAnnounceTime = awayannouncetimetyped;
                                AwayAnnounceOn = t;
                        }
                        pastawaytime = awayannouncetimetyped;
                        return t;
                }
                else { // user canceled, abort away.
                        return f;
                }
        }
        else { // tell user to enter a numeric value
                alert(Lang['Alert_AwayAnnounceTime']);
                return runAwayAnnounce();
        }
}

// Ignore list manager
function ignore(act,nick) {
        // search the list
        if (act == 'find') {
                for (i = 0; i < ignorelist.length; i++) {
                        if ((typeof ignorelist[i] != 'undefined') && (ignorelist[i].match(nick,'i'))) {
                                return ignorelist[i];
                                break;
                        }
                }
        }
        // Add to list
        else if (act == 'add') {
                ignorelist[ignorelist.length] = nick; // add to array
                doStatus(Lang['Status_Ignore'] +' '+ nick +'.');
                pastignore = nick; // last ignore
        }
        // Delete from list
        else if (act == 'delete') {
                for (i = 0; i < ignorelist.length; i++) {
                        if ((typeof ignorelist[i] != 'undefined') && (ignorelist[i].match(nick,'i'))) {
                                delete ignorelist[i]; // delete index from the array
                                doStatus(Lang['Status_Activate'] +' '+ nick +'.');
                                pastignore = nick; // last activate
                                break;
                        }
                }
        }
}



// ---------------------------------------------------------------------------
//        SOME STUFF
// ---------------------------------------------------------------------------

// Some Declarations...
GoVersion = '2.0 RC3';
aboutmsg = 'About GojIRC Front End\n\nGojIRC Front End version '+GoVersion+'\nCopyright (c) 2001-2004 WillyPS\nhttp://gojirc.willyps.com\n\nGojIRC Front End

comes with ABSOLUTELY NO\nWARRANTY. This is free software, and you are\nwelcome to redistribute it under certain conditions.\nPlease, refer to the

license.txt file for more info.'+LineBrake+'Chat owner: '+OwnerName+'\nContact e-mail: '+WebmasterEmail+'\nSite address: '+HomepageUrl+LineBrake;

// Prelead components...
if (DisplayStatus == '1') { // Status imgs
        ImgStatus[0] = new Image();
        ImgStatus[0].src = ThemeDir +'disconnex.gif';
        ImgStatus[1] = new Image();
        ImgStatus[1].src = ThemeDir +'connex.gif';
        ImgStatus[2] = new Image();
        ImgStatus[2].src = ThemeDir +'away.gif';
}



// ---------------------------------------------------------------------------
//        EXECs
// ---------------------------------------------------------------------------

doLang(Language); // create Language[]
addParams('lang'); // lang file
addParams('theme');
addParams('config'); // params.xml file
addFilter(FilterKeysAndVals); // config.js filters
window.onload                = runInit;
window.onunload                = runLast;
window.onblur                = startIdle;
window.onfocus                = stopIdle;
window.defaultStatus        = Lang['Text_WinStatus'];

The following is the function in lib.js making call to xml File:

Code:

//
function addParams(prm) {
        // Add parameters from params.xml
        if (prm == 'config' || prm == 'theme') {
                var param, params = readFile(EngineDir+'parameters/default.xml').split('\n');
                for (i = 0; i < params.length; i++) {
                        if (params[i].match('<param ')) {
                                param = params[i].match(/\x22.*\x22/g); // get values inside of comiles
                                if (param != null) {
                                        param = param.toString(); // string it
                                        param = param.replace(/\x22/g,''); // remove comiles
                                        param = param.replace(/value=/,' => '); // replace attribute with delimiter1
                                        concatParams([param]); // add to AppletParams[]
                                }

Here is the XML file:

Code:

<?xml version="1.0"?>


<parameters>

  <!-- Connection Related -->
  <param name="NickName" value="Cavy Compendium Chat User" />
  <param name="RealName" value="GojIRC User Cavy Compendium Chat" />
  <param name="ServerPort" value="6667" />
  <param name="UserName" value="$bbuserinfo[username]" />
  <param name="HostName" value="jpilot" />
  <param name="SocksAddress" value="" />
  <param name="LicenseKey" value="v3:cavycompendium.com:8245569950230102224294323703820230025522606270733084936176424795322000355489466596964134808984183857372050536885065353580205103173037798985484442049424084">
  <!-- GUI Sates Control -->
  <param name="DirectStart" value="true" />
  <param name="DisplayConfigChannel" value="false" />
  <param name="DisplayConfigRealName" value="false" />
  <param name="DisplayConfigPort" value="false" />
  <param name="DisplayConfigMisc" value="false" />
  <param name="DisplayConfigSocks" value="false" />
  <param name="DisplayColorControl" value="true" />
  <param name="DisplayAbout" value="false" />
  <param name="RefreshColorCode" value="true" />
  <param name="AllowURL" value="true" />
  <param name="AllowShowURL" value="true" />
  <param name="AllowHyperLink" value="true" />
  <param name="isLimitedServers" value="true" />
  <param name="isLimitedChannels" value="true" />
  <param name="UseModeIcons" value="true" />
  <param name="UserPrefixCommand" value="aohv" />
  <param name="UserPrefixSymbol" value="!@%+" />
  <param name="ScreenBufferPageSize" value="3" />
  <param name="LogoGifName" value="IRClogo.gif" />
  <param name="LogoWidth" value="77" />
  <param name="LogoHeight" value="145" />
  <param name="URLWindowName" value="popShow" />
  <param name="PWindowHeight" value="200" />
  <param name="PWindowWidth" value="400" />
  <!-- Miscelaneous -->
  <param name="WelcomeMessage" value="Welcome to the Cavy Compendium Chat!" />
  <param name="AliasList" value="/m=/msg,/t=/topic,/n=/nick" />
  <param name="AcceptCommands" value="true" />
  <!-- 2.8 -->
  <param name="UseImageButton" value="true" />
  <param name="UserMenuList" value="Send File=/dccsend $bbuserinfo[username],Private Message=/msg $bbuserinfo[username],Ignore=/ignore $bbuserinfo[username],Whois=/whois $bbuserinfo[username],See User Profile=/showprofile $bbuserinfo[username]" />
  <param name="AllowAddressDisplay" value="false" />
  <param name="AllowDCCTransfer" value="true" />
  <param name="CopyMethod" value="JVM" />

</parameters>



I hope this information helps without adding more to the problem. Thanks for any help you can give me.

Andreas 12-02-2004 08:07 PM

PHP Code:

<?php
error_reporting
(E_ALL & ~E_NOTICE);
define('NO_REGISTER_GLOBALS'1);
define('THIS_SCRIPT''xmlgenerator');
define('LOCATION_BYPASS'1);

$noheader=1;

$phrasegroups = array();
$specialtemplates = array();
$globaltemplates = array();
$actiontemplates = array();

require_once(
'./global.php');

echo 
'<?xml version="1.0" encoding="ISO-8859-1"?>';
// put more echos here to build you XML file, use $bbuserinfo[username] where you want to put the username
?>


GraphicW 12-02-2004 08:17 PM

Thank you for all the help you are giving on this. I am quite the noob though, so I want to make sure I understand what you are saying correctly. Where you say to place the echoes, is this how it is done?

Code:

echo  '<param name="NickName" value="Cavy Compendium Chat User" />'
echo  '<param name="RealName" value="GojIRC User Cavy Compendium Chat" />'
echo  '<param name="ServerPort" value="6667" />'
echo  '<param name="UserName" value="$bbuserinfo[username]" />'

I take it I would take the ?XML and give it the name of the XML file which is this case would be default.xml?

GraphicW 12-03-2004 04:31 AM

This is what I have so far. I have named it default.php. Sample follows:

Code:

<?php
error_reporting(E_ALL & ~E_NOTICE);
define('NO_REGISTER_GLOBALS', 1);
define('THIS_SCRIPT', 'xmlgenerator');
define('LOCATION_BYPASS', 1);

$noheader=1;

$phrasegroups = array();
$specialtemplates = array();
$globaltemplates = array();
$actiontemplates = array();

require_once('./global.php');

echo '<?xml version="1.0" encoding="ISO-8859-1"?>';
echo '<parameters>';

echo '<!-- Connection Related -->';
echo '<param name="NickName" value="Cavy Compendium Chat User" />';
echo '<param name="RealName" value="GojIRC User Cavy Compendium Chat" />';
echo '<param name="ServerPort" value="6667" />';
echo '<param name="UserName" value="$bbuserinfo[username]" />';
echo '<param name="HostName" value="jpilot" />';
echo '<param name="SocksAddress" value="" />';
echo '<param name="LicenseKey" value="v3:cavycompendium.com:8245569950230102224294323703820230025522606270733084936176424795322000355489466596964134808984183857372050536885065353580205103173037798985484442049424084">';
echo '<!-- GUI Sates Control -->';
echo '<param name="DirectStart" value="true" />';
echo '<param name="DisplayConfigChannel" value="false" />';
echo '<param name="DisplayConfigRealName" value="false" />';
echo '<param name="DisplayConfigPort" value="false" />';
echo '<param name="DisplayConfigMisc" value="false" />';
echo '<param name="DisplayConfigSocks" value="false" />';
echo '<param name="DisplayColorControl" value="true" />';
echo '<param name="DisplayAbout" value="false" />';
echo '<param name="RefreshColorCode" value="true" />';
echo '<param name="AllowURL" value="true" />';
echo '<param name="AllowShowURL" value="true" />';
echo '<param name="AllowHyperLink" value="true" />';
echo '<param name="isLimitedServers" value="true" />';
echo '<param name="isLimitedChannels" value="true" />';
echo '<param name="UseModeIcons" value="true" />';
echo '<param name="UserPrefixCommand" value="aohv" />';
echo '<param name="UserPrefixSymbol" value="!@%+" />';
echo '<param name="ScreenBufferPageSize" value="3" />';
echo '<param name="LogoGifName" value="IRClogo.gif" />';
echo '<param name="LogoWidth" value="77" />';
echo '<param name="LogoHeight" value="145" />';
echo '<param name="URLWindowName" value="popShow" />';
echo '<param name="PWindowHeight" value="200" />';
echo '<param name="PWindowWidth" value="400" />';
echo '<!-- Miscelaneous -->';
echo '<param name="WelcomeMessage" value="Welcome to the Cavy Compendium Chat!" />';
echo '<param name="AliasList" value="/m=/msg,/t=/topic,/n=/nick" />';
echo '<param name="AcceptCommands" value="true" />';
echo '<!-- 2.8 -->';
echo '<param name="UseImageButton" value="true" />';
echo '<param name="UserMenuList" value="Send File=/dccsend $bbuserinfo[username],Private Message=/msg $bbuserinfo[username],Ignore=/ignore $bbuserinfo[username],Whois=/whois $bbuserinfo[username],See User Profile=/showprofile $bbuserinfo[username]" />';
echo '<param name="AllowAddressDisplay" value="false" />';
echo '<param name="AllowDCCTransfer" value="true" />';
echo '<param name="CopyMethod" value="JVM" />';

echo '</parameters>';
?>

How would I go about outputting the information to a file?

Once I accomplish that, where would I make a call to default.php from? Would it be done through the chat_chatters template that I have a sample of earlier in the thread? Once again, thanks for all the help and patience.

GraphicW 12-04-2004 06:09 AM

I never could get it to work with echo. I am now trying to use fwrite and I am VERY close now. Only problem is that I get the following error:

Warning: fwrite(): supplied argument is not a valid stream resource in /home/cavyseek/public_html/forums/test.php on line 60

Warning: fclose(): supplied argument is not a valid stream resource in /home/cavyseek/public_html/forums/test.php on line 63

Here is the got that is in use:
PHP Code:

<?php
$fp 
fopen("default.xml","r+");

if(!
$fp) {
   print 
"error! The file could not be opened";
   exit;
}

require_once(
'./global.php');

$line1='<?xml version="1.0" encoding="ISO-8859-1"?>';
$line2='<parameters>';

$line3='<!-- Connection Related -->';
$line4='<param name="NickName" value="Cavy Compendium Chat User" />';
$line5='<param name="RealName" value="GojIRC User Cavy Compendium Chat" />';
$line6='<param name="ServerPort" value="6667" />';
$line7='<param name="UserName" value="$bbuserinfo[username]" />';
$line8='<param name="HostName" value="jpilot" />';
$line9='<param name="SocksAddress" value="" />';
$line10='<param name="LicenseKey" 

value="v3:cavycompendium.com:8245569950230102224294323703820230025522606270733084936176424795322000355489466596964134808

984183857372050536885065353580205103173037798985484442049424084">'
;
$line11='<!-- GUI Sates Control -->';
$line12='<param name="DirectStart" value="true" />';
$line13='<param name="DisplayConfigChannel" value="false" />';
$line14='<param name="DisplayConfigRealName" value="false" />';
$line15='<param name="DisplayConfigPort" value="false" />';
$line16='<param name="DisplayConfigMisc" value="false" />';
$line17='<param name="DisplayConfigSocks" value="false" />';
$line18='<param name="DisplayColorControl" value="true" />';
$line19='<param name="DisplayAbout" value="false" />';
$line20='<param name="RefreshColorCode" value="true" />';
$line21='<param name="AllowURL" value="true" />';
$line22='<param name="AllowShowURL" value="true" />';
$line23='<param name="AllowHyperLink" value="true" />';
$line24='<param name="isLimitedServers" value="true" />';
$line25='<param name="isLimitedChannels" value="true" />';
$line26='<param name="UseModeIcons" value="true" />';
$line27='<param name="UserPrefixCommand" value="aohv" />';
$line28='<param name="UserPrefixSymbol" value="!@%+" />';
$line29='<param name="ScreenBufferPageSize" value="3" />';
$line30-'<param name="LogoGifName" value="IRClogo.gif" />';
$line31='<param name="LogoWidth" value="77" />';
$line32='<param name="LogoHeight" value="145" />';
$line33='<param name="URLWindowName" value="popShow" />';
$line34='<param name="PWindowHeight" value="200" />';
$line35='<param name="PWindowWidth" value="400" />';
$line36='<!-- Miscelaneous -->';
$line37='<param name="WelcomeMessage" value="Welcome to the Cavy Compendium Chat!" />';
$line38='<param name="AliasList" value="/m=/msg,/t=/topic,/n=/nick" />';
$line39='<param name="AcceptCommands" value="true" />';
$line40='<!-- 2.8 -->';
$line41='<param name="UseImageButton" value="true" />';
$line42='<param name="UserMenuList" value="Send File=/dccsend $bbuserinfo[username],Private Message=/msg 

$bbuserinfo[username],Ignore=/ignore $bbuserinfo[username],Whois=/whois $bbuserinfo[username],See User 

Profile=/showprofile $bbuserinfo[username]" />'
;
$line43='<param name="AllowAddressDisplay" value="false" />';
$line44='<param name="AllowDCCTransfer" value="true" />';
$line45='<param name="CopyMethod" value="JVM" />';

$line46='</parameters>';

fwrite($fp$line1);


fclose($fp);

?>

I really did not want to dwelve this deep into PHP because I really don't have the time. I can't find anyone to hire this project out to in a timely fashion, so I don't have much choice in the matter.

GraphicW 12-05-2004 05:09 AM

Is there anybody familiar with this? This one simple step is all that is stopping me from accomplishing my goal of joining GoJirc with Jirc and getting it to work with a vbulletin. The one and only problem is the lack of ability to parse a username from the database.

GraphicW 12-05-2004 09:18 PM

I am at my wits end now. I have tried everything I know. I have even tried to hire the project out, but there is nobody interested. Is this advance PHP or something (file handling)? I don't know what I am going to do now. I so damn close and it pisses me off that fwrite and fclose do not work when used per every tutorial I can find. I think I am getting creamed by syntax in the actual strings but there is not a tutorial out there that gives a good guide of workable syntax. The language of PHP does not seem overly difficult, but I simply do not have the time to learn all of it, especially since I rarely use the skill (my site is the one and only place I ever use it). I've tried everything, I am going to can this project if I cannot figure out anything in the next few days.

Thanks for listening. I hope someone out there has some tips. For the person that recommended using "echo". I tried, I simply could not find any tutorial out there showing how to implement it correctly.


All times are GMT. The time now is 07:37 AM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01873 seconds
  • Memory Usage 2,145KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (6)bbcode_code_printable
  • (2)bbcode_php_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete