Skip to content
Snippets Groups Projects
FileParser.php 2.99 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 true;
        $i = $j = 0; $resultArr = array();
            // Имя, фамилия, отчество
            list($lastName, $firstName, $secondName) = self::parsePeopleName($line[0]);
            // Курс, степень подготовки
            $studentGradeNum = $line[1];
            $studentGroupNum = $line[2];
            switch($line[3])
            {
                case 'Бакалавр':
                    $studentDegree = 'bachelor';
                break;
                case 'Специалист':
                    $studentDegree = 'specialist';
                break;
                case 'Магистр':
                    $studentDegree = 'master';
                break;
            }
            $studentSpec = $line[4];
            $attempt = Account::instance()->createStudentEx($lastName, $firstName, $secondName, 
                                                $studentGradeNum, $studentGroupNum, $studentDegree, $studentSpec, $facultyID);
            if($attempt == -1)
                $resultArr[$j]['Row'] = $i;
                $resultArr[$j]['Info'] = implode(';', $line);
                $j++;
        return ($j > 0) ? false : $resultArr;
    }
    
    public static function TeachersList($filename)
    {
        if(File::mime($filename) != 'text/plain')
            return true;
        $file = fopen($filename, "r"); 
        $i = 0;
        while ($line = fgetcsv($file, 0, ";")) 
        {
            // Имя, фамилия, отчество
            list($lastName, $firstName, $secondName) = self::parsePeopleName($line[0]);
            $departmentName = $line[1];
            $attempt = Account::instance()->createTeacherByDepName($lastName, $firstName, $secondName, 
                                                $departmentName);
            if($attempt == -1)
                $resultArr[$j]['Row'] = $i;
                $resultArr[$j]['Info'] = implode(';', $line);
                $j++;
        return ($j > 0) ? false : $resultArr;
    }
    
    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);
    }
}