/** * comments * * @since 1.2.1 * @deprecated 2.0.0 * * @package Redaxscript * @category Comments * @author Henry Ruhs * * @param integer $article * @param string $route */ function comments($article, $route) { $output = Redaxscript\Hook::trigger('commentStart'); /* query comments */ $comments = Redaxscript\Db::forTablePrefix('comments')->where(['status' => 1, 'article' => $article])->whereLanguageIs(Redaxscript\Registry::get('language'))->orderGlobal('rank'); /* query result */ $result = $comments->findArray(); if ($result) { $num_rows = count($result); $sub_maximum = ceil($num_rows / Redaxscript\Db::getSetting('limit')); $sub_active = Redaxscript\Registry::get('lastSubParameter'); /* sub parameter */ if (Redaxscript\Registry::get('lastSubParameter') > $sub_maximum || !Redaxscript\Registry::get('lastSubParameter')) { $sub_active = 1; } else { $offset_string = ($sub_active - 1) * Redaxscript\Db::getSetting('limit') . ', '; } } $comments->limit($offset_string . Redaxscript\Db::getSetting('limit')); /* query result */ $result = $comments->findArray(); $num_rows_active = count($result); /* handle error */ if (!$result || !$num_rows) { $error = Redaxscript\Language::get('comment_no'); } else { if ($result) { $accessValidator = new Redaxscript\Validator\Access(); foreach ($result as $r) { $access = $r['access']; /* access granted */ if ($accessValidator->validate($access, Redaxscript\Registry::get('myGroups')) === Redaxscript\Validator\ValidatorInterface::PASSED) { if ($r) { foreach ($r as $key => $value) { ${$key} = stripslashes($value); } } /* collect headline output */ $output .= Redaxscript\Hook::trigger('commentFragmentStart', $r) . '<h3 id="comment-' . $id . '" class="rs-title-comment">'; if ($url) { $output .= '<a href="' . $url . '" rel="nofollow">' . $author . '</a>'; } else { $output .= $author; } $output .= '</h3>'; /* collect box output */ $output .= '<div class="rs-box-comment">' . $text . '</div>'; $output .= byline('comments', $id, $author, $date); $output .= Redaxscript\Hook::trigger('commentFragmentEnd', $r); /* admin dock */ if (Redaxscript\Registry::get('loggedIn') == Redaxscript\Registry::get('token') && Redaxscript\Registry::get('firstParameter') != 'logout') { $output .= admin_dock('comments', $id); } } else { $counter++; } } /* handle access */ if ($num_rows_active == $counter) { $error = Redaxscript\Language::get('access_no'); } } } /* handle error */ if ($error) { $output = '<div class="rs-box-comment">' . $error . Redaxscript\Language::get('point') . '</div>'; } $output .= Redaxscript\Hook::trigger('commentEnd'); echo $output; /* call pagination as needed */ if ($sub_maximum > 1 && Redaxscript\Db::getSetting('pagination') == 1) { pagination($sub_active, $sub_maximum, $route); } }
/** * admin update * * @since 1.2.1 * @deprecated 2.0.0 * * @package Redaxscript * @category Admin * @author Henry Ruhs */ function admin_update() { $tableParameter = Redaxscript\Registry::get('tableParameter'); if ($tableParameter == 'settings') { $specialFilter = new Redaxscript\Filter\Special(); $emailFilter = new Redaxscript\Filter\Email(); /* clean post */ $r['language'] = $specialFilter->sanitize($_POST['language']); $r['template'] = $specialFilter->sanitize($_POST['template']); $r['title'] = $_POST['title']; $r['author'] = $_POST['author']; $r['copyright'] = $_POST['copyright']; $r['description'] = $_POST['description']; $r['keywords'] = $_POST['keywords']; $r['robots'] = $specialFilter->sanitize($_POST['robots']); $r['email'] = $emailFilter->sanitize($_POST['email']); $r['subject'] = $_POST['subject']; $r['notification'] = $specialFilter->sanitize($_POST['notification']); $r['charset'] = !$r['charset'] ? 'utf-8' : $r['charset']; $r['divider'] = $_POST['divider']; $r['time'] = $_POST['time']; $r['date'] = $_POST['date']; $r['homepage'] = $specialFilter->sanitize($_POST['homepage']); $r['limit'] = !$specialFilter->sanitize($_POST['limit']) ? 10 : $specialFilter->sanitize($_POST['limit']); $r['order'] = $specialFilter->sanitize($_POST['order']); $r['pagination'] = $specialFilter->sanitize($_POST['pagination']); $r['moderation'] = $specialFilter->sanitize($_POST['moderation']); $r['registration'] = $specialFilter->sanitize($_POST['registration']); $r['verification'] = $specialFilter->sanitize($_POST['verification']); $r['recovery'] = $specialFilter->sanitize($_POST['recovery']); $r['captcha'] = $specialFilter->sanitize($_POST['captcha']); /* update settings */ foreach ($r as $key => $value) { if ($value == 'select') { $value = null; } Redaxscript\Db::forTablePrefix($tableParameter)->where('name', $key)->findOne()->set('value', $value)->save(); } /* show success */ $messenger = new Redaxscript\Admin\Messenger(Redaxscript\Registry::getInstance()); echo $messenger->setRoute(Redaxscript\Language::get('continue'), 'admin/edit/settings')->doRedirect()->success(Redaxscript\Language::get('operation_completed')); } }
/** * languages list * * @since 1.2.1 * @deprecated 2.0.0 * * @package Redaxscript * @category Navigation * @author Henry Ruhs * * @param array $options */ function languages_list($options) { /* define option variables */ if (is_array($options)) { foreach ($options as $key => $value) { $key = 'option_' . $key; ${$key} = $value; } } /* languages directory */ $languages_directory = new Redaxscript\Directory(); $languages_directory->init('languages'); $languages_directory_array = $languages_directory->getArray(); /* collect languages output */ foreach ($languages_directory_array as $value) { $value = substr($value, 0, 2); $class_string = null; if ($value == Redaxscript\Registry::get('language')) { $class_string = ' class="rs-item-active"'; } $output .= '<li' . $class_string . '><a href="' . Redaxscript\Registry::get('parameterRoute') . Redaxscript\Registry::get('fullRoute') . Redaxscript\Registry::get('languageRoute') . $value . '" rel="nofollow">' . Redaxscript\Language::get($value, '_index') . '</a>'; } /* build id string */ if ($option_id) { $id_string = ' id="' . $option_id . '"'; } /* build class string */ if ($option_class) { $class_string = ' class="' . $option_class . '"'; } else { $class_string = ' class="rs-list-languages"'; } /* collect list output */ if ($output) { $output = '<ul' . $id_string . $class_string . '>' . $output . '</ul>'; } echo $output; }
/** * admin control * * @since 2.0.0 * @deprecated 2.0.0 * * @package Redaxscript * @category Admin * @author Henry Ruhs * * @param string $type * @param string $table * @param integer $id * @param string $alias * @param integer $status * @param string $new * @param string $edit * @param string $delete * @return string */ function admin_control($type, $table, $id, $alias, $status, $new, $edit, $delete) { $output = Redaxscript\Hook::trigger('adminControlStart'); /* define access variables */ if ($type == 'access' && $id == 1) { $delete = 0; } if ($type == 'modules_not_installed') { $edit = $delete = 0; } /* collect modules output */ if ($new == 1 && $type == 'modules_not_installed') { $output .= '<li class="rs-admin-item-control rs-admin-item-install"><a href="' . Redaxscript\Registry::get('parameterRoute') . 'admin/install/' . $table . '/' . $alias . '/' . Redaxscript\Registry::get('token') . '">' . Redaxscript\Language::get('install') . '</a></li>'; } /* collect contents output */ if ($type == 'contents') { if ($status == 2) { $output .= '<li class="rs-admin-item-control rs-admin-item-future-posting"><span>' . Redaxscript\Language::get('future_posting') . '</span></li>'; } if ($edit == 1) { if ($status == 1) { $output .= '<li class="rs-admin-item-control rs-admin-item-unpublish"><a href="' . Redaxscript\Registry::get('parameterRoute') . 'admin/unpublish/' . $table . '/' . $id . '/' . Redaxscript\Registry::get('token') . '">' . Redaxscript\Language::get('unpublish') . '</a></li>'; } else { if ($status == 0) { $output .= '<li class="rs-admin-item-control rs-admin-item-publish"><a href="' . Redaxscript\Registry::get('parameterRoute') . 'admin/publish/' . $table . '/' . $id . '/' . Redaxscript\Registry::get('token') . '">' . Redaxscript\Language::get('publish') . '</a></li>'; } } } } /* collect access and system output */ if ($edit == 1 && ($type == 'access' && $id > 1 || $type == 'modules_installed')) { if ($status == 1) { $output .= '<li class="rs-admin-item-control rs-admin-item-disable"><a href="' . Redaxscript\Registry::get('parameterRoute') . 'admin/disable/' . $table . '/' . $id . '/' . Redaxscript\Registry::get('token') . '">' . Redaxscript\Language::get('disable') . '</a></li>'; } else { if ($status == 0) { $output .= '<li class="rs-admin-item-control rs-admin-item-enable"><a href="' . Redaxscript\Registry::get('parameterRoute') . 'admin/enable/' . $table . '/' . $id . '/' . Redaxscript\Registry::get('token') . '">' . Redaxscript\Language::get('enable') . '</a></li>'; } } } /* collect general edit and delete output */ if ($edit == 1) { $output .= '<li class="rs-admin-item-control rs-admin-item-edit"><a href="' . Redaxscript\Registry::get('parameterRoute') . 'admin/edit/' . $table . '/' . $id . '">' . Redaxscript\Language::get('edit') . '</a></li>'; } if ($delete == 1) { if ($type == 'modules_installed') { $output .= '<li class="rs-admin-item-control rs-admin-item-uninstall"><a href="' . Redaxscript\Registry::get('parameterRoute') . 'admin/uninstall/' . $table . '/' . $alias . '/' . Redaxscript\Registry::get('token') . '" class="rs-admin-js-confirm">' . Redaxscript\Language::get('uninstall') . '</a></li>'; } else { $output .= '<li class="rs-admin-item-control rs-admin-item-delete"><a href="' . Redaxscript\Registry::get('parameterRoute') . 'admin/delete/' . $table . '/' . $id . '/' . Redaxscript\Registry::get('token') . '" class="rs-admin-js-confirm">' . Redaxscript\Language::get('delete') . '</a></li>'; } } /* collect list output */ if ($output) { $output = '<ul class="rs-admin-list-control">' . $output . '</ul>'; } $output .= Redaxscript\Hook::trigger('adminControlEnd'); return $output; }
/** * admin modules list * * @since 1.2.1 * @deprecated 2.0.0 * * @package Redaxscript * @category Admin * @author Henry Ruhs */ function admin_modules_list() { $output = Redaxscript\Hook::trigger('adminModuleListStart'); /* query modules */ $result = Redaxscript\Db::forTablePrefix('modules')->orderByAsc('name')->findArray(); $num_rows = count($result); /* collect listing output */ $output .= '<h2 class="rs-admin-title-content">' . Redaxscript\Language::get('modules') . '</h2>'; $output .= '<div class="rs-admin-wrapper-table"><table class="rs-admin-table-default rs-admin-table-module">'; /* collect thead and tfoot */ $output .= '<thead><tr><th class="rs-admin-col-name">' . Redaxscript\Language::get('name') . '</th><th class="rs-admin-col-alias">' . Redaxscript\Language::get('alias') . '</th><th class="rs-admin-col-version">' . Redaxscript\Language::get('version') . '</th></tr></thead>'; $output .= '<tfoot><tr><td>' . Redaxscript\Language::get('name') . '</td><td>' . Redaxscript\Language::get('alias') . '</td><td>' . Redaxscript\Language::get('version') . '</td></tr></tfoot>'; if (!$result || !$num_rows) { $error = Redaxscript\Language::get('module_no') . Redaxscript\Language::get('point'); } else { if ($result) { $accessValidator = new Redaxscript\Validator\Access(); $output .= '<tbody>'; foreach ($result as $r) { $access = $r['access']; /* access granted */ if ($accessValidator->validate($access, Redaxscript\Registry::get('myGroups')) === Redaxscript\Validator\ValidatorInterface::PASSED) { if ($r) { foreach ($r as $key => $value) { ${$key} = stripslashes($value); } } $modules_installed_array[] = $alias; /* build class string */ if ($status == 1) { $class_status = null; } else { $class_status = 'rs-admin-is-disabled'; } /* collect table row */ $output .= '<tr'; if ($alias) { $output .= ' id="' . $alias . '"'; } if ($class_status) { $output .= ' class="' . $class_status . '"'; } $output .= '><td>' . $name; /* collect control output */ $output .= admin_control('modules_installed', 'modules', $id, $alias, $status, Redaxscript\Registry::get('tableInstall'), Redaxscript\Registry::get('tableEdit'), Redaxscript\Registry::get('tableUninstall')); /* collect alias and version output */ $output .= '</td><td>' . $alias . '</td><td>' . $version . '</td></tr>'; } else { $counter++; } } $output .= '</tbody>'; /* handle access */ if ($num_rows == $counter) { $error = Redaxscript\Language::get('access_no') . Redaxscript\Language::get('point'); } } } /* handle error */ if ($error) { $output .= '<tbody><tr><td colspan="3">' . $error . '</td></tr></tbody>'; } /* modules not installed */ if (Redaxscript\Registry::get('modulesInstall') == 1) { /* modules directory */ $modules_directory = new Redaxscript\Directory(); $modules_directory->init('modules'); $modules_directory_array = $modules_directory->getArray(); if ($modules_directory_array && $modules_installed_array) { $modules_not_installed_array = array_diff($modules_directory_array, $modules_installed_array); } else { if ($modules_directory_array) { $modules_not_installed_array = $modules_directory_array; } } if ($modules_not_installed_array) { $output .= '<tbody><tr class="rs-admin-row-group"><td colspan="3">' . Redaxscript\Language::get('install') . '</td></tr>'; foreach ($modules_not_installed_array as $alias) { /* collect table row */ $output .= '<tr'; if ($alias) { $output .= ' id="' . $alias . '"'; } $output .= '><td colspan="3">' . $alias; /* collect control output */ $output .= admin_control('modules_not_installed', 'modules', $id, $alias, $status, Redaxscript\Registry::get('tableInstall'), Redaxscript\Registry::get('tableEdit'), Redaxscript\Registry::get('tableUninstall')); $output .= '</td></tr>'; } $output .= '</tbody>'; } } $output .= '</table></div>'; $output .= Redaxscript\Hook::trigger('adminModuleListEnd'); echo $output; }
/** * admin router * * @since 1.2.1 * @deprecated 2.0.0 * * @package Redaxscript * @category Admin * @author Henry Ruhs */ function admin_router() { $firstParameter = Redaxscript\Registry::get('firstParameter'); $adminParameter = Redaxscript\Registry::get('adminParameter'); $tableParameter = Redaxscript\Registry::get('tableParameter'); $idParameter = Redaxscript\Registry::get('idParameter'); $aliasParameter = Redaxscript\Registry::get('aliasParameter'); $tokenParameter = Redaxscript\Registry::get('tokenParameter'); $usersException = $tableParameter == 'users' && $idParameter == Redaxscript\Registry::get('myId'); $messenger = new Redaxscript\Admin\Messenger(Redaxscript\Registry::getInstance()); Redaxscript\Hook::trigger('adminRouterStart'); if (Redaxscript\Registry::get('adminRouterBreak') == 1) { return; } /* last seen update */ if ($firstParameter == 'admin' && !$adminParameter || $adminParameter == 'view' && $tableParameter == 'users' || Redaxscript\Registry::get('cronUpdate')) { admin_last_update(); } /* validate routing */ switch (true) { case $adminParameter && !in_array($adminParameter, ['new', 'view', 'edit', 'up', 'down', 'sort', 'publish', 'unpublish', 'enable', 'disable', 'install', 'uninstall', 'delete', 'process', 'update']): case $adminParameter == 'process' && !$_POST['new'] && !$_POST['edit']: case $adminParameter == 'update' && !$_POST['update']: case $adminParameter && !in_array($tableParameter, ['categories', 'articles', 'extras', 'comments', 'groups', 'users', 'modules', 'settings']): case !$aliasParameter && ($adminParameter == 'install' || $adminParameter == 'uninstall'): case !$idParameter && in_array($adminParameter, ['edit', 'up', 'down', 'publish', 'unpublish', 'enable', 'disable']) && $tableParameter != 'settings': case is_numeric($idParameter) && !Redaxscript\Db::forTablePrefix($tableParameter)->where('id', $idParameter)->findOne()->id: /* show error */ echo $messenger->setRoute(Redaxscript\Language::get('back'), 'admin')->error(Redaxscript\Language::get('something_wrong')); return; } /* define access variables */ if ($adminParameter && $tableParameter) { if ($tableParameter == 'modules') { $install = Redaxscript\Registry::get('modulesInstall'); $uninstall = Redaxscript\Registry::get('modulesUninstall'); } else { if ($tableParameter != 'settings') { $new = Redaxscript\Registry::get('tableNew'); if ($tableParameter == 'comments') { $articles_total = Redaxscript\Db::forTablePrefix('articles')->count(); $articles_comments_disable = Redaxscript\Db::forTablePrefix('articles')->where('comments', 0)->count(); if ($articles_total == $articles_comments_disable) { $new = 0; } } $delete = Redaxscript\Registry::get('tableDelete'); } } $edit = Redaxscript\Registry::get('tableEdit'); } if ($edit == 1 || $delete == 1) { $accessValidator = new Redaxscript\Validator\Access(); $access = Redaxscript\Db::forTablePrefix($tableParameter)->where('id', $idParameter)->findOne()->access; $check_access = $accessValidator->validate($access, Redaxscript\Registry::get('myGroups')); } /* validate access */ switch (true) { case $adminParameter == 'new' && $new == 0: case $adminParameter == 'view' && in_array($tableParameter, ['categories', 'articles', 'extras', 'comments', 'groups', 'users']) && $new == 0 && $edit == 0 && $delete == 0: case $adminParameter == 'view' && $tableParameter == 'settings': case $adminParameter == 'view' && $tableParameter == 'modules' && $edit == 0 && $install == 0 && $uninstall == 0: case $adminParameter == 'edit' && $edit == 0 && !$usersException: case in_array($adminParameter, ['up', 'down', 'sort', 'publish', 'unpublish', 'enable', 'disable']) && $edit == 0: case $adminParameter == 'install' && $install == 0: case $adminParameter == 'uninstall' && $uninstall == 0: case $adminParameter == 'delete' && $delete == 0 && !$usersException: case $adminParameter == 'process' && $_POST['new'] && $new == 0: case $adminParameter == 'process' && $_POST['edit'] && $edit == 0 && !$usersException: case $adminParameter == 'process' && $_POST['groups'] && !Redaxscript\Registry::get('groupsEdit'): case $adminParameter == 'update' && $edit == 0: case $idParameter == 1 && ($adminParameter == 'disable' || $adminParameter == 'delete') && ($tableParameter == 'groups' || $tableParameter == 'users'): case is_numeric($idParameter) && $tableParameter && $check_access == 0 && !$usersException: /* show error */ echo $messenger->setRoute(Redaxscript\Language::get('back'), 'admin')->error(Redaxscript\Language::get('error_occurred'), Redaxscript\Language::get('access_no')); return; } /* check token */ if (in_array($adminParameter, ['up', 'down', 'sort', 'publish', 'unpublish', 'enable', 'disable', 'install', 'uninstall', 'delete']) && !$tokenParameter) { /* show error */ echo $messenger->setRoute(Redaxscript\Language::get('back'), 'admin')->error(Redaxscript\Language::get('error_occurred'), Redaxscript\Language::get('token_no')); return; } /* admin routing */ if ($firstParameter == 'admin' && !$adminParameter) { contents(); } switch ($adminParameter) { case 'new': if ($tableParameter == 'categories') { $categoryForm = new Redaxscript\Admin\View\CategoryForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $categoryForm->render(); } if ($tableParameter == 'articles') { $articleForm = new Redaxscript\Admin\View\ArticleForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $articleForm->render(); } if ($tableParameter == 'extras') { $extraForm = new Redaxscript\Admin\View\ExtraForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $extraForm->render(); } if ($tableParameter == 'comments') { $commentForm = new Redaxscript\Admin\View\CommentForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $commentForm->render(); } if ($tableParameter == 'groups') { $groupForm = new Redaxscript\Admin\View\GroupForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $groupForm->render(); } if ($tableParameter == 'users') { $userForm = new Redaxscript\Admin\View\UserForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $userForm->render(); } return; case 'view': if (in_array($tableParameter, ['categories', 'articles', 'extras', 'comments'])) { admin_contents_list(); } if (in_array($tableParameter, ['groups', 'users', 'modules'])) { call_user_func('admin_' . $tableParameter . '_list'); } return; case 'edit': if ($tableParameter == 'categories') { $categoryForm = new Redaxscript\Admin\View\CategoryForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $categoryForm->render($idParameter); } if ($tableParameter == 'articles') { $articleForm = new Redaxscript\Admin\View\ArticleForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $articleForm->render($idParameter); } if ($tableParameter == 'extras') { $extraForm = new Redaxscript\Admin\View\ExtraForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $extraForm->render($idParameter); } if ($tableParameter == 'comments') { $commentForm = new Redaxscript\Admin\View\CommentForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $commentForm->render($idParameter); } if ($tableParameter == 'groups') { $groupForm = new Redaxscript\Admin\View\GroupForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $groupForm->render($idParameter); } if ($tableParameter == 'users') { $userForm = new Redaxscript\Admin\View\UserForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $userForm->render($idParameter); } if ($tableParameter == 'modules') { $moduleForm = new Redaxscript\Admin\View\ModuleForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $moduleForm->render($idParameter); } if ($tableParameter == 'settings') { $settingForm = new Redaxscript\Admin\View\SettingForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $settingForm->render(); } return; case 'up': case 'down': admin_move(); return; case 'sort': admin_sort(); return; case 'publish': case 'enable': admin_status(1); return; case 'unpublish': case 'disable': admin_status(0); return; case 'install': case 'uninstall': admin_install(); return; case 'delete': case 'process': case 'update': call_user_func('admin_' . $adminParameter); return; } Redaxscript\Hook::trigger('adminRouterEnd'); }
/** * pagination * * @since 1.2.1 * @deprecated 2.0.0 * * @package Redaxscript * @category Contents * @author Henry Ruhs * * @param integer $sub_active * @param integer $sub_maximum * @param string $route */ function pagination($sub_active, $sub_maximum, $route) { $output = Redaxscript\Hook::trigger('paginationStart'); $output .= '<ul class="rs-list-pagination">'; /* collect first and previous output */ if ($sub_active > 1) { $first_route = $route; $previous_route = $route . '/' . ($sub_active - 1); $output .= '<li class="rs-item-first"><a href="' . Redaxscript\Registry::get('parameterRoute') . $first_route . '">' . Redaxscript\Language::get('first') . '</a></li>'; $output .= '<li class="rs-item-previous"><a href="' . Redaxscript\Registry::get('parameterRoute') . $previous_route . '" rel="previous">' . Redaxscript\Language::get('previous') . '</a></li>'; } /* collect center output */ $j = 2; if ($sub_active == 2 || $sub_active == $sub_maximum - 1) { $j++; } if ($sub_active == 1 || $sub_active == $sub_maximum) { $j = $j + 2; } for ($i = $sub_active - $j; $i < $sub_active + $j; $i++) { if ($i == $sub_active) { $j++; $output .= '<li class="rs-item-number rs-item-active"><span>' . $i . '</span></li>'; } else { if ($i > 0 && $i < $sub_maximum + 1) { $output .= '<li class="rs-item-number"><a href="' . Redaxscript\Registry::get('parameterRoute') . $route . '/' . $i . '">' . $i . '</a></li>'; } } } /* collect next and last output */ if ($sub_active < $sub_maximum) { $next_route = $route . '/' . ($sub_active + 1); $last_route = $route . '/' . $sub_maximum; $output .= '<li class="rs-item-next"><a href="' . Redaxscript\Registry::get('parameterRoute') . $next_route . '" rel="next">' . Redaxscript\Language::get('next') . '</a></li>'; $output .= '<li class="rs-item-last"><a href="' . Redaxscript\Registry::get('parameterRoute') . $last_route . '">' . Redaxscript\Language::get('last') . '</a></li>'; } $output .= '</ul>'; $output .= Redaxscript\Hook::trigger('paginationEnd'); echo $output; }