PDA

View Full Version : Setting prefix on newthread_post_start


JamesGunner
01-16-2010, 08:37 PM
Hey,

Im trying to build a new product where you can set default prefixes to threads. Im a abit puzzled how to set the prefixid when a user posts. So far I have this:

<installcode><![CDATA[$db->hide_errors();
$db->query_write("ALTER TABLE " . TABLE_PREFIX . "forum ADD default_forum_thread_prefix VARCHAR(300) NOT NULL");
$db->show_errors();]]></installcode>

This adds my new field in the forum table.I already have the whole frame but I still need the basic function.

<plugin active="1">
<title>Default Forum Thread Prefix</title>
<hookname>forumadmin_edit_form</hookname>
<phpcode>
<![CDATA[print_table_header($vbphrase['default_forum_thread_prefix']);
print_input_row($vbphrase['default_forum_thread_prefix_desc'], 'forum[default_forum_thread_prefix]', $forum['default_forum_thread_prefix']);]]>
</phpcode>
</plugin>

The admin area seems to work fine also.

<plugin active="1">
<title>Default Forum Thread Prefix</title>
<hookname>newthread_post_start</hookname>
<phpcode>
<![CDATA[
$vbulletin->GPC['prefixid'] = $forum['default_forum_thread_prefix'];
$newpost['prefixid'] =& $vbulletin->GPC['prefixid'];
]]>
</phpcode>
</plugin>

Now this is the part where Im puzzled and I originally wanted to do an query each time but then I thought it might be easier to retrieve the info.

I must say that Im fairly new to php and vbulletin. I only wrote programs with C# and C++ yet so Im still learning the syntax and whatnot.

Thanks for the help ahead.

Lynne
01-16-2010, 10:48 PM
Why are you creating a new field for the database when vbulletin has thread prefixes for you to use - it's a default feature under Thread Prefixes in the Admin CP.

JamesGunner
01-17-2010, 06:41 AM
Why are you creating a new field for the database when vbulletin has thread prefixes for you to use - it's a default feature under Thread Prefixes in the Admin CP.

well from what I know vbulletin doesnt have default forum thread prefixes. I need this for my own forum. If a member posts a new thread on my board(he cant choose prefixes due to permissions), the new posted Thread automatically gets the "Pending" prefix without him having to choose one.

The thing I want is like this, just that I want to create a product so everyone can use it:
https://vborg.vbsupport.ru/showthread.php?t=224211

Lynne
01-17-2010, 03:34 PM
So why not use what is in that thread to do what you want?

JamesGunner
01-17-2010, 03:41 PM
So why not use what is in that thread to do what you want?

Since I cant get it to work the way you guys described, thats why Im seeking help...
Thanks for the help so far Lynne

Lynne
01-17-2010, 03:45 PM
To be honest, I really think you are better off using the default prefixes in vb. I think you should try to get it to work like in the other thread rather than trying to redo the whole system. You will end up with a lot of plugins if you go about it by using a whole new field.

What is it in the other thread that you are stuck on?

James Birkett
01-17-2010, 03:46 PM
AdminCP -> Thread Prefixes

I did create a plugin to auto-assign a prefix to a thread, it was 2 lines of code.

Let me know if you want it.

Lynne
01-17-2010, 03:53 PM
Did you create the prefix first? And did you modify the code in the other thread to use the prefixid that you assigned to the prefix? And did you assign the prefixgroup to that particular forum?

JamesGunner
01-17-2010, 03:57 PM
AdminCP -> Thread Prefixes

I did create a plugin to auto-assign a prefix to a thread, it was 2 lines of code.

Let me know if you want it.

Well thanks, please pm it to me.

@Lynne: In the other thread he posted about 3 lines of code which dont really help me alot, Im not sure how he deals with it but I dont want to edit the core files if I can do something like this with a simple plugin. The only part Im missing is the part where the prefix is applied to the thread when a user is posting. So basically I need to check if the admin made an entry in the that admin field, then apply the prefix to the thread when the user is posting.

This is my complete product:

<?xml version="1.0" encoding="ISO-8859-1"?>

<product productid="default_thread_prefixes" active="1">
<title>Default Thread Prefixes</title>
<description>Add default Thread Prefixes to a thread</description>
<version>0.1</version>
<url />
<versioncheckurl />
<dependencies>
<dependency dependencytype="vbulletin" minversion="4.0" maxversion="" />
</dependencies>
<codes>
<code version="0.1">
<installcode><![CDATA[$db->hide_errors();
$db->query_write("ALTER TABLE " . TABLE_PREFIX . "forum ADD default_forum_thread_prefix VARCHAR(300) NOT NULL");
$db->show_errors();]]></installcode>
<uninstallcode>
<![CDATA[$db->hide_errors();
$db->query_write("ALTER TABLE " . TABLE_PREFIX . "forum DROP default_forum_thread_prefix");
$db->show_errors();]]></uninstallcode>
</code>
</codes>
<templates>
</templates>
<stylevardfns>
</stylevardfns>
<stylevars>
</stylevars>
<plugins>
<plugin active="1">
<title>Default Forum Thread Prefix</title>
<hookname>forumadmin_add_default</hookname>
<phpcode><![CDATA[$forum['default_forum_thread_prefix'] = '';]]></phpcode>
</plugin>
<plugin active="1">
<title>Default Forum Thread Prefix</title>
<hookname>forumadmin_edit_form</hookname>
<phpcode>
<![CDATA[print_table_header($vbphrase['default_forum_thread_prefix']);
print_input_row($vbphrase['default_forum_thread_prefix_desc'], 'forum[default_forum_thread_prefix]', $forum['default_forum_thread_prefix']);]]>
</phpcode>
</plugin>


<plugin active="1">
<title>Default Forum Thread Prefix</title>
<hookname>newthread_post_start</hookname>
<phpcode>
<![CDATA[
if($forum['default_forum_thread_prefix']){
$newpost['prefixid'] = $forum['default_forum_thread_prefix'];
}
]]></phpcode>
</plugin>
</plugins>
<phrases>
<phrasetype name="Forum-Related" fieldname="forum">
<phrase name="default_forum_thread_prefix"><![CDATA[Default Forum Thread Prefix]]></phrase>
<phrase name="default_forum_thread_prefix_desc"><![CDATA[Default Forum Thread Prefix <dfn>Insert the default Thread prefix you want to set for this forum here!</dfn>]]></phrase>
</phrasetype>
</phrases>
<options>
</options>
<helptopics>
</helptopics>
<cronentries>
</cronentries>
<faqentries>
</faqentries>
</product>

I know that this needs improvement:

<plugin active="1">
<title>Default Forum Thread Prefix</title>
<hookname>newthread_post_start</hookname>
<phpcode>
<![CDATA[
if($forum['default_forum_thread_prefix']){
$newpost['prefixid'] = $forum['default_forum_thread_prefix'];
}
]]></phpcode>
</plugin>

Since Im getting some weird error whenever I input an prefixid in the specific forum.

James Birkett
01-17-2010, 04:11 PM
The way I did it was to just assign both prefix values to the prefix ID:

$vbulletin->GPC['prefixid'] = 'prefixid';
$newpost['prefixid'] = 'prefixid';

JamesGunner
01-17-2010, 04:59 PM
The way I did it was to just assign both prefix values to the prefix ID:

$vbulletin->GPC['prefixid'] = 'prefixid';
$newpost['prefixid'] = 'prefixid';


Yeah but I guess your method would cause too much work for me since I have multiple forums with different prefixes I want to use.

Lynne
01-17-2010, 06:00 PM
Yeah but I guess your method would cause too much work for me since I have multiple forums with different prefixes I want to use.
Then put a condition around it.

switch $forumid
{
case xx:
$vbulletin->GPC['prefixid'] = 'xxxxxx';
$newpost['prefixid'] = 'xxxxxx';
break;
case yy:
$vbulletin->GPC['prefixid'] = 'yyyyyy';
$newpost['prefixid'] = 'yyyyyy';
break;
case zz:
$vbulletin->GPC['prefixid'] = 'zzzzzz';
$newpost['prefixid'] = 'zzzzzz';
break;
}

I'm not sure if $forumid is valid there - take a look at the code around the hook you are using.

JamesGunner
01-17-2010, 07:19 PM
well the correct one should be $foruminfo from what I know. Thanks for the help anyway. I searched for other products and finally found something similar where I got my solution from. Thanks for the help Lynne, I got my product finished.

James Birkett
01-19-2010, 03:40 PM
Yeah but I guess your method would cause too much work for me since I have multiple forums with different prefixes I want to use.

I used conditions to see if the forum ID matched.

JamesGunner
01-19-2010, 03:54 PM
I used conditions to see if the forum ID matched.

well the only problem I see is when the file gets updated or if vbulletin decides to upgrade that file. So I created a product to handle that for me:

https://vborg.vbsupport.ru/showthread.php?t=233364