source: qesdi/joomla/trunk/components/com_caddy/caddy.php @ 5802

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/qesdi/joomla/trunk/components/com_caddy/caddy.php@5802
Revision 5802, 7.1 KB checked in by pnorton, 10 years ago (diff)

Installed the simple caddy, custom properties and form 2 content lite extensions. I've modified the simple caddy extension so that it is more suitable for qesdi use.

Line 
1<?php
2/**
3* @package SimpleCaddy for Joomla 1.5.x
4* @copyright Copyright (C) 2006-2009 Henk von Pickartz. All rights reserved.
5* @license GNU/GPL
6* @version 1.7
7*/
8
9// no direct access
10defined( '_JEXEC' ) or die( 'Restricted access' );
11JPlugin::loadLanguage( 'com_simplecaddy' );
12
13//define("debug", 1);
14$debug=0;
15
16require_once( $mainframe->getPath( 'front_html' ) );
17require_once( $mainframe->getPath( 'class' ) );
18
19$user = JFactory::getUser();
20
21$Itemid = intval( JRequest::getVar( 'Itemid', 0) );
22$action=JRequest::getCmd( 'action', '');
23
24switch ($action) {
25        case "paysuccess":
26        case "payfail":
27                printf("<pre>%s</pre>", print_r($_REQUEST, 1));
28                break;
29        case "addtocart":
30                $cartProd=new CartProduct();
31                $acpoption=JRequest::getVar( 'edtoption', "");
32                $cpoption=explode(":", $acpoption);
33                @$cartProd->option=$cpoption[1];
34                @$cartProd->formula=$cpoption[2];
35                @$cartProd->caption=$cpoption[3];
36                $cartProd->id=$cpoption[0];
37
38jimport('joomla.error.log');
39$log = &JLog::getInstance();
40
41$log->addEntry(array('level' => 'Debug', 'comment' => 'JRequest::getCmd( \'edtprodcode\', \'cp error\'); = ' . JRequest::getCmd( 'edtprodcode', 'cp error')));
42$log->addEntry(array('level' => 'Debug', 'comment' => 'JRequest::getVar( \'edtprodcode\', \'cp error\') = ' . JRequest::getVar( 'edtprodcode', 'cp error')));
43
44                //$cartProd->prodcode=JRequest::getCmd( 'edtprodcode', 'cp error');
45                // we need dont want the non alpha-numeric characters to be stripped
46                $cartProd->prodcode=JRequest::getVar( 'edtprodcode', 'cp error');
47                $cartProd->prodname=JRequest::getVar( 'edtshorttext', 'txt error');
48
49$log->addEntry(array('level' => 'Debug', 'comment' => '\$cartProd->prodcode = ' . $cartProd->prodcode));
50
51                $cartProd->unitprice=JRequest::getFloat( 'edtunitprice' );
52                $cartProd->quantity=JRequest::getVar( 'edtqty' );
53                $cartProd->finalprice= matheval("$cartProd->unitprice $cartProd->formula");
54
55                $cart2=new cart2();
56                $cart2->addCartProduct($cartProd);
57
58                $cfg = new sc_configuration();
59                $usestdprod=$cfg->get("usestdproduct");
60                if ($usestdprod==1) {
61                        AddStandard();
62                }
63                $mainframe->redirect("index.php?option=com_caddy&action=showcart&Itemid=$Itemid");
64                break;
65        case "changeqty":
66                $cartProd=new CartProduct();
67                $cartProd->id=JRequest::getVar( 'id');
68                $cartProd->quantity=JRequest::getVar( 'edtqty' );
69                $cartProd->finalprice= matheval("$cartProd->unitprice $cartProd->formula");
70                $cart2=new cart2();
71                $cart2->setCartProductQty($cartProd);
72
73                $cfg = new sc_configuration();
74                $usestdprod=$cfg->get("usestdproduct");
75                if ($usestdprod==1) {
76                        AddStandard();
77                }
78                $mainframe->redirect("index.php?option=com_caddy&action=showcart&Itemid=$Itemid");
79                break;
80        case "emptycart":
81                $cart2=new cart2();
82                $cart2->destroyCart();
83                $mainframe->redirect("index.php?option=com_caddy&action=showcart&Itemid=$Itemid");
84                break;
85        case "showcart":
86                $cart2=new cart2();
87                $cart=$cart2->readCart();
88                display::showCart($cart);
89                break;
90        case "showcartxml":
91                $cart2=new cart2();
92                $cart=$cart2->dumpCartXML();
93                break;
94        case "checkout":
95                $cart2=new cart2();
96                $cart=$cart2->readCart();
97                $cfg=new sc_configuration();
98                $pretextid=$cfg->get("pretextid");
99                $posttextid=$cfg->get("posttextid");
100                $db     =& JFactory::getDBO();
101                $query="select * from #__content where id='$pretextid'";
102                $db->setQuery($query);
103                $pretext=$db->loadObject();
104                $query="select * from #__content where id='$posttextid'";
105                $db->setQuery($query);
106                $posttext=$db->loadObject();
107                display::showCheckout($cart, $pretext, $posttext);
108                break;
109        case "confirm":
110                $fields=new fields();
111                $fieldlist=$fields->getPublishedFields();
112                display::showMyDetails($fieldlist);
113                break;
114        case "allconfirm":
115                $errors=checkerrors();
116                $cfg=new sc_configuration();
117                if ($errors==0) {
118                        $cart=new cart2();
119                        $mycart=$cart->readCart();
120                        $usePayPal=$cfg->get("usepaypal");
121                        if ($usePayPal==1) {
122                                $gateway=$cfg->get("pgclassname");
123                                if ($gateway!="") { // check the gateway filename
124                                        if (!class_exists($gateway)) {
125                                                $pgpath=dirname($mainframe->getPath( 'class' ));
126                                                $pgfile=$pgpath.DS.$gateway.".class.php"; // filename should look like "scpaypal.class.php"
127                                                if (!file_exists($pgfile)) {
128                                                        echo "The classname you provided in the configuration does not correspond to a known file ($pgfile)";
129                                                        break;
130                                                }
131                                                require_once($pgfile);
132                                        }
133                                        $checkout=new $gateway;
134                                        $checkout->checkout($mycart);
135                                }
136
137                        }
138                        $order=new orders();
139                        $orderid = $order->store_new_order($mycart);
140                        if ($cfg->get("email_customer")== 1 ) {
141                                $mail=new email();
142                                $result=$mail->mailorder($orderid);
143                        }
144                        display::ThanksForOrder();
145                        $cart=new cart2();
146                        $cart->destroyCart();
147                }
148                else // some required info is missing or incorrect
149                {
150                        $fields=new fields();
151                        $fieldlist=$fields->getPublishedFields();
152                        $fielddata=$_REQUEST;
153                        display::showMyDetails($fieldlist, JText::_('SC_REQUIRED_MISSING'), $fielddata);
154                }
155                break;
156        default:
157                echo "";
158}
159
160function AddStandard () {
161        $cfg=new sc_configuration();
162        $stdprod=$cfg->get("cart_fee_product");
163        if ($stdprod != "") {
164                $tmp=new product();
165                $sp=$tmp->getproductByProdCode($stdprod);
166                $cartProd=new CartProduct();
167                $cartProd->option="";
168                $cartProd->prodcode=$stdprod;
169                $cartProd->prodname=$sp->shorttext;
170                $cartProd->unitprice=$sp->unitprice;
171                $cartProd->quantity=1;
172                $cartProd->finalprice=$sp->unitprice;
173                $cartProd->id=uniqid("S");
174                $cart2=new cart2();
175                $cart2->removecartProduct($cartProd);
176                $c=$cart2->readcart();
177                if (count($c)>0) {
178                        $cart2->addCartProduct($cartProd);
179                }
180        }
181}
182
183function checkerrors () {
184        $errors=0;
185        // this is a very simple check, you can add any kind of checking method to refine and enhance your security
186        // first strat by getting the published fields
187        $fields=new fields();
188        $fieldlist=$fields->getPublishedFields();
189        // now check if they are required, and if so, check if they are filled
190        foreach ($fieldlist as $field) {
191                if ($field->required == 1 ){ // required field
192                        // now get the required function
193                        if (function_exists($field->checkfunction)) { //check if you defined this function
194                                $errors = $errors + call_user_func($field->checkfunction, $field);
195                        }
196                }
197        }
198        return $errors;
199}
200
201function checkfilled($field) {
202        if (trim(JRequest::getVar($field->name))=="") { // trim the field and compare
203                echo "<div class='errormsg'>".JText::_('SC_REQUIRED_FIELD')." <b>$field->caption</b> ".JText::_('SC_IS_EMPTY')."</div>";
204                return 1; // add one to the errors total
205        }
206        else
207        {
208                return 0; // adds nothing to the errors total
209        }
210}
211
212function matheval($equation){
213        $equation = preg_replace("/[^0-9+\-.*\/()%]/","",$equation); // empty from illegal chars
214        $equation = preg_replace("/([+-])([0-9]+)(%)/","*(1\$1.\$2)",$equation);
215        // you could use str_replace on this next line
216        // if you really, really want to fine-tune this equation
217        $equation = preg_replace("/([0-9]+)(%)/",".\$1",$equation);
218        if ( $equation == "" ) {
219                $return = 0;
220        } else {
221                eval("\$return=" . $equation . ";");
222        }
223        return $return;
224}
225
226?>
Note: See TracBrowser for help on using the repository browser.