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/cvetdv.ru/bitrix/modules/skyweb24.popuppro/admin/includes/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/skyweb24.popuppro/admin/includes/tab_statistic.php
<?
use \Bitrix\Main\Application,
    Bitrix\Main\Page\Asset,
    Bitrix\Main\Localization\Loc;

Loc::loadMessages(__FILE__);

global $request;

$statistic = new \Skyweb24\Popuppro\Statistics($idPopup, false, false);

$dataConversion = $editableWindow->getStatConversion($idPopup);
$dataActivePage = $statistic->getStatActivePage();
$dataDevice = $statistic->getStatDevice($idPopup);
$dataClose = $statistic->getStatClose($idPopup);
$dataActiveHour = $statistic->getStatActive($idPopup, "hour");
$dataActiveDays = $statistic->getStatActive($idPopup, "days");

CAdminMessage::ShowMessage([
    "TYPE"=>"OK",
    "MESSAGE"=>Loc::getMessage("skyweb24.popuppro_STAT_INFO"),
    'HTML'=>true
]);
?>


<tr>
    <td colspan="2"  style="vertical-align: top;">
        <div class="stat-widget boyzone">
            <div class="header"><?=GetMessage("skyweb24.popuppro_TITLE_STAT_URL");?></div>
            <div class="content">
                <? if(!empty($dataActivePage)): ?>
                    <div class="sort-tabs">
                        <label><?=GetMessage("skyweb24.popuppro_LABEL_SORT");?></label>
                        <a href="javascript:void(0);" class="tab adm-btn" disabled data-sort="shows_popup"><?=GetMessage("skyweb24.popuppro_STAT_URL_COLUMN_SHOW");?></a>
                        <a href="javascript:void(0);" class="tab adm-btn" data-sort="target"><?=GetMessage("skyweb24.popuppro_STAT_URL_COLUMN_TARGET");?></a>
                        <a href="javascript:void(0);" class="tab adm-btn" data-sort="conversion"><?=GetMessage("skyweb24.popuppro_STAT_URL_COLUMN_CONVERSION");?></a>
                    </div>
                    <script>
                        BX.ready(function () {
                            managerPopupPro.statSortTable.init({
                                idPopup: <?=$idPopup;?>
                            });
                        })
                    </script>

                    <table class="adm-list-table" data-number="Y">
                        <thead>
                        <tr class="adm-list-table-header">
                            <td class="adm-list-table-cell"><div class="adm-list-table-cell-inner">ID</div></td>
                            <td class="adm-list-table-cell adm-list-table-cell-sort" data-sort="int"><div class="adm-list-table-cell-inner"><?=GetMessage("skyweb24.popuppro_STAT_URL_COLUMN_URL");?></div></td>
                            <td class="adm-list-table-cell adm-list-table-cell-sort" data-sort="int"><div class="adm-list-table-cell-inner"><?=GetMessage("skyweb24.popuppro_STAT_URL_COLUMN_SHOW");?></div></td>
                            <td class="adm-list-table-cell adm-list-table-cell-sort" data-sort="int"><div class="adm-list-table-cell-inner"><?=GetMessage("skyweb24.popuppro_STAT_URL_COLUMN_TARGET");?></div></td>
                            <td class="adm-list-table-cell adm-list-table-cell-sort" data-sort="int"><div class="adm-list-table-cell-inner"><?=GetMessage("skyweb24.popuppro_STAT_URL_COLUMN_CONVERSION");?></div></td>
                        </tr>
                        </thead>
                        <tbody id="tableStatisticPageUrl">

                        <? foreach($dataActivePage as $key => $nextData) : ?>
                            <tr class="adm-list-table-row">
                                <td class="adm-list-table-cell"><?=++$key?></td>
                                <td class="adm-list-table-cell"><a target="_blank" href="<?=$nextData['url'];?>"><?=$nextData['url'];?></a></td>
                                <td class="adm-list-table-cell"><?=$nextData['shows_popup'];?></td>
                                <td class="adm-list-table-cell"><?=$nextData['target'];?></td>
                                <td class="adm-list-table-cell"><?=round($nextData['conversion']);?>%</td>
                            </tr>
                        <? endforeach; ?>

                        </tbody>
                    </table>

                <? else: ?>
                    <div class="empty-stat">
                        <span><?=GetMessage("skyweb24.popuppro_STAT_NOT_DATA");?></span>
                    </div>
                <? endif;?>

            </div>
        </div>
    </td>
</tr>
<tr>
    <td width="50%" style="vertical-align: top;">
        <?
        $total['countShow'] = $dataConversion['stat_show'];
        $total['targetAction'] = ($dataConversion['stat_action']) ? $dataConversion['stat_action']  : 0;
        ?>
        <div class="stat-widget <?=(empty($total['countShow'] ) AND $total['targetAction'] == 0 ) ? "" : "long-height"; ?> boyzone">
            <div class="header"><?=GetMessage("skyweb24.popuppro_TITLE_STAT_CONVERSION");?></div>
            <div class="content">
                <? if(empty($total['countShow'] ) AND $total['targetAction'] == 0 ) : ?>
                    <div class="empty-stat">
                        <span><?=GetMessage("skyweb24.popuppro_STAT_NOT_DATA");?></span>
                    </div>
                <? else : ?>
                    <div id="chartdivFunnel" style="width: 100%; height: 500px"></div>
                <? endif; ?>
            </div>
        </div>
    </td>
    <td width="50%" style="vertical-align: top;">
        <div class="stat-widget <?=($dataActiveDays) ? "long-height" : ""; ?> boyzone">
            <div class="header"><?=GetMessage("skyweb24.popuppro_TITLE_STAT_ACTIVITY");?></div>
            <div class="content">
                <? if(!empty($dataActiveHour) OR !empty($dataActiveDays)) : ?>
                    <div class="stat tabs">
                        <input type="radio" name="tab-btn" id="tab-btn-1" value="" checked>
                        <label for="tab-btn-1"><?=GetMessage('skyweb24.popuppro_STAT_ACTIVITY_BTN_DAY');?></label>
                        <input type="radio" name="tab-btn" id="tab-btn-2" value="">
                        <label for="tab-btn-2"><?=GetMessage('skyweb24.popuppro_STAT_ACTIVITY_BTN_HOUR');?></label>

                        <div id="content-1">
                            <div id="chartDateDay"></div>
                        </div>
                        <div id="content-2">
                            <div id="chartDateHour"></div>
                        </div>
                    </div>
                <? else: ?>
                    <div class="empty-stat">
                        <span><?=GetMessage("skyweb24.popuppro_STAT_NOT_DATA");?></span>
                    </div>
                <? endif; ?>

            </div>
        </div>

    </td>
</tr>
<tr>
    <td width="50%" style="vertical-align: top;">
        <div class="stat-widget boyzone">
            <div class="header"><?=GetMessage("skyweb24.popuppro_TITLE_STAT_DEVICE");?></div>
            <div class="content">
                <?
                if(!empty($dataDevice))
                {
                    $data = [];
                    $i = 0;
                    foreach($dataDevice as $key => $device)
                    {
                        switch ($key){
                            case "desktop":
                                $key = GetMessage("skyweb24.popuppro_DEVICE_CHARTS_PC");
                                break;
                            case "mobile":
                                $key = GetMessage("skyweb24.popuppro_DEVICE_CHARTS_MOBILE");
                                break;
                            case "tablet":
                                $key = GetMessage("skyweb24.popuppro_DEVICE_CHARTS_TABLET");
                                break;
                        }

                        $data[$i]['NAME'] = $key;
                        $data[$i]['QUANTITY'] = $device;
                        $i ++;
                    }
                    $devices = \Bitrix\Main\Web\Json::encode($data);
                }
                ?>

                <? if(!empty($devices)) : ?>
                    <div id="chartDevice" style="width:100%; height:500px;"></div>
                <? else : ?>
                    <div class="empty-stat"><span><?=GetMessage("skyweb24.popuppro_STAT_NOT_DATA");?></span></div>
                <? endif; ?>
            </div>
        </div>
    </td>
    <td width="50%" style="vertical-align: top;">
        <div class="stat-widget boyzone">
            <div class="header"><?=GetMessage("skyweb24.popuppro_TITLE_STAT_TYPE_CLOSE");?></div>
            <div class="content">
                <?
                if(!empty($dataClose))
                {
                    $data = [];
                    $i = 0;
                    $dataTypeClose = false;
                    foreach ($dataClose as $name => $value) {
                        if(empty($name)) continue;
                        switch($name)
                        {
                            case "closeByPopupOveray":
                                $name = GetMessage("skyweb24.popuppro_CLOSE_BY_POPUP_OVERLAY");
                                break;
                            case "closeWindow":
                                $name = GetMessage("skyweb24.popuppro_CLOSE_WINDOW");
                                break;
                            case "closeByPopupIcon":
                                $name = GetMessage("skyweb24.popuppro_CLOSE_BY_POPUP_ICON");
                                break;
                            case "closeByEsc":
                                $name = GetMessage("skyweb24.popuppro_CLOSE_BY_ESC");
                                break;
                            case "closeByTextButton":
                                $name = GetMessage("skyweb24.popuppro_CLOSE_BY_TEXT_BUTTON");
                                break;
                            default:
                                $name = "";
                                break;
                        }
                        if(!empty($name)) {
                            $data[$i]['NAME'] = $name;
                            $data[$i]['QUANTITY'] = $value;
                            $i++;
                        }
                    }
                    if(!empty($data))
                    {
                        $dataTypeClose = \Bitrix\Main\Web\Json::encode($data);
                    }

                }

                ?>

                <? if(!empty($dataTypeClose)) : ?>

                    <div id="chartTypeClose" style="width:100%; height:500px;"></div>
                <? else : ?>
                    <div class="empty-stat">
                        <span><?=GetMessage("skyweb24.popuppro_STAT_NOT_DATA");?></span>
                    </div>
                <? endif; ?>
            </div>
        </div>
    </td>
</tr>

<tr>
    <td colspan="2">
        <div style="width: 100%; display: flex;">
            <input type="button"
                   data-popup-id="<?=$request->get("id");?>"
                   class="adm-btn-save statistic_reset"
                   value="<?=Loc::getMessage("skyweb24.popuppro_STATISTIC_RESET");?>"
                   name="statistic_reset"
                   style="margin-left: auto">
        </div>
    </td>
</tr>

<script>
    BX.ready(function () {

        let chartDateHourObject;
        let chartDateDayObject;
        let chartdivFunnelObject;
        let chartDeviceObject;
        let chartTypeCLoseObject;


        <? if(!empty($dataActiveHour)) :?>
        let chartDateHour = AmCharts.makeChart( "chartDateHour", {
            "type": "serial",
            "theme": "none",
            "dataProvider": [
                <? foreach ($dataActiveHour as $hour => $data): ?>
                {"country": <?=$hour;?>, "visits": <?=$data['showTime'];?>},
                <? endforeach; ?>
            ],
            "valueAxes": [ {
                "gridColor": "#FFFFFF",
                "gridAlpha": 0.2,
                "dashLength": 0
            } ],
            "gridAboveGraphs": true,
            "startDuration": 1,
            "graphs": [ {
                "balloonText": "[[category]]: <b>[[value]]</b>",
                "fillAlphas": 0.8,
                "lineAlpha": 0.2,
                "type": "column",
                "valueField": "visits"
            } ],
            "chartCursor": {
                "categoryBalloonEnabled": false,
                "cursorAlpha": 0,
                "zoomable": false
            },
            "categoryField": "country",
            "categoryAxis": {
                "gridPosition": "start",
                "gridAlpha": 0,
                "tickPosition": "start",
                "tickLength": 20
            },
            "export": {
                "enabled": true
            }

        });
        chartDateHour.addListener("init", function (e) { chartDateHourObject = e; });
        <? endif; ?>
        <? if(!empty($dataActiveDays)) :?>
        let chartDateDay = AmCharts.makeChart( "chartDateDay", {
            "type": "serial",
            "theme": "none",
            "dataProvider": [
                <? foreach ($dataActiveDays as $key => $value):?>
                {"country": "<?=$value['day']?>", "visits": '<?=$value['showTime'];?>'},
                <? endforeach; ?>
            ],
            "valueAxes": [ {
                "gridColor": "#FFFFFF",
                "gridAlpha": 0.2,
                "dashLength": 0
            } ],
            "gridAboveGraphs": true,
            "startDuration": 1,
            "graphs": [ {
                "balloonText": "[[category]]: <b>[[value]]</b>",
                "fillAlphas": 0.8,
                "lineAlpha": 0.2,
                "type": "column",
                "valueField": "visits"
            } ],
            "chartCursor": {
                "categoryBalloonEnabled": false,
                "cursorAlpha": 0,
                "zoomable": false
            },
            "categoryField": "country",
            "categoryAxis": {
                "gridPosition": "start",
                "gridAlpha": 0,
                "tickPosition": "start",
                "tickLength": 20
            },
            "export": {
                "enabled": true
            }

        } );
        chartDateDay.addListener("init", function (e) { chartDateDayObject = e; });
        <? endif; ?>
        <? if(!empty($total['countShow'] ) OR $total['targetAction'] != 0 ) : ?>
        let chartdivFunnel = AmCharts.makeChart( "chartdivFunnel", {
            "type": "funnel",
            "theme": "none",
            "dataProvider": [ {
                "title": '<?=GetMessage("skyweb24.popuppro_CONVERSION_COUNT_SHOW");?>',
                "value": <?=$total['countShow'];?>
            }, {
                "title": '<?=GetMessage("skyweb24.popuppro_CONVERSION_COUNT_ACTION");?>',
                "value": <?=$total['targetAction']?>
            }],
            "titleField": "title",
            "marginRight": 200,
            "marginLeft": 15,
            "labelPosition": "right",
            "funnelAlpha": 0.9,
            "valueField": "value",
            "startX": 0,
            "neckWidth": "1%",
            "startAlpha": 0,
            "outlineThickness": 1,
            "neckHeight": "0%",
            "balloonText": "[[title]]:<b>[[value]]</b>",
            "export": {
                "enabled": true
            }
        } );
        chartdivFunnel.addListener("init", function (e) { chartdivFunnelObject = e; });
        <? endif; ?>
        <? if(!empty($devices)) :?>
        let chartDevice = {};
        let data = JSON.parse('<?=$devices;?>');
        sectionsDrawChartDevice(data);
        function sectionsDrawChartDevice(data) {
            let chartsData = [];
            for (let i in data) {
                chartsData.push({
                    name: data[i].NAME,
                    value: data[i].QUANTITY
                });
            }

            chartDevice = AmCharts.makeChart("chartDevice", {
                "type": "pie",
                "startDuration": 0,
                "theme": "light",
                "labelText": "",
                "addClassNames": true,
                "legend": {
                    "position": "right",
                    "marginRight": 100,
                    "autoMargins": false,
                    "divId": "top_chart_3_legend",
                },
                "innerRadius": "20%",
                "defs": {
                    "filter": [{
                        "id": "shadow",
                        "width": "200%",
                        "height": "200%",
                        "feOffset": {
                            "result": "offOut",
                            "in": "SourceAlpha",
                            "dx": 0,
                            "dy": 0
                        },
                        "feGaussianBlur": {
                            "result": "blurOut",
                            "in": "offOut",
                            "stdDeviation": 5
                        },
                        "feBlend": {
                            "in": "SourceGraphic",
                            "in2": "blurOut",
                            "mode": "normal"
                        }
                    }]
                },
                "dataProvider": chartsData,
                "valueField": "value",
                "titleField": "name",
            });

            chartDevice.addListener("init", handleInitDevice);
            chartDevice.addListener("rollOverSlice", function (e) {

                handleRollOverDevice(e);
            });
        }
        function handleInitDevice(e) {
            chartDeviceObject = e;
            chartDevice.legend.addListener("rollOverItem", handleRollOverDevice);
        }
        function handleRollOverDevice(e) {
            let wedge = e.dataItem.wedge.node;
            wedge.parentNode.appendChild(wedge);
        }
        <? endif; ?>
        <? if(!empty($dataTypeClose)) :?>
        let chartTypeCLose = {};
        let data2 = JSON.parse('<?=$dataTypeClose;?>');
        sectionsDrawChartTypeCLose(data2);
        function sectionsDrawChartTypeCLose(data) {
            let chartsData = [];
            for (let i in data) {
                chartsData.push({
                    name: data[i].NAME,
                    value: data[i].QUANTITY
                });
            }


            chartTypeCLose = AmCharts.makeChart("chartTypeClose", {
                "type": "pie",
                "startDuration": 0,
                "theme": "light",
                "labelText": "",
                "addClassNames": true,
                "legend": {
                    "position": "right",
                    "divId": "chartTypeCLose_legend",
                },
                "innerRadius": "20%",
                "defs": {
                    "filter": [{
                        "id": "shadow",
                        "width": "200%",
                        "height": "200%",
                        "feOffset": {
                            "result": "offOut",
                            "in": "SourceAlpha",
                            "dx": 0,
                            "dy": 0
                        },
                        "feGaussianBlur": {
                            "result": "blurOut",
                            "in": "offOut",
                            "stdDeviation": 5
                        },
                        "feBlend": {
                            "in": "SourceGraphic",
                            "in2": "blurOut",
                            "mode": "normal"
                        }
                    }]
                },
                "dataProvider": chartsData,
                "valueField": "value",
                "titleField": "name",
            });
            chartTypeCLose.addListener("init", handleInitTypeCLose);
            chartTypeCLose.addListener("rollOverSlice", function (e) {
                handleRollOverTypeCLose(e);
            });
        }
        function handleInitTypeCLose(e) {
            chartTypeCLoseObject = e;
            chartDevice.legend.addListener("rollOverItem", handleRollOverTypeCLose);
        }
        function handleRollOverTypeCLose(e) {

            let wedge = e.dataItem.wedge.node;
            wedge.parentNode.appendChild(wedge);
        }
        <? endif; ?>

        if(document.querySelector(".tabs [for=tab-btn-2]"))
        {
            document.querySelector(".tabs [for=tab-btn-2]").addEventListener("click", function () {
                chartDateHourObject.chart.invalidateSize();
            });
        }


        managerPopupPro.initStatCharts = function (){
            if(chartDateDayObject)
            {
                chartDateDayObject.chart.invalidateSize();
            }
            if(chartdivFunnelObject)
            {
                chartdivFunnelObject.chart.invalidateSize();
            }

            if(chartDeviceObject)
            {
                chartDeviceObject.chart.invalidateSize();
            }
            if( chartTypeCLoseObject)
            {
                chartTypeCLoseObject.chart.invalidateSize();
            }

        }
    })
</script>









Youez - 2016 - github.com/yon3zu
LinuXploit