Skip to content

Commit efcb1f3

Browse files
committed
History cleanup updates
1 parent c2ec81b commit efcb1f3

File tree

7 files changed

+370
-272
lines changed

7 files changed

+370
-272
lines changed

cycle.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@
283283
$pvalue = SQLSelectOne($sqlQuery);
284284
if ($pvalue['ID']) {
285285
DebMes("Deleting Pvalue: " . $pvalue['ID'], 'threads');
286-
SQLExec("DELETE FROM phistory WHERE VALUE_ID=" . $pvalue['ID']);
286+
cleanUpValueHistory($pvalue['ID'], 0);
287287
SQLExec("DELETE FROM pvalues WHERE ID=" . $pvalue['ID']);
288288
} else {
289289
DebMes("NO Pvalue for " . $property_id, 'threads');

lib/objects.class.php

+47
Original file line numberDiff line numberDiff line change
@@ -932,6 +932,53 @@ function getHistoryValue($varname, $time, $nerest = false)
932932
}
933933
}
934934

935+
936+
function cleanUpValueHistory($value_id, $max_age_days, $data_type = 0)
937+
{
938+
$total_removed = 0;
939+
940+
if (defined('SEPARATE_HISTORY_STORAGE') && SEPARATE_HISTORY_STORAGE == 1) {
941+
$table_name = 'phistory_value_'.$value_id;
942+
} else {
943+
$table_name = 'phistory';
944+
}
945+
946+
$start_tm = date('Y-m-d H:i:s', (time() - $max_age_days * 24 * 60 * 60));
947+
$qry = "VALUE_ID='" . $value_id . "' AND ADDED<('" . $start_tm . "')";
948+
949+
if ($data_type == 5) {
950+
$values = SQLSelect("SELECT * FROM $table_name WHERE $qry");
951+
$totalv = count($values);
952+
for ($iv = 0; $iv < $totalv; $iv++) {
953+
$file_path = ROOT . 'cms/images/' . $values[$iv]['VALUE'];
954+
if ($values[$iv]['VALUE'] != '' && file_exists($file_path)) {
955+
unlink($file_path);
956+
}
957+
}
958+
}
959+
960+
$tmp = SQLSelectOne("SELECT COUNT(*) as TOTAL FROM $table_name WHERE $qry");
961+
if (isset($tmp['TOTAL']) && $tmp['TOTAL']>0) {
962+
$total_removed = (int)$tmp['TOTAL'];
963+
SQLExec("DELETE FROM $table_name WHERE $qry");
964+
}
965+
return $total_removed;
966+
}
967+
968+
function cleanUpPropertyHistory($property_id, $max_age_days)
969+
{
970+
$total_removed = 0;
971+
$property = SQLSelectOne("SELECT * FROM properties WHERE ID=".(int)$property_id);
972+
if (isset($property['ID'])) {
973+
$pvalues = SQLSelect("SELECT * FROM pvalues WHERE PROPERTY_ID='" . $property_id . "'");
974+
$total = count($pvalues);
975+
for ($i = 0; $i < $total; $i++) {
976+
$total_removed+=cleanUpValueHistory($pvalues[$i]['ID'], $max_age_days, $property['DATA_TYPE']);
977+
}
978+
}
979+
return $total_removed;
980+
}
981+
935982
/**
936983
* Summary of setGlobal
937984
* @param mixed $varname Variable name

modules/objects/objects_edit.inc.php

+5-5
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@
123123
if ($pr['ID']) {
124124
$value = SQLSelectOne("SELECT * FROM pvalues WHERE PROPERTY_ID='" . $delete_prop . "' AND OBJECT_ID='" . $rec['ID'] . "'");
125125
if ($value['ID']) {
126-
SQLExec("DELETE FROM phistory WHERE VALUE_ID='" . $value['ID'] . "'");
126+
cleanUpValueHistory($value['ID'], 0, $pr['DATA_TYPE']);
127127
SQLExec("DELETE FROM pvalues WHERE PROPERTY_ID='" . $delete_prop . "' AND OBJECT_ID='" . $rec['ID'] . "'");
128128
}
129129
if (!$pr['CLASS_ID']) {
@@ -178,12 +178,12 @@
178178
$this->setProperty($props[$i]['TITLE'], ${"value" . $props[$i]['ID']});
179179
}
180180
}
181-
$props[$i]['VALUE'] = isset($value['VALUE'])?$value['VALUE']:'';
181+
$props[$i]['VALUE'] = isset($value['VALUE']) ? $value['VALUE'] : '';
182182
$props[$i]['VALUE_HTML'] = htmlspecialchars($props[$i]['VALUE']);
183-
$props[$i]['SOURCE'] = isset($value['SOURCE'])?$value['SOURCE']:'';
184-
$props[$i]['UPDATED'] = isset($value['UPDATED'])?date('d.m.Y H:i:s', strtotime($value['UPDATED'])):'';
183+
$props[$i]['SOURCE'] = isset($value['SOURCE']) ? $value['SOURCE'] : '';
184+
$props[$i]['UPDATED'] = isset($value['UPDATED']) ? date('d.m.Y H:i:s', strtotime($value['UPDATED'])) : '';
185185

186-
$value['LINKED_MODULES'] = isset($value['LINKED_MODULES'])?explode(',', $value['LINKED_MODULES']):false;
186+
$value['LINKED_MODULES'] = isset($value['LINKED_MODULES']) ? explode(',', $value['LINKED_MODULES']) : false;
187187
$props[$i]['LINKED_MODULES'] = '';
188188
if (is_array($value['LINKED_MODULES'])) {
189189
foreach ($value['LINKED_MODULES'] as $prop_link) {

0 commit comments

Comments
 (0)