Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 04-03-2008, 04:54 AM
derfy's Avatar
derfy derfy is offline
 
Join Date: Jul 2005
Location: Homewood, AL
Posts: 19
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default using/exporting php code in templates

Hey guys. The forum I help run has requested a public ban list. I've already got a php script looking at the userban table in vB and outputting the data in a table(don't know css ). Thing is, it looks bland. I'd like to make it look like it's integrated with our forums. I've followed How to create your own vBulletin-powered page! (uses vB templates) and have a custom page setup. Thing is, I'm not sure how to get the data in there. Am I missing something obvious? I don't think you can use php in templates and not sure if a plugin would do this properly(or at all)

Thanks in advance.
Reply With Quote
  #2  
Old 04-03-2008, 05:47 AM
Dismounted's Avatar
Dismounted Dismounted is offline
 
Join Date: Jun 2005
Location: Melbourne, Australia
Posts: 15,047
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You put your PHP into your file and assign the output to a variable. Then use that variable to display the data in the template.
Reply With Quote
  #3  
Old 04-05-2008, 09:24 PM
derfy's Avatar
derfy derfy is offline
 
Join Date: Jul 2005
Location: Homewood, AL
Posts: 19
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Ok, so how do I do that? I've got the template set up, all the code is being assigned to a variable...but when I type that variable into the template, nothing happens. I get the feeling I'm missing something trival here...

Here's a portion of the template($output is the var assigned to be the output):
Code:
<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center">
<tr>
	<td class="tcat">Title</td>
</tr>
<tr>
	$output
</tr>
</table>
Reply With Quote
  #4  
Old 04-05-2008, 09:35 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Have you considered this mod: VBAREA - Banned Users List 1.1


(Not that I want to dissuade you from learning how to write a mod yourself.)
Reply With Quote
  #5  
Old 04-05-2008, 09:50 PM
derfy's Avatar
derfy derfy is offline
 
Join Date: Jul 2005
Location: Homewood, AL
Posts: 19
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

It looks nice(and will probably end up using it instead) but I would still like the answer to my problem.

Thank you for the link, though
Reply With Quote
  #6  
Old 04-05-2008, 10:00 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Why don't you post your php script.

You are evaling the template, right?
Reply With Quote
  #7  
Old 04-05-2008, 10:14 PM
derfy's Avatar
derfy derfy is offline
 
Join Date: Jul 2005
Location: Homewood, AL
Posts: 19
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

PHP Code:
<?php

// ####################### SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);

// #################### DEFINE IMPORTANT CONSTANTS #######################
define('NO_REGISTER_GLOBALS'1);
define('THIS_SCRIPT''publicbanlist'); // change this depending on your filename

// ################### PRE-CACHE TEMPLATES AND DATA ######################
// get special phrase groups
$phrasegroups = array(

);

// get special data templates from the datastore
$specialtemplates = array(
    
);

// pre-cache templates used by all actions
$globaltemplates = array(
    
'publicbanlist',
);

// pre-cache templates used by specific actions
$actiontemplates = array(

);

// ######################### REQUIRE BACK-END ############################
require_once('./global.php');


// #######################################################################
// ######################## START MAIN SCRIPT ############################
// #######################################################################

$navbits = array();
$navbits[$parent] = 'Public ban listing';

$navbits construct_navbits($navbits);
eval(
'$navbar = "' fetch_template('navbar') . '";');
eval(
'print_output("' fetch_template('publicbanlist') . '");');


$DB_HOSTNAME 'localhost';
$DB_USERNAME 'derf-test';
$DB_PASSWORD 'thisisatest';
$DB_DBNAME 'pvnet_community';

$db mysql_connect($DB_HOSTNAME$DB_USERNAME$DB_PASSWORD);
mysql_select_db($DB_DBNAME$db);

$output .= '<table width="100%"><tr><th>Name</th><th>Banned by</th><th>Ban date</th><th>Reason</th><th>Lifted on</th></tr>'."\n";
$sql "SELECT * FROM userban";
$r mysql_query($sql);
if (
mysql_num_rows($r)) {
    while (
$row mysql_fetch_array($rMYSQL_BOTH)) {
        
//print_r($row);
        
$output .= '<tr><td align="center">'.retUsername($row[0]).'</td><td align="center">'.retUsername($row[5]).'</td><td align="center">'.date(DATE_RFC822$row                        [6]).'</td>';
        
$output .= '<td align="center">'.$row[8].'</td><td align="center">'.retLiftban($row[7]).'</td></tr>';
    }
}

// not sure what to put here.


// Define functions here.
// First up, getting a username from a userid.
// Let's ask the user table for help.

function retUsername($userid) {
    global 
$DB_DBNAME$db;
    
mysql_select_db($DB_DBNAME$db);
    
$sql "SELECT username FROM user WHERE `userid`='$userid'";
    
$r mysql_query($sql);
    if (
mysql_num_rows($r)) {
        
$row mysql_fetch_array($rMYSQL_ASSOC);
        
$username $row['username'];
    }
    return 
$username;
}

function 
retLiftban($date) {
    if (
$date == '0') {
        return 
'Never';
    } else {
        return 
date($date);
    }
}
?>
Let me know of any glaring errors. Template:
Code:
$stylevar[htmldoctype]
<html dir="$stylevar[textdirection]" lang="$stylevar[languagecode]">
<head>
<title>$vboptions[bbtitle]</title>
$headinclude
</head>
<body>
$header

$navbar

<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center">
<tr>
	<td class="tcat">Title</td>
</tr>
<tr>

        $output

</tr>
</table>

$footer
</body>
</html>
Reply With Quote
  #8  
Old 04-05-2008, 10:30 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You need to eval your template *after* you have defined $output. So, move this line to the bottom of your php page (or at least to after you have defined $output):

eval('print_output("' . fetch_template('publicbanlist') . '");
Reply With Quote
  #9  
Old 04-05-2008, 10:31 PM
derfy's Avatar
derfy derfy is offline
 
Join Date: Jul 2005
Location: Homewood, AL
Posts: 19
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

That gives me a blank page.

http://community.purevanity.net/publicbanlist.php
Reply With Quote
  #10  
Old 04-05-2008, 11:02 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Are you using the same database that vbulletin uses? If so, you really don't need to go through and define all the database stuff again. It should be available to you after you call global.php. So, try rewriting some of the stuff just as if it were vb stuff, ie. "$db->query_read" instead of "mysql_query" and "while ($row = $db->fetch_array($r))" instead of "while ($row = mysql_fetch_array($r, MYSQL_BOTH))". In the while loop, you would then use "$row[username]" instead of "retUsername($row[0])".

(Disclaimer: I write code by trial and error so often, so I hope I'm not steering you wrong here.)
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 08:05 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.04496 seconds
  • Memory Usage 2,284KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (2)bbcode_code
  • (1)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (10)post_thanks_box
  • (10)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (10)post_thanks_postbit_info
  • (10)postbit
  • (10)postbit_onlinestatus
  • (10)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.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
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete