perfect

StevenBullen wrote:

Depends if you change the style in

database:user:style
or
database:config:o_default_style

I am guessing that if you change it in user:style then it will use the default_style if it cannot find the one you requested.

I must have asked wrong...
what I am looking for is the php code the pulls user.style, determines if that style "exists" and then swaps in the default style otherwise.

If you notice in header.php, pun_user['style'] is already populated, so this comparison happens elsewhere.

I've noticed that if I manually set my style to a non-existant sytyle (by entering it directly into the db) PunBB still displays the default (Oxygen) style.  Where is the code the governs this behavior?

Thanks,
  MRB

If you are like me, you may have wanted to change the options on the left-hand side of profile.php - add additional options, remove options, whatever.  Currently, that is more or less hard-coded into PunBB.

There is an easy fix for this.

Step 1: Open up /include/functions.php

Around line 294 or so you should see:

function generate_profile_menu($page = '')

at the top of this function, add a variable similar to this:

$profile_spaces = array('essentials', 'personal', 'messaging', 'personality', 'display', 'privacy');

You'll want an entry for each left-hand side option you want exlcuding administration

You will then see you HTML, and a <ul> element with several hard-coded <li>'s that correspond to the entries you have on the left hand side.
If you didn't care, you could just add entries to this list, but my solution is a bit more dynamic and could eventually lead to a web based interface in which to add/remove profile menu options.

ahem.

You'll want to remove or comment everything between <ul> and </ul>

after the <ul>, you'll want to add the following:

<?php

foreach($profile_spaces as $space)
{ ?>
    <li<?php if ($page == $space) echo ' class="isactive"'; ?>><a href="profile.php?section=<? echo $space; ?>&id=<?php echo $id ?>"><?php echo $lang_profile['Section ' . $space] ?></a></li>
<? }

if ($pun_user['g_id'] == PUN_ADMIN || ($pun_user['g_id'] == PUN_MOD && $pun_config['p_mod_ban_users'] == '1')): ?><li<?php if ($page == 'admin') echo ' class="isactive"'; ?>><a href="profile.php?section=admin&id=<?php echo $id ?>"><?php echo $lang_profile['Section admin'] ?></a></li>
<?php endif; ?>

At this point, changes you make in the $profile_spaces will be reflected in the left hand side menu.

you will need to make the necessary adds to /lang/<language>/profile.php.

Also, you will need to make modifications to /profile.php:

around line ~1000, you will see:

else /* edit */
{
    if (!$section || $section == 'essentials')
    ...
    else if($section = 'personal')
    ...

Look at these if statements in order to determine what you'll need in order to make the profile menu item work.  At the very minimum, i find that each section should start from this:

    else if ($section == 'YOUR SECTION HERE')
    {

        if ($pun_user['g_set_title'] == '1')
            $title_field = '<label>'.$lang_common['Title'].'  (<em>'.$lang_profile['Leave blank'].'</em>)<br /><input type="text" name="title" value="'.pun_htmlspecialchars($user['title']).'" size="30" maxlength="50" /><br /></label>'."\n";

        $page_title = pun_htmlspecialchars($pun_config['o_board_title']).' / '.$lang_common['Profile'];
        require PUN_ROOT.'header.php';

        generate_profile_menu($section);

    ?>
        <div class="blockform">
            <h2><span><?php echo pun_htmlspecialchars($user['username']).' - '.$lang_profile['Section media'] ?></span></h2>
            <div class="box">
                <form id="profile8" method="post" action="profile.php?section=<?php echo $section ?>&id=<?php echo $id ?>&action=foo">
                    <div class="inform">
                    <input type="hidden" name="form_sent" value="1" />
                    <fieldset>
                        YOUR FORM HERE
                    </fieldset>
                    </div>
                </form>
            </div>
        </div>
<?php
    }

around line ~650, you will see:

    // Validate input depending on section
    switch ($section)

there are a series of case statements - make sure to add a case statement for your new profile menu items.  this is for verifying the data you put into your form above.

eg:

case 'user data':
        {
                  BLAH BLAH BLAH
        }

There you have it.  eventually, i will post on how to create a web interface for adding/removing these elements and for editing the actual code that should go there.

I've got a variation on the add attribute question:

I've added the attribute, no problem; it even pulls data from the DB, no problem

My issue is that some of the fields are, by necessity, in another table from users.  this is causing an error when changes are made and the user tries to submit (I presume that the UPDATE statement is looking for these fields in users)... but I can't seem to find this particular code in profile.php.

Any help?  let's call this second table "p"

- manzell b