33namespace integready \bulkactionscheckboxcolumn ;
44
55use Yii ;
6- use yii \helpers \Url ;
76use yii \base \Action ;
8- use yii \helpers \ Json ;
7+ use yii \db \ ActiveRecord ;
98use yii \helpers \ArrayHelper ;
9+ use yii \helpers \Json ;
10+ use yii \helpers \Url ;
1011
1112/**
1213 * Class BulkCheckboxAction
@@ -17,7 +18,7 @@ class BulkCheckboxAction extends Action
1718 const UPDATE_TYPE_ONEBYONE = 0 ;
1819
1920 /**
20- * @var \yii\db\ ActiveRecord
21+ * @var ActiveRecord
2122 */
2223 public $ modelClass ;
2324
@@ -31,6 +32,11 @@ class BulkCheckboxAction extends Action
3132 */
3233 public $ statusField ;
3334
35+ /**
36+ * @var array|null
37+ */
38+ public $ values ;
39+
3440 /**
3541 * @var int
3642 */
@@ -44,13 +50,25 @@ public function run()
4450 $ postUrl = Yii::$ app ->request ->get ();
4551 $ data = empty (Yii::$ app ->request ->get ($ this ->gridId . '_ ' . $ this ->statusField )) ? false : Json::decode (Yii::$ app ->request ->get ($ this ->gridId . '_ ' . $ this ->statusField ), true );
4652 if ($ data && count ($ data ) >= 1 ) {
47- if ($ this ->updateType === self ::UPDATE_TYPE_ALL ) {
48- $ this ->modelClass ::updateAll ([$ this ->statusField => $ data ['status ' ]], [$ this ->modelClass ::primaryKey ()[0 ] => $ data ['ids ' ]]);
49- } elseif ($ this ->updateType === self ::UPDATE_TYPE_ONEBYONE ) {
50- $ models = $ this ->modelClass ::find ()->where ([$ this ->modelClass ::primaryKey ()[0 ] => $ data ['ids ' ]])->all ();
51- foreach ($ models as $ model ) {
52- $ model ->{$ this ->statusField } = $ data ['status ' ];
53- $ model ->save ();
53+ if (is_array ($ this ->values ) && isset ($ this ->values [$ data ['status ' ]])) {
54+ if ($ this ->updateType === self ::UPDATE_TYPE_ALL ) {
55+ $ this ->modelClass ::updateAll ([$ this ->statusField => $ this ->values [$ data ['status ' ]]], [$ this ->modelClass ::primaryKey ()[0 ] => $ data ['ids ' ]]);
56+ } elseif ($ this ->updateType === self ::UPDATE_TYPE_ONEBYONE ) {
57+ $ models = $ this ->modelClass ::find ()->where ([$ this ->modelClass ::primaryKey ()[0 ] => $ data ['ids ' ]])->all ();
58+ foreach ($ models as $ model ) {
59+ $ model ->{$ this ->statusField } = $ this ->values [$ data ['status ' ]];
60+ $ model ->save ();
61+ }
62+ }
63+ } else {
64+ if ($ this ->updateType === self ::UPDATE_TYPE_ALL ) {
65+ $ this ->modelClass ::updateAll ([$ this ->statusField => $ data ['status ' ]], [$ this ->modelClass ::primaryKey ()[0 ] => $ data ['ids ' ]]);
66+ } elseif ($ this ->updateType === self ::UPDATE_TYPE_ONEBYONE ) {
67+ $ models = $ this ->modelClass ::find ()->where ([$ this ->modelClass ::primaryKey ()[0 ] => $ data ['ids ' ]])->all ();
68+ foreach ($ models as $ model ) {
69+ $ model ->{$ this ->statusField } = $ data ['status ' ];
70+ $ model ->save ();
71+ }
5472 }
5573 }
5674 }
0 commit comments