From 069be914af6df98cc76e36af7fc7e14d3568e044 Mon Sep 17 00:00:00 2001
From: xamgore <xamgore@ya.ru>
Date: Tue, 23 Jun 2015 18:52:46 +0300
Subject: [PATCH] Stronger conditions for filtering parameters

---
 .../classes/Model/Helper/CourseWorkBuilder.php     |  5 ++++-
 .../classes/Model/Helper/DisciplineBuilder.php     | 14 ++++++++++++--
 2 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/~dev_rating/application/classes/Model/Helper/CourseWorkBuilder.php b/~dev_rating/application/classes/Model/Helper/CourseWorkBuilder.php
index 9257035b3..ec119996c 100644
--- a/~dev_rating/application/classes/Model/Helper/CourseWorkBuilder.php
+++ b/~dev_rating/application/classes/Model/Helper/CourseWorkBuilder.php
@@ -42,7 +42,7 @@ class Model_Helper_CourseWorkBuilder extends Model_Helper_Builder
 
     /** Must be called after subtype() */
     function & subject($id) {
-        if ($this->data['Subtype'] == Model_CourseWork::SCIENTIFIC)
+        if ($this->data['Subtype'] === Model_CourseWork::SCIENTIFIC)
             $id = self::COURSEWORK_DISCIPLINE_ID;
 
         if (!is_numeric($id) || $id <= 0)
@@ -53,6 +53,9 @@ class Model_Helper_CourseWorkBuilder extends Model_Helper_Builder
     }
 
     function & subtype($name) {
+        if (!is_string($name))
+            throw new InvalidArgumentException('Type is incorrect');
+
         switch ($name) {
             case Model_CourseWork::DISCIPLINARY:
             case Model_CourseWork::SCIENTIFIC:
diff --git a/~dev_rating/application/classes/Model/Helper/DisciplineBuilder.php b/~dev_rating/application/classes/Model/Helper/DisciplineBuilder.php
index e161e445e..21d8218fd 100644
--- a/~dev_rating/application/classes/Model/Helper/DisciplineBuilder.php
+++ b/~dev_rating/application/classes/Model/Helper/DisciplineBuilder.php
@@ -65,8 +65,18 @@ class Model_Helper_DisciplineBuilder extends Model_Helper_Builder
     }
 
     function & type($name) {
-        if (!$name)  // todo: enum
-            throw new InvalidArgumentException('type is incorrect');
+        if (!is_string($name))
+            throw new InvalidArgumentException('Type is incorrect');
+
+        switch ($name) {
+            case Model_Discipline::EXAM:
+            case Model_Discipline::CREDIT:
+            case Model_Discipline::GRADING_CREDIT:
+                break;
+            default:
+                throw new InvalidArgumentException('Type is incorrect');
+        }
+
         $this->data['Type'] = $name;
         return $this;
     }
-- 
GitLab