<?php
//
// Copyright (C) 2006 Thomas Papin
// http://www.gnu.org/copyleft/gpl.html GNU/GPL
// This file is part of the AdsManager Component,
// a Joomla! Classifieds Component by Thomas Papin
// Email: thomas.papin@free.fr
//
// Dont allow direct linking
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
require_once( $mainframe->getPath( 'front_html' ) );
require_once( $mainframe->getPath( 'class' ) );
if (file_exists($mosConfig_absolute_path .'/components/'.$option.'/lang/lang_' . $mosConfig_lang . '.php'))
require_once( $mosConfig_absolute_path .'/components/'.$option.'/lang/lang_' . $mosConfig_lang . '.php' );
else
require_once( $mosConfig_absolute_path .'/components/'.$option.'/lang/lang_english.php' );
if ( file_exists( $mosConfig_absolute_path . "/components/com_paidsystem/api.paidsystem.php"))
{
require_once($mosConfig_absolute_path . "/components/com_paidsystem/api.paidsystem.php");
}
// cache activation
$cache =&mosCache::getCache( $option );
$page = mosGetParam( $_GET, 'page', "front" );
$expand = intval( mosGetParam( $_GET, 'expand', -1 ) );
$text_search = mosGetParam( $_GET, 'text_search', "" );
$limitstart = intval( mosGetParam( $_GET, 'limitstart', 0 ) );
$userid = intval( mosGetParam( $_GET, 'userid', $my->id ) );
$catid = intval( mosGetParam( $_GET, 'catid', 0 ) );
$adid = intval( mosGetParam( $_GET, 'adid', 0 ) );
$order = intval(mosGetParam( $_GET, 'order', 0 ));
$page = mosGetParam( $_GET, 'page', "" );
$mode = mosGetParam( $_GET, 'mode', 'email');
if (file_exists( $mosConfig_absolute_path .'/components/'.$option.'/cron.php' ))
require_once( $mosConfig_absolute_path .'/components/'.$option.'/cron.php' );
$plugins = get_plugins();
if ($last_cron_date != date("Ymd"))
manage_expiration($option,$plugins);
$mainframe->addCustomHeadTag('<link rel="stylesheet" href="'.$mosConfig_live_site.'/components/'.$option.'/css/adsmanager.css" type="text/css" />');
switch ($page) {
case 'show_profile': {
$cache->call( 'show_profile',$userid,$option);
break;
}
case 'save_profile': {
mosCache::cleanCache( $option );
save_profile($option);
break;
}
case 'show_search': {
$cache->call( 'show_search',$catid,$option);
break;
}
case 'show_user': {
if ($my->id != $userid)
$cache->call( 'show_user',$userid,$option,$expand,$text_search,$order,$limitstart,$plugins);
else
show_user($userid,$option,$expand,$text_search,$order,$limitstart,$plugins);
break;
}
case 'show_category': {
$cache->call( 'show_category',$catid,$option,$expand,$text_search,$order,$limitstart,$plugins);
break;
}
case 'show_rules': {
$cache->call('show_rules',$option);
break;
}
case 'show_ad': {
$ad_userid = $cache->call( 'show_ad',$adid,$option,$plugins);
// increment views. views from ad author are not counted to prevent highclicking views of own ad
if ( $my->id <> $ad_userid) {
$sql = "UPDATE #__adsmanager_ads SET views = LAST_INSERT_ID(views+1) WHERE id = $adid";
$database->setQuery($sql);
if ($database->getErrorNum()) {
echo $database->stderr();
} else {
$database->query();
}
}
break;
}
case 'write_ad': {
write_ad($adid,$catid,$option,$plugins);
break;
}
case 'save_ad': {
mosCache::cleanCache($option);
save_ad($option,$plugins);
break;
}
case 'delete_ad': {
mosCache::cleanCache( $option);
delete_ad($adid,$option,$plugins);
break;
}
case 'show_result':
if (($catid == -1)||($catid == 0)||(!isset($catid)))
show_all($option,$expand,$text_search,$order,$limitstart,$plugins);
else
show_category($catid,$option,$expand,$text_search,$order,$limitstart,$plugins);
break;
case 'show_all': {
$cache->call( 'show_all',$option,$expand,$text_search,$order,$limitstart,$plugins);
break;
}
case 'show_message_form': {
$cache->call( 'show_message_form',$option,$adid,$mode);
break;
}
case 'send_message': {
send_message($option,$mode);
break;
}
case 'search': {
if ($catid == 0)
show_all($option,$expand,$text_search,$order,$limitstart,$plugins);
else
show_category($catid,$option,$expand,$text_search,$order,$limitstart,$plugins);
break;
}
case 'expiration': {
show_expiration($adid,$option);
break;
}
case 'renew_ad': {
renew_ad($adid,$option);
break;
}
case 'rss': {
show_rss($catid,$option);
break;
}
default: {
$cache->call('front',$option);
break;
}
}
if ($task != 'rss') {
adsmanager_html::show_footer();
}
function get_plugins()
{
global $mosConfig_absolute_path;
if(!file_exists($mosConfig_absolute_path . "/images/com_adsmanager/plugins/")){
@mkdir($mosConfig_absolute_path . "/images/com_adsmanager/plugins/");
};
$plugins = null;
if(file_exists($mosConfig_absolute_path . "/images/com_adsmanager/plugins/")) {
$path = $mosConfig_absolute_path."/images/com_adsmanager/plugins/";
$handle = opendir( $path );
while ($file = readdir($handle)) {
$dir = mosPathName( $path.'/'.$file, false );
if (is_dir($dir))
{
if (($file != ".") && ($file != "..")) {
require($path.'/'.$file.'/plug.php');
}
}
}
closedir($handle);
}
return $plugins;
}
/**
* Check Joomla/Mambo version for API
*
* @return int API version: =0 = mambo 4.5.0-4.5.3+Joomla 1.0.x, =1 = Joomla! 1.1, >1 newever ones: maybe compatible, <0: -1: Mambo 4.6
*/
function adscheckJoomlaVersion() {
global $_VERSION;
static $version = null;
if ( $version !== null ) {
return $version;
}
if ( $_VERSION->PRODUCT == "Mambo" ) {
if ( strncasecmp( $_VERSION->RELEASE, "4.6", 3 ) < 0 ) {
$version = 0;
} else {
$version = -1;
}
} elseif ( $_VERSION->PRODUCT == "Elxis" ) {
$version = 0;
} elseif ( ($_VERSION->PRODUCT == "Joomla!") || ($_VERSION->PRODUCT == "Accessible Joomla!") ) {
if (strncasecmp($_VERSION->RELEASE, "1.0", 3)) {
$version = 1;
} else {
$version = 0;
}
}
return $version;
}
function adsList($text,$description,$url,$page,$search,$text_search,$expand,$order,$catid,$option,$limitstart,$plugins,$update_possible = 0)
{
global $my,$database,$mosConfig_absolute_path;
//$update_possible = 1;
$database->setQuery( "SELECT f.* FROM #__adsmanager_fields AS f ".
"WHERE f.searchable = 1 AND f.published = 1 ORDER by f.ordering" );
$fields_searchable = $database->loadObjectList();
if ($database->getErrorNum()) {
echo $database->stderr();
return;
}
$url_param = "";
if(isset($fields_searchable))
{
foreach($fields_searchable as $fsearch)
{
switch($fsearch->type)
{
case 'multicheckbox':
case 'multiselect':
$value = mosGetParam( $_GET, $fsearch->name, array() );
for($i = 0,$nb=count($value);$i < $nb;$i++)
{
$url_param .= "&".$fsearch->name."=".$value[$i];
if ($i == 0)
$search .= " AND (";
$search .= "a.$fsearch->name = ',$value[$i],'";
if ($i < $nb - 1)
$search .= " OR ";
else
$search .= " )";
}
break;
case 'checkbox':
case 'radio':
case 'select':
$value = mosGetParam( $_GET, $fsearch->name, "" );
if ($value != "")
{
$search .= " AND a.$fsearch->name = '$value'";
$url_param .= "&".$fsearch->name."=".$value;
}
break;
case 'price':
$value = mosGetParam( $_GET, $fsearch->name, "" );
if ($value != "")
{
$pos = strpos($value, '-');
$fieldsql = "a.$fsearch->name + 0"; // Little hack to convert in number
if ($pos !== false)
{
if ($pos == 1)
{
$search .= " AND $fieldsql < '".substr($value,1)."'";
}
else if ($pos == strlen($value) - 1)
{
$search .= " AND $fieldsql > '".substr($value,0,strlen($value)-1)."'";
}
else
{
$search .= " AND ($fieldsql >= '".substr($value,0,$pos)."' AND $fieldsql <= '".substr($value,$pos+1)."')";
}
}
$url_param .= "&".$fsearch->name."=".$value;
}
break;
case 'textarea':
case 'number':
case 'emailaddress':
case 'url':
case 'text':
$value = mosGetParam( $_GET, $fsearch->name, "" );
if ($value != "")
{
$search .= " AND a.$fsearch->name LIKE '%$value%'";
$url_param .= "&".$fsearch->name."=".$value;
}
break;
}
}
}
if ($text_search <> "") {
$search .= " AND (a.ad_headline LIKE '%$text_search%' OR a.ad_text LIKE '%$text_search%') AND a.published = 1";
}
else
$search .= " AND a.published = 1";
$url .= $url_param;
$query = "SELECT DISTINCT a.id FROM #__adsmanager_ads as a ".
"LEFT JOIN #__adsmanager_adcat as adcat ON a.id = adcat.adid WHERE $search";
$database->setQuery($query);
$total = count($database->loadObjectList());
// get configuration
$database->setQuery( "SELECT * FROM #__adsmanager_config");
$database->loadObject($conf);
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}
$limit = $conf->ads_per_page;
if ($conf->display_expand == 0)
$expand = 0;
else if ($conf->display_expand == 2)
$expand = 1;
else if ($expand == -1)
$expand = 0;
$database->setQuery( "SELECT f.* FROM #__adsmanager_fields AS f WHERE f.published = 1" );
$fields = $database->loadObjectList();
if ($order == -1)
{
$order_text = "a.views DESC, a.date_created DESC ,a.id DESC";
}
else if ($order != 0)
{
$database->setQuery( "SELECT f.name,f.sort_direction,f.type FROM #__adsmanager_fields AS f WHERE f.fieldid=$order AND f.published = 1" );
$database->loadObject($sort);
if (($sort->type == "number")||($sort->type == "price"))
$order_text = "a.".$sort->name." * 1 ".$sort->sort_direction;
else
$order_text = "a.".$sort->name." ".$sort->sort_direction;
}
else
{
$order_text = "a.date_created DESC ,a.id DESC";
}
$database->setQuery( "SELECT f.title,f.fieldid,f.catsid FROM #__adsmanager_fields AS f WHERE f.sort = 1 AND f.published = 1" );
$searchs = $database->loadObjectList();
require_once( $mosConfig_absolute_path . '/includes/pageNavigation.php' );
$pageNav = new mosPageNav( $total, $limitstart,$limit );
if($conf->display_fullname == 1)
{
$name = "u.name";
}
else
{
$name = "u.username";
}
$query = "SELECT a.*, p.name as parent, p.id as parentid, c.name as cat, c.id as catid, $name as user ".
"FROM #__adsmanager_ads as a ".
"LEFT JOIN #__adsmanager_adcat as adcat ON adcat.adid = a.id ".
"LEFT JOIN #__users as u ON a.userid = u.id ".
"LEFT JOIN #__adsmanager_categories as c ON adcat.catid = c.id ".
"LEFT JOIN #__adsmanager_categories as p ON c.parent = p.id ".
"WHERE $search and c.published = 1 ".
"GROUP BY a.id ORDER BY $order_text";
if (function_exists("updateQuery")) {
updateQuery($query);
}
$database->setQuery($query,
$limitstart,$limit);
$ads = $database->loadObjectList();
//*****************Mod by TomekOmel *******************
$database->setQuery("SELECT c.* ".
"FROM #__adsmanager_columns as c ".
"ORDER BY c.ordering ");
$columns = $database->loadObjectList();
if (isset($columns))
{
$licz=0;
$col = array();
foreach ($columns as $c ) {
if ($c->catsid == ",-1,") //// TUTAJ POPRAWIC
array_push( $col, $c );
else
{
$find = ",".$catid.",";
if (strstr($c->catsid, $find))
array_push( $col, $c );
}
}
}
unset($columns);
$columns = $col;
//***************** END of TomekOmel **********************/
$database->setQuery( "SELECT c.* FROM #__adsmanager_fields AS c ".
"WHERE c.columnid != -1 AND c.published = 1 ORDER by c.columnorder,c.fieldid" );
$fields = $database->loadObjectList();
// establish the hierarchy of the menu
$fColumn = array();
// first pass - collect children
if (isset($fields))
{
foreach ($fields as $f ) {
$pt = $f->columnid;
$list = @$fColumn[$pt] ? $fColumn[$pt] : array();
array_push( $list, $f );
$fColumn[$pt] = $list;
}
}
$database->setQuery( "SELECT * FROM #__adsmanager_positions WHERE 1 " );
$positions = $database->loadObjectList();
if ($database->getErrorNum()) {
echo $database->stderr();
return;
}
$database->setQuery( "SELECT f.* FROM #__adsmanager_fields AS f ".
"WHERE f.pos != -1 AND f.published = 1 ORDER by f.posorder" );
$fields = $database->loadObjectList();
if ($database->getErrorNum()) {
echo $database->stderr();
return;
}
// establish the hierarchy of the menu
$fDisplay = array();
// first pass - collect children
if (isset($fields))
{
foreach ($fields as $f ) {
$pt = $f->pos;
$list = @$fDisplay[$pt] ? $fDisplay[$pt] : array();
array_push( $list, $f );
$fDisplay[$pt] = $list;
}
}
//get value fields
$database->setQuery( "SELECT * FROM #__adsmanager_field_values ORDER by ordering ");
$fieldvalues = $database->loadObjectList();
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}
$field_values = array();
// first pass - collect children
if (isset($fieldvalues))
{
foreach ($fieldvalues as $v ) {
$pt = $v->fieldid;
$list = @$field_values[$pt] ? $field_values[$pt] : array();
array_push( $list, $v );
$field_values[$pt] = $list;
}
}
foreach($fields as $field)
{
if ($field->cbfieldvalues != "-1")
{
/*get CB value fields */
$database->setQuery( "SELECT *, fieldtitle as fieldvalue FROM #__comprofiler_field_values WHERE fieldid = $field->cbfieldvalues ORDER by ordering ");
$cbfieldvalues = $database->loadObjectList();
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}
$field_values[$field->fieldid] = $cbfieldvalues;
}
}
if (($conf->show_contact == 1)&&($my->id == "0"))
$show_contact = 0;
else
$show_contact = 1;
$itemid = intval( mosGetParam( $_GET, 'Itemid', 0 ));
$nav_link = $url."&expand=".$expand."&Itemid=".$itemid;
adsmanager_html::show_list($catid,$description,$text,$url,$page,$ads,$pageNav,$nav_link,
$show_contact,$expand,$order,$text_search,
$itemid,$option,$my->id,$update_possible,
$searchs,
$columns,$fColumn,$positions,$fDisplay,$field_values,
$conf,
$fields_searchable,$plugins);
}
function getSubCatsList($cats,$catid,&$list,$itemid,$option,$order,$expand){
$i=0;
if(isset($cats))
{
foreach($cats as $cat) {
if ($cat->parent == $catid)
{
$list[$i]->text = $cat->name;//." (".$cat->num_ads.")";
$list[$i++]->link = sefRelToAbs('index.php?option='.$option.'&page=show_category&catid='.$cat->id.'&order='.$order.'&expand='.$expand.'&Itemid='.$itemid);
}
}
}
}
function getPathList($cats,$catid,$catname,&$list,$itemid,$option,$order,$expand){
$orderlist = array();
if(isset($cats))
{
foreach ($cats as $c ) {
$orderlist[$c->id] = $c;
}
$i=0;
$list[$i]->text = $orderlist[$catid]->name;
$list[$i]->link = sefRelToAbs('index.php?option='.$option.'&page=show_category&catid='.$catid.'&order='.$order.'&expand='.$expand.'&Itemid='.$itemid);
$i++;
if ($catid != -1)
{
$current = $catid;
while($orderlist[$current]->parent != 0)
{
$current = $orderlist[$current]->parent;
$list[$i]->text = $orderlist[$current]->name;
$list[$i]->link = sefRelToAbs('index.php?option='.$option.'&page=show_category&catid='.$orderlist[$current]->id.'&order='.$order.'&expand='.$expand.'&Itemid='.$itemid);
$i++;
}
}
}
}
function show_search($catid,$option)
{
global $my,$database,$mosConfig_absolute_path,$mainframe;
// Dynamic Page Title
$mainframe->SetPageTitle( ADSMANAGER_PAGE_TITLE . ADSMANAGER_ADVANCED_SEARCH );
$database->setQuery( "SELECT f.* FROM #__adsmanager_fields AS f ".
"WHERE f.searchable = 1 AND f.published = 1 ORDER by f.ordering" );
$fields_searchable = $database->loadObjectList();
if ($database->getErrorNum()) {
echo $database->stderr();
return;
}
//get value fields
$database->setQuery( "SELECT * FROM #__adsmanager_field_values ORDER by ordering ");
$fieldvalues = $database->loadObjectList();
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}
$field_values = array();
// first pass - collect children
if (isset($fieldvalues))
{
foreach ($fieldvalues as $v ) {
$pt = $v->fieldid;
$list = @$field_values[$pt] ? $field_values[$pt] : array();
array_push( $list, $v );
$field_values[$pt] = $list;
}
}
foreach($fields_searchable as $field)
{
if ($field->cbfieldvalues != "-1")
{
/*get CB value fields */
$database->setQuery( "SELECT *, fieldtitle as fieldvalue FROM #__comprofiler_field_values WHERE fieldid = $field->cbfieldvalues ORDER by ordering ");
$cbfieldvalues = $database->loadObjectList();
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}
$field_values[$field->fieldid] = $cbfieldvalues;
}
}
$itemid = intval( mosGetParam( $_GET, 'Itemid', 0 ));
$paths[0]->text = ADSMANAGER_ROOT_TITLE;
$paths[0]->link = sefRelToAbs('index.php?option='.$option.'&Itemid='.$itemid);
adsmanager_html::show_pathway($paths,$option);
getCatTree($cats);
adsmanager_html::show_search($option,$fields_searchable,$field_values,$catid,$cats,$itemid);
}
function show_all($option,$expand,$text_search,$order,$limitstart,$plugins)
{
global $mainframe,$database,$mosConfig_absolute_path,$mosConfig_live_site;
$itemid = intval( mosGetParam( $_GET, 'Itemid', 0 ));
// Dynamic Page Title
$mainframe->SetPageTitle( ADSMANAGER_PAGE_TITLE . ADSMANAGER_LIST_TEXT );
//Pathway
$database->setQuery( "SELECT c.id, c.name,c.parent ".
" FROM #__adsmanager_categories as c ".
"WHERE c.published = 1 ORDER BY c.parent,c.ordering");
$list = $database->loadObjectList();
getSubCatsList($list,0,$subcats,$itemid,$option,$order,$expand);
$paths[0]->text = ADSMANAGER_ROOT_TITLE;
$paths[0]->link = sefRelToAbs('index.php?option='.$option.'&Itemid='.$itemid);
adsmanager_html::show_pathway($paths,$option);
adsmanager_html::show_subcats($subcats);
//List
if (isset($text_search))
$url_text_search = "&text_search=".$text_search;
$url ="index.php?option=$option&page=show_all".$url_text_search."&order=".$order;
adsList(ADSMANAGER_LIST_TEXT,"",$url,"show_all","1",$text_search,$expand,$order,0,$option,$limitstart,$plugins);
}
function show_user($userid,$option,$expand,$text_search,$order,$limitstart,$plugins)
{
global $database,$mosConfig_absolute_path,$mosConfig_live_site,$my,$mainframe;
$itemid = intval( mosGetParam( $_GET, 'Itemid', 0 ));
//PathWay
$paths[0]->text = ADSMANAGER_ROOT_TITLE;
$paths[0]->link = sefRelToAbs('index.php?option='.$option.'&Itemid='.$itemid);
adsmanager_html::show_pathway($paths,$option);
// get configuration
$database->setQuery( "SELECT * FROM #__adsmanager_config");
$database->loadObject($conf);
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}
if ($userid == "0")
{
adsmanager_html::loginpage($_SERVER['REQUEST_URI'],$conf->comprofiler);
}
else
{
if ($conf->comprofiler == 2)
{
mosRedirect(sefRelToAbs("index.php?option=com_comprofiler&page=userProfile&tab=AdsManagerTab&user=$userid&Itemid=&Itemid=$itemid"),"");
}
else
{
//Dynamic Page Title
$user = new mosUser( $database );
$user->load( $userid );
$name_list = ADSMANAGER_LIST_USER_TEXT." ".$user->username;
$mainframe->SetPageTitle( ADSMANAGER_PAGE_TITLE . $name_list );
//List
if (isset($text_search))
$url_text_search = "&text_search=".$text_search;
$url ="index.php?option=$option&page=show_user&userid=".$userid.$url_text_search."&order=".$order;
//adsList($name_list,"user.gif",$url,"show_user",,$text_search,$expand,$order,0);
if ($my->id == $userid)
$update_possible = 1;
else
$update_possible = 0;
adsList($name_list,"",$url,"show_user","userid=$userid",$text_search,$expand,$order,0,$option,$limitstart,$plugins,$update_possible);
}
}
}
function recurseSearch ($rows,&$list,$catid){
if(isset($rows))
{
foreach($rows as $row) {
if ($row->parent == $catid)
{
$list[]= $row->id;
recurseSearch($rows,$list,$row->id);
}
}
}
}
function show_category($catid,$option,$expand,$text_search,$order,$limitstart,$plugins)
{
global $database,$mosConfig_absolute_path,$mosConfig_live_site,$my,$mainframe;
$itemid = intval( mosGetParam( $_GET, 'Itemid', 0 ));
// get category-name: #__adsmanager_category
$database->setQuery("SELECT c.id, c.name, c.description, c.parent ".
" FROM #__adsmanager_categories as c WHERE c.published='1' AND c.id=$catid");
$database->loadObject($category);
$cat_name = $category->name;
$cat_description = $category->description;
$parent = $category->parent;
//Dynamic Page Title
$mainframe->SetPageTitle( ADSMANAGER_PAGE_TITLE . $cat_name );
$linkTarget = sefRelToAbs("index.php?option=$option&page=show_category&catid=$catid&Itemid=$itemid");
$database->setQuery( "SELECT c.id, c.name,c.parent ".
" FROM #__adsmanager_categories as c ".
"WHERE c.published = 1 ORDER BY c.parent,c.ordering");
$listcats = $database->loadObjectList();
getPathList($listcats,$catid,$cat_name,$paths,$itemid,$option,$order,$expand);
$nb =count($paths);
$paths[$nb]->text = ADSMANAGER_ROOT_TITLE;
$paths[$nb]->link = sefRelToAbs('index.php?option='.$option.'&page=show_all&order='.$order.'&expand='.$expand.'&Itemid='.$itemid);
getSubCatsList($listcats,$catid,$subcats,$itemid,$option,$order,$expand);
adsmanager_html::show_pathway($paths,$option);
adsmanager_html::show_subcats($subcats);
//List
$list[] = $catid;
recurseSearch($listcats,$list,$catid);
$listids = implode(',', $list);
$search = "adcat.catid IN ($listids)";
if (isset($text_search))
$url_text_search = "&text_search=".$text_search;
$url ="index.php?option=$option&page=show_category&catid=".$catid.$url_text_search."&order=".$order;
adsList($cat_name,$cat_description,$url,"show_category",$search,$text_search,$expand,$order,$catid,$option,$limitstart,$plugins);
}
function show_message_form($option,$adid,$mode)
{
global $database,$my,$mainframe;
$itemid = intval( mosGetParam( $_GET, 'Itemid', 0 ));
$database->setQuery("SELECT a.* FROM #__adsmanager_ads as a WHERE a.id=$adid");
$database->loadObject($ad);
$user = new mosUser( $database );
if($my->id > 0)
$user->load( $my->id );
if ($mode == 0) //Email
{
// get configuration
$database->setQuery( "SELECT allow_attachement FROM #__adsmanager_config");
$database->loadObject($conf);
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}
adsmanager_html::show_message_form($option,$ad,$user,$mode,$conf->allow_attachement,$itemid);
}
else // PMS
adsmanager_html::show_message_form($option,$ad,$user,$mode,0,$itemid);
}
function send_message($option,$mode)
{
global $database,$mosConfig_absolute_path,$my,$_MAMBOTS;
$itemid = intval( mosGetParam( $_GET, 'Itemid', 0 ));
$adid = intval( mosGetParam( $_POST, 'adid' , 0 ));
$database->setQuery("SELECT * FROM #__adsmanager_ads as a WHERE a.id=$adid");
$database->loadObject($ad);
if (isset($ad))
{
$name = mosGetParam($_POST, 'name' , "" );
$email = mosGetParam($_POST, 'email', "" );
$title = mosGetParam($_POST, 'title', "" );
$body = mosGetParam($_POST, 'body' , "" );
$body = str_replace(array("\r\n", "\n", "\r"), "<br />", $body);
if (get_magic_quotes_gpc() == true)
$body = stripslashes( $body );
if ($mode == 1)
{
$_MAMBOTS->loadBotGroup( 'com_adsmanager' );
$results = $_MAMBOTS->trigger( 'onSendPMS', array( $ad->userid,$my->id,$title,$body ), false );
}
else
{
if ($_FILES['attach_file']['tmp_name'] != "")
{
$directory = ini_get('upload_tmp_dir')."";
if ($directory == "")
$directory = ini_get('session.save_path')."";
$filename = $directory."/".basename($_FILES['attach_file']['name']);
rename($_FILES['attach_file']['tmp_name'], $filename);
mosMail($email,$name,$ad->email,$title,$body,1,NULL,NULL,$filename);
}
else
mosMail($email,$name,$ad->email,$title,$body,1);
}
}
// mosRedirect(sefRelToAbs("index.php?option=$option&page=show_ad&adid=$adid&Itemid=$itemid"),ADSMANAGER_MESSAGE_SENT);
}
function show_ad($adid,$option,$plugins)
{
global $database,$my,$mainframe;
$itemid = intval( mosGetParam( $_GET, 'Itemid', 0 ));
$catid = intval( mosGetParam( $_GET, 'catid', 0 ));
// get configuration
$database->setQuery( "SELECT * FROM #__adsmanager_config");
$database->loadObject($conf);
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}
if($conf->display_fullname == 1)
{
$name = "u.name";
}
else
{
$name = "u.username";
}
if ($catid != 0)
$catsql = "and adcat.catid = $catid";
else
$catsql = "";
$query = "SELECT DISTINCT a.*, p.name as parent, p.id as parentid, c.name as cat, c.id as catid, $name as user ".
"FROM #__adsmanager_ads as a ".
"LEFT JOIN #__adsmanager_adcat as adcat ON adcat.adid = a.id ".
"LEFT JOIN #__users as u ON a.userid = u.id ".
"LEFT JOIN #__adsmanager_categories as c ON adcat.catid = c.id ".
"LEFT JOIN #__adsmanager_categories as p ON c.parent = p.id ".
"WHERE a.id=$adid $catsql and c.published LIMIT 1";
$database->setQuery($query);
$database->loadObject($ad);
//Dynamic Page Title
$mainframe->SetPageTitle( ADSMANAGER_PAGE_TITLE . $ad->cat . " - ". $ad->ad_headline );
//PathWay
$database->setQuery( "SELECT c.* FROM #__adsmanager_categories as c ".
"WHERE c.published = 1 ORDER BY c.parent,c.ordering");
$listcats = $database->loadObjectList();
getPathList($listcats,$ad->catid,$ad->cat,$paths,$itemid,$option,0,0);
$nb =count($paths);
$paths[$nb]->text =ADSMANAGER_ROOT_TITLE;
$paths[$nb]->link = sefRelToAbs('index.php?option='.$option.'&page=show_all&Itemid='.$itemid);
adsmanager_html::show_pathway($paths,$option);
//Show Ad
if (($conf->show_contact == 1)&&($my->id == "0"))
$show_contact = 0;
else
$show_contact = 1;
$database->setQuery( "SELECT * FROM #__adsmanager_positions WHERE 1 " );
$positions = $database->loadObjectList();
if ($database->getErrorNum()) {
echo $database->stderr();
return;
}
$database->setQuery( "SELECT f.* FROM #__adsmanager_fields AS f ".
"WHERE f.pos != -1 AND f.published = 1 ORDER by f.posorder" );
$fields = $database->loadObjectList();
if ($database->getErrorNum()) {
echo $database->stderr();
return;
}
//get value fields
$database->setQuery( "SELECT * FROM #__adsmanager_field_values ORDER by ordering ");
$fieldvalues = $database->loadObjectList();
if ($database -> getErrorNum()) {
echo $database -> stderr();
return;
}
$field_values = array();
// first pass - collect children
if (isset($fieldvalues))
{
foreach ($fieldvalues as $v ) {
$pt = $v->fieldid;
$list = @$field_values[$pt] ? $field_values[$pt] : array();
array_push( $list, $v );
$field_values[$pt] = $list;
}
}
foreach($fields as $field)
{
if ($field->cbfieldvalues != "-1")
{
/*get CB value fields */
$database->setQuery( "SELECT *, fieldtitle as fieldvalue FROM #__comprofiler_field_values WHERE fieldid = $field->cbfieldvalues ORDER by ordering ");
$cbfieldvalues = $database->loadObjectList();
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}
$field_values[$field->fieldid] = $cbfieldvalues;
}
}
// establish the hierarchy of the menu
$fDisplay = array();
// first pass - collect children
if (isset($fields))
{
foreach ($fields as $f ) {
$pt = $f->pos;
$list = @$fDisplay[$pt] ? $fDisplay[$pt] : array();
array_push( $list, $f );
$fDisplay[$pt] = $list;
}
}
adsmanager_html::show_html_ad($ad,$show_contact,$option,$itemid,$positions,$fDisplay,$field_values,$conf,1,0,$plugins);
return $ad->id;
}
function createImageAndThumb($src_file,$image_name,$thumb_name,
$max_width,
$max_height,
$max_width_t,
$max_height_t,
$tag,
$path,
$orig_name)
{
global $mosConfig_absolute_path;
$types = array(
IMAGETYPE_JPEG => 'jpeg',
IMAGETYPE_GIF => 'gif',
IMAGETYPE_PNG => 'png'
);
ini_set('memory_limit', '32M');
$src_file = urldecode($src_file);
/*if (extension_loaded('exif'))
{
$type2 = exif_imagetype($src_file);
$types = array(
IMAGETYPE_JPEG => 'jpeg',
IMAGETYPE_GIF => 'gif',
IMAGETYPE_PNG => 'png'
);
$type = $types[$type2];
}
else
{*/
$orig_name = strtolower($orig_name);
$findme = '.jpg';
$pos = strpos($orig_name, $findme);
if ($pos === false)
{
$findme = '.jpeg';
$pos = strpos($orig_name, $findme);
if ($pos === false)
{
$findme = '.gif';
$pos = strpos($orig_name, $findme);
if ($pos === false)
{
$findme = '.png';
$pos = strpos($orig_name, $findme);
if ($pos === false)
{
return;
}
else
{
$type = "png";
}
}
else
{
$type = "gif";
}
}
else
{
$type = "jpeg";
}
}
else
{
$type = "jpeg";
}
//}
$max_h = $max_height;
$max_w = $max_width;
$max_thumb_h = $max_height_t;
$max_thumb_w = $max_width_t;
if ( file_exists( "$path/$image_name")) {
unlink( "$path/$image_name");
}
if ( file_exists( "$path/$thumb_name")) {
unlink( "$path/$thumb_name");
}
$read = 'imagecreatefrom' . $type;
$write = 'image' . $type;
$src_img = $read($src_file);
// height/width
$imginfo = getimagesize($src_file);
$src_w = $imginfo[0];
$src_h = $imginfo[1];
$zoom_h = $max_h / $src_h;
$zoom_w = $max_w / $src_w;
$zoom = min($zoom_h, $zoom_w);
$dst_h = $zoom<1 ? round($src_h*$zoom) : $src_h;
$dst_w = $zoom<1 ? round($src_w*$zoom) : $src_w;
$zoom_h = $max_thumb_h / $src_h;
$zoom_w = $max_thumb_w / $src_w;
$zoom = min($zoom_h, $zoom_w);
$dst_thumb_h = $zoom<1 ? round($src_h*$zoom) : $src_h;
$dst_thumb_w = $zoom<1 ? round($src_w*$zoom) : $src_w;
$dst_img = imagecreatetruecolor($dst_w,$dst_h);
$white = imagecolorallocate($dst_img,255,255,255);
imagefill($dst_img,0,0,$white);
imagecopyresampled($dst_img,$src_img, 0,0,0,0, $dst_w,$dst_h,$src_w,$src_h);
$textcolor = imagecolorallocate($dst_img, 255, 255, 255);
if (isset($tag))
imagestring($dst_img, 5, 5, 5, "$tag", $textcolor);
if($type == 'jpeg'){
$desc_img = $write($dst_img,"$path/$image_name", 75);
}else{
$desc_img = $write($dst_img,"$path/$image_name", 2);
}
$dst_t_img = imagecreatetruecolor($dst_thumb_w,$dst_thumb_h);
$white = imagecolorallocate($dst_img,255,255,255);
imagefill($dst_t_img,0,0,$white);
imagecopyresampled($dst_t_img,$src_img, 0,0,0,0, $dst_thumb_w,$dst_thumb_h,$src_w,$src_h);
$textcolor = imagecolorallocate($dst_t_img, 255, 255, 255);
if (isset($tag))
imagestring($dst_t_img, 2, 2, 2, "$tag", $textcolor);
if($type == 'jpeg'){
$desc_img = $write($dst_t_img,"$path/$thumb_name", 75);
}else{
$desc_img = $write($dst_t_img,"$path/$thumb_name", 2);
}
}
function save_ad($option,$plugins){
global $database,$mosConfig_absolute_path,$mosConfig_mailfrom,$my;
$row = new adsManagerAd($database);
$itemid = intval( mosGetParam( $_GET, 'Itemid', 0 ));
// get configuration
$database->setQuery( "SELECT * FROM #__adsmanager_config");
$database->loadObject($conf);
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}
$id = intval(mosGetParam( $_POST, 'id', 0 ));
if (($id == 0)&&($my->id != "0")&&($conf->nb_ads_by_user != -1))
{
$database->setQuery( "SELECT count(*) FROM #__adsmanager_ads as a WHERE a.userid =".$my->id);
$nb = $database->loadResult();
if ($nb >= $conf->nb_ads_by_user)
{
$redirect_text = sprintf(ADSMANAGER_MAX_NUM_ADS_REACHED,$conf->nb_ads_by_user);
mosRedirect(sefRelToAbs("index.php?option=$option&Itemid=$itemid"),$redirect_text);
}
}
// bind it to the table
if (!$row -> bind($_POST)) {
echo "<script> alert('"
.end($row -> getErrors())
."'); window.history.go(-1); </script>\n";
exit();
}
if (($conf->submission_type == 0)&&($my->id == 0))
{
$username = mosGetParam( $_POST, 'username', "" );
$password = mosGetParam( $_POST, 'password', "" );
$email = mosGetParam( $_POST, 'email', "" );
$errorMsg = checkAccount($username,$password,$email,$userid,$conf);
if (isset($errorMsg))
{
$catid = intval(mosGetParam( $_POST, 'category', 0 ));
$url = sefRelToAbs("index.php?option=$option&page=write_ad&catid=$catid&Itemid=$itemid");
echo "<form name='form' action='$url' method='post'>";
foreach($_POST as $key=>$val)
{
echo "<input type='hidden' name='$key' value='".htmlentities(stripslashes($val),ENT_QUOTES)."'>";
}
echo "<input type='hidden' name='errorMsg' value='$errorMsg'>";
echo '</form>';
echo '<script language="JavaScript">';
echo 'document.form.submit()';
echo '</script>';
return;
}
$row->userid = $userid;
}
else
{
$row->userid = $my->id;
}
//get fields
$database->setQuery( "SELECT * FROM #__adsmanager_fields WHERE published = 1");
$fields = $database->loadObjectList();
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}
$isUpdateMode = intval(mosGetParam( $_POST, 'isUpdateMode', 0));
if ($isUpdateMode == 0)
{
if ($conf->auto_publish == 1)
{
$row->published = 1;
$redirect_text = ADSMANAGER_INSERT_SUCCESSFULL_PUBLISH;
}
else
{
$row->published = 0;
$redirect_text = ADSMANAGER_INSERT_SUCCESSFULL_CONFIRM;
}
}
else
$redirect_text .= ADSMANAGER_UPDATE_SUCCESSFULL;
if ($isUpdateMode == 0)
{
$row->date_created = date("Y-m-d");
$delta = $conf->ad_duration;
$row->expiration_date = date("Y-m-d",mktime()+($delta*24*3600));
}
// store it in the db
if (!$row -> store()) {
echo "<script> alert('"
.end($row -> getErrors())
."'); window.history.go(-1); </script>\n";
exit();
}
// Add Ad/Category relation
$query = "SELECT catid FROM #__adsmanager_adcat WHERE adid = '$row->id' ";
$database->setQuery($query);
$prevcats = $database->loadResultArray();
$query = "DELETE FROM #__adsmanager_adcat WHERE adid = '$row->id' ";
$database->setQuery($query);
$database->query();
if (function_exists("getMaxCats"))
$maxcats = getMaxCats($conf->nbcats);
else
$maxcats = $conf->nbcats;
if ($maxcats > 1)
{
$selected_cats = mosGetParam( $_POST, "selected_cats", array() );
if (count($selected_cats) > $maxcats)
{
$selected_cats = array_slice ($selected_cats, 0, $maxcats);
}
$query = "INSERT IGNORE INTO #__adsmanager_adcat (`adid`,`catid`) VALUES ";
foreach($selected_cats as $key => $cat)
{
if ($key != 0)
$query .= ",";
$query .= "('$row->id','$cat')";
}
$database->setQuery($query);
$database->query();
}
else
{
$category = mosGetParam( $_POST, "category", 0 );
$query = "INSERT IGNORE INTO #__adsmanager_adcat (`adid`,`catid`) VALUES ('$row->id','$category')";
$database->setQuery($query);
$database->query();
}
if (function_exists("savePaidAd"))
{
if ($maxcats == 1)
{
$selected_cats = array();
$selected_cats[] = $category;
}
$status = savePaidAd($row->id,$row->userid,$isUpdateMode,$errormsg,$conf,$prevcats,$selected_cats);
if ($status == -1)
{
return;
}
else if ($status == -2)
{
$redirect_text = $errormsg;
}
}
$query = "UPDATE #__adsmanager_ads ";
$first=0;
if(isset($fields))
{
foreach($fields as $field)
{
if ($field->type == "multiselect")
{
$value = mosGetParam( $_POST, $field->name, array() );
//$valueA = explode("|*|",$value);
$value = ",".implode(',', $value).",";
}
else if (($field->type == "multicheckbox")||($field->type == "multicheckboximage"))
{
$value = mosGetParam( $_POST, $field->name, array() );
$value = ",".implode(',', $value).",";
}
else if ($field->type == "file")
{
if (isset( $_FILES[$field->name]) and !$_FILES[$field->name]['error'] ) {
if ($_FILES[$field->name]['size'] <= $field->size)
{
$database->setQuery( "SELECT ".$field->name." FROM #__adsmanager_ads WHERE id = ".$row->id);
$old_filename = $database->loadResult();
@unlink($mosConfig_absolute_path."/images/com_adsmanager/files/".$old_filename);
$filename = $_FILES[$field->name]['name'];
while(file_exists($mosConfig_absolute_path."/images/com_adsmanager/files/".$filename)){
$filename = "copy_".$filename;
}
@move_uploaded_file($_FILES[$field->name]['tmp_name'],
$mosConfig_absolute_path."/images/com_adsmanager/files/".$filename);
if ($first == 0)
$query .= "SET";
else
$query .= ",";
$first = 1;
$query .= " $field->name = '".$filename."' ";
}
else
{
$redirect_text = ADSMANAGER_FILE_TOO_BIG;
}
}
continue;
}
else if ($field->type == "editor")
{
$value = mosGetParam( $_POST, $field->name, "",_MOS_ALLOWHTML );
}
//Plugins
else if (isset($plugins[$field->type]))
{
$plugins[$field->type]->onFormSave($row->id,$field->fieldid,$isUpdateMode);
continue;
}
else
{
$value = mosGetParam( $_POST, $field->name, "" );
}
if (!get_magic_quotes_gpc()) {
$value = addslashes( $value );
}
if ($first == 0)
$query .= "SET";
else
$query .= ",";
$first = 1;
$query .= " $field->name = '".$value."' ";
}
}
$query .= "WHERE id = ".$row->id;
if ($first != 0)
{
if (function_exists("savePaidFields"))
{
if (savePaidFields($isUpdateMode,$row,$errormsg)!= 0) // Error
{
$redirect_text = $errormsg;
}
else
{
$database->setQuery( $query);
$database->query();
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}
}
}
else
{
$database->setQuery( $query);
$database->query();
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}