/**
  * Метод проверяет является ли экземпляр BaseObject нулевым.
  * 
  * @return bool возвращает true, если у BaseObject - целочисленный id (или == -1) и не нулевое наименование,  иначе false.
  */
 public function isValid()
 {
     $result = BaseService::isId($this->holder->getId()) && BaseService::isFullStr($this->holder->getName());
     if (!$result) {
         $this->brokenRuleMessage = '"' . $this->holder->getId() . '" - null - объект.';
     }
     return $result;
 }
 /**
  * Метод проверяет допустимость применения значения $age в качестве возраста.
  * 
  * @return bool  true - возраст верен, иначе false.
  */
 public function isValid()
 {
     $result = BaseService::isId($this->age) && (16 <= $this->age && $this->age <= 50);
     if (!$result) {
         $this->brokenRuleMessage = '"' . $this->age . '" - недопустимый возраст.';
     }
     return $result;
 }
Ejemplo n.º 3
0
 /**
  * Сохраняем имя маршрута. 
  * @param string $routeName - имя маршрута
  * @param mixed $val  - сериализируемое значение 
  */
 public function setRouteName($routeName)
 {
     if (BaseService::isNotString($routeName)) {
         throw new FrmworkExcep\InvalidArgumentException(self::$msgForInvalidArgExcp, Request::class, __METHOD__, '$routeName', 'string');
     }
     $this->addProperty('route', $routeName);
     FrameworkRegistry::setRequest(self::$instance);
 }
 /**
  * Метод проверяет правильность имени.
  * 
  * @return bool возвращает true, если имя успешно прошло проверку,  иначе false.
  */
 public function isValid()
 {
     if ($this->codeName == self::NAME_PERSON) {
         $result = BaseService::isPersonName($this->name, $this->minLengthName, $this->maxLengthName);
     } elseif ($this->codeName == self::NAME_DEPARTMENT) {
         $result = BaseService::isDepartmentName($this->name, $this->minLengthName, $this->maxLengthName);
     }
     if (!$result) {
         $this->brokenRuleMessage = '"' . $this->name . '" - недопустимое имя.';
     }
     return $result;
 }
 /**
  * Удаляем переменные сеанса, у которых имена начинаются c $prefix.
  * 
  * @param  prefix   наименование переменной.
  */
 public static function deleteByPrefix($prefix)
 {
     $arrVarsToRemove = array();
     //массив, в который копируются имена переменных сеанса, подлежащиx удалению
     foreach ($_SESSION as $key => $val) {
         if (BaseService::strStartsWith($key, $prefix)) {
             $arrVarsToRemove[] = $key;
         }
     }
     foreach ($arrVarsToRemove as $eachArrVarsToRemove) {
         self::deleteByKey($eachArrVarsToRemove);
     }
     return;
 }
 /**
  * Метод проверяет не существует ли уже объект с таким же id.
  * 
  * @return bool true - в случае если объект с данным id уже существует,  иначе false.
  */
 public function isValid()
 {
     $id = $this->holder->getId();
     $result = BaseService::isId($id);
     if (!$result) {
         $this->brokenRuleMessage = '"' . $this->holder->getId() . '" - не является идентификатором.';
         return false;
     }
     $arrObjFound = array_filter($this->arrObj, function ($item) use($id) {
         return $item->getId() == $id;
     });
     $result = count($arrObjFound) > 0;
     if (!$result) {
         $this->brokenRuleMessage = '"' . $id . '" - НЕ существует в БД.';
     }
     return $result;
 }
 /**
  * Возвращает таблицу со студентами для выделенной группы.
  * 
  * @param int $idGroup - id группы
  * @param int $numberPage - номер страницы
  * @param int $maxRowsOnPage - max записей на странице
  * @return string таблица со студентами для выделенной группы в формате HTML
  */
 public static function getStudentsFromGroup($idGroup, $numberPage, $maxRowsOnPage)
 {
     $result = '';
     if (!BaseService::isId($idGroup)) {
         return $result;
     }
     if ($maxRowsOnPage < 1) {
         throw new FrmworkExcep\RunTimeException('Недопустимое значение переменной  $maxRowsOnPage - "' . $maxRowsOnPage . '".', StudentHelper::class, __METHOD__, 'Проверьте клиентский код вызова метода getCountPagesStudents.');
     }
     if (!BaseService::isId($numberPage)) {
         $numberPage = 1;
     }
     $startRowIndex = ($numberPage - 1) * $maxRowsOnPage + 1;
     $endRowIndex = $startRowIndex + $maxRowsOnPage - 1;
     try {
         $group = Group::getSelfById($idGroup);
     } catch (FrameworkException $frmExcep) {
         $frmExcep->redirectToExcepPage();
     }
     if ($group instanceof NullGroup) {
         return $result;
     }
     $i = 0;
     foreach ($group->getStudents() as $eachStudent) {
         $i++;
         if ($startRowIndex <= $i && $endRowIndex >= $i) {
             if ($eachStudent instanceof NullStudent) {
                 $prefix = '<tr><td align="center"></td><td>';
                 $suffix = '</tr>';
             } else {
                 $prefix = '<tr><td align="center">' . $i . '</td><td>';
                 $suffix = '<td align="center"><a href="editstudent?id=' . $eachStudent->getId() . '&submit_val=edit">Редактировать</a> &nbsp;<a href="deletestudent?id=' . $eachStudent->getId() . '" onClick="return confirm (\'Вы хотите удалить студента?\');">Удалить</a> </td></tr>';
             }
             $result .= $prefix . $eachStudent->getName() . '</td><td td align="center">' . $eachStudent->getSex() . '</td><td td align="center">' . $eachStudent->getAge() . '</td>' . $suffix;
         }
     }
     return $result;
 }
Ejemplo n.º 8
0
 /**
  * Возвращает список с факультетами и их группами.
  * 
  * @param int $idSelectedGroup - id выделенной записи
  * @return string список факультетов и их групп в формате HTML
  */
 public static function getGroupsAndFaculties($idSelectedGroup = 0)
 {
     if (!BaseService::isId($idSelectedGroup)) {
         $idSelectedGroup = 0;
     }
     try {
         $result = '<select name="id_group" size="15">';
         foreach (Faculty::getAllItems() as $eachFaculty) {
             $result .= '<optgroup label="' . $eachFaculty->getName() . '">';
             foreach ($eachFaculty->getGroups() as $eachGroup) {
                 if ($eachGroup instanceof NullGroup) {
                     continue;
                 }
                 $selected = $idSelectedGroup == $eachGroup->getId() ? ' selected ' : '';
                 $result .= '<option value="' . $eachGroup->getId() . '"' . $selected . '>' . $eachGroup->getName() . '</option>';
             }
             $result .= '</optgroup>';
         }
         $result .= '</select>';
     } catch (FrameworkException $frmExcep) {
         $frmExcep->redirectToExcepPage();
     }
     return $result;
 }
 /**
  * Маршрут deletefaculty (<route name="deletefaculty">)
  * Удаление факультета
  * 
  * @param int $id - id факультета
  */
 public function delete($id)
 {
     if (!BaseService::isId($id)) {
         $id = 0;
     }
     try {
         $faculty = Faculty::getSelfById($id);
         if ($faculty->delete()) {
             // Факультет успешно удален.
             //Задаем статус 'RES_ACT_OK' результата выполнения действия,
             //для автоматического редиректа на маршрут listfaculty,
             //который вызовет  свое представление с табл. факультетов:
             $this->status = self::$enumResultAction['RES_ACT_OK'];
         } else {
             // факультет не прошел проверку правил,
             // поэтому вызываем заданное в табл. маршрутизации
             // представление (facultylist) с описанием нарушенного правила:
             $this->getView(array('tblfacul' => FacultyHelper::getTable(), 'msg_validate' => 'Внимание, удаление факультета невозможно:  ' . $faculty->getBrokenRulesTotalMessage()));
         }
     } catch (FrameworkException $frmExcep) {
         $this->status = self::$enumResultAction['RES_ACT_ERR'];
         $frmExcep->redirectToExcepPage();
     }
 }
Ejemplo n.º 10
0
 /**
  * Получаем имя маршрута для редиректа для заданного маршрута и
  * статуса выполнения действия 
  * 
  * @param string $route  имя маршрута
  * @param int $status  результат выполнения действия контролера
  * @return string|null  
  */
 public function getRedirect($route, $status)
 {
     if (BaseService::isNotString($route)) {
         throw new FrmworkExcep\InvalidArgumentException(self::$msgForInvalidArgExcp, Routing::class, __METHOD__, '$route', 'string');
     }
     if (!BaseService::isId($status)) {
         throw new FrmworkExcep\InvalidArgumentException(self::$msgForInvalidArgExcp, Routing::class, __METHOD__, '$status', 'int');
     }
     return $this->getRouteMapManager()->getRedirect($route, $status);
 }
Ejemplo n.º 11
0
 protected final function setId($val)
 {
     $this->id = BaseService::isId($val) ? (int) $val : -1;
 }
 /**
  * Получаем имя маршрута для редиректа для данного маршрута и
  * статуса результата выполнения действия.
  * 
  * @param string $route  имя маршрута
  * @param int $status  результат выполнения действия контролера
  * @return string|null  
  */
 public function getRedirect($route, $status)
 {
     if (BaseService::isNotString($route)) {
         throw new InvalidArgumentException(self::$msgForInvalidArgExcp, RouteMapManager::class, __METHOD__, '$route', 'string');
     }
     if (!BaseService::isId($status)) {
         throw new InvalidArgumentException(self::$msgForInvalidArgExcp, RouteMapManager::class, __METHOD__, '$status', 'int');
     }
     return isset($this->redirectMap[$route][$status]) ? $this->redirectMap[$route][$status] : null;
 }
 /**
  * Маршрут deletestudent ( <route name="deletestudent">)
  * 
  * Удаление студента
  * 
  * @param int $id - id студента
  */
 public function delete($id)
 {
     if (!BaseService::isId($id)) {
         $id = 0;
     }
     try {
         $student = Student::getSelfById($id);
         $idGroup = $student->getGroup()->getId();
         if ($student->delete()) {
             // Студент успешно удален.
             //Автоматический редирект на маршрут home:
             $this->status = self::$enumResultAction['RES_ACT_OK'];
             //вносим параметры для маршрута home:
             $this->addParametersForAutoRedirectRoute(array('id_group' => $idGroup));
         } else {
             // студент не прошел проверку правил,
             // поэтому вызываем заданное в табл. маршрутизации
             // представление (home) с описанием нарушенного правила:
             $this->status = self::$enumResultAction['RES_ACT_ERR'];
             $number_page_student = 1;
             $this->getView(array('tblstudents' => StudentHelper::getStudentsFromGroup($idGroup, $number_page_student, self::MAX_ROWS_ON_PAGE), 'name_group' => $student->getGroup()->getName(), 'tblgroups' => GroupHelper::getGroups($idGroup), 'number_page_student' => StudentHelper::getCountPagesStudents($idGroup, self::MAX_ROWS_ON_PAGE, $number_page_student), 'id_group' => $idGroup, 'msg_validate' => 'Внимание, удаление студента невозможно:  ' . $student->getBrokenRulesTotalMessage()));
         }
     } catch (FrameworkException $frmExcep) {
         $this->status = self::$enumResultAction['RES_ACT_ERR'];
         $frmExcep->redirectToExcepPage();
     }
 }
 /**
  * Маршрут deletegroup (<route name="deletegroup">)
  * Удаление факультета
  * 
  * @param int $id - id группы
  */
 public function delete($id)
 {
     if (!BaseService::isId($id)) {
         $id = 0;
     }
     try {
         $group = Group::getSelfById($id);
         if ($group->delete()) {
             // Группа успешно удалена.
             //Задаем статус 'RES_ACT_OK' результата выполнения действия,
             //для автоматического редиректа на маршрут listgroup,
             //который вызовет представление с табл. групп:
             $this->status = self::$enumResultAction['RES_ACT_OK'];
         } else {
             // группа не прошла проверку правил,
             // поэтому вызываем заданное в табл. маршрутизации
             // представление (grouplist) с описанием нарушенного правила:
             $this->getView(array('tblgroups' => GroupHelper::getGroupsWithActions(), 'msg_validate' => 'Внимание, удаление группы невозможно:  ' . $group->getBrokenRulesTotalMessage()));
         }
     } catch (FrameworkException $frmExcep) {
         $this->status = self::$enumResultAction['RES_ACT_ERR'];
         $frmExcep->redirectToExcepPage();
     }
 }
Ejemplo n.º 15
0
 public function deleteCookie($name, $path = '', $domain = '', $secure = null)
 {
     if (BaseService::isNotString($name)) {
         throw new FrmworkExcep\InvalidArgumentException(self::$msgForInvalidArgExcp, Response::class, __METHOD__, '$name', 'string');
     }
     $this->setCookie($name, '', 0, $path, $domain, $secure);
 }
 /**
  * Вызов явно заданного представления. Вызывается в действии контролера
  * в случае если необходимо вызвать именованный шаблон.
  *
  * @param string $nameTemplateView - имя вызываемого шаблона
  * @param array $arrViewData       - массив с данными для заполнения шаблона
  */
 protected final function getViewByNameTemplate($nameTemplateView, $arrViewData)
 {
     if (BaseService::isNotString($nameTemplateView)) {
         throw new FrmworkExcep\InvalidArgumentException('Неверный аргумент метода.', ControllerBase::class, __METHOD__, '$nameTemplateView', 'string');
     }
     (new Response())->preparePage($nameTemplateView, $arrViewData)->sendPage();
 }
 public static function setExcepPage($excepPage)
 {
     if (BaseService::isNotString($excepPage)) {
         throw new FrmworkExcep\InvalidArgumentException(self::$msgForInvalidArgExcp, FrameworkRegistry::class, __METHOD__, '$excepPage', 'string');
     }
     self::getInstance()->set('excepPage', $excepPage);
 }