Beiträge: 124
Themen: 36
Registriert seit: 30.09.2012
Hi, ich frag jetzt doch mal, eh ich noch Tage suche und probiere...
Mein Ziel ist das hinzufügen zusätzlicher Felder über die member.php. Ich kann das aus gewissen Gründen nicht einfach über die "Eigene Profilfelder"-Funktion tun.
Zunächst mein Ziel: ein Dropdown-Feld mit den Werten von 130-200. Der gewählte Wert soll dann natürlich im Profil gespeichert werden. Eine Auswahl ist Pflicht.
Nun habe ich die member.php aufgerufen und unter:
Code: // Set the data for the new user.
$user = array(
"username" => $mybb->input['username'],
"password" => $mybb->input['password'],
"password2" => $mybb->input['password2'],
"email" => $mybb->input['email'],
"email2" => $mybb->input['email2'],
"usergroup" => $usergroup,
"referrer" => $mybb->input['referrername'],
"timezone" => $mybb->input['timezoneoffset'],
"language" => $mybb->input['language'],
"size" => $mybb->input['size'],
"profile_fields" => $mybb->input['profile_fields'],
"regip" => $session->ipaddress,
"longregip" => my_ip2long($session->ipaddress),
"coppa_user" => intval($mybb->cookies['coppauser']),
);
"size" => $mybb->input['size'], eingefügt.
Anschließend habe ich das Feld im Template member_register als
Code: <td>
<select name="size" id="size">
<option value="130" >130</option>
<option value="131" >131</option>
</select></td>
eingefügt.
In der Datenbank tabelle mybb_users hab ich eine Spalte "size" hinzugefügt, mit dem Datentyp war ich mir nicht ganz sicher, aber int der länge 10 sollte ja vollkommen genügen, oder?
Soweit sogut, das Feld wird angezeigt, es gibt auch bei benutzung keine fehlermeldungen. Allerdings bleibt das Feld in der Tabelle leer. Was hab ich vergessen anzugeben? :/
lg
Beiträge: 8.516
Themen: 59
Registriert seit: 20.04.2010
MyBB-Version: 1.8*
23.02.2014, 23:54
(Dieser Beitrag wurde zuletzt bearbeitet: 24.02.2014, 00:08 von MrBrechreiz.)
Da wo Du dies eingefügt hast, gehört zur Registrierung eines Users. Das size ansich kann meiner Meinung nach so nicht funktionieren, da es nichts in die Datenback schreibt.
Was genau möchtest Du ereichen ?
Du kannst auch ein Eigenes Profilfeld erstellen mit einer Auswahlbox. Diese wird in die Datenbank übergeben bei der Registrierung, somit also auch der Wert was gewählt wurde.
Mit freundlichen Grüßen
MrBrechreiz
Beiträge: 124
Themen: 36
Registriert seit: 30.09.2012
ich möchte ein weiteres Feld in der Registrierung (neben Nutzername, passwort, E-Mail...) hinzufügen. Aber NICHT über die Funktion eigene Felder sondern eben als Code direkt.
Das Feld soll als Dropdown erscheinen und einen Wert zwischen 130 und 200 auswählen lassen. Die Angabe soll Pflicht sein.
Beiträge: 8.516
Themen: 59
Registriert seit: 20.04.2010
MyBB-Version: 1.8*
Was soll dies am Ende bringen ? Nur damit ich es und vieleicht auch die anderen besser verstehen was Du bezweckst, oder was der hintergedanke dabei ist.
Mit freundlichen Grüßen
MrBrechreiz
Beiträge: 124
Themen: 36
Registriert seit: 30.09.2012
naja einerseits das gewünschte Feld
und andererseits möchte ich mit dem "email about new members" plugin dann auf den Wert in der mybb_users tabelle zugreifen und den darüber bei registrierung eines neuen Users an den admin senden lassen.
zur not natürlich auch gern über die "eigene profilfelder"-funktion, aber ich möchte da auch keine 70 Werte manuell eintragen.
Beiträge: 8.516
Themen: 59
Registriert seit: 20.04.2010
MyBB-Version: 1.8*
Was aber wohl der einfachste Weg wäre
Mit freundlichen Grüßen
MrBrechreiz
Beiträge: 124
Themen: 36
Registriert seit: 30.09.2012
wie bekäme ich denn von dort den wert in das plugin? darum gehts ja, und nicht nur, darum, dann ein feld zu haben. siehe auch meine andere frage: https://www.mybb.de/forum/thread-29202.html ich brauch eine variable %size für die mail in der dann der wert eingesetzt und versendet wird.
Beiträge: 8.516
Themen: 59
Registriert seit: 20.04.2010
MyBB-Version: 1.8*
Haste nen Link zum Plugin parat ?
Mit freundlichen Grüßen
MrBrechreiz
Beiträge: 124
Themen: 36
Registriert seit: 30.09.2012
https://www.mybb.de/erweiterungen/16x/pl...w-members/
alternativ hier direkt der code der php des plugiins (falls erlaubt):
Code: <?php
/**
* @version email_admin_new_member.php 2012-01-14
* @category MyBB.Plugins
* @package EmailAdminAboutNewUser
* @subpackage Plugin
* @author Malte Gerth <http://www.malte-gerth.de>
* @copyright Copyright (C) Malte Gerth. All rights reserved.
* @license GNU General Public License version 3 or later; see LICENSE.txt
*/
// Disallow direct access to this file for security reasons
if (!defined("IN_MYBB")) {
die("Direct initialization of this file is not allowed.<br />
<br />Please make sure IN_MYBB is defined.");
}
/** * *******************************************************************
* PLUGIN CODE
*/
function emailAdminAboutNewMember()
{
global $mybb, $db, $user_info;
if ($mybb->settings['emailonreg_onoff'] != "0") {
$subject = '';
$text = '';
$referrerUserInfo = null;
// query user information
$query = $db->simple_select(
"users",
"uid, username, email, regip, regdate, referrer",
"uid=" . (int)$user_info['uid'] . ""
);
$userInfo = $db->fetch_array($query);
// get referrer if exists
if (!empty($userInfo['referrer']) && (0 != $userInfo['referrer'])) {
$query = $db->simple_select(
"users",
"username",
"uid=" . $userInfo['referrer']
);
$referrerUserInfo = $db->fetch_array($query);
}
// get the email content
$subject = $mybb->settings['emailonreg_emailsubject'];
$text = $mybb->settings['emailonreg_emailtext'];
// replace placeholders
// %username %ip %uid %mailadress %date %referrer %bbname %bburl
$text = str_replace('%username', $userInfo['username'], $text);
$text = str_replace('%ip', $userInfo['regip'], $text);
$text = str_replace('%uid', $userInfo['uid'], $text);
$text = str_replace('%mailadress', $userInfo['email'], $text);
$text = str_replace('%date', $userInfo['regdate'], $text);
$text = str_replace('%referrer', $referrerUserInfo['username'], $text);
$text = str_replace('%bbname', $mybb->settings['bbname'], $text);
$text = str_replace('%bburl', $mybb->settings['bburl'], $text);
// send mail
my_mail($mybb->settings['emailonreg_email'], $subject, $text);
}
}
/** * *******************************************************************
* ADDITIONAL PLUGIN INSTALL/UNINSTALL ROUTINES
*
* _install():
* Called whenever a plugin is installed by clicking the "Install" button in the plugin manager.
* If no install routine exists, the install button is not shown and it assumed any work will be
* performed in the _activate() routine.
*
* function hello_install()
* {
* }
*
* _is_installed():
* Called on the plugin management page to establish if a plugin is already installed or not.
* This should return TRUE if the plugin is installed (by checking tables, fields etc) or FALSE
* if the plugin is not installed.
*
* function hello_is_installed()
* {
* global $db;
* if($db->table_exists("hello_world"))
* {
* return true;
* }
* return false;
* }
*
* _uninstall():
* Called whenever a plugin is to be uninstalled. This should remove ALL traces of the plugin
* from the installation (tables etc). If it does not exist, uninstall button is not shown.
*
* function hello_uninstall()
* {
* }
*
* _activate():
* Called whenever a plugin is activated via the Admin CP. This should essentially make a plugin
* "visible" by adding templates/template changes, language changes etc.
*
* function hello_activate()
* {
* }
*
* _deactivate():
* Called whenever a plugin is deactivated. This should essentially "hide" the plugin from view
* by removing templates/template changes etc. It should not, however, remove any information
* such as tables, fields etc - that should be handled by an _uninstall routine. When a plugin is
* uninstalled, this routine will also be called before _uninstall() if the plugin is active.
*
* function hello_deactivate()
* {
* }
*/
$plugins->add_hook("member_do_register_end", "emailAdminAboutNewMember");
function email_admin_new_member_info()
{
return array(
"name" => "Email Admin about new members",
"description" => "Send an email to an administrator if a new registration was made",
"website" => "https://www.mybb.de",
"author" => "Malte Gerth",
"authorsite" => "http://www.malte-gerth.de/mybb.html",
"version" => "2.1.0",
'guid' => '607b9c2229c876d962a7dd3bab3a4f96',
'compatibility' => '14*,16*',
);
}
function email_admin_new_member_activate()
{
global $db,$mybb;
$settingsGroup = array(
"gid" => "NULL",
"name" => "emailonreg",
"title" => "Email about new members",
"description" => "",
"disporder" => "50",
"isdefault" => "no",
);
$db->insert_query("settinggroups", $settingsGroup);
$gid = $db->insert_id();
$settingOnOff = array(
"sid" => "NULL",
"name" => "emailonreg_onoff",
"title" => "Plugin Active",
"description" => "Should an email being send if a new member has registered?",
"optionscode" => "yesno",
"value" => "0",
"disporder" => "1",
"gid" => intval($gid),
);
$db->insert_query("settings", $settingOnOff);
$settingRecipient = array(
"sid" => "NULL",
"name" => "emailonreg_email",
"title" => "Emailadresse",
"description" => "To which emailadresse should the message being send?<br />"
."<small>Seperate more than one adress with \",\"</small>",
"optionscode" => "text",
"value" => "email@domain.tld",
"disporder" => "2",
"gid" => intval($gid),
);
$db->insert_query("settings", $settingRecipient);
$settingMailSubject = array(
"sid" => "NULL",
"name" => "emailonreg_emailsubject",
"title" => "Subject",
"description" => 'The text which should be send to the administrator.',
"optionscode" => "text",
"value" => '[New User] A new member has signed up on '
.$db->escape_string($mybb->settings['bbname']),
"disporder" => "3",
"gid" => intval($gid),
);
$db->insert_query("settings", $settingMailSubject);
$settingMailText = array(
"sid" => "NULL",
"name" => "emailonreg_emailtext",
"title" => "Message",
"description" => 'The text which should be send to the administrator.<br />'
.'<small>You can use the following placeholders: '
.'%bburl %bbname %username %ip %uid %mailadress %date %referrer</small>',
"optionscode" => "textarea",
"value" => 'A new member has registered at ' . $mybb->settings['bbname'] . ".\n"
. "\n"
. "User Information\n"
. "User-ID: %uid \n"
. "Username: %username \n"
. "Emailadresse: %mailadress \n"
. "IP-Adresse: %ip ",
"disporder" => "3",
"gid" => intval($gid),
);
$db->insert_query("settings", $settingMailText);
rebuild_settings();
}
function email_admin_new_member_deactivate()
{
global $db;
$db->delete_query("settinggroups", "name='emailonreg'");
$db->delete_query(
"settings",
"name IN(
'emailonreg_onoff','emailonreg_email',
'emailonreg_emailsubject','emailonreg_emailtext'
)"
);
rebuild_settings();
}
Beiträge: 124
Themen: 36
Registriert seit: 30.09.2012
Ok, ich hab grad rausgefunden, dass die varibale in der user.php erst übergeben wird. jetzt funktionierts und der wert landet in der datenbank. Dummerweise gibt das Plugin den Wert immer noch nicht aus :/
hab unter // query user information size hinzugefügt und unter // replace placeholders ebenso eine Zeile mit $text = str_replace('%size', $mybb->settings['size'], $text);
Aber da das mit dem eigentlichen Thema nix zu tun hat, hab ich die Frage mal bei den Plugins gepostet, eh ich Ärger bekomme https://www.mybb.de/forum/thread-29226.html
|