Skip to content
Snippets Groups Projects
FileParser.php 2.74 KiB
Newer Older
<?php defined('SYSPATH') or die('No direct script access.');

class FileParser
{
    public static function StudentsList($filename, $facultyID)
    {
        $model = new Model_Admin_Students;
        if(File::mime($filename) != 'text/plain')
            return false;
        $file = fopen($filename, "r"); 
        $i = 0;
        while ($line = fgetcsv($file, 0, ";")) 
        {
                // Имя, фамилия, отчество
                list($lastName, $firstName, $secondName) = self::parsePeopleName($line[0]);
                // Курс, степень подготовки
                $studentGradeNum = $line[1];
                switch($line[2])
                {
                    case 'Бакалавр':
                        $studentDegree = 'bachelor';
                    break;
                    case 'Специалист':
                        $studentDegree = 'specialist';
                    break;
                    case 'Магистр':
                        $studentDegree = 'master';
                    break;
                }
                $studentGroupNum = $line[3];
                $studentGradeID = $model->getGradeID($studentGradeNum, $studentDegree);
                Account::instance()->createStudent($lastName, $firstName, $secondName, 
                                                    $studentGradeID, $studentGroupNum, $facultyID);
            }
            $i++;
        }
        return true;
    }
    
    public static function TeachersList($filename)
    {
        if(File::mime($filename) != 'text/plain')
            return false;
        $file = fopen($filename, "r"); 
        $i = 0;
        while ($line = fgetcsv($file, 0, ";")) 
        {
            if($i > 0)
            {
                // Имя, фамилия, отчество
                list($lastName, $firstName, $secondName) = self::parsePeopleName($line[0]);
                $departmentName = $line[1];
                Account::instance()->createTeacherByDepName($lastName, $firstName, $secondName, 
                                                    $departmentName);
            }
            $i++;
        }
        return true;
    }
    
    protected static function parsePeopleName($name)
    {
        $nameExploded = explode(' ', $name); 
        $idx = 0; $nameHandled = array();
        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);
    }
}