403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/burlakastudio.realcommenter/lib/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/burlakastudio.realcommenter/lib/PAGINATION.php
<?php
/**
 * ����� "��������� ����������� 2.0" ��� �������
 * �������� ���� �����: www.realcommenter.com
 * �������� ���� �����������: burlaka.studio
 * ����� � ����������: ������� ������� (AlexeyGfi) -> alexeygfi@gmail.com
 */

namespace Burlakastudio\Realcommenter;

use Bitrix\Main\Context;

class PAGINATION
{

    /**
     * @param array $result
     * @param array $arParams
     * @param int $ipage
     *
     * @return array|bool
     */
    public static function calculate_values(&$result = [], &$arParams = [], $ipage = 1)
    {

        if (empty($result) || empty($arParams)) {
            return false;
        }

        /**
         * ��������� ����������:
         *      LIMIT_START - ���� ���������� ����� �� � ��������� ������
         *      USE_PAGE_NAV � �������� �� �� ���������� ����������
         *      LIMIT_EVERY_NEXT � ������ ������ ������������ ����� ��� ������ ������� �� ����� ������� ����������� ����������
         *          ...�� ����� ����� ���������� (��� ������� ����� LIMIT_START), ���� ���� ��� ������� ��� �����
         *          � ����� ������� �� LIMIT_START ("����������" � class.php)
         */

        $total_pages = 1;
        $total_records = count($result);

//		$pagenav_values= [
//			'ipage' => $ipage, // ����� �������
//			'total_pages' => 1, // ������ ����� ������
//			'total_records' => count( $result ), // ������ ����� ������� ������� �����
//		];

        if ($arParams['USE_PAGE_NAV']) {

            $total_pages = (int)ceil($total_records / $arParams['LIMIT_EVERY_NEXT']);

        } else if (
            $arParams['LIMIT_EVERY_NEXT'] &&
            $total_records > $arParams['LIMIT_EVERY_NEXT']
        ) {
            $total_pages += (int)ceil(($total_records - $arParams['LIMIT_START']) / $arParams['LIMIT_EVERY_NEXT']);
        }

        if ($ipage > $total_pages) {
            /**
             * ���� ��� ��������� ����� ��� -- ���� ������ ������ �������.
             * ���� �� ��� ���� ��� - ��������� �� ��������
             */
            $request = Context::getCurrent()->getRequest();
            if ($request->isAjaxRequest() || $request->isPost()) {
                $ipage = $total_pages;
            } else {
                throw new \RuntimeException('PAGES_OVERFLOW');
            }
        }

        return [
            'ipage' => $ipage, // ����� �������
            'total_pages' => $total_pages, // ������ ����� ������
            'total_records' => $total_records, // ������ ����� ������� ������� �����
        ];
    }

    public static function generateNavChain(&$arParams = [])
    {
        $navTpl = '';

        /**
         * ���� ��� ��������� ������� �� ���� - ����� ��� ������
         */
        if ($arParams['NAV_ACTION'] === '*') {
            return $navTpl;
        }

        $nav = $arParams['NAV'];

        if ($arParams['USE_PAGE_NAV']) {

            $navTpl = HTML_TEMPLATER::get('pagenav_classic');
            $navNode = HTML_TEMPLATER::get('pagenav_classic_node');

            $pageNums = [];

            for ($p = 1; $p <= $nav['total_pages']; $p++) {

//				$pageNums[]= sprintf(
//					'<ins%s>%d</ins>',
//					( $p == $nav[ 'ipage' ] ? ' class="_active"' : ' data-ipage="'. $p .'"' ),
//					$p
//				);

                if ($p == $nav['ipage']) {
                    $pageNums[] = str_replace(
                        [
                            '#TAG#',
                            '#HREF#',
                            '#CLASSNAME#',
                            '#DATA#',
                            '#NUM#',
                        ],
                        [
                            'ins',
                            '',
                            'class="_active"',
                            '',
                            $p,
                        ],
                        $navNode
                    );

                } else {
                    $pageNums[] = str_replace(
                        [
                            '#TAG#',
                            '#HREF#',
                            '#CLASSNAME#',
                            '#DATA#',
                            '#NUM#',
                        ],
                        [
                            'a',
                            'href="?ipage=#NUM#"',
                            '',
                            'data-ipage="#NUM#"',
                            $p,
                        ],
                        $navNode
                    );
                }
            }

            $navTpl = str_replace('#PAGE_NUMS#', implode('', $pageNums), $navTpl);

        } else if ($arParams['LIMIT_EVERY_NEXT']) {

            /**
             * ������ "������� ��" � ���� ������� ������� ���� ��� ������ �����
             */
            $awaitNextPortion = 0;
            $awaitInMoreLink =
                $nav['total_records'] - $arParams['LIMIT_START']
                - ($nav['ipage'] - 1) * $arParams['LIMIT_EVERY_NEXT'];

            /**
             * ���� ���� ��� �������
             */
            if ($awaitInMoreLink <= 0) {
                return '';
            }

            $nextIpage = 0;

            if ($awaitInMoreLink) {

                // ����� ����� ������ ����� �������?
                $nextIpage = ($arParams['IPAGE'] ? $arParams['IPAGE'] + 1 : $nav['ipage'] + 1);

                if ($awaitInMoreLink > $arParams['LIMIT_EVERY_NEXT']) {
                    // ����� ����� �� ��������� �����
                    $awaitNextPortion = $arParams['LIMIT_EVERY_NEXT'];
                }
            }

            $localTinyParams = [
                'NEXT_PORTION' => $awaitNextPortion
            ];

            $navTpl = HTML_TEMPLATER::get('pagenav_portion', $localTinyParams);

            $navTpl = str_replace(
                [
                    '#NAV_NEXT_PORTION#',
                    '#NAV_REST_CNT#',
                    '#PAGE_NUM#'
                ],
                [
                    $awaitNextPortion,
                    $awaitInMoreLink,
                    $nextIpage
                ],
                $navTpl
            );

        }

        return $navTpl;
    }

}

Youez - 2016 - github.com/yon3zu
LinuXploit