source: qesdi/joomla/trunk/custom_extensions/plg_simplecaddy17_qesdi_mod/simplecaddy.php @ 6066

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/qesdi/joomla/trunk/custom_extensions/plg_simplecaddy17_qesdi_mod/simplecaddy.php@6066
Revision 6066, 7.5 KB checked in by pnorton, 11 years ago (diff)

Modified the simplecaddy plugin so that i handles '&' caracters in the product code correctly.

Line 
1<?php
2/**
3* @package SimpleCaddy 1.7 for Joomla
4* @copyright Copyright (C) 2006-2009 Henk von Pickartz. All rights reserved.
5* GNU/GPL license
6*/
7
8// no direct access
9// Check to ensure this file is included in Joomla!
10defined( '_JEXEC' ) or die();
11$debug=0;
12
13jimport( 'joomla.plugin.plugin' );
14JPlugin::loadLanguage( 'plg_simplecaddy' );
15
16$mainframe->registerEvent( 'onPrepareContent', 'plgCaddy' );
17require_once (JPATH_ROOT.DS.'components'.DS.'com_caddy'.DS.'caddy.class.php');
18require_once (JPATH_ROOT.DS.'components'.DS.'com_caddy'.DS.'caddy.cart.class.php');
19
20
21function plgCaddy( &$row, &$plgParams, $page=0) {
22        $regex = '/{(simplecaddy)\s*(.*?)}/i';
23        $plugin =& JPluginHelper::getPlugin('content', 'simplecaddy');
24        // to get any params for the plugin
25        $pluginParams   = new JParameter( $plugin->params );
26
27        $parms=array();
28        $matches = array();
29        preg_match_all( $regex, $row->text, $matches, PREG_SET_ORDER );
30        foreach ($matches as $elm) {
31
32                $line=str_replace("&nbsp;", " ", $elm[2]);
33                $line=str_replace(" ", "&", $line);
34                $line=str_replace("&amp;", "&", $line);
35       
36                parse_str( $line, $parms );
37                $parms['code'] = substr($line,5);
38                $html=getSC($parms, $pluginParams, 1);
39
40                $row->text = preg_replace($regex, $html, $row->text, 1);
41        }
42        return true;
43}
44
45function getSC($params, $pluginParams, $debugmode=0) {
46        global $Itemid;
47//printf("<pre>%s</pre>", print_r($plgParams,1));
48        $prodcode=$params['code'];
49        $defaultqty=isset($params['defqty']) ? $params['defqty'] : 1;
50        $cfg=new sc_configuration();
51        $tsep=$cfg->get('thousand_sep');
52        $dsep=$cfg->get('decimal_sep');
53        $decs=$cfg->get('decimals');
54        $currency=$cfg->get('currency');
55        $curralign=$cfg->get('curralign');
56
57        $db     =& JFactory::getDBO();
58        $query="SELECT * FROM #__sc_products WHERE prodcode='$prodcode'";
59        $db->setQuery( $query );
60        $product = $db->loadObject();
61
62        if (!$product) {
63                $html  ="<div class='sccart'>";
64                $html .="<h3>The product code ($prodcode) is not found.</h3>";
65                $html .="</div>";
66                return $html;
67        }
68
69        if ($product->published=='0') {
70                $html  ="<div class='sccart'>";
71                $html .="<h3>The product (code : $prodcode) is not published.</h3>";
72                $html .="</div>";
73                return $html;
74        }
75
76        if (!$db->query()) {
77                echo "<script> alert('".$db->getErrorMsg()."'); window.history.go(-1); </script>\n";
78                exit();
79        }
80       
81        $prodpresentation="";
82        if ($pluginParams->get('showproductcodetext')) $prodpresentation .= "\n<span class='scproduct'>#PRODUCTCODETEXT#</span>";
83        if ($pluginParams->get('showproductcode')) $prodpresentation.="\n<span class='scprodcode'>#PRODUCTCODE#</span>";
84        if ($pluginParams->get('showtitle')) $prodpresentation.="\n<span class='scshorttext'>#SHORTTEXT#</span>";
85        if ($pluginParams->get('showunitpricetext')) $prodpresentation.="\n<span class='scunitprice'>#UNITPRICETEXT#</span>";
86        if ($pluginParams->get('showunitprice')) $prodpresentation.="\n<span class='scunitprice'>#UNITPRICE#</span>";
87        if ($pluginParams->get('showquantitytext')) $prodpresentation.="\n<span class='scunitprice'>#QUANTITYTEXT#</span>";
88        $prodpresentation.="\n<span class='scunitprice'>#QUANTITY#</span>";
89        $prodpresentation.="\n#CARTOPTIONS#";   
90        $prodpresentation.="\n<div class='atczone'>#ADDTOCARTBUTTON#</div>";
91
92        $html  ="\n<div class='sccart'>";
93        $html .="\n<form name='addtocart$product->id' action='index.php' method='post'>";
94
95        $amount = number_format($product->unitprice, $decs, $dsep, $tsep);
96        if ($curralign==1) {
97                $amount = $currency ."&nbsp;". $amount;
98        }
99        else
100        {
101                $amount = $amount ."&nbsp;". $currency;
102        }
103
104        $html .= $prodpresentation;
105
106
107        $optionhtml ="<div class='cartoptions'>";
108        if ($pluginParams->get('showcartoptionstitle')) $optionhtml.="\n<div class='cartoptions'>#CARTOPTIONSTITLE#</div>";
109//add the options line here
110        $hasoptions=0;
111        if (trim($product->options)) {
112                $hasoptions=1;
113                $options=explode("\n", trim($product->options));
114                switch ($product->showas) {
115                        case "1": // radio buttons
116                                foreach ($options as $key=>$po) {
117                                        list($shorttext, $formula, $caption, $defselect )=explode(":", $po);
118                                        $id=md5($product->prodcode.$po);
119                                        $checked="";
120                                        if (trim($defselect) == "default") $checked=" checked='checked' ";
121                                        $optionhtml .= "<input type='radio' name='edtoption' value='$id:$po' $checked />".stripslashes($shorttext)." | \n";
122                                }
123                                break;
124                        case "4": // vertical radio buttons
125                                foreach ($options as $key=>$po) {
126                                        list($shorttext, $formula, $caption, $defselect )=explode(":", $po);
127                                        $id=md5($product->prodcode.$po);
128                                        $checked="";
129                                        if ($defselect=="default") $checked=" checked='checked' ";
130                                        $optionhtml .= "\n<br /><input type='radio' name='edtoption' value='$id:$po' $checked />".stripslashes($shorttext);
131                                        $optionhtml.=" $caption";
132                                }
133                                break;
134                        case "2": // dropdown list
135                                $optionhtml.="<select name='edtoption'>\n";
136                                foreach ($options as $key=>$po) {
137                                        list($shorttext, $formula, $caption, $defselect )=explode(":", $po);
138                                        $id=md5($product->prodcode.$po);
139                                        $checked="";
140                                        if ($defselect=="default") $checked=" selected='selected' ";
141                                        $optionhtml .= "<option value='$id:$po' $checked>".stripslashes($shorttext)." $caption</option>\n";
142                                }
143                                $optionhtml .= "</select>\n";
144                                break;
145                        case "3": // standard list
146                                $optionhtml.="<select name='edtoption' size='10'>\n";
147                                foreach ($options as $key=>$po) {
148                                        list($shorttext, $formula, $caption, $defselect )=explode(":", $po);
149                                        $id=md5($product->prodcode.$po);
150                                        $checked="";
151                                        if ($defselect=="default") $checked=" selected='selected' ";
152                                        $optionhtml .= "<option value='$id:$po' $checked>".stripslashes($shorttext)." $caption</option>\n";
153                                }
154                                $optionhtml .= "</select>\n";
155                                break;
156                        default:
157                                $optionhtml .= "";
158                }
159        }
160        else
161        { // product without options - generate id from productcode
162                $id=md5($product->prodcode);
163                $optionhtml .= "\n<input type='hidden' value='$id' name='edtoption' />";
164        }
165        $optionhtml .="</div>";
166        $atcbtn ="\n<input type='submit' name='submit' value='".JText::_('SC_ADD_TO_CART')."' class='scbutton' />";
167        $qtyfield="\n<input type='". ($pluginParams->get('showquantity')?'text':'hidden') ."' name='edtqty' value='$defaultqty' size='1' />";
168        $html .="\n<input type='hidden' name='edtprodcode' value='$product->prodcode' />";
169        $html .="\n<input type='hidden' name='edtshorttext' value='$product->shorttext' />";
170        $html .="\n<input type='hidden' name='edtunitprice' value='$product->unitprice' />";
171        $html .="\n<input type='hidden' name='option' value='com_caddy' />";
172        $html .="\n<input type='hidden' name='action' value='addtocart' />";
173        $html .="\n<input type='hidden' name='Itemid' value='$Itemid' />";
174        $html .="\n</form>";
175        $html .="</div>";
176
177//now replace any variables
178        $html=str_replace("#PRODUCTCODETEXT#", JText::_('SC_PRODUCT'), $html);
179        $html=str_replace("#PRODUCTCODE#", $product->prodcode, $html);
180        $html=str_replace("#SHORTTEXT#", $product->shorttext, $html);
181        $html=str_replace("#UNITPRICETEXT#", JText::_('SC_PRICE_PER_UNIT'), $html);
182        $html=str_replace("#UNITPRICE#", $amount, $html);
183        $html=str_replace("#QUANTITY#", $qtyfield, $html);
184        $html=str_replace("#QUANTITYTEXT#", JText::_('SC_QUANTITY'), $html);
185                $html=str_replace("#ADDTOCARTBUTTON#", $atcbtn, $html);
186        $html=str_replace("#CARTOPTIONS#", $optionhtml, $html);
187        if (trim($product->options)) {
188                $html=str_replace("#CARTOPTIONSTITLE#", stripslashes($product->optionstitle), $html);
189        }
190        else
191        {
192                $html=str_replace("#CARTOPTIONSTITLE#", "", $html);
193        }
194        return $html;
195}
196
197?>
Note: See TracBrowser for help on using the repository browser.