#!/usr/bin/perl

package ppc_ps;

########################################################################
# COPYRIGHT NOTICE:
#
# Copyright 2003 FocalMedia.Net All Rights Reserved.
#
# Selling the code for this program without prior written consent 
# from FocalMedia.Net is expressly forbidden. You may not 
# redistribute this program in any shape or form.
# 
# This program is distributed "as is" and without warranty of any
# kind, either express or implied. In no event shall the liability 
# of FocalMedia.Net for any damages, losses and/or causes of action 
# exceed the total amount paid by the user for this software.
#
########################################################################

#### EDIT HERE -- FOR WINDOWS/IIS BASED INSTALLATIONS ONLY #######

$config_cgi = "config.cgi"; 	## <-- CHANGE THIS LINE TO THE FULL SERVER PATH TO config.cgi

# THE PATH ON A WINDOWS INSTALLATION WILL LOOK SOMETHING LIKE THIS:
# $config_cgi = "c:/inetpub/webpub/cgi-bin/pseek/config.cgi";

#### DO NOT CHANGE ANYTHING BELOW THIS LINE #################

#use FindBin;
#use lib $FindBin::Bin;
use lib ".";
use CGI::Carp qw(fatalsToBrowser); 
use CGI::Cookie;
use CGI;
use Time::Local;
use DBI;
use LWP::Simple;
use URI::Escape;
use fmparse;

require Exporter;
use vars qw/@ISA @EXPORT @EXPORT_OK $copyright $prgname/;

@ISA = qw(Exporter);

@EXPORT = qw(get_ppc_results); 

@EXPORT_OK = qw($ppc_links
					 );

$default_permissions = 0777;  ### DEFAULT PERMISSIONS THAT IS USED FOR FILES ON HOST/SERVER
$q = CGI->new;
&get_setup;


##################################################################################################################


sub get_ppc_results
{

my ($keywords, $page_nr, $nomatch, $siip) = @_;

#$keywords =~ s/'//gi;

if ($page_nr eq "") { $page_nr = "1"; } 
if ($page_nr > 0) { $page_nr = $page_nr - 1; }


#### GET PPC ENGINE SETTINGS

$internal_ppc_settings = &ppc_internal_settings;


if ($nomatch eq "")
	{
	$ppc_numresults = $internal_ppc_settings->{ppc_numresults}; 
	}
	else
	{
	$ppc_numresults = $internal_ppc_settings->{ppc_num_noresult_results}; 
	}


$ip = $ENV{"REMOTE_ADDR"}; 
#$ip = "151.4.21.22";


if (($ip ne "") and (length($keywords) > 1))
{

######## GET PPC RESULTS
($display_links, $number_of_links) = &get_internal_ppclinks($page_nr, $ppc_numresults, $keywords, $siip);
$return_links = $return_links . $display_links;
$links_displayed = $links_displayed . $number_of_links;
#$internal_ppc_links = $number_of_links;


######### GET KANOODLE RESULTS IF IT'S IN USE
if ($number_of_links != $ppc_numresults) 
{ 

	$kanoodle_enabled = $internal_ppc_settings->{kanoodle_enalbled};
	$kanoodle_aff_id = $internal_ppc_settings->{aff_id};
	
	if ($kanoodle_enabled == 11) 
		{
		$need_number_oflinks = ($ppc_numresults - $number_of_links);
		
		($kanoodle_results, $kanoodle_links) = &do_kanoodle($need_number_oflinks, $page_nr, $ppc_numresults, $keywords);
		
		$return_links = $return_links . $kanoodle_results;
		
		$number_of_links = $number_of_links + $kanoodle_links;
		
		
		}
}


#print "Content-type: text/html\n\n"; 
#print "KR-> $kanoodle_links <BR>";


########## GET SEARCHFEED RESULTS IF IT'S IN USE
if ($number_of_links != $ppc_numresults) 
{ 
	
	$searchfeed_enalbled = $internal_ppc_settings->{searchfeed_enalbled};
	if ($searchfeed_enalbled == 11)
		{
		$need_number_oflinks = ($ppc_numresults - $number_of_links);
		($saerchfeed_results, $sf_number_of_links) = &do_searchfeed($need_number_oflinks, $page_nr, $ppc_numresults, $keywords);
		
		#print $saerchfeed_results;
		
		$return_links = $return_links . $saerchfeed_results;
		
		$number_of_links = $number_of_links + $sf_number_of_links;
		}
}

} ### IF IP ne ""


########## IF WE DIDN'T GET ANYTHING DISPLAY BACKFILL ADS



if ($number_of_links < $ppc_numresults) 
{
$need_number_oflinks = ($ppc_numresults - $number_of_links);
($internal_backfill_results, $number_of_links) = &do_internal_backfill($need_number_oflinks);
$return_links = $return_links . $internal_backfill_results;
}



return ($return_links);
}








sub do_internal_backfill
{
my ($ads_required) = @_;

my $backfill_lines = &get_file_contents("$data_dir/ppc_backfill_search.dat");
my @blines = split (/\n/, $backfill_lines);
my $nr_lines = @blines;

if ($ads_required > $nr_lines) { $ads_required = $nr_lines; }


for ($ms = 0; $ms < $ads_required; $ms++)
	{
	$blcnt =0;
	my @blines2;
	foreach $ritem (@blines)
		{
		if ($ritem ne "")
			{
			$blines2[$blcnt] = $ritem;
			$blcnt++;
			}
		}

	$nrlines = @blines2; $nrlines = $nrlines;# - 1;
	$randomnumber = int(rand($nrlines));
 
	$mcnt = 0;
	foreach $ritem (@blines2)
		{
		if ($randomnumber == $mcnt)
			{
			$display_item = $ritem;
			$cadd_item = $cadd_item . &get_file_contents("$data_dir/$ritem.bkf");
			}
		$mcnt++;
		}

	######## CLEAR ITEM USED
	
		$acnt = 0;
		foreach $titem (@blines)
			{
			if ($display_item eq $titem)
				{
				$blines[$acnt] = "";
				}
			$acnt++;
			}
	
	}

return ($cadd_item);

}







sub RFC1738
{

my ($ckw) = @_;

$ckw =~ s/\+/ /g;

$encoded_sf_string = "";

for ($ms = 0; $ms < length($ckw); $ms++) 
	{
	$oneletter = substr($ckw, $ms, 1);
	if ($oneletter !~ /[0-9a-zA-Z]/)
		{
		$ordno = ord($oneletter);
		$hex = sprintf("%lx", $ordno);
		$encoded_sf_string = $encoded_sf_string . "%" . $hex;
		}
		else
		{
		$encoded_sf_string = $encoded_sf_string . $oneletter;
		}
	} 

return ($encoded_sf_string);

}





sub do_searchfeed
{
my ($links_to_get, $Spage_nr, $Sppc_numresults, $Skeywords) = @_;

#$aresults = qq[
#<result status="OK" morerecords="TRUE" first="1" last="2" searchRequest="tickets" responseTime="35ms">
#<relatedsearches></relatedsearches>
#<adresults>
#<record>
#	<title><![CDATA[Airline Ticket]]></title>
#	<url>http://Netshoppers.com</url>
#	<description><![CDATA[Top Airline Ticket Offers. Check The Site for Airline Ticket.]]></description>
#	<bidprice>0.004</bidprice>
#	<clickurl>http://kc.mv.bidsystem.com/bin/findwhat.dll?clickthrough&amp;y=77126&amp;x=VWRShgOirAZz9ADDWNKdd:g1CNuTHfKJY:RF9vRGgYbgdk9EEkZmo:2zHibLvH2N:p91KvaSGNI;oscfHOcSvrcz5ypKWJ8p3KC;WpRhdJubIPqQPapwNYkHxJrXQakSANgcfybL5NDG:A2hvWcz6sZMY47o4CgKhLRl2qqKI:;VPFraLpaftKh7aAeH5KE$h</clickurl>
#	<mediaurl>http://admedia.xmlsearch.findwhat.com/bin/findwhat.dll?sendmedia&amp;d=VNvrJBkWaCa59A;kYBzAyvzuCNcNA8rzWCey9O7cXUegrqdT4r:ogLcgar82Ii7lHvbcBO9M;UabAgvcNvzymrb67COErKO:1CDQ5X;gnO:IIxkFABeE5Ph5p8CKAUp1hYZ7xJ;NuyUJQaeH3yOq7B3LypbBvqRLWOZJNUIXZOC5Aw$Mh</mediaurl>
#</record>
#
#<record>
#	<title><![CDATA[Airline Ticket]]></title>
#	<url>http://Compare247.us</url>
#	<description><![CDATA[Are you Looking for Airline Ticket? Chek the site for Airline Ticket and Compare Top Offers!]]></description>
#	<bidprice>0.003</bidprice>
#	<clickurl>http://kc.mv.bidsystem.com/bin/findwhat.dll?clickthrough&amp;y=77126&amp;x=tWRShgOOYFKwC4DDWNKd5vbeCUuY:yKJY:RF9vRGgYbgdk9EEkZmo:2zHibLvH2N:p91KvaSGNI;oscfHOcSvUcz5ypKWJZp3KC;WpRhdJubIPqQPapwNYkHxJrXQakSANgcfybL5NDG:A2hvWcz6sZMY47o4CgKhLRl2qqKI:;VPFraLpaftKh7aAeH5KE$h</clickurl>
#	<mediaurl>http://admedia.xmlsearch.findwhat.com/bin/findwhat.dll?sendmedia&amp;d=tNvrJBkLPK9hC4;kYBzA::rHCUc7LJrzWCey9O7cXUegrqdT4U:ogLcgaU82Ii7lHvbcBO9M;UabAgvcNvzymrb67COErKO:1CDQ5X;gnO:IIxkFABeE5Ph5p8CKAUp1hYZ7xJ;NuyUJQaeH3yOq7B3LypbBvqRLWOZJNUIXZOC5Aw$Mh</mediaurl>
#</record>
#
#</adresults>
#</result>
#];


$track_id = $internal_ppc_settings->{track_id};
$account_id = $internal_ppc_settings->{account_id};

$search_feed_pg = $Spage_nr;
$search_feed_pg++;

$Skeywords =~ s/ /+/g;

#$pass_string = "http://www.searchfeed.com/rd/feed/TextFeed.jsp?trackID=$track_id&pID=$account_id&cat=$Skeywords&nl=$links_to_get&page=$search_feed_pg&ip=$ip";

$searchfeed_keywords = &RFC1738($Skeywords);

$sfeedip = $ENV{"REMOTE_ADDR"};

#$sfeedip = "206.217.76.66";

$search_feed_pg = $search_feed_pg - 1;

$partnerid = $internal_ppc_settings->{account_id};

$searchfeed_adfilter = $internal_ppc_settings->{searchfeed_adfilter};

$track_id = $internal_ppc_settings->{track_id};
$track_id = &RFC1738($track_id);

$user_useragent = $ENV{"HTTP_USER_AGENT"};
$user_useragent = &RFC1738($user_useragent);

$requesturl = "http://" . $ENV{"SERVER_NAME"} . $ENV{"REQUEST_URI"};
if ($requesturl !~ /\?/) { $requesturl = $requesturl . "?keywords=" . $Skeywords; }
$requesturl = &RFC1738($requesturl);

$pass_string = "http://v10.xmlsearch.miva.com/bin/findwhat.dll?getresults&base=$search_feed_pg&dc=$links_to_get&mt=$searchfeed_keywords&ip_addr=$sfeedip&aff_id=$partnerid&fl=$searchfeed_adfilter&fmt=xml8859-2&at=$track_id&ua=$user_useragent&ru=$requesturl";

$txt = get($pass_string);

#print "-> $pass_string <BR><BR>---!!>>> $txt <BR><BR>";

@xml_items = fmparse::extract_matches_ar($txt, "<record>", "</record>");
$itemnr = @xml_items;

if ($itemnr > 0) 
{

$sppc_template = &get_file_contents("$data_dir/ppc_tmplsearch.html");
$sfnlinks = 0;


foreach $item (@xml_items)
	{
	$title = fmparse::extract_matches($item, "<title>", "</title>");
	$description = fmparse::extract_matches($item, "<description>", "</description>");
	$bidprice = fmparse::extract_matches($item, "<bidprice>", "</bidprice>");
	$link = fmparse::extract_matches($item, "<clickurl>", "</clickurl>");

	$mediaurl = fmparse::extract_matches($item, "<mediaurl>", "</mediaurl>");
	$mediadisp = qq[<img src="$mediaurl" width=1 height=1 border=0>];


	$title =~ s/<!\[CDATA\[//g; $title =~ s/\]\]>//g;
	$description =~ s/<!\[CDATA\[//g; $description =~ s/\]\]>//g;
	$link =~ s/<!\[CDATA\[//g; $link =~ s/\]\]>//g;
	$bidprice =~ s/<!\[CDATA\[//g; $link =~ s/\]\]>//g;
	
	#print "<b>$title</b><BR>
	#$description<BR>
	#BID: $bidprice<BR>
	#$link<BR><BR><BR>
	#";

	$tmp_psftmpl = $sppc_template;
	$tmp_psftmpl = $tmp_psftmpl . $mediadisp;
	
		$tmp_psftmpl =~ s/!!ppc_title!!/$title/gi;
		$tmp_psftmpl =~ s/!!ppc_description!!/$description/gi;
		$tmp_psftmpl =~ s/!!ppc_clickurl!!/$link/gi;
		$tmp_psftmpl =~ s/!!ppc_bidprice!!/$bidprice/gi;
	
		$return_lnks = $return_lnks . $tmp_psftmpl;

		$sfnlinks++;
	}

}

return ($return_lnks, $sfnlinks);

}








sub get_internal_ppclinks
{

my ($PRpage_nr, $PRppc_numresults, $PPkeywords, $rip) = @_;

#### FIND KEYWORD MATCHES 
$from_nr = ($PRpage_nr * $PRppc_numresults);
$limit_sql = "LIMIT $from_nr,$PRppc_numresults";

if ($mysql_hostname eq ""){$dsn = "DBI:mysql:$db_name";}else{$dsn = "DBI:mysql:$db_name:$mysql_hostname:$mysql_port";}
$dbh = DBI->connect($dsn, $db_username, $db_password);
if ( !defined $dbh ) {die "Cannot connect to MySQL server: $DBI::errstr\n"; } 

$min_acc_bal = $internal_ppc_settings->{min_acc_bal}; 
if ($min_acc_bal == 0) {  $min_acc_bal = "0.01"; }


$search_match_options = $internal_ppc_settings->{search_match_options}; 


$S_PPkeywords = $PPkeywords;
$S_PPkeywords =~ s/'/\\'/g;


#### IF MANUAL APPROVAL IS ON
$manual_approve = $internal_ppc_settings->{manual_approve}; 
if ($manual_approve eq "11") 
	{
	$mverify_sql = "(B.verified != 'N') AND";
	}


if (($search_match_options eq "exact") or ($search_match_options eq ""))
{
								 # 0			1 	   2			  3		  		4		  			5			  6		7				8				9
$wsql = "SELECT DISTINCT A.link_id, A.id, A.user_id, A.keywords, B.title, B.description, B.url, B.imageurl, B.imagelinked, A.bid
								 FROM ppc_keywords AS A, ppc_links AS B, ppc_users AS C
								 WHERE 
								 (A.keywords = '$S_PPkeywords') AND
								 (A.link_id = B.id) AND
								 $mverify_sql
								 (B.link_status != 'I') AND
								 (B.user_id = C.id) AND
								 (C.balance > $min_acc_bal)
								 
								 GROUP BY A.link_id 
								 ORDER BY A.bid DESC, B.date_added DESC
								 $limit_sql";
}
else
{

$ksql = "";

if ($S_PPkeywords =~ / /)
	{
	my @akws = split (/ /, $S_PPkeywords);
	foreach $kitem (@akws)
		{

		 if ($search_match_options eq "whole")
		 	 {
			 #$ksql = $ksql . " (A.keywords = '$kitem') OR";
			 $ksql = $ksql . " (A.keywords REGEXP '\[\[:<:\]\]$kitem\[\[:>:\]\]') OR";
			 #$ksql = $ksql . " (A.keywords REGEXP '\b$kitem\b') OR";
			 }
			 else
			 {
			 $ksql = $ksql . " (A.keywords like '%$kitem%') OR";
			 }

		}
	$ksql = substr($ksql, 0, length($ksql) - 2);
	}
	else
	{
		if ($search_match_options eq "whole")
			{	
			#$ksql = "(A.keywords = '$S_PPkeywords')";
			$ksql = $ksql . " (A.keywords REGEXP '\[\[:<:\]\]$S_PPkeywords\[\[:>:\]\]') ";
			}
			else
			{
			$ksql = "(A.keywords like '%$S_PPkeywords%')";
			}
	}


if ($ksql eq "") { $ksql= "(A.keywords like '1328971239871239781')"; }


$wsql = "SELECT DISTINCT A.link_id, A.id, A.user_id, A.keywords, B.title, B.description, B.url, B.imageurl, B.imagelinked, A.bid
								 FROM ppc_keywords AS A, ppc_links AS B, ppc_users AS C
								 WHERE 
								 ($ksql) AND
								 (A.link_id = B.id) AND
								 $mverify_sql
								 (B.link_status != 'I') AND
								 (B.user_id = C.id) AND
								 (C.balance > $min_acc_bal)
								 
								 GROUP BY A.link_id 
								 ORDER BY A.bid DESC, B.date_added DESC
								 $limit_sql";


}

$sth = $dbh->prepare($wsql);
$sth->execute;
$serror = ""; $serror = $sth->errstr; if ($serror ne "") {die "SQL Syntax Error: $serror - From: $wsql";} 
$rows = $sth->rows();

#print "--> $wsql <BR>";

### GET INTERNAL PPC RESULTS
if ($rows > 0)
{
open (CACHF, ">> $data_dir/searchcache/$ip.txt");

$ppc_template = &get_file_contents("$data_dir/ppc_tmplsearch.html");

$lcnt = 0;

### GET CURRENT DATE/TIME
	($sec,$min,$hour,$mday,$mon,$year,$wday,$ydat,$isdst) = localtime();
	$year = "20" . substr($year, 1, 2);
	if (length($hour) == 1) {$hour = "0" . $hour;}
	if (length($hour) == 1) {$hour = "0" . $hour;}
	if (length($min) == 1) {$min = "0" . $min;}
	if (length($min) == 1) {$min = "0" . $min;}
	if (length($sec) == 1) {$sec = "0" . $sec;}
	if (length($sec) == 1) {$sec = "0" . $sec;}
	if ($hour == 0){$hour = 12;}
	$mon++;
	if (length($mday) == 1) { $mday = "0" . $mday; }
	if (length($mon) == 1) { $mon = "0" . $mon; }
	$nowdate = "$year$mon$mday$hour$min$sec";
#####



while ( @row = $sth->fetchrow() )
	{ 
	$ppc_tmpl = $ppc_template;
	
	$ppc_tmpl =~ s/!!ppc_title!!/$row[4]/gi;
	
	$kw = $row[3]; $kw =~ s/ /+/gi;

	$passcrit = "link_id=$row[0]&kw_id=$row[1]&uid=$row[2]&kw=$kw&bid_price=$row[9]&searchphrase=$PPkeywords";
	$enc_passcrit = &chr_cript($passcrit, $rip);
	
	$clickurl = "$script_url/ppc_clickthrough.cgi?$enc_passcrit";
	$ppc_tmpl =~ s/!!ppc_clickurl!!/$clickurl/gi;
	
	$ppc_tmpl =~ s/!!ppc_description!!/$row[5]/gi;
	$ppc_tmpl =~ s/!!ppc_bidprice!!/$row[9]/gi;
	
	$all_ppc_links = $all_ppc_links . $ppc_tmpl;
	
	### GET DETAILS TO RECORD IMPRESSIONS
#	$imp_record_details[$lcnt] = $row[0] . "\t" . $row[2] . "\t" . $row[1] . "\t" . $row[3] . "\t" . $nowdate;

	$imp_record_details[$lcnt] = $row[0] . "\t" . $row[2] . "\t" . $row[1] . "\t" . $PPkeywords . "\t" . $nowdate;

	$lcnt++;
	}

#print "Content-type: text/html\n\n"; 
#print "=---> $lcnt <BR>";



### RECORD IMPRESSIONS

$insert_sql = "INSERT INTO ppc_impressions SET link_id = ?,user_id = ?,keyword_id = ?,searchphrase = ?,date = ?";
$sth = $dbh->prepare($insert_sql);
$serror = ""; $serror = $sth->errstr; if ($serror ne "") {die "SQL Syntax Error: $serror";}

foreach $item (@imp_record_details)
	{
	($r_link_id, $r_user_id, $r_keyword_id, $r_searchphrase, $r_date) = split (/\t/, $item);

   $sth->bind_param(1, $r_link_id);
   $sth->bind_param(2, $r_user_id);
   $sth->bind_param(3, $r_keyword_id);
   $sth->bind_param(4, $r_searchphrase);
   $sth->bind_param(5, $r_date);
   
   $sth->execute;
   $serror = ""; $serror = $sth->errstr; if ($serror ne "") {die "SQL Syntax Error: $serror - From: $sql";} 
	}


close (CACHF);
}

$sth->finish;
$dbh->disconnect; 

return ($all_ppc_links, $lcnt);
}





sub chr_cript
{

my ($dstring, $iptouse) = @_;

my ($ip_item, $ip_multiplier, $ms, $to_enc, $estring);

$iptouse = $ENV{"REMOTE_ADDR"};


#$ip = "151.4.21.22";

my @ipmult = split (/\./,$iptouse);

#foreach $ip_item (@ipmult)
#	{
for ($ms = 0; $ms < 2; $ms++)
	{
	#$ip_multiplier = $ip_multiplier + $ip_item;
	$ip_multiplier = $ip_multiplier + $ipmult[$ms];
	}


#######

for ($ms = 0; $ms < length($dstring); $ms++)
	{
	$to_enc = substr($dstring, $ms, 1);
	$to_enc = ord($to_enc);
	$to_enc = $to_enc + $ip_multiplier;
	
	if (length($to_enc) == 1) { $to_enc = "000" . $to_enc; }
	if (length($to_enc) == 2) { $to_enc = "00" . $to_enc; }
	if (length($to_enc) == 3) { $to_enc = "0" . $to_enc; }
	
	$estring = $estring . $to_enc . "O";
	}

#print "1--> $estring <BR><BR>IP: $ip<BR><BR>";

return ($estring);

}






sub do_kanoodle
{

my ($links_to_get, $Kpage_nr, $Kppc_numresults, $Kkeywords) = @_;

#print "\n\n\n\n\n";
#my ($Kkeywords, $number, $aff_id, $backfill, $adultfilter, $adultonly, $skip_number, $cache_id, $page_number)  = @_;

$aff_id = $internal_ppc_settings->{aff_id};

$to_number = ($Kpage_nr * $Kppc_numresults);

$adultfilter = $internal_ppc_settings->{adultfilter};
if ($adultfilter == 11) { $adultfilter = 0; } else { $adultfilter = 1; }

$adultonly = $internal_ppc_settings->{adultonly};
if ($adultonly == 11) { $adultonly = 1; } else {$adultonly = 0; }

$Kkeywords =~ s/ /+/gi;

$pass_string = "http://partner1.kanoodle.com/cgi-bin/partner.cgi?query=$Kkeywords&searchip=$ip&id=$aff_id&numresults=$links_to_get&first=$to_number&format=xml1&adultfilter=$adultfilter&adultonly=$adultonly";

print "==> $pass_string <BR><BR>"; 

$txt = get("$pass_string");

print "--> $txt <BR>"; exit;

$txt =~ s/<!\[CDATA\[//gi;
$txt =~ s/]]>//gi;

@xml_links = split (/<record>/, $txt);

$kppc_template = &get_file_contents("$data_dir/ppc_tmplsearch.html");
$kanoodle_links = "";
$knr_links = 0;

foreach $item (@xml_links)
	{
	if ($item =~ /<title>/)
		{
		@link_lines = split (/\n/, $item);
	
				foreach $line (@link_lines)
					{

					if ($line =~ /<title>/){$k_title = &parse_link_listing($line, "<title>", "</title>");}
					if ($line =~ /<description>/){$k_description = &parse_link_listing($line, "<description>", "</description>");}
					if ($line =~ /<bidprice>/){$k_bidprice = &parse_link_listing($line, "Cost to advertiser: ", "</a></bidprice>");  $k_bidprice =~ s/\)//g;}
					if ($line =~ /<clickurl>/){$k_clickurl = &parse_link_listing($line, "<clickurl>", "</clickurl>");}
					}

					#### PUT LINK TOGETHER
					$tmpl_template = $kppc_template;
					$tmpl_template =~ s/!!ppc_title!!/$k_title/gi;
					$tmpl_template =~ s/!!ppc_description!!/$k_description/gi;
					$tmpl_template =~ s/!!ppc_bidprice!!/$k_bidprice/gi;
					$tmpl_template =~ s/!!ppc_clickurl!!/$k_clickurl/gi;
					
					if (length($k_title) > 1)
						{
						$kanoodle_links = $kanoodle_links . $tmpl_template;
						$knr_links++;
						}

		}
	}


return ($kanoodle_links, $knr_links);

}









sub parse_link_listing
{
my ($tobeparsed, $c_start, $c_end) = @_;

if ($tobeparsed =~ m/$c_start/g)
{
$r = pos($tobeparsed);
$tobeparsed = substr($tobeparsed, $r, length($tobeparsed) - $r);
}

if ($c_end ne "DIZ")
	{
		if ($tobeparsed =~ m/$c_end/g)
		{
		$r = pos($tobeparsed);
		$tobeparsed= substr($tobeparsed, 0, $r - length($c_end));
		}
	}

return ($tobeparsed);

}




##################################################################################


sub ppc_internal_settings
{
	my $this = {};
	$scnts = &get_file_contents("$data_dir/ppc_settingsm.dat");
	@all_obj_items = split (/\n/, $scnts);
	foreach $obji (@all_obj_items)
	{
		($obj_prp, $obj_val) = split (/=/, $obji);
		$this->{$obj_prp} = $obj_val;
	}
	bless $this;
	return $this;
}



sub get_file_contents
{
	my ($filename) = @_;
	my ($filesize, $thefile);
	if ((-e "$filename") > 0) 
	{
		$filesize = (-s "$filename");
		open (TFILECNTS, "$filename") || die "$filename";
			read(TFILECNTS,$thefile,$filesize);
		close (TFILECNTS);
	}
	return ($thefile);
}



##################################################################################################################

sub get_setup
{
	$exists = (-e "$config_cgi");
	if ($exists > 0)
	{
		open (STP, "$config_cgi");
		while (defined($line=<STP>))
		{
			if ($line =~ m/#/g)
			{
				$r = pos($line);
				$line = substr($line, 0, $r - 1);
			}
			$line =~ s/\n//g;
			if ($line =~ /^DB_NAME/){$db_name = &get_setup_line2($line, DB_NAME);}
			if ($line =~ /^DB_USERNAME/){$db_username = &get_setup_line2($line, DB_USERNAME);}
			if ($line =~ /^DB_PASSWORD/){$db_password = &get_setup_line2($line, DB_PASSWORD);}
			if ($line =~ /^MYSQL_HOSTNAME/){$mysql_hostname = &get_setup_line2($line, MYSQL_HOSTNAME);}
			if ($line =~ /^MYSQL_PORT/){$mysql_port = &get_setup_line2($line, MYSQL_PORT);}
			if ($line =~ /^SCRIPT_URL/){$script_url = &get_setup_line2($line, SCRIPT_URL);}
			if ($line =~ /^ADMIN_URL/){$admin_url = &get_setup_line2($line, ADMIN_URL);}
			if ($line =~ /^WEB_URL/){$web_url = &get_setup_line2($line, WEB_URL);}
			if ($line =~ /^WEB_DIR/){$web_dir = &get_setup_line2($line, WEB_DIR);}
			if ($line =~ /^DATA_DIR/){$data_dir = &get_setup_line2($line, DATA_DIR);}
			if ($line =~ /^USERNAME/){$username = &get_setup_line2($line, USERNAME);}
			if ($line =~ /^PASSWORD/){$password = &get_setup_line2($line, PASSWORD);}
			if ($line =~ /^MAIL_METHOD/){$mail_method = &get_setup_line2($line, MAIL_METHOD);}
			if ($line =~ /^SENDMAIL/){$sendmail = &get_setup_line2($line, SENDMAIL);}
			if ($line =~ /^SMTP_SERVER/){$smtp_server = &get_setup_line2($line, SMTP_SERVER);}
		}
		close (STP);
	}
}


sub get_setup_line2
{
	my ($setup_line, $setup_var) = @_;
	$crit = "\"";
	$setup_line =~ m/$crit/g;
	$r1 = pos($setup_line);
	$setup_line =~ m/$crit/g;
	$r2 = pos($setup_line);
	$setup_line = substr($setup_line, $r1, ($r2 - $r1 - 1));
	$return_val = $setup_line;
	return ($return_val);
}


1;
