function b1n_calcGetValues($ini, $fin, $dates) { global $sql; $ini = b1n_formatDate($ini); $fin = b1n_formatDate($fin); $ret = array(); $query = "\n SELECT\n 1 AS number,\n data\n FROM\n sena\n WHERE\n data BETWEEN '{$ini}' AND '{$fin}' AND (\n d1 = 1 OR d2 = 1 OR d3 = 1 OR d4 = 1 OR d5 = 1 OR d6 = 1)"; for ($i = 2; $i <= 60; $i++) { $query .= "\n UNION (\n SELECT\n {$i} AS number,\n data\n FROM\n sena\n WHERE\n data BETWEEN '{$ini}' AND '{$fin}' AND (\n d1 = {$i} OR d2 = {$i} OR d3 = {$i} OR d4 = {$i} OR d5 = {$i} OR d6 = {$i}))"; } $ret = $sql->sqlQuery($query); $d = array(); $aux = $dates; $last = array_shift($aux); foreach ($ret as $x) { $aux = $x['number']; $d[$aux][$last] = 100; foreach ($dates as $y) { if (b1n_cmp($x['data'], $y)) { $v = round(sizeof($d[$aux]) / 3); } else { $v = round(sizeof($d[$aux]) / 3) * -1; } $d[$aux][$y] = $d[$aux][$last] + $v; $last = $y; } } return $d; }
function b1n_regChange($sql, &$ret_msgs, $reg_data, $reg_config, $table, $msg, $module_function = "") { $rs = $sql->query("BEGIN TRANSACTION"); if ($rs) { $query = "SELECT * FROM \"" . $table . "\" WHERE " . $reg_config["ID"]["db"] . " = '" . b1n_inBd($reg_data['id']) . "'"; $update = ""; $old_values = $sql->singleQuery($query); foreach ($reg_config as $t => $r) { $value = $reg_data[$r['reg_data']]; $aux = ""; // Fields if ($r['db'] == 'none') { continue; } // Values switch ($r['type']) { case "select": switch ($r['extra']['seltype']) { case "date": case "date_check_exp": case "date_check_dob": $aux = b1n_formatDate($value); $old_values[$r['db']] = b1n_formatDate(b1n_formatDateFromDb($old_values[$r['db']])); break; case "date_hour": $aux = b1n_formatDateHour($value); $old_values[$r['db']] = b1n_formatDateHour(b1n_formatDateHourFromDb($old_values[$r['db']])); break; case "hour": $aux = b1n_formatHour($value); $old_values[$r['db']] = b1n_formatHour(b1n_formatHourFromDb($old_values[$r['db']])); break; default: $aux = $value; break; } break; case "password": if (empty($value)) { // For some reason, switch counts as a loop, so we need to use 'continue(2)' instead of just 'continue' continue 2; } $aux = b1n_crypt($value); break; default: $aux = $value; break; } // Only update if the values changed ($aux != $old...) if ($aux != $old_values[$r['db']]) { if (b1n_checkFilled($aux)) { $aux = $r['db'] . " = '" . b1n_inBd($aux) . "'"; } else { $aux = $r['db'] . " = NULL"; } // Setting update array $update[] = $aux; } } if (is_array($update)) { $update = implode(", ", $update); $query = "UPDATE \"" . $table . "\" SET " . $update . " WHERE " . $reg_config['ID']['db'] . " = '" . b1n_inBd($reg_data['id']) . "'"; $rs = $sql->query($query); } else { $rs = true; } if ($rs) { $aux = true; if (!empty($module_function)) { $reg_data['old_values'] = $old_values; $aux = $module_function($sql, $ret_msgs, $reg_data, $reg_config); } if ($aux) { b1n_retMsg($ret_msgs, b1n_SUCCESS, $msg . ' changed successfully!'); return $sql->query('COMMIT TRANSACTION'); } } } else { b1n_retMsg($ret_msgs, b1n_FIZZLES, 'Could not begin transaction.'); } $sql->query('ROLLBACK TRANSACTION'); return false; }