PDA

View Full Version : Notice: Criteria Custom Profil Field


Netz
10-19-2009, 10:59 AM
Hi!

I need an Addon for 3.8.x and need help or anyboady to just solve my problem. :-)

What?
I want to show a Notice by the criteria of a custom field.

Why?
My users have to choese between 8 given regions in their profil, wich I created as custom fiels. Each region should get thier own Notice.

Based on this Addon (https://vborg.vbsupport.ru/showthread.php?t=180163&highlight=notices) it should be easy.

Something like this?
notices_check_criteria "$bbuserinfo[field7] == 'Junkyard'"

--------------- Added 1255965685 at 1255965685 ---------------

I did a short work around by pasting
<!-- WERBUNG -->
<if condition="$bbuserinfo[field7] == 'XYZ'">
<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center">
<tr>
<td class="alt1" width="100%" align="center"><a href="XYZ">
<img src="XYZ" border="0" width="95%" /></a></td>
</tr>
</table>
<br />
</if>

<!-- / WERBUNG -->
into my navbar template.:

This is my work till now. Any ideas?
<?xml version="1.0" encoding="ISO-8859-1"?>

<product productid="notices_custom_field" active="1">
<title>Notices: Custom Field</title>
<description>Adds a new criteria to notices (custom field)</description>
<dependencies>
</dependencies>
<codes>
</codes>
<templates>
</templates>
<version>1.0.0</version>
<plugins>
<plugin active="1" executionorder="5">
<title>Custom Field Criteria</title>
<hookname>notices_list_criteria</hookname>
<phpcode><![CDATA[
$criteria_options = array_merge($criteria_options, array(
'custom_field_is' => array(
'<input type="text" name="criteria[custom_field_is][condition1]" size="50" class="bginput" tabindex="1" value=""' .
(empty($criteria_cache['custom_field_is']) ? $_bbuserinfo[field7] : htmlspecialchars_uni($criteria_cache['custom_field_is']['condition1'])) .
'" />'
),
));
]]></phpcode>
</plugin>
<plugin active="1" executionorder="5">
<title>Notices: Custom Field Criteria</title>
<hookname>notices_check_criteria</hookname>
<phpcode><![CDATA[
if ($criteriaid=='custom_field_is')
{
if (strtolower($conditions[0]) != strtolower("$_bbuserinfo[field7]))
{
$abort=true;
}
}
]]></phpcode>
</plugin>
</plugins>
<phrases>
<phrasetype name="Notices" fieldname="notice">
<phrase name="custom_field_is_criteria" date="0" username="" version=""><![CDATA[User has chosen {1}]]></phrase>
</phrasetype>
</phrases>
<options>
<settinggroup name="custom_field_is_notice" displayorder="1000">
<setting varname="custom_field_is_message" displayorder="10">
<datatype>free</datatype>
<optioncode>textarea</optioncode>
<defaultvalue></defaultvalue>
</setting>
</settinggroup>
</options>
<helptopics>
</helptopics>
<cronentries>
</cronentries>
<faqentries>
</faqentries>
</product>

Wired1
10-20-2009, 12:04 AM
Shouldn't need the options at all.

Here's what I came up with (untested):
<?xml version="1.0" encoding="ISO-8859-1"?>

<product productid="tsk tsk" active="1">
<title>Profile Field Contains Specified Text</title>
<description>Allows Notices to show up if profile field ID contains specified text</description>
<version>1.0.0</version>
<url></url>
<versioncheckurl></versioncheckurl>
<dependencies>
</dependencies>
<codes>
</codes>
<templates>
</templates>
<plugins>
<plugin active="1" executionorder="5">
<title>Checks to see if profile field has specified text</title>
<hookname>notices_check_criteria</hookname>
<phpcode><![CDATA[if ($criteriaid=='is_profile_field')
{
if ($bbuserinfo[field$conditions[0]] != $conditions[1])
{
$abort=true;
}
}]]></phpcode>
</plugin>
<plugin active="1" executionorder="5">
<title>Adds Profile Field ID Criteria</title>
<hookname>notices_profile_field_criteria</hookname>
<phpcode><![CDATA[$criteria_options2 = array(
'is_profile_field' => array(
'<input type="integer" name="criteria[is_profile_field][condition1]" size="2" class="bginput" tabindex="1" value="' .
$criteria_cache['is_profile_field']['condition1'] .
'" />',
'<input type="text" name="criteria[is_profile_field][condition2]" size="20" class="bginput" tabindex="1" value="' .
$criteria_cache['is_profile_field']['condition2'] .
'" />'
),
);

$criteria_options = array_merge($criteria_options, $criteria_options2);]]></phpcode>
</plugin>
</plugins>
<phrases>
<phrasetype name="Notices" fieldname="notice">
<phrase name="is_profile_field_criteria" date="1210125248" username="Wired1" version="1.0.0"><![CDATA[Profile Field ID {1} contains the following text: {2}]]></phrase>
</phrasetype>
</phrases>
<options>
</options>
<helptopics>
</helptopics>
<cronentries>
</cronentries>
<faqentries>
</faqentries>
</product>

Netz
10-20-2009, 12:12 PM
Thanks.
Why shouldn't need the options at all?


After 6 hours I still can't get it running.

As I found out:
hooknames should be notices_list_criteria and notices_check_criteria

Everyone gets following error and the notice, when Option is chosen.
Parse error: parse error, expecting `']'' in D:\htdocs\forum\includes\functions_notice.php(296) : eval()'d code on line 3

I'm now at this point (again)
<?xml version="1.0" encoding="ISO-8859-1"?>

<product productid="profile_field" active="1">
<title>Profile Field Contains Specified Text</title>
<description>Allows Notices to show up if profile field ID contains specified text</description>
<version>1.0.0</version>
<url></url>
<versioncheckurl></versioncheckurl>
<dependencies>
</dependencies>
<codes>
</codes>
<templates>
</templates>
<plugins>
<plugin active="1" executionorder="5">
<title>Checks to see if profile field has specified text</title>
<hookname>notices_check_criteria</hookname>
<phpcode><![CDATA[if ($criteriaid=='is_profile_field')
{
if ($bbuserinfo[field$conditions[0]] != $conditions[1])
{
$abort=true;
}
}]]></phpcode>
</plugin>
<plugin active="1" executionorder="5">
<title>Adds Profile Field ID Criteria</title>
<hookname>notices_list_criteria</hookname>
<phpcode><![CDATA[$criteria_options2 = array(
'is_profile_field' => array(
'<input type="integer" name="criteria[is_profile_field][condition1]" size="2" class="bginput" tabindex="1" value="' .
$criteria_cache['is_profile_field']['condition1'] .
'" />',
'<input type="text" name="criteria[is_profile_field][condition2]" size="20" class="bginput" tabindex="1" value="' .
$criteria_cache['is_profile_field']['condition2'] .
'" />'
),
);

$criteria_options = array_merge($criteria_options, $criteria_options2);]]></phpcode>
</plugin>
</plugins>
<phrases>
<phrasetype name="Notices" fieldname="notice">
<phrase name="is_profile_field_criteria" date="0" username="Wired1" version="1.0.0"><![CDATA[Profile Field ID {1} contains the following text: {2}]]></phrase>
</phrasetype>
</phrases>
<options>
</options>
<helptopics>
</helptopics>
<cronentries>
</cronentries>
<faqentries>
</faqentries>
</product>

--------------- Added 1256055158 at 1256055158 ---------------

WTF is line 3?

--------------- Added 1256061410 at 1256061410 ---------------

if ($bbuserinfo[field$conditions[0]] != $conditions[1])
is not correct.

if ($bbuserinfo['field$conditions[0]'] != $conditions[1])
if ($_bbuserinfo['field$conditions[0]'] != $conditions[1])
if ($userinfo['field$conditions[0]'] != $conditions[1])
if ($post['field$conditions[0]'] != $conditions[1])
etc.


are stoping the error message, but have no effekt. noboady gets the Notice. :confused:

Wired1
10-21-2009, 01:04 AM
Try this:
if ($vbulletin->userinfo[field$conditions[0]] != $conditions[1])

Netz
10-21-2009, 06:23 AM
parse error, expecting `']'' in D:\htdocs\forum\includes\functions_notice.php(296) : eval()'d code on line 3

Error on top of all pages and everyone gets the message.

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

<product productid="profile_field" active="1">
<title>Profile Field Contains Specified Text</title>
<description>Allows Notices to show up if profile field ID contains specified text</description>
<version>1.0.0</version>
<url></url>
<versioncheckurl></versioncheckurl>
<dependencies>
</dependencies>
<codes>
</codes>
<templates>
</templates>
<plugins>
<plugin active="1" executionorder="5">
<title>Checks to see if profile field has specified text</title>
<hookname>notices_check_criteria</hookname>
<phpcode><![CDATA] != $conditions[1])
{
$abort=true;
}
}]]></phpcode>
</plugin>
<plugin active="1" executionorder="5">
<title>Adds Profile Field ID Criteria</title>
<hookname>notices_list_criteria</hookname>
<phpcode><![CDATA[$criteria_options2 = array(
'is_profile_field' => array(
'<input type="integer" name="criteria[is_profile_field][condition1]" size="2" class="bginput" tabindex="1" value="' .
$criteria_cache['is_profile_field']['condition1'] .
'" />',
'<input type="text" name="criteria[is_profile_field][condition2]" size="20" class="bginput" tabindex="1" value="' .
$criteria_cache['is_profile_field']['condition2'] .
'" />'
),
);

$criteria_options = array_merge($criteria_options, $criteria_options2);]]></phpcode>
</plugin>
</plugins>
<phrases>
<phrasetype name="Notices" fieldname="notice">
<phrase name="is_profile_field_criteria" date="0" username="Wired1" version="1.0.0"><![CDATA[Profile Field ID {1} contains the following text: {2}]]></phrase>
</phrasetype>
</phrases>
<options>
</options>
<helptopics>
</helptopics>
<cronentries>
</cronentries>
<faqentries>
</faqentries>
</product>

All look for the parse error and post what I found.

--------------- Added 1256114123 at 1256114123 ---------------

Found it: $vbulletin ->userinfo is ending the brake <![CDATASingle-Selection Menu? Maybe the options are counted No1, No2... :confused:

--------------- Added 1256115842 at 1256115842 ---------------

Found this in advanced search with firebug<option value="1">XY1</option>
<option value="2">XY2</option>

So I should search for a value instead of a text.

--------------- Added 1256116922 at 1256116922 ---------------

Wrong idea. The value of the option is a text! :erm:

--------------- Added 1256117359 at 1256117359 ---------------

I quit! can a moderator pleas move this thread to Modification Requests (Unpaid)

[I]Thanks a lot Wired1!

Netz
10-23-2009, 02:01 PM
Can anyone solve the problem for me?