示例#1
0
文件: calc.lib.php 项目: mmr/b1n
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;
}
示例#2
0
文件: reg.lib.php 项目: mmr/b1n
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;
}