vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=15)
-   -   Adding a New Variable (https://vborg.vbsupport.ru/showthread.php?t=157798)

Remulon 09-14-2007 03:22 AM

Adding a New Variable
 
Hi All,

I am trying to add a new variable to my vBulletin installation.

My vBulletin deals with sensitive content, and I require that the Forum Name sent in various emails, to be different to the actual Forum Name.
In other words, I need to mask the $vboptions[bbtitle] variable in certain places.

What I have done is changed $vboptions[bbtitle] to $vboptions[bbtitle_discrete] in the required phrases and then basically I have created a new record in the `setting` table for the $vboptions[bbtitle_discrete] variable.

This variable can now be edited in the adminCP, but the discrete forum name saved in this variable does not show up in the emails, or anywhere else for that matter.

I'm not sure if this is the correct way to go about it, but that is what I have so far.

Can anyone help me out, or suggest another way to do this?

Thanks in advance.

Remo

Eikinskjaldi 09-14-2007 04:13 AM

Your code has to know that it is supposed to use the new variable.

You will need to edit the code and templates which display the name, and swap the variable over.

Since its only emails you care about I'd concentrate on includes/functions_digest.php to start with

Remulon 09-14-2007 04:54 AM

Thanks Eikinskjaldi, I'm not sure if I'm on the right track though.

Like I said, I have replaced the variable in all of the phrases that I require and I have created the new variable in the `setting` table.

I checked out the "includes/functions_digest.php" file and it does not look to have any relevance to my problem.

It does not deal with pulling values from the setting table, it actually looks to pull stuff mainly dealing with threads and posts.

Please advise if I am missing something?

Remulon 09-16-2007 10:20 PM

Can Anyone else offer any assistance on this?

Surely it can't be that difficult?

Thanks.

Remo

Eikinskjaldi 09-17-2007 12:38 AM

I guess it depends on what you mean by "various emails", I assumed you were using the builtin digest system.

Can you give more information on exactly where and when the new phrase is supposed to be seen.

A quick grep of the code shows 42 locations where bbtitle is used...sure you got them all?

Remulon 09-17-2007 04:01 AM

Thanks for your reply Eikinskjaldi.

Below is the list of phrases that I have edited to contain the variable $vboptions[bbtitle_discrete] in place of $vboptions[bbtitle].

Email Subject Text Phrases Containing 'bbtitle_discrete':
- accountlocked
- activateaccount_change
- contactus
- infraction_received
- lostpw
- moderation_deleted
- moderation_validated
- newuser
- parentcoppa_profile
- parentcoppa_register
- payment_received
- payment_reversed
- pmboxalmostfull
- pmboxfull
- pmreceived
- reportbadpost_discuss
- reportbadpost_nodiscuss
- resetpw
- warning_received

Email Body Text Phrases Containing 'bbtitle_discrete':
- accountlocked
- activateaccount
- activateaccount_change
- birthday
- contactus
- digestforum
- digestthread
- infraction_received_post
- infraction_received_profile
- lostpw
- moderation_deleted
- moderation_validated
- moderator
- newevent
- newuser
- notify
- paidsubscription_reminder
- parentcoppa_profile
- parentcoppa_register
- payment_received
- payment_reversed
- pmboxalmostfull
- pmboxfull
- pmreceived
- reminder
- resetpw
- sendtofriend
- usermessage
- warning_received_post
- warning_received_profile

Where is it that the variable $vboptions[bbtitle] is set in the code?
Does it have something to do with the $registry variable?

I am assuming that it is pulled out of the Database, set once, and then it is available to all scripts, similar to a type of global variable.

If I could find out how 'bbtitle' is declared so that it is available in all of these phrases, I could declare 'bbtitle_discrete' in a similar manner.

Thanks

Remo

Dismounted 09-17-2007 05:03 AM

$vbulletin->options['bbtitle'] is used in files.

Remulon 09-17-2007 05:19 AM

Great, thanks Dismounted.

What I need to know now is where that variable is assigned its value, once the value has been retrieved from the database.

This is so that I can use the variable that I have added to the setting table in the same manner..

ie: $vbulletin->options['bbtitle_discrete']

Eikinskjaldi 09-17-2007 07:50 AM

Quote:

Originally Posted by Remulon (Post 1340640)
Great, thanks Dismounted.

What I need to know now is where that variable is assigned its value, once the value has been retrieved from the database.

This is so that I can use the variable that I have added to the setting table in the same manner..

ie: $vbulletin->options['bbtitle_discrete']

At a guess the setting is in a loop of data from the db, like
while name=>value
option[name] = value


I don't know where that would be.

Here's a grep of all the include files that reference it, hope it helps

adminfunctions.php:124: <b><a href="../<?php echo $vbulletin->options['forumhome']; ?>.php"><?php echo $vbulletin->options['bbtitle']; ?></a></b><br />
adminfunctions.php:260: case 'AdminCP': $titlestring = iif($title, "$title - ") . $vbulletin->options['bbtitle'] . " - vBulletin $vbphrase[admin_control_panel]"; break;
adminfunctions.php:261: case 'ModCP': $titlestring = iif($title, "$title - ") . $vbulletin->options['bbtitle'] . " - vBulletin $vbphrase[moderator_control_panel]"; break;
adminfunctions.php:262: case 'Upgrade': $titlestring = iif($title, "vBulletin $title - ") . $vbulletin->options['bbtitle']; break;
adminfunctions.php:263: case 'Install': $titlestring = iif($title, "vBulletin $title - ") . $vbulletin->options['bbtitle']; break;
adminfunctions.php:264: default: $titlestring = iif($title, "$title - ") . $vbulletin->options['bbtitle'];
class_bbcode.php:2331: 'html' => '<a href="' . $prepend_path . 'showthread.php?' . $vbulletin->session->vars['sessionurl'] . 't=%2$s" title="' . htmlspecialchars_uni($vbulletin->options['bbtitle']) . ' - ' . $vbphrase['thread'] . ' %2$s">%1$s</a>',
class_bbcode.php:2345: 'html' => '<a href="' . $prepend_path . 'showthread.php?' . $vbulletin->session->vars['sessionurl'] . 'p=%2$s#post%2$s" title="' . htmlspecialchars_uni($vbulletin->options['bbtitle']) . ' - ' . $vbphrase['post'] . ' %2$s">%1$s</a>',
class_mail.php:196: $mailfromname = construct_phrase($this->fetch_first_line($vbphrase['x_mailer']), $vbulletin->options['bbtitle']);
class_mail.php:200: $mailfromname = $vbulletin->options['bbtitle'];
class_mail.php:218: $mailfromname = "$username @ " . $vbulletin->options['bbtitle'];
functions_online.php:214: $userinfo['where'] = '<a href="' . $vbulletin->options['forumhome'] . '.php' . $vbulletin->session->vars['sessionurl_q'] . '">' . $vbulletin->options['bbtitle'] . '</a>';
functions_online.php:892: $userinfo['where'] = '<a href="index.php?' . $vbulletin->session->vars['sessionurl'] . '">' . $vbulletin->options['bbtitle'] . '</a>';
functions_online.php:933: $userinfo['where'] = '<a href="' . $vbulletin->options['forumhome'] . '.php' . $vbulletin->session->vars['sessionurl_q'] . '">' . $vbulletin->options['bbtitle'] . "</a>";
functions_online.php:947: $userinfo['where'] = '<a href="' . $vbulletin->options['forumhome'] . '.php' . $vbulletin->session->vars['sessionurl_q'] . '">' . $vbulletin->options['bbtitle'] . "</a>";
functions_online.php:963: $userinfo['where'] = '<a href="' . $vbulletin->options['forumhome'] . '.php' . $vbulletin->session->vars['sessionurl_q'] . '">' . $vbulletin->options['bbtitle'] . "</a>";
functions.php:2602: $title = $vbulletin->options['bbtitle'];
functions.php:2730: $title = $vbulletin->options['bbtitle'];


line numbers are for 3.6.6

Remulon 09-17-2007 10:51 PM

Yeah,

I think these are the ones that I am concerned with:

Quote:

class_mail.php:196: $mailfromname = construct_phrase($this->fetch_first_line($vbphrase['x_mailer']), $vbulletin->options['bbtitle']);
class_mail.php:200: $mailfromname = $vbulletin->options['bbtitle'];
class_mail.php:218: $mailfromname = "$username @ " . $vbulletin->options['bbtitle'];

I have changed these to be: $vbulletin->options['bbtitle_discrete'] but the problem is that when the emails are sent, this variable is empty.

In the same progression of code, where would the: $vbulletin->options['bbtitle'] variable be getting its value? (From the Database I know) But where is it set?

Quote:

At a guess the setting is in a loop of data from the db, like
while name=>value
option[name] = value


I don't know where that would be.

Thanks for your help Eikinskjaldi.

Can anyone else suggest a solution?

Remo.

Paul M 09-17-2007 11:15 PM

How exactly have you created 'bbtitle_discrete' in the first place ?

Remulon 09-17-2007 11:22 PM

Thanks for your reply Paul, please read my first post in this thread.

Remulon 09-19-2007 04:52 AM

Hi, I'm still looking for a solution on this.. can anyone help?

Paul M 09-19-2007 07:13 AM

When you answer my question, what steps exactly did you take to create it.

Remulon 09-19-2007 11:35 PM

Hi Paul, Thanks for replying.

I created the variable through MySQL queries.

Code:

INSERT INTO `setting` VALUES ('bbtitle_discrete', 'address', 'HC Support Forum', 'vBulletin Forums', '', 15, 0, 1, 'free', 'vbulletin', '', 0);

INSERT INTO `phrase` VALUES ('', -1, 'setting_bbtitle_discrete_desc', 'vbsettings', 'A discrete name for your forum. This appears in emails etc. (Wherever $vboptions[bbtitle_discrete] appears)', 'vbulletin', '', 0, '', 0);

INSERT INTO `phrase` VALUES ('', -1, 'setting_bbtitle_discrete_title', 'vbsettings', 'Discrete Forum Name', 'vbulletin', '', 0, '', 0);


The above queries allow me to edit the new variable in the adminCP.

I assumed that since the variable is in the setting table (alongside the original variable - bbtitle), it would be simple for me to access it's value in the scripts, provided I ensure that it is being set.

That's why I am trying to find out where the original variable - bbtitle - is set.

Regards

Remo

Dismounted 09-20-2007 06:00 AM

You could've created that setting without running SQL queries of your own, that's what the Products are for. You could just change $vbulletin->options['bbtitle'] by using a plugin at global_start.

Remulon 09-21-2007 04:11 AM

ok, thanks Dismounted, but...

I don't actually want to change $vbulletin->options['bbtitle'] everywhere, only in some places. That's why I created another variable, $vbulletin->options['bbtitle_discrete'] , so that I can use both.

Also, I created it this way so that it can be edited in the adminCP.

Could you explain how I would do this in the way of a plugin?

Thanks

Remo

Dismounted 09-21-2007 05:04 AM

It depends where you want to change it.

Remulon 09-21-2007 05:49 AM

If you go back to page 1 in this thread, one of my posts states all of the phrases I have changed 'bbtitle' to 'bbtitle_discrete'.

Marco van Herwaarden 09-21-2007 06:11 PM

What you are trying to do would need a lot of changes in phrases, templates and worse code-edits.

I suggest you try to do it the other way round: Mask your bbtitle, create a new setting with the real title and use that in your regular templates (just a guess, probably only needed in header template). Not tried this but i have the feeling it would be a lot less work.

Remulon 10-07-2007 10:53 PM

Firstly, thanks to all who have posted to this thread.

I have now found a much easier way to do this. So this is for the people who may want to have this feature on their board (if any).

Rather than creating a new variable in the `setting` table (which mind you would be nice and easy for non-coders to edit in the admin cp), I have simply created a plugin which hooks at global_start (thanks Dismounted), and is just one line of code.

Code:

$vboptions['bbtitle_discrete'] = "My Discrete Forum Name";

Additionally, I had to replace the variable $vboptions['bbtitle'] to with $vboptions['bbtitle_discrete'] in all of the required phrases.

--------------------------------------------------------------------------------------------------

Now here is some food for thought:

I guess, one could probably still get this to work as I previously mentioned, with a new variable in the setting table.

All you would have to do is modify the plugin to retrieve the setting from the database, before setting the variable in the plugin, so that the variable isn't "hard coded" so to speak.

Maybe like this?
(Please note: The following code is not complete, it is merely an attempt to show an idea.)

SQL Code to add the new variable:
Code:

INSERT INTO `setting` VALUES ('bbtitle_discrete', 'address', 'My Discrete Forum Name', 'vBulletin Forums', '', 15, 0, 1, 'free', 'vbulletin', '', 0);
INSERT INTO `phrase` VALUES ('', -1, 'setting_bbtitle_discrete_desc', 'vbsettings', 'A discrete name for your forum. This appears in emails etc. (Wherever $vboptions[bbtitle_discrete] appears)', 'vbulletin', '', 0, '', 0);
INSERT INTO `phrase` VALUES ('', -1, 'setting_bbtitle_discrete_title', 'vbsettings', 'Discrete Forum Name', 'vbulletin', '', 0, '', 0);


New Plugin Code:
Code:

$con = the connection resource
$qry = mysql_query("SELECT `value` FROM `setting` WHERE `varname` = 'bbtitle_discrete';", $con);
$res = mysql_get_array($qry);

$vboptions['bbtitle_discrete'] = $res['value'];


Dilmah 10-07-2007 11:44 PM

Poor coding form to use an extra query just to select that one row.

If you add it as a setting it will get pulled into the registry when the other settings do. If anything, i'd say you didn't rebuild the datastore when you ran those queries, therefore it wasn't cached and getting fetched.

Remulon 10-07-2007 11:54 PM

Hi Dilmah,

Where were you a month ago?

Not even Moderators and a Board Coordinator could answer my questions as to why the setting value was not getting fetched. :confused:

Which forced me to try and do this a different way.

This is why I have removed the setting from the table and "hard-coded" it in a plugin.

Thanks Dilmah.

As for the rest of you, maybe you could take a leaf out of Dilmah's book on how to post a real reply to a question.

Dilmah 10-07-2007 11:58 PM

It's more a matter of trying things sequentially. You had created the setting, however the way you did it was what's important.

I'd guarantee you both Paul and Dismounted at least would have arrived at the same conclusion - they were trying to answer the questions but needed more information, hence the questions about how you created the setting.

Remulon 10-08-2007 12:04 AM

Well, I thought I answered all of their questions.

It seems that you had all of the information you required to give me an answer, did you not?

Remulon 02-28-2008 11:41 PM

Hi all..

Quote:

If you add it as a setting it will get pulled into the registry when the other settings do. If anything, i'd say you didn't rebuild the datastore when you ran those queries, therefore it wasn't cached and getting fetched.
Does anyone know how I can rebuild the datastore?

Thanks.

R.

:)

zmmmzz 03-01-2008 05:12 PM

I'm also interested in an answer

Opserty 03-02-2008 05:27 PM

<a href="http://members.vbulletin.com/api/vBulletin/_includes_adminfunctions_php.html#functionbuild_op tions" target="_blank">build_options</a>

BUT!

You shouldn't be manually editing the database in the first place, if you enable debug mode on your test board and go into vBulletin Options you will find that you can create New Settings (and Setting Groups). This way vBulletin will take care of everything related to updating the datastore, adding a row to the table e.t.c. just make sure that you set a product for it and it will also be exported with the product XML.


All times are GMT. The time now is 04:53 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01339 seconds
  • Memory Usage 1,815KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (4)bbcode_code_printable
  • (4)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (28)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete