/** * Загружает в шаблонизатор Smarty необходимые переменные * */ protected function AssignVars() { $this->Viewer_Assign('sAction', $this->Standart(self::$sAction)); $this->Viewer_Assign('sEvent', self::$sActionEvent); $this->Viewer_Assign('aParams', self::$aParams); $this->Viewer_Assign('PATH_WEB_CURRENT', func_urlspecialchars(self::$sPathWebCurrent)); }
/** * Преобразует спец символы в html последовательнось, поведение аналогично htmlspecialchars, кроме преобразования амперсанта "&" * * @param string $sText * * @return string */ public function Urlspecialchars($sText) { return func_urlspecialchars($sText); }
/** * Формирует постраничный вывод * * @param int $iCount Общее количество элементов * @param int $iCurrentPage Текущая страница * @param int $iCountPerPage Количество элементов на одну страницу * @param int $iCountPageLine Количество ссылок на другие страницы * @param string $sBaseUrl Базовый URL, к нему будет добавлять постикс /pageN/ и GET параметры * @param array $aGetParamsList Список GET параметров, которые необходимо передавать при постраничном переходе * @return array */ public function MakePaging($iCount, $iCurrentPage, $iCountPerPage, $iCountPageLine, $sBaseUrl, $aGetParamsList = array()) { if ($iCount == 0) { return false; } $iCountPage = ceil($iCount / $iCountPerPage); if (!preg_match("/^[1-9]\\d*\$/i", $iCurrentPage)) { $iCurrentPage = 1; } if ($iCurrentPage > $iCountPage) { $iCurrentPage = $iCountPage; } $aPagesLeft = array(); $iTemp = $iCurrentPage - $iCountPageLine; $iTemp = $iTemp < 1 ? 1 : $iTemp; for ($i = $iTemp; $i < $iCurrentPage; $i++) { $aPagesLeft[] = $i; } $aPagesRight = array(); for ($i = $iCurrentPage + 1; $i <= $iCurrentPage + $iCountPageLine and $i <= $iCountPage; $i++) { $aPagesRight[] = $i; } $iNextPage = $iCurrentPage < $iCountPage ? $iCurrentPage + 1 : false; $iPrevPage = $iCurrentPage > 1 ? $iCurrentPage - 1 : false; $sGetParams = ''; if (is_string($aGetParamsList) or count($aGetParamsList)) { $sGetParams = '?' . (is_array($aGetParamsList) ? http_build_query($aGetParamsList, '', '&') : $aGetParamsList); } $aPaging = array('aPagesLeft' => $aPagesLeft, 'aPagesRight' => $aPagesRight, 'iCount' => $iCount, 'iCountPage' => $iCountPage, 'iCurrentPage' => $iCurrentPage, 'iNextPage' => $iNextPage, 'iPrevPage' => $iPrevPage, 'sBaseUrl' => rtrim(func_urlspecialchars($sBaseUrl), '/'), 'sGetParams' => $sGetParams); /** * Избавляемся от дублирования страниц с page=1 */ if ($aPaging['iCurrentPage'] == 1) { $this->SetHtmlCanonical($aPaging['sBaseUrl'] . '/' . $aPaging['sGetParams']); } else { /** * Избавляемся от дублирования title страниц - добавляем "Страница N" */ $this->AddHtmlTitle($this->Lang_Get('pagination.page_with_number', array('number' => $aPaging['iCurrentPage']))); } return $aPaging; }
function func_urlspecialchars_array(&$data, $walkIndex = null) { if (is_string($data)) { $data = func_urlspecialchars($data); } elseif (is_array($data)) { array_walk($data, __FUNCTION__); } }