Пример #1
0
 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(''));
     }
 }
Пример #2
0
 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;
 }
Пример #3
0
 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);
         }
     }
 }