From d946228868f6df51d71f10fbcfa3aec213a0a280 Mon Sep 17 00:00:00 2001 From: xamgore <xamgore@ya.ru> Date: Fri, 19 Jun 2015 15:02:04 +0300 Subject: [PATCH] Filter of invisible symbols + refactoring --- .../application/classes/FileParser.php | 34 ++++++------------- .../application/classes/Model/Account.php | 12 +++---- 2 files changed, 16 insertions(+), 30 deletions(-) diff --git a/~dev_rating/application/classes/FileParser.php b/~dev_rating/application/classes/FileParser.php index e1ed67f2c..3c472500f 100644 --- a/~dev_rating/application/classes/FileParser.php +++ b/~dev_rating/application/classes/FileParser.php @@ -19,10 +19,10 @@ class FileParser while ($line = fgetcsv($file, 0, ";")) { // Р¤РРћ, РєСѓСЂСЃ, степень подготовки, - list($name, $gradeNum, $groupNum, $degree, $spec) = $line; + list($name, $gradeNum, $groupNum, $degree, $spec) = UTF8::clear($line); // Фамилия, РёРјСЏ, отчество - list($lastName, $firstName, $secondName) = self::parsePeopleName($name); + list($lastName, $firstName, $secondName) = self::parseFullName($name); $degree = Model_Grades::getDegreeType($degree); @@ -54,11 +54,12 @@ class FileParser $count = $exists = 0; $errors = []; - while (list($name, $abbr) = fgetcsv($file, 0, ";")) { + while ($line = fgetcsv($file, 0, ";")) { + list($name, $abbr) = UTF8::clear($line); $attempt = Model_Subject::create($name, $abbr, $facultyID); if ($attempt < 0) { - $errors[] = ['Row' => $count, 'Info' => $name . ';' . $abbr]; + $errors[] = ['Row' => $count, 'Info' => implode(';', $line)]; } elseif ($attempt == 1) { $exists++; } @@ -99,7 +100,7 @@ class FileParser list($name, $department, $facultyName) = UTF8::clear($line); // Фамилия, РёРјСЏ, отчество - list($lastName, $firstName, $secondName) = self::parsePeopleName($name); + list($lastName, $firstName, $secondName) = self::parseFullName($name); // if ($facultyName) // $facultyID = $faculties[trim($facultyName)]; @@ -116,25 +117,10 @@ class FileParser return $errors; } - private static function parsePeopleName($name) { - $nameExploded = explode(' ', $name); - - $idx = 0; - $nameHandled = []; - + private static function parseFullName($name) { // Енотова (Сенченко) Наталья Лин Чу Геннадьевна - if (UTF8::substr($nameExploded[1], 0, 1) == '(') { - $idx = 1; - } - - $nameHandled[0] = $nameExploded[0]; - $nameHandled[1] = $nameExploded[1 + $idx]; - $nameHandled[2] = ''; - - for ($i = 2 + $idx; $i < count($nameExploded); $i++) { - $nameHandled[2] .= $nameExploded[$i] . ' '; - } - - return Arr::map('trim', $nameHandled); + $name = preg_replace('/\(.*\)\s+/', '', $name); + $res = explode(' ', $name, 3); + return Arr::map('trim', $res); } } \ No newline at end of file diff --git a/~dev_rating/application/classes/Model/Account.php b/~dev_rating/application/classes/Model/Account.php index 00b2725ce..5e3077b8f 100644 --- a/~dev_rating/application/classes/Model/Account.php +++ b/~dev_rating/application/classes/Model/Account.php @@ -73,9 +73,9 @@ class Model_Account extends Model $response = DB::query(Database::SELECT, $sql) ->parameters([ - ':last' => $lastName, - ':first' => $firstName, - ':second' => $secondName, + ':last' => trim($lastName), + ':first' => trim($firstName), + ':second' => trim($secondName), ':grade' => $grade, ':group' => $groupNum, ':faculty' => $facultyID, @@ -95,9 +95,9 @@ class Model_Account extends Model $sql = "SELECT `CreateStudentEx`(:last, :first, :second, :grade, :group, :degree, :spec, :faculty, :code, :semester) AS `UserID`;"; $response = DB::query(Database::SELECT, $sql) ->parameters([ - ':last' => $lastName, - ':first' => $firstName, - ':second' => $secondName, + ':last' => trim($lastName), + ':first' => trim($firstName), + ':second' => trim($secondName), ':grade' => $gradeNum, ':group' => $groupNum, ':degree' => $degree, -- GitLab