24 'class'=>
'CCaptchaAction',
25 'fixedVerifyCode' => YII_DEBUG ?
'polomo' : null
34 public function actionIndex(){
36 $itemsCount = count(Order::getOrder()->items);
39 $criticalReferrer = Yii::app()->user->getState(
'criticalReferrer');
40 if(isset($criticalReferrer)){
41 $this->redirect($criticalReferrer);
44 throw new CHttpException(403);
47 $step = isset($_REQUEST[
'step']) ? $_REQUEST[
'step'] : 1;
54 $order_id = Order::getOrder(
true);
55 $items =
Item::model()->findAll(
'order_id=:order_id',array(
':order_id'=>$order_id));
57 if(isset($_POST[
'Item']))
60 foreach($items as $i=>$item)
62 if(isset($_POST[
'Item'][$i]) && is_numeric($_POST[
'Item'][$i][
'quantity']) && $_POST[
'Item'][$i][
'quantity'] > 0)
63 $item->quantity = $_POST[
'Item'][$i][
'quantity'];
64 $valid = $item->validate(array(
'quantity'))
65 && is_numeric($_POST[
'Item'][$i][
'quantity'])
66 && $_POST[
'Item'][$i][
'quantity'] > 0
71 foreach($items as $item){
75 Yii::app()->user->setState(
'step_1',
true);
83 $model = Order::getUser();
86 if(isset($_POST[
'TmpUser']))
88 $model->attributes=$_POST[
'TmpUser'];
90 if($model->validate() && $model->unsetExistFields()->save(
false)){
92 Yii::app()->user->setState(
'step_2',
true);
95 $data[
'user'] = $model;
100 $model = Order::getOrder();
102 if(isset($_POST[
'Order']))
107 if(md5($model->shipping_info.$model->payment_info) == $_POST[
'checksum']){
108 if($model->save(
false)){
109 Yii::app()->user->setState(
'step_3',
true);
117 $model = Order::getOrder();
120 if(isset($_POST[
'Order'])){
122 $model->verifyCode = $_POST[
'Order'][
'verifyCode'];
124 if(!Yii::app()->user->getState(
'step_1')){
125 $this->redirect(Yii::app()->createUrl(
'shoppingcart/shoppingcart'));
127 if(!Yii::app()->user->getState(
'step_2')){
128 $this->redirect(Yii::app()->createUrl(
'shoppingcart/shoppingcart',array(
'step'=>2)));
130 if(!Yii::app()->user->getState(
'step_3')){
131 $this->redirect(Yii::app()->createUrl(
'shoppingcart/shoppingcart',array(
'step'=>3)));
134 if($model->validate(array(
'verifyCode'))){
135 $model->ordered = Order::ORDERED;
136 $this->onOrdered($model);
138 $items = $model->items;
139 $referrer = $items[count($items)-1]->referrer;
141 Yii::app()->user->setState(
'step_1', null);
142 Yii::app()->user->setState(
'step_2', null);
143 Yii::app()->user->setState(
'step_3', null);
144 Yii::app()->user->setState(
'user_id', null);
146 $this->redirect($referrer);
149 $data[
'order'] = $model;
156 $cookie =
new CHttpCookie(
'user_id', Order::getUser(
true));
157 $cookie->expire = time()+60 * Yii::app()->getModule(
'shoppingcart')->max_lifetime;
158 Yii::app()->request->cookies[
'cookie_name'] = $cookie;
161 $data[
'step'] = $step;
162 $this->render(
'index',array(
'data'=>$data));
168 protected function onOrdered($order){
170 $user = Order::getUser()->implementFromSession();
171 $items = $order->items;
172 $itemsToAdmins = array();
173 foreach($items as $item){
174 $itemsToAdmins[$item->admin_email][] = $item;
177 $admin_email_template = Yii::app()->getModule(
'shoppingcart')->adminemail_template;
179 foreach($itemsToAdmins as $admin_email => $itemsToAdmin){
185 $this->renderMail(
'/mail_templates/'.$admin_email_template, $subject, array(
'items' => $itemsToAdmin))
190 Yii::app()->notificationManager->notifyAbout($notification);
193 $usermail_template = Yii::app()->getModule(
'shoppingcart')->usermail_template;
195 foreach($items as $item){
201 $this->renderMail(
'/mail_templates/'.$usermail_template, $subject, array(
'items' => $items))
206 Yii::app()->notificationManager->notifyAbout($notification);
216 if(isset($_POST[
'ajax']))
218 echo CActiveForm::validate($model);