| @@ -30,9 +30,9 @@ | ||
| 30 | 30 | |
| 31 | 31 | if (isset($integrations->errors['result_empty'])) { |
| 32 | 32 | $integrations = []; |
| 33 | 33 | } else { |
| 34 | - foreach ($logs as $key => $log) { | |
| 34 | + foreach ($logs as $key => $log) { | |
| 35 | 35 | foreach ($integrations as $integration) { |
| 36 | 36 | if ($integration->log_id === $log->id) { |
| 37 | 37 | $logs[$key]->integration = true; |
| 38 | 38 | } |
| @@ -48,13 +48,9 @@ | ||
| 48 | 48 | { |
| 49 | 49 | if (is_null($entry_id)) { |
| 50 | 50 | return new WP_Error('empty_data', __('Form data is empty', 'bit-form')); |
| 51 | 51 | } |
| 52 | - $sql = $this->app_db->prepare( | |
| 53 | - "SELECT api_type, response_obj FROM `{$this->app_db->prefix}bitforms_form_entry_log` as el JOIN `{$this->app_db->prefix}bitforms_form_log_details` as ld ON ld.log_id = el.id WHERE form_entry_id = %d AND integration_id = %d AND ld.response_type = 'success' ORDER BY el.id DESC LIMIT 1", | |
| 54 | - $entry_id, | |
| 55 | - $integ_id | |
| 56 | - ); | |
| 52 | + $sql = "SELECT api_type, response_obj FROM `{$this->app_db->prefix}bitforms_form_entry_log` as el JOIN `{$this->app_db->prefix}bitforms_form_log_details` as ld ON ld.log_id = el.id WHERE form_entry_id = {$entry_id} AND integration_id = {$integ_id} AND ld.response_type = 'success' ORDER BY el.id DESC LIMIT 1"; | |
| 57 | 53 | |
| 58 | 54 | return $this->app_db->get_results($sql); |
| 59 | 55 | } |
| 60 | 56 | |
| @@ -83,95 +79,17 @@ | ||
| 83 | 79 | } |
| 84 | 80 | |
| 85 | 81 | public function get_form_value($form_id = '') |
| 86 | 82 | { |
| 87 | - $sql = $this->app_db->prepare( | |
| 88 | - "SELECT `meta_key`,`meta_value` FROM `{$this->app_db->prefix}bitforms_form_entrymeta` WHERE bitforms_form_entry_id=%d", | |
| 89 | - $form_id | |
| 90 | - ); | |
| 83 | + $sql = "SELECT `meta_key`,`meta_value` FROM `{$this->app_db->prefix}bitforms_form_entrymeta` where bitforms_form_entry_id=$form_id"; | |
| 91 | 84 | return $this->execute($sql)->getResult(); |
| 92 | 85 | } |
| 93 | 86 | |
| 94 | - /** | |
| 95 | - * Queued workflow-trigger rows (response_type 'queued', integration_id 0) | |
| 96 | - * whose browser trigger and per-entry reclaim event were both lost, joined | |
| 97 | - * to the entry log for the form/entry ids the executor needs. | |
| 98 | - */ | |
| 99 | - public function getStaleQueuedWorkflows($minAgeMinutes, $maxAgeHours, $limit) | |
| 100 | - { | |
| 101 | - $sql = "SELECT ld.id AS queue_log_id, ld.log_id, el.form_id, el.form_entry_id | |
| 102 | - FROM `{$this->app_db->prefix}bitforms_form_log_details` ld | |
| 103 | - JOIN `{$this->app_db->prefix}bitforms_form_entry_log` el ON el.id = ld.log_id | |
| 104 | - WHERE ld.integration_id = 0 | |
| 105 | - AND ld.response_type = 'queued' | |
| 106 | - AND ld.created_at < DATE_SUB(%s, INTERVAL %d MINUTE) | |
| 107 | - AND ld.created_at > DATE_SUB(%s, INTERVAL %d HOUR) | |
| 108 | - ORDER BY ld.id ASC | |
| 109 | - LIMIT %d"; | |
| 110 | - $now = current_time('mysql'); | |
| 111 | - return $this->execute($sql, [$now, absint($minAgeMinutes), $now, absint($maxAgeHours), absint($limit)])->getResult(); | |
| 112 | - } | |
| 113 | - | |
| 114 | - /** | |
| 115 | - * Newest still-queued workflow row of an entry, for callers that hold the | |
| 116 | - * entry id but not the queue log id (the payment endpoints). | |
| 117 | - * | |
| 118 | - * @return object|null row with id and response_obj | |
| 119 | - */ | |
| 120 | - public function latestQueuedWorkflowByEntry($entryID) | |
| 121 | - { | |
| 122 | - $sql = "SELECT ld.id, ld.response_obj | |
| 123 | - FROM `{$this->app_db->prefix}bitforms_form_log_details` ld | |
| 124 | - JOIN `{$this->app_db->prefix}bitforms_form_entry_log` el ON el.id = ld.log_id | |
| 125 | - WHERE el.form_entry_id = %d | |
| 126 | - AND ld.integration_id = 0 | |
| 127 | - AND ld.response_type = 'queued' | |
| 128 | - ORDER BY ld.id DESC | |
| 129 | - LIMIT 1"; | |
| 130 | - $rows = $this->execute($sql, [absint($entryID)])->getResult(); | |
| 131 | - | |
| 132 | - return is_wp_error($rows) || empty($rows) ? null : $rows[0]; | |
| 133 | - } | |
| 134 | - | |
| 135 | - /** | |
| 136 | - * Patch a queued row's payload. The 'queued' condition keeps it off rows a | |
| 137 | - * trigger or the reclaim cron has already claimed. | |
| 138 | - * | |
| 139 | - * @return mixed rows affected, or WP_Error | |
| 140 | - */ | |
| 141 | - public function updateQueuedWorkflowResponse($queueLogId, array $responseObj) | |
| 142 | - { | |
| 143 | - return $this->update( | |
| 144 | - ['response_obj' => wp_json_encode($responseObj)], | |
| 145 | - ['id' => absint($queueLogId), 'response_type' => 'queued'] | |
| 146 | - ); | |
| 147 | - } | |
| 148 | - | |
| 149 | - /** | |
| 150 | - * Latest execution per integration of a form: last run time plus the | |
| 151 | - * response_type of that newest log row. integration_id 0 (workflow queue) excluded. | |
| 152 | - */ | |
| 153 | - public function getIntegrationLastRuns($formId) | |
| 154 | - { | |
| 155 | - $sql = "SELECT ld.integration_id, | |
| 156 | - MAX(ld.created_at) AS lastRun, | |
| 157 | - SUBSTRING_INDEX(GROUP_CONCAT(ld.response_type ORDER BY ld.created_at DESC, ld.id DESC), ',', 1) AS lastStatus | |
| 158 | - FROM `{$this->app_db->prefix}bitforms_form_log_details` ld | |
| 159 | - JOIN `{$this->app_db->prefix}bitforms_form_entry_log` el ON el.id = ld.log_id | |
| 160 | - WHERE el.form_id = %d AND ld.integration_id > 0 | |
| 161 | - GROUP BY ld.integration_id"; | |
| 162 | - return $this->execute($sql, [absint($formId)])->getResult(); | |
| 163 | - } | |
| 164 | - | |
| 165 | 87 | public function logUpdate($updateValue, $logID) |
| 166 | 88 | { |
| 167 | 89 | if (empty($logID)) { |
| 168 | 90 | return false; |
| 169 | 91 | } |
| 170 | - $sql = $this->app_db->prepare( | |
| 171 | - "UPDATE `{$this->app_db->prefix}bitforms_form_entry_log` SET content=%s WHERE id=%d", | |
| 172 | - $updateValue, | |
| 173 | - $logID | |
| 174 | - ); | |
| 92 | + $sql = "UPDATE `{$this->app_db->prefix}bitforms_form_entry_log` SET content='$updateValue' WHERE id=$logID"; | |
| 175 | 93 | return $this->execute($sql)->getResult(); |
| 176 | 94 | } |
| 177 | 95 | } |