private static function checkTableForm($formid, $table, $ar, $fields, $subform, $allfields, $onupdate, $relocate = true) { $test = function ($val) use(&$test) { if (is_array($val)) { $val = array_map($test, $val); } else { $val = mysql_real_escape_string($val); } return $val; }; $ar = $test($ar); $line = 0; while (isset($ar[$formid . '_id_' . $line])) { if ($ar[$formid . '_' . $line . '_dirty'] == 1) { $qry = array(); foreach ($fields as $field) { $type = Functions::nz($field['type'], $allfields[$field['name']]['type']); if ($type != 'hidden') { if ($type == 'checkbox') { $val = isset($ar[$formid . '_' . $field['name'] . '_' . $line]) ? 'true' : 'false'; } elseif ($type == 'date') { if ($ar[$formid . '_' . $field['name'] . '_' . $line] == '') { $val = '0000-00-00'; } else { $tmp = new Date(); $tmp->fromstring($ar[$formid . '_' . $field['name'] . '_' . $line]); $val = $tmp->toUS(); } } elseif ($type == 'real') { $val = str_replace(',', '.', str_replace('.', '', $ar[$formid . '_' . $field['name'] . '_' . $line])); } else { $val = $ar[$formid . '_' . $field['name'] . '_' . $line]; } if ($validate = Functions::nz($field['validate'], false)) { if ($validate($val)) { $qry[$field['name']] = $val; } } else { $qry[$field['name']] = $val; } } } DB::ezQuery('UPDATE', $table, $qry, 'id=' . $ar[$formid . '_id_' . $line]); if ($onupdate) { $onupdate($ar[$formid . '_id_' . $line]); } } ++$line; } if ($ar[$formid . '_id_new'] == 1) { $qry = array(); foreach ($fields as $field) { $type = Functions::nz($field['type'], $allfields[$field['name']]['type']); if ($type == 'checkbox') { $val = isset($ar[$formid . '_' . $field['name'] . '_new']) ? 'true' : 'false'; } elseif ($type == 'date') { if ($ar[$formid . '_' . $field['name'] . '_new'] == '') { $val = '0000-00-00'; } else { $tmp = new Date(); $tmp->fromstring($ar[$formid . '_' . $field['name'] . '_new']); $val = $tmp->toUS(); } } elseif ($type == 'real') { $val = str_replace(',', '.', str_replace('.', '', $ar[$formid . '_' . $field['name'] . '_new'])); } else { $val = $ar[$formid . '_' . $field['name'] . '_new']; } if ($validate = Functions::nz($field['validate'], false)) { if ($validate($val)) { $qry[$field['name']] = $val; } } else { $qry[$field['name']] = $val; } } DB::ezQuery('INSERT', $table, $qry); if ($onupdate) { $id = DB::getLastId(); $onupdate($id); } } if ($subform) { foreach ($ar[$formid . '_subforms'] as $subformid) { $rs = DB::fetch('SELECT * FROM ' . $subform['table']); $allFields = array(); $qryFields = $rs->fetchFields(); foreach ($qryFields as $f) { $allFields[$f->name] = array('type' => $f->type); } self::checkTableForm($subformid, $subform['table'], $ar, $subform['fields'], false, $allFields, Functions::nz($subform['onupdate'], false), false); } } if ($relocate) { header('Location: ' . Functions::getArgs('')); } }
public static function find($find, $dict = array()) { static::init(); $where = Functions::nz($dict[self::WHERE], array()); $order = Functions::nz($dict['order'], false); $limit = Functions::nz($dict['limit'], false); $one = Functions::nz($dict['one'], false); $count = Functions::nz($dict['count'], false); if ($count) { $sql = 'SELECT count(id) as count FROM ' . static::getName(); } else { $sql = 'SELECT * FROM `' . static::getName() . '`'; } if (is_numeric($find)) { $one = true; $where[] = "id={$find}"; } elseif ($find == 'first') { $one = true; } if (count($where) > 0) { $sql .= ' WHERE (' . implode(') and (', $where) . ')'; } if ($order) { $sql .= " ORDER BY {$order}"; } if ($limit) { $sql .= " LIMIT {$limit}"; } elseif ($one) { $sql .= ' LIMIT 0,1'; } $res = null; if ($count) { $q = DB::fetchOne($sql); $res = $q['count']; } elseif ($one) { $q = DB::fetchOne($sql); if ($q) { $res = new static($q); } else { $res = false; } } else { $rs = DB::fetch($sql); $ar = array(); while ($row = $rs->next()) { $ar[] = new static($row); } $res = $ar; } return $res; }
private static function findChildrenSub($id, &$ar, $table) { $delomraade_id = 'delomraade_id'; $rs = DB::fetch("SELECT * FROM {$table} WHERE omraade_id={$id}"); while ($row = $rs->next()) { if (!in_array($row[$delomraade_id], $ar)) { $ar[] = $row[$delomraade_id]; self::findChildrenSub($row[$delomraade_id], $ar, $table); } } }