Adding attachments to order status email messages

  • Posts: 6
  • Thank you received: 0
12 years 5 months ago #83141

We would like to add an attachment to one of the order status email messages.

I would go to System -> Emails and then click the message I want to change. When I browse for the file and save the changes everything seems to be working just fine. Then when I open the message again I can see the attachment listed. The problem is when I save my changes to the contents of the message for a second time. The attachment will then no longer be shown. I've recorded a short video to demonstrate:
dl.dropbox.com/u/11952877/Web%20Images/h..._com/attachments.zip

Also, deleting an attachment with the recycle bin icon will not delete the file from the uploads folder on the web server.

Is there anything we can do to fix these two issues?


From the PHP error log:

[21-Dec-2012 13:35:33 Europe/Amsterdam] PHP Notice:  Undefined property: stdClass::$mail in /home/bamict.micpoint.nl/web/administrator/components/com_hikashop/views/email/tmpl/form_param.php on line 48
[21-Dec-2012 13:36:14 Europe/Amsterdam] PHP Notice:  Undefined offset: 1 in /home/bamict.micpoint.nl/web/administrator/components/com_hikashop/controllers/toggle.php on line 142
[21-Dec-2012 13:36:14 Europe/Amsterdam] PHP Warning:  include_once(/home/bamict.micpoint.nl/web/administrator/components/com_hikashop/controllers/mail.php): failed to open stream: No such file or directory in /home/bamict.micpoint.nl/web/administrator/components/com_hikashop/helpers/helper.php on line 852
[21-Dec-2012 13:36:14 Europe/Amsterdam] PHP Warning:  include_once(): Failed opening '/home/bamict.micpoint.nl/web/administrator/components/com_hikashop/controllers/mail.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /home/bamict.micpoint.nl/web/administrator/components/com_hikashop/helpers/helper.php on line 852
[21-Dec-2012 13:38:07 Europe/Amsterdam] PHP Notice:  Undefined property: stdClass::$mail in /home/bamict.micpoint.nl/web/administrator/components/com_hikashop/views/email/tmpl/form_param.php on line 48

Please Log in or Create an account to join the conversation.

  • Posts: 12953
  • Thank you received: 1778
12 years 5 months ago #83355

Hi,

Can you show me what did you changed in your mail message ?

Please Log in or Create an account to join the conversation.

  • Posts: 6
  • Thank you received: 0
12 years 5 months ago #83427

Full contents of the message follow. I've changed two parts of the script. Starting at lines 168 and 300 surrounded by double slash comments (//). This issue with attachments was already present before we made any changes.

<?php
/**
 * @package  HikaShop for Joomla!
 * @version  2.0.0
 * @author  hikashop.com
 * @copyright  (C) 2010-2012 HIKARI SOFTWARE. All rights reserved.
 * @license  GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><div style="background-color: #ffffff; font-family: Verdana, Arial, Helvetica, sans-serif;font-size:12px; color: #000000; width: 100%;">
  <table style="margin: auto;font-family: Verdana, Arial, Helvetica, sans-serif;font-size:12px;" border="0" cellspacing="0" cellpadding="0">
    <tbody>
      <tr>
        <td height="10">
        </td>
      </tr>
      <tr>
        <td>
          <?php echo JText::sprintf('HI_CUSTOMER',@$data->customer->name);?>
          <br/>
          <br/>
          <?php
          $colspan = 4;
          $url = $data->order_number;
          $config =& hikashop_config();
          if($config->get('simplified_registration',0)!=2){
            $url = '<a href="'.$data->order_url.'">'. $url.'</a>';
          }
          echo JText::sprintf('ORDER_CREATION_SUCCESS_ON_WEBSITE_AT_DATE',$url,HIKASHOP_LIVE, hikashop_getDate(time(),'%d %B %Y'), hikashop_getDate(time(),'%H:%M'));?>
        </td>
      </tr>
      <tr>
        <td height="10">
        </td>
      </tr>
      <tr>
        <td>
          <h1 style="background-color:#DDDDDD;font-size:14px;width:100%;padding:5px;"><?php echo JText::_('SUMMARY_OF_YOUR_ORDER');?></h1>
          <br/>
          <table width="100%" style="font-family: Verdana, Arial, Helvetica, sans-serif;font-size:12px;">
            <tr>
              <td style="font-weight:bold;"><?php
                echo JText::_('CART_PRODUCT_NAME');
              ?></td>
              <?php if ($config->get('show_code')) { $colspan++; ?>
                <td style="font-weight:bold;"><?php echo JText::_('CART_PRODUCT_CODE'); ?></td>
              <?php } ?>
              <td style="font-weight: bold;"><?php
                echo JText::_('CART_PRODUCT_UNIT_PRICE');
              ?></td>
              <td style="font-weight: bold;"><?php
                echo JText::_('CART_PRODUCT_QUANTITY');
              ?></td>
              <td style="font-weight: bold; text-align: right;"><?php echo JText::_('HIKASHOP_TOTAL'); ?>
              </td>
            </tr>
            <?php
              if(hikashop_level(2)){
                $fieldsClass = hikashop_get('class.field');
                $null = null;
                $itemFields = $fieldsClass->getFields('frontcomp',$null,'item');
              }
              $group = $config->get('group_options',0);
              foreach($data->cart->products as $item){
                if($group && $item->cart_product_option_parent_id) continue;
                ?>
                <tr>
                  <td>
                    <p>
                      <?php echo $item->order_product_name;
                      if($group){
                        $display_item_price=false;
                        foreach($data->cart->products as $j => $optionElement){
                          if($optionElement->cart_product_option_parent_id != $item->cart_product_id) continue;
                          if($optionElement->order_product_price>0){
                            $display_item_price = true;
                          }

                        }
                        if($display_item_price){
                          if($config->get('price_with_tax')){
                            echo ' '.$currencyHelper->format($item->order_product_price+$item->order_product_tax,$data->order_currency_id);
                          }else{
                            echo ' '.$currencyHelper->format($item->order_product_price,$data->order_currency_id);
                          }
                        }
                      }
                      ?>
                    </p><?php
                    if(!empty($itemFields)){
                      foreach($itemFields as $field){
                        $namekey = $field->field_namekey;
                        if(empty($item->$namekey)) continue;
                        echo '<p>'.$fieldsClass->getFieldName($field).': '.$fieldsClass->show($field,$item->$namekey).'</p>';
                      }
                    }
                    $optionsPrices = new stdClass();
                    $optionsPrices->order_product_price=0;
                    $optionsPrices->order_product_tax=0;
                    $optionsPrices->order_product_total_price=0;
                    $optionsPrices->order_product_total_price_no_vat=0;
                    if($group){
                      foreach($data->cart->products as $j => $optionElement){
                        if($optionElement->cart_product_option_parent_id == 0 || $optionElement->cart_product_option_parent_id != $item->cart_product_id) continue;

                        $optionsPrices->order_product_price +=$optionElement->order_product_price;
                        $optionsPrices->order_product_tax +=$optionElement->order_product_tax;
                        $optionsPrices->order_product_total_price+=$optionElement->order_product_total_price;
                        $optionsPrices->order_product_total_price_no_vat+=$optionElement->order_product_total_price_no_vat;

                         ?>
                          <p class="hikashop_order_option_name">
                            <?php
                              echo $optionElement->order_product_name;
                              if($optionElement->order_product_price>0){
                                if($config->get('price_with_tax')){
                                  echo ' ( + '.$currencyHelper->format($optionElement->order_product_price+$optionElement->order_product_tax,$data->order_currency_id).' )';
                                }else{
                                  echo ' ( + '.$currencyHelper->format($optionElement->order_product_price,$data->order_currency_id).' )';
                                }
                              }
                            ?>
                          </p>
                      <?php
                      }
                    }
                    $statusDownload = explode(',',$config->get('order_status_for_download','confirmed,shipped'));
                    if(in_array($data->order_status,$statusDownload)){
                      if(!empty($item->files)){
                        global $Itemid;
                        $url_itemid = '';
                        if(!empty($Itemid)){
                          $url_itemid='&Itemid='.$Itemid;
                        }
                        echo '<p>';
                        foreach($item->files as $file){
                          $fileName = empty($file->file_name) ? $file->file_path : $file->file_name;

                          echo '<a href="'.hikashop_frontendLink('index.php?option=com_hikashop&ctrl=order&task=download&file_id='.$file->file_id.'&order_id='.$data->order_id.$url_itemid).'">'.$fileName.'</a><br/>';
                        }
                        echo '</p>';
                      }
                    } ?>
                  </td>
                  <?php if ($config->get('show_code')) { ?>
                    <td><p class="hikashop_product_code_mail"><?php echo $item->order_product_code; ?></p></td>
                  <?php } ?>
                  <td>
                  <?php
                    if($config->get('price_with_tax')){
                      echo $currencyHelper->format($item->order_product_price+$optionsPrices->order_product_price+$item->order_product_tax+$optionsPrices->order_product_tax,$data->order_currency_id);
                    }else{
                      echo $currencyHelper->format($item->order_product_price+$optionsPrices->order_product_price,$data->order_currency_id);
                    } ?>
                  </td>
                  <td><?php echo $item->order_product_quantity; ?></td>
                  <td style="text-align: right">
                    <?php
                    if($config->get('price_with_tax')){
                      echo $currencyHelper->format($item->order_product_total_price+$optionsPrices->order_product_total_price,$data->order_currency_id);
                    }else{
                      echo $currencyHelper->format($item->order_product_total_price_no_vat+$optionsPrices->order_product_total_price_no_vat,$data->order_currency_id);
                    } ?>
                  </td>
                </tr>
                <?php
              }
              // Start custom sub total
              echo '<tr><td colspan="'.$colspan.'" style="text-align:right">'.JText::_('SUBTOTAL').': ';
              if($config->get('price_with_tax')){
                echo $currencyHelper->format($data->cart->total->prices[0]->price_value_with_tax,$data->order_currency_id);
              }else{
                echo $currencyHelper->format($data->cart->total->prices[0]->price_value,$data->order_currency_id);
              }
              echo '</td></tr>';
              // End sub total
              if(bccomp($data->order_discount_price,0,5)){
                echo '<tr><td colspan="'.$colspan.'" style="text-align:right">'.JText::_('HIKASHOP_COUPON').': ';
                if($config->get('price_with_tax')){
                  echo $currencyHelper->format($data->order_discount_price*-1,$data->order_currency_id);
                }else{
                  echo $currencyHelper->format(($data->order_discount_price-@$data->order_discount_tax)*-1,$data->order_currency_id);
                }
                echo '</td></tr>';
              }
              if(bccomp($data->order_shipping_price,0,5)){
                echo '<tr><td colspan="'.$colspan.'" style="text-align:right">'.JText::_('HIKASHOP_SHIPPING_METHOD').': ';
                if($config->get('price_with_tax')){
                  echo $currencyHelper->format($data->order_shipping_price,$data->order_currency_id);
                }else{
                  echo $currencyHelper->format($data->order_shipping_price-@$data->order_shipping_tax,$data->order_currency_id);
                }
                echo '</td></tr>';
              }
              if(bccomp($data->order_payment_price,0,5)){
                echo '<tr><td colspan="'.$colspan.'" style="text-align:right">'.JText::_('HIKASHOP_PAYMENT_METHOD').': '.$currencyHelper->format($data->order_payment_price,$data->order_currency_id).'</td></tr>';
              }
              if(!empty($data->cart->additional)) {
                $exclude_additionnal = explode(',', $config->get('order_additional_hide', ''));
                foreach($data->cart->additional as $additional) {
                  if(in_array($additional->name, $exclude_additionnal)) continue;
                  echo '<tr><td colspan="'.$colspan.'" style="text-align:right">'. JText::_($additional->name).': ';
                  if(!empty($additional->price_value) || empty($additional->value)) {
                    if($config->get('price_with_tax')){
                      echo $currencyHelper->format($additional->price_value_with_tax, $data->order_currency_id);
                    }else{
                      echo $currencyHelper->format($additional->price_value, $data->order_currency_id);
                    }
                  } else {
                    echo $additional->value;
                  }
                  echo '</td></tr>';
                }
              }
              if($data->cart->full_total->prices[0]->price_value!=$data->cart->full_total->prices[0]->price_value_with_tax){
                if($config->get('detailed_tax_display') && !empty($data->order_tax_info)){
                  foreach($data->order_tax_info as $tax){
                    echo '<tr><td colspan="'.$colspan.'" style="text-align:right">'.$tax->tax_namekey. ': '.$currencyHelper->format($tax->tax_amount,$data->order_currency_id).'</td></tr>';
                  }
                }else{
                  echo '<tr><td colspan="'.$colspan.'" style="text-align:right">'.JText::sprintf('TOTAL_WITHOUT_VAT',$currencyHelper->format($data->cart->full_total->prices[0]->price_value,$data->order_currency_id)).'</td></tr>';
                }
                $text=JText::sprintf('TOTAL_WITH_VAT',$currencyHelper->format($data->cart->full_total->prices[0]->price_value_with_tax,$data->order_currency_id));
              }else{
                $text=JText::_('HIKASHOP_FINAL_TOTAL'). ': '.$currencyHelper->format($data->cart->full_total->prices[0]->price_value_with_tax,$data->order_currency_id);
              }
              echo '<tr><td colspan="'.$colspan.'" style="text-align:right;font-weight:bold;">'.$text.'</td></tr>';

              ?>
          </table>
        </td>
      </tr>
      <tr>
        <td height="10">
        </td>
      </tr>
      <tr>
        <td>
          <table width="100%" style="border: 1px solid #DDDDDD;font-family: Verdana, Arial, Helvetica, sans-serif;font-size:12px;">
          <?php
          $params = null;
          $js = '';
          $fieldsClass = hikashop_get('class.field');
          $app =& JFactory::getApplication();
          if($app->isAdmin()){
            $view = 'order';
          }else{
            $view = 'address';
          }
          $template = trim(hikashop_getLayout($view,'address_template',$params,$js));
          if(!empty($data->cart->billing_address)){
            $billing = $template;
            foreach($data->order_addresses_fields as $field){
              $fieldname = $field->field_namekey;
              $address =& $data->order_addresses[$data->cart->billing_address->address_id];
              $billing=str_replace('{'.$fieldname.'}',$fieldsClass->show($field,$address->$fieldname),$billing);
            }

            echo '<tr><td style="font-weight:bold;background-color:#DDDDDD">'.JText::_('HIKASHOP_BILLING_ADDRESS').'</td></tr><tr><td>';
            echo str_replace(array("\r\n","\r","\n"),'<br/>',preg_replace('#{(?:(?!}).)*}#i','',$billing)).'<br/></td></tr>';
          }
          if(!empty($data->order_shipping_method)) {
            $currentShipping = hikashop_import('hikashopshipping',$data->order_shipping_method);
            if(method_exists($currentShipping, 'getShippingAddress')) {
              $override = $currentShipping->getShippingAddress($data->order_shipping_id);
              if($override !== false) {
                $data->override_shipping_address = $override;
              }
            }
          }
          if(!empty($data->override_shipping_address) || (!empty($data->cart->has_shipping) && !empty($data->cart->shipping_address))) echo '<tr><td style="font-weight:bold;background-color:#DDDDDD">'.JText::_('HIKASHOP_SHIPPING_ADDRESS').'</td></tr><tr><td>';
          if(!empty($data->override_shipping_address)) {
            echo $data->override_shipping_address.'<br/></td></tr>';
          } else if(!empty($data->cart->has_shipping) && !empty($data->cart->shipping_address)){
            $shipping = $template;
            foreach($data->order_addresses_fields as $field){
              $fieldname = $field->field_namekey;
              $address =& $data->order_addresses[$data->cart->shipping_address->address_id];
              $shipping=str_replace('{'.$fieldname.'}',$fieldsClass->show($field,$address->$fieldname),$shipping);
            }
            echo str_replace(array("\r\n","\r","\n"),'<br/>',preg_replace('#{(?:(?!}).)*}#i','',$shipping)).'<br/></td></tr>';
          }?>
          </table>
        </td>
      </tr>
      <tr>
        <td><?php
        $fields = $fieldsClass->getFields('frontcomp',$data,'order','');
        foreach($fields as $fieldName => $oneExtraField) {
          if(empty($data->$fieldName)) continue;
          echo "<br/>".$fieldsClass->trans($oneExtraField->field_realname).': '.$fieldsClass->show($oneExtraField,$data->$fieldName);
        } ?></td>
      </tr>
      <tr>
        <td height="10">
        </td>
      </tr>
      <tr>
        <td><?php
          // Start payment method
          $class = hikashop_get('class.payment');
          $payment = $class->get($data->order_payment_id);
          echo JText::_('HIKASHOP_CHECKOUT_PAYMENT').': '.$payment->payment_name;
          // End payment method
        ?>.</td>
      </tr>
      <tr>
        <td height="10">
        </td>
      </tr>
<?php
  JPluginHelper::importPlugin('hikashop');
  $dispatcher = JDispatcher::getInstance();
  $dispatcher->trigger('onAfterOrderProductsListingDisplay', array(&$data->cart, 'email_notification_html'));
?>
      <tr>
        <td>
          <?php
          if(!$app->isAdmin()){
            if($data->cart->full_total->prices[0]->price_value_with_tax>0) echo JText::_('ORDER_VALID_AFTER_PAYMENT');

            $config =& hikashop_config();
            if($data->cart->full_total->prices[0]->price_value_with_tax>0 && hikashop_level(1) && $config->get('allow_payment_button',1)){
              global $Itemid;
              $url = '';
              if(!empty($Itemid)){
                $url='&Itemid='.$Itemid;
              }
              $pay_url = hikashop_frontendLink('index.php?option=com_hikashop&ctrl=order&task=pay&order_id='.$data->order_id.$url);
              if($config->get('force_ssl',0) && strpos('https://',$pay_url) === false) {
                $pay_url = str_replace('http://','https://',$pay_url);
              } ?>
              <a href="$pay_url"><?php JText::_('PAY_NOW'); ?></a>
            <?php } ?>
            <br/>
            <br/>
            <?php echo JText::sprintf('THANK_YOU_FOR_YOUR_ORDER',HIKASHOP_LIVE);
          }?>
          <br/>
          <br/>
          <?php echo JText::sprintf('BEST_REGARDS_CUSTOMER',$mail->from_name);?>
        </td>
      </tr>
      <tr>
        <td height="10">
        </td>
      </tr>
      <tr>
        <td height="10">
        </td>
      </tr>
    </tbody>
  </table>
</div>

Last edit: 12 years 5 months ago by DenisLeemkuil.

Please Log in or Create an account to join the conversation.

  • Posts: 12953
  • Thank you received: 1778
12 years 5 months ago #83526

Hi,

I would recommend you to :
1.
Turn on the debug mode and the error reporting options of the joomla configuration.

2.
- Go to "Hikashop->Orders"
- Select a random order
- Change the order status to "confirmed" (a popup will display)
- Change the "Notify customer" option to YES without pressing "OK"

Then you'll have the result of your mail and some error reports that will help you to solve your problem.

Please Log in or Create an account to join the conversation.

Time to create page: 0.060 seconds
Powered by Kunena Forum