Plugin Directory

Changeset 3378018


Ignore:
Timestamp:
10/14/2025 10:30:23 AM (3 months ago)
Author:
bestwebsoft
Message:

"V1.1.7 - * The compatibility with new WordPress version updated. "

Location:
error-log-viewer
Files:
151 added
12 edited

Legend:

Unmodified
Added
Removed
  • error-log-viewer/trunk/bws_menu/bws_functions.php

    r3262279 r3378018  
    22/**
    33 * @package BWS Menu
    4  * @version 2.4.3
     4 * @version 2.4.4
    55 * Main functions
    66 */
     
    233233     */
    234234    function bws_admin_notices() {
    235         global $bws_versions_notice_array, $bws_plugin_banner_to_settings, $bstwbsftwppdtplgns_options, $bws_plugin_banner_go_pro, $bstwbsftwppdtplgns_banner_array, $bws_plugin_banner_timeout, $bws_plugin_banner_to_promo;
     235        global $bws_versions_notice_array, $bws_plugin_banner_to_settings, $bstwbsftwppdtplgns_options, $bws_plugin_banner_go_pro, $bstwbsftwppdtplgns_banner_array, $bws_plugin_banner_timeout;
    236236
    237237        /* bws_plugin_banner_go_pro */
     
    367367        }
    368368
    369         /*  banner_to_setting_promo */
    370         if ( ! empty( $bws_plugin_banner_to_promo ) ) {
    371             $key = rand( 0, count( $bws_plugin_banner_to_promo ) - 1 );
    372             ?>
    373             <div class="updated" style="padding: 0; margin: 0; border: none; background: none;">
    374                 <div class="bws_banner_on_plugin_page bws_banner_to_settings">
    375                     <div class="icon">
    376                         <img title="" src="<?php echo esc_url( $bws_plugin_banner_to_promo[$key]['banner_url'] ); ?>" alt="" />
    377                     </div>
    378                     <div class="text">
    379                         <strong><?php echo esc_html( $bws_plugin_banner_to_promo[$key]['message'][0] ); ?></strong>
    380                         <br />
    381                         <?php echo esc_html( $bws_plugin_banner_to_promo[$key]['message'][1] ); ?>
    382                     </div>
    383                     <div class="button_div">
    384                         <a class="button" href="<?php echo esc_url( self_admin_url( $bws_plugin_banner_to_promo[$key]['settings_url'] ) ); ?>"><?php esc_html_e( 'Go to Settings', 'bestwebsoft' ); ?></a>
    385                     </div>
    386                     <form action="" method="post">
    387                         <button class="notice-dismiss bws_hide_promo_notice" title="<?php esc_html_e( 'Close notice', 'bestwebsoft' ); ?>"></button>
    388                         <input type="hidden" name="bws_hide_settings_promo_notice_<?php echo esc_html( $bws_plugin_banner_to_promo[$key]['plugin_options_name'] ); ?>" value="hide" />
    389                         <?php wp_nonce_field( plugin_basename( __FILE__ ), 'bws_settings_nonce_name' ); ?>
    390                     </form>
    391                 </div>
    392             </div>
    393             <?php
    394         }
    395 
    396369        /**
    397370         * Show notices about deprecated_function
     
    455428
    456429        if ( false === strrpos( $banner_url_or_slug, '/' ) ) {
    457             $banner_url_or_slug = '//ps.w.org/' . $banner_url_or_slug . '/assets/icon-256x256.gif';
     430            $banner_url_or_slug = '//ps.w.org/' . $banner_url_or_slug . '/assets/icon-256x256.png';
    458431        }
    459432
     
    489462
    490463            if ( false === strrpos( $banner_url_or_slug, '/' ) ) {
    491                 $banner_url_or_slug = '//ps.w.org/' . $banner_url_or_slug . '/assets/icon-256x256.gif';
     464                $banner_url_or_slug = '//ps.w.org/' . $banner_url_or_slug . '/assets/icon-256x256.png';
    492465            }
    493466
     
    535508
    536509        if ( false === strrpos( $banner_url_or_slug, '/' ) ) {
    537             $banner_url_or_slug = '//ps.w.org/' . $banner_url_or_slug . '/assets/icon-256x256.gif';
     510            $banner_url_or_slug = '//ps.w.org/' . $banner_url_or_slug . '/assets/icon-256x256.png';
    538511        }
    539512
     
    543516            'banner_url'          => $banner_url_or_slug,
    544517            'settings_url'        => $settings_url,
    545             'post_type_url'       => $post_type_url,
    546         );
    547     }
    548 }
    549 
    550 if ( ! function_exists( 'bws_plugin_banner_to_promo' ) ) {
    551     /**
    552      * Function settings for banner
    553      *
    554      * @param array $plugin_info              Plugin info.
    555      * @param array $plugin_options_name      Plugin option name.
    556      * @param array $banner_url_or_slug       Url or slug for icon.
    557      * @param array $settings_url             Url for settings.
    558      * @param array $post_type_url (Optional) Url for banner.
    559      * @return global array
    560      */
    561     function bws_plugin_banner_to_promo( $plugin_info, $plugin_options_name, $banner_url_or_slug, $settings_url, $message = array(), $post_type_url = false ) {
    562         global $bws_plugin_banner_to_promo;
    563 
    564         $is_network_admin = is_network_admin();
    565 
    566         $plugin_options = $is_network_admin ? get_site_option( $plugin_options_name ) : get_option( $plugin_options_name );
    567 
    568         if ( isset( $plugin_options['display_promo_time'] ) && $plugin_options['display_promo_time'] + 604800000 < time() ) {
    569             $plugin_options['display_promo_notice'] = 1;
    570             if ( $is_network_admin ) {
    571                 update_site_option( $plugin_options_name, $plugin_options );
    572             } else {
    573                 update_option( $plugin_options_name, $plugin_options );
    574             }
    575         }
    576 
    577         if ( isset( $plugin_options['display_promo_notice'] ) && 0 === $plugin_options['display_promo_notice'] ) {
    578             return;
    579         }
    580 
    581         if ( isset( $_POST[ 'bws_hide_settings_promo_notice_' . $plugin_options_name ] ) && check_admin_referer( plugin_basename( __FILE__ ), 'bws_settings_nonce_name' ) ) {
    582             $plugin_options['display_promo_notice'] = 0;
    583             $plugin_options['display_promo_time'] = time();
    584             if ( $is_network_admin ) {
    585                 update_site_option( $plugin_options_name, $plugin_options );
    586             } else {
    587                 update_option( $plugin_options_name, $plugin_options );
    588             }
    589             return;
    590         }
    591 
    592         if ( false === strrpos( $banner_url_or_slug, '/' ) ) {
    593             $banner_url_or_slug = '//ps.w.org/' . $banner_url_or_slug . '/assets/icon-256x256.gif';
    594         }
    595 
    596         $bws_plugin_banner_to_promo[] = array(
    597             'plugin_info'         => $plugin_info,
    598             'plugin_options_name' => $plugin_options_name,
    599             'banner_url'          => $banner_url_or_slug,
    600             'settings_url'        => $settings_url,
    601             'message'             => $message,
    602518            'post_type_url'       => $post_type_url,
    603519        );
     
    664580
    665581        if ( false === strrpos( $banner_url_or_slug, '/' ) ) {
    666             $banner_url_or_slug = '//ps.w.org/' . $banner_url_or_slug . '/assets/icon-256x256.gif';
     582            $banner_url_or_slug = '//ps.w.org/' . $banner_url_or_slug . '/assets/icon-256x256.png';
    667583        }
    668584        ?>
     
    685601        </div>
    686602        <?php
    687     }
    688 }
    689 
    690 if ( ! function_exists( 'bws_plugin_promo_banner' ) ) {
    691     /**
    692      * Function display for feature banner
    693      *
    694      * @param array $plugin_info              Plugin info.
    695      * @param array $plugin_options_name      Plugin option name.
    696      * @param array $banner_url_or_slug       Url or slug for icon.
    697      * @echo string
    698      */
    699     function bws_plugin_promo_banner( $plugin_info, $plugin_options_name, $banner_url_or_slug, $plugin_url ) {
    700         $is_network_admin = is_network_admin();
    701 
    702         $promo_plugins = array( 'google-captcha', 'contact-form-plugin' );
    703 
    704         $plugin_options = $is_network_admin ? get_site_option( $plugin_options_name ) : get_option( $plugin_options_name );
    705 
    706         if ( in_array( $banner_url_or_slug, $promo_plugins ) ) {
    707             if ( isset( $plugin_options['display_promo_banner_time'] ) && $plugin_options['display_promo_banner_time'] + 604800000 < time() ) {
    708                 $plugin_options['display_promo_banner'] = 1;
    709                 if ( $is_network_admin ) {
    710                     update_site_option( $plugin_options_name, $plugin_options );
    711                 } else {
    712                     update_option( $plugin_options_name, $plugin_options );
    713                 }
    714             }
    715             if ( isset( $plugin_options['display_promo_banner'] ) && 0 === $plugin_options['display_promo_banner'] ) {
    716                 return;
    717             }
    718 
    719             if ( isset( $_POST[ 'bws_hide_promo_banner_' . $plugin_options_name ] ) && check_admin_referer( $plugin_info['Name'], 'bws_settings_nonce_name' ) ) {
    720                 $plugin_options['display_promo_banner'] = 0;
    721                 $plugin_options['display_promo_banner_time'] = time();
    722                 if ( $is_network_admin ) {
    723                     update_site_option( $plugin_options_name, $plugin_options );
    724                 } else {
    725                     update_option( $plugin_options_name, $plugin_options );
    726                 }
    727                 return;
    728             }
    729             ?>
    730             <div style="padding: 0; margin: 0; border: none; background: none; position: relative;">
    731                 <div class="bws_banner_on_plugin_page bws_promo_banner">
    732                     <div class="promo-banner-left">
    733                         <div class="promo-banner-upgrade"><?php esc_html_e( 'Upgrade to pro', 'bestwebsoft' ); ?></div>
    734                         <div class="promo-banner-off"><?php esc_html_e( '30% OFF', 'bestwebsoft' ); ?></div>
    735                     </div>
    736                     <div class="promo-banner-text">
    737                         <div class="promo-banner-text-top"><?php esc_html_e( 'Get exclusive Pro features and premium support.', 'bestwebsoft' ); ?></div>
    738                         <div class="promo-banner-text-bottom"><?php printf( '%s <span>%s</span> %s', esc_html__( 'Use', 'bestwebsoft' ), esc_html__( 'UPGRADE', 'bestwebsoft' ), esc_html__( 'promo code for instant savings!', 'bestwebsoft' ) ); ?></div>
    739                     </div>
    740                     <div class="promo-banner-get-pro"><?php esc_html_e( 'Get PRO NOW', 'bestwebsoft' ); ?></div>
    741                 </div>
    742                 <a href="<?php echo esc_url( $plugin_url ); ?>" class="promo-banner-link"></a>
    743                 <form action="" method="post">
    744                     <button class="notice-dismiss bws_hide_settings_notice bws_hide_promo_notice" title="Close notice"></button>
    745                     <input type="hidden" name="bws_hide_promo_banner_gglcptch_options" value="hide">
    746                     <?php wp_nonce_field( $plugin_info['Name'], 'bws_settings_nonce_name' ); ?>
    747                 </form>
    748             </div>
    749             <?php
    750         }
    751603    }
    752604}
     
    930782            $bws_plugins,
    931783            $pagenow;
    932 
    933         require dirname( __FILE__ ) . '/product_list.php';
    934784
    935785        $page = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : '';
     
    15271377     */
    15281378    function bws_delete_plugin( $basename ) {
    1529         global $bstwbsftwppdtplgns_options, $wp_filesystem;
    1530         WP_Filesystem();
     1379        global $bstwbsftwppdtplgns_options;
    15311380
    15321381        $is_multisite = is_multisite();
     
    15661415                    if ( file_exists( $folder ) && is_dir( $folder ) ) {
    15671416                        array_map( 'unlink', glob( "$folder/*" ) );
    1568                         $wp_filesystem->rmdir( $folder );
     1417                        rmdir( $folder );
    15691418                    }
    15701419                }
     
    15751424                if ( file_exists( $folder ) && is_dir( $folder ) ) {
    15761425                    array_map( 'unlink', glob( "$folder/*" ) );
    1577                     $wp_filesystem->rmdir( $folder );
     1426                    rmdir( $folder );
    15781427                }
    15791428            }
  • error-log-viewer/trunk/bws_menu/bws_menu.php

    r3016145 r3378018  
    66/**
    77 * Function for displaying BestWebSoft menu
    8  * Version: 2.4.3
     8 * Version: 2.4.4
    99 */
    1010if ( ! function_exists( 'bws_admin_enqueue_scripts' ) ) {
  • error-log-viewer/trunk/bws_menu/class-bws-settings.php

    r3262279 r3378018  
    516516                        $this->custom_code_args[ "is_{$extension}_active" ] = true;
    517517                    }
    518                     if ( $wp_filesystem->is_writeable( $real_file ) ) {
     518                    if ( is_writeable( $real_file ) ) {
    519519                        $this->custom_code_args[ "{$extension}_writeable" ] = true;
    520520                    }
     
    553553                            <?php
    554554                            if ( ! current_user_can( 'edit_plugins' ) ) {
    555                                 echo '<p>' . esc_html__( 'You do not have sufficient permissions to edit plugins for this site.', 'bestwebsoft' ) . '</p>';
     555                                echo '<p>' . esc_html__( 'You do not have sufficient permissions to edit plugins for this site.', 'bestwebsoft' ) . '</p></div></div></div>';
    556556                                return;
    557557                            }
  • error-log-viewer/trunk/bws_menu/css/general_style.css

    r3262279 r3378018  
    7474    border-right: 4px solid #ffba00;
    7575}
     76@media screen and (max-width: 1600px) {
     77    .bws_info {
     78      max-width: 400px;
     79      display: inline-block;
     80      vertical-align: middle;
     81    }
     82    .form-table td {
     83      vertical-align: top;
     84    }
     85}
     86@media screen and (max-width: 1350px) {
     87    label > .bws_info  {
     88        display: block;
     89    }
     90    .bws_info {
     91        vertical-align: text-top;
     92    }
     93}
     94
    7695/*
    7796* styles for rate-support div on the settings page
     
    535554    -webkit-box-shadow: 0 0 3px #555;
    536555    -moz-box-shadow: 0 0 3px #555;
    537     max-width: 300px;
    538     position: absolute;
    539     z-index: 2;
    540556}
    541557.bws-tooltip-content a {
     
    912928    }
    913929}
    914 /* Promo banner */
    915 .bws_promo_banner {
    916     background: radial-gradient(74% 10281.6% at 33.47% 26%, rgba(64, 128, 255, 0.92) 0%, #566fef 100%);
    917     text-align: center;
    918     display: flex;
    919     color: #fff;
    920     padding: 23px 75px 20px;
    921     justify-content: space-between;
    922     align-items: center;
    923 }
    924 .promo-banner-left {
    925     display: flex;
    926 }
    927 .promo-banner-upgrade {
    928     font-size: 48px;
    929     position: relative;
    930     padding-right: 30px;
    931     text-transform: uppercase;
    932     font-weight: 700;
    933     line-height: 36px;
    934 }
    935 .promo-banner-upgrade:after{
    936     display: table;
    937     position: absolute;
    938     width: 4px;
    939     height: 42px;
    940     background-color: #fff;
    941     content: '';
    942     right: 0;
    943     top: 0;
    944 }
    945 .promo-banner-off {
    946     position: relative;
    947     font-size: 30px;
    948     background-color: #ffbb01;
    949     padding: 18px 10px 20px;
    950     margin-left: 30px;
    951     margin-top: -4px;
    952     font-weight: 700;
    953 }
    954 .promo-banner-text {
    955     font-size: 22px;
    956     line-height: 26px;
    957 }
    958 .promo-banner-text-bottom span {
    959     color: #ffbb01;
    960 }
    961 .promo-banner-get-pro {
    962     border: 3px solid #ffc411f7;
    963     font-size: 27px;
    964     padding: 1px 15px 5px;
    965     line-height: 29px;
    966     font-weight: 600;
    967 }
    968 .bws_hide_promo_notice::before {
    969     color: #fff;
    970 }
    971 .promo-banner-link {
    972     position: absolute;
    973     left: 0;
    974     right: 0;
    975     top: 0;
    976     bottom: 0;
    977 }
    978 @media screen and (max-width: 1700px) {
    979     .bws_promo_banner {
    980         padding: 23px 25px 20px;
    981     }
    982 }
    983 @media screen and (max-width: 1580px) {
    984     .bws_promo_banner {
    985         flex-wrap: wrap;
    986     }
    987     .promo-banner-left {
    988         width: 100%;
    989         justify-content: center;
    990         padding-bottom: 15px;
    991     }
    992 }
    993 @media screen and (max-width: 835px) {
    994     .bws_promo_banner {
    995         justify-content: center;
    996     }
    997     .promo-banner-text {
    998         width: 100%;
    999     }
    1000 }
    1001 @media screen and (max-width: 835px) {
    1002     .bws_promo_banner {
    1003         justify-content: center;
    1004     }
    1005     .promo-banner-left {
    1006         padding-bottom: 10px;
    1007     }
    1008     .promo-banner-text {
    1009         width: 100%;
    1010         padding-bottom: 15px;
    1011     }
    1012 }
    1013 @media screen and (max-width: 768px) {
    1014     .promo-banner-upgrade {
    1015         font-size: 34px;
    1016     }
    1017     .promo-banner-upgrade:after {
    1018         padding-right: 10px;
    1019         display: none;
    1020     }
    1021     .promo-banner-off {
    1022         padding: 10px;
    1023         margin-top: 0;
    1024         margin-left: 0;
    1025         font-size: 28px;
    1026     }
    1027 }
    1028 @media screen and (max-width: 560px) {
    1029     .promo-banner-upgrade {
    1030         letter-spacing: -1px;
    1031         padding-right: 10px;
    1032         font-size: 28px;
    1033     }
    1034     .promo-banner-text-top {
    1035         display: none;
    1036     }
    1037     .promo-banner-text-bottom {
    1038         font-size: 16px;
    1039     }
    1040     .promo-banner-off {
    1041         font-size: 24px;
    1042     }
    1043     .promo-banner-get-pro {
    1044         font-size: 18px;
    1045     }
    1046 }
    1047 @media screen and (max-width: 450px) {
    1048     .bws_promo_banner {
    1049         padding: 14px 10px;
    1050     }
    1051     .promo-banner-upgrade {
    1052         font-size: 24px;
    1053     }
    1054     .promo-banner-off {
    1055         font-size: 20px;
    1056     }
    1057     .promo-banner-get-pro {
    1058         font-size: 16px;
    1059     }
    1060 }
    1061 @media screen and (max-width: 365px) {
    1062     .promo-banner-left {
    1063         display: block;
    1064         text-align: center;
    1065     }
    1066     .promo-banner-upgrade {
    1067         padding-bottom: 10px;
    1068     }
    1069     .promo-banner-get-pro {
    1070         width: 100%;
    1071     }
    1072 }
  • error-log-viewer/trunk/bws_menu/fonts/bwsicons.svg

    r3262279 r3378018  
    66<![CDATA[
    77{
    8     "fontFamily": "bwsicons",
     8    "fontFamily": "icomoon",
    99    "majorVersion": 1,
    1010    "minorVersion": 0,
    1111    "version": "Version 1.0",
    12     "fontId": "bwsicons",
    13     "psName": "bwsicons",
     12    "fontId": "icomoon",
     13    "psName": "icomoon",
    1414    "subFamily": "Regular",
    15     "fullName": "bwsicons",
     15    "fullName": "icomoon",
    1616    "description": "Font generated by IcoMoon."
    1717}
     
    2020</metadata>
    2121<defs>
    22 <font id="bwsicons" horiz-adv-x="1024">
     22<font id="icomoon" horiz-adv-x="1024">
    2323<font-face units-per-em="1024" ascent="960" descent="-64" />
    2424<missing-glyph horiz-adv-x="1024" />
     
    8686<glyph unicode="&#xe992;" glyph-name="Columns" data-tags="Columns" d="M249.6 817.2v-738.4h-128v738.4h128zM467.2 817.2v-738.4h-128v738.4h128zM684.8 817.2v-738.4h-128v738.4h128zM902.4 817.2v-738.4h-128v738.4h128z" />
    8787<glyph unicode="&#xe993;" glyph-name="GPTAi" data-tags="GPT Ai" d="M409.919 184.994l329.81-142.572h-659.627l329.81 142.572zM409.919 737.754l400.483-702.805-400.483 173.731-400.483-173.731 400.483 702.805zM809.819 784.196l102.953 103.537 101.792-102.365-102.953-103.537-101.792 102.365zM810.403 753.518l102.088-97.994 102.088 97.994v-718.601h-204.17v718.601z" />
    88 <glyph unicode="&#xe994;" glyph-name="AdBock-Detector" data-tags="AdBock Detector" d="M463.97 833.512c-12.177-12.091-17.25-21.663-17.25-32.747v-15.114l-25.368 3.023c-28.92 3.527-45.156-4.534-60.884-30.228-9.133-14.61-10.148-25.693-10.148-118.392v-102.774l-17.25 10.58c-23.847 14.61-41.605 13.602-59.362-4.534l-15.221-15.114 1.522-134.514c2.537-151.641 4.566-163.731 39.068-216.631 23.846-36.779 60.884-67.007 100.459-82.621 26.89-10.583 39.068-12.094 137.499-13.605 105.532-1.511 108.067-1.511 134.452 10.578 30.949 14.107 55.808 37.282 71.029 65.998 11.165 20.152 11.165 25.192 12.686 272.553 1.014 165.246 0 257.944-3.554 270.035-3.042 9.572-11.16 23.175-18.77 30.228-10.653 10.076-17.756 12.091-42.62 11.587l-29.428-0.504-2.535 25.189c-2.028 20.656-5.075 28.213-18.775 40.304-15.221 13.602-19.277 14.61-44.648 12.595-26.887-2.519-29.428-1.511-45.155 14.61-14.714 14.61-20.291 16.625-42.615 16.625-22.834 0-27.907-2.015-43.129-17.129zM524.855 814.871l13.193-10.076 1.014-152.146 1.521-152.146h25.366l2.54 138.543c1.521 76.073 4.563 141.567 6.596 145.093 7.103 10.076 43.127 7.557 49.212-3.527 3.047-6.046 5.075-63.982 5.075-153.657 0-78.592 1.521-146.604 3.042-151.139 3.554-8.564 19.789-11.084 24.864-3.526 1.521 2.519 3.042 46.349 3.042 97.232 0 97.233 4.061 133.506 15.221 140.559 13.193 8.565 37.038 3.023 43.634-10.58 8.117-15.618 9.639-486.162 1.521-513.87-6.596-23.681-31.963-53.402-56.822-65.998-18.775-9.574-27.399-10.076-127.354-8.565-97.92 1.511-109.589 3.022-131.914 12.596-52.259 24.183-95.386 79.599-110.099 142.068-7.103 28.717-9.133 246.861-2.537 256.937 8.625 14.61 37.546-4.030 52.766-33.25 3.044-6.046 5.581-37.279 5.581-73.049 0-65.496 3.044-76.576 18.265-73.554 9.133 1.511 9.64 11.080 12.177 202.021 2.537 191.442 3.044 201.014 12.177 208.067 12.684 9.068 28.92 9.068 41.604 0 9.133-6.549 9.64-15.114 11.162-136.529 1.522-111.842 2.537-129.475 9.64-131.994 19.28-7.557 21.31 8.564 21.817 168.771 0 84.134 1.522 155.673 3.044 158.192 3.044 4.534 20.297 13.099 27.907 13.603 2.028 0.504 9.131-4.030 16.742-10.076zM463.761 714.725c-100.293-22.541-179.13-97.678-204.578-195.356-9.98-39.071-9.48-108.7 0.499-143.263 8.981-30.556 28.94-72.629 40.916-86.155 6.986-8.013 6.986-9.519 0-16.528-6.486-6.512-9.98-7.014-18.961-2.003-10.479 5.508-17.464 0-109.275-92.17l-97.798-98.18v-25.043c0-21.539 2.495-27.051 16.466-41.074 13.971-14.028 19.46-16.533 40.916-16.533h24.948l97.798 98.18c86.821 87.159 97.299 99.179 92.31 108.196-3.992 7.516-3.493 12.522 1.497 19.536 6.486 8.515 7.983 9.017 16.466 1.501 13.472-12.522 55.385-32.559 85.823-41.571 34.429-10.021 103.788-10.523 142.705-0.502 94.805 25.043 171.147 104.692 194.6 203.368 45.404 194.355-129.735 371.177-324.332 327.598zM585.012 682.667c45.404-12.022 76.343-30.055 110.771-65.62 59.874-61.111 81.831-140.756 62.37-224.909-20.455-87.159-91.812-159.292-179.627-181.333-13.471-3.504-43.411-5.006-71.854-3.504-42.911 2.003-52.89 4.509-86.321 20.54-51.893 25.043-91.811 65.118-116.759 117.213-17.464 35.562-18.961 43.078-20.957 91.663-1.497 44.583-0.499 57.607 8.982 85.157 41.913 125.228 167.155 194.354 293.396 160.793zM326.045 243.364c-2.994-3.504-7.485-5.508-10.478-4.007-2.495 1.506-1.996 6.010 1.497 10.021 2.994 3.504 7.485 5.508 10.479 4.007 2.494-1.506 1.996-6.010-1.497-10.021zM323.525 914.532h391.863l277.216-273.236v-386.593l-277.216-273.234h-391.863l-277.215 273.234v386.593l277.215 273.236zM333.716 889.677l-262.551-258.782v-365.794l262.55-258.779h371.483l262.552 258.779v365.794l-262.552 258.782h-371.482z" />
    8988</font></defs></svg>
  • error-log-viewer/trunk/bws_menu/product_list.php

    r3262279 r3378018  
    1919    'security'    => array( 'name' => __( 'Security', 'bestwebsoft' ) ),
    2020    'seo'         => array( 'name' => __( 'SEO', 'bestwebsoft' ) ),
    21     'smm'         => array( 'name' => __( 'SMM', 'bestwebsoft' ) ),
    2221);
    2322
     
    4544        'pro_settings' => 'admin.php?page=captcha_pro.php',
    4645    ),
    47     'bws-car-rental/bws-car-rental.php'                 => array(
    48         'category'     => array( 'ecommerce' ),
    49         'name'         => 'Car Rental V2',
    50         'description'  => __( 'Create your own rental website for car renting and booking.', 'bestwebsoft' ),
    51         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/car-rental-v2/?k=ca43df54beefae7128a7005bce0ec651&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    52         'settings'     => 'admin.php?page=bws-car-rental-settings',
    53         'pro_version'  => 'bws-car-rental-pro/bws-car-rental-pro.php',
    54         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/car-rental-v2/buy/?k=63cac1b736047a3f5a2f5a7c5336f3c4&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    55         'pro_settings' => 'edit.php?post_type=bws_bkng_products&page=bws-car-rental-pro-settings',
    56         'icon'         => '//ps.w.org/car-rental/assets/icon-128x128.png',
    57         'install_url'  => 'https://bestwebsoft.com/products/wordpress/plugins/car-rental-v2/',
    58     ),
    59     'columns-bws/columns-bws.php'                       => array(
    60         'category'    => array( 'content' ),
    61         'name'        => 'Columns',
    62         'description' => __( 'Add columns with custom content to WordPress website pages, posts, widgets, etc.', 'bestwebsoft' ),
    63         'link'        => 'https://bestwebsoft.com/products/wordpress/plugins/columns/?k=6d2cddc059a04e4d528cec14de47fb1e&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    64         'settings'    => 'admin.php?page=columns-settings.php',
    65     ),
    6646    'contact-form-plugin/contact_form.php'              => array(
    6747        'category'     => array( 'marketing', 'recommended' ),
     
    7454        'pro_settings' => 'admin.php?page=contact_form_pro.php',
    7555    ),
    76     'contact-form-multi/contact-form-multi.php'         => array(
    77         'category'     => array( 'marketing', 'recommended' ),
    78         'name'         => 'Contact Form Multi',
    79         'description'  => __( 'Add unlimited number of contact forms to WordPress website.', 'bestwebsoft' ),
    80         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/contact-form-multi/?k=83cdd9e72a9f4061122ad28a67293c72&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    81         'settings'     => '',
    82         'pro_version'  => 'contact-form-multi-pro/contact-form-multi-pro.php',
    83         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/contact-form-multi/buy/?k=fde3a18581c143654f060c398b07e8ac&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    84         'pro_settings' => '',
    85     ),
    86     'contact-form-to-db/contact_form_to_db.php'         => array(
    87         'category'     => array( 'admin-tools', 'recommended' ),
    88         'name'         => 'Contact Form to DB',
    89         'description'  => __( 'Save and manage Contact Form messages. Never lose important data.', 'bestwebsoft' ),
    90         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/contact-form-to-db/?k=ba3747d317c2692e4136ca096a8989d6&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    91         'settings'     => 'admin.php?page=contact_form_to_db.php',
    92         'pro_version'  => 'contact-form-to-db-pro/contact_form_to_db_pro.php',
    93         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/contact-form-to-db/buy/?k=6ce5f4a9006ec906e4db643669246c6a&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    94         'pro_settings' => 'admin.php?page=contact_form_to_db_pro.php',
    95     ),
    96     'custom-admin-page/custom-admin-page.php'           => array(
    97         'category'     => array( 'admin-tools' ),
    98         'name'         => 'Custom Admin Page',
    99         'description'  => __( 'Add unlimited custom pages to WordPress admin dashboard.', 'bestwebsoft' ),
    100         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/custom-admin-page/?k=9ac03f16c25e845e8e055a221c3e1467&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    101         'settings'     => 'edit.php?post_type=bws-admin_page&page=custom-admin-page.php',
    102         'pro_version'  => 'custom-admin-page-pro/custom-admin-page-pro.php',
    103         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/custom-admin-page/buy/?k=b986f456dba092b537f1a7755a363be9&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    104         'pro_settings' => 'edit.php?post_type=bws-admin_page&page=custom-admin-page-pro.php',
    105     ),
    10656    'custom-search-plugin/custom-search-plugin.php'     => array(
    10757        'category'     => array( 'navigation' ),
     
    11464        'pro_settings' => 'admin.php?page=custom_search_pro.php',
    11565    ),
    116     'donate-button/donate.php'                          => array(
    117         'category'    => array( 'ecommerce' ),
    118         'name'        => 'Donate',
    119         'description' => __( 'Add PayPal and 2CO donate buttons to receive charity payments.', 'bestwebsoft' ),
    120         'link'        => 'https://bestwebsoft.com/products/wordpress/plugins/donate/?k=a8b2e2a56914fb1765dd20297c26401b&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    121         'settings'    => 'admin.php?page=donate.php',
    122     ),
    12366    'error-log-viewer/error-log-viewer.php'             => array(
    12467        'category'    => array( 'admin-tools' ),
     
    12770        'link'        => 'https://bestwebsoft.com/products/wordpress/plugins/error-log-viewer/?k=da0de8bd2c7a0b2fea5df64d55a368b3&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    12871        'settings'    => 'admin.php?page=rrrlgvwr.php&tab=settings',
    129     ),
    130     'facebook-button-plugin/facebook-button-plugin.php' => array(
    131         'category'     => array( 'smm' ),
    132         'name'         => 'Like & Share',
    133         'description'  => __( 'Add Facebook Follow, Like, and Share buttons to WordPress posts, pages, and widgets.', 'bestwebsoft' ),
    134         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/facebook-like-button/?k=05ec4f12327f55848335802581467d55&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    135         'settings'     => 'admin.php?page=facebook-button-plugin.php',
    136         'pro_version'  => 'facebook-button-pro/facebook-button-pro.php',
    137         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/facebook-like-button/buy/?k=8da168e60a831cfb3525417c333ad275&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    138         'pro_settings' => 'admin.php?page=facebook-button-pro.php',
    13972    ),
    14073    'gallery-plugin/gallery-plugin.php'                 => array(
     
    15891        'pro_settings' => 'admin.php?page=google-2-step-verification-pro.php',
    15992    ),
    160     'bws-adsense/bws-adsense.php'                       => array(
    161         'category'     => array( 'marketing' ),
    162         'name'         => 'AdS',
    163         'description'  => __( 'Add Adsense ads to WordPress website pages, posts, custom posts, search results, categories, tags, and widgets.', 'bestwebsoft' ),
    164         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/google-adsense/?k=9d719e415eee289845b00843e8847bc9&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    165         'settings'     => 'admin.php?page=bws-adsense.php',
    166         'pro_version'  => 'adsense-pro/adsense-pro.php',
    167         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/google-adsense/buy/?k=60e3979921e354feb0347e88e7d7b73d&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    168         'pro_settings' => 'admin.php?page=adsense-pro.php',
    169     ),
    170     'bws-google-analytics/bws-google-analytics.php'     => array(
    171         'category'     => array( 'admin-tools' ),
    172         'name'         => 'Analytics',
    173         'description'  => __( 'Add Google Analytics code to WordPress website and track basic stats.', 'bestwebsoft' ),
    174         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/bws-google-analytics/?k=261c74cad753fb279cdf5a5db63fbd43&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    175         'settings'     => 'admin.php?page=bws-google-analytics.php',
    176         'pro_version'  => 'bws-google-analytics-pro/bws-google-analytics-pro.php',
    177         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/bws-google-analytics/buy/?k=83796e84fec3f70ecfcc8894a73a6c4a&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    178         'pro_settings' => 'admin.php?page=bws-google-analytics-pro.php',
    179     ),
    18093    'google-captcha/google-captcha.php'                 => array(
    18194        'category'     => array( 'security', 'recommended' ),
     
    188101        'pro_settings' => 'admin.php?page=google-captcha-pro.php',
    189102    ),
    190     'bws-google-maps/bws-google-maps.php'               => array(
    191         'category'     => array( 'content' ),
    192         'name'         => 'Maps',
    193         'description'  => __( 'Add customized Google maps to WordPress posts, pages and widgets.', 'bestwebsoft' ),
    194         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/bws-google-maps/?k=d8fac412d7359ebaa4ff53b46572f9f7&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    195         'settings'     => 'admin.php?page=bws-google-maps.php',
    196         'pro_version'  => 'bws-google-maps-pro/bws-google-maps-pro.php',
    197         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/bws-google-maps/buy/?k=117c3f9fc17f2c83ef430a8a9dc06f56&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    198         'pro_settings' => 'admin.php?page=bws-google-maps-pro.php',
    199     ),
    200103    'google-sitemap-plugin/google-sitemap-plugin.php'   => array(
    201104        'category'     => array( 'seo', 'recommended' ),
     
    208111        'pro_settings' => 'admin.php?page=google-sitemap-pro.php',
    209112    ),
    210     'google-shortlink/google-shortlink.php'             => array(
    211         'category'    => array( 'seo' ),
    212         'name'        => 'Shortlink',
    213         'description' => __( 'Replace external WordPress website links with Google shortlinks and track click stats.', 'bestwebsoft' ),
    214         'link'        => 'https://bestwebsoft.com/products/wordpress/plugins/google-shortlink/?k=afcf3eaed021bbbbeea1090e16bc22db&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    215         'settings'    => 'admin.php?page=gglshrtlnk_options',
    216     ),
    217     'gpt-ai-content-creator-by-bestwebsoft/gpt-ai-content-creator-by-bestwebsoft.php' => array(
    218         'category'     => array( 'content', 'recommended' ),
    219         'name'         => 'GPT AI Content Creator',
    220         'description'  => __( 'Create Content with GPT.', 'bestwebsoft' ),
    221         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/gpt-ai-content-creator/?k=f1ef1b7d7d05f93c570b940cc9acfe15&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    222         'settings'     => 'admin.php?page=gpt-ai-content-creator.php',
    223         'icon'         => bws_menu_url( 'icons/plugins/' ) . 'gpt-ai-content-creator.png',
    224         'pro_version'  => 'gpt-ai-content-creator-pro-by-bestwebsoft/gpt-ai-content-creator-pro-by-bestwebsoft.php',
    225         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/gpt-ai-content-creator/buy/?k=8b19619d4a36f8b42c5d4fbcbd9775bb&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    226         'pro_settings' => 'admin.php?page=gpt-ai-content-creator-pro.php',
    227     ),
    228     'htaccess/htaccess.php'                             => array(
     113    'htaccess/htaccess.php'                            => array(
    229114        'category'     => array( 'security' ),
    230115        'name'         => 'Htaccess',
     
    235120        'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/htaccess/buy/?k=59e9209a32864be534fda77d5e591c15&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    236121        'pro_settings' => 'admin.php?page=htaccess-pro.php',
    237     ),
    238     'job-board/job-board.php'                           => array(
    239         'category'    => array( 'ecommerce' ),
    240         'name'        => 'Job Board',
    241         'description' => __( 'Create your personal job board and listing WordPress website. Search jobs, submit CV/resumes, choose candidates.', 'bestwebsoft' ),
    242         'link'        => 'https://bestwebsoft.com/products/wordpress/plugins/job-board/?k=b0c504c9ce6edd6692e04222af3fed6f&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    243         'settings'    => 'admin.php?page=job-board.php',
    244122    ),
    245123    'limit-attempts/limit-attempts.php'                 => array(
     
    253131        'pro_settings' => 'admin.php?page=limit-attempts-pro.php',
    254132    ),
    255     'bws-linkedin/bws-linkedin.php'                     => array(
    256         'category'     => array( 'smm' ),
    257         'name'         => 'LinkedIn',
    258         'description'  => __( 'Add LinkedIn Share and Follow buttons to WordPress posts, pages and widgets. 5 plugins included – profile, insider, etc.', 'bestwebsoft' ),
    259         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/linkedin/?k=d63c7319622ccc5f589dd2d545c1d77c&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    260         'settings'     => 'admin.php?page=linkedin.php',
    261         'pro_version'  => 'bws-linkedin-pro/bws-linkedin-pro.php',
    262         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/linkedin/buy/?k=41dcc36192994408d24b103a02134567&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    263         'pro_settings' => 'admin.php?page=linkedin-pro.php',
    264     ),
    265     /*'bws-login-register/bws-login-register.php'         => array(
    266         'category'     => array( 'smm' ),
     133    'bws-login-register/bws-login-register.php'         => array(
     134        'category'     => array( 'admin-tools', 'navigation' ),
    267135        'name'         => 'Login & Register Form',
    268136        'description'  => __( 'Add LinkedIn Share and Follow buttons to WordPress posts, pages and widgets. 5 plugins included – profile, insider, etc.', 'bestwebsoft' ),
    269         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/linkedin/?k=d63c7319622ccc5f589dd2d545c1d77c&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
     137        'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/login-and-register/?k=7d503ba164eca02ddf5b2c4942cbb953&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    270138        'settings'     => 'admin.php?page=login-register-form.php',
    271         'pro_version'  => 'bws-linkedin-pro/bws-linkedin-pro.php',
    272         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/linkedin/buy/?k=41dcc36192994408d24b103a02134567&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    273         'pro_settings' => 'admin.php?page=linkedin-pro.php',
    274     ),*/
     139        'pro_version'  => 'bws-login-register-pro/bws-login-register-pro.php',
     140        'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/login-and-register/buy/?k=df2a23c0abf357439d325bf3953deaf8&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
     141        'pro_settings' => 'admin.php?page=bws-login-register-pro.php',
     142    ),
    275143    'multilanguage/multilanguage.php'                   => array(
    276144        'category'     => array( 'content', 'recommended' ),
     
    303171        'pro_settings' => 'admin.php?page=pdf-print-pro.php',
    304172    ),
    305     'bws-pinterest/bws-pinterest.php'                   => array(
    306         'category'     => array( 'smm' ),
    307         'name'         => 'Pinterest',
    308         'description'  => __( 'Add Pinterest Follow, Pin It buttons and profile widgets (Pin, Board, Profile) to WordPress posts, pages and widgets.', 'bestwebsoft' ),
    309         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/pinterest/?k=504107b6213f247a67fe7ffb94e97c78&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    310         'settings'     => 'admin.php?page=pinterest.php',
    311         'pro_version'  => 'bws-pinterest-pro/bws-pinterest-pro.php',
    312         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/pinterest/buy/?k=ab0069edd1914a3ca8f541bfd88bb0bb&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    313         'pro_settings' => 'admin.php?page=pinterest-pro.php',
    314     ),
    315     'portfolio/portfolio.php'                           => array(
    316         'category'     => array( 'content', 'recommended' ),
    317         'name'         => 'Portfolio',
    318         'description'  => __( 'Create your personal portfolio WordPress website. Manage and showcase past projects to get more clients.', 'bestwebsoft' ),
    319         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/portfolio/?k=1249a890c5b7bba6bda3f528a94f768b&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    320         'settings'     => 'admin.php?page=portfolio.php',
    321         'pro_version'  => 'portfolio-pro/portfolio-pro.php',
    322         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/portfolio/buy/?k=2cc716026197d36538a414b728e49fdd&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    323         'pro_settings' => 'admin.php?page=portfolio-pro.php',
    324     ),
    325     'post-to-csv/post-to-csv.php'                       => array(
    326         'category'     => array( 'admin-tools' ),
    327         'name'         => 'Post to CSV',
    328         'description'  => __( 'Export WordPress posts to CSV file format easily. Configure data order.', 'bestwebsoft' ),
    329         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/post-to-csv/?k=653aa55518ae17409293a7a894268b8f&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    330         'settings'     => 'admin.php?page=post-to-csv.php',
    331         'pro_version'  => 'post-to-csv-pro/post-to-csv-pro.php',
    332         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/post-to-csv/buy/?k=b6521601d1579ed9c556ba98234f2d8f&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    333         'pro_settings' => 'admin.php?page=post-to-csv-pro.php',
    334     ),
    335173    'profile-extra-fields/profile-extra-fields.php'     => array(
    336174        'category'     => array( 'admin-tools' ),
     
    343181        'pro_settings' => 'admin.php?page=profile-extra-fields-pro.php',
    344182    ),
    345     'promobar/promobar.php'                             => array(
    346         'category'     => array( 'marketing' ),
    347         'name'         => 'PromoBar',
    348         'description'  => __( 'Add and display HTML advertisement banner on WordPress website. Customize bar styles and appearance.', 'bestwebsoft' ),
    349         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/promobar/?k=619eac2232d9cfa382c4e678c3b14766&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    350         'settings'     => 'admin.php?page=promobar.php',
    351         'pro_version'  => 'promobar-pro/promobar-pro.php',
    352         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/promobar/buy/?k=a9b09708502f12a1483532ba12fe2103&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    353         'pro_settings' => 'admin.php?page=promobar-pro.php',
    354     ),
    355183    'quotes-and-tips/quotes-and-tips.php'               => array(
    356184        'category'    => array( 'content' ),
     
    359187        'link'        => 'https://bestwebsoft.com/products/wordpress/plugins/quotes-and-tips/?k=5738a4e85a798c4a5162240c6515098d&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    360188        'settings'    => 'admin.php?page=quotes-and-tips.php',
    361         'pro_version'  => 'quotes-and-tips-pro/quotes-and-tips-pro.php',
    362         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/quotes-and-tips/buy/?k=75347ac9699d9e965a81673fbbb80876&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    363         'pro_settings' => 'admin.php?page=quotes-and-tips-pro.php',
    364     ),
    365     'rating-bws/rating-bws.php'                         => array(
    366         'category'     => array( 'marketing' ),
    367         'name'         => 'Rating',
    368         'description'  => __( 'Add rating plugin to your WordPress website to receive feedback from your customers.', 'bestwebsoft' ),
    369         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/rating/?k=c00e0824bb999735a3224616ef51f4c5&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    370         'settings'     => 'admin.php?page=rating.php',
    371         'pro_version'  => 'rating-bws-pro/rating-bws-pro.php',
    372         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/rating/buy/?k=ba459f3115edb7be610e8d6f8e05df6c&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    373         'pro_settings' => 'admin.php?page=rating-bws-pro.php',
    374     ),
    375     'realty/realty.php'                                 => array(
    376         'category'     => array( 'ecommerce' ),
    377         'name'         => 'Realty',
    378         'description'  => __( 'Create your personal real estate WordPress website. Sell, rent and buy properties. Add, search and browse listings easily.', 'bestwebsoft' ),
    379         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/realty/?k=d55de979dbbbb7af0b2ff1d7f43884fa&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    380         'settings'     => 'admin.php?page=realty_settings',
    381         'pro_version'  => 'realty-pro/realty-pro.php',
    382         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/realty/buy/?k=c7791f0a72acfb36f564a614dbccb474&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    383         'pro_settings' => 'admin.php?page=realty_pro_settings',
    384     ),
    385     'relevant/related-posts-plugin.php'                 => array(
    386         'category'    => array( 'marketing', 'recommended' ),
    387         'name'        => 'Relevant - Related, Featured, Latest, and Popular Posts',
    388         'description' => __( 'Add related, featured, latest, and popular posts to your WordPress website. Connect your blog readers with a relevant content.', 'bestwebsoft' ),
    389         'link'        => 'https://bestwebsoft.com/products/wordpress/plugins/related-posts/?k=73fb737037f7141e66415ec259f7e426&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    390         'settings'    => 'admin.php?page=related-posts-plugin.php',
    391         'pro_version'  => 'relevant-pro/related-posts-pro.php',
    392         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/related-posts/buy/?k=16368e8d55909c4852dd0fe39f89ed556&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    393         'pro_settings' => 'admin.php?page=related-posts-pro.php',
    394     ),
    395     'sender/sender.php'                                 => array(
    396         'category'     => array( 'marketing', 'recommended' ),
    397         'name'         => 'Sender',
    398         'description'  => __( 'Send bulk email messages to WordPress users. Custom templates, advanced settings and detailed reports.', 'bestwebsoft' ),
    399         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/sender/?k=89c297d14ba85a8417a0f2fc05e089c7&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    400         'settings'     => 'admin.php?page=sndr_settings',
    401         'pro_version'  => 'sender-pro/sender-pro.php',
    402         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/sender/buy/?k=dc5d1a87bdc8aeab2de40ffb99b38054&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    403         'pro_settings' => 'admin.php?page=sndrpr_settings',
    404     ),
    405     'slider-bws/slider-bws.php'                         => array(
    406         'category'    => array( 'content' ),
    407         'name'        => 'Slider',
    408         'description' => __( 'The best responsive slider plugin for your WordPress website. Create beautifully animated slides just in a few clicks.', 'bestwebsoft' ),
    409         'link'        => 'https://bestwebsoft.com/products/wordpress/plugins/slider/?k=02acebf8531b2995e7de8474ae28e290&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    410         'settings'    => 'admin.php?page=slider-settings.php',
    411     ),
    412     'bws-smtp/bws-smtp.php'                             => array(
    413         'category'    => array( 'admin-tools' ),
    414         'name'        => 'SMTP',
    415         'description' => __( 'Configure SMTP server to receive email messages from WordPress to Gmail, Yahoo, Hotmail and other services.', 'bestwebsoft' ),
    416         'link'        => 'https://bestwebsoft.com/products/wordpress/plugins/smtp/?k=0546419f962704429ad2d9b88567752f&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    417         'settings'    => 'admin.php?page=bwssmtp_settings',
    418     ),
    419     'social-buttons-pack/social-buttons-pack.php'       => array(
    420         'category'     => array( 'smm', 'recommended' ),
    421         'name'         => 'Social Buttons Pack',
    422         'description'  => __( 'Add social media buttons and widgets to WordPress posts, pages and widgets. FB, Twitter, Pinterest, LinkedIn.', 'bestwebsoft' ),
    423         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/social-buttons-pack/?k=b6440fad9f54274429e536b0c61b42da&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    424         'settings'     => 'admin.php?page=social-buttons.php',
    425         'pro_version'  => 'social-buttons-pack-pro/social-buttons-pack-pro.php',
    426         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/social-buttons-pack/buy/?k=e7059cacde0d275b224a5d995c9160fd&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    427         'pro_settings' => 'admin.php?page=social-buttons-pro.php',
    428     ),
    429     'social-login-bws/social-login-bws.php'             => array(
    430         'category'    => array( 'smm' ),
    431         'name'        => 'Social Login',
    432         'description' => __( 'Add social media login, registration, and commenting to your WordPress website.', 'bestwebsoft' ),
    433         'link'        => 'https://bestwebsoft.com/products/wordpress/plugins/social-login/?k=62817c9c94f24129e40894e1d9c3f49d&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    434         'settings'    => 'admin.php?page=social-login.php',
    435     ),
    436     'subscriber/subscriber.php'                         => array(
    437         'category'     => array( 'marketing', 'recommended' ),
    438         'name'         => 'Subscriber',
    439         'description'  => __( 'Add email newsletter sign up form to WordPress posts, pages and widgets. Collect data and subscribe your users.', 'bestwebsoft' ),
    440         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/subscriber/?k=a4ecc1b7800bae7329fbe8b4b04e9c88&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    441         'settings'     => 'admin.php?page=subscriber.php',
    442         'pro_version'  => 'subscriber-pro/subscriber-pro.php',
    443         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/subscriber/buy/?k=02dbb8b549925d9b74e70adc2a7282e4&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    444         'pro_settings' => 'admin.php?page=subscriber-pro.php',
    445     ),
    446     'bws-testimonials/bws-testimonials.php'             => array(
    447         'category'    => array( 'marketing', 'recommended' ),
    448         'name'        => 'Testimonials',
    449         'description' => __( 'Add testimonials and feedbacks from your customers to WordPress website posts, pages, and widgets.', 'bestwebsoft' ),
    450         'link'        => 'https://bestwebsoft.com/products/wordpress/plugins/testimonials/?k=3fe4bb89dc901c98e43a113e08f8db73&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    451         'settings'    => 'admin.php?page=testimonials.php',
    452         'pro_version'  => 'bws-testimonials-pro/bws-testimonials-pro.php',
    453         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/testimonials/buy/?k=3fe4bb89dc901c98e43a113e08f8db73&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    454         'pro_settings' => 'edit.php?post_type=bws-testimonial&page=testimonials-ro.php',
    455     ),
    456     'timesheet/timesheet.php'                           => array(
    457         'category'     => array( 'admin-tools' ),
    458         'name'         => 'Timesheet',
    459         'description'  => __( 'Best timesheet plugin for WordPress. Track employee time, streamline attendance and generate reports.', 'bestwebsoft' ),
    460         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/timesheet/?k=06a58bb78c17a43df01825925f05a5c1&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    461         'settings'     => 'admin.php?page=timesheet_settings',
    462         'pro_version'  => 'timesheet-pro/timesheet-pro.php',
    463         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/timesheet/buy/?k=a448ce4cab0d365b7774c9bc3903b851&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    464         'pro_settings' => 'admin.php?page=timesheet_pro_settings',
    465     ),
    466     'twitter-plugin/twitter.php'                        => array(
    467         'category'     => array( 'smm' ),
    468         'name'         => 'Twitter',
    469         'description'  => __( 'Add Twitter Follow, Tweet, Hashtag, and Mention buttons to WordPress posts and pages.', 'bestwebsoft' ),
    470         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/twitter/?k=f8cb514e25bd7ec4974d64435c5eb333&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    471         'settings'     => 'admin.php?page=twitter.php',
    472         'pro_version'  => 'twitter-pro/twitter-pro.php',
    473         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/twitter/buy/?k=63ecbf0cc9cebf060b5a3c9362299700&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    474         'pro_settings' => 'admin.php?page=twitter-pro.php',
    475189    ),
    476190    'updater/updater.php'                               => array(
     
    494208        'pro_settings' => 'admin.php?page=user-role-pro.php',
    495209    ),
    496     'visitors-online/visitors-online.php'               => array(
    497         'category'     => array( 'admin-tools' ),
    498         'name'         => 'Visitors Online',
    499         'description'  => __( 'Display live count of online visitors who are currently browsing your WordPress website.', 'bestwebsoft' ),
    500         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/visitors-online/?k=93c28013a4f830671b3bba9502ed5177&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    501         'settings'     => 'admin.php?page=visitors-online.php',
    502         'pro_version'  => 'visitors-online-pro/visitors-online-pro.php',
    503         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/visitors-online/buy/?k=f9a746075ff8a0a6cb192cb46526afd2&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    504         'pro_settings' => 'admin.php?page=visitors-online-pro.php',
    505     ),
    506     'zendesk-help-center/zendesk-help-center.php'       => array(
    507         'category'     => array( 'admin-tools' ),
    508         'name'         => 'Help Center',
    509         'description'  => __( 'Backup and export Zendesk Help Center content automatically to your WordPress website database.', 'bestwebsoft' ),
    510         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/zendesk-help-center/?k=2a5fd2f4b2f4bde46f2ca44b8d15846d&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    511         'settings'     => 'admin.php?page=zendesk_hc.php',
    512         'pro_version'  => 'zendesk-help-center-pro/zendesk-help-center-pro.php',
    513         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/zendesk-help-center/buy/?k=45199e4538b5befe4d9566868a61a3aa&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    514         'pro_settings' => 'admin.php?page=zendesk_hc_pro.php',
    515     ),
    516210);
    517211
  • error-log-viewer/trunk/error-log-viewer.php

    r3262279 r3378018  
    77Text Domain: error-log-viewer
    88Domain Path: /languages
    9 Version: 1.1.6
     9Version: 1.1.7
    1010Author URI: https://bestwebsoft.com/
    1111License: GNU General Public License V3
     
    8181
    8282        if ( isset( $_GET['action'] ) && 'rrrlgvwr_get_file' === sanitize_text_field( wp_unslash( $_GET['action'] ) ) && isset( $_GET['rrrlgvwr_nonce'] ) && wp_verify_nonce( sanitize_text_field( wp_unslash( $_GET['rrrlgvwr_nonce'] ) ), 'rrrlgvwr_get_file' ) && isset( $_GET['name'] ) ) {
    83             rrrlgvwr_get_file( sanitize_text_field( wp_unslash( $_GET['name'] ) ) );
     83            rrrlgvwr_get_file( sanitize_file_name( wp_unslash( $_GET['name'] ) ) );
    8484        }
    8585    }
     
    306306                        $message = __( 'File(s) was deleted successfully', 'error-log-viewer' );
    307307                    } else {
     308                        /* translators: %s: file name */
    308309                        $error = sprintf( __( "Couldn't delete file %s, change permission to the 'wp-content' or 'error-log-viewer' plugin directory", 'error-log-viewer' ), ( dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'saved_logs' . DIRECTORY_SEPARATOR . $check_del . '.txt' ) );
    309310                    }
    310311                } else {
     312                    /* translators: %s: file name */
    311313                    $error = sprintf( __( "Couldn't delete file %s, the file is not exist", 'error-log-viewer' ), ( dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'saved_logs' . DIRECTORY_SEPARATOR . $check_del . '.txt' ) );
    312314                }
     
    352354        <div class="wrap">
    353355            <h1><?php esc_html_e( 'Log Monitor', 'error-log-viewer' ); ?></h1>
    354             <div class="updated fade below-h2" 
     356            <div class="updated fade below-h2"
    355357            <?php
    356358            if ( empty( $message ) || '' !== $error ) {
     
    359361            ?>
    360362            ><p><strong><?php echo esc_html( $message ); ?></strong></p></div>
    361             <div class="error below-h2" 
     363            <div class="error below-h2"
    362364            <?php
    363365            if ( '' === $error ) {
     
    533535                                    <?php if ( false !== strpos( $rrrlgvwr_options['error_log_path'], $home_path ) ) { ?>
    534536                                        <a target="_blank" href="<?php echo esc_url( str_replace( $home_path, get_home_url(), $rrrlgvwr_options['error_log_path'] ) ); ?>"><?php echo esc_html( basename( $rrrlgvwr_options['error_log_path'] ) ); ?></a>
    535                                         <?php 
     537                                        <?php
    536538                                    } else {
    537539                                        echo esc_html( basename( $rrrlgvwr_options['error_log_path'] ) );
     
    572574                        <?php
    573575                        printf(
     576                            /* translators: %s: link to page */
    574577                            esc_html__( 'Please enable log files in the %1$sError Log Viewer settings page%2$s to manage them.', 'error-log-viewer' ),
    575578                            '<a href="admin.php?page=rrrlgvwr.php">',
     
    583586                    <?php
    584587                    printf(
     588                        /* translators: %s: link to page */
    585589                        esc_html__( 'Please enable log files in the %1$sError Log Viewer settings page%2$s to manage them.', 'error-log-viewer' ),
    586590                        '<a href="admin.php?page=rrrlgvwr.php">',
     
    615619            return $files;
    616620        } else {
     621            /* translators: %s: directory name */
    617622            return printf( esc_html__( "Directory %s is not exists, or isn't readable", 'error-log-viewer' ), esc_attr( $directory ) );
    618623        }
     
    652657            }
    653658        } else {
     659            /* translators: %s: file name */
    654660            return printf( esc_html__( 'File %s is not exists', 'error-log-viewer' ), esc_attr( $path ) );
    655661        }
     
    684690            }
    685691        } else {
     692            /* translators: %s: file name */
    686693            return printf( esc_html__( 'File %s is not exists', 'error-log-viewer' ), esc_attr( $path ) );
    687694        }
     
    702709
    703710        if ( $wp_filesystem->exists( $file ) ) {
    704             $file_lines = $wp_filesystem->get_contents_array( $file );
    705             $text       = array_slice( $file_lines, -$lines, $lines );
    706             foreach ( $text as $line ) {
    707                 echo wp_kses_post( $line );
     711            $max_file_size = rrrlgvwr_human2byte( ini_get( 'post_max_size' ) );
     712            if ( filesize( $file ) > $max_file_size ) {
     713                echo esc_html__( "The file size exceeds the server's capabilities to display it.", 'error-log-viewer' );
     714            } else {
     715                $file_lines = $wp_filesystem->get_contents_array( $file );
     716                $text       = array_slice( $file_lines, -$lines, $lines );
     717
     718                foreach ( $text as $line ) {
     719                    echo wp_kses_post( $line );
     720                }
    708721            }
    709722        } else {
     723            /* translators: %s: file name */
    710724            return printf( esc_html__( "Couldn't open the file %s. Make sure file exists or is readable.", 'error-log-viewer' ), esc_attr( $file ) );
    711725        }
     726    }
     727}
     728
     729if ( ! function_exists( 'rrrlgvwr_human2byte' ) ) {
     730    /**
     731     * Function read X last lines from file
     732     *
     733     * @param string $file  File name.
     734     * @param array  $lines Lines from file.
     735     * @return string
     736     */
     737    function rrrlgvwr_human2byte( $value ) {
     738        return preg_replace_callback( '/^\s*(\d+)\s*(?:([kmgt]?)b?)?\s*$/i', function ( $m ) {
     739            switch ( strtolower( $m[2] ) ) {
     740                case 't': $m[1] *= 1024;
     741                case 'g': $m[1] *= 1024;
     742                case 'm': $m[1] *= 1024;
     743                case 'k': $m[1] *= 1024;
     744            }
     745            return $m[1];
     746        }, $value );
    712747    }
    713748}
     
    727762
    728763        if ( $wp_filesystem->exists( $file ) ) {
    729             $file_lines = $wp_filesystem->get_contents_array( $file );
    730             $pattern    = '/\[(.*?)\s/';
    731             $pattern_2  = '/(\d{4}-\d{2}-\d{2}).*?\s/';
    732             $count_line = 0;
    733             $line_date  = 0;
    734             foreach ( $file_lines as $line ) {
    735                 if ( preg_match( $pattern, $line, $matches ) ) {
    736                     $line_date = $matches[1];
    737                 } elseif ( preg_match( $pattern_2, $line, $matches ) ) {
    738                     $line_date = $matches[1];
    739                 }
    740                 if ( strtotime( $line_date ) >= $first_date && strtotime( $line_date ) <= $last_date ) {
    741                     $count_line ++;
    742                     echo wp_kses_post( $line );
    743                 } else {
    744                     continue;
    745                 }
    746             }
    747             if ( 0 === $count_line ) {
    748                 printf( esc_html__( 'No log in search date from %1$s to %2$s', 'error-log-viewer' ), esc_html( gmdate( 'Y-m-d', $first_date ), gmdate( 'Y-m-d', $last_date ) ) );
     764            $max_file_size = rrrlgvwr_human2byte( ini_get( 'post_max_size' ) );
     765            if ( filesize( $file ) > $max_file_size ) {
     766                echo esc_html__( "The file size exceeds the server's capabilities to display it.", 'error-log-viewer' );
     767            } else {
     768                $file_lines = $wp_filesystem->get_contents_array( $file );
     769                $pattern    = '/\[(.*?)\s/';
     770                $pattern_2  = '/(\d{4}-\d{2}-\d{2}).*?\s/';
     771                $count_line = 0;
     772                $line_date  = 0;
     773                foreach ( $file_lines as $line ) {
     774                    if ( preg_match( $pattern, $line, $matches ) ) {
     775                        $line_date = $matches[1];
     776                    } elseif ( preg_match( $pattern_2, $line, $matches ) ) {
     777                        $line_date = $matches[1];
     778                    }
     779                    if ( strtotime( $line_date ) >= $first_date && strtotime( $line_date ) <= $last_date ) {
     780                        $count_line ++;
     781                        echo wp_kses_post( $line );
     782                    } else {
     783                        continue;
     784                    }
     785                }
     786                if ( 0 === $count_line ) {
     787                    /* translators: %1$s: date */
     788                    /* translators: %2$s: date */
     789                    printf( esc_html__( 'No log in search date from %1$s to %2$s', 'error-log-viewer' ), esc_html( gmdate( 'Y-m-d', $first_date ), gmdate( 'Y-m-d', $last_date ) ) );
     790                }
    749791            }
    750792        } else {
     793            /* translators: %s: file name */
    751794            return printf( esc_html__( "Couldn't open the file %s. Make sure file exists or is readable.", 'error-log-viewer' ), esc_attr( $file ) );
    752795        }
     
    766809
    767810        if ( $wp_filesystem->exists( $file ) ) {
    768             $file_lines = $wp_filesystem->get_contents_array( $file );
    769             foreach ( $file_lines as $line ) {
    770                 echo wp_kses_post( $line );
     811            $max_file_size = rrrlgvwr_human2byte( ini_get( 'post_max_size' ) );
     812            if ( filesize( $file ) > $max_file_size ) {
     813                echo esc_html__( "The file size exceeds the server's capabilities to display it.", 'error-log-viewer' );
     814            } else {
     815                $file_lines = $wp_filesystem->get_contents_array( $file );
     816                foreach ( $file_lines as $line ) {
     817                    echo wp_kses_post( $line );
     818                }
    771819            }
    772820        } else {
     821            /* translators: %s: file name */
    773822            return printf( esc_html__( "Couldn't open the file %s. Make sure file exists or is readable.", 'error-log-viewer' ), esc_attr( $file ) );
    774823        }
     
    785834    function rrrlgvwr_save_file( $content ) {
    786835        global $wp_filesystem;
    787         if ( @is_writable( dirname( __FILE__ ) ) ) {
    788             WP_Filesystem();
     836        WP_Filesystem();
     837        if ( @$wp_filesystem->is_writable( dirname( __FILE__ ) ) ) {
    789838            if ( ! $wp_filesystem->exists( dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'saved_logs' ) ) {
    790839                $wp_filesystem->mkdir( dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'saved_logs' );
     
    827876        if ( $wp_filesystem->exists( $file ) && ( $page->check_file( $file ) || $rrrlgvwr_php_error_path === $file ) ) {
    828877            if ( ! $wp_filesystem->get_contents( $file ) ) {
     878                /* translators: %s: file name */
    829879                return sprintf( esc_html__( "Couldn't open the file %s. Make sure file exists or is readable.", 'error-log-viewer' ), esc_attr( $file ) );
    830880            } else {
     
    832882            }
    833883        } else {
     884            /* translators: %s: file name */
    834885            return sprintf( esc_html__( 'This file %s cannot be cleared.', 'error-log-viewer' ), esc_attr( $file ) );
    835886        }
     
    847898        $file   = get_home_path() . '.htaccess'; /* Path to the .htaccess file */
    848899        $string = PHP_EOL . '# log php errors' . PHP_EOL . 'php_flag  log_errors on' . PHP_EOL . 'php_flag  log_errors on' . PHP_EOL . 'php_value error_log ' . plugin_dir_path( __FILE__ ) . 'log/php-errors.log' . PHP_EOL;
     900        WP_Filesystem();
    849901        /* Check is .htaccess writable */
    850         if ( @is_writable( $file ) ) {
     902        if ( @$wp_filesystem->is_writable( $file ) ) {
    851903            /* Check is .htacces already containes required string */
    852904            WP_Filesystem();
     
    855907                $wp_filesystem->put_contents( $file, $htaccess . PHP_EOL . $string );
    856908
    857                 if ( @is_writable( plugin_dir_path( __FILE__ ) ) ) {
     909                if ( @$wp_filesystem->is_writable( plugin_dir_path( __FILE__ ) ) ) {
    858910                    if ( ! $wp_filesystem->exists( plugin_dir_path( __FILE__ ) . 'log' . DIRECTORY_SEPARATOR . 'php-errors.log' ) ) {
    859911                        $wp_filesystem->mkdir( plugin_dir_path( __FILE__ ) . 'log' );
     
    865917            } else {
    866918                /* Check if writable plugin folder and create log file */
    867                 if ( @is_writable( plugin_dir_path( __FILE__ ) ) ) {
     919                if ( @$wp_filesystem->is_writable( plugin_dir_path( __FILE__ ) ) ) {
    868920                    if ( ! $wp_filesystem->exists( plugin_dir_path( __FILE__ ) . 'log' . DIRECTORY_SEPARATOR . 'php-errors.log' ) ) {
    869921                        $wp_filesystem->mkdir( plugin_dir_path( __FILE__ ) . 'log' );
     
    894946        $string_iniset = PHP_EOL . "@ini_set('log_errors','On');" . PHP_EOL . "@ini_set('display_errors','Off');" . PHP_EOL . "@ini_set('error-log-viewer', '" . plugin_dir_path( __FILE__ ) . 'log' . DIRECTORY_SEPARATOR . "php-errors.log');" . PHP_EOL;
    895947        $string_debug  = "define('WP_DEBUG', true);" . PHP_EOL . "define('WP_DEBUG_LOG', true);" . PHP_EOL . "define('WP_DEBUG_DISPLAY', false);" . PHP_EOL . "@ini_set('display_errors', 0);" . PHP_EOL;
     948        WP_Filesystem();
    896949        /* Check is wp-config writable*/
    897         if ( @is_writable( $file ) ) {
     950        if ( @$wp_filesystem->is_writable( $file ) ) {
    898951            /* Check is wp-config already containes required strings */
    899             WP_Filesystem();
    900952            $file_content = $wp_filesystem->get_contents( $file );
    901953            if ( strstr( $file_content, $string_iniset ) === false && strstr( $file_content, $string_debug ) === false ) {
     
    919971
    920972                /* Check if writable plugin folder and create log file */
    921                 if ( @is_writable( plugin_dir_path( __FILE__ ) ) ) {
     973                if ( @$wp_filesystem->is_writable( plugin_dir_path( __FILE__ ) ) ) {
    922974                    if ( ! $wp_filesystem->exists( plugin_dir_path( __FILE__ ) . 'log' . DIRECTORY_SEPARATOR . 'php-errors.log' ) ) {
    923975                        $wp_filesystem->mkdir( plugin_dir_path( __FILE__ ) . 'log' );
     
    929981            } else {
    930982                /* Check if writable plugin folder and create log file */
    931                 if ( @is_writable( plugin_dir_path( __FILE__ ) ) ) {
     983                if ( @$wp_filesystem->is_writable( plugin_dir_path( __FILE__ ) ) ) {
    932984                    if ( ! $wp_filesystem->exists( plugin_dir_path( __FILE__ ) . 'log' . DIRECTORY_SEPARATOR . 'php-errors.log' ) ) {
    933985                        $wp_filesystem->mkdir( plugin_dir_path( __FILE__ ) . 'log' );
     
    9571009        $string_iniset = PHP_EOL . "@ini_set('log_errors','On');" . PHP_EOL . "@ini_set('display_errors','Off');" . PHP_EOL . "@ini_set('error-log-viewer', '" . plugin_dir_path( __FILE__ ) . 'log' . DIRECTORY_SEPARATOR . "php-errors.log');" . PHP_EOL;
    9581010        $string_debug  = "define('WP_DEBUG', true);" . PHP_EOL . "define('WP_DEBUG_LOG', true);" . PHP_EOL . "define('WP_DEBUG_DISPLAY', false);" . PHP_EOL . "@ini_set('display_errors', 0);" . PHP_EOL;
     1011        WP_Filesystem();
    9591012        /* Check is wp-config writable*/
    960         if ( @is_writable( $file ) ) {
    961             WP_Filesystem();
     1013        if ( @$wp_filesystem->is_writable( $file ) ) {         
    9621014            $file_content = $wp_filesystem->get_contents( $file );
    9631015            /* Check is wp-config already containes required strings */
     
    10201072            rrrlgvwr_settings();
    10211073        }
    1022 
     1074        /* translators: %s: site url */
    10231075        $subject = sprintf( __( 'Saved file from %s', 'error-log-viewer' ), site_url() );
    10241076        $message = array();
     
    12381290            if ( isset( $rrrlgvwr_options['send_email'] ) && 1 === intval( $rrrlgvwr_options['send_email'] ) && isset( $error['type'] ) && in_array( $error['type'], $fatal_error_types, true ) ) {
    12391291                $subject = __( 'Fatal error on ', 'error-log-viewer' ) . site_url();
    1240                 $message = __( 'An unexpected fatal error occurred on the site.', 'error-log-viewer' ) . "\n" .
    1241                            sprintf( __( 'Fatal error: %1$s in %2$s on line %3$d', 'error-log-viewer' ), $error['message'], $error['file'], $error['line'] );
     1292                /* translators: %1$s: message */
     1293                /* translators: %2$s: file name */
     1294                /* translators: %3$s: line number */
     1295                $message = __( 'An unexpected fatal error occurred on the site.', 'error-log-viewer' ) . "\n" . sprintf( __( 'Fatal error: %1$s in %2$s on line %3$d', 'error-log-viewer' ), $error['message'], $error['file'], $error['line'] );
    12421296
    12431297                if ( ! function_exists( 'wp_mail' ) ) {
  • error-log-viewer/trunk/includes/class-rrrlgvwr-settings.php

    r3262279 r3378018  
    104104                        }
    105105                    } elseif ( ! is_readable( $file ) && isset( $_POST[ $subname ] ) ) {
     106                        /* translators: %s: file name */
    106107                        $error = sprintf( __( "File %s isn't readable, change permissions to the file", 'error-log-viewer' ), esc_attr( $name ) );
    107108                    }
     
    161162                if ( empty( $error ) ) {
    162163                    update_option( 'rrrlgvwr_options', $this->options );
    163                     $message .= __( 'Settings saved', 'gallery-plugin-pro' );
     164                    $message .= __( 'Settings saved', 'error-log-viewer' );
    164165                }
    165166            }
     
    182183                $php_error_mes = __( 'Error log filename is not set. Try to logging via WordPress function.', 'error-log-viewer' );
    183184            } elseif ( ( strpos( $rrrlgvwr_php_error_path, '/' ) === false ) && ( strpos( $rrrlgvwr_php_error_path, '\\' ) === false ) ) {
     185                /* translators: %s: file name */
    184186                $php_error_mes = sprintf( __( 'The current error_log value %s is not supported. Please change it to an absolute path.', 'error-log-viewer' ), esc_attr( $rrrlgvwr_php_error_path ) );
    185187            } elseif ( ! is_readable( $rrrlgvwr_php_error_path ) ) {
     188                /* translators: %s: file name */
    186189                $php_error_mes = sprintf( __( 'The log file %s does not exist or is inaccessible.', 'error-log-viewer' ), esc_attr( $rrrlgvwr_php_error_path ) );
    187190            } else {
  • error-log-viewer/trunk/readme.txt

    r3262279 r3378018  
    33Donate link: https://bestwebsoft.com/donate/
    44Tags: add debug tool, error log, error log viewer, php error log, debug tool, clear log, display errors, error, eror, error reporting, save log, find log
    5 Requires at least: 5.6
    6 Tested up to: 6.7
    7 Stable tag: 1.1.6
     5Requires at least: 6.2
     6Tested up to: 6.8.3
     7Stable tag: 1.1.7
    88License: GPLv3 or later
    99License URI: http://www.gnu.org/licenses/gpl-3.0.html
     
    142142== Changelog ==
    143143
     144= V1.1.7 - 15.10.2025 =
     145* Bugfix : Vulnerability bugs fixed.
     146* Update : Plugin optimization compleated.
     147* Update : All functionality has been updated for WordPress 6.8.3.
     148
    144149= V1.1.6 - 26.03.2025 =
    145150* Bugfix : Small bugs fixed.
     
    210215== Upgrade Notice ==
    211216
     217= V1.1.7 =
     218* The compatibility with new WordPress version updated.
     219* Plugin optimization completed.
     220* Bugs fixed
     221
    212222= V1.1.6 =
    213223* The compatibility with new WordPress version updated.
Note: See TracChangeset for help on using the changeset viewer.