Advertisement
cyberdev

Untitled

Aug 17th, 2017
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.53 KB | None | 0 0
  1. <?php
  2. /**
  3. * Snax plugin functions
  4. *
  5. * @license For the full license information, please view the Licensing folder
  6. * that was distributed with this source code.
  7. *
  8. * @package Bimber_Theme
  9. */
  10.  
  11. // Prevent direct script access.
  12. if ( ! defined( 'ABSPATH' ) ) {
  13. die( 'No direct script access allowed' );
  14. }
  15.  
  16. /**
  17. * Adjust theme for Snax
  18. */
  19. function bimber_snax_setup() {
  20. if ( get_option( 'snax_setup_done', false ) ) {
  21. return;
  22. }
  23.  
  24. // Change Frontend Submission page template.
  25. $front_page_id = snax_get_frontend_submission_page_id();
  26.  
  27. if ( $front_page_id ) {
  28. update_post_meta( $front_page_id, '_wp_page_template', 'g1-template-page-full.php' );
  29. }
  30.  
  31. update_option( 'snax_setup_done', true );
  32. }
  33.  
  34. /**
  35. * Adjust the image size used inside snax collection
  36. *
  37. * @param string $image_size Image size.
  38. *
  39. * @return string
  40. */
  41. function bimber_snax_get_collection_item_image_size($image_size ) {
  42. if ( has_image_size( 'bimber-grid-fancy' ) ) {
  43. $image_size = 'bimber-grid-fancy';
  44. }
  45.  
  46. return $image_size;
  47. }
  48.  
  49. /**
  50. * Disable sticky sharebar on the Frontend Submission page
  51. *
  52. * @param bool $bool Whether or not to use the sticky header.
  53. * @return bool
  54. */
  55. function bimber_snax_disable_sticky_header($bool ) {
  56. $frontend_submission_page = snax_get_frontend_submission_page_id();
  57. if ( is_page( $frontend_submission_page ) && ! empty( $frontend_submission_page ) ) {
  58. $bool = false;
  59. }
  60.  
  61. return $bool;
  62. }
  63.  
  64. /**
  65. * Hide the prefooter on the frontend submission page
  66. *
  67. * @param bool $show Whether or not to show the prefooter.
  68. *
  69. * @return bool
  70. */
  71. function bimber_snax_hide_prefooter( $show ) {
  72. $frontend_submission_page = snax_get_frontend_submission_page_id();
  73. if ( is_page( $frontend_submission_page ) && ! empty( $frontend_submission_page ) ) {
  74. $show = false;
  75. }
  76.  
  77. return $show;
  78. }
  79.  
  80. /**
  81. * Hide the primary nav menu on the frontend submission page
  82. *
  83. * @param bool $has_nav_menu Whether or not a menu is assigned to nav location.
  84. * @param string $location Nav location.
  85. *
  86. * @return bool
  87. */
  88. function bimber_snax_hide_nav_menus( $has_nav_menu, $location ) {
  89. $locations = array(
  90. 'bimber_primary_nav',
  91. 'bimber_secondary_nav',
  92. );
  93. $frontend_submission_page = snax_get_frontend_submission_page_id();
  94. if ( in_array( $location, $locations ) && is_page( snax_get_frontend_submission_page_id() ) && ! empty( $frontend_submission_page ) ) {
  95. $has_nav_menu = false;
  96. }
  97.  
  98. return $has_nav_menu;
  99. }
  100.  
  101.  
  102.  
  103. /**
  104. * Hide ad before the content theme area, after snax item submission
  105. *
  106. * @param bool $bool Whether or not an ad is assigned to ad location.
  107. * @param string $location Ad location.
  108. *
  109. * @return bool
  110. */
  111. function bimber_snax_hide_ad_before_content_theme_area($bool, $location ) {
  112. if ( 'bimber_before_content_theme_area' === $location && snax_item_submitted() ) {
  113. $bool = false;
  114. }
  115.  
  116. return $bool;
  117. }
  118.  
  119. function snax_embed_change_content_width() {
  120. global $content_width;
  121. global $snax_old_content_width;
  122.  
  123. // Store original value.
  124. $snax_old_content_width = $content_width;
  125.  
  126. // Overide.
  127. $content_width = 758;
  128. }
  129.  
  130. function snax_embed_revert_content_width() {
  131. global $content_width;
  132. global $snax_old_content_width;
  133.  
  134. // Restore.
  135. $content_width = $snax_old_content_width;
  136. }
  137.  
  138. /**
  139. * Hide an element on the frontend submission page
  140. *
  141. * @param bool $show Whether or not to show an element.
  142. *
  143. * @return bool
  144. */
  145. function bimber_snax_hide_on_frontend_submission_page( $show ) {
  146. $frontend_submission_page = snax_get_frontend_submission_page_id();
  147. if ( is_page( $frontend_submission_page ) && ! empty( $frontend_submission_page ) ) {
  148. $show = false;
  149. }
  150.  
  151. return $show;
  152. }
  153.  
  154. function bimber_snax_capture_item_position_args( $args ) {
  155. $args['prefix'] = '#';
  156. $args['suffix'] = ' ';
  157.  
  158. return $args;
  159. }
  160.  
  161. function bimber_snax_widget_cta_options( $args ) {
  162. $args['classname'] .= ' g1-box';
  163.  
  164. return $args;
  165. }
  166.  
  167. function bimber_snax_before_widget_cta_title() {
  168. echo '<i class="g1-box-icon"></i>';
  169. }
  170.  
  171. /**
  172. * Render item notes
  173. */
  174. function bimber_snax_item_render_notes() {
  175. snax_item_render_notes();
  176. }
  177.  
  178. /**
  179. * Render post notes
  180. */
  181. function bimber_snax_post_render_notes() {
  182. snax_post_render_notes();
  183. }
  184.  
  185. function bimber_snax_setup_header_elements() {
  186. if ( 'simple' === bimber_get_theme_option( 'snax', 'header_type' ) ) {
  187. add_filter( 'bimber_show_quick_nav_menu', 'bimber_snax_hide_on_frontend_submission_page' );
  188. add_filter( 'bimber_show_navbar_searchform', 'bimber_snax_hide_on_frontend_submission_page' );
  189. add_filter( 'bimber_show_navbar_socials', 'bimber_snax_hide_on_frontend_submission_page' );
  190. add_filter( 'bimber_show_preheader_socials', 'bimber_snax_hide_on_frontend_submission_page' );
  191.  
  192. add_filter( 'has_nav_menu', 'bimber_snax_hide_nav_menus', 10, 2 );
  193. }
  194. }
  195.  
  196. function bimber_snax_show_create_button( $show ) {
  197. $visibility = bimber_get_theme_option( 'snax', 'header_create_button_visibility' );
  198.  
  199. if ( 'none' === $visibility || ( 'logged_in' === $visibility && ! is_user_logged_in() ) ) {
  200. $show = false;
  201. }
  202.  
  203. return $show;
  204. }
  205.  
  206. /**
  207. * Add Quizz post type to regular "posts"
  208. *
  209. * @param WP_Query $query WP Query object.
  210. */
  211. function bimber_snax_add_quizzes_to_queries( $query ) {
  212. if ( ! function_exists( 'snax_get_quiz_post_type' ) ) {
  213. return;
  214. }
  215.  
  216. if ( is_admin() ) {
  217. return;
  218. }
  219.  
  220. if ( is_attachment() ) {
  221. return;
  222. }
  223.  
  224. if ( $query->is_page() ) {
  225. return;
  226. }
  227.  
  228. if ( apply_filters( 'bimber_skip_quizzes_for_query', false, $query ) ) {
  229. return;
  230. }
  231.  
  232. $post_type = $query->get( 'post_type' );
  233.  
  234. // Normalize.
  235. $post_type = ( '' === $post_type ) ? array( 'post' ) : (array) $post_type;
  236.  
  237. // Skip if query is not for "post" type.
  238. if ( ! in_array( 'post', $post_type, true ) ) {
  239. return;
  240. }
  241.  
  242. $post_type[] = snax_get_quiz_post_type();
  243.  
  244. $query->set( 'post_type', $post_type );
  245. }
  246.  
  247. /**
  248. * Load Snax voting box in right order on a single post page
  249. */
  250. function bimber_snax_apply_voting_box_order() {
  251. add_action( 'bimber_after_single_content', 'bimber_snax_render_post_voting_box', bimber_get_theme_option( 'post', 'voting_box_order' ) );
  252. }
  253.  
  254. function bimber_snax_render_post_voting_box() {
  255. ?>
  256. <div class="snax snax-post-container">
  257.  
  258. <?php snax_render_post_voting_box(); ?>
  259.  
  260. </div>
  261. <?php
  262. }
  263.  
  264. function bimber_snax_add_quizzes_to_next_prev_nav( $where_clause, $in_same_term, $excluded_terms, $taxonomy, $post ) {
  265. if ( function_exists( 'snax_get_quiz_post_type' ) ) {
  266. $quiz_type = snax_get_quiz_post_type();
  267.  
  268. $where_clause = str_replace( "p.post_type = 'post'", "p.post_type IN ('post', '$quiz_type')", $where_clause );
  269. $where_clause = str_replace( "p.post_type = '$quiz_type'", "p.post_type IN ('post', '$quiz_type')", $where_clause );
  270. }
  271.  
  272. return $where_clause;
  273. }
  274.  
  275. function snax_register_vc_format_filter( $params ) {
  276. $active_formats = snax_get_active_formats();
  277. $vc_filter_value = array(
  278. '' => '', // Default value.
  279. );
  280.  
  281. foreach ( $active_formats as $format_id => $format_config ) {
  282. $format_label = $format_config['labels']['name'];
  283.  
  284. $vc_filter_value[ $format_label ] = $format_id;
  285. }
  286.  
  287. $snax_format_config = array(
  288. 'group' => __( 'Data', 'bimber' ),
  289. 'type' => 'multi_checkbox',
  290. 'heading' => __( 'Filter by Snax format', 'bimber' ),
  291. 'param_name' => 'snax_format',
  292. 'value' => $vc_filter_value,
  293. );
  294.  
  295. // Add filter after standard WP formats filter.
  296. $after_index = false;
  297.  
  298. foreach ($params as $index => $param_arr ) {
  299. if ( 'post_format' === $param_arr['param_name'] ) {
  300. $after_index = $index;
  301. break;
  302. }
  303. }
  304.  
  305. if ( false !== $after_index ) {
  306. array_splice( $params, $after_index + 1, 0, array( $snax_format_config ) );
  307. }
  308.  
  309. return $params;
  310. }
  311.  
  312. function snax_apply_snax_format_query_filter( $query_args ) {
  313. if ( ! empty( $query_args['snax_format'] ) ) {
  314. $format = $query_args['snax_format'];
  315.  
  316. // Remove from WP Query args.
  317. unset( $query_args['snax_format'] );
  318.  
  319. if ( ! is_array( $format ) ) {
  320. $format = explode( ',', $format );
  321. }
  322.  
  323. $query_args['meta_query'] = array(
  324. array(
  325. 'key' => '_snax_format',
  326. 'value' => $format,
  327. 'compare' => 'IN'
  328. )
  329. );
  330. }
  331.  
  332. return $query_args;
  333. }
  334.  
  335. /**
  336. * Add snax_quiz to single options meta box
  337. *
  338. * @param arr $types Allowed types.
  339. * @return arr
  340. */
  341. function bimber_snax_add_quiz_to_single_options_meta_box( $types ) {
  342. $types[] = 'snax_quiz';
  343. return $types;
  344. }
  345.  
  346. /**
  347. * Disallow setting templates for single quizzes
  348. *
  349. * @param bool $allow Whether to allow setting templates.
  350. * @param WP_Post $post Post object.
  351. * @return bool
  352. */
  353. function bimber_snax_disallow_single_templates_for_quiz( $allow, $post ) {
  354. if ( snax_is_quiz( $post ) ) {
  355. $allow = false;
  356. }
  357. return $allow;
  358. }
  359.  
  360. /**
  361. * Add snax post types to most popular posts query
  362. *
  363. * @param str $post_types Post types list.
  364. * @return str
  365. */
  366. function bimber_snax_add_snax_post_types_to_popular_posts_query( $post_types ) {
  367. $post_types = $post_types . ', snax_quiz';
  368. return $post_types;
  369. }
  370.  
  371. /**
  372. * Force display featured media on 'overlay' and 'background'
  373. *
  374. * @param string $template Template.
  375. *
  376. * @return string
  377. */
  378. function snax_ignore_disable_default_featured_media( $template ) {
  379. if ( strpos( $template, 'overlay' ) || strpos( $template, 'background' ) ) {
  380. add_filter( 'snax_disable_default_featured_media','__return_false' );
  381. }
  382.  
  383. return $template;
  384. }
  385.  
  386. /**
  387. * Change media upload form agruments
  388. *
  389. * @param arr $args Media upload settings.
  390. * @return arr
  391. */
  392. function bimber_snax_media_upload_form_args( $args ) {
  393. $args['classes']['select_files_button'] = array( 'snax-plupload-browse-button','g1-button','g1-button-m','g1-button-solid' );
  394. $args['classes']['get_by_url_button'] = array( 'snax-load-image-from-url-button','g1-button','g1-button-m','g1-button-solid' );
  395. $args['classes']['get_by_url_back_button'] = array( 'snax-load-image-from-url-button','g1-button','g1-button-m','g1-button-solid' );
  396. return $args;
  397. }
  398.  
  399. /**
  400. * Check whether to show bar for current snax item
  401. *
  402. * @return bool
  403. */
  404. function bimber_snax_show_item_bar() {
  405. if ( 'bunchy' !== bimber_get_theme_option( 'global', 'stack' ) ) {
  406. return false;
  407. }
  408.  
  409. $show = is_singular( 'snax_item' );
  410.  
  411. return apply_filters( 'bimber_snax_show_item_bar', $show );
  412. }
  413.  
  414. /**
  415. * Checkc whether to show snax bar for current post
  416. *
  417. * @return bool
  418. */
  419. function bimber_snax_show_post_bar() {
  420. if ( 'bunchy' !== bimber_get_theme_option( 'global', 'stack' ) ) {
  421. return false;
  422. }
  423. $show = snax_is_post_open_list( );
  424.  
  425. return apply_filters( 'bimber_snax_show_post_bar', $show );
  426. }
  427.  
  428. /**
  429. * Add Snax gallery to gallery count.
  430. *
  431. * @param int $count Items count.
  432. * @param WP_Post $post Post.
  433. * @return int
  434. */
  435. function snax_get_post_gallery_media_count( $count, $post ) {
  436. if ( snax_is_format( 'gallery', $post ) ) {
  437. $count += snax_get_post_submission_count( $post );
  438. }
  439. return $count;
  440. }
  441.  
  442. /**
  443. * Force the gallery format icon for Snax galleries
  444. *
  445. * @param str $format Post format.
  446. * @param WP_Post $post Post.
  447. * @return str
  448. */
  449. function snax_force_gallery_format_icon( $format, $post ) {
  450. if ( snax_is_format( 'gallery', $post ) ) {
  451. $format = 'gallery';
  452. }
  453. return $format;
  454. }
  455.  
  456. /**
  457. * Force image into microdata when it's disabled by Snax
  458. *
  459. * @param WP_Query $query Query object.
  460. */
  461. function snax_force_disabled_featured_image_in_meta( $query ) {
  462. $force = has_filter( 'get_post_metadata', 'snax_skip_post_thumbnail' );
  463. if ( $force ) {
  464. add_filter( 'bimber_force_missing_image', '__return_true' );
  465. }
  466. }
  467.  
  468. /**
  469. * Add product snax_item type to search results archive page
  470. *
  471. * @param WP_Query $query WP Query object.
  472. */
  473. function bimber_woocommerce_add_snax_items_to_search_results( $query ) {
  474. $is_bbpress = false;
  475. if ( function_exists( 'is_bbpress' ) ) {
  476. $is_bbpress = is_bbpress();
  477. }
  478. if ( $query->is_search() && ! $is_bbpress ) {
  479. $post_type = $query->get( 'post_type' );
  480. $post_type = ( '' === $post_type ) ? array( 'post' ) : (array) $post_type;
  481. $post_type[] = 'snax_item';
  482. $query->set( 'post_type', $post_type );
  483. }
  484. }
  485.  
  486. /** Content filter to cut embedly script from the list. We'll later add it via JS.
  487. *
  488. * @param str $content The content.
  489. * @return str
  490. */
  491. function bimber_snax_cut_embedly_scripts( $content ) {
  492. $embedly_script = apply_filters( 'snax_embedly_script_code', '<script async src="//cdn.embedly.com/widgets/platform.js" charset="UTF-8"></script>' );
  493. if ( snax_is_format( 'list' ) && substr_count( $content, $embedly_script ) > 0 ) {
  494. $content = str_replace( $embedly_script, '', $content );
  495. $content .= '<div class="bimber-snax-embedly-script-placeholder"></div>';
  496. }
  497. return $content;
  498. }
  499.  
  500. /**
  501. * Set up Snax on auto loaded posts
  502. */
  503. function bimber_snax_setup_auto_load() {
  504. if ( bimber_is_auto_load() ) {
  505. remove_filter( 'the_content', 'snax_render_quiz' );
  506. add_filter( 'the_content', 'snax_auto_load_render_quiz' );
  507. }
  508. }
  509.  
  510. /**
  511. * Render auto load version of quiz
  512. *
  513. * @param str $content The content.
  514. * @return str
  515. */
  516. function snax_auto_load_render_quiz( $content ) {
  517. if ( is_singular( snax_get_quiz_post_type() ) ) {
  518. ob_start();
  519. echo '<div class="snax">';
  520. ?>
  521. <div class="quiz">
  522. <p class="snax-quiz-actions">
  523. <a class="g1-button g1-button-l g1-button-wide g1-button-solid" href="<?php echo esc_attr( get_permalink( ) ); ?>">
  524. <?php esc_html_e( 'Let\'s play', 'snax' ); ?>
  525. </a>
  526. </p>
  527. </div>
  528. <?php
  529. echo '</div>';
  530. $content .= ob_get_clean();
  531. }
  532. return $content;
  533. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement