Current File : /home/pacjaorg/public_html/kmm/plugins/djclassifieds/shipping/shipping.php |
<?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/djtheme.php');
class plgDJClassifiedsShipping extends JPlugin
{
public function __construct(& $subject, $config)
{
parent::__construct ( $subject, $config );
$this->loadLanguage ();
}
function onAdminPrepareSidebar()
{
$result = array (
array (
'label' => JText::_ ( 'COM_DJCLASSIFIEDS_SHIPPINGS' ),
'link' => 'index.php?option=com_djclassifieds&view=shippings',
'view' => 'shippings'
)
);
return $result;
}
function onAdminItemEditTabTitle($item)
{
//$tab_title = '<li><a href="#shipping" data-toggle="tab">'.JText::_('COM_DJCLASSIFIEDS_SHIPPING').'</a></li>';
$tab_title = JText::_('COM_DJCLASSIFIEDS_SHIPPING');
return $tab_title;
}
function onAdminItemEditTabContent($item)
{
$db = JFactory::getDBO();
$query = "SELECT * FROM #__djcf_shipping_methods ORDER BY ordering";
$db->setQuery($query);
$shippings = $db->loadObjectList();
$item_shippings = array();
if($item->id){
$query = "SELECT * FROM #__djcf_items_shipping WHERE item_id=".$item->id;
$db->setQuery($query);
$item_shippings = $db->loadObjectList('shipping_id');
}
$tab_content = '';
//$tab_content .= '<div class="tab-pane" id="shipping">';
$tab_content .= '<div class="control-group"><div class="control-label">'.JText::_('COM_DJCLASSIFIEDS_AVAILABLE_SHIPPINGS').'</div><div class="controls">';
foreach($shippings as $shipping){
$item_checked = '';
$checked_no = ' checked="checked" ';
$checked_yes = '';
if(isset($item_shippings[$shipping->id])){
$item_checked = ' checked="checked" ';
$shipping->price = $item_shippings[$shipping->id]->price;
$shipping->description = $item_shippings[$shipping->id]->description;
$checked_no = '';
$checked_yes = ' checked="checked" ';
}
$tab_content .= '<div class="shipping_row">';
$tab_content .= '<div class="shipping_name">
<h5>'.$shipping->name.'</h5>
<input type="radio" value="1" '.$checked_yes.' id="shipping_yes'.$shipping->id.'" name="shipping'.$shipping->id.'"><label for="shipping_yes'.$shipping->id.'" >'.JText::_('JYES').'</label>
<input type="radio" value="0" '.$checked_no.' id="shipping_no'.$shipping->id.'" name="shipping'.$shipping->id.'"><label for="shipping_no'.$shipping->id.'">'.JText::_('JNO').'</label>
</div>';
$tab_content .= '<div class="shipping_price">'.JText::_('COM_DJCLASSIFIEDS_PRICE').': <input type="text" name="shipping_price'.$shipping->id.'" value="'.$shipping->price.'" size="10" /></div>';
$tab_content .= '<input type="hidden" name="shipping_desc'.$shipping->id.'" />';
$tab_content .= '</div>';
}
$tab_content .= '</div></div>';
//$tab_content .= '</div>';
return $tab_content;
}
function onItemEditFormSections($item)
{
$db = JFactory::getDBO();
$query = "SELECT * FROM #__djcf_shipping_methods WHERE published=1 ORDER BY ordering";
$db->setQuery($query);
$shippings = $db->loadObjectList();
$item_shippings = array();
if($item->id){
$query = "SELECT * FROM #__djcf_items_shipping WHERE item_id=".$item->id;
$db->setQuery($query);
$item_shippings = $db->loadObjectList('shipping_id');
}
$content = '<div class="prom_rows shippins_rows shipping_rows additem_djform">';
$content .= '<div class="title_top">'.JText::_('COM_DJCLASSIFIEDS_AVAILABLE_SHIPPINGS');
$postage_estimator = $this->params->get('postage_estimator');
if($postage_estimator){
if(!strstr($postage_estimator, 'http')){
$postage_estimator = 'http://'.$postage_estimator;
}
$content .= '<a class="postage_estimator" href="'.$postage_estimator.'" target="_blank">'.JText::_('COM_DJCLASSIFIEDS_SERVICES_POSTAGE_ESTIMATOR').'</a>';
}
$content .= '</div>';
$content .= '<div class="additem_djform_in" >';
foreach($shippings as $shipping){
$checked_no = ' checked="checked" ';
$checked_yes = '';
$item_dispatch_time = '';
if(isset($item_shippings[$shipping->id])){
$checked_no = '';
$checked_yes = ' checked="checked" ';
$shipping->price = $item_shippings[$shipping->id]->price;
$item_dispatch_time = $item_shippings[$shipping->id]->description;
}
$content .= '<div class="djform_row">';
$content .= '<label class="label">'.$shipping->name.'</label>';
$content .= '<div class="djform_field">';
$content .= '<div class="djform_ship_v djform_prom_v">
<div class="djform_ship_v_in djform_prom_v_in">
<input type="radio" value="1" '.$checked_yes.' id="shipping_yes'.$shipping->id.'" name="shipping'.$shipping->id.'"><label for="shipping_yes'.$shipping->id.'" >'.JText::_('JYES').'</label>
<input type="radio" value="0" '.$checked_no.' id="shipping_no'.$shipping->id.'" name="shipping'.$shipping->id.'"><label for="shipping_no'.$shipping->id.'">'.JText::_('JNO').'</label>
</div>
</div>';
$content .= '<div class="shipping_price_desc">';
$content .= '<div class="shipping_price"><span>'.JText::_('COM_DJCLASSIFIEDS_PRICE').':</span><input type="text" name="shipping_price'.$shipping->id.'" value="'.$shipping->price.'" size="10" /></div>';
$content .='</div>';
$content .= '<div style="clear:both"></div>';
$content .= '</div>';
$content .= '<div style="clear:both"></div>';
$content .= '</div>';
}
$content .= '</div></div>';
$shipping_for = $this->params->get('cat_id',array());
$content .= "<script>
jQuery(function(){
var shipping_for = ".($shipping_for ? json_encode($shipping_for) : '[]').";
var last_cat_id = '';
var shipping_section = jQuery('#dj-classifieds .dj-additem .shipping_rows.additem_djform');
if(shipping_for.length){
shipping_section.hide();
jQuery(document).on('djclassifieds.loaded', function(event, params){
if(params.ajax_data.task == 'getCategorySelect'){
last_cat_id = jQuery('#dj-classifieds .dj-additem [name=\"cats[]\"]').last().val().replace('p','');
if(shipping_for.indexOf(last_cat_id)!=-1){
shipping_section.show();
}else{
shipping_section.hide();
}
}
});
if(typeof MooTools !== 'undefined'){
var orig = {
onSuccess: Request.prototype.onSuccess,
onFailure: Request.prototype.onFailure
};
var changes = {
onSuccess: function(){
orig.onSuccess.apply(this, arguments);
if(this.options.data.task=='getCategorySelect'){
last_cat_id = jQuery('#dj-classifieds .dj-additem [name=\"cats[]\"]').last().val().replace('p','');
if(shipping_for.indexOf(last_cat_id)!=-1){
shipping_section.show();
}else{
shipping_section.hide();
}
}
}
};
[Request].invoke('implement', changes);
}
}
});
</script>";
return $content;
}
function onAfterDJClassifiedsSaveAdvert($row, $is_new)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
if(!$is_new){
$query = "DELETE FROM #__djcf_items_shipping WHERE item_id= ".$row->id;
$db->setQuery($query);
$db->execute();
}
$query = "SELECT * FROM #__djcf_shipping_methods ";
$db->setQuery($query);
$shippings = $db->loadObjectList();
if($shippings){
$sh_to_add = 0;
$query_i = "INSERT INTO #__djcf_items_shipping(`item_id`,`shipping_id`,`price`,`description`) VALUES ";
foreach($shippings as $shipping){
$add_sh = $app->input->getInt('shipping'.$shipping->id,0);
if($add_sh==1){
$price = $app->input->getFloat('shipping_price'.$shipping->id,'');
$desc = $app->input->getVar('shipping_desc'.$shipping->id , '');
$desc = $db->escape(strip_tags($desc));
$query_i .= "('".$row->id."','".$shipping->id."','".$price."','".$desc."'), ";
$sh_to_add++;
}
}
if($sh_to_add){
$query_i = substr($query_i, 0, -2).';';
$db->setQuery($query_i);
$db->execute();
}
}
}
function onAfterAdminDJClassifiedsSaveAdvert($row, $is_new)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
if(!$is_new){
$query = "DELETE FROM #__djcf_items_shipping WHERE item_id= ".$row->id;
$db->setQuery($query);
$db->execute();
}
$query = "SELECT * FROM #__djcf_shipping_methods ";
$db->setQuery($query);
$shippings = $db->loadObjectList();
if($shippings){
$sh_to_add = 0;
$query_i = "INSERT INTO #__djcf_items_shipping(`item_id`,`shipping_id`,`price`,`description`) VALUES ";
foreach($shippings as $shipping){
$add_sh = $app->input->getInt('shipping'.$shipping->id,0);
if($add_sh==1){
$price = $app->input->getFloat('shipping_price'.$shipping->id,'');
$desc = $app->input->getVar('shipping_desc'.$shipping->id , '');
$desc = $db->escape(strip_tags($desc));
$query_i .= "('".$row->id."','".$shipping->id."','".$price."','".$desc."'), ";
$sh_to_add++;
}
}
if($sh_to_add){
$query_i = substr($query_i, 0, -2).';';
$db->setQuery($query_i);
$db->execute();
}
}
}
function onBeforeDJClassifiedsDisplayContent(&$item, &$par, $view)
{
$content = null;
$db = JFactory::getDBO();
if($view=='item'){
$query = "SELECT s.*, sm.name FROM #__djcf_items_shipping s, #__djcf_shipping_methods sm "
."WHERE s.shipping_id=sm.id AND s.item_id=".$item->id." AND sm.published=1 AND sm.published=1 "
."ORDER by sm.ordering ";
$db->setQuery($query);
$shippings = $db->loadObjectList();
if(count($shippings)){
$content = '<div class="additional shipping">';
$content .= '<h2>'.JText::_('COM_DJCLASSIFIEDS_SHIPPING').'</h2>';
foreach($shippings as $shipping){
$content .= '<div class="row">';
$content .= '<span class="row_label">'.$shipping->name.': </span>';
$content .= '<span class="row_value">'.(floatval($shipping->price) ? DJClassifiedsTheme::priceFormat($shipping->price,$item->currency) : JText::_('PLG_DJCLASSIFIEDS_SHIPPING_DJCLASSIFIEDSSHIPPING_FREE')).'</span>';
$content .= '<div class="row_description">'.$shipping->description.'</div>';
$content .= '</div>';
}
$content .= '</div>';
}
}
return $content;
}
function onPrepareCheckouPaymentListTitle(&$item, &$par, $quantity)
{
$db = JFactory::getDBO();
$content = '';
$query = "SELECT s.*, sm.name FROM #__djcf_items_shipping s, #__djcf_shipping_methods sm "
."WHERE s.shipping_id=sm.id AND s.item_id=".$item->id." AND sm.published=1 AND sm.published=1 "
."ORDER by sm.ordering ";
$db->setQuery($query);
$shippings = $db->loadObjectList();
if($shippings){
$content = '<div class="ch_row ch_row_shipping">'.JText::_('COM_DJCLASSIFIEDS_SHIPPING').'</div>';
}
return $content;
}
function onPrepareCheckouPaymentList(&$item, &$par, $quantity)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$sid = $app->input->getInt('shipping_id');
$content = '';
$query = "SELECT s.*, sm.name FROM #__djcf_items_shipping s, #__djcf_shipping_methods sm "
."WHERE s.shipping_id=sm.id AND s.item_id=".$item->id." AND sm.published=1 AND sm.published=1 "
."ORDER by sm.ordering ";
$db->setQuery($query);
$shippings = $db->loadObjectList();
if(count($shippings)){
$content = '<div class="ch_row">';
//$content .= '<span class="ch_label">'.JText::_('COM_DJCLASSIFIEDS_SHIPPING').'</span>';
$content .= '<span class="ch_value">';
$content .= '<form action="'.JURI::base().'index.php?option=com_djclassifieds&view=checkout&Itemid='.$app->input->getVar('Itemid','').'" method="post">
<input type="hidden" name="quantity" value="'.$app->input->getVar('quantity',1).'">
<input type="hidden" name="buynow_option" value="'.$app->input->getVar('buynow_option','').'">
<input type="hidden" name="item_id" value="'.$app->input->getVar('item_id','').'">
<input type="hidden" name="cid" value="'.$app->input->getVar('cid','').'">
<input type="hidden" name="option" value="'.$app->input->getVar('option','').'">
<input type="hidden" name="view" value="'.$app->input->getVar('view','').'">
<input type="hidden" name="Itemid" value="'.$app->input->getVar('Itemid','').'">';
$content .= '<select name="shipping_id" onchange="this.form.submit()">';
foreach($shippings as $shipping){
$sel = '';
if($sid==$shipping->shipping_id){
$sel = ' SELECTED ';
}
$content .= '<option value="'.$shipping->shipping_id.'" '.$sel.'>'.$shipping->name.' - '.(floatval($shipping->price) ? DJClassifiedsTheme::priceFormat($shipping->price,$item->currency) : JText::_('PLG_DJCLASSIFIEDS_SHIPPING_DJCLASSIFIEDSSHIPPING_FREE')).'</option>';
}
$content .= '</select>';
$content .= '</form>';
$content .= '</span>';
$content .= '</div>';
}
return $content;
}
function onPrepareCheckouPaymentTotal(&$item, &$par, $quantity, &$total)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$sid = $app->input->getInt('shipping_id');
$sid_limit = '';
if($sid){
$sid_limit = ' AND s.shipping_id='.$sid.' ';
}
$query = "SELECT s.*, sm.name FROM #__djcf_items_shipping s, #__djcf_shipping_methods sm "
."WHERE s.shipping_id=sm.id AND s.item_id=".$item->id." AND sm.published=1 ".$sid_limit
."ORDER by sm.ordering LIMIT 1";
$db->setQuery($query);
$shipping = $db->loadObject();
if($shipping){
$total = $total + $shipping->price;
}
}
function onPrepareCheckouPaymentForm(&$item, &$par, $quantity)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$sid = $app->input->getInt('shipping_id');
if($sid){
return '<input type="hidden" value="'.$sid.'" id="shipping_id" name="shipping_id" />';
}else{
$query = "SELECT s.*, sm.name FROM #__djcf_items_shipping s, #__djcf_shipping_methods sm "
."WHERE s.shipping_id=sm.id AND s.item_id=".$item->id." AND sm.published=1 AND sm.published=1 "
."ORDER by sm.ordering LIMIT 1";
$db->setQuery($query);
$shipping = $db->loadObject();
if($shipping){
return '<input type="hidden" value="'.$shipping->shipping_id.'" id="shipping_id" name="shipping_id" />';
}
}
}
function onAfterCheckoutSave($item, $user, $order)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$sid = $app->input->getInt('shipping_id');
if($sid){
$query = "SELECT s.*, sm.name FROM #__djcf_items_shipping s, #__djcf_shipping_methods sm "
."WHERE s.shipping_id=sm.id AND s.item_id=".$item->id." AND sm.id=".$sid." AND sm.published=1 AND sm.published=1 "
."ORDER by sm.ordering LIMIT 1";
$db->setQuery($query);
$shipping = $db->loadObject();
$query = "INSERT INTO #__djcf_orders_shipping (`order_id`, `shipping_id`, `name`, `price`) "
." VALUES ( '".$order->id."','".$shipping->shipping_id."','".$shipping->name."', '".$shipping->price."')";
$db->setQuery($query);
$db->execute();
}
}
function onPreparePaymentList(&$item, &$par, $type, &$price_total, $currency, $order, $quantity)
{
$content = '';
if($type=='order'){
$db = JFactory::getDBO();
$query = "SELECT o.*, sm.name FROM #__djcf_orders_shipping o, #__djcf_shipping_methods sm "
."WHERE o.shipping_id=sm.id AND o.order_id=".$order->id." AND sm.published=1 LIMIT 1";
$db->setQuery($query);
$shipping = $db->loadObject();
if($shipping){
$price_total = $price_total + $shipping->price;
$content = '<div class="pd_row"><span>'.JText::_('COM_DJCLASSIFIEDS_SHIPPING').': '.$shipping->name.'</span>';
$content .= '<span class="price">'.(floatval($shipping->price) ? DJClassifiedsTheme::priceFormat($shipping->price,$item->currency) : JText::_('PLG_DJCLASSIFIEDS_SHIPPING_DJCLASSIFIEDSSHIPPING_FREE')).'</span>';
$content .= '</div>';
}
}
return $content;
}
function onAdminEditEmailTemplate($email_id)
{
if($email_id==16 || $email_id==17){
$content = "<h5>".JText::_('COM_DJCLASSIFIEDS_SHIPPING').'</h5>';
$content .= '<div class="control-group">
<div class="control-label">[[shipping_info]]</div>
<div class="controls">'.JText::_('COM_DJCLASSIFIEDS_SHIPPING_DETAILS').'</div>
</div>';
return $content;
}
}
function onAdminAfterParseEmailBody(&$message, $message_id, $item, $buyer)
{
$db = JFactory::getDBO();
if($message_id==16 || $message_id==17){
$shipping_info = '';
$query = "SELECT o.* FROM #__djcf_orders o "
."WHERE o.item_id = ".$item->id." AND o.user_id = ".$buyer->id." "
."ORDER by o.id DESC LIMIT 1";
$db->setQuery($query);
$order = $db->loadObject();
if($order){
$query = "SELECT * FROM #__djcf_orders_shipping WHERE order_id = ".$order->id." LIMIT 1";
$db->setQuery($query);
$shipping = $db->loadObject();
if($shipping){
$shipping_info = $shipping->name.' - '.(floatval($shipping->price) ? DJClassifiedsTheme::priceFormat($shipping->price,$item->currency) : JText::_('PLG_DJCLASSIFIEDS_SHIPPING_DJCLASSIFIEDSSHIPPING_FREE'));
}
}
$message = str_ireplace('[[shipping_info]]', $shipping_info, $message);
}
}
function onAdminPriceParseEmailBody(&$message, $message_id, $item, $buyer, &$price_total)
{
$db = JFactory::getDBO();
if($message_id==16 || $message_id==17){
$shipping_info = '';
$query = "SELECT o.* FROM #__djcf_orders o "
."WHERE o.item_id = ".$item->id." AND o.user_id = ".$buyer->id." "
."ORDER by o.id DESC LIMIT 1";
$db->setQuery($query);
$order = $db->loadObject();
if($order){
$query = "SELECT o.* FROM #__djcf_orders_shipping o "
."WHERE o.order_id = ".$order->id." "
." LIMIT 1";
$db->setQuery($query);
$shipping = $db->loadObject();
if($shipping){
$price_total = $price_total+$shipping->price;
}
}
}
}
function onAdminPrepareItemEdit(&$item, &$images, &$payment, &$custom_contact, &$bids, &$buynow)
{
$db = JFactory::getDBO();
if($buynow){
$ids = '';
foreach($buynow as $buy){
if($ids){$ids .= ',';}
$ids .= $buy->id;
}
$query = "SELECT o.* FROM #__djcf_orders_shipping o "
."WHERE o.order_id IN (".$ids.")";
$db->setQuery($query);
$shippings = $db->loadObjectList('order_id');
foreach($buynow as &$order){
if(isset($shippings[$order->id])){
$order->extra_info = '<strong>'.JText::_('COM_DJCLASSIFIEDS_SHIPPING').'</strong>: '.$shippings[$order->id]->name.' - '.DJClassifiedsTheme::priceFormat($shippings[$order->id]->price,$item->currency);
}
}
}
}
function onPrepareOrdersHistory(&$orders, &$par)
{
$db = JFactory::getDBO();
if($orders){
$ids = '';
foreach($orders as $order){
if($ids){$ids .= ',';}
$ids .= $order->id;
}
$query = "SELECT o.* FROM #__djcf_orders_shipping o "
."WHERE o.order_id IN (".$ids.")";
$db->setQuery($query);
$shippings = $db->loadObjectList('order_id');
foreach($orders as &$order){
if(isset($shippings[$order->id])){
if(isset($order->extra_info)){
$order->extra_info .= '<div class="djcf_prow_desc_row">
<span class="djcf_prow_desc_label" >'.JText::_("COM_DJCLASSIFIEDS_SHIPPING").':</span>
<span class="djcf_prow_desc_value" >'.$shippings[$order->id]->name.' - '.DJClassifiedsTheme::priceFormat($shippings[$order->id]->price,$order->currency).'</span>
<div class="clear_both"></div>
</div>';
}else{
$order->extra_info = '<div class="djcf_prow_desc_row">
<span class="djcf_prow_desc_label" >'.JText::_("COM_DJCLASSIFIEDS_SHIPPING").':</span>
<span class="djcf_prow_desc_value" >'.$shippings[$order->id]->name.' - '.DJClassifiedsTheme::priceFormat($shippings[$order->id]->price,$order->currency).'</span>
<div class="clear_both"></div>
</div>';
}
}
}
}
}
function onPrepareSalesHistory(&$orders, &$par)
{
$db = JFactory::getDBO();
if($orders){
$ids = '';
foreach($orders as $order){
if($ids){$ids .= ',';}
$ids .= $order->id;
}
$query = "SELECT o.* FROM #__djcf_orders_shipping o "
."WHERE o.order_id IN (".$ids.") ";
$db->setQuery($query);
$shippings = $db->loadObjectList('order_id');
foreach($orders as &$order){
if(isset($shippings[$order->id])){
if(isset($order->extra_info)){
$order->extra_info .= '<div class="djcf_prow_desc_row">
<span class="djcf_prow_desc_label" >'.JText::_("COM_DJCLASSIFIEDS_SHIPPING").':</span>
<span class="djcf_prow_desc_value" >'.$shippings[$order->id]->name.' - '.DJClassifiedsTheme::priceFormat($shippings[$order->id]->price,$order->currency).'</span>
<div class="clear_both"></div>
</div>';
}else{
$order->extra_info = '<div class="djcf_prow_desc_row">
<span class="djcf_prow_desc_label" >'.JText::_("COM_DJCLASSIFIEDS_SHIPPING").':</span>
<span class="djcf_prow_desc_value" >'.$shippings[$order->id]->name.' - '.DJClassifiedsTheme::priceFormat($shippings[$order->id]->price,$order->currency).'</span>
<div class="clear_both"></div>
</div>';
}
}
}
}
}
}