| @@ -5,17 +5,21 @@ | ||
| 5 | 5 | namespace BitCode\BitForm\Core\WorkFlow; |
| 6 | 6 | |
| 7 | 7 | use BitCode\BitForm\Core\Integration\IntegrationHandler; |
| 8 | 8 | use BitCode\BitForm\Core\Messages\SuccessMessageHandler; |
| 9 | +use BitCode\BitForm\Core\Util\Utilities; | |
| 9 | 10 | |
| 10 | -final class Actions { | |
| 11 | +final class Actions | |
| 12 | +{ | |
| 11 | 13 | private static $_formID; |
| 12 | 14 | |
| 13 | - public function __construct($formId) { | |
| 15 | + public function __construct($formId) | |
| 16 | + { | |
| 14 | 17 | static::$_formID = $formId; |
| 15 | 18 | } |
| 16 | 19 | |
| 17 | - public function setValue($actionDetail, $fieldData, $fields) { | |
| 20 | + public function setValue($actionDetail, $fieldData, $fields) | |
| 21 | + { | |
| 18 | 22 | if (!empty($actionDetail->val)) { |
| 19 | 23 | $actionValue = ''; |
| 20 | 24 | $fieldType = $fields->{$fieldData[$actionDetail->field]['key']}->typ; |
| 21 | 25 | $evalMathExpr = preg_match('/month|date/', $fieldType); |
| @@ -26,9 +30,39 @@ | ||
| 26 | 30 | } |
| 27 | 31 | return [$fields, $fieldData]; |
| 28 | 32 | } |
| 29 | 33 | |
| 30 | - public function show($fields, $fieldData, $actionDetail) { | |
| 34 | + public function getActionValue($actionDetail, $fieldData, $fields) | |
| 35 | + { | |
| 36 | + $actionValue = ''; | |
| 37 | + if (!empty($actionDetail->val)) { | |
| 38 | + $fieldType = $fields->{$fieldData[$actionDetail->field]['key']}->typ; | |
| 39 | + $evalMathExpr = preg_match('/month|date/', $fieldType); | |
| 40 | + $fields->{$fieldData[$actionDetail->field]['key']}->val = ''; | |
| 41 | + $actionValue = Helper::replaceFieldWithValue($actionDetail->val, $fieldData, !(bool)$evalMathExpr); | |
| 42 | + } | |
| 43 | + return $actionValue; | |
| 44 | + } | |
| 45 | + | |
| 46 | + public function getActiveListIndex($actionDetail, $fieldData, $fields) | |
| 47 | + { | |
| 48 | + $activeList = $this->getActionValue($actionDetail, $fieldData, $fields); | |
| 49 | + $optionsList = $fields->{$fieldData[$actionDetail->field]['key']}->optionsList; | |
| 50 | + $activeListIndex = 0; | |
| 51 | + foreach ($optionsList as $key => $optionObj) { | |
| 52 | + $valueArr = (array) $optionObj; | |
| 53 | + $listName = array_keys($valueArr)[0]; | |
| 54 | + if ($listName === $activeList) { | |
| 55 | + $activeListIndex = $key; | |
| 56 | + break; | |
| 57 | + } | |
| 58 | + } | |
| 59 | + | |
| 60 | + return $activeListIndex; | |
| 61 | + } | |
| 62 | + | |
| 63 | + public function show($fields, $fieldData, $actionDetail) | |
| 64 | + { | |
| 31 | 65 | $fields->{$fieldData[$actionDetail->field]['key']}->valid->hide = false; |
| 32 | 66 | if ('hidden' === $fields->{$fieldData[$actionDetail->field]['key']}->typ) { |
| 33 | 67 | $fields->{$fieldData[$actionDetail->field]['key']}->typ = 'text'; |
| 34 | 68 | } |
| @@ -33,14 +67,15 @@ | ||
| 33 | 67 | $fields->{$fieldData[$actionDetail->field]['key']}->typ = 'text'; |
| 34 | 68 | } |
| 35 | 69 | } |
| 36 | 70 | |
| 37 | - public function setFieldProperty($actions, $fieldData, $fields) { | |
| 71 | + public function setFieldProperty($actions, $fieldData, $fields) | |
| 72 | + { | |
| 38 | 73 | if (empty($actions)) { |
| 39 | - return $fields; | |
| 74 | + return [$fields, $fieldData]; | |
| 40 | 75 | } |
| 41 | 76 | foreach ($actions as $actionDetail) { |
| 42 | - if (!empty($actionDetail->action) && !empty($actionDetail->field)) { | |
| 77 | + if (!empty($actionDetail->action) && !empty($actionDetail->field) && isset($fields->{$fieldData[$actionDetail->field]['key']}) && !empty($fields->{$fieldData[$actionDetail->field]['key']})) { | |
| 43 | 78 | switch ($actionDetail->action) { |
| 44 | 79 | case 'value': |
| 45 | 80 | $data = $this->setValue($actionDetail, $fieldData, $fields); |
| 46 | 81 | $fields = $data[0]; |
| @@ -60,8 +95,11 @@ | ||
| 60 | 95 | break; |
| 61 | 96 | case 'readonly': |
| 62 | 97 | $fields->{$fieldData[$actionDetail->field]['key']}->valid->readonly = true; |
| 63 | 98 | break; |
| 99 | + case 'writeable': | |
| 100 | + $fields->{$fieldData[$actionDetail->field]['key']}->valid->readonly = false; | |
| 101 | + break; | |
| 64 | 102 | case 'required': |
| 65 | 103 | $fields->{$fieldData[$actionDetail->field]['key']}->valid->required = true; |
| 66 | 104 | break; |
| 67 | 105 | case 'limit': |
| @@ -72,8 +110,27 @@ | ||
| 72 | 110 | break; |
| 73 | 111 | case 'max': |
| 74 | 112 | $fields->{$fieldData[$actionDetail->field]['key']}->valid->max = true; |
| 75 | 113 | break; |
| 114 | + case 'activelist': | |
| 115 | + $fields->{$fieldData[$actionDetail->field]['key']}->config->activeList = $this->getActiveListIndex($actionDetail, $fieldData, $fields); | |
| 116 | + break; | |
| 117 | + case 'lbl': | |
| 118 | + case 'ct': | |
| 119 | + $fields->{$fieldData[$actionDetail->field]['key']}->lbl = $this->getActionValue($actionDetail, $fieldData, $fields); | |
| 120 | + break; | |
| 121 | + case 'sub-titl': | |
| 122 | + $fields->{$fieldData[$actionDetail->field]['key']}->subtitle = $this->getActionValue($actionDetail, $fieldData, $fields); | |
| 123 | + break; | |
| 124 | + case 'hlp-txt': | |
| 125 | + $fields->{$fieldData[$actionDetail->field]['key']}->helperTxt = $this->getActionValue($actionDetail, $fieldData, $fields); | |
| 126 | + break; | |
| 127 | + case 'placeholder': | |
| 128 | + $fields->{$fieldData[$actionDetail->field]['key']}->ph = $this->getActionValue($actionDetail, $fieldData, $fields); | |
| 129 | + break; | |
| 130 | + case 'title': | |
| 131 | + $fields->{$fieldData[$actionDetail->field]['key']}->title = $this->getActionValue($actionDetail, $fieldData, $fields); | |
| 132 | + break; | |
| 76 | 133 | } |
| 77 | 134 | } |
| 78 | 135 | } |
| 79 | 136 | return [$fields, $fieldData]; |
| @@ -78,9 +135,10 @@ | ||
| 78 | 135 | } |
| 79 | 136 | return [$fields, $fieldData]; |
| 80 | 137 | } |
| 81 | 138 | |
| 82 | - public function setOnSubmitSetFieldValue($actions, $fieldValue) { | |
| 139 | + public function setOnSubmitSetFieldValue($actions, $fieldValue) | |
| 140 | + { | |
| 83 | 141 | if (empty($actions)) { |
| 84 | 142 | return $fieldValue; |
| 85 | 143 | } |
| 86 | 144 | foreach ($actions as $actionDetail) { |
| @@ -98,9 +156,10 @@ | ||
| 98 | 156 | } |
| 99 | 157 | return $fieldValue; |
| 100 | 158 | } |
| 101 | 159 | |
| 102 | - public function setOnFormSuccess($data, $actions, $fieldValue) { | |
| 160 | + public function setOnFormSuccess($data, $actions, $fieldValue) | |
| 161 | + { | |
| 103 | 162 | if (empty($actions)) { |
| 104 | 163 | return $data; |
| 105 | 164 | } |
| 106 | 165 | |
| @@ -136,14 +195,18 @@ | ||
| 136 | 195 | } |
| 137 | 196 | return $data; |
| 138 | 197 | } |
| 139 | 198 | |
| 140 | - public function confirmationMessage($workFlowReturnable, $successActionDetailId, $fieldValue) { | |
| 199 | + public function confirmationMessage($workFlowReturnable, $successActionDetailId, $fieldValue) | |
| 200 | + { | |
| 141 | 201 | $id = json_decode($successActionDetailId)->id; |
| 142 | 202 | $messageHandler = new SuccessMessageHandler(static::$_formID); |
| 143 | 203 | $message = $messageHandler->getAMessage($id); |
| 144 | 204 | if (!is_wp_error($message) && !empty($message)) { |
| 145 | 205 | $workFlowReturnable['message'] = Helper::replaceFieldWithValue($message[0]->message_content, $fieldValue); |
| 206 | + if (!empty($workFlowReturnable['message']) && Utilities::isPro()) { | |
| 207 | + $workFlowReturnable['message'] = do_shortcode($workFlowReturnable['message']); | |
| 208 | + } | |
| 146 | 209 | $workFlowReturnable['msg_id'] = $message[0]->id; |
| 147 | 210 | $msgConfig = json_decode($message[0]->message_config); |
| 148 | 211 | if ($msgConfig->autoHide) { |
| 149 | 212 | $workFlowReturnable['msg_duration'] = abs(floatval($msgConfig->duration) * 1000); |
| @@ -151,9 +214,10 @@ | ||
| 151 | 214 | } |
| 152 | 215 | return $workFlowReturnable; |
| 153 | 216 | } |
| 154 | 217 | |
| 155 | - public function redirectPage($workFlowReturnable, $successActionDetailId, $fieldValue) { | |
| 218 | + public function redirectPage($workFlowReturnable, $successActionDetailId, $fieldValue) | |
| 219 | + { | |
| 156 | 220 | $id = json_decode($successActionDetailId)->id; |
| 157 | 221 | $integrationHandler = new IntegrationHandler(static::$_formID); |
| 158 | 222 | $redirectPage = $integrationHandler->getAIntegration($id, 'form', 'redirectPage'); |
| 159 | 223 | if (!is_wp_error($redirectPage) && !empty($redirectPage)) { |