|
21 | 21 | use Modules\Anagrafiche\Anagrafica; |
22 | 22 | use Modules\Anagrafiche\Export\CSV; |
23 | 23 | use Modules\Anagrafiche\Tipo; |
| 24 | +use Modules\ListeNewsletter\Lista; |
| 25 | +use Util\Query; |
24 | 26 |
|
25 | 27 | include_once __DIR__.'/../../core.php'; |
26 | 28 |
|
|
185 | 187 | // Download del file |
186 | 188 | download($file, $filename); |
187 | 189 |
|
| 190 | + break; |
| 191 | + |
| 192 | + case 'crea-lista': |
| 193 | + $lista = Lista::build(post('nome_lista')); |
| 194 | + $lista->setTranslation('title', post('nome_lista')); |
| 195 | + $modalita_dinamica = post('modalita_dinamica'); |
| 196 | + $includi_disiscritti = post('includi_disiscritti'); |
| 197 | + |
| 198 | + // Se modalità dinamica è attiva, salvo la query, altrimenti la lista sarà statica |
| 199 | + if ($modalita_dinamica) { |
| 200 | + // Aggiungo i filtri di ricerca applicati nel modulo |
| 201 | + $where = []; |
| 202 | + if (count(getSearchValues($id_module)) > 0) { |
| 203 | + foreach (getSearchValues($id_module) as $key => $value) { |
| 204 | + $where[$key] = $value; |
| 205 | + } |
| 206 | + } |
| 207 | + $query = Query::getQuery($structure, $where); |
| 208 | + $pos = strpos($query, 'SELECT'); |
| 209 | + if ($pos !== false) { |
| 210 | + $query = substr_replace($query, "SELECT 'Modules\\\\\\Anagrafiche\\\\\\Anagrafica' AS tipo_lista, ", $pos, 6); |
| 211 | + } |
| 212 | + |
| 213 | + // Se non includo i disiscritti, aggiungo il filtro per enable_newsletter = 1 |
| 214 | + if (!$includi_disiscritti) { |
| 215 | + $query = str_replace('1=1', '1=1 AND an_anagrafiche.enable_newsletter = 1', $query); |
| 216 | + } |
| 217 | + |
| 218 | + if (check_query($query)) { |
| 219 | + $lista->query = html_entity_decode($query); |
| 220 | + } |
| 221 | + } else { |
| 222 | + foreach ($id_records as $id) { |
| 223 | + $anagrafica = Anagrafica::find($id); |
| 224 | + if (!$includi_disiscritti && !$anagrafica->enable_newsletter) { |
| 225 | + continue; |
| 226 | + } |
| 227 | + $dbo->insert("em_list_receiver", [ |
| 228 | + 'id_list' => $lista->id, |
| 229 | + 'record_type' => Anagrafica::class, |
| 230 | + 'record_id' => $id, |
| 231 | + ]); |
| 232 | + } |
| 233 | + } |
| 234 | + $lista->save(); |
| 235 | + |
| 236 | + flash()->info(tr('Lista creata correttamente!')); |
| 237 | + |
188 | 238 | break; |
189 | 239 | } |
190 | 240 |
|
|
246 | 296 | ], |
247 | 297 | ]; |
248 | 298 |
|
| 299 | +$operations['crea-lista'] = [ |
| 300 | + 'text' => '<span><i class="fa fa-envelope"></i> '.tr('Crea lista').'</span>', |
| 301 | + 'data' => [ |
| 302 | + 'msg' => tr('Vuoi creare una nuova lista?').'<br><br>{[ "type": "text", "label": "'.tr('Nome lista').'", "name": "nome_lista", "required": 1 ]} |
| 303 | + {[ "type": "checkbox", "label": "'.tr('Modalità').'", "name": "modalita_dinamica", "help": "'.tr('Se Dinamica prende in considerazione tutte le righe della tabella con i filtri applicati, mentre Statica esporta solo le righe selezionate.').'", "values": "Dinamica,Statica" ]} |
| 304 | + {[ "type": "checkbox", "label": "'.tr('Includi disiscritti').'", "name": "includi_disiscritti", "value": 0 ]}', |
| 305 | + 'button' => tr('Procedi'), |
| 306 | + 'class' => 'btn btn-lg btn-success', |
| 307 | + 'blank' => false, |
| 308 | + ], |
| 309 | +]; |
| 310 | + |
249 | 311 | return $operations; |
0 commit comments