Type: Modification
Version: 1.0
Created by: Wagontrader
License: Free - Public Domain
Restrictions: None
Created: 1/25/2009
Updated:
Synopsis: The default behaviour of PDS is to downgrade paid listings to a free level. This modification will only allow paid listings by setting up a hold state which expired listings will downgrade to.
Implementation
1) Create a new 'on hold' listing state in the language system
From the admin language panel...
a) Select 'Listing State' from the drop down and view set
b) Click 'Add new Listing State code' link
c) Add the following values: Code = hld, English = On Hold
d) Press Add button
Add new language definition for notification to member
a) Select 'User Control Panel' from the drop down and view set
b) Click 'Add new User Control Panel code' link
c) Add the following values: Code = held_msg, English = Your listing is currently on hold
d) Press Add button
Add new language definition for hold button
a) Select 'Manage Listings Text' from the drop down and view set
b) Click 'Add new Manage Listing Text code' link
c) Add the following values: Code = btn_hold, English = Hold
d) Press Add button
2) Change default automated downgrade behaviour in cronjob.php
location: /
Replace
- Code: Select all
if( $expire == $now AND $f_exp['level'] != $config['free_level'] ){
//Downgrade Listing to Free Level
mysql_query("UPDATE $pds_list SET level='$config[free_level]', d_expire=NULL WHERE id='$f_exp[id]';");
With
- Code: Select all
if( $expire == $now){
//Downgrade Listing to Free Level
mysql_query("UPDATE $pds_list SET state='hld', d_expire=NULL WHERE id='$f_exp[id]';");
3) Change waiting payment behaviour in register.php
Location: /
Replace
- Code: Select all
if($config['auto_approve']){
$state = "apr";
}else{
$state = "sub";
}
With
- Code: Select all
if($config['auto_approve']){
if ($vs_level[$listing_level]['cost'] > 0){
$state = "hld";
}else{
$state = "apr";
}
}else{
$state = "sub";
}
Replace
- Code: Select all
mysql_query ("INSERT INTO $pds_list (userid, state, level, firm, address1, loc1, loc_sel, zip, contact, phone, fax, mobile, description, website, email, premium, d_submit, xtra_1, xtra_2, xtra_3, xtra_4, xtra_5, xtra_6)
VALUES ('$vs_current_user[id]', '$state', '$config[free_level]', '$firm', '$addr1', '$loc1', '$loc_sel', '$zip', '$contact', '$phone', '$fax', '$mobile', '$description', '$website', '$listmail', '$premium', now(), '$xtra_1', '$xtra_2', '$xtra_3', '$xtra_4', '$xtra_5', '$xtra_6');") or die(mysql_error());
With
- Code: Select all
mysql_query ("INSERT INTO $pds_list (userid, state, level, firm, address1, loc1, loc_sel, zip, contact, phone, fax, mobile, description, website, email, premium, d_submit, xtra_1, xtra_2, xtra_3, xtra_4, xtra_5, xtra_6)
VALUES ('$vs_current_user[id]', '$state', '$listing_level', '$firm', '$addr1', '$loc1', '$loc_sel', '$zip', '$contact', '$phone', '$fax', '$mobile', '$description', '$website', '$listmail', '$premium', now(), '$xtra_1', '$xtra_2', '$xtra_3', '$xtra_4', '$xtra_5', '$xtra_6');") or die(mysql_error());
Note: if you have previously modded this insert statement, basically all we are doing is changing the level from the free one to the current one, so just make that one change to avoid overwriting your other mods.
Replace
- Code: Select all
$text_mail-> assign('current_level',$vs_level[$config['free_level']]['title']);
With
- Code: Select all
$text_mail-> assign('current_level',$vs_level[$listing_level]['title']);
Replace
- Code: Select all
$html_mail-> assign('current_level',$vs_level[$config['free_level']]['title']);
With
- Code: Select all
$html_mail-> assign('current_level',$vs_level[$listing_level]['title']);
Replace
- Code: Select all
mysql_query("UPDATE $pds_list SET level='$config[free_level]' WHERE id='$_SESSION[listid]';");
With
- Code: Select all
mysql_query("UPDATE $pds_list SET state='hld' WHERE id='$_SESSION[listid]';");
4) Set up new held state admin listing management in manlist.php
location: /
Add
- Code: Select all
if($_POST['satesav'] == 'hld' AND !$_POST['d_expire']){
//set new expiration
$c_year = date ("Y");
$c_month = date ("n");
$c_day = date ("j");
$exp_days = $c_day+($vs_level[$_POST[level]][expire]*$vs_level[$_POST[level]][exp_days]);
$d_expire = date("Y-m-d", mktime(0,0,0,$c_month,$exp_days,$c_year));
$r_level = mysql_query("SELECT premium FROM $pds_level WHERE level='$_POST[level]'");
$f_level = mysql_fetch_assoc($r_level);
mysql_query("UPDATE $pds_list SET d_upgrade=now(), d_expire='$d_expire', premium='$f_level[premium]' WHERE id='$_POST[id]';");
}
After
- Code: Select all
if(isset($_POST[btn_approve])){
//Approve Listing
Add
- Code: Select all
}elseif(isset($_POST['btn_hold'])){
//Hold Listing
mysql_query("UPDATE $pds_list SET state='hld', d_expire=NULL WHERE id='$_POST[id]';");
$r_cat = mysql_query("SELECT * FROM $pds_listcat WHERE list_id='$_POST[id]';");
for($x=0;$x<mysql_num_rows($r_cat);$x++){
$f_cat = mysql_fetch_assoc($r_cat);
TurnCatOff($f_cat['cat_id']);
}
After
- Code: Select all
}elseif(isset($_POST[btn_disapprove])){
//Disapprove Listing
mysql_query("UPDATE $pds_list SET state='del' WHERE id='$_POST[id]';");
$r_cat = mysql_query("SELECT * FROM $pds_listcat WHERE list_id='$_POST[id]';");
for($x=0;$x<mysql_num_rows($r_cat);$x++){
$f_cat = mysql_fetch_assoc($r_cat);
TurnCatOff($f_cat['cat_id']);
}
5) Listing manager template, manlist.tpl
location: template/default/
Add
- Code: Select all
<input type="submit" name="btn_hold" value="{lang->desc p1='manlist' p2=$lang_set p3='btn_hold'}" style="font-size:{#submit_btn_font_size#}; background-color:{#submit_btn_bgcolor#};">
After
- Code: Select all
{if $vs_current_listing.state != "apr"}
<input type=submit name=btn_approve value="{lang->desc p1='manlist' p2=$lang_set p3='btn_approve'}" style="font-size:{#submit_btn_font_size#}; background-color:{#submit_btn_bgcolor#};">
<input type=submit name=btn_disapprove value="{lang->desc p1='manlist' p2=$lang_set p3='btn_disapprove'}" style="font-size:{#submit_btn_font_size#}; background-color:{#submit_btn_bgcolor#};">
Add
- Code: Select all
<input type="hidden" name="satesav" value="{$vs_current_listing.state}">
<input type="hidden" name="d_expire" value="{$vs_current_listing.d_expire}">
After
- Code: Select all
<td colspan=2 align=center bgcolor="{#form_field_bgcolor#}">
<font style="color:{#form_field_font_color#}; font-size:{#form_field_font_size#}; font-weight:{#form_field_font_weight#}; background-color:{#form_field_font_bgcolor#};">
<input type=hidden name=id value="{$vs_current_listing.id}">
6) Change listing import behaviour in import.php
location: /
Replace
- Code: Select all
if($state == ""){$state='sub';}
if($level == ""){$level=$config['free_level'];}
With
- Code: Select all
if($state == ""){$state='hld';}
if($level == ""){$level=2;}
7) Set up display to member that thier listing is on hold in sublist0.tpl
location: templates/default/sublist/
Add
- Code: Select all
{if $list[itm].state == "hld"}
<tr>
<td colspan="2" align="center" bgcolor="{$list[itm].bgcolor}">
<font style="color:{#form_label_font_color#}; font-size:{#form_label_font_size#}; font-weight:{#form_label_font_weight#}; background-color:{$list[itm].bgcolor};">
{lang->desc p1='user' p2=$lang_set p3='held_msg'}
</font>
</td>
</tr>
{/if}
After
- Code: Select all
{if $vs_current_user.id == $list[itm].userid OR $vs_current_admin.login}
Modification Complete
