PDA

View Full Version : Need fresh eyes to check code


Mythotical
01-17-2010, 06:40 AM
I am updating a mod to 4.0 as I like the mod but it hasn't been updated yet, anyway, I keep getting errors left and right but can't figure out what is wrong with my code to cause it plus I want to make sure there are no other mistakes.

if ($vbulletin->options['cybfrules_enable_global'])
{
$cybfr_locs = array("forumdisplay", "showthread", "newthread", "newreply", "sendmessage");
if (in_array(THIS_SCRIPT, $cybfr_locs))
{
$vbulletin->input->clean_gpc('c', COOKIE_PREFIX . 'cfrrs', TYPE_STR);
eval('$cybfr_checkaccepted = in_array($foruminfo[cyb_frules], array(' . $vbulletin->userinfo['cybfrules_sets'] . '));');
eval('$cybfr_checkaccepted_g = in_array($foruminfo[cyb_frules], array(' . $vbulletin->GPC[COOKIE_PREFIX . 'cfrrs'] . '));');

$cybfr_havenotaccepted = false;
if ($vbulletin->userinfo['userid'] AND $foruminfo['cyb_frules']!=0 AND !in_array($foruminfo['cyb_frules'], array($cybfr_checkaccepted)))
{
$cybfr_havenotaccepted = true;
}
if (!$vbulletin->userinfo['userid'] AND $foruminfo['cyb_frules']!=0 AND !in_array($foruminfo['cyb_frules'], array($cybfr_checkaccepted_g)))
{
$cybfr_havenotaccepted = true;
}

$cfrules_forumruleslink = $foruminfo['cyb_frules'];
if ($cfrules_forumruleslink<1)
{
$cfrules_forumruleslink = 1;
}
$vbulletin->templatecache['forumrules'] = str_replace('showrules','cfrules&cfrset='.$cfrules_forumruleslink,$vbulletin->templatecache['forumrules']);
}

if (($vbulletin->options['cybfrules_reg_rules']=='1') AND (THIS_SCRIPT=='register'))
{
$db->hide_errors();
$cybfr_rules = $vbulletin->db->query_first("
SELECT id, name, rules
FROM " . TABLE_PREFIX . "cyb_frules AS cyb_frules
WHERE id = 1
");
if ($vbulletin->options['cybfrules_bb'])
{
require_once(DIR . '/includes/class_bbcode.php');
$cafr_parser =& new vB_BbCodeParser($vbulletin, fetch_tag_list());
$forum_rules_description = $cafr_parser->do_parse($cybfr_rules['rules'],1, 1, 1, 1, 1);
}
else
{
$forum_rules_description = $cybfr_rules['rules'];
}
$db->show_errors();
}

if ($vbulletin->options['cybfrules_show_link'])
{
$cyb_frules_link .= '<td class="vbmenu_control">';
}
$cyb_frules_link .= '<a href="{vb:options bburl}/misc.php?do=cfrules"';
if ($vbulletin->options['cybfrules_link_color']!='')
{
$cyb_frules_link .= ' style="color:{vb:options cybfrules_link_color}"';
}
$cyb_frules_link .= '>{vb:rawphrase cybfrules_rules}</a>';
if ($vbulletin->options['cybfrules_show_link'])
{
$cyb_frules_link .= '</td>';
$templater = vB_Template::create();
$templater->register('cybfr_locs', $cybfr_locs);
$templater->register('cybfr_havenotaccepted', $cybfr_havenotaccepted);
$templater->register('cybfr_checkaccepted', $cybfr_checkaccepted);
$templater->register('cybfr_checkaccepted_g', $cybfr_checkaccepted_g);
$templater->register('cfrules_forumruleslink', $cfrules_forumruleslink);
$templater->register('cafr_parser', $cafr_parser);
$templater->register('forum_rules_description', $forum_rules_description);
$templater->register('cyb_frules_link', $cyb_frules_link);
$templater->register('cyb_frules_link', $cyb_frules_link);
$template_hook[navbar_buttons_left] .= $templater->render();
}
}

BTW, I know vB_Template::create(); is empty, it's empty on purpose, I am not sure yet I want to use a template as I have no quite figured out how to use template hooks in 4.0 and have variables registered for that template hook. If anyone can advise on that then great, if not, no worries.

Thanks

Paul M
01-17-2010, 11:48 AM
If you are getting errors then you need to post them.

Just from a quick look, links are no longer built using TD tags, you have registered cyb_frules_link twice, and also registered cafr_parser which is an object ?, not sure that would work, or why you would need it. Also, why have you used $db->hide_errors();

James Birkett
01-17-2010, 12:18 PM
Generally the only things that need changing are template syntax and then building the template (vB_Template::create())

Mythotical
01-17-2010, 02:58 PM
Paul: So the eval(); lines are fine? Also the $db->hide_errors(); is there because its not my mod, I am just updating it. I plan to remove those. So how are links built now? And the error I get is this:
Unable to add cookies, header already sent.
File: includes/class_core.php
Line: 4501

With this syntax error:
Expecting ) on includes/class_bootstrap.php (283) at line 7

I shorted it, below is whats at line 7.

Line 7 of the plugin which is parse_templates hook:
$vbulletin->input->clean_gpc('c', COOKIE_PREFIX . 'cfrrs', TYPE_STR);

James: Thanks for that info, but I thought there was other lines that needed to be changed such as $vbulletin->url. Am I wrong in that assumption?

James Birkett
01-17-2010, 03:52 PM
As far as I was aware, only links in templates had to be changed from the standard href to {vb:link member|thread|etc}

Mythotical
01-17-2010, 04:05 PM
Seriously? I did not know that, see how much I read? So what about say this href:
<a href="download.php?do=add">

Also James, how would this differ:

if ($vbulletin->options['cybfrules_enable_global'] AND strstr($vbulletin->options['cybfrules_enable_items'], 'postthreads'))
{
$cafr_fperms = fetch_permissions($foruminfo['forumid']);
if (($cafr_fperms & $vbulletin->bf_ugp_forumpermissions['canpostnew']) AND (!is_member_of($vbulletin->userinfo, split(',', $vbulletin->options['cybfrules_excluded_groups']))) AND $cybfr_havenotaccepted)
{
$cybfr_redtoforum = $vbulletin->input->clean_gpc('r', 'f', TYPE_UINT);
vbsetcookie('cybfr_redtopage', 'newthread.php?do=newthread&f='.$cybfr_redtoforum);
$vbulletin->url = 'misc.php?do=cfrules&amp;doredir=1&amp;cfrset='.$foruminfo['cyb_frules'];
eval(print_standard_redirect('redirect_cybfrules_a ccept_postthread',1,1));
}
}