Jump to content
InvisionCommunity.de - Der Deutsche Invision Community Support
Sign in to follow this  
Blackman

[Archiv] [MOD] Open-Poll

Recommended Posts

ähm denn ganzen sicher

wäre n bisschen lang hehe

naja aber wenn du unbedingt willst lad ich die anleitung auf meinen server

wegen mir

Edited by Fabio

Share this post


Link to post

Ich weiß zwar nicht, was meine Firewall damit zu tun haben sollte, aber trotzdem noch mal die Bitte, das File hier wieder in den Thread anzuhängen.

Hab mich anhand von Grey Fox´ Anleitung zwar durchgehangelt, doch bin auf selben Fehler gestoßen wie OrcaDesign; da funktionierte gar nichts (außer Fehlermeldung). Hab dann die Klammern geordnet und auch eine, die mir zuviel erscheint, ausgebaut. -> seitdem funktioniert zwar das Erstellen des Polls, doch beim Wählen erscheint ein neuer Fehler:

/html/ivb/sources/Topics.php on line 1808

=

$mod_voted = $ibforums->lang['mod_public_poll_voters'];

      foreach ($mod_choices as $mod_member_id => $mod_voting_info)

Jetzt bin ich überfragt, da ich den Code nicht geschrieben habe und der Mod doch recht komplex ist...

Wo hat Echo eigentlich das File her, denn auf der von Fabio angegebenen Seite finde ich den Mod nicht... besser gesagt finde ich gar keinen Mod.

Gruß

Hunter

Edited by Hunter

Share this post


Link to post

Ich weiß zwar nicht, was meine Firewall damit zu tun haben sollte...

Sorry, aber es kam schon zu genüge vor, daß User die eine Firewall am laufen haben, Probleme hatten beim Attachments herunter laden aus dem IPB Board. Allerdings ist in diesem Fall wohl wirklich die Zip Datei defekt, wie ich eben bemerkte, daher hat das diesmal auch nichts mit der Firewall zu tun ;)

Share this post


Link to post

Hier bitte nochmal die .zip, unkomprimiert mit WinRAR gezippt. Ich konnte sie runterladen und ging auch wunderbar.

Zum Thema Codefehler, ich weiß nicht ob jemand die Anleitung nach eventuellen Fehlern durchgeschaut hat, wäre nett wenn das jemand sich mal ankuckt. :)

EDIT: Da scheint mir echt eine Klammer zuviel...hab die mal rausgenommen und neu angehongen.

Edited by Gray Fox

Share this post


Link to post

Hmm, scheint trotzdem noch ein Fehler irgendwo im Code zu sein.

Zum Einen fehlen ein paar ' in den Dateien lang_post.php und lang_topic.php.

Die falsche Klammer ist in Deiner Version entfernt, doch der Fehler ist leider immer noch der selbe (obwohl ich nun die komplette Einbauanleitung 3 mal durchgeführt habe):

Warning: Invalid argument supplied for foreach() in /ivb/sources/Topics.php on line 1811

Warning: Invalid argument supplied for foreach() in /ivb/sources/Topics.php on line 1811

Warning: Invalid argument supplied for foreach() in /ivb/sources/Topics.php on line 1811

Warning: Invalid argument supplied for foreach() in /ivb/sources/Topics.php on line 1811

Der Fehler steht in folgendem Codefragment:

$mod_voted = $ibforums->lang['mod_public_poll_voters'];

foreach ($mod_choices as $mod_member_id => $mod_voting_info)

Wäre schön, wenn mir da jemand weiterhelfen könnte.

Das hochgeladene File konnte übrigens jetzt einwandfrei heruntergeladen werden, vielen Dank dafür.

Gruß

Hunter

Edited by Hunter

Share this post


Link to post

Warning: Invalid argument supplied for foreach() in /ivb/sources/Topics.php on line 1811

Warning: Invalid argument supplied for foreach() in /ivb/sources/Topics.php on line 1811

Warning: Invalid argument supplied for foreach() in /ivb/sources/Topics.php on line 1811

Warning: Invalid argument supplied for foreach() in /ivb/sources/Topics.php on line 1811

Der Fehler steht in folgendem Codefragment:

$mod_voted = $ibforums->lang['mod_public_poll_voters'];

foreach ($mod_choices as $mod_member_id => $mod_voting_info)

Hatte außer mir und ORcaDesign noch jemand dieses Problem und konnte es lösen? Ich meine, wenn alle nach dem gleichen Code vorgegangen sind, dann können wir doch nicht die Einzigen sein, bei denen dieses Problem auftritt oder hat jemand vielleicht ne Ahnung, woher dieser Fehler stammen könnte?

Schonmal Danke im Voraus

Hunter

Edited by Hunter

Share this post


Link to post

Zwei Sachen die ich von denen wissen will die den Fehler mit dem "foreach" haben ...

Ist das Datenbankfeld angelegt ? SICHER ?

Und habt ihr diesen Schritt gemacht ... SICHER ?

Suche dieses:

//----------------------------------

// Have we voted in this poll?

//----------------------------------

$DB->query("SELECT member_id from ibf_voters WHERE member_id=".$ibforums->member['id']." and tid=".$this->topic['tid']);

$voter = $DB->fetch_row();

Füge dies darüber ein:

$mod_voted = "";

if ($poll_data['status'] == 1)

{

    $mod_choices = array();

    $DB->query("SELECT v.member_id, v.voted, m.name FROM ibf_voters v LEFT JOIN ibf_members m ON (v.member_id = m.id)WHERE tid=".$this->topic['tid'] ." ORDER BY m.name");

    while ( $t = $DB->fetch_row() )

    {

        $mod_choices[ $t['member_id'] ] = array( 'name' => $t['name'],

        'vote' => $t['voted']);

    }

}

// End Mod für öffentliche Polls

So, bitte um Antwort, schonmal vorab vielen Dank an Hunter für die Bereistellung seiner Foren-Dateien, die zweite Frage sollte der Fehler sein ...

Eventuell stehts in der neuen Anleitung nicht mehr richtig drin, oder ich hab mich geirrt, naja, sagt bitte hier ob's geklappt hat :)

BLACK

@Gray Fox:

Kannst du diesen Schritt, plus das hier:

as hier

<!-- Start Mod Public Poll -->

<br /><input type='checkbox' size='40' value='1' name='open_poll' class='forminput' />

<b>{$ibforums->lang[mod_public_poll]}</b><br/>{$ibforums->lang[mod_public_poll_info]}

<!-- End Mod Public Poll -->

Sollte man lieber unter dem hier

  <td class='pformright'><input type='text' size='40' maxlength='250' name='pollq' value='{$ibforums->input['pollq']}' class='textinput' /></td>

</tr>

einfügen, statt unter dem

<br /><input type='checkbox' size='40' value='1' name='allow_disc' class='forminput' /> {$ibforums->lang['poll_only']}

noch in deiner Anleitung einfügen ?

Der eine Schritt muss irgendwie "verloren" gegangen sein, und das hier ist das man auch beim editieren von Polls den Poll "offen" machen kann...

Danke, BLACK

Edited by Blackman

Share this post


Link to post

Ist das Datenbankfeld angelegt ? SICHER ?

Und habt ihr diesen Schritt gemacht ... SICHER ?

Klar wurden beide gemacht; doch ist mir beim erneuten Kompletteinbau ein Fehler aufgefallen.

Nach Gebrauchsanweisung soll folgendes getan werden:

Suche dies:

//----------------------------------

// Have we voted in this poll?

//----------------------------------

$DB->query("SELECT member_id from ibf_voters WHERE member_id=".$ibforums->member['id']." and tid=".$this->topic['tid']);

$voter = $DB->fetch_row();
Darüber einfügen:
// Start Mod Public Polls

if ($poll_data['status'] == 1)

{

$html = str_replace( "<!--IBF.OPEN-->", $ibforums->lang['mod_public_poll_infos'], $html );

}

// End Mod Public Polls
Dies steht aber in krassem Widerspruch zu Blacks Code: füge darüber ein
$mod_voted = "";


if ($poll_data['status'] == 1)

{

    $mod_choices = array();


    $DB->query("SELECT v.member_id, v.voted, m.name FROM ibf_voters v LEFT JOIN ibf_members m ON (v.member_id = m.id)WHERE tid=".$this->topic['tid'] ." ORDER BY m.name");

    while ( $t = $DB->fetch_row() )

    {

        $mod_choices[ $t['member_id'] ] = array( 'name' => $t['name'],

        'vote' => $t['voted']);

    }

}


// End Mod für öffentliche Polls
In der Datei skin_poll.php ist mir noch etwas aufgefallen, ein Unterschied zwischen Gebrauchsanleitung und eigentlichem Quellcode des Boards: Mod-Anleitung: Suche:
function Render_row_results($votes, $id, $answer, $percentage, $width) {

global $ibforums;


return << <tr>

<td class='row1'>$answer</td>

<td class='row1'> [ <b>$votes</b> ] </td>

<td class='row1' align='left'><img src='{$ibforums->vars['img_url']}/bar_left.gif' border='0' width='4' height='11' align='middle' alt='' /><img src='{$ibforums->vars['img_url']}/bar.gif' border='0' width='$width' height='11' align='middle' alt='' /><img src='{$ibforums->vars['img_url']}/bar_right.gif' border='0' width='4' height='11' align='middle' alt='' />

[$percentage%]</td>

</tr>

EOF;

}
Im Quellcode des Boards ist es aber so hinterlegt:
function Render_row_results($votes, $id, $answer, $percentage, $width) {

global $ibforums;


return <<<EOF


    <tr>

    <td class='row1'>$answer</td>

    <td class='row1'> [ <b>$votes</b> ] </td>

    <td class='row1' align='left'><img src='{$ibforums->vars['img_url']}/bar_left.gif' border='0' width='4' height='11' align='middle' alt='' /><img src='{$ibforums->vars['img_url']}/bar.gif' border='0' width='$width' height='11' align='middle' alt='' /><img src='{$ibforums->vars['img_url']}/bar_right.gif' border='0' width='4' height='11' align='middle' alt='' />

    &nbsp;[$percentage%]</td>

    </tr>


EOF;

}
Man beachte die 4. Zeile! Daher müßte es (nach meiner Auffassung) richtig heißen:
function Render_row_results($votes, $id, $answer, $percentage, $width, $voted = "") {

global $ibforums;


return <<<EOF


    <tr>

    <td class='row1'>$answer</td>

    <td class='row1'> [ <b>$votes</b> ] </td>

    <td class='row1' align='left'><img src='{$ibforums->vars['img_url']}/bar_left.gif' border='0' width='4' height='11' align='middle' alt='' /><img src='{$ibforums->vars['img_url']}/bar.gif' border='0' width='$width' height='11' align='middle' alt='' /><img src='{$ibforums->vars['img_url']}/bar_right.gif' border='0' width='4' height='11' align='middle' alt='' />&nbsp;[$percentage%]{$voted}</td>

    </tr>


EOF;

}
Beim der nächsten Änderung in der gleichen Datei genauso: Suche:
function show_total_votes($total_votes) {

global $ibforums;

return << <tr>

<td class='row1' colspan='3' align='center'><strong>{$ibforums->lang['pv_total_votes']}: $total_votes</strong></td>

</tr>

EOF;

}
Ersetze durch:
function show_total_votes($total_votes) {

global $ibforums;

return << <tr>

<td class='row1' colspan='3' align='center'><!--MOD_PUBLIC_POLL_NOVOTES--><strong>{$ibforums->lang['pv_total_votes']}: $total_votes</strong></td>

</tr>

EOF;

}
-> daher auch hier wieder gleicher Fehler (in 3. Zeile), ergo müßte es so aussehen:
function show_total_votes($total_votes) {

global $ibforums;


return <<<EOF


    <tr>

    <td class='row1' colspan='3' align='center'><!--MOD_PUBLIC_POLL_NOVOTES--><strong>{$ibforums->lang['pv_total_votes']}: $total_votes</strong></td>

    </tr>


EOF;

}

Edited by Hunter

Share this post


Link to post

Nach Einbau aller Modifikationen von Black komme ich dann auf folgende Fehlermeldung im Board (beim Erstellen einer neuen Umfrage):

Parse error: parse error in /ivb/sources/lib/post_poll.php on line 268

Fatal error: Cannot instantiate non-existent class: post_functions in /ivb/sources/Post.php on line 354

In den vermeindlich fehlerhaften Codeteilen findet man:

post_poll.php

// Start Mod Public Polls

'status' => ($ibforums->input['open_poll'] == 1) ? 1 : 0,

// End Mod Public Polls
Post.php
$post_functions = new post_functions(&$this);

Neue Ideen, Vorschläge?

Share this post


Link to post

Oha, ich setz mich am Wochenende ma hin und schreib die komplette Installanleitung neu (in Flash damit auch wirklich nix schiefgeht :P) :( Scheinen doch mehr Fehler drin zu sein als gedacht.

Share this post


Link to post

So leid es mir tut, es war in deinen Dateien +20 Zeilen kein Fehler feststellbar, deine 20 Zeilen aus der add_poll.php in meine eingefügt arbeiten bei mir wunderbar ...

Ich poste jetzt nochmal die ursprüngliche Anleitung (in der neusten version, also das Update ist schon drin), ist vielleicht auch ne Hilfe für Gray !

Modifikation für offene Polls.

Ursprungsverion: Thomas Christlieb

Verbesserung & Nachbearbeitung: Stefan Deckers

Support unter: www.ipbsupport.de

Dieser Mod modifiziert die Umfragen, nun gibt es einen neuen Knopf beim Erstellen einer Umfrage (Poll),

mit diesem kann man anklicken ob die Umfrage öffentlich erfolgen soll. Somit kann jeder sehen wer, was

gevoted hat. Natürlich nur wenn man auch die Ergebnisse sehen kann.

1. Schritt, Datenbankfelder anlegen.

            Starte PHPMyAdmin oder den MySQL-Bereich im Admin Control Center

           

            Füge folgende Befehle aus:

           

Befehl 1:  ALTER TABLE `ibf_voters` ADD `voted` INT(3)  DEFAULT "-1";

Befehl 2:  ALTER TABLE `ibf_polls` ADD `status` TINYINT(1)  UNSIGNED DEFAULT '0';

2. Schritt, Öffne die Datei skin_post.php.

            Suche nach folgendem:

  <td class='pformright'><input type='text' size='40' maxlength='250' name='pollq' value='{$ibforums->input['pollq']}' class='textinput' /></td>

</tr>

            Füge folgendes darunter ein:

<!-- Start Mod Public Poll -->

<br /><input type='checkbox' size='40' value='1' name='open_poll' class='forminput' />&nbsp;

<b>{$ibforums->lang[mod_public_poll]}</b><br/>{$ibforums->lang[mod_public_poll_info]}

<!-- End Mod Public Poll -->

3. Schritt, Öffne die Datei lang_post.php

            Finde folgendes:

           

?>

            Füge davor ein:

           

$lang[mod_public_poll] = "Öffentlicher Poll";

$lang[mod_public_poll_info] = "(Abstimmung nicht anonym)";

            Sollte deine Sprachdatei ein anderes Format haben, so musst du dies hier suchen:

           

);

?>

            und davor dies hier einfügen:

           

mod_public_poll => "Öffentlicher Poll",

mod_public_poll_info => "(Abstimmung nicht anonym)",

4. Schritt, Öffne die Datei post_poll.php

            Finde dies hier:                       

$db_string = $std->compile_db_string(

array (

'tid'          => $this->topic['tid'],

'forum_id'      => $class->forum['id'],

'start_date'    => time(),

'choices'      => addslashes(serialize($poll_array)),

'starter_id'    => $ibforums->member['id'],

'votes'        => 0,

'poll_question' => $class->parser->bad_words($ibforums->input['pollq']),

            Füge dies darunter ein:

// Start Mod Public Polls

'status' => ($ibforums->input['open_poll'] == 1) ? 1 : 0,

// End Mod Public Polls

5. Schritt, Öffne die Datei add_poll.php

            Suche folgendes:

$DB->query("SELECT f.allow_pollbump, t.*, p.pid as poll_id,p.choices,p.starter_id,p.votes from ibf_polls p, ibf_topics t, ibf_forums f WHERE t.tid='".$ibforums->input['t']."' and p.tid=t.tid and t.forum_id=f.id");

            Ersetze dies durch:

// Start Mod Public Polls

/* Start Originaltext

        $DB->query("SELECT f.allow_pollbump, t.*, p.pid as poll_id,p.choices,p.starter_id,p.votes from ibf_polls p, ibf_topics t, ibf_forums f WHERE t.tid='".$ibforums->input['t']."' and p.tid=t.tid and t.forum_id=f.id");

        Ende Originaltext */

$DB->query("SELECT f.allow_pollbump, t.*, p.pid as poll_id,p.choices,p.starter_id,p.votes,p.status from ibf_polls p, ibf_topics t, ibf_forums f WHERE t.tid='".$ibforums->input['t']."' and p.tid=t.tid and t.forum_id=f.id");

// End Mod Public Polls

            Suche folgendes:

$db_string = $std->compile_db_string(

array (

'member_id'  => $ibforums->member['id'],

'ip_address' => $ibforums->input['IP_ADDRESS'],

'tid'        => $this->topic['tid'],

'forum_id'  => $this->topic['forum_id'],

'vote_date'  => time(),

)

);

            Ersetze dies durch:

           

// Start Mod Public Polls

$ibforums->input['poll_vote'] = (!isset($ibforums->input['poll_vote'])) ? -1 : intval($ibforums->input['poll_vote']);

// End Mod Public Polls

$db_string = $std->compile_db_string(

array (

'member_id'  => $ibforums->member['id'],

'ip_address' => $ibforums->input['IP_ADDRESS'],

'tid'        => $this->topic['tid'],

'forum_id'  => $this->topic['forum_id'],

'vote_date'  => time(),

// Start Mod Public Polls

'voted'      => ($this->topic['status'] == 1) ? $ibforums->input['poll_vote'] : -1,

// End Mod Public Polls

)

);

6. Schritt, Öffne die Datei skin_poll.php

            Suche nach diesem:

<!--IBF.VOTE-->&nbsp;<!--IBF.SHOW--></div>

            Und füge davor ein:

<!--IBF.OPEN--><br />

            Suche nach jenem:

function Render_row_results($votes, $id, $answer, $percentage, $width) {

global $ibforums;

return <<<EOF

<tr>

<td class='row1'>$answer</td>

<td class='row1'> [ <b>$votes</b> ] </td>

<td class='row1' align='left'><img src='{$ibforums->vars['img_url']}/bar_left.gif' border='0' width='4' height='11' align='middle' alt='' /><img src='{$ibforums->vars['img_url']}/bar.gif' border='0' width='$width' height='11' align='middle' alt='' /><img src='{$ibforums->vars['img_url']}/bar_right.gif' border='0' width='4' height='11' align='middle' alt='' />&nbsp;

[$percentage%]</td>

</tr>

EOF;

}

            Und ersetzte es durch:

function Render_row_results($votes, $id, $answer, $percentage, $width, $voted = "") {

global $ibforums;

return <<<EOF

<tr>

<td class='row1'>$answer</td>

<td class='row1'> [ <b>$votes</b> ] </td>

<td class='row1' align='left'><img src='{$ibforums->vars['img_url']}/bar_left.gif' border='0' width='4' height='11' align='middle' alt='' /><img src='{$ibforums->vars['img_url']}/bar.gif' border='0' width='$width' height='11' align='middle' alt='' /><img src='{$ibforums->vars['img_url']}/bar_right.gif' border='0' width='4' height='11' align='middle' alt='' />&nbsp;

[$percentage%]{$voted}</td>

</tr>

EOF;

}

            Suche dies:

           

function show_total_votes($total_votes) {

global $ibforums;

return <<<EOF

  <tr>

  <td class='row1' colspan='3' align='center'><strong>{$ibforums->lang['pv_total_votes']}: $total_votes</strong></td>

  </tr>

EOF;

}

            Ersetze es durch:

function show_total_votes($total_votes) {

global $ibforums;

return <<<EOF

  <tr>

  <td class='row1' colspan='3' align='center'><!--MOD_PUBLIC_POLL_NOVOTES--><strong>{$ibforums->lang['pv_total_votes']}: $total_votes</strong></td>

  </tr>

EOF;

}

7. Schritt, Öffne die Datei Topics.php

            Suche darin folgendes:

$html .= $this->poll_html->ShowPoll_footer();

            Füge dies darunter ein:

// Start Mod Public Polls

if ($poll_data['status'] == 1)

{

    $html = str_replace( "<!--IBF.OPEN-->", $ibforums->lang['mod_public_poll_infos'], $html );

}

// End Mod Public Polls

            Suche dieses:

//----------------------------------

// Have we voted in this poll?

//----------------------------------

$DB->query("SELECT member_id from ibf_voters WHERE member_id=".$ibforums->member['id']." and tid=".$this->topic['tid']);

$voter = $DB->fetch_row();

            Füge dies darüber ein:

$mod_voted = "";

if ($poll_data['status'] == 1)

{

    $mod_choices = array();

    $DB->query("SELECT v.member_id, v.voted, m.name FROM ibf_voters v LEFT JOIN ibf_members m ON (v.member_id = m.id)WHERE tid=".$this->topic['tid'] ." ORDER BY m.name");

    while ( $t = $DB->fetch_row() )

    {

        $mod_choices[ $t['member_id'] ] = array( 'name' => $t['name'],

        'vote' => $t['voted']);

    }

}

// End Mod für öffentliche Polls

            Suche das hier:

$html  .= $this->poll_html->Render_row_results($votes, $id, $choice, $percent, $width);

            Ersetze es durch jenes hier:

// Start Mod Public Polls

if ($poll_data['status'] == 1)

{

    $mod_voted = $ibforums->lang['mod_public_poll_voters'];

    foreach ($mod_choices as $mod_member_id => $mod_voting_info)

    {

        if ( ($mod_voting_info['vote'] == $id) && $mod_voting_info['vote'] != "-1")

        {

            $mod_voted .= "<a href='{$this->base_url}showuser={$mod_member_id}'>{$mod_voting_info[name]}</a>, ";

            unset($mod_choices[$mod_member_id]);

        }

    }

    $mod_voted = preg_replace("#,$#", "", $mod_voted);

}

$html  .= $this->poll_html->Render_row_results($votes, $id, $choice, $percent, $width, $mod_voted);

/* Start originaler Quelltext

                $html  .= $this->poll_html->Render_row_results($votes, $id, $choice, $percent, $width);

                Ende originaler Quelltext */

            }

// End Mod Public Polls

            Suche nun nach diesem:

           

$html  .= $this->poll_html->show_total_votes($total_votes);

            und füge darunter dies ein:

         

        if ($poll_data['status'] == 1)

        {

        $mod_voted = $ibforums->lang['mod_public_poll_novoters'];

       

        if (count($mod_choices) > 0)

        {

          foreach ($mod_choices as $mod_member_id => $mod_voting_info)

          {

          $mod_voted .= "<a href='{$this->base_url}showuser={$mod_member_id}'>{$mod_voting_info[name]}</a>, ";

          }

        }

        else

        {

          $mod_voted .= $ibforums->lang['mod_public_poll_novoters_info'];

        }

       

        $mod_voted .= "<br />";

        $html = str_replace("<!--MOD_PUBLIC_POLL_NOVOTES-->", $mod_voted, $html);

        }

       

8. Schritt, Öffne die Datei lang_topic.php

            Finde, je nach Dateiformat entweder dies:

           

?>

            oder das:

);           

?>

            Füge davor entweder dies:

           

$lang[mod_public_poll_infos'] = "<b>ACHTUNG: Dies ist eine offene Umfrage und somit kann jeder sehen, wie du abgestimmt hast!</b>";

$lang['mod_public_poll_novoters'] = "<br />Enthaltungen: ";

$lang['mod_public_poll_novoters_info'] = "keine Enthaltungen";

            oder das ein:

           

mod_public_poll_infos => "<b>ACHTUNG: Dies ist eine offene Umfrage und somit kann jeder sehen, wie du abgestimmt hast!</b>",

mod_public_poll_novoters => "<br />Enthaltungen: ",

mod_public_poll_novoters_info => "keine Enthaltungen",           

So, damit wäre die Modifikation abgeschlossen, bei Fragen oder Problemen bitte an www.ipbsupport.de wenden.

So leids mir tut, wirst wohl überprüfen müssen ob die ganzen Schritte stimmen ..

BLACK

Share this post


Link to post

So, Mod wieder aus und wieder neu eingebaut, dass die Files auch ja sauber bleiben:

Was ist mir aufgefallen?

- post_poll_after.php wurde nicht bearbeitet, gibt daher wahrscheinlich eine Fehlermeldung beim Editieren (leider komme ich gar nicht so weit)

- in der lang_topic (deutsche Version) ist ein Hochkomma-Fehler:

 Füge davor entweder dies:

$lang[mod_public_poll_infos'] = "<b>ACHTUNG: Dies ist eine offene Umfrage und somit kann jeder sehen, wie du abgestimmt hast!</b>";
Läd man dann alles hoch, bekommt man folgende Fehlermeldung:
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in /sources/Topics.php on line 1913
Codestelle ist folgende (ich poste auch die 120 Zeilen davor mit, weil es sich bei der betreffenden Zeile um eine if-Abfrage (else-Zweig) handelt.
        //----------------------------------

        // Have we voted in this poll?

        //----------------------------------

        

        $DB->query("SELECT member_id from ibf_voters WHERE member_id=".$ibforums->member['id']." and tid=".$this->topic['tid']);

        $voter = $DB->fetch_row();

        

        if ($voter['member_id'] != 0)

        {

       	 $check = 1;

       	 $poll_footer = $ibforums->lang['poll_you_voted'];

        }

        

        if ( ($poll_data['starter_id'] == $ibforums->member['id']) and ($ibforums->vars['allow_creator_vote'] != 1) )

        {

       	 $check = 1;

       	 $poll_footer = $ibforums->lang['poll_you_created'];

        }

       	 

        if (! $ibforums->member['id'] ) {

       	 $check = 1;

       	 $poll_footer = $ibforums->lang['poll_no_guests'];

        }

        

        //----------------------------------

        // is the topic locked?

        //----------------------------------

        

        if ( $this->topic['state'] == 'closed' )

        {

       	 $check = 1;

       	 $poll_footer = '&nbsp;';

        }

        

        if ( $ibforums->vars['allow_result_view'] == 1 )

        {

       	 if ( $ibforums->input['mode'] == 'show' )

       	 {

          $check       = 1;

          $poll_footer = "";

       	 }

        }

        

        if ($check == 1)

        {

       	 //---------------------

       	 // Show the results

       	 //---------------------

       	 

       	 $total_votes = 0;

       	 

       	 $html = $this->poll_html->poll_header($this->topic['tid'], $poll_data['poll_question'], $edit_link, $delete_link);

       	 

       	 $poll_answers = unserialize(stripslashes($poll_data['choices']));

       	 

       	 reset($poll_answers);

       	 foreach ($poll_answers as $entry)

       	 {

          $id     = $entry[0];

          $choice = $entry[1];

          $votes  = $entry[2];

          

          $total_votes += $votes;

          

          if ( strlen($choice) < 1 )

          {

         	 continue;

          }

          

          if ($ibforums->vars['poll_tags'])

          {

         	 $choice = $this->parser->parse_poll_tags($choice);

          }

          if ( $ibforums->vars['post_wordwrap'] > 0 )

    {

   	 $choice = $this->parser->my_wordwrap( $choice, $ibforums->vars['post_wordwrap']);

    }

          

          $percent = $votes == 0 ? 0 : $votes / $poll_data['votes'] * 100;

          $percent = sprintf( '%.2f' , $percent );

          $width   = $percent > 0 ? (int) $percent * 2 : 0;




// Start Mod Public Polls

if ($poll_data['status'] == 1)

{

    $mod_voted = $ibforums->lang['mod_public_poll_voters'];


    foreach ($mod_choices as $mod_member_id => $mod_voting_info)

    {

        if ( ($mod_voting_info['vote'] == $id) && $mod_voting_info['vote'] != "-1")

        {

            $mod_voted .= "<a href='{$this->base_url}showuser={$mod_member_id}'>{$mod_voting_info[name]}</a>, ";

            unset($mod_choices[$mod_member_id]);

        }


    }


    $mod_voted = preg_replace("#,$#", "", $mod_voted);

}


$html  .= $this->poll_html->Render_row_results($votes, $id, $choice, $percent, $width, $mod_voted);


/* Start originaler Quelltext

                $html  .= $this->poll_html->Render_row_results($votes, $id, $choice, $percent, $width);

                Ende originaler Quelltext */

            }

// End Mod Public Polls




       	 }

       	 

    if ($poll_data['status'] == 1)

    {

    $mod_voted = $ibforums->lang['mod_public_poll_novoters'];

          

    if (count($mod_choices) > 0)

    {

      foreach ($mod_choices as $mod_member_id => $mod_voting_info)

      {

      $mod_voted .= "<a href='{$this->base_url}showuser={$mod_member_id}'>{$mod_voting_info[name]}</a>, ";

      }

    }

    else

    {

      $mod_voted .= $ibforums->lang['mod_public_poll_novoters_info'];

    }

          

    $mod_voted .= "<br />";

    $html = str_replace("<!--MOD_PUBLIC_POLL_NOVOTES-->", $mod_voted, $html);

    }

    // MOD ENDE


     	 

        }                      // ACHTUNG: DAS HIER IST DIE BETREFFENDE FEHLERZEILE 1913

        else

        {

       	 $poll_answers = unserialize(stripslashes($poll_data['choices']));

       	 reset($poll_answers);

Die betreffende Fehlerzeile ist die 5. unterste Zeile "}" (markiert durch // ACHTUNG:)

Share this post


Link to post

Vielen Dank für einen Editor der mir die Klammerebenen ausrichtet, und auch die öffnende Klammer finden kann ...

Bei dem ist nur keine öffnende Klammer drin ich würd sagen die ist schon geschlossen, nämlich mit der } vor MOD ENDE...

Also mach die Klammer mal raus !

Share this post


Link to post

Hmm, jetzt sind wir genauso weit wie am Anfang:

Es funktioniert, eine Umfrage zu erstellen; doch leider wird sie (und damit die Ergebnisse) nicht angezeigt.

Lediglich die zwei Buttons zum Abstimmen bzw. sich das Ergebnis anzuschauen sind vorhanden, reagieren aber logischerweise auf kein Klicken, da keine Auswahl getroffen wurde (wie auch, wenn diese nicht angezeigt wird).

Fehlermeldung existiert keine.

-------

Edit:

P.S.: Hatte die Klammern auch abgezählt, scheine mich aber verzählt zu haben (hatte nämlich testweise eine andere rausgenommen gehabt).

Da damit der Fehler nicht behoben war und ich mir eigentlich recht sicher war und nach dem zweiten Abzählen wieder auf das gleiche Ergebnis kam, ging ich davon aus, dass der Fehler wo anders zu finden sein muss.

(weiß nun auch woran es lag: hatte eine öffnende Klammer nicht mitgezählt, die noch an eine Zeile hinten dran geklatscht war)

Wollte hier niemanden als Klammer-Editor "missbrauchen", sorry. :(

Edited by Hunter

Share this post


Link to post

Es ist echt zum Haare raufen ...

Also, das Spielchen von vorne, ich brauch ne Kopie deiner Topics.php, ich vermute diese Funktion:

$this->poll_html->Render_row_results($votes, $id, $choice, $percent, $width, $mod_voted);

wird nicht richtig angesprochen ...

BLACK

Share this post


Link to post

Hmm, hab den ganzen Mist wieder ausgebaut, funktioniert einfach nicht, egal was ich versuche.

Die Topics.php hast Du, solltest Du irgendwann wieder Lust bekommen, weiterzubasteln, gib einfach bescheid.

Lieben Gruß und trotzdem Danke für die Hilfe

Hunter

Share this post


Link to post

Wollte mich jetzt mal erkundigen ob es sich rentiert den MOD einzubauen oder ob es immer noch Fehlerhaft ist?

Weil wenn jemand jetzt ne fehlerfreie Version hat würde ich diese gerne einbauen...

Share this post


Link to post

Ich post jetzt hier einfach mal die Ursprungsversion, bevor Stefan sie verändert hat ...

Soll nichts gegen Stefan sein, aber meinen eigenen Programmcode, den ich auch selbst eingebaut hab, kann ich viel besser supporten ...

Wäre schön gewesen wenn Stefan hier mal richtig supportet hätte, aber so...

Nu los:

Modifikation für öffentliche Polls.

Neue Datenbankfelder in PHP MyAdmin anlegen:

ALTER TABLE `ibf_polls` ADD `status` INT DEFAULT '0';

ALTER TABLE `ibf_voters` ADD `voted` CHAR( 10 ) DEFAULT 'x';

In /skin/sx/skin_post.php suchen:

  <td class='pformright'><input type='text' size='40' maxlength='250' name='pollq' value='{$ibforums->input['pollq']}' class='textinput' /></td>

</tr>

Darunter einfügen:

<!--Start Mod für öffentliche Polls-->

<br /><input type='checkbox' size='40' value='1' name='open_poll' class='forminput' />&nbsp;<b>Öffentlicher Poll</b><br/>(Abstimmung nicht anonym)

<!--End Mod für öffentliche Polls-->

In /sources/lib/post_poll.php suchen:

$db_string = $std->compile_db_string(

array (

'tid'          => $this->topic['tid'],

'forum_id'      => $class->forum['id'],

'start_date'    => time(),

'choices'      => addslashes(serialize($poll_array)),

'starter_id'    => $ibforums->member['id'],

'votes'        => 0,

'poll_question' => $class->parser->bad_words($ibforums->input['pollq']),

)

);

Statt dessen einfügen:

// Start Mod für öffentliche Polls 

if ($ibforums->input['open_poll'] == 1)

{

$db_string = $std->compile_db_string(

array (

'tid'          => $this->topic['tid'],

'forum_id'      => $class->forum['id'],

'start_date'    => time(),

'choices'      => addslashes(serialize($poll_array)),

'starter_id'    => $ibforums->member['id'],

'votes'        => 0,

'poll_question' => $class->parser->bad_words($ibforums->input['pollq']),

'status'        => 1,

)

);

}

else

{

// Ab hier Originaltext

$db_string = $std->compile_db_string(

array (

'tid'          => $this->topic['tid'],

'forum_id'      => $class->forum['id'],

'start_date'    => time(),

'choices'      => addslashes(serialize($poll_array)),

'starter_id'    => $ibforums->member['id'],

'votes'        => 0,

'poll_question' => $class->parser->bad_words($ibforums->input['pollq']),

)

);

// Originaltext bis hier

}

// End Mod für öffentliche Polls

In sources/lib/add_poll suchen:

$DB->query("SELECT f.allow_pollbump, t.*, p.pid as poll_id,p.choices,p.starter_id,p.votes from ibf_polls p, ibf_topics t, ibf_forums f WHERE t.tid='".$ibforums->input['t']."' and p.tid=t.tid and t.forum_id=f.id");

$this->topic = $DB->fetch_row();

Statt dessen einfügen:

// Start Mod für öffentliche Polls

/* start auskommentierter Originaltext     

$DB->query("SELECT f.allow_pollbump, t.*, p.pid as poll_id,p.choices,p.starter_id,p.votes from ibf_polls p, ibf_topics t, ibf_forums f WHERE t.tid='".$ibforums->input['t']."' and p.tid=t.tid and t.forum_id=f.id");

end auskommentierter Originaltext */

$DB->query("SELECT f.allow_pollbump, t.*, p.pid as poll_id,p.choices,p.starter_id,p.votes,p.status from ibf_polls p, ibf_topics t, ibf_forums f WHERE t.tid='".$ibforums->input['t']."' and p.tid=t.tid and t.forum_id=f.id");

// Ab hier Originaltext

$this->topic = $DB->fetch_row();

// Originaltext bis hier

if ($this->topic['status'] == 1)

{

$openpoll = 1;

}

else

{

$openpoll = 0;

}

// End Mod für öffentliche Polls

Suche:

$db_string = $std->compile_db_string(

array (

'member_id'  => $ibforums->member['id'],

'ip_address' => $ibforums->input['IP_ADDRESS'],

'tid'        => $this->topic['tid'],

'forum_id'  => $this->topic['forum_id'],

'vote_date'  => time(),

)

);

Statt dessen einfügen:

// Start Mod für öffentliche Polls

if ($openpoll == 1)

{

if ($ibforums->input['poll_vote'] == "" )

{

$ibforums->input['poll_vote'] = "x";

}

$db_string = $std->compile_db_string(

array (

'member_id'  => $ibforums->member['id'],

'ip_address' => $ibforums->input['IP_ADDRESS'],

'tid'        => $this->topic['tid'],

'forum_id'  => $this->topic['forum_id'],

'vote_date'  => time(),

'voted'      => $ibforums->input['poll_vote'],

)

);       

}

else

{

// Ab hier Originaltext bis auf letzte Datenbank-Eintragung (voted)

$db_string = $std->compile_db_string(

array (

'member_id'  => $ibforums->member['id'],

'ip_address' => $ibforums->input['IP_ADDRESS'],

'tid'        => $this->topic['tid'],

'forum_id'  => $this->topic['forum_id'],

'vote_date'  => time(),

'voted'      => "x",

)

);

// Originaltext bis hier

}

// End Mod für öffentliche Polls

Öffne /skin/sx/skin_poll.php

Suche:

<div align="center" class="pformstrip"><!--IBF.VOTE-->&nbsp;<!--IBF.SHOW--></div>

Füge statt dessen ein:

<!--Start Mod für öffentliche Polls, Originaltext verändert, '<!--IBF.OPEN--><br>' hinzugefügt-->

<div align="center" class="pformstrip"><!--IBF.OPEN--><br><!--IBF.VOTE-->&nbsp;<!--IBF.SHOW--></div>

<!--End Mof für öffentliche Polls-->

Suche:

function Render_row_results($votes, $id, $answer, $percentage, $width) {

global $ibforums;

return <<<EOF

<tr>

<td class='row1'>$answer</td>

<td class='row1'> [ <b>$votes</b> ] </td>

<td class='row1' align='left'><img src='{$ibforums->vars['img_url']}/bar_left.gif' border='0' width='4' height='11' align='middle' alt='' /><img src='{$ibforums->vars['img_url']}/bar.gif' border='0' width='$width' height='11' align='middle' alt='' /><img src='{$ibforums->vars['img_url']}/bar_right.gif' border='0' width='4' height='11' align='middle' alt='' />&nbsp;[$percentage%]</td>

</tr>

Ersetze durch:

//Start Mod für öffentliche Polls

//In Funktion wurde ", $voted" hinzugefügt, und in der Ausgabe auch "$voted"

function Render_row_results($votes, $id, $answer, $percentage, $width, $voted) {

global $ibforums;

return <<<EOF

<tr>

<td class='row1'>$answer</td>

<td class='row1'> [ <b>$votes</b> ] </td>

<td class='row1' align='left'><img src='{$ibforums->vars['img_url']}/bar_left.gif' border='0' width='4' height='11' align='middle' alt='' /><img src='{$ibforums->vars['img_url']}/bar.gif' border='0' width='$width' height='11' align='middle' alt='' /><img src='{$ibforums->vars['img_url']}/bar_right.gif' border='0' width='4' height='11' align='middle' alt='' />&nbsp;[$percentage%]$voted</td>

</tr>

<!--End Mod für öffentliche Polls-->

Suche

function show_total_votes($total_votes) {

global $ibforums;

return <<<EOF

<tr>

<td class='row1' colspan='3' align='center'><strong>{$ibforums->lang['pv_total_votes']}: $total_votes</strong></td>

Ändere in:

//Start Mod für öffentliche Polls

//In Funktion wurde ", $notvoted" hinzugefügt, in der Ausgabe auch

function show_total_votes($total_votes, $notvoted) {

global $ibforums;

return <<<EOF

<tr>

<td class='row1' colspan='3' align='center'><strong>{$ibforums->lang['pv_total_votes']}: $total_votes</strong>$notvoted</td>

<!--End Mod für öffentliche Polls-->

Öffne /sources/Topics.php:

Suche:

if (! $poll_data['pid']) {

return;

}

Füge darunter an:

// Start Mod für öffentliche Polls

$open = 0; 

if ($poll_data['status'] == 1)

{

$this->topic['open'] = "<b>ACHTUNG: OFFENER POLL, JEDER KANN SEHEN WAS DU GEVOTED HAST !</b>";

$openpoll = 1;

}

else

{

$this->topic['open'] = "";

$openpoll = 0; 

}

// End Mod für öffentliche Polls

Suche

$html .= $this->poll_html->ShowPoll_footer();

Füge darunter an:

// Start Mod für öffentliche Polls       

$html = str_replace( "<!--IBF.OPEN-->", $this->topic['open'], $html );

// End Mod für öffentliche Polls 

Suche

$DB->query("SELECT member_id from ibf_voters WHERE member_id=".$ibforums->member['id']." and tid=".$this->topic['tid']);

Davor einsetzen:

// Start Mod für öffentliche Polls 

// Einlesen der Voter

$DB->query("SELECT member_id, voted FROM ibf_voters WHERE tid=".$this->topic['tid']);

while ( $t = $DB->fetch_row() )

{

$choices[ $t['member_id'] ] = $t['voted'];

}

// Einlesen der Member

$DB->query("SELECT id, name FROM ibf_members");

while ( $t = $DB->fetch_row() )

{

$users[ $t['id'] ] = $t['name'];

}

// End Mod für öffentliche Polls 

Suche:

$html  .= $this->poll_html->Render_row_results($votes, $id, $choice, $percent, $width);

Füge statt dessen ein:

// Start Mod für öffentliche Polls

$voted = "<br />Voted by: <b>";

$cut = 0;

$cuti = 0;

if ($openpoll == 1)

{

foreach ($choices as $member=>$voting)

{

if ($voting == $id)

{

if ($voting == "x")

{

$cuti = 1;

$notvoted .= "<a href='{$this->base_url}showuser={$member}'>{$users[$member]}</a>, ";

}                           

if ($voting != "x")

{

$cut = 1;

$voted .= "<a href='{$this->base_url}showuser={$member}'>{$users[$member]}</a>, ";

}

}

}

if ($cut == 1)

{

$voted = substr($voted,0, -2);

}

if ($cuti == 1)

{

$notvoted = substr($notvoted,0, -2);

}                 

$voted .= "<b/>";

$notvoted .= "<b/>";

$html  .= $this->poll_html->Render_row_results($votes, $id, $choice, $percent, $width, $voted);         

}

else

{

$voted = "";

$notvoted = "";                   

// Ab hier Originaltext (ohne das ", $voted")

$html  .= $this->poll_html->Render_row_results($votes, $id, $choice, $percent, $width, $voted);

// bis hier

}

// End Mod für öffentliche Polls               

}

// Start Mod für öffentliche Polls         

// Originaltext        $html  .= $this->poll_html->show_total_votes($total_votes);

$html  .= $this->poll_html->show_total_votes($total_votes, $notvoted);

// End Mod für öffentliche Polls       

Suche:

foreach ($poll_answers as $entry)

{

$id    = $entry[0];

$choice = $entry[1];

$votes  = $entry[2];

$total_votes += $votes;

if ( strlen($choice) < 1 )

Füge davor ein:

// Start Mod für öffentliche Polls

$notvoted .= "<br />Enthaltung: ";

// End Mod für öffentliche Polls 

Alle Dateien speichern und hochladen, nicht vergessen eventuell Sicherheitskopieen zu ziehen !

Und dieser Programmcode GEHT, BASTA :)

Share this post


Link to post

Wäre schön gewesen wenn Stefan hier mal richtig supportet hätte, aber so...

Solche Sprüche darfst du dir gerne sparen.

Die Version, die ich dir zukommen hab lassen, lief zu 100% und läuft auch jetzt noch auf einigen Foren, die ich betreue, absolut fehlerfrei. Vielleicht sind bei den diversen Anleitungen, die erstellt wurden, irgendwelche Fehler passiert.

Ich glaube wohl, das ich hier genug Freizeit investiere und versuche zu helfen, wo es geht, aber ich hab auch noch ein Leben nebenbei und da steht neben der Uni auch noch Arbeit an, denn von irgendwas möchte ich dann auch noch leben. :)

Nichts für ungut, aber das wollte ich mal klar stellen. ;)

Share this post


Link to post

Das war echt nicht böse gemeint ...

Es ist eben einfach nur doof gelaufen, alle fragen mich hier nach support, und ich muss nen Code supporten, in dem ich mich

a) erst einarbeiten muss, und

B) den ich nicht installiert habe.

Hättes besser gefunden wenn du geschaut hättest, ob du diesen blöden verzwickten Fehler gefunden hättest, der Mod ging ja auch immer, und er ging ja von Anfang an, dein Code mein ich, aber jetzt ist irgendwie der Wurm reingekommen ...

und ich such wie blöd, aber da ich's nicht selbst testen kann, und leider kein extra Forum nur zum testen hab, komm ich leider ned so einfach drauf, und immer jemandem zu sagen "probier mal das" ist einfach doof ...

Nunja, wie gesagt, war kein Vorwurf, ist einfach blöd gelaufen, und ich hätte gedacht das du den Fehler sehr viel schneller findest (zumal ich annehme das der Fehler nicht groß ist), und hatte eben gehofft das mal ein Post von dir a la "probiert mal das" ... kommt.

BLACK

Share this post


Link to post

Wenn ich die Zeit finde, werde ich nochmal drüber schauen. Hatte das Thema aber wegen der Klausurphase nicht genau verfolgt und noch keine Zeit gehabt, mich durch die Seiten zu wühlen. Aber wenn ich das Modul abgeschlossen habe, an dem ich gerade arbeite, und noch die kleine Denksportaufgabe von Silaz gelöst, sowie den gewünschten Mod für TomCrow geschrieben und sonst niemanden vergessen habe, der noch was von mir will, schau ich es mir in Ruhe an. :)

Sorry, ist halt im Moment zeitlich alles ein wenig eng bei mir.

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  

×