public function indexAction()
 {
     $have_integrate = 0;
     $is_integrate = "";
     $user = Rp_User::getInstance();
     $user_id = $user->getPersonId();
     $integrated = new Rp_Db_View_IntegratedPersons();
     $refer_id = $integrated->fetchRefID($user_id);
     //		if (($user_id >= 90000000) OR (count($refer_id) > 0))
     //		if ($user_id >= 90000000)
     switch ($user->persg) {
         case 2:
         case 3:
         case 7:
         case 8:
         case 'S':
             $have_integrate = 1;
             $is_integrate = "—овместитель";
             break;
         default:
             if (count($refer_id) > 0) {
                 $have_integrate = 1;
             }
             break;
     }
     $view = $this->initView();
     $view->title = Rp::getTitle();
     $view->have_integrate = $have_integrate;
     $view->is_integrate = $is_integrate;
 }
 public function indexAction()
 {
     $request = $this->getRequest();
     $taskId = $request->getParam('taskid');
     $is_personal = $request->getParam('is_personal', 0);
     $tasks = new Rp_Db_Table_Ach_Tasks();
     $task = $tasks->find($taskId)->current();
     $notes = new Rp_Db_Table_Ach_Tasks_Notes();
     switch ($is_personal) {
         case 0:
             $note = $notes->fetchTaskNotes($task->id);
             break;
         case 1:
             $note = $notes->fetchPersonalManagerNotes($task->id);
             break;
         default:
             $note = $notes->fetchTaskNotes($task->id);
             break;
     }
     //$note = $notes->fetchTaskNotes($task->id);
     $view = $this->initView();
     $view->title = Rp::getTitle('Заметки к бизнес-цели #' . $task->id);
     $view->task = $task;
     $view->is_personal = $is_personal;
     $view->notes = $note;
 }
 /**
  * Возвращает объект адаптера базы данных системы.
  *
  * @return Zend_Db_Adapter_Abstract
  */
 public function getAdapter()
 {
     if (empty(self::$_db)) {
         self::$_db = Rp::getDbAdapter();
     }
     return self::$_db;
 }
 public function indexAction()
 {
     $personId = $this->_getParam('personid', null);
     $persons = new Rp_Db_View_Persons();
     $person = $persons->find($personId)->current();
     $view = $this->initView();
     $view->title = Rp::getTitle(array($person->fullname, 'Карточка сотрудника'));
     $view->person = $person;
 }
 private function _fetch($keyName, $postIds, $periodFirst, $periodSecond, $table)
 {
     $db = Rp::getDbAdapter();
     $postIds = $db->quote($postIds);
     $periodFirst = $db->quote($periodFirst);
     $periodSecond = $db->quote($periodSecond);
     $sql = "\r\n\t\t\tSELECT DISTINCT\r\n\t\t\t\tpersons.id,\r\n\t\t\t\tpersons.persg,\r\n\t\t\t\tpersons.pgtxt,\r\n\t\t\t\tpersons.fullname,\r\n\t\t\t\tdepartments.name AS department,\r\n\t\t\t\tappointments.name AS appointment,\r\n\t\t\t\tcards_first.status_id AS statusFirstId,\r\n\t\t\t\tcards_second.status_id AS statusSecondId,\r\n\t\t\t\tstatuses_first.name AS statusFirst,\r\n\t\t\t\tstatuses_second.name AS statusSecond,\r\n\t\t\t\tratings_first.name AS ratingFirst,\r\n\t\t\t\tratings_second.name AS ratingSecond,\r\n\t\t\t\temployees.endtest_date\r\n\r\n\t\t\tFROM\r\n\t\t\t\t{$table} posts_employees\r\n\t\t\t\tINNER JOIN user_rp_employees_PM employees\r\n\t\t\t\t\tON posts_employees.{$keyName} IN ({$postIds}) AND posts_employees.person_id = employees.person_id\r\n\t\t\t\tINNER JOIN user_rp_persons_PM persons\r\n\t\t\t\t\tON employees.person_id = persons.id\r\n\t\t\t\tLEFT JOIN user_rp_departments departments\r\n\t\t\t\t\tON employees.department_id = departments.id\r\n\t\t\t\tLEFT JOIN user_rp_appointments appointments\r\n\t\t\t\t\tON employees.appointment_id = appointments.id\r\n\t\t\t\tLEFT JOIN user_rp_ach_cards cards_first\r\n\t\t\t\t\tON persons.id = cards_first.person_id AND cards_first.period = '{$periodFirst}'\r\n\t\t\t\tLEFT JOIN user_rp_ach_cards cards_second\r\n\t\t\t\t\tON persons.id = cards_second.person_id AND cards_second.period = '{$periodSecond}'\r\n\t\t\t\tLEFT JOIN user_rp_ach_cards_statuses statuses_first\r\n\t\t\t\t\tON cards_first.status_id = statuses_first.id\r\n\t\t\t\tLEFT JOIN user_rp_ach_cards_statuses statuses_second\r\n\t\t\t\t\tON cards_second.status_id = statuses_second.id\r\n\t\t\t\tLEFT JOIN user_rp_ach_ratings ratings_first\r\n\t\t\t\t\tON cards_first.rtg_total_id = ratings_first.id\r\n\t\t\t\tLEFT JOIN user_rp_ach_ratings ratings_second\r\n\t\t\t\t\tON cards_second.rtg_total_id = ratings_second.id\r\n\r\n\t\t\tWHERE persons.out_date = ' ' OR persons.out_date = ''\r\n\r\n\t\t\tORDER BY\r\n\t\t\t\tpersons.fullname\r\n\t\t";
     return $db->fetchAll($sql);
 }
 public function indexAction()
 {
     $request = $this->getRequest();
     $cards = new Rp_Db_Table_Ach_Cards();
     $id = $request->getParam('id', null);
     if ($id !== null) {
         $card = $cards->find($id)->current();
         if (empty($card)) {
             throw new Exception('Карточка достижений с указанным идентификатором не найдена.');
         }
     } else {
         $personId = $request->getParam('personid', null);
         $period = $request->getParam('period', date('Y'));
         $card = $cards->findByPersonIdAndPeriod($personId, $period);
     }
     $user = Rp_User::getInstance();
     $emp = $card->getEmployee();
     $person = $emp->getPerson();
     $periods = range(2006, date('Y') + 1);
     $periods = array_combine($periods, $periods);
     $statuses = new Rp_Db_Table_Ach_Cards_Statuses();
     $status = $statuses->find($card->status_id)->current();
     $months = new Rp_Db_Table_Months();
     $ratings = new Rp_Db_Table_Ach_Ratings();
     $trainsGroupsMethods = new Rp_Db_Table_Ach_Trainings_GroupsMethods();
     $trainsRespons = new Rp_Db_Table_Ach_Trainings_Respons();
     $careerFlags = new Rp_Db_Table_Ach_Cards_CareerFlags();
     $view = $this->initView();
     $view->title = Rp::getTitle(array($person->fullname, "Карточка достижений {$card->period}"));
     $view->emp = $emp;
     $view->person = $person;
     $view->user = $user;
     $view->userRole = $this->_getUserRole($card, $user);
     $view->card = $card;
     $view->periods = $periods;
     $view->status = $status;
     $view->tasks = $card->fetchTasks();
     $view->personalTasks = $card->fetchPersonalTasks();
     $view->competences = $card->fetchCompetences();
     $view->personalCompetences = $card->fetchPersonalCompetences();
     $view->trainings = $card->fetchTrainings();
     $view->personalTrainings = $card->fetchPersonalTrainings();
     $view->approvals = new Achievs_ApprovalsModel($card);
     $view->months = $months->fetchNames();
     $view->ratings = $ratings->fetchNames();
     $view->rate_weights = $ratings->fetchWeights();
     $view->rate_name_weights = $ratings->fetchNameWeights();
     $view->trainsGroupsMethods = $trainsGroupsMethods->toArrayNames();
     $view->trainsGroupsMethodsActual = $trainsGroupsMethods->toArrayNamesWithoutDisabled();
     $view->trainsRespons = $trainsRespons->fetchNames();
     $view->careerFlags = $careerFlags->fetchNames();
     $view->count_func = count($emp->getFuncManagers()->getCol('person_id'));
     $view->emails = $this->_getEmails($card, $user);
     $view->tab = isset($_SESSION['tab']) ? $_SESSION['tab'] : 'tasks';
 }
 public function indexAction()
 {
     $request = $this->getRequest();
     $trainId = $request->getParam('trainId');
     $trainings = new Rp_Db_Table_Ach_Trainings();
     $training = $trainings->find($trainId)->current();
     $view = $this->initView();
     $view->title = Rp::getTitle('Заметки к цели проф. развития #' . $training->id);
     $view->training = $training;
     $view->notes = $training->fetchNotes();
 }
 public function indexAction()
 {
     $ratePeriod = 2007;
     $planPeriod = 2008;
     $db = Rp::getDbAdapter();
     $sql = "\r\n\t\t\tSELECT\r\n\t\t\t\tpersons.id,\r\n\t\t\t\tpersons.fullname,\r\n\t\t\t\tcompanies.name AS company,\r\n\t\t\t\tappointments.name AS appointment,\r\n\t\t\t\tdepartments.name AS department,\r\n\t\t\t\trate_mng_date = CASE WHEN cards_rate.rate_mng_status IS NULL THEN 'нет' \r\n\t\t\t\t\tELSE CONVERT(varchar(255), cards_rate.rate_mng_date, 104) END,\r\n\t\t\t\trate_emp_date = CASE WHEN cards_rate.rate_emp_status IS NULL THEN 'нет' \r\n\t\t\t\t\tWHEN cards_rate.rate_emp_status = 0 THEN 'несогласен'\r\n\t\t\t\t\tELSE CONVERT(varchar(255), cards_rate.rate_emp_date, 104) END,\r\n\t\t\t\trate_hmg_date = CASE WHEN cards_rate.rate_hmg_status IS NULL THEN 'нет' \r\n\t\t\t\t\tWHEN cards_rate.rate_hmg_status = 0 THEN 'несогласен'\r\n\t\t\t\t\tELSE CONVERT(varchar(255), cards_rate.rate_hmg_date, 104) END,\r\n\t\t\t\tratings.name AS rtg_total,\r\n\t\t\t\tplan_mng_date = CASE WHEN cards_plan.plan_mng_status IS NULL THEN 'нет' \r\n\t\t\t\t\tELSE CONVERT(varchar(255), cards_plan.plan_mng_date, 104) END,\r\n\t\t\t\tplan_emp_date = CASE WHEN cards_plan.plan_emp_status IS NULL THEN 'нет' \r\n\t\t\t\t\tWHEN cards_plan.plan_emp_status = 0 THEN 'несогласен'\r\n\t\t\t\t\tELSE CONVERT(varchar(255), cards_plan.plan_emp_date, 104) END,\r\n\t\t\t\tplan_hmg_date = CASE WHEN cards_plan.plan_hmg_status IS NULL THEN 'нет' \r\n\t\t\t\t\tWHEN cards_plan.plan_hmg_status = 0 THEN 'несогласен'\r\n\t\t\t\t\tELSE CONVERT(varchar(255), cards_plan.plan_hmg_date, 104) END,\r\n\t\t\t\tdbo.user_func_rp_department_path(employees.department_id, DEFAULT) AS department_path,\r\n\t\t\t\tdbo.user_func_rp_tree_post_persons(posts_employees.post_pid, ', ', '; ') AS managers\r\n\t\t\tFROM\r\n\t\t\t\tuser_rp_tree_posts_employees_PM posts_employees\r\n\t\t\t\tINNER JOIN user_rp_persons_PM persons\r\n\t\t\t\t\tON posts_employees.person_id = persons.id\r\n\t\t\t\tINNER JOIN user_rp_employees_PM employees\r\n\t\t\t\t\tON persons.id = employees.person_id\r\n\t\t\t\tLEFT JOIN user_rp_companies companies\r\n\t\t\t\t\tON employees.company_id = companies.id\r\n\t\t\t\tLEFT JOIN user_rp_departments departments\r\n\t\t\t\t\tON employees.department_id = departments.id\r\n\t\t\t\tLEFT JOIN user_rp_appointments appointments\r\n\t\t\t\t\tON employees.appointment_id = appointments.id\r\n\t\t\t\tLEFT JOIN user_rp_ach_cards cards_rate\r\n\t\t\t\t\tON persons.id = cards_rate.person_id AND cards_rate.period = {$ratePeriod}\r\n\t\t\t\tLEFT JOIN user_rp_ach_cards cards_plan\r\n\t\t\t\t\tON persons.id = cards_plan.person_id AND cards_plan.period = {$planPeriod}\r\n\t\t\t\tLEFT JOIN user_rp_ach_ratings ratings\r\n\t\t\t\t\tON cards_rate.rtg_total_id = ratings.id\r\n\t\t\tORDER BY\r\n\t\t\t\tpersons.fullname\r\n\t\t";
     $view = $this->initView();
     $view->title = Rp::getTitle('—водный отчет по сотрудникам');
     $view->rows = $db->fetchAll($sql);
     $view->ratePeriod = $ratePeriod;
     $view->planPeriod = $planPeriod;
 }
 public function indexAction()
 {
     $request = $this->getRequest();
     $authtype = Rp_Auth_Adapter_DbTable::AUTH_TRANSPARENT;
     $username = basename($request->getServer('AUTH_USER', NULL));
     $password = '';
     if ($_POST or isset($_GET['force_auth'])) {
         $authtype = Rp_Auth_Adapter_DbTable::AUTH_FORM;
         $username = $request->getPost('username', NULL);
         $password = $request->getPost('password', NULL);
     }
     $message = '';
     if ($username) {
         try {
             $auth = Zend_Auth::getInstance();
             $adapter = new Rp_Auth_Adapter_DbTable($username, $password, $authtype);
             $result = $auth->authenticate($adapter);
             if ($result->isValid()) {
                 $row = $adapter->getResultRowObject('id');
                 Rp_User::setInstance($row->id);
                 $user = Rp_User::getInstance();
                 $appointments = new Rp_Db_View_Appointments();
                 $log = new Rp_Db_Table_Logon();
                 if (!isset($_SESSION['user_id'])) {
                     $logon = array();
                     $logon['session_id'] = session_id();
                     $logon['user_id'] = $user->getPerson()->id;
                     $logon['userfullname'] = $user->getPerson()->fullname;
                     $logon['userpost'] = current($appointments->fetchNames($user->getEmployee()->appointment_id));
                     $logon['date_logon'] = date("m.d.y H:i:s");
                     $logon['ip'] = $_SERVER['REMOTE_ADDR'];
                     $logon['version'] = $_SERVER['HTTP_USER_AGENT'];
                     $log->insert($logon);
                     $_SESSION['user_id'] = $user->getPerson()->id;
                 }
                 $this->_forward('index', 'index');
                 return;
             } elseif ($result->getCode() != Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND) {
                 $message = implode("\n", $result->getMessages());
             } elseif ($authtype == Rp_Auth_Adapter_DbTable::AUTH_FORM) {
                 $message = 'ѕользователь с указанным сочетанием логин/пароль не найден.';
             }
         } catch (Exception $e) {
             $message = $e->getMessage();
         }
     }
     $view = $this->initView();
     $view->title = Rp::getTitle('јвторизаци¤');
     $view->message = $message;
 }
 public function errorAction()
 {
     $errors = $this->getRequest()->getParam('error_handler');
     $e = isset($errors->exception) ? $errors->exception : null;
     $this->getResponse()->clearBody();
     $view = $this->initView();
     $view->title = Rp::getTitle('—ообщение об ошибке');
     $view->caption = 'ќшибка';
     $view->message = '';
     if ($e instanceof Exception) {
         if (Rp::getConfig('system')->debug_mode) {
             $view->message = $e->__toString();
         } else {
             $view->message = $e->getMessage();
         }
     }
 }
 /**
  * Конструктор.
  *
  * @param string $username Имя пользователя.
  * @param string $password Пароль пользователя.
  * @param int    $authtype Тип авторизации.
  *
  * @return void
  * @throws Exception
  */
 public function __construct($username, $password, $authtype)
 {
     $identityColumn = '';
     $credentialColumn = 'password';
     if ($authtype === self::AUTH_TRANSPARENT) {
         $identityColumn = 'netname';
     } elseif ($authtype === self::AUTH_FORM) {
         if (!$password) {
             throw new Exception('Не указан пароль пользователя.');
         }
         $identityColumn = 'login';
     } else {
         throw new Exception('Не верно указан тип авторизации.');
     }
     if (!$username) {
         throw new Exception('Не указан логин пользователя.');
     }
     $this->setIdentity($username);
     $this->setCredential($password);
     parent::__construct(Rp::getDbAdapter(), 'user_rp_persons_PM', $identityColumn, $credentialColumn);
 }
Example #12
0
 /**
  * Возвращает объект адаптера базы данных системы.
  * Тип адаптера и параметры соединения должны быть указаны
  * в системном конфигурационном файле {@link CONFIG} в разделе "database".
  * 
  * @return Zend_Db_Adapter_Abstract
  * @throws Exception
  */
 public static function getDbAdapter()
 {
     if (empty(self::$_db)) {
         $adapter = null;
         $params = self::getConfig('database')->toArray();
         if (isset($params['adapter'])) {
             $adapter = $params['adapter'];
             unset($params['adapter']);
         }
         self::$_db = Zend_Db::factory($adapter, $params);
     }
     return self::$_db;
 }
 /**
  * Конструктор.
  *
  * @return void
  */
 public function __construct()
 {
     parent::__construct(Rp::getDbAdapter());
 }
<?php

date_default_timezone_set('Europe/Moscow');
set_include_path('../library');
require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();
ini_set('display_errors', Rp::getConfig('system')->debug_mode);
Zend_Controller_Action_HelperBroker::addHelper(new Rp_Controller_Action_Helper_ViewRenderer());
Zend_Controller_Front::getInstance()->registerPlugin(new Rp_Controller_Plugin_System())->addModuleDirectory('../application')->dispatch();
 public function indexAction()
 {
     $user = Rp_User::getInstance();
     $view = $this->initView();
     $view->title = Rp::getTitle('Справка');
 }
 public function indexAction()
 {
     set_time_limit(self::TIME_LIMIT);
     $logPath = './log/log_' . date('YmdHis') . '.txt';
     $this->_logHandle = @fopen($logPath, 'xb');
     $maxTimeCheck = time() - self::DAYS_LIMIT * 24 * 60 * 60;
     $maxDateCheck = date('Y-m-d H:i:s', $maxTimeCheck);
     /*
     $sql = "
     	SELECT 
     		cards.id,
     		cards.person_id,
     		cards.period,
     		cards.status_id,
     		cards.status_date,
     		cards.plan_emp_status,
     		cards.plan_hmg_status,
     		cards.plan_fnc_status,
     		cards.rate_emp_status,
     		cards.rate_hmg_status,
     		cards.rate_fnc_status,
     		persons.fullname AS emp_fullname,
     		persons.email AS emp_email,
     		dbo.user_func_rp_tree_post_persons_emails(tree_posts.id, ',') AS mngs_emails,
     		dbo.user_func_rp_tree_post_persons_emails(tree_posts.pid, ',') AS hmgs_emails,
     		dbo.user_func_rp_tree_post_persons_emails(tree_posts_func.post_func_id, ',') AS func_emails
     	FROM
     		user_rp_ach_cards cards
     		INNER JOIN user_rp_persons_PM persons
     			ON cards.person_id = persons.id
     		INNER JOIN user_rp_tree_posts_employees_PM posts_employees
     			ON cards.person_id = posts_employees.person_id
     		INNER JOIN user_rp_tree_posts tree_posts
     			ON posts_employees.post_pid = tree_posts.id
     		LEFT JOIN user_rp_tree_posts_func tree_posts_func
     			ON cards.person_id = tree_posts_func.person_id
     	WHERE
     		cards.status_id IN ('CPN', 'CRG') AND cards.status_date < '$maxDateCheck'
     	ORDER BY
     		cards.status_date
     ";
     */
     $sql = "\r\n\t\t\tSELECT \r\n\t\t\t\tcards.id,\r\n\t\t\t\tcards.person_id,\r\n\t\t\t\tcards.period,\r\n\t\t\t\tcards.status_id,\r\n\t\t\t\tcards.status_date,\r\n\t\t\t\tcards.plan_emp_status,\r\n\t\t\t\tcards.plan_hmg_status,\r\n\t\t\t\tcards.plan_fnc_status,\r\n\t\t\t\tcards.rate_emp_status,\r\n\t\t\t\tcards.rate_hmg_status,\r\n\t\t\t\tcards.rate_fnc_status,\r\n\t\t\t\tpersons.fullname AS emp_fullname,\r\n\t\t\t\tpersons.email AS emp_email,\r\n\t\t\t\tdbo.user_func_rp_tree_post_persons_emails(tree_posts.id, ',') AS mngs_emails,\r\n\t\t\t\tdbo.user_func_rp_tree_post_persons_emails(tree_posts.pid, ',') AS hmgs_emails,\r\n\t\t\t\tdbo.user_func_rp_tree_post_persons_emails(tree_posts_func.post_func_id, ',') AS func_emails\r\n\t\t\tFROM\r\n\t\t\t\tuser_rp_ach_cards cards\r\n\t\t\t\tINNER JOIN user_rp_persons_PM persons\r\n\t\t\t\t\tON cards.person_id = persons.id\r\n\t\t\t\tINNER JOIN user_rp_tree_posts_employees_PM posts_employees\r\n\t\t\t\t\tON cards.person_id = posts_employees.person_id\r\n\t\t\t\tINNER JOIN user_rp_tree_posts tree_posts\r\n\t\t\t\t\tON posts_employees.post_pid = tree_posts.id\r\n\t\t\t\tLEFT JOIN user_rp_tree_posts_func tree_posts_func\r\n\t\t\t\t\tON cards.person_id = tree_posts_func.person_id\r\n\t\t\tWHERE\r\n\t\t\t\tcards.status_id IN ('CPN', 'CRG') AND cards.period > (YEAR(GETDATE()) - 2)\r\n\t\t\tORDER BY\r\n\t\t\t\tcards.status_date\r\n\t\t";
     $db = Rp::getDbAdapter();
     $rows = $db->fetchAll($sql);
     $ps = "\n" . "\n" . '----------------' . "\n" . 'Это письмо создано автоматически и не требует ответа.' . "\n" . 'По всем возникающим вопросам обращайтесь к HR-партнерам' . ' и специалистам по персоналу Вашего подразделения.';
     foreach ($rows as $row) {
         if ($row['status_id'] == 'CPN') {
             // Согласование планирования.
             $message = "\n" . "Карточка достижений за {$row['period']} год (сотрудник {$row['emp_fullname']})" . " была выставлена на согласование {$row['status_date']}." . "\n" . 'На данный момент не получено согласование от' . ($row['plan_emp_status'] ? '' : ' сотрудника' . ($row['plan_hmg_status'] ? '' : ' и')) . ($row['plan_hmg_status'] ? '' : ' вышестоящего руководителя') . ($row['plan_fnc_status'] ? '' : ' , a также от функционального руководителя') . '.' . "\n" . 'Пожалуйста, предпримите меры для завершения процесса согласования карточки.' . $ps;
             $mails = explode(',', $row['mngs_emails']);
             $this->_sendMail($mails, $message);
             if (!$row['plan_emp_status'] && $row['emp_email']) {
                 $message = "\n" . 'Ваша карточка достижений за ' . $row['period'] . ' год' . ' была выставлена на согласование Вашим руководителем ' . $row['status_date'] . '.' . "\n" . 'Пожалуйста, подтвердите Ваше согласие с поставленными целями и задачами.' . $ps;
                 $this->_sendMail($row['emp_email'], $message);
             }
             if (!$row['plan_hmg_status']) {
                 $message = "\n" . 'Карточка достижений за ' . $row['period'] . ' год' . ' (сотрудник ' . $row['emp_fullname'] . ')' . ' была выставлена руководителем на согласование ' . $row['status_date'] . '.' . "\n" . 'Пожалуйста, подтвердите Ваше согласие с поставленными целями и задачами.' . $ps;
                 $mails = explode(',', $row['hmgs_emails']);
                 $this->_sendMail($mails, $message);
             }
             if (!$row['plan_fnc_status']) {
                 $message = "\n" . 'Карточка достижений за ' . $row['period'] . ' год' . ' (сотрудник ' . $row['emp_fullname'] . ')' . ' была выставлена руководителем на согласование ' . $row['status_date'] . '.' . "\n" . 'Пожалуйста, подтвердите Ваше согласие с поставленными целями и задачами.' . $ps;
                 $mails = explode(',', $row['func_emails']);
                 $this->_sendMail($mails, $message);
             }
         } else {
             if ($row['status_id'] == 'CRG') {
                 // Согласование оценки.
                 $message = "\n" . "Карточка достижений за {$row['period']} год (сотрудник {$row['emp_fullname']})" . " была выставлена на согласование {$row['status_date']}." . "\n" . 'На данный момент не получено согласование от' . ($row['rate_emp_status'] ? '' : ' сотрудника' . ($row['rate_hmg_status'] ? '' : ' и')) . ($row['rate_hmg_status'] ? '' : ' вышестоящего руководителя') . ($row['rate_fnc_status'] ? '' : ' , a также от функционального руководителя') . '.' . "\n" . 'Пожалуйста, предпримите меры для завершения процесса согласования карточки.' . $ps;
                 $mails = explode(',', $row['mngs_emails']);
                 $this->_sendMail($mails, $message);
                 if (!$row['rate_emp_status'] && $row['emp_email']) {
                     $message = "\n" . 'Ваша карточка достижений за ' . $row['period'] . ' год' . ' была выставлена на согласование Вашим руководителем ' . $row['status_date'] . '.' . "\n" . 'Пожалуйста, подтвердите Ваше согласие с поставленными оценками.' . $ps;
                     $this->_sendMail($row['emp_email'], $message);
                 }
                 if (!$row['rate_hmg_status']) {
                     $message = "\n" . 'Карточка достижений за ' . $row['period'] . ' год' . ' (сотрудник ' . $row['emp_fullname'] . ')' . ' была выставлена руководителем на согласование ' . $row['status_date'] . '.' . "\n" . 'Пожалуйста, подтвердите Ваше согласие с поставленными оценками.' . $ps;
                     $mails = explode(',', $row['hmgs_emails']);
                     $this->_sendMail($mails, $message);
                 }
                 if (!$row['rate_fnc_status']) {
                     $message = "\n" . 'Карточка достижений за ' . $row['period'] . ' год' . ' (сотрудник ' . $row['emp_fullname'] . ')' . ' была выставлена руководителем на согласование ' . $row['status_date'] . '.' . "\n" . 'Пожалуйста, подтвердите Ваше согласие с поставленными оценками.' . $ps;
                     $mails = explode(',', $row['func_emails']);
                     $this->_sendMail($mails, $message);
                 }
             }
         }
     }
     $log = "\n\n" . 'Количество карточек: ' . count($rows) . "\n" . 'Отправлено сообщений: ' . $this->_countSending . "\n" . 'Ошибок: ' . $this->_countErrors;
     fwrite($this->_logHandle, $log);
     fclose($this->_logHandle);
     $view = $this->initView();
     $view->title = Rp::getTitle('Рассылка оповещений');
 }