mirror of
				https://github.com/devcode-it/openstamanager.git
				synced 2025-06-05 22:09:38 +02:00 
			
		
		
		
	Risoluzione di alcuni bug
Risoluzione di alcuni bug individuati e miglioramento della performance dell'aggiornamento.
This commit is contained in:
		| @@ -48,6 +48,8 @@ class Database extends Util\Singleton | ||||
|      */ | ||||
|     protected function __construct($server, $username, $password, $database_name, $charset = null, $option = [\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION]) | ||||
|     { | ||||
|         global $debug; | ||||
|  | ||||
|         if (is_array($server)) { | ||||
|             $host = $server['host']; | ||||
|             $port = !empty($server['port']) ? $server['port'] : null; | ||||
| @@ -71,15 +73,21 @@ class Database extends Util\Singleton | ||||
|  | ||||
|         if (!empty($this->host) && !empty($this->database_name)) { | ||||
|             try { | ||||
|                 $this->pdo = new \DebugBar\DataCollector\PDO\TraceablePDO(new PDO( | ||||
|                 $pdo = new PDO( | ||||
|                     'mysql:host='.$this->host.(!empty($this->port) ? ';port='.$this->port : '').';dbname='.$this->database_name, | ||||
|                     $this->username, | ||||
|                     $this->password, | ||||
|                     $this->option | ||||
|                 )); | ||||
|                 ); | ||||
|  | ||||
|                 if (empty($this->charset) && version_compare($this->getMySQLVersion(), '5.5.3') >= 0) { | ||||
|                     $this->charset = 'utf8mb4'; | ||||
|                 if (!empty($debug)) { | ||||
|                     $pdo = new \DebugBar\DataCollector\PDO\TraceablePDO($pdo); | ||||
|                 } | ||||
|  | ||||
|                 $this->pdo = $pdo; | ||||
|  | ||||
|                 if (empty($this->charset)) { | ||||
|                     $this->charset = version_compare($this->getMySQLVersion(), '5.5.3') >= 0 ? 'utf8mb4' : 'utf8'; | ||||
|                 } | ||||
|  | ||||
|                 // Fix per problemi di compatibilità delle password MySQL 4.1+ (da versione precedente) | ||||
|   | ||||
| @@ -3,6 +3,7 @@ | ||||
| namespace HTMLBuilder\Wrapper; | ||||
|  | ||||
| /** | ||||
|  * Interfaccia di base per la gestione della struttura HTML contenente gli input effettivi (generati dai tag di input). | ||||
|  * | ||||
|  * @since 2.3 | ||||
|  */ | ||||
|   | ||||
| @@ -443,6 +443,7 @@ function start_datatables() { | ||||
|                 order: [], | ||||
|                 lengthChange: false, | ||||
|                 scrollY: "50vh", | ||||
|                 stateSave: true, | ||||
|             }); | ||||
|         } | ||||
|     }); | ||||
| @@ -468,6 +469,11 @@ function start_datatables() { | ||||
|                 } | ||||
|             }) | ||||
|  | ||||
|             // Fix per l'URL encoding | ||||
|             search.forEach(function (value, index, array) { | ||||
|                 search[array[index]] = decodeURIComponent(array[value]); | ||||
|             }) | ||||
|  | ||||
|             var res = []; | ||||
|             $this.find("th").each(function () { | ||||
|                 var id = $(this).attr('id').replace("th_", ""); | ||||
| @@ -495,15 +501,13 @@ function start_datatables() { | ||||
|                 scrollY: "60vh", | ||||
|                 scrollX: '100%', | ||||
|                 retrieve: true, | ||||
|                 stateSave: true, | ||||
|                 columnDefs: [{ | ||||
|                     searchable: false, | ||||
|                     orderable: false, | ||||
|                     width: '1%', | ||||
|                     className: 'select-checkbox', | ||||
|                     targets: 0 | ||||
|                 }, { | ||||
|                     'max-width': '20%', | ||||
|                     targets: '_all' | ||||
|                 }], | ||||
|                 select: { | ||||
|                     style: 'multi', | ||||
|   | ||||
| @@ -12,7 +12,12 @@ switch (get('op')) { | ||||
|         $start = get('start'); | ||||
|         $end = get('end'); | ||||
|  | ||||
|         $query = "SELECT in_interventi_tecnici.idintervento, colore, in_interventi_tecnici.id, idtecnico, orario_inizio, orario_fine, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=idtecnico) AS nome_tecnico, (SELECT colore FROM an_anagrafiche WHERE idanagrafica=idtecnico) AS colore_tecnico, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=in_interventi.idanagrafica) AS cliente FROM in_interventi_tecnici INNER JOIN (in_interventi LEFT OUTER JOIN in_statiintervento ON in_interventi.idstatointervento=in_statiintervento.idstatointervento) ON in_interventi_tecnici.idintervento=in_interventi.id WHERE in_interventi_tecnici.orario_inizio >= ".prepare($startend)." AND in_interventi_tecnici.orario_fine <= ".prepare($end)." AND idtecnico IN(".implode(',', $_SESSION['dashboard']['idtecnici']).') AND (in_interventi.idstatointervento IN('.implode(',', $_SESSION['dashboard']['idstatiintervento']).") OR in_interventi.idstatointervento='') AND in_interventi_tecnici.idtipointervento IN(".implode(',', $_SESSION['dashboard']['idtipiintervento']).') '.Modules::getAdditionalsQuery('Interventi'); | ||||
|         $stati = (array) $_SESSION['dashboard']['idstatiintervento']; | ||||
|         $stati[] = prepare(''); | ||||
|  | ||||
|         $tipi = (array) $_SESSION['dashboard']['idtipiintervento']; | ||||
|  | ||||
|         $query = 'SELECT in_interventi_tecnici.idintervento, colore, in_interventi_tecnici.id, idtecnico, orario_inizio, orario_fine, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=idtecnico) AS nome_tecnico, (SELECT colore FROM an_anagrafiche WHERE idanagrafica=idtecnico) AS colore_tecnico, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=in_interventi.idanagrafica) AS cliente FROM in_interventi_tecnici INNER JOIN (in_interventi LEFT OUTER JOIN in_statiintervento ON in_interventi.idstatointervento=in_statiintervento.idstatointervento) ON in_interventi_tecnici.idintervento=in_interventi.id WHERE in_interventi_tecnici.orario_inizio >= '.prepare($start).' AND in_interventi_tecnici.orario_fine <= '.prepare($end).' AND idtecnico IN('.implode(',', $_SESSION['dashboard']['idtecnici']).') AND in_interventi.idstatointervento IN('.implode(',', $stati).') AND in_interventi_tecnici.idtipointervento IN('.implode(',', $tipi).') '.Modules::getAdditionalsQuery('Interventi'); | ||||
|  | ||||
|         $rs = $dbo->fetchArray($query); | ||||
|         $n = count($rs); | ||||
| @@ -29,10 +34,9 @@ switch (get('op')) { | ||||
|             { | ||||
|                 "id": "'.$rs[$i]['idintervento'].'", | ||||
|                 "idtecnico":"'.$rs[$i]['idtecnico'].'", | ||||
|                 "orario":"1", | ||||
|                 "title":"<b>Int. '.$rs[$i]['idintervento'].'</b>\\n'.addslashes($rs[$i]['cliente']).'<br>\\n<b>'._('Tecnici').': </b>'.addslashes($rs[$i]['nome_tecnico']).'", | ||||
|                 "start": "'.date('Y-m-d H:i', strtotime($rs[$i]['orario_inizio'])).'", | ||||
|                 "end": "'.date('Y-m-d H:i', strtotime($rs[$i]['orario_fine'])).'", | ||||
|                 "title":"<b>Int. '.$rs[$i]['idintervento'].'</b>'.addslashes($rs[$i]['cliente']).'<br><b>'._('Tecnici').':</b> '.addslashes($rs[$i]['nome_tecnico']).'", | ||||
|                 "start": "'.$rs[$i]['orario_inizio'].'", | ||||
|                 "end": "'.$rs[$i]['orario_fine'].'", | ||||
|                 "url":"'.$rootdir.'/editor.php?id_module='.Modules::getModule('Interventi')['id'].'&id_record='.$rs[$i]['idintervento'].'", | ||||
|                 "backgroundColor":"'.$rs[$i]['colore'].'", | ||||
|                 "textColor":"'.color_inverse($rs[$i]['colore']).'", | ||||
| @@ -81,6 +85,7 @@ switch (get('op')) { | ||||
|         $query = 'SELECT in_interventi_tecnici.idintervento, in_interventi.id, idtecnico, orario_inizio, orario_fine, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=idtecnico) AS nome_tecnico, (SELECT colore FROM an_anagrafiche WHERE idanagrafica=idtecnico) AS colore FROM in_interventi_tecnici INNER JOIN in_interventi ON in_interventi_tecnici.idintervento=in_interventi.id WHERE in_interventi.id='.prepare($id).' '.Modules::getAdditionalsQuery('Interventi'); | ||||
|         $rs = $dbo->fetchArray($query); | ||||
|  | ||||
|         if (!empty($rs)) { | ||||
|             $tecnici = []; | ||||
|             foreach ($rs as $r) { | ||||
|                 $tecnici[] = $r['nome_tecnico'].' ('.Translator::timestampToLocale($r['orario_inizio']).' - '.Translator::timeToLocale($r['orario_fine']).')'; | ||||
| @@ -130,6 +135,7 @@ switch (get('op')) { | ||||
|             } | ||||
|  | ||||
|             echo $tooltip_text; | ||||
|         } | ||||
|  | ||||
|     break; | ||||
| } | ||||
|   | ||||
| @@ -423,7 +423,7 @@ if ($vista == 'mese') { | ||||
| 		var calendar = $('#calendar').fullCalendar({ | ||||
|             locale: globals.locale, | ||||
| <?php | ||||
| if (!get_var('Visualizzare la domenica sul calendario')) { | ||||
| if (!empty(get_var('Visualizzare la domenica sul calendario'))) { | ||||
|     echo ' | ||||
|             hiddenDays: [ 0 ],'; | ||||
| } | ||||
| @@ -438,31 +438,27 @@ if (!get_var('Visualizzare la domenica sul calendario')) { | ||||
| 			slotDuration: '00:15:00', | ||||
|             defaultView: '<?php echo $def; ?>', | ||||
| <?php | ||||
| if (get_var('Abilitare orario lavorativo') == '1') { | ||||
| if (!empty(get_var('Abilitare orario lavorativo'))) { | ||||
|     echo " | ||||
|             minTime: '08:00:00', | ||||
|             maxTime: '20:00:00',"; | ||||
| } | ||||
| ?> | ||||
|             selectable: true, | ||||
|             lazyFetching: true, | ||||
| 			selectHelper: true, | ||||
| 			editable: true, | ||||
| 			eventLimit: false, // allow "more" link when too many events | ||||
| 			allDaySlot: false, | ||||
|             droppable: true, | ||||
|             loading: function(isLoading, view) { | ||||
|                 if(isLoading) { | ||||
| 					//setTimeout("$('#tiny-loader').show()", 10); | ||||
|  					$('#tiny-loader').fadeIn(); | ||||
|                 } else { | ||||
|                     //setTimeout("$('#tiny-loader').hide()", 10); | ||||
|                     $('#tiny-loader').hide(); | ||||
|                 } | ||||
|             }, | ||||
|     <?php | ||||
| if (Modules::getPermission($id_module) == 'rw') { | ||||
|     ?> | ||||
|             droppable: true, | ||||
|             drop: function(date, jsEvent, ui, resourceId) { | ||||
|                 data = moment(date).format("YYYY-MM-DD"); | ||||
| 				ora_dal = moment(date).format("HH:mm"); | ||||
| @@ -478,32 +474,33 @@ if (Modules::getPermission($id_module) == 'rw') { | ||||
|                     $('#calendar').fullCalendar('refetchEvents'); | ||||
|                 }); | ||||
|             }, | ||||
|             <?php | ||||
|  | ||||
| } | ||||
|             ?> | ||||
|             selectable: true, | ||||
| 			select: function(start, end, allDay) { | ||||
| 				data = moment(start).format("YYYY-MM-DD"); | ||||
| 				ora_dal = moment(start).format("HH:mm"); | ||||
| 				ora_al = moment(end).format("HH:mm"); | ||||
|  | ||||
| 				<?php | ||||
|                 if (Modules::getPermission($id_module) == 'rw') { | ||||
|                     ?> | ||||
|                 launch_modal('<?php echo _('Aggiungi intervento'); ?>', globals.rootdir + '/add.php?id_module=<?php echo Modules::getModule('Interventi')['id'] ?>&ref=dashboard&data='+data+'&orario_inizio='+ora_dal+'&orario_fine='+ora_al, 1 ); | ||||
| 				<?php | ||||
|  | ||||
|                 } | ||||
|                 ?> | ||||
|  | ||||
| 				$('#calendar').fullCalendar('unselect'); | ||||
| 			}, | ||||
| 			events: { | ||||
| 				url: globals.rootdir + "/modules/dashboard/ajaxreq.php?op=get_current_month", | ||||
|                 type: 'GET', | ||||
| 				error: function() { | ||||
| 					alert('<?php echo _('Errore durante la creazione degli eventi'); ?>'); | ||||
|  | ||||
|             editable: true, | ||||
|             eventDrop: function(event,dayDelta,minuteDelta,revertFunc) { | ||||
| 				$.get(globals.rootdir + "/modules/dashboard/ajaxreq.php?op=update_intervento&id="+event.id+"&timeStart="+moment(event.start).format("YYYY-MM-DD HH:mm")+"&timeEnd="+moment(event.end).format("YYYY-MM-DD HH:mm"), function(data,response){ | ||||
| 					if( response=="success" ){ | ||||
| 						data = $.trim(data); | ||||
| 						if( data!="ok" ){ | ||||
| 							alert(data); | ||||
| 							$('#calendar').fullCalendar('refetchEvents'); | ||||
| 							revertFunc(); | ||||
| 						} | ||||
| 						else{ | ||||
| 							return false; | ||||
| 						} | ||||
| 					} | ||||
| 				}); | ||||
| 			}, | ||||
|             eventResize: function(event,dayDelta,minuteDelta,revertFunc) { | ||||
| 				$.get(globals.rootdir + "/modules/dashboard/ajaxreq.php?op=update_intervento&id="+event.id+"&timeStart="+moment(event.start).format("YYYY-MM-DD HH:mm")+"&timeEnd="+moment(event.end).format("YYYY-MM-DD HH:mm"), function(data,response){ | ||||
| @@ -520,26 +517,16 @@ if (Modules::getPermission($id_module) == 'rw') { | ||||
| 					} | ||||
| 				}); | ||||
| 			}, | ||||
| 			eventDrop: function(event,dayDelta,minuteDelta,revertFunc) { | ||||
| 				$.get(globals.rootdir + "/modules/dashboard/ajaxreq.php?op=update_intervento&id="+event.id+"&timeStart="+moment(event.start).format("YYYY-MM-DD HH:mm")+"&timeEnd="+moment(event.end).format("YYYY-MM-DD HH:mm"), function(data,response){ | ||||
| 					if( response=="success" ){ | ||||
| 						data = $.trim(data); | ||||
| 						if( data!="ok" ){ | ||||
| 							alert(data); | ||||
| 							$('#calendar').fullCalendar('refetchEvents'); | ||||
| 							revertFunc(); | ||||
| 						} | ||||
| 						else{ | ||||
| 							return false; | ||||
| 						} | ||||
| 					} | ||||
| 				}); | ||||
| 			}, | ||||
|             <?php | ||||
|  | ||||
| } | ||||
|  | ||||
| if (get_var('Utilizzare i tooltip sul calendario') == '1') { | ||||
|     ?> | ||||
| 			eventAfterRender: function(event, element) { | ||||
| 				//alert(element.find('.fc-event-title').html(); | ||||
| 				element.find('.fc-title').html(event.title); | ||||
| 				<?php if (get_var('Utilizzare i tooltip sul calendario') == '1') { | ||||
|                     ?> | ||||
|  | ||||
| 				$.get(globals.rootdir + "/modules/dashboard/ajaxreq.php?op=get_more_info&id="+event.id+"&timeStart="+moment(event.start).format("YYYY-MM-DD HH:mm")+"&timeEnd="+moment(event.end).format("YYYY-MM-DD HH:mm"), function(data,response){ | ||||
| 					if( response=="success" ){ | ||||
| 						data = $.trim(data); | ||||
| @@ -565,9 +552,20 @@ if (Modules::getPermission($id_module) == 'rw') { | ||||
| 						} | ||||
| 					} | ||||
| 				}); | ||||
| 			}, | ||||
|             <?php | ||||
|  | ||||
|                 } ?> | ||||
| } | ||||
|             ?> | ||||
|             events: { | ||||
| 				url: globals.rootdir + "/modules/dashboard/ajaxreq.php?op=get_current_month", | ||||
|                 type: 'GET', | ||||
|                 success: function(data) { | ||||
|                     console.log(data); | ||||
|                 }, | ||||
| 				error: function() { | ||||
| 					alert('<?php echo _('Errore durante la creazione degli eventi'); ?>'); | ||||
| 				} | ||||
| 			} | ||||
| 		}); | ||||
| 	} | ||||
|   | ||||
| @@ -182,6 +182,7 @@ switch (post('op')) { | ||||
|         break; | ||||
|  | ||||
|     case 'add': | ||||
|         /* | ||||
|         $codice = post('codice'); | ||||
|  | ||||
|         // Controlli sul codice | ||||
| @@ -196,8 +197,11 @@ switch (post('op')) { | ||||
|             $_SESSION['warnings'][] = str_replace('_NUM_', "'".$codice."'", _('Numero intervento _NUM_ saltato perchè già esistente!')); | ||||
|             $_SESSION['warnings'][] = str_replace('_NUM_', "'".$new_codice."'", _('Nuovo numero intervento calcolato _NUM_')); | ||||
|         } | ||||
|         */ | ||||
|         $formato = get_var('Formato codice intervento'); | ||||
|  | ||||
|         $codice = $new_codice; | ||||
|         $rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE concat("", codice * 1) = codice AND LENGTH(codice) = '.strlen($formato).' ORDER BY CAST(codice AS SIGNED) DESC LIMIT 1'); | ||||
|         $codice = get_next_code($rs[0]['codice'], 1, $formato); | ||||
|  | ||||
|         // Informazioni di base | ||||
|         $idpreventivo = post('idpreventivo'); | ||||
|   | ||||
| @@ -97,7 +97,6 @@ if (empty($new_codice)) { | ||||
|  | ||||
| <form action="editor.php?id_module=$id_module$" method="post" id="add-form" onsubmit="if($(this).parsley().validate()) { return add_intervento(); }"> | ||||
| 	<input type="hidden" name="op" value="add"> | ||||
| 	<input type="hidden" name="id_module" value="<?php echo $id_module ?>"> | ||||
| 	<input type="hidden" name="ref" value="<?php echo $_GET['ref']; ?>"> | ||||
| 	<input type="hidden" name="backto" value="record-edit"> | ||||
|  | ||||
| @@ -156,19 +155,19 @@ if (empty($new_codice)) { | ||||
| 		<div class="panel-body"> | ||||
| 			<!-- RIGA 3 --> | ||||
| 			<div class="row"> | ||||
| 				<div class="col-md-3"> | ||||
| 				<!--div class="col-md-3"> | ||||
| 					{[ "type": "text", "label": "<?php echo _('Codice intervento'); ?>", "name": "codice", "required": 1, "class": "text-center", "value": "<?php echo $new_codice ?>" ]} | ||||
| 				</div> | ||||
| 				</div--> | ||||
|  | ||||
| 				<div class="col-md-3"> | ||||
| 				<div class="col-md-4"> | ||||
| 					{[ "type": "date", "label": "<?php echo _('Data richiesta'); ?>", "name": "data_richiesta", "required": 1, "value": "-now-" ]} | ||||
| 				</div> | ||||
|  | ||||
| 				<div class="col-md-3"> | ||||
| 				<div class="col-md-4"> | ||||
| 					{[ "type": "date", "label": "<?php echo _('Data intervento'); ?>", "name": "data", "required": 1, "value": "<?php echo $data ?>" ]} | ||||
| 				</div> | ||||
|  | ||||
| 				<div class="col-md-3"> | ||||
| 				<div class="col-md-4"> | ||||
| 					{[ "type": "select", "label": "<?php echo _('Zona'); ?>", "name": "idzona", "values": "query=SELECT id, nome AS descrizione FROM an_zone ORDER BY nome", "value": "<?php echo $idzona ?>" ]} | ||||
| 				</div> | ||||
| 			</div> | ||||
|   | ||||
| @@ -159,7 +159,7 @@ $dirs = [ | ||||
|     'zone', | ||||
| ]; | ||||
|  | ||||
| $pieces = array_chunk($tables, 5); | ||||
| $pieces = array_chunk($dirs, 5); | ||||
|  | ||||
| foreach ($pieces as $piece) { | ||||
|     $files = glob($docroot.'/modules/{'.implode(',', $piece).'}/*.html', GLOB_BRACE); | ||||
|   | ||||
| @@ -952,5 +952,9 @@ ALTER TABLE `or_righe_ordini` CHANGE `data_evasione` `data_evasione` date; | ||||
| -- ALTER TABLE `my_componenti_interventi` ADD PRIMARY KEY (`id_intervento`, `id_componente`); | ||||
| -- ALTER TABLE `my_impianti_interventi` ADD PRIMARY KEY (`idintervento`, `idimpianto`); | ||||
|  | ||||
| -- Fix di alcuni problemi con le query dei widget | ||||
| UPDATE `zz_widgets` SET `query` = 'SELECT CONCAT_WS(" ", REPLACE(REPLACE(REPLACE(FORMAT(SUM(qta),2), ",", "#"), ".", ","), "#", "."), "unità") AS dato FROM mg_articoli WHERE qta>0' WHERE `name` = 'Articoli in magazzino'; | ||||
| UPDATE `zz_widgets` SET `query` = 'SELECT CONCAT_WS(" ", REPLACE(REPLACE(REPLACE(FORMAT(SUM(prezzo_acquisto*qta),2), ",", "#"), ".", ","), "#", "."), "€") AS dato FROM mg_articoli WHERE qta>0' WHERE `name` = 'Valore magazzino'; | ||||
|  | ||||
| -- Fix per le sessioni di lavoro dei tecnici precedenti | ||||
| UPDATE `in_interventi_tecnici` SET `idtipointervento` = (SELECT `idtipointervento` FROM `in_interventi` WHERE `idintervento` = `in_interventi`.`id`) WHERE `idtipointervento` = ''; | ||||
|   | ||||
| @@ -90,33 +90,20 @@ $tables = [ | ||||
|     'zz_semaphores', | ||||
| ]; | ||||
|  | ||||
| $pieces = array_chunk($tables, 10); | ||||
|  | ||||
| foreach ($pieces as $piece) { | ||||
|     $implode = []; | ||||
|     foreach ($piece as $table) { | ||||
|         $implode[] = prepare($table); | ||||
|     } | ||||
|  | ||||
|     $query = 'SELECT table_name FROM INFORMATION_SCHEMA.TABLES T WHERE T.TABLE_SCHEMA = '.prepare($database->getDatabaseName()).' AND | ||||
|     T.TABLE_NAME IN('.implode(',', $implode).") AND | ||||
|     NOT EXISTS ( | ||||
|         SELECT table_name | ||||
|         FROM INFORMATION_SCHEMA.COLUMNS C | ||||
|         WHERE | ||||
|             C.TABLE_SCHEMA = T.TABLE_SCHEMA AND | ||||
|             C.TABLE_NAME = T.TABLE_NAME AND | ||||
|             C.COLUMN_NAME = '|field|')"; | ||||
| foreach ($tables as $table) { | ||||
|     if ($database->fetchNum('SHOW TABLES WHERE `Tables_in_'.$database->getDatabaseName().'` = '.prepare($table))) { | ||||
|         $query = 'SHOW COLUMNS FROM '.$table.' FROM '.$database->getDatabaseName()." WHERE Field='|field|'"; | ||||
|  | ||||
|         $created_at = $database->fetchArray(str_replace('|field|', 'created_at', $query)); | ||||
|     foreach ($created_at as $table) { | ||||
|         $database->query('ALTER TABLE `'.$table['table_name'].'` ADD `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP'); | ||||
|         if (empty($created_at)) { | ||||
|             $database->query('ALTER TABLE `'.$table.'` ADD `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP'); | ||||
|         } | ||||
|  | ||||
|         if (API::isCompatible()) { | ||||
|             $updated_at = $database->fetchArray(str_replace('|field|', 'updated_at', $query)); | ||||
|         foreach ($updated_at as $table) { | ||||
|             $database->query('ALTER TABLE `'.$table['table_name'].'` `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'); | ||||
|             if (empty($updated_at)) { | ||||
|                 $database->query('ALTER TABLE `'.$table.'` ADD `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user