MyBB.de Forum

Normale Version: Zusätzliche Felder in member.php
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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
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.
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.
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.
naja einerseits das gewünschte Feld Wink
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.
Was aber wohl der einfachste Weg wäre Big Grin
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.
Haste nen Link zum Plugin parat ?
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();
}
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 Wink https://www.mybb.de/forum/thread-29226.html