From 969bc99f5c186592d29794607c7b7c97649dbea5 Mon Sep 17 00:00:00 2001
From: xamgore <xamgore@ya.ru>
Date: Wed, 24 Jun 2015 17:39:40 +0300
Subject: [PATCH] Strong check of existing fields

---
 .../classes/Model/Helper/CourseWorkBuilder.php            | 8 +++++++-
 .../classes/Model/Helper/DisciplineBuilder.php            | 7 ++++++-
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/~dev_rating/application/classes/Model/Helper/CourseWorkBuilder.php b/~dev_rating/application/classes/Model/Helper/CourseWorkBuilder.php
index ec119996c..ecb120e97 100644
--- a/~dev_rating/application/classes/Model/Helper/CourseWorkBuilder.php
+++ b/~dev_rating/application/classes/Model/Helper/CourseWorkBuilder.php
@@ -9,11 +9,17 @@ class Model_Helper_CourseWorkBuilder extends Model_Helper_Builder
             'Lectures'  => 0,
             'Practice'  => 0,
             'Labs'      => 0,
+            'Milestone' => null,
             'IsLocked'  => false,
             'Type'      => 'grading_credit',
         ];
 
-        if (count($this->data) < 11)  # fixme: bad const
+        $required = [
+            'Subtype', 'IsLocked', 'Milestone', 'AuthorID', 'GradeID', 'FacultyID',
+            'SubjectID', 'Lectures', 'Practice', 'Labs', 'Type', 'SemesterID'
+        ];
+
+        if (array_diff($required, array_keys($this->data)))
             throw new InvalidArgumentException('not enough arguments');
 
         return new Model_CourseWork($this->data, false);
diff --git a/~dev_rating/application/classes/Model/Helper/DisciplineBuilder.php b/~dev_rating/application/classes/Model/Helper/DisciplineBuilder.php
index 21d8218fd..b6e0b88a4 100644
--- a/~dev_rating/application/classes/Model/Helper/DisciplineBuilder.php
+++ b/~dev_rating/application/classes/Model/Helper/DisciplineBuilder.php
@@ -9,7 +9,12 @@ class Model_Helper_DisciplineBuilder extends Model_Helper_Builder
             'Milestone' => 0,
         ];
 
-        if (count($this->data) < 12)  # fixme: bad const
+        $required = [
+            'Subtype', 'IsLocked', 'Milestone', 'AuthorID', 'GradeID', 'FacultyID',
+            'SubjectID', 'Lectures', 'Practice', 'Labs', 'Type', 'SemesterID'
+        ];
+
+        if (array_diff($required, array_keys($this->data)))
             throw new InvalidArgumentException('not enough arguments');
 
         return new Model_Discipline($this->data, false);
-- 
GitLab