/** * Метод проверяет является ли экземпляр 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; }
/** * Сохраняем имя маршрута. * @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> <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; }
/** * Возвращает список с факультетами и их группами. * * @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(); } }
/** * Получаем имя маршрута для редиректа для заданного маршрута и * статуса выполнения действия * * @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); }
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(); } }
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); }