- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
public function catalog_add() {
if (Route::is_post()) {
$this->L->view = false;
$errors = array();
$Company = new Model_Companies();
$Company->fillFromArray($_POST['companies']);
if (!$Company['cats_id']) {
$errors[] = 'Не выбрана категория';
}
if (!preg_match('/^\d{2}\.\d{2}\.\d{4}$/', $Company['startdate'])) {
$errors[] = 'Неверный формат начала периода размещения';
}
if (!preg_match('/^\d{2}\.\d{2}\.\d{4}$/', $Company['enddate'])) {
$errors[] = 'Неверный формат конца периода размещения';
}
if (!preg_match('/^\d{2}\.\d{2}\.\d{4}$/', $Company['position_start'])) {
$errors[] = 'Неверный формат начала действия приоритетной позиции';
}
if (!preg_match('/^\d{2}\.\d{2}\.\d{4}$/', $Company['position_end'])) {
$errors[] = 'Неверный формат конца действия приоритетной позиции';
}
//проверка на существования графика работы
$noSchedule = true;
foreach ($_POST['schedule'] as $key => $value) {
if (isset($value['work'])) {
$noSchedule = false;
break;
}
}
if ($noSchedule) {
$errors[] = 'Не указано ни одного рабочего дня';
} else {
//проверка рабочего времени
foreach ($_POST['schedule'] as $key => $value) {
if (isset($value['work'])) {
if (!preg_match('/^(2[0-3]|[01][0-9]):[0-5][0-9]$/', $value['start']) || !preg_match('/^(2[0-3]|[01][0-9]):[0-5][0-9]$/', $value['end'])) {
$errors[] = 'Неверный формат времени работы в ' . strtolower(Model_Schedule::$days[$key]);
} else {
//проверка грамотности, конец больше начала
if (strtotime($value['start']) > strtotime($value['end'])) {
$errors[] = 'Конец работы должен быть позже времени начала в ' . strtolower(Model_Schedule::$days[$key]);
} else {
//провека обеда
if (isset($value['lunch'])) {
if (!preg_match('/^(2[0-3]|[01][0-9]):[0-5][0-9]$/', $value['lunch_start']) || !preg_match('/^(2[0-3]|[01][0-9]):[0-5][0-9]$/', $value['lunch_end'])) {
$errors[] = 'Неверный формат времени обеда в ' . strtolower(Model_Schedule::$days[$key]);
} else {
//проверка грамотности границ обеда
if (strtotime($value['lunch_start']) > strtotime($value['lunch_end'])) {
$errors[] = 'Конец обеденного перерыва должен быть позже времени начала в ' . strtolower(Model_Schedule::$days[$key]);
} else {
//проверка что обед вмещается в рабочее время
if ($value['lunch_start'] < $value['start'] || $value['lunch_end'] > $value['end']) {
$errors[] = 'Обед выходит за рамки указанного рабочего времени в ' . strtolower(Model_Schedule::$days[$key]);
}
}
}
}
}
}
}
}
}
//todo: сделать проверку на занятость приоритетной позиции в выбраной категории в указанный период
if (!count($errors)) {
//если нет ошибок то пишем
$Company->save();
foreach ($_POST['schedule'] as $key => $value) {
if (isset($value['work'])) {
$Schedule = new Model_Schedule();
$Schedule->fillFromArray($value);
$Schedule['day'] = $key;
$Schedule['companies_id'] = $Company['id'];
$Schedule->save();
}
}
}
echo json_encode($errors);
}
}
bormand 17.05.2014 13:48 # +3
49.15.2014
P.S. Регулярку для проверки диапазонов чисел я когда-то писал... А вот для дат что-то страшновато браться.
bormand 17.05.2014 13:52 # 0
gost 19.05.2014 21:56 # 0
[0-9]{2}/[0-9]{2}/[0-9]{4}
and then checking ranges in a higher-level language.
bormand 19.05.2014 21:59 # +2
eth0 17.05.2014 17:12 # +1
bormand 17.05.2014 19:22 # 0
(0[1-9]|[12][0-9]|3[01])\.(0[1-9]|1[12])\.20[0-9]{2}
Но это не учитывает длину месяцев ;)
P.S. Генератор для проверки диапазонов чисел был где-то у меня в кабинке.
eth0 17.05.2014 19:39 # 0
bormand 17.05.2014 19:46 # 0
Зачем придумывать? Я же выше кинул ссылку на stackoverflow. Там эту проблему уже решили ;)
eth0 17.05.2014 20:34 # 0
1024-- 17.05.2014 20:40 # +1
Эмоции переполняют, хочется ответить комментарием в стиле тов. Пи, заканчивающимся большими буквами и СТРАШНЫМ ПРОКЛЯТИЕМ.
bormand 18.05.2014 11:39 # 0
Заинтриговал :) Можно услышать комментарий, которым хотелось бы ответить?
1024-- 18.05.2014 12:35 # +1
http://govnokod.ru/13938#comment200369
http://govnokod.ru/12109#comment160442
После изучения комментариев оказалось, что подобное завершение не очень распространено, а просто мне запомнился единственный комментарий в таком стиле, который я видел.
Вероятно, комментарии в стиле "у меня %капсболд%" или "да у тебя же %капсболд%" (таких примерно пара-тройка десятков) усиливают впечатление.
http://govnokod.ru/8146#comment113244
http://govnokod.ru/11754#comment153643
http://govnokod.ru/15602#comment223104
http://govnokod.ru/15923#comment230979
guest 18.05.2014 15:44 # 0
Алсо только первая ссылка подсвечивается.
1024-- 18.05.2014 15:47 # 0
Уже все подсвечиваются
http://govnokod.ru/15952#comment232502
guest 19.05.2014 00:58 # 0
1024-- 19.05.2014 01:08 # 0
guest 19.05.2014 02:57 # 0
bormand 19.05.2014 05:09 # 0
Ага.
guest 19.05.2014 09:50 # 0
bormand 19.05.2014 10:42 # 0
В pre-commit хуке можно написать простановку версии. Просто лениво.
guest 19.05.2014 12:48 # 0
bormand 19.05.2014 14:03 # 0
Перед коммитом гит запускает скрипт (на любом языке), прописанный как pre-commit хук. А там уже вписываешь что хочешь и куда хочешь...
guest 20.05.2014 02:17 # 0
guest 20.05.2014 02:22 # 0
guest 20.05.2014 02:26 # 0
guest 20.05.2014 06:42 # 0
bormand 20.05.2014 06:52 # 0
Я тортойз не юзал ни разу. Так что х.з.
> одинаковые файлы разных ревизий будут разными
Походу будут, если ты в них версию вписываешь. Поэтому на компилируемых языках ревизию часто сохраняют во временный файлик, который не хранится в системе контроля версий, но участвует в сборке проекта...
guest 20.05.2014 06:54 # −1
bormand 20.05.2014 06:55 # 0
Как-то так: http://www.visualsvn.com/support/svnbook/advanced/props/special/keywords/
guest 20.05.2014 13:59 # 0
guest 20.05.2014 07:09 # 0
bormand 20.05.2014 05:12 # 0
Зависит от хука. pre-commit локально, на клиенте, т.к. запускается перед тем, как показать окошко коммита. А на серваке другие есть (после отправки пачки на сервер например).