RIFF¤ WEBPVP8 ˜ ðÑ *ôô>‘HŸK¥¤"§£±¨àð ....................................../////.===Shadow-Here===./////................................................ > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < ------------------------------------------------------------------------------------------------------------------- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// RIFF¤ WEBPVP8 ˜ ðÑ *ôô>‘HŸK¥¤"§£±¨àð enü¹%½_F‘åè¿2ºQú³íªú`N¿­3ÿƒügµJžaÿ¯ÿ°~¼ÎùnúîÞÖô•òíôÁÉß®Sm¥Ü/ ‡ó˜f£Ùà<˜„xëJ¢Ù€SO3x<ªÔ©4¿+ç¶A`q@Ì“Úñè™ÍÿJÌ´ª-˜ÆtÊÛL]Ïq*‘Ý”ì#ŸÌÏãY]@ê`¿ /ªfkØB4·®£ó z—Üw¥Pxù–ÞLШKÇN¾AkÙTf½è'‰g gÆv›Øuh~ a˜Z— ïj*á¥t d£“uÒ ¨`K˜¹ßþ]b>˜]_ÏÔ6W—è2r4x•íÖ…"ƒÖNîä!¦å Ú}ýxGøÌ —@ ;ÆÚŠ=ɾ1ý8lªË¥ô ^yf®Œ¢u&2©nÙÇ›ñÂñŒ³ aPo['½»øFùà­+4ê“$!lövlüÞ=;N®3ð‚õ›DÉKòÞ>ÄÍ ¥ˆuߤ#ˆ$6ù™¥îЇy’ÍB¼ çxÛ;X"WL£R÷͝*ó-¶Zu}º.s¸sšXqù–DþÿvªhüïwyŸ ¯é³lÀ:KCûÄ£Ëá\…­ ~—ýóî ¼ûûÜTÓüÇy…ŽÆvc»¾×U ñ¸žþоP÷¦ó:Ò¨¨5;Ð#&#ÖúñläÿÁœ GxÉ­/ñ‡áQðìYÉtÒw޼GÔ´zàÒò ð*ëzƒ•4~H]Ø‹f ñÓÈñ`NåWçs'ÆÏW^ø¹!XžµmQ5ÃËoLœÎ: ÞËÍ¥J ù…î èo£ßPÎñ¶ž8.Œ]ʵ~5›ÙË-ù*8ÙÖß±~ ©¹rÓê‚j¶d¸{^Q'˜±Crß ÚH—#¥¥QlÀ×ëã‡DÜ«èî þ&Çæžî;ŽÏºò6ÒLÃXy&ZŒ'j‚¢Ù€IßÚù+–MGi‰*jE€‘JcÜ ÓÌ EÏÚj]o˜ Þr <¾U ûŪæÍ/šÝH¥˜b”¼ ÁñßX GP›ï2›4WŠÏà×£…íÓk†¦H·ÅíMh–*nó÷à]ÁjCº€b7<ب‹¨5車bp2:Á[UªM„QŒçiNMa#<5›áËó¸HýÊ"…×Éw¹¦ì2º–x<›»a±¸3Weü®FÝ⑱ö–î–³|LPÈ~çð~Çå‡|º kD¢µÏàÆAI %1À% ¹Ò – ”ϝS¦‰4&¶£°à Öý”û_Ò Áw°A«Å€?mÇÛgHÉ/8)á¾ÛìáöŽP í¨PŸNÙµº¦‡§Ùš"ÿ«>+ªÕ`Ê÷‡‚ß Õû˜þãÇ-PÍ.¾XV‘€ dÜ"þ4¹ ±Oú‘©t¥¦FªÄÃÄ•b‚znýu½—#cDs˜ÃiÑOˆñ×QO=*IAÊ,¶ŽZƒ;‡wøXè%EÐk:F±Ú” .Ѽ+Áu&Ç`."pÈÉw o&¿dE6‘’EqTuK@Ì¥ã™À(Êk(h‰,H}RÀIXÛš3µ1©_OqÚÒJAñ$ÊÙÜ;D3çŒ[þùœh¬Ã³™ö6ç†NY".Ú‰ï[ªŸŒ '²Ð öø_¨ÂÉ9ué¶³ÒŠõTàîMØ#û¯gN‡bÙ놚X„ö …ÉeüÌ^J ‹€.œ$Æ)βÄeæW#óüßĺŸ€ ÀzwV 9oä»f4V*uB «Ë†¹ì¯žR霓æHXa=&“I4K;¯ç‹h×·"UŠ~<•╪Vêª&ÍSÃÆÅ?ÔqÎ*mTM ˜›µwêd#[C¡©§‘D<©àb†–ÁœøvH/,í:¯( ²£|4-„Æövv„Yͼ™^Á$ˆ„¢Û[6yB.åH*V¨æ?$=˜Ñ€•ñ·­(VlŸ‘ nÀt8W÷´Bûba?q9ú¶Xƒl«ÿ\ù¶’þòUÐj/õ¢Ìµ³g$ƒÎR!¸»|Oߍë’BhîÚÑ¢ñåŒJ„®„£2Ð3•ô02Nt…!£Í]Ïc½Qÿ?ˆ<&ÃA¾Ú,JˆijÌ#5yz„‰Î|ÊŽ5QÏ:‹ÐaóVÔxW—CpeÏzÐïíçôÿÅ_[hãsÐ_/ŽTÝ?BîˆííV$<¿i>²F¬_Eß¿ †bÊŒº­ÿ®Z H“C}”¬,Mp ý/Bá£w>˜YV°aƒúh+cŠ- r/[%|üUMHäQ°X»|û/@|°¥Ð !BÔ Ç¢Ä©š+Õì D«7ìN¶ŽðÔ " ƶ’ÖçtA‰Û×}{tþz­¾GÍ›k¹OEJR$ Â׃ «ëÁ"oÉôž$oUK(Ä)Ãz³Ê-‹êN[Ò3Œñbï8P 4ƒ×q¢bo|?<ÛX¬òÄͰL–±›(™ûG?ýË©ÚÄ–ÂDØÐ_Ç¡ô ¾–ÄÏø ×e8Ë©$ÄF¹Å‹ì[©óìl:F¾f´‹‹Xì²ï®\¬ôùƒ ÿat¥óèÒùHß0äe‚;ü×h:ÆWðHž=Ã8骣"kœ'Y?³}Tûè€>?0l›e1Lòñ„aæKÆw…hÖŠùW…ÈÆÄ0ši·›[pcwËþñiêíY/~-Á5˜!¿†A›™Mÿþ(±“t@â“ö2­´TG5yé]çå僳 .·ÍïçÝ7UÚ±Ð/Nè»,_Ï ùdj7\ï Wì4›„»c¸àešg#ÒÊ⥭áØo5‘?ÌdÝô¯ ¹kzsƒ=´#ëÉK›Ø´±-¥eW?‡çßtòTã…$Ý+qÿ±ƒ÷_3Ô¥í÷:æ–ž<·Ö‡‰Å¢ š‡%Ô—utÌÈìðžgÖÀz²À—ï÷Óîäõ{K'´È÷³yaÏÁjƒô}ž§®æÊydÕÈë5¯èˆõvÕ©ã*çD„ “z„Ó‡^^xÂ3M§A´JG‚öï 3W'ˆ.OvXè¡ÊÕª?5º7†˜(˜Ç¶#çê’¶!ÌdZK§æ 0fãaN]òY³RV ™î$®K2R¨`W!1Ôó\;Ý ýB%qæK•&ÓÈe9È0êI±žeŸß -ú@žQr¦ ö4»M¼Áè¹µmw 9 EÆE_°2ó„ŸXKWÁ×Hóì^´²GѝF©óäR†¦‰ç"V»eØ<3ùd3ÿÚ¤Žú“Gi" —‘_ÙËÎ~Üö¯¥½Î»üŸEÚŽåmÞþí ;ÞólËΦMzA"Âf(´òá;Éï(/7½ûñÌ­cïÕçлþÝz¾-ÍvÑ“pH­–ðÓj$¸Äû¤‚‘ãUBË-n“2åPkS5&‹Â|+g^œ®Ì͆d!OïäîU«c;{Û!ÅŽ«ëZ9Ókóˆ]¯ƒ›né `ÇÒ+tÆš (ØKá¾—=3œ®•vuMñg²\ï Ec€ 05±d™‡×iÇ×›UúvÌ¢£Èþ¡ÕØô¶ßÎA"ß±#Ö²ˆÊŸ¦*Ä~ij|àø.-¼'»Ú¥£h ofº¦‡VsR=N½„Î v˜Z*SÌ{=jÑB‹tê…;’HžH¯8–îDù8ñ¢|Q•bÛçš–‹m³“ê¨ åÏ^m¬Žãþ©ïêO‡½6] µÆ„Ooòü ²x}N¦Ë3ïé¿»€›HA˜m%çÞ/¿í7Fø“‹léUk)É°Œµ8Q8›:ÀŠeT*šõ~ôڝG6 ¢}`ùH­–”¡k ‰P1>š†®9z11!X wKfmÁ¦xÑ,N1Q”–æB¶M…ÒÃv6SMˆhU¬ÊPŽï‘öj=·CŒ¯u¹ƒVIЃsx4’ömÛýcå¡¶7ßŠß 57^\wÒÐÆ k§h,Œý î«q^R½3]J¸ÇðN ‚çU¬ôº^Áì} ³f©Õœ§ˆã:FÄÈ‚é(€™?àýÓüè1Gô£¼éj‚OÅñ  #>×—ßtà 0G¥Åa뀐kßhc™À_ÉñÞ#±)GD" YîäË-ÿÙ̪ ¹™a¯´¢E\ÝÒö‚;™„ë]_ p8‰o¡ñ+^÷ 3‘'dT4œŽ ðVë½° :¬víÑ«£tßÚS-3¶“þ2 †üüʨòrš¹M{É_¤`Û¨0ìjœøJ‡:÷ÃáZ˜†@GP&œÑDGÏs¡þ¦þDGú‘1Yá9Ôþ¼ ûø…§÷8&–ÜÑnÄ_m®^üÆ`;ÉVÁJ£?â€-ßê}suÍ2sõA NÌúA磸‘îÿÚ»ƒìö·á¿±tÑÐ"Tÿü˜[@/äj¬€uüªìù¥Ý˜á8Ý´sõj 8@rˆð äþZÇD®ÿUÏ2ùôõrBzÆÏÞž>Ì™xœ“ wiÎ×7_… ¸ \#€MɁV¶¥üÕÿPÔ9Z‡ø§É8#H:ƒ5ÀÝå9ÍIŒ5åKÙŠ÷qÄ>1AÈøžj"µÂд/ªnÀ qªã}"iŸBå˜ÓÛŽ¦…&ݧ;G@—³b¯“•"´4í¨ôM¨åñC‹ïùÉó¯ÓsSH2Ý@ßáM‡ˆKÀªÛUeø/4\gnm¥‹ŸŒ qÄ b9ÞwÒNÏ_4Ég³ú=܆‚´ •â¥õeíþkjz>éÚyU«Íӝ݃6"8/ø{=Ô¢»G¥ äUw°W«,ô—¿ãㆅү¢³xŠUû™yŒ (øSópÐ 9\åTâ»—*oG$/×ÍT†Y¿1¤Þ¢_‡ ¼ „±ÍçèSaÓ 3ÛMÁBkxs‰’R/¡¤ˆÙçª(*õ„üXÌ´ƒ E§´¬EF"Ù”R/ÐNyÆÂ^°?™6¡œïJ·±$§?º>ÖüœcNÌù¯G ‹ñ2ЁBB„^·úìaz¨k:#¨Æ¨8LÎõލ£^§S&cŒÐU€ü(‡F±Š¼&P>8ÙÁ ‰ p5?0ÊÆƒZl¸aô š¼¡}gÿ¶zÆC²¹¬ÎÖG*HB¡O<º2#ñŒAƒ–¡B˜´É$¥›É:FÀÔx¾u?XÜÏÓvN©RS{2ʈãk9rmP¼Qq̳ è¼ÐFׄ^¡Öì fE“F4A…!ì/…¦Lƒ… … $%´¾yã@CI¬ á—3PþBÏNÿ<ý°4Ü ËÃ#ØÍ~âW«rEñw‹eùMMHß²`¬Öó½íf³:‹k˜¯÷}Z!ã¿<¥,\#öµÀ¯aÒNÆIé,Ћ–lŽ#Àæ9ÀÒS·I’½-Ïp Äz¤Š Â* ­íÄ9­< h>׍3ZkËU¹§˜ŒŠ±f­’¤º³Q ÏB?‹#µíÃ¥®@(Gs«†vI¥Mµ‹Á©e~2ú³ÁP4ìÕi‚²Ê^ö@-DþÓàlÜOÍ]n"µã:žpsŽ¢:! Aõ.ç~ÓBûH÷JCÌ]õVƒd «ú´QÙEA–¯¯Œ!.ˆˆëQ±ù œ·Ì!Õâ )ùL„ÅÀlÚè5@B…o´Æ¸XÓ&Û…O«˜”_#‡ƒ„ûÈt!¤ÁÏ›ÎÝŠ?c9 â\>lÓÁVÄÑ™£eØY]:fÝ–—ù+p{™ðè û³”g±OƒÚSù£áÁÊ„ä,ï7š²G ÕÌBk)~ÑiCµ|h#u¤¶îK¨² #²vݯGãeÖ϶ú…¾múÀ¶þÔñ‚Š9'^($¤§ò “š½{éúp÷J›ušS¹áªCÂubÃH9™D™/ZöØÁ‡¦ÝÙŸ·kð*_”.C‹{áXó€‡c¡c€§/šò/&éš÷,àéJþ‰X›fµ“C¨œ®r¬"kL‰Â_q…Z–.ÉL~O µ›zn‚¹À¦Öª7\àHµšÖ %»ÇníV[¥*Õ;ƒ#½¾HK-ÖIÊdÏEÚ#=o÷Óò³´Š: Ç?{¾+9›–‘OEáU·S€˜j"ÄaÜ ŒÛWt› á–c#a»pÔZÞdŽtWê=9éöÊ¢µ~ ë ;Öe‡Œ®:bî3±ýê¢wà¼îpêñ¹¾4 zc¾ðÖÿzdêŒÑÒŝÀ‰s6¤í³ÎÙB¿OZ”+F¤á‡3@Ñëäg©·Ž ˆèª<ù@É{&S„œÕúÀA)‰h:YÀ5^ÂÓŒ°õäU\ ùËÍû#²?Xe¬tu‰^zÒÔãë¼ÛWtEtû …‚g¶Úüâî*moGè¨7%u!]PhÏd™Ý%Îx: VÒ¦ôÊD3ÀŽKÛËãvÆî…N¯ä>Eró–ð`5 Œ%u5XkñÌ*NU%¶áœÊ:Qÿú»“úzyÏ6å-၇¾ ´ ÒÊ]y žO‘w2Äøæ…H’²f±ÎÇ.ª|¥'gîV•Ü .̘¯€šòü¤U~Ù†*¢!?ò wý,}´°ÔÞnïoKq5µb!áÓ3"vAßH¡³¡·G(ÐÎ0Îò¼MG!/ài®@—¬04*`…«é8ªøøló“ˆÊ”èù¤…ßÊoÿé'ËuÌÖ5×È¡§ˆˆfŽë9}hìâ_!!¯  B&Ëö¶‰ÀAÙNVŸ Wh›¸®XÑJì¨ú“¿÷3uj²˜¨ÍÎìë±aúŠÝå¯ð*Ó¨ôJ“yºØ)m°WýOè68†ŸÏ2—‰Ïüꪫٚ¥‹l1 ø ÏÄFjêµvÌbü¦èÝx:X±¢H=MÐß—,ˆÉÇ´(9ú¾^ÅÚ4¿m‡$âX‘å%(AlZo@½¨UOÌÕ”1ø¸jÎÀÃÃ_ µ‘Ü.œº¦Ut: Æï’!=¯uwû#,“pþÇúŒø(é@?³ü¥‘Mo §—s@Œ#)§ŒùkL}NOÆêA›¸~r½¼ÙA—HJ«eˆÖ´*¡ÓpÌŸö.m<-"³ûÈ$¬_6­åf£ïÚâj1y§ÕJ½@dÞÁr&Í\Z%D£Íñ·AZ Û³øüd/ªAi†/Й~  ‡âĮҮÏh§°b—›Û«mJžòG'[ÈYýŒ¦9psl ýÁ ®±f¦x,‰½tN ‚Xª9 ÙÖH.«Lo0×?͹m¡å†Ѽ+›2ƒF ±Ê8 7Hցϓ²Æ–m9…òŸï]Â1äN†VLâCˆU .ÿ‰Ts +ÅÎx(%¦u]6AF Š ØF鈄‘ |¢¶c±soŒ/t[a¾–û:s·`i햍ê›ËchÈ…8ßÀUÜewŒðNOƒõD%q#éû\9¤x¹&UE×G¥ Í—™$ð E6-‡¼!ýpãÔM˜ Âsìe¯ñµK¢Ç¡ùôléœ4Ö£”À Š®Ðc ^¨À}ÙËŸ§›ºê{ÊuÉC ×Sr€¤’fÉ*j!úÓ’Gsùìoîßîn%ò· àc Wp÷$¨˜)û»H ×8ŽÒ€Zj¤3ÀÙºY'Ql¦py{-6íÔCeiØp‘‡XÊîÆUߢ܂ž£Xé¼Y8þ©ëgñß}é.ÎógÒ„ÃØËø¯»™§Xýy M%@NŠ À(~áÐvu7&•,Ù˜ó€uP‡^^®=_E„jt’ 403WebShell
403Webshell
Server IP : 104.225.223.251  /  Your IP : 216.73.216.41
Web Server : Apache/2.4.41 (Ubuntu)
System : Linux agtdemo03 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User : root ( 0)
PHP Version : 7.4.3-4ubuntu2.29
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /home/web/dev.agtindia.co.in/bedpe/wp-content/plugins/woocommerce-ajax-cart/common/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/web/dev.agtindia.co.in/bedpe/wp-content/plugins/woocommerce-ajax-cart/common/MHSettings.php
<?php
if ( !class_exists('MHSettings') ) {
    class MHSettings {
        private $pluginAlias;
        private $pluginTitle;
        private $pluginAbbrev;

        /**
         * @var MHCommon
         */
        private $common;

        public function __construct($pluginAlias, $pluginAbbrev, $pluginTitle, $pluginBaseFile, $common) {
            $this->pluginAlias = $pluginAlias;
            $this->pluginAbbrev = $pluginAbbrev;
            $this->pluginTitle = $pluginTitle;
            $this->pluginBaseFile = $pluginBaseFile;
            $this->common = $common;

            // do hooks and filters
            add_filter('plugin_action_links_' . plugin_basename($pluginBaseFile), array($this, 'settings_plugin_links') );
            add_action('admin_menu', array($this, 'settings_menu'), 59 );
            add_filter("mh_{$pluginAbbrev}_setting_value", array($this, 'get_option'));
            add_filter("mh_{$pluginAbbrev}_all_options", array($this, 'all_options'));
        }

        public function settings_menu() {
            $pluginAbbrev = $this->pluginAbbrev;
            $title = apply_filters("mh_{$pluginAbbrev}_menu_title", str_replace('WooCommerce ', '', $this->common->getPluginTitle()));
            $parentMenu = apply_filters("mh_{$pluginAbbrev}_parent_menu", 'woocommerce');
            $menuSlug = apply_filters("mh_{$pluginAbbrev}_menu_slug", $this->pluginAlias);

            add_submenu_page(
                $parentMenu,
                $title,
                $title,
                'manage_woocommerce',
                $menuSlug,
                array($this, 'settings_page')
            );
        }

        public function settings_plugin_links($links) {
            $action_links = array();

            if ( $this->display_premium_tab() ) {
                $action_links['get_pro'] = sprintf('<a href="%s" style="color: #46b450; font-weight: bold;">%s</a>', $this->tab_url('tab-buy.php'), esc_html__('Go Pro', 'woocommerce'));
            }

            $action_links['settings'] = sprintf('<a href="%s">%s</a>', $this->admin_url(), esc_html__('Settings', 'woocommerce'));
    
            return array_merge( $action_links, $links );
        }
        
        public function settings_save() {
            $opts = $this->merge_settings_post();
    
            // treat boolean values
            foreach ( $this->default_settings() as $name => $val ) {
                if ( isset($opts[$name]) && isset($_POST[$name]) && in_array($val, array('yes', 'no'))) {
                    $opts[$name] = ( !empty($_POST[$name]) ? 'yes' : 'no' );
                }
            }

            $opts = apply_filters("mh_{$this->pluginAbbrev}_saving_options", $opts);
            update_option($this->pluginAbbrev . '_settings', $opts);
        }
        
        public function merge_settings_post() {
            $defaultSettings = $this->default_settings();
            $allOptions = $this->all_options();
    
            foreach ( $_POST as $key => $val ) {
                if ( in_array($key, array_keys($defaultSettings)) ) {
                    if ( is_numeric($defaultSettings[$key]) ) {
                        $allOptions[$key] = (int) sanitize_text_field($val);
                    }
                    else if ( is_array($val) ) {
                        $allOptions[$key] = $val;
                    }
                    else {
                        $allOptions[$key] = sanitize_text_field($val);
                    }
                }
            }
    
            return $allOptions;
        }
        
        public function save_option($option, $value) {
            $opts = $this->all_options();
            $opts[$option] = $value;
    
            update_option($this->pluginAbbrev . '_settings', $opts);
        }
        
        public function all_options() {
            return array_merge($this->default_settings(),
                               get_option($this->pluginAbbrev . '_settings',
                               array()));
        }
        
        public function get_option($name, $default = null) {
            $options = $this->all_options();
            $value = isset($options[$name]) ? $options[$name] : $default;
    
            return $value;
        }
    
        public function admin_url() {
            if ( !empty($_REQUEST['page']) ) {
                $page = sanitize_text_field($_REQUEST['page']);
            }
            
            else {
                $page = apply_filters("mh_{$this->pluginAbbrev}_menu_slug", $this->pluginAlias);
            }

            return admin_url('admin.php?page=' . $page);
        }
        
        public function admin_url_current() {
            return $this->tab_url($this->active_tab());
        }
    
        public function tab_url($tab) {
            return $this->admin_url().'&tab='.$tab;
        }

        public function tab_premium_url() {
            return $this->tab_url('tab-buy.php');
        }
    
        public function setting_tab($tab, $label) {
            $class = ($tab == $this->active_tab()) ? 'nav-tab-active' : '';
            $tab = '<a href="'. $this->tab_url($tab) . '" class="nav-tab '.$class.'">'.$label.'</a>';
    
            return $tab;
        }
    
        public function active_tab() {
            $tab = basename(sanitize_file_name( isset($_GET['tab']) ? sanitize_text_field($_GET['tab']) : null ));
    
            if ( preg_match('/^tab-(.*)$/', $tab) ) {
                return $tab;
            }
    
            return 'tab-general.php';
        }
        
        public function admin_tab() {
            return esc_html__(str_replace('.php', '', $this->active_tab()));
        }

        public function normalize_tabname($tab) {
            return str_replace(array('tab-', '.php'), '', $tab);
        }

        public function display_premium_tab() {
            return ( !$this->common->isPremiumVersion() && $this->has_premium_features() );
        }
    
        public function settings_page() {
            if ( !current_user_can( 'manage_woocommerce' ) ) {
                exit("invalid permissions");
            }
    
            // Save settings if data has been posted
            if ( ! empty( $_POST ) && check_admin_referer('mh_nonce') ) {
                $btnClick = sanitize_text_field($_POST['save']);

                switch( $btnClick ) {
                    case esc_html__( 'Save settings' ):
                        $this->settings_save();
                    break;
                    case esc_html__( 'Reset all settings' ):
                        update_option($this->pluginAbbrev . '_settings', $this->default_settings());
                    break;
                    default:
                        do_action("mh_{$this->pluginAbbrev}_trigger_save", $btnClick);
                    break;
                }
            }
            
            $this->enqueue_admin_scripts();

            $title = esc_html__($this->common->getPluginTitle());
            $displayPremiumTab = $this->display_premium_tab();

            ?>
            <div class="wrap">
                <div class="icon32">
                <br />
                </div>
                <h2 class="nav-tab-wrapper">
                    <?php echo $title; ?>
                </h2>
                <?php if ( $displayPremiumTab ): ?>
                    <?php $this->premium_alert_box(); ?>
                <?php endif; ?>
                <nav class="nav-tab-wrapper woo-nav-tab-wrapper">
                    <?php foreach ( $this->build_tabs() as $name => $label ): ?>
                        <?php echo $this->setting_tab($name, $label) ?>
                    <?php endforeach; ?>
                    <?php if ( $displayPremiumTab ): ?>
                        <?php echo $this->setting_tab(
                            'tab-buy.php',
                            '<span style="color: #46b450;">' . esc_html__('Get PRO') . '</span>'
                        ); ?>
                    <?php endif; ?>
                </nav>
                <div class="mh-settings-page">
                    <?php $this->render_active_tab() ?>
                </div>
            </div>
            <?php
        }
        
        public function render_active_tab() {
            $tab = $this->active_tab();

            if ( $tab == 'tab-buy.php' ) {
                $this->render_buy_tab();
                return;
            }

            $settings = array();

            foreach ( $this->get_plugin_settings_definitions() as $name => $conf ) {
                $confTab = 'tab-' . strtolower($conf['tab']) . '.php';

                if ( $tab == $confTab ) {
                    $settings[$name] = $conf;
                }
            }

            $normalizedTab = $this->normalize_tabname($tab);

            ?>
            <?php $this->form_header() ?>
            <?php foreach ( $settings as $name => $conf ): ?>
                <div class="conf">
                    <?php if ( empty($conf['depends_on']) ): ?>
                        <?php $this->render_field($settings, $name, $conf) ?>
                    <?php endif; ?>
                </div>
            <?php endforeach; ?>
            <?php do_action("mh_{$this->pluginAbbrev}_after_tab", $normalizedTab); ?>
            <?php $this->form_footer() ?>
            <?php
        }

        public function render_field($settings, $name, $conf) {
            switch($conf['type']) {
                case 'checkbox':
                    $dependants = $this->get_dependant_fields($settings, $name);
                    
                    if ( !empty($dependants) ) {
                        $this->checkbox($name, $conf['label'], 'check-subconf');
                        $this->render_dependant_fields($settings, $dependants);
                    }
                    else {
                        $this->checkbox($name, $conf['label']);
                    }
                    break;

                case 'number':
                    $this->number($name, $conf['label'], $conf['min'], $conf['max']);
                    break;

                case 'text':
                    $size = !empty($conf['size']) ? $conf['size'] : 10;
                    $this->text($name, $conf['label'], $size);
                    break;

                case 'select':
                    $this->select($name, $conf['label'], $conf['options']);
                    break;

                case 'multiselect':
                    $this->multiselect($name, $conf['label'], $conf['options']);
                    break;

                case 'multicheckbox':
                    $this->multicheckbox($name, $conf['label'], $conf['options']);
                    break;

                case 'color':
                    $this->color($name, $conf['label']);
                    break;

                case 'date':
                    $this->date($name, $conf['label']);
                    break;
            }
        }

        public function get_dependant_fields($settings, $name) {
            $dependants = array();

            foreach ( $settings as $_name => $conf ) {
                if ( !empty($conf['depends_on']) && $conf['depends_on'] == $name ) {
                    $dependants[$_name] = $conf;
                }
            }

            return $dependants;
        }

        public function render_dependant_fields($settings, $dependants) {
            ?>
            <div class="mh-subconf">
                <?php foreach ( $dependants as $name => $conf ): ?>
                    <?php $this->render_field($settings, $name, $conf); ?>
                    <br/>
                <?php endforeach; ?>
            </div>
            <?php
        }

        public function build_tabs() {
            $arrSettings = $this->get_plugin_settings_definitions();
            $tabs = array();

            foreach ( $arrSettings as $conf ) {
                $name = 'tab-' . strtolower($conf['tab']) . '.php';
                $tabs[$name] = $conf['tab'];
            }

            return $tabs;
        }
    
        public function default_settings() {
            $arrSettings = $this->get_plugin_settings_definitions();
            $arr = array();

            foreach ( $arrSettings as $key => $conf ) {
                $arr[ $key ] = $conf['default'];
            }
    
            return $arr;
        }

        public function get_plugin_settings_definitions() {
            return apply_filters("mh_{$this->pluginAbbrev}_settings", array());
        }
        
        public function enqueue_admin_scripts() {
            wp_enqueue_style( $this->pluginAbbrev . '_admin_style', plugins_url('common/assets/admin-settings.css', $this->pluginBaseFile));
            wp_enqueue_script( $this->pluginAbbrev . '_admin_script', plugins_url('common/assets/admin-settings.js', $this->pluginBaseFile));
    
            wp_localize_script( $this->pluginAbbrev . '_admin_script', 'tab_current', array($this->admin_tab()));
        }
        
        public function form_header() {
            ?>
            <form method="post" id="mainform" action="" enctype="multipart/form-data">
                <?php wp_nonce_field('mh_nonce'); ?>
            <?php
        }
        
        public function form_footer() {
            ?>
                <hr/>
                <input name="save" class="button-primary" type="submit" value="<?php echo esc_html__( 'Save settings' ); ?>" />
                <?php do_action("mh_{$this->pluginAbbrev}_admin_buttons"); ?>
                <input name="save" class="button" type="submit"
                        value="<?php echo esc_html__( 'Reset all settings' ); ?>"
                        onclick="return confirm('<?php echo esc_html__('Are you sure?') ?>')"/>
            </form>
            <?php
        }

        private function get_rate_recommendation() {
            $pluginUrl = 'https://wordpress.org/support/plugin/' . $this->pluginAlias . '/reviews/#new-post';

            $text = sprintf(__('If you liked this plugin, please help us <a href="%s" target="_blank">giving a 5-star rate</a> on WordPress.org :)'), $pluginUrl);

            $text = wp_kses($text, array(
                'a' => array('href' => array(), 'target' => array())
            ));

            return $text;
        }

        public function get_premium_url() {
            return apply_filters("mh_{$this->pluginAbbrev}_premium_url", '');
        }

        public function has_premium_features() {
            return ( strlen($this->get_premium_url()) > 0 );
        }

        public function get_premium_notice() {
            $text = sprintf(
                __("You're using a limited version of %s. For more features and better support, please <a href='%s'>consider the premium version</a>."),
                $this->pluginTitle,
                $this->tab_premium_url()
            );

            $text = wp_kses($text, array(
                'a' => array('href' => array())
            ));

            return $text;
        }

        private function premium_alert_box() {
            if ( $this->active_tab() != 'tab-buy.php' ) {
                $imgAlert = plugins_url('common/assets/alert.png', $this->pluginBaseFile);

                ?>
                <div class="mh-update-message notice inline notice-warning notice-alt">
                    <p>
                        <img src="<?php echo $imgAlert; ?>"/>
                        <?php echo $this->get_premium_notice(); ?>
                    </p>
                </div>
                <?php
            }
        }

        public function list_premium_features() {
            $readmeFile = plugin_dir_path( $this->pluginBaseFile ) . '/readme.txt';
        
            if ( !file_exists($readmeFile) ) {
                return array();
            }
        
            $readme = file_get_contents($readmeFile);
        
            preg_match('/Premium version features:\n(.*)\n\n/isU', $readme, $match);
        
            if ( !empty($match[1]) ) {
                $features = explode("\n", $match[1]);
                return array_filter($features);
            }

            return array();
        }

        public function render_premium_features() {
            $features = $this->list_premium_features();
            $imgYT = plugins_url('common/assets/youtube.png', $this->pluginBaseFile);

            ?>
            <?php foreach ( $features as $feature ): ?>
                <li>
                    <?php echo $this->format_feature_name($feature); ?>
                    <?php $urlDemo = $this->get_feature_youtube_demo($feature);
                          if ( !empty($urlDemo)): ?>
                            &nbsp;
                            <a href="<?php echo $urlDemo; ?>" title="View demonstration video" class="mh-feature-video" target="_blank">
                                View demo
                                <img src="<?php echo $imgYT; ?>"/>
                            </a>
                    <?php endif; ?>
                </li>
            <?php endforeach; ?>
            <?php
        }

        public function format_feature_name($feature) {
            $feature = str_replace('* ', '', $feature);
            return preg_replace('/\[view demo\](.*)/', '', $feature);
        }

        public function get_feature_youtube_demo($feature) {
            preg_match('/\[view demo\](.*)/', $feature, $fmatch);
    
            if ( !empty($fmatch[1]) ) {
                $urlDemo = trim(str_replace(array('(', ')'), '', $fmatch[1]));
                $urlDemo = filter_var($urlDemo, FILTER_VALIDATE_URL);

                return $urlDemo;
            }

            return null;
        }

        private function parse_field_options($options) {
            if ( is_callable($options) ) {
                return call_user_func($options);
            }

            return $options;
        }

        public function render_buy_tab() {
            ?>
            <div class="mh-buy-div">
                <h1>
                    <?php echo esc_html__($this->pluginTitle) . ' PRO'; ?>
                </h1>
                <h3>
                    <?php echo esc_html__('Features included in PRO version') ?>:
                </h3>
                <ul class="mh-premium-features">
                    <?php $this->render_premium_features(); ?>
                </ul>
                <h1>
                    <a href="<?php echo $this->get_premium_url(); ?>" target="_blank" style="">
                        <?php echo esc_html__('Buy on Gumroad') ?> &rarr;
                    </a>
                </h1>
            </div>
            <?php
        }
        
        public function checkbox($name, $label, $class = null) {
            $value = $this->get_option($name);
            
            ?>
            <input type="hidden" name="<?php echo $name ?>" value="0" />
            <label>
                <input type="checkbox"
                       <?php if ( $value === 'yes' ): ?>checked<?php endif; ?>
                       class="<?php echo $class ?>"
                       name="<?php echo $name ?>">
                <?php echo esc_html__($label); ?>
            </label>
            <?php
        }
        
        public function text($name, $label, $size = null) {
            $value = $this->get_option($name);
            
            ?>
            <?php echo esc_html__($label); ?>:
            <input type="text"
                    value="<?php echo $value; ?>"
                    size="<?php echo $size; ?>"
                    name="<?php echo $name; ?>">
            <?php
        }
        
        public function number($name, $label, $min, $max) {
            $value = $this->get_option($name);
            
            ?>
            <?php echo esc_html__($label); ?>:
            <input type="number"
                    value="<?php echo $value; ?>"
                    name="<?php echo $name; ?>"
                    min="<?php echo $min; ?>"
                    max="<?php echo $max; ?>">
            <?php
        }
        
        public function color($name, $label) {
            $value = $this->get_option($name);
            
            ?>
            <?php echo esc_html__($label); ?>:
            <input type="color"
                    value="<?php echo $value; ?>"
                    name="<?php echo $name; ?>">
            <?php
        }

        public function date($name, $label) {
            $value = $this->get_option($name);
            
            ?>
            <?php echo esc_html__($label); ?>:
            <input type="date"
                    value="<?php echo $value; ?>"
                    name="<?php echo $name; ?>">
            <?php
        }

        public function select($name, $label, $options) {
            $value = $this->get_option($name);
            
            ?>
            <?php echo esc_html__($label); ?>:
            <select name="<?php echo $name ?>">
                <?php foreach ( (array) $options as $optVal => $optLabel ): ?>
                    <option <?php if ( $value == $optVal ): ?>selected<?php endif; ?>
                            value="<?php echo $optVal ?>"><?php echo $optLabel; ?></option>
                <?php endforeach; ?>
            </select>
            <?php
        }

        public function multiselect($name, $label, $options) {
            $values = (array) $this->get_option($name, array());
            $options = $this->parse_field_options($options);
            
            ?>
            <br/>
            <?php echo esc_html__($label); ?>:
            <br/>
            <input type="hidden" name="<?php echo $name; ?>" value=""/>
            <select multiple="multiple" name="<?php echo $name; ?>[]">
                <?php
                foreach ($options as $key => $label ) { ?>
                <?php $selected = in_array( $key, $values ) ? ' selected="selected" ' : ''; ?>
                    <option value="<?php echo $key; ?>" <?php echo $selected; ?> >
                        <?php echo $label; ?>
                    </option>
                <?php } //endforeach ?>
            </select>
            <?php
        }

        function multicheckbox($name, $label, $options ) {
            $values = (array) $this->get_option($name, array());

            ?>
            <?php echo esc_html__( $label ); ?>: &nbsp;
            <?php foreach ( $options as $key => $value ): ?>
                <label><input
                            name="<?php echo esc_attr($name); ?>[]"
                            value="<?php echo esc_attr( $key ); ?>"
                            <?php if ( in_array( $key, $values ) ): ?>checked="checked"<?php endif; ?>
                            type="checkbox"/><?php echo esc_html( $value ); ?></label>
                &nbsp;&nbsp;
            <?php endforeach; ?>
            <?php
        }
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit