| Server IP : 54.36.91.62 / Your IP : 216.73.217.94 Web Server : Apache System : Linux webm013.cluster127.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 User : coopiak ( 151928) PHP Version : 8.3.23 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/coopiak/amisdesseniors-fr/catalog/administrator/components/com_djclassifieds/lib/ |
Upload File : |
<?php
/**
* @package DJ-Classifieds
* @copyright Copyright (C) DJ-Extensions.com, All rights reserved.
* @license http://www.gnu.org/licenses GNU/GPL
* @author url: http://dj-extensions.com
* @author email contact@dj-extensions.com
*/
defined('_JEXEC') or die('Restricted access');
require_once(JPATH_ROOT.'/administrator/components/com_djclassifieds/lib/djaccess.php');
require_once(JPATH_ROOT.'/administrator/components/com_djclassifieds/lib/djcategory.php');
require_once(JPATH_ROOT.'/administrator/components/com_djclassifieds/lib/djimage.php');
require_once(JPATH_ROOT.'/administrator/components/com_djclassifieds/lib/djseo.php');
require_once(JPATH_ROOT.'/administrator/components/com_djclassifieds/lib/djpayment.php');
require_once(JPATH_ROOT.'/administrator/components/com_djclassifieds/lib/djfield.php');
require_once(JPATH_ROOT.'/administrator/components/com_djclassifieds/lib/djtheme.php');
require_once(JPATH_ROOT.'/components/com_djclassifieds/model.php');
class DJClassifiedsNotify
{
static function getFromname()
{
$config = JFactory::getConfig();
$fromname = $config->get('fromname');
if(!$fromname){
$fromname = $config->get('sitename');
}
return $fromname;
}
static function getAdminMailto()
{
$app = JFactory::getApplication();
$par = JComponentHelper::getParams('com_djclassifieds');
$mailto = trim($par->get('notify_user_email',''));
if($mailto){
$mailto_arr = explode(',', $mailto);
if(count($mailto_arr) > 1){
$mailto = array();
foreach($mailto_arr as $email){
$email = trim($email);
if(filter_var($email, FILTER_VALIDATE_EMAIL)){
$mailto[] = $email;
}
}
if(count($mailto) == 1){
$mailto = $mailto[0];
}
}elseif(!filter_var($mailto, FILTER_VALIDATE_EMAIL)){
$mailto = '';
}
}
if(!$mailto){
$mailto = $app->getCfg('mailfrom');
}
return $mailto;
}
public static function notifyExpired($limit=0,$msg=1)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$par = JComponentHelper::getParams('com_djclassifieds');
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
$notify_days = $par->get('notify_days','0');
if($notify_days>0){
$date_exp = JFactory::getDate('now + '.$notify_days.' day')->toSQL();
$lim = '';
if($limit>0){
$lim = ' LIMIT '.$limit;
}
$query = "SELECT i.id, i.cat_id, i.name, i.alias, i.intro_desc, i.description, i.user_id, i.promotions, i.email, i.published, i.token, c.name as c_name, c.alias as c_alias, u.name as u_name, u.email as u_email, u.username as u_username "
."FROM #__djcf_items i "
."LEFT JOIN #__djcf_categories c ON c.id=i.cat_id "
."LEFT JOIN #__users u ON u.id=i.user_id "
."WHERE i.notify=0 AND i.date_exp < '".$date_exp."' ".$lim;
$db->setQuery($query);
$items = $db->loadObjectList();
$update_id = '';
$items_c = 0;
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 18 LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
foreach($items as $i){
$mailto = '';
$receiver = '';
if($i->user_id){
$mailto = $i->u_email;
$receiver = JFactory::getUser($i->user_id);
}else{
$mailto = $i->email;
}
$app->triggerEvent('onDJClassifiedsPrepareEmail', array($email, $i, $receiver));
if (filter_var($mailto, FILTER_VALIDATE_EMAIL)) {
$subject = self::parseMessageSubject($email->title,$email->id,$i,$receiver);
$m_message = self::parseMessageBody($email->content,$email->id,$i,$receiver);
$m_message = str_ireplace('[[advert_expire_days]]', $notify_days, $m_message);
if(!$m_message){
return false;
}
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $m_message, true, null, ($par->get('notify_expire_copy_admin','0') ? self::getAdminMailto() : null));
if(!is_object($sent)){
$update_id .= $i->id.', ';
$items_c++;
}elseif($msg==1){
$app->enqueueMessage('Sending expiration notification email failed for user '.($i->user_id ? $i->user_id : $i->email), 'warning');
}
}else{
$update_id .= $i->id.', ';
$items_c++;
}
}
if($items_c>0){
$update_id = substr($update_id, 0, -2);
$query = "UPDATE #__djcf_items SET notify=1 WHERE id IN (".$update_id.")";
$db->setQuery($query);
$db->execute();
if($msg==1){
$app->enqueueMessage($items_c.' '.JText::_('COM_DJCLASSIFIEDS_NOTIFICATIONS_SENT'), 'success');
}
}
}
}
public static function notifyPromotionsExpired($limit=0,$msg=1)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$par = JComponentHelper::getParams('com_djclassifieds');
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
$notify_days = $par->get('notify_days','0');
$date_now = JFactory::getDate('now')->toSQL();
if($notify_days>0){
$date_exp = JFactory::getDate('now + '.$notify_days.' day')->toSQL();
$lim = '';
if($limit>0){
$lim = ' LIMIT '.$limit;
}
$query = "SELECT ip.id as ip_id, ip.prom_id, i.id, i.cat_id, i.name, i.alias, i.intro_desc, i.description, i.user_id, i.promotions, i.email, i.published, i.token, c.name as c_name, c.alias as c_alias, u.name as u_name, u.email as u_email, u.username as u_username "
."FROM #__djcf_items i "
."LEFT JOIN #__djcf_items_promotions ip ON i.id=ip.item_id "
."LEFT JOIN #__djcf_categories c ON c.id=i.cat_id "
."LEFT JOIN #__users u ON u.id=i.user_id "
."WHERE i.date_exp > '".$date_now."' AND i.published=1 AND ip.notify=0 AND ip.date_exp < '".$date_exp."' AND ip.date_exp > '".$date_now."' ".$lim;
$db->setQuery($query);
$items_proms = $db->loadObjectList();
$update_id = '';
$items_c = 0;
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 38 LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
foreach($items_proms as $i){
$mailto = '';
$receiver = '';
if($i->user_id){
$mailto = $i->u_email;
$receiver = JFactory::getUser($i->user_id);
}else{
$mailto = $i->email;
}
$app->triggerEvent('onDJClassifiedsPrepareEmail', array($email, $i, $receiver));
if (filter_var($mailto, FILTER_VALIDATE_EMAIL)) {
$query = "SELECT * FROM #__djcf_promotions WHERE id=".$i->prom_id;
$db->setQuery($query);
$prom = $db->loadObject();
$subject = self::parseMessageSubject($email->title,$email->id,$i,$receiver,'','','','','','','','','','','','','','',array(),array(),$prom);
$m_message = self::parseMessageBody($email->content,$email->id,$i,$receiver,'','','','','','','','','','','','','','',array(),array(),$prom);
$m_message = str_ireplace('[[prom_expire_days]]', $notify_days, $m_message);
if(!$m_message){
return false;
}
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $m_message, true, null, ($par->get('notify_expire_copy_admin','0') ? self::getAdminMailto() : null));
if(!is_object($sent)){
$update_id .= $i->ip_id.', ';
$items_c++;
}elseif($msg==1){
$app->enqueueMessage('Sending expiration notification email failed for user '.($i->user_id ? $i->user_id : $i->email), 'warning');
}
}else{
$update_id .= $i->ip_id.', ';
$items_c++;
}
}
if($items_c>0){
$update_id = substr($update_id, 0, -2);
$query = "UPDATE #__djcf_items_promotions SET notify=1 WHERE id IN (".$update_id.")";
$db->setQuery($query);
$db->execute();
if($msg==1){
$app->enqueueMessage($items_c.' '.JText::_('COM_DJCLASSIFIEDS_NOTIFICATIONS_SENT'), 'success');
}
}
}
}
public static function notifyAdmin($item, $new_ad = true)
{
$app = JFactory::getApplication();
$par = JComponentHelper::getParams('com_djclassifieds');
$db = JFactory::getDBO();
$djmodel = new DJClassifiedsModel();
if($par->get('notify_admin','0')){
$item = $djmodel->getItemById($item->id);
if($new_ad){
$email_id = 9;
}else{
$email_id = 10;
}
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = ".$email_id." LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
$mailto = self::getAdminMailto();
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
$subject = self::parseMessageSubject($email->title,$email->id,$item);
$m_message = self::parseMessageBody($email->content,$email->id,$item);
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $m_message);
return $sent;
}
}
public static function notifyNewAdvertUser($item)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$par = JComponentHelper::getParams('com_djclassifieds');
$user = JFactory::getUser();
$djmodel = new DJClassifiedsModel();
$item = $djmodel->getItemById($item->id);
if($user->id){
$mailto = $user->email;
}else{
$mailto = $item->email;
}
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
if(!$user->id){
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 21 LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
}else{
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 11 LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
}
$subject = self::parseMessageSubject($email->title,$email->id,$item,$user);
$m_message = self::parseMessageBody($email->content,$email->id,$item,$user);
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $m_message);
return $sent;
}
public static function notifyAuctions()
{
$db = JFactory::getDBO();
$date_now = JFactory::getDate()->toSQL();
$query = "SELECT i.*, c.name as c_name, c.alias as c_alias,u.name as u_name,u.email as u_email, u.username as u_username "
."FROM #__djcf_items i "
."LEFT JOIN #__djcf_categories c ON c.id=i.cat_id "
."LEFT JOIN #__users u ON u.id=i.user_id "
."WHERE i.notify<2 AND i.date_exp < '".$date_now."' AND i.auction=1";
$db->setQuery($query);
$items = $db->loadObjectList();
if($items){
foreach($items as $item){
$query = "SELECT a.*, u.name, u.username, u.email "
."FROM #__djcf_auctions a "
."LEFT JOIN #__users u ON u.id=a.user_id "
."WHERE a.item_id=".$item->id." "
."ORDER BY a.price DESC";
$db->setQuery($query);
$bids = $db->loadObjectList();
$win = 0;
$winner = '';
$win_id = 0;
$win_price = 0;
if($bids){
foreach($bids as $b => $bid){
$bidder = new stdClass();
$bidder->id = $bid->user_id;
$bidder->name = $bid->name;
$bidder->username = $bid->username;
$bidder->email = $bid->email;
if($b>0){
if($win_id!=$bid->user_id){
DJClassifiedsNotify::notifyAuctionsWinBidder($item->id,$bidder,$bid->price,15);
}
}else{
if($bid->win){ //if($bid->price>=$item->price_reserve){
DJClassifiedsNotify::notifyAuctionsWinBidder($item->id,$bidder,$bid->price);
$win = 1;
}else{
DJClassifiedsNotify::notifyAuctionsWinBidder($item->id,$bidder,$bid->price,14);
}
$win_id = $bid->user_id;
$win_price = $bid->price;
$winner = $bidder;
}
}
if($win){
self::notifyAuctionsWinAuthor($item->id,$winner,$win_price);
}else{
self::notifyAuctionsWinAuthor($item->id,$winner,$win_price,13);
}
}else{
self::notifyAuctionsWinAuthor($item->id,'','',12);
}
$query = "UPDATE `#__djcf_items` SET notify=2 WHERE id=".$item->id;
$db->setQuery($query);
$db->execute();
}
}
}
public static function notifyAuctionsBidAuthor($id, $bidder, $bid)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$djmodel = new DJClassifiedsModel();
$item = $djmodel->getItemById($id);
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 1 LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
$receiver = '';
if($item->user_id){
$mailto = $item->u_email;
$receiver = JFactory::getUser($item->user_id);
}else{
$mailto = $item->email;
}
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
$subject = self::parseMessageSubject($email->title,$email->id,$item,$receiver,$bidder,$bid);
$message = self::parseMessageBody($email->content,$email->id,$item,$receiver,$bidder,$bid);
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $message);
return $sent;
}
public static function notifyAuctionsBidBidder($id, $bidder, $bid)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$djmodel = new DJClassifiedsModel();
$item = $djmodel->getItemById($id);
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 2 LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
$receiver = $bidder;
$mailto = $bidder->email;
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
$subject = self::parseMessageSubject($email->title,$email->id,$item,$receiver,$bidder,$bid);
$message = self::parseMessageBody($email->content,$email->id,$item,$receiver,$bidder,$bid);
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $message);
return $sent;
}
public static function notifyAuctionsBidOutbid($id, $bidder, $bid, $prev_bid)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$djmodel = new DJClassifiedsModel();
$item = $djmodel->getItemById($id);
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 3 LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
$receiver = JFactory::getUser($prev_bid->user_id);
$mailto = $receiver->email;
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
$subject = self::parseMessageSubject($email->title,$email->id,$item,$receiver,$bidder,$bid);
$message = self::parseMessageBody($email->content,$email->id,$item,$receiver,$bidder,$bid);
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $message);
return $sent;
}
public static function notifyAuctionsWinAuthor($id, $bidder, $bid, $email_id=4)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$djmodel = new DJClassifiedsModel();
$item = $djmodel->getItemById($id);
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = ".$email_id." LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
$receiver = '';
if($item->user_id){
$mailto = $item->u_email;
$receiver = JFactory::getUser($item->user_id);
}else{
$mailto = $item->email;
}
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
$subject = self::parseMessageSubject($email->title,$email->id,$item,$receiver,$bidder,$bid);
$message = self::parseMessageBody($email->content,$email->id,$item,$receiver,$bidder,$bid);
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $message);
return $sent;
}
public static function notifyAuctionsWinBidder($id, $bidder, $bid, $email_id=5)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$djmodel = new DJClassifiedsModel();
$item = $djmodel->getItemById($id);
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = ".$email_id." LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
$receiver = $bidder;
$mailto = $bidder->email;
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
$item->purchase_details = self::getPurchaseDetails($item->user_id);
$subject = self::parseMessageSubject($email->title,$email->id,$item,$receiver,$bidder,$bid);
$message = self::parseMessageBody($email->content,$email->id,$item,$receiver,$bidder,$bid);
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $message);
return $sent;
}
public static function messageAuthorToBidder($id, $bidder, $item, $bid, $owner, $title, $msg)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 6 LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
$receiver = $bidder;
$mailto = $bidder->email;
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
$subject = self::parseMessageSubject($title,$email->id,$item,$receiver,$bidder,$bid,$msg,$owner);
$message = self::parseMessageBody($email->content,$email->id,$item,$receiver,$bidder,$bid,$msg,$owner);
$replyto = $owner->email;
$replytoname = $owner->username;
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $message, true, null, null, null, $replyto, $replytoname);
return $sent;
}
public static function messageAskFormContact($item, $author, $msg, $files, $replyto, $replytoname, $custom_fields_msg, $cc = array(), $bcc = array())
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$par = JComponentHelper::getParams('com_djclassifieds');
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 7 LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
$receiver = '';
if($item->user_id){
$mailto = $item->u_email;
$receiver = JFactory::getUser($item->user_id);
}else{
$mailto = $item->email;
$receiver = new StdClass;
$receiver->id = '0';
$receiver->name = '';
$receiver->username = '';
$receiver->email = $mailto;
}
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
$app->triggerEvent('onDJClassifiedsPrepareEmail', array($email, $item, $receiver, $msg, $author, $custom_fields_msg));
$msg = nl2br($msg);
$subject = self::parseMessageSubject($email->title,$email->id,$item,$receiver,'','','','',$msg,$author,'','','','',$custom_fields_msg);
$message = self::parseMessageBody($email->content,$email->id,$item,$receiver,'','','','',$msg,$author,'','','','',$custom_fields_msg);
$attachment = !empty($files['ask_file']['name']) ? $files['ask_file'] : null;
if($par->get('ask_seller_msg_target','0')==0){ // Advert autor email and DJ-Classifieds message plugins
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $message, true, $cc, $bcc, $attachment, $replyto, $replytoname);
}else{ // Only DJ-Classifieds message plugins
$sent = null;
if($cc){
self::emailSend($email->id, $mailfrom, $fromname, $cc, $subject, $message, true, null, $bcc, $attachment, $replyto, $replytoname);
}elseif($bcc){
foreach($bcc as $bcc_email){
self::emailSend($email->id, $mailfrom, $fromname, $bcc_email, $subject, $message, true, null, null, $attachment, $replyto, $replytoname);
}
}
}
if($par->get('ask_seller_copy_sender','0')==1){
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 33 LIMIT 1";
$db->setQuery($query);
$email_sender = $db->loadObject();
$subject_sender = self::parseMessageSubject($email_sender->title,$email_sender->id,$item,$receiver,'','','','',$msg,$author,'','','','',$custom_fields_msg);
$message_sender = self::parseMessageBody($email_sender->content,$email_sender->id,$item,$receiver,'','','','',$msg,$author,'','','','',$custom_fields_msg);
$app->triggerEvent('onDJClassifiedsSendCopyMessage', array($item,$author,$author['email'],$mailfrom,$fromname,'','',$subject_sender,$message_sender,$files,$custom_fields_msg));
if(!empty($author)){
self::emailSend($email_sender->id, $mailfrom, $fromname, $author['email'], $subject_sender, $message_sender, true, null, null, $attachment, $replyto, $replytoname);
}
}
if($par->get('ask_seller_copy_admin',0)){
self::emailSend($email->id, $mailfrom, $fromname, self::getAdminMailto(), $subject, $message, true, null, null, $attachment, $replyto, $replytoname);
}
JPluginHelper::importPlugin('djclassifiedsmessage');
$app->triggerEvent('onDJClassifiedsSendMessage', array(&$item,&$author,&$mailto,&$mailfrom,&$fromname,&$replyto,&$replytoname,&$subject,&$msg,&$files,&$custom_fields_msg));
return $sent;
}
public static function messageProfileAskFormContact($profile, $author, $msg, $files, $replyto, $replytoname, $custom_fields_msg, $cc = array(), $bcc = array())
{
$app = JFactory::getApplication();
$par = JComponentHelper::getParams('com_djclassifieds');
$db = JFactory::getDBO();
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 34 LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
$mailto = $profile['user']->email;
$receiver = $profile['user'];
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
$app->triggerEvent('onDJClassifiedsPrepareEmail', array($email, null, $receiver, $msg, $author, $custom_fields_msg));
$msg = nl2br($msg);
$subject = self::parseMessageSubject($email->title,$email->id,'',$receiver,'','','','',$msg,$author,'','','','',$custom_fields_msg);
$message = self::parseMessageBody($email->content,$email->id,'',$receiver,'','','','',$msg,$author,'','','','',$custom_fields_msg);
$attachment = !empty($files['ask_file']['name']) ? $files['ask_file'] : null;
JPluginHelper::importPlugin('djclassifiedsmessage');
$app->triggerEvent('onDJClassifiedsSendProfileMessage', array($profile,$author,$mailto,$mailfrom,$fromname,$replyto,$replytoname,$subject,$message,$files,$custom_fields_msg));
if($par->get('ask_seller_msg_target','0')==0){ // Advert autor email and DJ-Classifieds message plugins
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $message, true, $cc, $bcc, $attachment, $replyto, $replytoname);
}else{ // Only DJ-Classifieds message plugins
$sent = null;
if($cc){
self::emailSend($email->id, $mailfrom, $fromname, $cc, $subject, $message, true, null, $bcc, $attachment, $replyto, $replytoname);
}elseif($bcc){
foreach($bcc as $bcc_email){
self::emailSend($email->id, $mailfrom, $fromname, $bcc_email, $subject, $message, true, null, null, $attachment, $replyto, $replytoname);
}
}
}
if($par->get('ask_seller_copy_sender','0')==1){
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 33 LIMIT 1";
$db->setQuery($query);
$email_sender = $db->loadObject();
$subject_sender = self::parseMessageSubject($email_sender->title,$email_sender->id,'',$receiver,'','','','',$msg,$author,'','','','',$custom_fields_msg);
$message_sender = self::parseMessageBody($email_sender->content,$email_sender->id,'',$receiver,'','','','',$msg,$author,'','','','',$custom_fields_msg);
$app->triggerEvent('onDJClassifiedsSendCopyMessage', array('',$author,$author['email'],$mailfrom,$fromname,'','',$subject_sender,$message_sender,$files,$custom_fields_msg));
if(!empty($author)){
self::emailSend($email_sender->id, $mailfrom, $fromname, $author['email'], $subject_sender, $message_sender, true, null, null, $attachment, $replyto, $replytoname);
}
}
if($par->get('ask_seller_copy_admin',0)){
self::emailSend($email->id, $mailfrom, $fromname, self::getAdminMailto(), $subject, $message, true, null, null, $attachment, $replyto, $replytoname);
}
return $sent;
}
public static function messageAskFormNotification($item, $author, $msg, $files, $replyto, $replytoname, $custom_fields_msg)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 27 LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
$receiver = '';
if($item->user_id){
$mailto = $item->u_email;
$receiver = JFactory::getUser($item->user_id);
}else{
$mailto = $item->email;
}
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
$attachment = !empty($files['ask_file']['name']) ? $files['ask_file'] : null;
$subject = self::parseMessageSubject($email->title,$email->id,$item,$receiver,'','','','',$msg,$author,'','','','',$custom_fields_msg);
$message = self::parseMessageBody($email->content,$email->id,$item,$receiver,'','','','',$msg,$author,'','','','',$custom_fields_msg);
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $message, true, null, null, $attachment, $replyto, $replytoname);
return $sent;
}
public static function messageAskProfileFormNotification($profile, $author, $msg, $files, $replyto, $replytoname, $custom_fields_msg)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 36 LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
$mailto = $profile['user']->email;
$receiver = $profile['user']->id;
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
$attachment = !empty($files['ask_file']['name']) ? $files['ask_file'] : null;
$subject = self::parseMessageSubject($email->title,$email->id,'',$receiver,'','','','',$msg,$author,'','','','',$custom_fields_msg);
$message = self::parseMessageBody($email->content,$email->id,'',$receiver,'','','','',$msg,$author,'','','','',$custom_fields_msg);
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $message, true, null, null, $attachment, $replyto, $replytoname);
return $sent;
}
public static function messageAbuseFormContact($item, $author, $msg, $mailto)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 8 LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
$subject = self::parseMessageSubject($email->title,$email->id,$item,'','','','','','','',$msg,$author);
$message = self::parseMessageBody($email->content,$email->id,$item,'','','','','','','',$msg,$author);
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $message);
return $sent;
}
public static function notifyBuynowBuyer($id, $buyer, $quantity)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$djmodel = new DJClassifiedsModel();
$item = $djmodel->getItemById($id);
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 16 LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
$receiver = $buyer;
$mailto = $buyer->email;
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
$item->purchase_details = self::getPurchaseDetails($item->user_id);
$subject = self::parseMessageSubject($email->title,$email->id,$item,$receiver,'','','','','','','','',$buyer,$quantity);
$message = self::parseMessageBody($email->content,$email->id,$item,$receiver,'','','','','','','','',$buyer,$quantity);
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $message);
return $sent;
}
public static function notifyBuynowAuthor($id, $buyer, $quantity)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$djmodel = new DJClassifiedsModel();
$item = $djmodel->getItemById($id);
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 17 LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
$receiver = '';
if($item->user_id){
$mailto = $item->u_email;
$receiver = JFactory::getUser($item->user_id);
}else{
$mailto = $item->email;
}
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
$item->purchase_details = self::getPurchaseDetails($item->user_id);
$subject = self::parseMessageSubject($email->title,$email->id,$item,$receiver,'','','','','','','','',$buyer,$quantity);
$message = self::parseMessageBody($email->content,$email->id,$item,$receiver,'','','','','','','','',$buyer,$quantity);
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $message);
return $sent;
}
public static function notifyUserPublication($id, $new_status)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$djmodel = new DJClassifiedsModel();
$item = $djmodel->getItemById($id);
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 19 LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
$item->published = $new_status;
$receiver = '';
if($item->user_id){
$mailto = $item->u_email;
$receiver = JFactory::getUser($item->user_id);
}else{
$mailto = $item->email;
}
if($mailto==''){
return true;
}
if(!filter_var(str_replace("'","",$mailto),FILTER_VALIDATE_EMAIL)){
return true;
}
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
$subject = self::parseMessageSubject($email->title,$email->id,$item,$receiver);
$message = self::parseMessageBody($email->content,$email->id,$item,$receiver);
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $message);
return $sent;
}
public static function notifyUserPayment($type, $id, $payment_info)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$user = JFactory::getUser();
$djmodel = new DJClassifiedsModel();
$item = '';
if($type == ''){
$item = $djmodel->getItemById($id);
}
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 20 LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
$receiver = '';
if($item){
if($item->user_id){
$mailto = $item->u_email;
$receiver = JFactory::getUser($item->user_id);
}else{
$mailto = $item->email;
}
}else{
$mailto = $user->email;
$receiver = $user;
}
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
$subject = self::parseMessageSubject($email->title,$email->id,$item,$receiver,'','','','','','','','','','','',$payment_info);
$message = self::parseMessageBody($email->content,$email->id,$item,$receiver,'','','','','','','','','','','',$payment_info);
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $message);
self::emailSend($email->id, $mailfrom, $fromname, self::getAdminMailto(), $subject, $message);
return $sent;
}
public static function notifyUserPaymentCompleted($payment)
{
JPluginHelper::importPlugin('djclassifieds');
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$djmodel = new DJClassifiedsModel();
$par = JComponentHelper::getParams('com_djclassifieds');
$payment_info = array();
$ad_payment_details = array();
$receiver = '';
$item_name = '';
$type = '';
$item_id = '';
$item = '';
$offer = '';
$order = '';
if($payment->type==5){
$type = JText::_('COM_DJCLASSIFIEDS_OFFER');
$query = "SELECT * FROM #__djcf_offers WHERE id=".$payment->item_id;
$db->setQuery($query);
$offer = $db->loadObject();
$item_id = $offer->item_id;
}else if($payment->type==4){
$type = JText::_('COM_DJCLASSIFIEDS_BUYNOW');
$query = "SELECT * FROM #__djcf_orders WHERE id=".$payment->item_id;
$db->setQuery($query);
$order = $db->loadObject();
$item_id = $order->item_id;
}else if($payment->type==3){
$type = JText::_('COM_DJCLASSIFIEDS_SUBSCRIPTION_PLAN');
$query = "SELECT * FROM #__djcf_plans WHERE id=".$payment->item_id;
$db->setQuery($query);
$plan = $db->loadObject();
$item_name = $plan->name;
}else if($payment->type==2){
$type = JText::_('COM_DJCLASSIFIEDS_PROMOTION_MOVE_TO_TOP');
$item_id = $payment->item_id;
}else if($payment->type==1){
$type = JText::_('COM_DJCLASSIFIEDS_POINTS_PACKAGE');
$query = "SELECT * FROM #__djcf_points WHERE id=".$payment->item_id;
$db->setQuery($query);
$points = $db->loadResult();
$item_name = $points->name;
}else{
$type = JText::_('COM_DJCLASSIFIEDS_ADVERT');
$item_id = $payment->item_id;
if($payment->type_details){
$ad_payment_details = DJClassifiedsPayment::getAdvertPaymentTypeDetails($payment->type_details);
}
}
if($item_id){
$item = $djmodel->getItemById($item_id);
$item_name = $item->name;
}
if($ad_payment_details){
$type .= ' - '.implode(', ', $ad_payment_details);
}
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 35 LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
if($payment->user_id){
$receiver = JFactory::getUser($payment->user_id);
$mailto = $receiver->email;
}elseif(!empty($item->email)){
$receiver = new stdClass();
$receiver->user_id = '0';
$receiver->user_name = JText::_('COM_DJCLASSIFIEDS_GUEST');
$receiver->user_username = JText::_('COM_DJCLASSIFIEDS_GUEST');
$receiver->user_email = $item->email;
$mailto = $item->email;
}else{
return;
}
$payment_info['payment_id'] = $payment->id;
$payment_info['amount'] = $payment->price;
$payment_info['itemname'] = $item_name;
$payment_info['info'] = '';
$payment_info['type'] = $type;
$payment_info['method'] = str_replace('djcf', '', $payment->method);
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
$subject = self::parseMessageSubject($email->title,$email->id,$item,$receiver,'','','','','','','','','','','',$payment_info,'',$offer);
$message = self::parseMessageBody($email->content,$email->id,$item,$receiver,'','','','','','','','','','','',$payment_info,'',$offer);
$mailer = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $message, true, null, ($par->get('notify_payment_complete_copy_admin', 0) ? self::getAdminMailto() : null), null, null, null, true);
$app->triggerEvent('onNotifyUserPaymentCompletedPrepareMailer', array(&$mailer, $payment->id));
return $mailer->Send();
}
public static function notifyUserPoints($user_id, $points_info)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$user = JFactory::getUser($user_id);
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 22 LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
$mailto = $user->email;
$receiver = $user;
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
$subject = self::parseMessageSubject($email->title,$email->id,'',$receiver,'','','','','','','','','','','','',$points_info);
$message = self::parseMessageBody($email->content,$email->id,'',$receiver,'','','','','','','','','','','','',$points_info);
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $message);
return $sent;
}
public static function notifyAdminPaymentPoints($type, $payment_info)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 23 LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
$receiver = '';
$mailto = self::getAdminMailto();
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
$subject = self::parseMessageSubject($email->title,$email->id,'',$receiver,'','','','','','','','','','','',$payment_info);
$message = self::parseMessageBody($email->content,$email->id,'',$receiver,'','','','','','','','','','','',$payment_info);
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $message);
return $sent;
}
public static function notifyOfferBuyer($id, $buyer, $price, $quantity, $offer_msg='')
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$djmodel = new DJClassifiedsModel();
$item = $djmodel->getItemById($id);
$offer = array();
$offer['price'] = $price;
$offer['quantity'] = $quantity;
$offer['msg'] = $offer_msg;
$offer['offerer_name'] = $buyer->name;
$offer['offerer_email'] = $buyer->email;
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 24 LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
$receiver = $buyer;
$mailto = $buyer->email;
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
$subject = self::parseMessageSubject($email->title,$email->id,$item,$receiver,'','','','','','','','','','','','','',$offer);
$message = self::parseMessageBody($email->content,$email->id,$item,$receiver,'','','','','','','','','','','','','',$offer);
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $message);
return $sent;
}
public static function notifyOfferAuthor($id, $buyer, $price, $quantity, $offer_msg='')
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$djmodel = new DJClassifiedsModel();
$item = $djmodel->getItemById($id);
$offer = array();
$offer['price'] = $price;
$offer['quantity'] = $quantity;
$offer['msg'] = $offer_msg;
$offer['offerer_name'] = $buyer->name;
$offer['offerer_email'] = $buyer->email;
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 25 LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
$receiver = '';
if($item->user_id){
$mailto = $item->u_email;
$receiver = JFactory::getUser($item->user_id);
}else{
$mailto = $item->email;
}
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
$subject = self::parseMessageSubject($email->title,$email->id,$item,$receiver,'','','','','','','','','','','','','',$offer);
$message = self::parseMessageBody($email->content,$email->id,$item,$receiver,'','','','','','','','','','','','','',$offer);
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $message);
return $sent;
}
public static function messageOfferAuthorToOfferer($id, $bidder, $item, $offer)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 26 LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
$receiver = $bidder;
$mailto = $bidder->email;
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
$subject = self::parseMessageSubject($email->title,$email->id,$item,$receiver,'','','','','','','','','','','','','',$offer);
$message = self::parseMessageBody($email->content,$email->id,$item,$receiver,'','','','','','','','','','','','','',$offer);
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $message);
return $sent;
}
public static function notifySearchAlerts()
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$query = "SELECT i.id, i.cat_id, i.name, i.alias, i.intro_desc, i.description, i.user_id, i.promotions, i.email, i.published, i.price, c.id c_id, c.name as c_name, c.alias as c_alias, r.id r_id, r.name r_name, r.alias r_alias, s.user_id "
."FROM #__djcf_search_notifications s "
."INNER JOIN #__djcf_items i ON s.item_id=i.id "
."LEFT JOIN #__djcf_categories c ON i.cat_id=c.id "
."LEFT JOIN #__djcf_regions r ON i.region_id = r.id "
."ORDER BY s.user_id";
$db->setQuery($query);
$items_a = $db->loadObjectList();
$items = array();
$id_arr = array();
foreach($items_a as $item){
$id_arr[] = $item->id;
if(!isset($items[$item->user_id])){
$items[$item->user_id] = array();
}
$items[$item->user_id][] = $item;
}
$items_img = $id_arr ? DJClassifiedsImage::getAdsImages(implode(',', $id_arr)) : array();
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 28 LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
foreach($items as $u_id=>$item_u){
$items_list = '';
foreach($item_u as $item){
$img_url = '';
foreach($items_img as $img){
if($item->id==$img->item_id){
$img_url = $img->thumb_m;
break;
}
}
$link = JRoute::link('site', DJClassifiedsSEO::getItemRoute($item->id.':'.$item->alias,$item->cat_id.':'.$item->c_alias,$item->region_id.':'.$item->r_alias), true, null, true);
if($img_url){
$items_list .= '<img src="'.JURI::root(false).$img_url.'" alt=""/><br />';
}
$items_list .= '<a href="'.$link.'">'.$item->name.'</a><br /><br />';
}
$sa = array();
$sa['total'] = count($item_u);
$sa['items_list'] = $items_list;
$receiver = JFactory::getUser($u_id);
$mailto = $receiver->email;
$subject = $email->title;
$message = self::parseMessageBody($email->content,$email->id,'',$receiver,'','','','','','','','','','','','','','',$sa);
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $message);
if(!is_object($sent)){
$query = "DELETE FROM #__djcf_search_notifications WHERE user_id=".$u_id;
$db->setQuery($query);
$db->execute();
}
}
}
public static function notifyAdminRenewAdvert($item)
{
$app = JFactory::getApplication();
$par = JComponentHelper::getParams('com_djclassifieds');
$db = JFactory::getDBO();
$djmodel = new DJClassifiedsModel();
if($par->get('notify_admin','0')){
$item = $djmodel->getItemById($item->id);
$email_id = 29;
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = ".$email_id." LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
$mailto = self::getAdminMailto();
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
$subject = self::parseMessageSubject($email->title,$email->id,$item);
$m_message = self::parseMessageBody($email->content,$email->id,$item);
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $m_message);
return $sent;
}
}
public static function notifyAdminBadWords($item)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$djmodel = new DJClassifiedsModel();
$item = $djmodel->getItemById($item->id);
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 30 LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
$mailto = self::getAdminMailto();
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
$subject = self::parseMessageSubject($email->title,$email->id,$item);
$m_message = self::parseMessageBody($email->content,$email->id,$item);
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $m_message);
return $sent;
}
public static function notifyConfirmOfferAuthor($id, $buyer, $price, $quantity)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$djmodel = new DJClassifiedsModel();
$item = $djmodel->getItemById($id);
$offer = array();
$offer['price'] = $price;
$offer['quantity'] = $quantity;
$offer['msg'] = '';
$offer['offerer_name'] = $buyer->name;
$offer['offerer_email'] = $buyer->email;
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 31 LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
$receiver = '';
if($item->user_id){
$mailto = $item->u_email;
$receiver = JFactory::getUser($item->user_id);
}else{
$mailto = $item->email;
}
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
$subject = $email->title;
$message = self::parseMessageBody($email->content,$email->id,$item,$receiver,'','','','','','','','','','','','','',$offer);
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $message);
return $sent;
}
public static function notifyPlansExpired($notify_days = 0, $limit = 0)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$mailfrom = $app->getCfg('mailfrom');
$fromname = self::getFromname();
if(!$notify_days){
return;
}
$date_now = JFactory::getDate()->toSQL();
$date_exp = JFactory::getDate('now + '.$notify_days.' day')->toSQL();
$lim = $limit > 0 ? ' LIMIT '.$limit : '';
$query = "SELECT p.*, ps.id subscr_id, ps.date_exp, u.id as user_id, u.name as u_name, u.email as u_email, u.username as u_username "
."FROM #__djcf_plans_subscr ps "
."INNER JOIN #__djcf_plans p ON ps.plan_id=p.id "
."LEFT JOIN #__users u ON ps.user_id=u.id "
."WHERE ps.notify_expired=0 AND ps.date_exp!='0000-00-00 00:00:00' AND ps.date_exp > '".$date_now."' AND ps.date_exp < '".$date_exp."' ".$lim;
$db->setQuery($query);
$subs = $db->loadObjectList();
foreach($subs as $sub){
$query = "SELECT e.* FROM #__djcf_emails e WHERE e.id = 37 LIMIT 1";
$db->setQuery($query);
$email = $db->loadObject();
$receiver = JFactory::getUser($sub->user_id);
$mailto = $receiver->email;
$subject = self::parseMessageSubject($email->title,$email->id,'',$receiver,'','','','','','','','','','','','','','',array(),$sub);
$m_message = self::parseMessageBody($email->content,$email->id,'',$receiver,'','','','','','','','','','','','','','',array(),$sub);
$m_message = str_ireplace('[[plan_expire_days]]', $notify_days, $m_message);
$sent = self::emailSend($email->id, $mailfrom, $fromname, $mailto, $subject, $m_message);
if(!is_object($sent)){
$query = "UPDATE `#__djcf_plans_subscr` SET notify_expired=1 WHERE id=".$sub->subscr_id;
$db->setQuery($query);
$db->execute();
}
}
}
public static function getPurchaseDetails($user_id)
{
$djmodel = new DJClassifiedsModel();
$purchase_details = $djmodel->getPurchaseDetails($user_id);
return $purchase_details;
}
public static function parseMessageSubject($message,$message_id,$item=null,$receiver=null,$bidder=null,$bid=null,$bcontact_message=null,$bowner=null,$contact_message=null,$contact_author=null,$abuse_message=null,$abuse_author=null,$buyer=null,$quantity=null,$contact_fields_message=null,$payment_info=null,$points_info=null,$offer=null,$sa=null,$plan=null,$prom=null)
{
return self::parseMessage($message,$message_id,$item,$receiver,$bidder,$bid,$bcontact_message,$bowner,$contact_message,$contact_author,$abuse_message,$abuse_author,$buyer,$quantity,$contact_fields_message,$payment_info,$points_info,$offer,$sa,$plan,$prom);
}
public static function parseMessageBody($message,$message_id,$item=null,$receiver=null,$bidder=null,$bid=null,$bcontact_message=null,$bowner=null,$contact_message=null,$contact_author=null,$abuse_message=null,$abuse_author=null,$buyer=null,$quantity=null,$contact_fields_message=null,$payment_info=null,$points_info=null,$offer=null,$sa=null,$plan=null,$prom=null)
{
$config = JFactory::getConfig();
$par = JComponentHelper::getParams('com_djclassifieds');
$message = self::parseMessage($message,$message_id,$item,$receiver,$bidder,$bid,$bcontact_message,$bowner,$contact_message,$contact_author,$abuse_message,$abuse_author,$buyer,$quantity,$contact_fields_message,$payment_info,$points_info,$offer,$sa,$plan,$prom);
if($par->get('use_email_master_template', '0')){
$message = str_ireplace('[[email_template]]', $message, $par->get('email_master_template'));
$message = str_ireplace('[[site_name]]', $config->get('sitename'), $message);
}
return $message;
}
public static function parseMessage($message,$message_id,$item=null,$receiver=null,$bidder=null,$bid=null,$bcontact_message=null,$bowner=null,$contact_message=null,$contact_author=null,$abuse_message=null,$abuse_author=null,$buyer=null,$quantity=null,$contact_fields_message=null,$payment_info=null,$points_info=null,$offer=null,$sa=null,$plan=null,$prom=null)
{
$app = JFactory::getApplication();
$par = JComponentHelper::getParams('com_djclassifieds');
$djmodel = new DJClassifiedsModel();
$app->triggerEvent('onAdminBeforeParseEmailBody', array(&$message,$message_id,&$item,&$receiver,&$bidder,&$bid,&$bcontact_message,&$bowner,$contact_message,&$contact_author,&$abuse_message,&$abuse_author,&$buyer,&$quantity,&$contact_fields_message));
DJClassifiedsTheme::loadFrontLanguage(); // loading lang set on front for proper lang const translations
$message = JText::_($message); // subject/body as lang consts support
if($item){
$item = $djmodel->getItemById($item->id, true); // force db load to make sure the updated status is right
$link = JRoute::link('site', DJClassifiedsSEO::getItemRoute($item->id.':'.$item->alias,$item->cat_id.':'.$item->c_alias,$item->region_id.':'.$item->r_alias).($message_id == '18' ? '&exp_notif=1' : ''), true, null, true);
$message = str_ireplace('[[advert_id]]', $item->id, $message);
$message = str_ireplace('[[advert_link]]', '<a href="'.$link.'">'.$link.'</a>', $message);
$message = str_ireplace(array('[[advert_link_url]]', '[[advert_url]]'), $link, $message);
$message = str_ireplace('[[advert_title]]', $item->name, $message);
$message = str_ireplace('[[advert_title_link]]', '<a href="'.$link.'">'.$item->name.'</a>', $message);
$message = str_ireplace('[[advert_category]]', JText::_($item->c_name), $message);
$message = str_ireplace('[[advert_category_path]]', strip_tags(DJClassifiedsCategory::getCatFullPath($item->cat_id)), $message);
$message = str_ireplace('[[advert_region]]', JText::_($item->r_name), $message);
$reg_parts = DJClassifiedsRegion::getRegionParts($item->region_id);
$message = str_ireplace('[[advert_region_path]]', $reg_parts['reg_path'], $message);
$message = str_ireplace('[[advert_region_country]]', $reg_parts['country'], $message);
$message = str_ireplace('[[advert_region_city]]', $reg_parts['city'], $message);
$addr_parts = array();
if($item->address) $addr_parts[] = $item->address;
if($item->post_code) $addr_parts[] = $item->post_code;
$message = str_ireplace('[[advert_address]]', implode(', ', $addr_parts), $message);
$message = str_ireplace('[[advert_intro_desc]]', $item->intro_desc, $message);
$message = str_ireplace('[[advert_desc]]', $item->description, $message);
if($item->user_id){
$message = str_ireplace('[[advert_author_name]]', $item->u_name, $message);
$message = str_ireplace('[[advert_author_email]]', $item->u_email, $message);
}else{
$message = str_ireplace('[[advert_author_name]]', JText::_('COM_DJCLASSIFIEDS_GUEST'), $message);
$message = str_ireplace('[[advert_author_email]]', $item->email, $message);
}
if($item->published==1){
$message = str_ireplace('[[advert_status]]', JText::_('COM_DJCLASSIFIEDS_PUBLISHED'), $message);
}elseif($item->published==2){
$message = str_ireplace('[[advert_status]]', JText::_('COM_DJCLASSIFIEDS_ARCHIVED'), $message);
}else{
$message = str_ireplace('[[advert_status]]', JText::_('COM_DJCLASSIFIEDS_WAITING_FOR_PUBLISH'), $message);
}
if(strpos($message, '[[advert_custom_field_') !== false){
preg_match('/(?<=\[\[advert_custom_field_)(.*)(?=\]\])/', $message, $matches);
foreach(array_unique($matches) as $field_name){
$value = DJClassifiedsField::getFieldValue($field_name, $item->id);
$message = str_ireplace('[[advert_custom_field_'.$field_name.']]', $value, $message);
}
}
if(strpos($message, '[[advert_image]]') !== false){
$item_images = DJClassifiedsImage::getAdsImages($item->id);
$thumb_type = DJClassifiedsImage::getThumbType('email');
$item_image = '<img src="'.(!empty($item_images[0]) ? JUri::root().ltrim($item_images[0]->thumb_email, '/') : JUri::root().DJClassifiedsTheme::getImgAssetPath('no-image.svg')).'" alt="'.(!empty($item_images[0]) ? $item_images[0]->caption : 'no image').'" style="'.DJClassifiedsImage::getThumbStyle($thumb_type, $par).'" />';
$message = str_ireplace('[[advert_image]]', $item_image, $message);
}
if(strpos($message, '[[advert_edit]]') !== false || strpos($message, '[[advert_edit_link]]') !== false){
$edit_link = JRoute::link('site', DJClassifiedsSEO::getViewUri('additem').(!$receiver->id && $item->token ? '&token='.$item->token : '&id='.$item->id), true, null, true);
$message = str_ireplace(array('[[advert_edit]]', '[[advert_edit_link]]'), '<a href="'.$edit_link.'">'.JText::_('COM_DJCLASSIFIEDS_EDITION_LINK').'</a>', $message);
}
if(strpos($message, '[[advert_delete]]') !== false || strpos($message, '[[advert_delete_link]]') !== false){
$delete_link = JRoute::link('site', DJClassifiedsSEO::getViewUri('item').(!$receiver->id && $item->token ? '&task=deleteToken&token='.$item->token : '&task=delete&id='.$item->id), true, null, true);
$message = str_ireplace(array('[[advert_delete]]', '[[advert_delete_link]]'), '<a href="'.$delete_link.'">'.JText::_('COM_DJCLASSIFIEDS_REMOVE_LINK').'</a>', $message);
}
}
if($receiver){
$message = str_ireplace('[[user_id]]', $receiver->id, $message);
$message = str_ireplace('[[user_name]]', $receiver->name, $message);
$message = str_ireplace('[[user_username]]', $receiver->username, $message);
$message = str_ireplace('[[user_email]]', $receiver->email, $message);
if(strpos($message, '[[user_custom_field_') !== false){
preg_match('/(?<=\[\[user_custom_field_)(.*)(?=\]\])/', $message, $matches);
foreach(array_unique($matches) as $field_name){
$value = DJClassifiedsField::getFieldValue($field_name, $receiver->id);
$message = str_ireplace('[[user_custom_field_'.$field_name.']]', $value, $message);
}
}
}
if($bid){
$message = str_ireplace('[[bid_value]]', $bid, $message);
}
if($bidder){
$message = str_ireplace('[[bidder_id]]', $bidder->id, $message);
$message = str_ireplace('[[bidder_name]]', $bidder->name, $message);
$message = str_ireplace('[[bidder_username]]', $bidder->username, $message);
$message = str_ireplace('[[bidder_email]]', $bidder->email, $message);
}
if($bcontact_message){
$message = str_ireplace('[[bcontact_message]]',$bcontact_message, $message);
}
if($bowner){
$message = str_ireplace('[[bcontact_author_name]]',$bowner->name, $message);
}
if($contact_fields_message){
$message = str_ireplace('[[contact_custom_fields_message]]',$contact_fields_message, $message);
}
if($contact_message){
$message = str_ireplace('[[contact_message]]',$contact_message, $message);
}
if($contact_author){
$message = str_ireplace('[[contact_author_name]]',$contact_author['name'], $message);
$message = str_ireplace('[[contact_author_email]]',$contact_author['email'], $message);
if($contact_author['user_id']){
$message = str_ireplace('[[contact_author_name_link]]','<a href="'.$contact_author['profile'].'">'.$contact_author['profile'].'</a>', $message);
}else{
$message = str_ireplace('[[contact_author_name_link]]',$contact_author['name'], $message);
}
}
if($abuse_message){
$message = str_ireplace('[[abuse_message]]',$abuse_message, $message);
}
if($abuse_author){
$message = str_ireplace('[[abuse_author_name]]',$abuse_author->name, $message);
}
if($buyer){
$message = str_ireplace('[[buyer_name]]', $buyer->name, $message);
$message = str_ireplace('[[buyer_email]]', $buyer->email, $message);
}
if($quantity){
$message = str_ireplace('[[buynow_quantity]]', $quantity, $message);
$message = str_ireplace('[[buynow_price]]', strip_tags(DJClassifiedsTheme::priceFormat($item->price, !empty($item->currency) ? $item->currency : '')), $message);
$price_total = $quantity*$item->price;
$app->triggerEvent('onAdminPriceParseEmailBody', array(&$message,$message_id,$item,$buyer,&$price_total));
$message = str_ireplace('[[buynow_price_total]]', strip_tags(DJClassifiedsTheme::priceFormat($price_total, !empty($item->currency) ? $item->currency : '')), $message);
}
if($quantity || $message_id == '5'){
$message = str_ireplace('[[purchase_details]]', $item->purchase_details, $message);
}
if($offer){
$message = str_ireplace('[[offer_quantity]]', $offer['quantity'], $message);
$offer_price_per_item = round($offer['price']/$offer['quantity'],2);
$message = str_ireplace('[[offer_price]]', strip_tags(DJClassifiedsTheme::priceFormat($offer_price_per_item, !empty($item->currency) ? $item->currency : '')), $message);
$message = str_ireplace('[[offer_price_total]]', strip_tags(DJClassifiedsTheme::priceFormat($offer['price'], !empty($item->currency) ? $item->currency : '')), $message);
$message = str_ireplace('[[offer_message]]', $offer['msg'], $message);
$message = str_ireplace('[[offerer_name]]', $offer['offerer_name'], $message);
$message = str_ireplace('[[offerer_email]]', $offer['offerer_email'], $message);
if(isset($offer['status'])){
if($offer['status']==1){
$offer_status = JText::_('COM_DJCLASSIFIEDS_OFFER_ACCEPTED');
}else{
$offer_status = JText::_('COM_DJCLASSIFIEDS_OFFER_DECLINED');
}
$message = str_ireplace('[[offer_status]]', $offer_status, $message);
}
if(isset($offer['response'])){
$message = str_ireplace('[[offer_response]]', $offer['response'], $message);
}
}
if($payment_info){
$message = str_ireplace('[[payment_item_name]]', !empty($payment_info['itemname']) ? $payment_info['itemname'] : '', $message);
$message = str_ireplace('[[payment_price]]', !empty($payment_info['amount']) ? strip_tags(DJClassifiedsTheme::priceFormat($payment_info['amount'], !empty($item->currency) ? $item->currency : '')) : '', $message);
$message = str_ireplace('[[payment_info]]', !empty($payment_info['info']) ? $payment_info['info'] : '', $message);
$message = str_ireplace('[[payment_id]]', !empty($payment_info['payment_id']) ? $payment_info['payment_id'] : '', $message);
$message = str_ireplace('[[payment_type]]', !empty($payment_info['type']) ? $payment_info['type'] : '', $message);
$message = str_ireplace('[[payment_method]]', !empty($payment_info['method']) ? $payment_info['method'] : '', $message);
if(strpos($message, '[[payment_date]]') !== false){
$payment = $djmodel->getPayment($payment_info['payment_id']);
$message = str_ireplace('[[payment_date]]', !empty($payment->date) ? DJClassifiedsTheme::formatDate(strtotime($payment->date)) : '', $message);
}
}
if($points_info){
$message = str_ireplace('[[points_value]]', $points_info['value'], $message);
$message = str_ireplace('[[points_description]]', $points_info['description'], $message);
}
if($sa){
$message = str_ireplace('[[search_total]]', $sa['total'], $message);
$message = str_ireplace('[[search_adverts]]', $sa['items_list'], $message);
}
if($plan){
$message = str_ireplace('[[plan_id]]', $plan->id, $message);
$message = str_ireplace('[[plan_name]]', $plan->name, $message);
}
if($prom){
$message = str_ireplace('[[prom_name]]', JText::_($prom->label), $message);
}
$message = str_ireplace('[[site_url]]', JUri::root(), $message);
$message = str_ireplace('[[items_url]]', JRoute::link('site', DJClassifiedsSEO::getCategoryRoute('0:all'), true, null, true), $message);
$message = str_ireplace('[[additem_url]]', JRoute::link('site', DJClassifiedsSEO::getViewUri('additem'), true, null, true), $message);
$message = str_ireplace('[[useritems_url]]', JRoute::link('site', DJClassifiedsSEO::getViewUri('useritems'), true, null, true), $message);
$message = str_ireplace('[[profileedit_url]]', JRoute::link('site', DJClassifiedsSEO::getViewUri('profileedit'), true, null, true), $message);
JPluginHelper::importPlugin('djclassifiedsmessage');
$app->triggerEvent('onAdminAfterParseEmailBody', array (&$message,$message_id,$item,$buyer));
return $message;
}
static function emailSend($email_id, $mailfrom, $fromname, $mailto, $subject, $message, $mode = true, $cc = null, $bcc = null, $attachment = null, $replyto = null, $replytoname = null, $return_mailer = false)
{
$app = JFactory::getApplication();
if(!$app->get('mailonline','1')){
$app->enqueueMessage(JText::_('JLIB_MAIL_FUNCTION_OFFLINE'), 'warning');
return null;
}
$app->triggerEvent('onDJClassifiedsEmailSend', array(&$email_id, &$mailfrom, &$fromname, &$mailto, &$subject, &$message, &$mode, &$cc, &$bcc, &$attachment, &$replyto, &$replytoname));
if(empty($message) || empty($mailto)){
return null;
}
if(DJClassifiedsAccess::isUserEmailDisabled($email_id, $mailto)){
return null;
}
$mailer = JFactory::getMailer();
$mailer->setSender(array($mailfrom, $fromname));
$mailer->setSubject($subject);
$mailer->setBody($message);
$mailer->IsHTML($mode);
$mailer->addRecipient($mailto);
if($cc){
$mailer->addCc($cc);
}
if($bcc){
$mailer->addBcc($bcc);
}
if($attachment){
if(is_array($attachment['name'])){
foreach($attachment['name'] as $key => $val){
$mailer->addAttachment($attachment['tmp_name'][$key], $attachment['name'][$key]);
}
}else{
$mailer->addAttachment($attachment['tmp_name'], $attachment['name']);
}
}
if($replyto && $replytoname){
$mailer->addReplyTo($replyto, $replytoname);
}
return $return_mailer ? $mailer : $mailer->Send();
}
}