Thread Verfasser: kev2orbit
Thread ID: 297
Thread Info
Es gibt 9 Beiträge zu diesem Thema, und es wurde 4452 Mal angesehen.
 Thema drucken
Profilfeld mit BB COdes
kev2orbit
Hallo zusammen,

gibt es ein Profilfeld mit BB Codes und wenn ja wo kann ich das Downloaden? Zudem will ich gerne, dass das Profilfeld nur für eine bestimmte Usergruppe in der Edit.php zu finden ist aber für alle wenn ein User auf das Profil geht angezeigt wird.

Nun meine Frage geht das? Und wenn ja wie würde ich das in das Profilfeld einbauen?

Den Code hierfür das nur eine bestimme Usergruppe das Feld bearbeiten kann ist ja dieser:

Code 

if (checkgroup(GruppenID) || checkgroup(GruppenID) || checkgroup(GruppenID)) {
...
}



Aber dieser Code würde ja dann auch dafür sorgen das nur Mitglieder der Gruppe den Inhalt auf den Profil der Person dargestellt bekommen und andere Mitglieder diesen Inhalt nicht sehen können.

Bin Neuling in PHP Fusion. Danke schon einmal für eure Hilfe.

VIele Grüße
Kevin
 
ThickBox
Hi,

du meinst sicherlich die edit_profile.php.
Du kannst es Dir ganz einfach machen.
Du willst, dass in der Signatur z.B. nur bestimmte BB-Codes angezeigt werden oder gänzlich alle BB-Codes nur für bestimmte Gruppen?
Wenn nur für bestimmte Gruppen, dann kannst du in der Datei (/includes/user_fields/)user_sig_include.php da entsprechend wie folgt abändern.
Ersetze den gesamten Code (ausgehend von einer Standard-Datei!):

Code 

<?php
/*-------------------------------------------------------+
| PHP-Fusion Content Management System
| Copyright (C) 2002 - 2011 Nick Jones
| http://www.php-fusion.co.uk/
+--------------------------------------------------------+
| Filename: user_sig_include.php
| Author: Digitanium
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at www.gnu.org/licenses/agpl.html. Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/
if (!defined("IN_FUSION")) { die("Access Denied"); }

// Display user field input
if ($profile_method == "input") {
   require_once INCLUDES."bbcode_include.php";

   $user_sig = isset($user_data['user_sig']) ? $user_data['user_sig'] : "";
   if ($this->isError()) { $user_sig = isset($_POST['user_sig']) ? stripinput($_POST['user_sig']) : $user_sig; }

   echo "<tr>\n";
   echo "<td valign='top' class='tbl".$this->getErrorClass("user_sig")."'><label for='user_sig'>".$locale['uf_sig'].$required."</label></td>\n";
   echo "<td class='tbl".$this->getErrorClass("user_sig")."'>";
   echo "<textarea id='user_sig' name='user_sig' cols='60' rows='5' class='textbox' style='width:295px'>".$user_sig."</textarea><br />\n";
   if ((checkgroup(1)) || (checkgroup(2)) || (checkgroup(3))) {
   echo display_bbcodes("300px", "user_sig", "inputform", "smiley|b|i|u||center|small|url|mail|img|color");
   }
   echo "</td>\n</tr>\n";

   if ($required) { $this->setRequiredJavaScript("user_sig", $locale['uf_sig_error']); }

// Display in profile
} elseif ($profile_method == "display") {

// Insert and update
} elseif ($profile_method == "validate_insert"  || $profile_method == "validate_update") {
   // Get input data
   if (isset($_POST['user_sig']) && ($_POST['user_sig'] != "" || $this->_isNotRequired("user_sig"))) {
      // Set update or insert user data
      $this->_setDBValue("user_sig", stripinput(trim($_POST['user_sig'])));
   } else {
      $this->_setError("user_sig", $locale['uf_sig_error'], true);   
   }
}
?>


Hier wird nur bei der Eingabe entsprechend der Gruppen ID 1,2 und 3 die BB-Codes angezeigt. Die Ausgabe jedoch sieht JEDER!
Aber Achtung, manuell die BB-Codes reinsetzen kann man deshalb trotzdem. Das heißt, ein User, der nicht in der entsprechenden Gruppe ist, kann trotzdem manuell in das Textfeld die BB-Codes von Hand reinschreiben und diese werden trotzdem abgespeichert und auch dann richtig ebenfalls ausgegeben.

Einzelne BB-Codes nur für bestimmte Gruppen kannst du auch definieren. Die Datei (/includes/bbcodes/)code_bbcode_include.php mal als Beispiel hergenommen...
Da brauchst du nur den Code wie folgt anpassen, damit dieser genau nur für die bestimmte Gruppe verwendebar (anklickbar!) ist:

Code 

<?php
/*-------------------------------------------------------+
| PHP-Fusion Content Management System
| Copyright (C) 2002 - 2009 Nick Jones
| http://www.php-fusion.co.uk/
+--------------------------------------------------------+
| Filename: code_bbcode_include.php
| Author: Wooya
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at www.gnu.org/licenses/agpl.html. Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/
if (!defined("IN_FUSION")) { die("Access Denied"); }

if (preg_match("/\/forum\//i", FUSION_REQUEST)) global $data;

$code_count = substr_count($text, "[code]");
if ((checkgroup(1)) || (checkgroup(2)) || (checkgroup(3))) {

for ($i=0; $i < $code_count; $i++) {
   if (preg_match("/\/forum\//i", FUSION_REQUEST) && isset($data['post_id'])) {
      $code_save = "<a href=\'".INCLUDES."bbcodes/code_bbcode_save.php?thread_id=".$_GET['thread_id']."&amp;post_id=".$data['post_id']."&amp;code_id=".$i."\'><img src=\'".INCLUDES."bbcodes/images/code_save.png\' alt=\'".$locale['bb_code_save']."\' title=\'".$locale['bb_code_save']."\' style=\'border:none\' /></a>&nbsp;&nbsp;";
   } else {
      $code_save = "";
   }
   $text = preg_replace("#\[code\](.*?)\[/code\]#sie", "'<div class=\'code_bbcode\'><div class=\'tbl-border tbl2\' style=\'width:400px\'>".$code_save."<strong>".$locale['bb_code_code']."</strong></div><div class=\'tbl-border tbl1\' style=\'width:400px;white-space:nowrap;overflow:auto\'><code style=\'white-space:nowrap\'>'.formatcode('\\1').'<br /><br /><br /></code></div></div>'", $text, 1);
}
}
?>

Auch hier wurde die Gruppen ID 1,2 und 3 als berechtigt vordefiniert.

Achtung, das Ganze ist ungetestet und du solltest vorher ein Backup machen.

Den Code den du gepostet hattest, wie man Gruppen abfragt, dort fehlen Klammern innerhalb des Codes. Verwende den bitte so nicht.

Ich hoffe, Dir hilft das weiter...
Aktuell inaktiv seit 12/2013 wegen privaten Gründen!
 
kev2orbit
Hi ThickBox,

danke für deine Antwort. Damit kann ich sicherlich was anfangen.

Ich glaube du hast mich etwas falsch verstanden. Ich möchte das das gesamte Profilfeld in der edit_profile nur dann auftaucht wenn der User in dieser Gruppe ist. Der Inhalt sofern diese in der edit_profile eingetragen wurde soll jedoch für alle sichtbar sein wenn ein User auf das Profil dieses Mitglieds geht.


Ich vermute ich muss in diesen Fall einfach nur die If abfrage vor den

Code 

echo "<tr>\n";



einfach nur einbinden und mit der Klammer schließen nach dem

Code 

echo "</td>\n</tr>\n";



Oder? Wird der Inhalt trotzdem für alle angezeigt oder dann auch nur für Mitglieder die in dieser Gruppe sind? weil wenn das der fall ist wäre das ja falsch da ich ja möchte das wenn jemand es in sein Profilfeld eingibt dieser Inhalt trotzdem für alle sichtbar ist.

Gruß
Kevin
 
firemike
Warum legst du dir nicht einen Testuser an und probierst es aus?
 
kev2orbit
Also funktionieren tut es er zeigt für User in der Gruppe die BB Codes an aber für alle anderen nicht nur ist nun das Problem wenn ein User was in das Feld einträgt und es speichert ist es weder für Mitglieder als auch für User die in der Gruppe sind im Profil sichtbar.

Woran liegt das?

Viele Grüße
Kevin
 
ThickBox
Ich glaube, du hast mich falsch verstanden in dem du nicht richtig gelesen hattest. Das liegt wohl auch daran, dass du nicht nachvollziehen konntest, obwohl ich es beschrieben habe, was welcher Code genau macht.
Lese meinen Beitrag nochmals genau durch und du wirst feststellen, dass es genau so funktioniert, wie du es willst.
Du darfst aber nicht mit deinem Account gucken, ob du das Profilfeld nicht mehr siehst, sondern mit einem 08/15-Account musst du das machen. Als User mit der ID 1 siehst du eh immer alles, egal ob es für eine bestimmte Gruppe festgelegt ist oder nicht.
Mein Code bewirkt, dass ein User, der nicht in der entsprechenden Gruppe ist, die Eingabemöglichkeit erst gar nicht sieht.
Es geht hier um die Eingabemöglichkeit, nicht um das, was in der DB gespeichert wird. Du darfst da nicht Äpfel mit Birnen verwechseln.
Und deine Frage, warum nach dem Speichern es für Niemanden sichtbar ist, was der berechtigte User eingetragen hatte, kann Dir soweit keiner beantworten.
Du hattest ja geschrieben, dass du den Code umstellst und keiner weiß nun, was du gemacht hast und somit kann man Dir auch nicht sagen "da ist der Fehler" oder "das musst so und so machen".

Ich kann mich nur wiederholen und sagen; gucke Dir meinen oberen Post mal richtig an. Ich habe alles beschrieben wo du was machen musst. Wenn du das richtig machst, funktioniert es auch. Ich habe es auf einer frischen Fusion-Installation selbst genau so als Test durchgeführt und es funktioniert fehlerfrei!
Aktuell inaktiv seit 12/2013 wegen privaten Gründen!
 
kev2orbit
Hallo,

ich habe den Code nun so:

Code 

<?php
/*-------------------------------------------------------+
| PHP-Fusion Content Management System
| Copyright (C) 2002 - 2011 Nick Jones
| http://www.php-fusion.co.uk/
+--------------------------------------------------------+
| Filename: user_sig_include.php
| Author: Digitanium
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at www.gnu.org/licenses/agpl.html. Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/
if (!defined("IN_FUSION")) { die("Access Denied"); }

// Display user field input
if ($profile_method == "input") {
   require_once INCLUDES."bbcode_include.php";

   $user_wasichmag = isset($user_data['user_wasichmag']) ? $user_data['user_wasichmag'] : "";
   if ($this->isError()) { $user_wasichmag = isset($_POST['user_wasichmag']) ? stripinput($_POST['user_wasichmag']) : $user_wasichmag; }

   echo "<tr>\n";
   echo "<td valign='top' class='tbl".$this->getErrorClass("user_wasichmag")."'><label for='user_wasichmag'>".$locale['uf_wasichmag'].$required."</label></td>\n";
   echo "<td class='tbl".$this->getErrorClass("user_wasichmag")."'>";
   echo "<textarea id='user_wasichmag' name='user_wasichmag' cols='60' rows='5' class='textbox' style='width:295px'>".$user_wasichmag."</textarea><br />\n";
   if ((checkgroup(1))) {
   echo display_bbcodes("300px", "user_wasichmag", "inputform", "smiley|b|i|u||center|small|url|mail|img|color");
   }
   echo "</td>\n</tr>\n";

   if ($required) { $this->setRequiredJavaScript("user_wasichmag", $locale['uf_wasichmag_error']); }

// Display in profile
} elseif ($profile_method == "display") {

// Insert and update
} elseif ($profile_method == "validate_insert"  || $profile_method == "validate_update") {
   // Get input data
   if (isset($_POST['user_wasichmag']) && ($_POST['user_wasichmag'] != "" || $this->_isNotRequired("user_wasichmag"))) {
      // Set update or insert user data
      $this->_setDBValue("user_wasichmag", stripinput(trim($_POST['user_wasichmag'])));
   } else {
      $this->_setError("user_wasichmag", $locale['uf_wasichmag_error'], true);   
   }
}
?>



Das die BB Codes trotzdem aber sofern man die Befehle weiß eingeben kann ist mir bewusst. Ich habe ein Profil Feld "Was ich mag" gemacht. Hierfür habe ich sowohl die Locale bearbeitet als auch die include_var geändert. Aber er zeigt es bei mir einfach nicht im Profil an das Feld auch nicht bei einem Test Account den ich vorher erstellt habe. Dieser User ist nicht in der Gruppe drin sieht somit also auch die BB Codes nicht ich als Admin sehe diese dann habe ich den Benutzer in die Gruppe gemacht und dann sieht dieser Benutzer die BB Codes aber angezeigt wird es für niemanden wenn man da was eintragen tut und speichert weder für Admins noch für normale Mitglieder noch für Mitglieder in der Gruppe.

Edit_profile und profile sind noch original keine Anpassung vorgenommen in den Dateien.

Zusammengefügt am 27. Juli 2014 um 21:37:11:
Generell möchte ich das das gesamte Profilfeld nur für bestimmte Gruppe angezeigt wird in edit_profile aber bei jeden Mitglied im Profil der Person angezeigt wird.

Mehr wollte ich gar nicht.
Bearbeitet von kev2orbit am 27.07.2014 um 21:37
 
ThickBox
Dein "if ((checkgroup(1))) { }" sollte eher so aussehen "if (checkgroup(1)) { }". Du stellst hier aber die Abfrage rein nur um den BB-Code selbst, als um den kompletten INPUT-Code.

Code 

<?php
/*-------------------------------------------------------+
| PHP-Fusion Content Management System
| Copyright (C) 2002 - 2011 Nick Jones
| http://www.php-fusion.co.uk/
+--------------------------------------------------------+
| Filename: user_sig_include.php
| Author: Digitanium
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at www.gnu.org/licenses/agpl.html. Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/
if (!defined("IN_FUSION")) { die("Access Denied"); }

// Display user field input
if ($profile_method == "input") {
if (checkgroup(1)) {
   require_once INCLUDES."bbcode_include.php";

   $user_wasichmag = isset($user_data['user_wasichmag']) ? $user_data['user_wasichmag'] : "";
   if ($this->isError()) { $user_wasichmag = isset($_POST['user_wasichmag']) ? stripinput($_POST['user_wasichmag']) : $user_wasichmag; }

   echo "<tr>\n";
   echo "<td valign='top' class='tbl".$this->getErrorClass("user_wasichmag")."'><label for='user_wasichmag'>".$locale['uf_wasichmag'].$required."</label></td>\n";
   echo "<td class='tbl".$this->getErrorClass("user_wasichmag")."'>";
   echo "<textarea id='user_wasichmag' name='user_wasichmag' cols='60' rows='5' class='textbox' style='width:295px'>".$user_wasichmag."</textarea><br />\n";
   echo display_bbcodes("300px", "user_wasichmag", "inputform", "smiley|b|i|u||center|small|url|mail|img|color");
   echo "</td>\n</tr>\n";

   if ($required) { $this->setRequiredJavaScript("user_wasichmag", $locale['uf_wasichmag_error']); }
}

// Display in profile
} elseif ($profile_method == "display") {

// Insert and update
} elseif ($profile_method == "validate_insert"  || $profile_method == "validate_update") {
   // Get input data
   if (isset($_POST['user_wasichmag']) && ($_POST['user_wasichmag'] != "" || $this->_isNotRequired("user_wasichmag"))) {
      // Set update or insert user data
      $this->_setDBValue("user_wasichmag", stripinput(trim($_POST['user_wasichmag'])));
   } else {
      $this->_setError("user_wasichmag", $locale['uf_wasichmag_error'], true);   
   }
}
?>

Nur wer in der Gruppe mit der ID 1 ist, dem wird in der edit_profile.php das Feld angezeigt. Die Ausgabe ist für JEDEN sichtbar.
Aktuell inaktiv seit 12/2013 wegen privaten Gründen!
 
kev2orbit
Hi,

erst einmal danke für deine Antwort. Fällt wird nur für User in der Gruppe in der edit angezeigt und auch der Inhalt gespeichert wenn ich speicher aber er zeigt trotzdem den Inhal im Profil nicht an weder für Mitglieder in der Gruppe noch für normale Mitglieder die nicht in der Gruppe sind auch Admins sehen den Inhalt nicht.

Alle anderen Felder zeigt er an habe zum Testen Geburtsdatum eingegeben und gespeichert zeigt er im Profil und der Edit an Wohnort genau das selbe.

Kann es an der Datenbank liegen?

Aber eigentlich ja nicht weil dann würde er den Inhalt ja nicht in der Edit Profile anzeigen. Echt komisch. In der Profile wurde auch nichts im Code verändert. An der Profile kann es also auch nicht liegen da ja andere Felder wenn man hier was eingibt angezeigt werden.

Profilfeld vorher gelöscht und neu aktiviert geht trotzdem nicht wird nur in der Edit Profile weiterhin angezeigt der Inhalt.

Viele Grüße
Kevin

Zusammengefügt am 16. August 2014 um 18:41:03:
Ich muss noch mal Pushen Leider funktioniert das ganze Immer noch nicht.

Inhalt wird in Edit Profile angezeigt kann auch Inhalt eintragen speichert er auch aber er gibt es im Profil weder für Nutzer die in der Gruppe sind aus noch für alle anderen.

Das Feld soll in der Edit Profile nur für Nutzer in Gruppe 4 zb zu sehen sein aber im Profil für alle dargestellt werden, die dieses Feld ausgefüllt haben egal ob ein Nutzer in Gruppe 4 ist oder nicht.

Ich danke euch für die Hilfe.

Gruß
Kevin

Zusammengefügt am 17. August 2014 um 12:52:10:
Kann das auch an der PHP Version liegen? Ich habe auf mein Server die neueste Version laufen deswegen frage ich.
Bearbeitet von kev2orbit am 17.08.2014 um 12:52
 
Springe ins Forum: