public static function competition_create($courts, $name, $from, $to, $fromt, $tot, $reservations_delete = false, $admin_username) { global $DB; $ret = array(); if (!is_array($courts) || count($courts) == 0) { $ret['success'] = false; $ret['error'] = 'Nincs kiválasztva pálya!'; $ret['error_type'] = 1; } elseif ($name == "") { $ret['success'] = false; $ret['error'] = 'A rendezvény nevének megadása kötelező!'; $ret['error_type'] = 2; } elseif (strtotime($to) < strtotime($from)) { $ret['success'] = false; $ret['error'] = 'A dátum intervallum hibás!'; $ret['error_type'] = 3; } elseif (TimeUnit::convert_to_minutes($tot) <= TimeUnit::convert_to_minutes($fromt)) { $ret['success'] = false; $ret['error'] = 'Az idő intervallum hibás!'; $ret['error_type'] = 4; } else { $where = ' (timeunits.date BETWEEN :from_date AND :to_date) AND ( (timeunits.from>=:from AND timeunits.from<:to) OR (timeunits.to>:from AND timeunits.to<=:to) ) AND timeunits.court_id IN (' . implode(',', $courts) . ') '; $sql = ' SELECT COUNT(*) as c FROM timeunits WHERE ' . $where . ' AND reserved_by IS NOT NULL AND 1=1 '; $sth = $DB->prepare($sql); $sth->bindParam(':from_date', $from, PDO::PARAM_STR); $sth->bindParam(':to_date', $to, PDO::PARAM_STR); $sth->bindParam(':from', $fromt, PDO::PARAM_STR); $sth->bindParam(':to', $tot, PDO::PARAM_STR); $sth->execute(); $c = $sth->fetchColumn(); if ($c > 0 && $reservations_delete === false) { $ret['success'] = false; $ret['error'] = 'A kijelölt időszakban van lefoglalt idősáv. A foglalások törléséhez pipálja be a "foglalások törlése" jelölőnégyzetet.'; $ret['error_type'] = 5; } else { if ($reservations_delete === true) { // foglalások törlése $sql = ' SELECT reservations.* FROM reservations LEFT JOIN timeunits ON (reservations.timeunit_id=timeunits.id) WHERE ' . $where . ' AND reserved_by IS NOT NULL AND 1=1 '; $sth = $DB->prepare($sql); $sth->bindParam(':from_date', $from, PDO::PARAM_STR); $sth->bindParam(':to_date', $to, PDO::PARAM_STR); $sth->bindParam(':from', $fromt, PDO::PARAM_STR); $sth->bindParam(':to', $tot, PDO::PARAM_STR); $sth->execute(); foreach ($sth->fetchAll() as $tmp) { $res = new Reservation($tmp); $res->load_timeunit(); $res->load_user(); $res->is_freeable(true); $res->free($admin_username); } } $sql = ' UPDATE timeunits SET comment=:name, available=0 WHERE ' . $where . ' '; $sth = $DB->prepare($sql); $sth->bindParam(':name', $name, PDO::PARAM_STR); $sth->bindParam(':from_date', $from, PDO::PARAM_STR); $sth->bindParam(':to_date', $to, PDO::PARAM_STR); $sth->bindParam(':from', $fromt, PDO::PARAM_STR); $sth->bindParam(':to', $tot, PDO::PARAM_STR); $sth->execute(); $ret['success'] = true; } } return $ret; }