Paid Only Directory [Modification]

Designs - Modifications - Modules

Paid Only Directory [Modification]

Postby WagonTrader » Sun Jan 25, 2009 11:28 am

Name: Paid Only
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
User avatar
WagonTrader
Developer
 
Posts: 1946
Joined: Thu Aug 31, 2006 11:02 pm
Location: Oregon

Return to Mods

Who is online

Users browsing this forum: No registered users and 1 guest