20 class Order extends CActiveRecord
34 public static function model($className=__CLASS__)
55 array(
'ordered',
'numerical',
'integerOnly'=>
true),
56 array(
'shipping_info, payment_info',
'length',
'max'=>1024),
57 array(
'user_id',
'length',
'max'=>10),
60 array(
'id, ordered, user_id, tmp_user_id, shipping_info, payment_info',
'safe',
'on'=>
'search'),
61 array(
'verifyCode',
'captcha',
'allowEmpty'=>!Yii::app()->user->isGuest || !CCaptcha::checkRequirements() || !Yii::app()->getModule(
'shoppingcart')->captchaEnabled,
'captchaAction' =>
'/shoppingcart/shoppingcart/captcha'),
73 'items' => array(self::HAS_MANY,
'Item',
'order_id'),
83 'condition'=>
'ordered='.self::ORDERED,
86 'condition'=>
'ordered='.self::PROCESS,
110 public static function getOrder($id_only =
false){
112 $user_id = self::getUser(
true);
116 array(
'condition'=>
'user_id=:user_id',
'params'=> array(
':user_id' =>$user_id))
121 $model->user_id = $user_id;
125 return $id_only? $model->id: $model;
132 public static function getUser($id_only =
false)
134 if(!isset($user_id) && isset(Yii::app()->user->id)){
135 $user =
TmpUser::model()->with(
'order')->find(
't.parent_user_id=:parent_user_id AND order.ordered=:process',
136 array(
':parent_user_id'=>Yii::app()->user->id,
':process'=>Order::PROCESS));
138 Yii::app()->user->setState(
'user_id', $user->id);
142 $user_id = Yii::app()->user->getState(
'user_id');
143 if(!isset($user_id)){
144 $user_id = (string)Yii::app()->request->cookies[
'user_id'];
145 Yii::app()->user->setState(
'user_id', $user_id);
148 if(isset($user_id) && !isset($user)) {
154 if(isset(Yii::app()->user->id)){
155 $user->parent_user_id = Yii::app()->user->id;
158 Yii::app()->user->setState(
'user_id', $user->id);
159 if (!headers_sent()){
160 $cookie =
new CHttpCookie(
'user_id', $user->id);
161 $cookie->expire = time()+60 * Yii::app()->getModule(
'shoppingcart')->max_lifetime;
162 $cookie->domain=Yii::app()->getModule(
'shoppingcart')->cookie_domain;
163 Yii::app()->request->cookies[
'user_id'] = $cookie;
167 if(isset(Yii::app()->user->id) && !isset($user->parent_user_id)){
168 $user->parent_user_id = Yii::app()->user->id;
172 return $id_only? $user->id: $user;
185 $criteria=
new CDbCriteria;
187 $criteria->compare(
'id',$this->
id,
true);
188 $criteria->compare(
'ordered',$this->ordered);
189 $criteria->compare(
'user_id',$this->user_id,
true);
190 $criteria->compare(
'shipping_info',$this->shipping_info,
true);
191 $criteria->compare(
'payment_info',$this->order_info,
true);
193 return new CActiveDataProvider($this, array(
194 'criteria'=>$criteria,