rdusnr

Untitled

Dec 28th, 2016
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.59 KB | None | 0 0
  1. <?php
  2. /**
  3. * @package WordPress
  4. * @subpackage KLEO
  5. * @author SeventhQueen <[email protected]>
  6. * @since 1.6
  7. */
  8.  
  9. if ( bp_is_active('notifications') ) {
  10. require_once( KLEO_LIB_DIR . '/plugin-buddypress/menu-notifications.php' );
  11. }
  12.  
  13.  
  14.  
  15. /* BuddyPress Avatar in menu item */
  16. add_filter('kleo_nav_menu_items', 'kleo_add_user_avatar_nav_item' );
  17. function kleo_add_user_avatar_nav_item( $menu_items ) {
  18. $menu_items[] = array(
  19. 'name' => __( 'My Account', 'kleo_framework' ),
  20. 'slug' => 'user_avatar',
  21. 'link' => '#',
  22. );
  23.  
  24. return $menu_items;
  25. }
  26.  
  27. add_filter('kleo_setup_nav_item_user_avatar' , 'kleo_setup_user_avatar_nav');
  28. function kleo_setup_user_avatar_nav( $menu_item ) {
  29.  
  30. add_filter( 'walker_nav_menu_start_el_user_avatar', 'kleo_menu_user_avatar', 10, 4 );
  31. add_filter( 'walker_nav_menu_start_el_li_user_avatar', 'kleo_menu_user_avatar_li', 10, 4 );
  32.  
  33. return $menu_item;
  34. }
  35. if ( ! function_exists( 'kleo_menu_user_avatar' ) ) {
  36. /**
  37. * Render user avatar menu item
  38. *
  39. * @param string $item_output
  40. * @param array $item
  41. * @param integer $depth
  42. * @param object $args
  43. * @return string
  44. */
  45. function kleo_menu_user_avatar( $item_output, $item, $depth, $args ) {
  46.  
  47. $output = '';
  48.  
  49. if ( is_user_logged_in() ) {
  50.  
  51. $url = bp_loggedin_user_domain();
  52.  
  53. $attr_title = strip_tags( $item->attr_title );
  54. $output .= '<a title="' . bp_get_loggedin_user_fullname() . '" class="kleo-bp-user-avatar' . ( $args->has_children && in_array($depth, array(0,1)) ? ' js-activated' : '' ) . '" href="' . $url . '" title="' . $attr_title .'">'
  55. . '<img src="' . esc_attr( bp_get_loggedin_user_avatar(array('width' => 25, 'height' => 25, 'html' => false)) ) . '" class="kleo-rounded" alt="">' . ($item->attr_title != '' ? ' ' . $item->attr_title : '');
  56.  
  57. $output .= ( $args->has_children && in_array($depth, array(0,1))) ? ' <span class="caret"></span></a>' : '</a>';
  58.  
  59. return $output;
  60. } elseif ( $args->has_children && in_array( $depth, array( 0, 1 ) ) ) {
  61. return $item_output;
  62. } else {
  63. return '';
  64. }
  65. }
  66. }
  67.  
  68. function kleo_menu_user_avatar_li( $item_output, $item, $depth, $args ) {
  69. $output = '';
  70. if ( is_user_logged_in() || ($args->has_children && in_array( $depth, array( 0, 1 ) )) ) {
  71. $output = $item_output;
  72. }
  73. return $output;
  74. }
  75.  
  76.  
  77.  
  78. /* Fix for members search form placeholder */
  79. add_filter( 'bp_directory_members_search_form', 'kleo_bp_fix_members_placeholder' );
  80.  
  81. function kleo_bp_fix_members_placeholder( $html ) {
  82. if ( isset($_GET['s']) && $_GET['s'] != '' ) {
  83. $html = str_replace('placeholder', 'value', $html);
  84. }
  85.  
  86. return $html;
  87. }
  88.  
  89.  
  90.  
  91. /* Display BuddyPress Member Types Filters in Members Directory */
  92.  
  93. add_action( 'bp_members_directory_member_types', 'kleo_bp_member_types_tabs' );
  94. function kleo_bp_member_types_tabs() {
  95. if( ! bp_get_current_member_type() ){
  96. $member_types = bp_get_member_types( array(), 'objects' );
  97. if( $member_types ) {
  98. foreach ( $member_types as $member_type ) {
  99. if ( $member_type->has_directory == 1 ) {
  100. echo '<li id="members-' . esc_attr($member_type->name) . '" class="bp-member-type-filter">';
  101. echo '<a href="' . bp_get_members_directory_permalink() . 'type/' . $member_type->directory_slug . '/">' . sprintf('%s <span>%d</span>', $member_type->labels['name'], kleo_bp_count_member_types($member_type->name)) . '</a>';
  102. echo '</li>';
  103. }
  104. }
  105. }
  106. }
  107. }
  108.  
  109.  
  110.  
  111. add_filter( 'bp_modify_page_title', 'kleo_bp_members_type_directory_page_title', 9, 4 );
  112. function kleo_bp_members_type_directory_page_title( $title, $original_title, $sep, $seplocation ) {
  113. $member_type = bp_get_current_member_type();
  114. if( bp_is_directory() && $member_type ){
  115. $member_type = bp_get_member_type_object( $member_type );
  116. if( $member_type ) {
  117. global $post;
  118. $post->post_title = $member_type->labels['name'];
  119. $title = $member_type->labels['name'] . " " . $sep . " " . $original_title;
  120. }
  121. }
  122. return $title;
  123. }
  124.  
  125.  
  126.  
  127. add_filter( 'bp_get_total_member_count', 'kleo_bp_get_total_member_count_member_type' );
  128. function kleo_bp_get_total_member_count_member_type(){
  129. $count = bp_core_get_active_member_count();
  130. $member_type = bp_get_current_member_type();
  131. if( bp_is_directory() && $member_type ){
  132. $count = kleo_bp_count_member_types( $member_type );
  133. }
  134. return $count;
  135. }
  136.  
  137.  
  138.  
  139. add_filter( 'bp_get_total_friend_count', 'kleo_bp_get_total_friend_count_member_type' );
  140. function kleo_bp_get_total_friend_count_member_type(){
  141. $user_id = get_current_user_id();
  142. $count = friends_get_total_friend_count( $user_id );
  143. $member_type = bp_get_current_member_type();
  144. if( bp_is_directory() && $member_type ){
  145. global $bp, $wpdb;
  146. $friends = $wpdb->get_results("SELECT count(1) as count FROM {$bp->friends->table_name} bpf
  147. LEFT JOIN {$wpdb->term_relationships} tr ON (bpf.initiator_user_id = tr.object_id || bpf.friend_user_id = tr.object_id )
  148. LEFT JOIN {$wpdb->terms} t ON t.term_id = tr.term_taxonomy_id
  149. WHERE t.slug = '" . $member_type . "' AND (bpf.initiator_user_id = $user_id || bpf.friend_user_id = $user_id ) AND tr.object_id != $user_id AND bpf.is_confirmed = 1", ARRAY_A);
  150. $count = 0;
  151. if( isset( $friends['0']['count'] ) && is_numeric( $friends['0']['count'] ) ){
  152. $count = $friends['0']['count'];
  153. }
  154. }
  155. return $count;
  156. }
  157.  
  158.  
  159.  
  160. function kleo_bp_count_member_types( $member_type = '' ) {
  161. if ( ! bp_is_root_blog() ) {
  162. switch_to_blog( bp_get_root_blog_id() );
  163. }
  164. global $wpdb;
  165. $sql = array(
  166. 'select' => "SELECT t.slug, tt.count FROM {$wpdb->term_taxonomy} tt LEFT JOIN {$wpdb->terms} t",
  167. 'on' => 'ON tt.term_id = t.term_id',
  168. 'where' => $wpdb->prepare( 'WHERE tt.taxonomy = %s', 'bp_member_type' ),
  169. );
  170. $members_count = $wpdb->get_results( join( ' ', $sql ) );
  171. $members_count = wp_filter_object_list( $members_count, array( 'slug' => $member_type ), 'and', 'count' );
  172. $members_count = array_values( $members_count );
  173. if( isset( $members_count[0] ) && is_numeric( $members_count[0] ) ) {
  174. $members_count = $members_count[0];
  175. }else{
  176. $members_count = 0;
  177. }
  178. restore_current_blog();
  179. return $members_count;
  180. }
  181.  
  182.  
  183.  
  184. add_filter( 'bp_before_has_members_parse_args', 'kleo_bp_set_has_members_type_arg', 10, 1 );
  185. function kleo_bp_set_has_members_type_arg( $args ) {
  186. $member_type = bp_get_current_member_type();
  187. $member_types = bp_get_member_types(array(), 'names');
  188. if ( isset( $args['scope'] ) && !isset( $args['member_type'] ) && in_array( $args['scope'], $member_types ) ) {
  189. if( $member_type ) {
  190. unset( $args['scope'] );
  191. }else{
  192. $args['member_type'] = $args['scope'];
  193. }
  194. }
  195. return $args;
  196. }
  197.  
  198. add_action( 'bp_before_member_header_meta', 'kleo_bp_profile_member_type_label' );
  199. function kleo_bp_profile_member_type_label() {
  200. $member_type = bp_get_member_type( bp_displayed_user_id() );
  201. if ( empty( $member_type ) ) {
  202. return;
  203. }
  204. $member_type_object = bp_get_member_type_object( $member_type );
  205. if($member_type_object){
  206. $member_type_label = '<p class="kleo_bp_profile_member_type_label">' . esc_html( $member_type_object->labels['singular_name'] ) . '</p>';
  207. echo apply_filters('kleo_bp_profile_member_type_label', $member_type_label);
  208. }
  209. }
  210.  
  211.  
  212. /* Get current Buddypress page */
  213. function kleo_bp_get_page_id() {
  214. $current_page_id = NULL;
  215. $page_array = get_option('bp-pages');
  216.  
  217. if (bp_is_register_page()) { /* register page */
  218. $current_page_id = $page_array['register'];
  219. } elseif( bp_is_members_directory() ) { /* members directory */
  220. $current_page_id = $page_array['members'];
  221. } elseif ( bp_is_activity_directory() ) { /* activity directory */
  222. $current_page_id = $page_array['activity'];
  223. } elseif ( bp_is_groups_directory() ) { /* groups directory */
  224. $current_page_id = $page_array['groups'];
  225. } elseif ( bp_is_activation_page() ) { /* activation page */
  226. $current_page_id = $page_array['activate'];
  227. }
  228. return $current_page_id;
  229. }
  230.  
  231.  
  232. /* Get current Buddypress page */
  233. function kleo_bp_get_component_id() {
  234. $current_page_id = NULL;
  235. $page_array = get_option('bp-pages');
  236.  
  237. if (bp_is_register_page()) { /* register page */
  238. $current_page_id = $page_array['register'];
  239. } elseif( bp_is_members_component() || bp_is_user() ) { /* members component */
  240. $current_page_id = $page_array['members'];
  241. } elseif ( bp_is_activity_directory() ) { /* activity directory */
  242. $current_page_id = $page_array['activity'];
  243. } elseif ( bp_is_groups_directory() || bp_is_group_single() ) { /* groups directory */
  244. $current_page_id = $page_array['groups'];
  245. } elseif ( bp_is_activation_page() ) { /* activation page */
  246. $current_page_id = $page_array['activate'];
  247. }
  248. return $current_page_id;
  249. }
  250.  
  251.  
  252. function kleo_bp_header() {
  253.  
  254. $current_page_id = kleo_bp_get_page_id();
  255. if ( ! $current_page_id ) {
  256. return;
  257. }
  258.  
  259. $page_header = get_cfield( 'header_content', $current_page_id );
  260. if( $page_header != '' ) {
  261. echo '<section class="kleo-bp-header container-wrap main-color">';
  262. echo do_shortcode( html_entity_decode($page_header) );
  263. echo '</section>';
  264. }
  265. }
  266.  
  267.  
  268.  
  269. function kleo_bp_bottom() {
  270.  
  271. $current_page_id = kleo_bp_get_page_id();
  272. if ( ! $current_page_id ) {
  273. return;
  274. }
  275.  
  276. $page_bottom = get_cfield( 'bottom_content', $current_page_id );
  277. if( $page_bottom != '' ) {
  278. echo '<section class="kleo-bp-bottom">';
  279. echo do_shortcode( $page_bottom );
  280. echo '</section>';
  281. }
  282. }
  283.  
  284.  
  285. if ( ! function_exists( 'kleo_bp_page_options' ) ) {
  286. /**
  287. * Set Buddypress page layout based of individual page settings
  288. */
  289. function kleo_bp_page_options()
  290. {
  291.  
  292. $current_page_id = kleo_bp_get_page_id();
  293.  
  294. if (!$current_page_id) {
  295. return false;
  296. }
  297.  
  298. $topbar_status = get_cfield('topbar_status', $current_page_id);
  299. //Top bar
  300. if (isset($topbar_status)) {
  301. if ($topbar_status === '1') {
  302. add_filter('kleo_show_top_bar', create_function('', 'return 1;'));
  303. } elseif ($topbar_status === '0') {
  304. add_filter('kleo_show_top_bar', create_function('', 'return 0;'));
  305. }
  306. }
  307. //Header and Footer settings
  308. if (get_cfield('hide_header', $current_page_id) == 1) {
  309. remove_action('kleo_header', 'kleo_show_header');
  310. }
  311. if (get_cfield('hide_footer', $current_page_id) == 1) {
  312. add_filter('kleo_footer_hidden', create_function('$status', 'return true;'));
  313. }
  314. if (get_cfield('hide_socket', $current_page_id) == 1) {
  315. remove_action('kleo_after_footer', 'kleo_show_socket');
  316. }
  317.  
  318. //Custom logo
  319. if (get_cfield('logo', $current_page_id)) {
  320. global $kleo_custom_logo;
  321. $kleo_custom_logo = get_cfield('logo', $current_page_id);
  322. add_filter('kleo_logo', create_function("", 'global $kleo_custom_logo; return $kleo_custom_logo;'));
  323. }
  324.  
  325. //Transparent menu
  326. if (get_cfield('transparent_menu', $current_page_id)) {
  327. add_filter('body_class', create_function('$classes', '$classes[]="navbar-transparent"; return $classes;'));
  328. }
  329.  
  330. //Remove shop icon
  331. if (get_cfield('hide_shop_icon', $current_page_id) && get_cfield('hide_shop_icon', $current_page_id) == 1) {
  332. remove_filter('wp_nav_menu_items', 'kleo_woo_header_cart', 9);
  333. remove_filter('kleo_mobile_header_icons', 'kleo_woo_mobile_icon', 10);
  334. }
  335. //Remove search icon
  336. if (get_cfield('hide_search_icon', $current_page_id) && get_cfield('hide_search_icon', $current_page_id) == 1) {
  337. remove_filter('wp_nav_menu_items', 'kleo_search_menu_item', 200, 2);
  338. }
  339. }
  340. }
  341.  
  342.  
  343. function kleo_bp_set_custom_menu( $args = '' ) {
  344.  
  345. $page_id = kleo_bp_get_component_id();
  346.  
  347. if( $page_id ) {
  348. $menuslug = get_cfield( 'page_menu', $page_id );
  349.  
  350. if( ! empty( $menuslug ) && $menuslug != 'default' && is_nav_menu( $menuslug ) ) {
  351. $args['menu'] = $menuslug;
  352. }
  353.  
  354. }
  355.  
  356. return $args;
  357. } // END function kleo_set_custom_menu($args = '')
  358.  
  359.  
  360.  
  361. if ( ! function_exists( 'bp_groups_front_template_part' ) ) {
  362. /**
  363. * Output the contents of the current group's home page.
  364. *
  365. * You should only use this when on a single group page.
  366. *
  367. * @since 2.4.0
  368. */
  369. function bp_groups_front_template_part()
  370. {
  371. $located = bp_groups_get_front_template();
  372.  
  373. if (false !== $located) {
  374. $slug = str_replace('.php', '', $located);
  375.  
  376. /**
  377. * Let plugins adding an action to bp_get_template_part get it from here
  378. *
  379. * @param string $slug Template part slug requested.
  380. * @param string $name Template part name requested.
  381. */
  382. do_action('get_template_part_' . $slug, $slug, false);
  383.  
  384. load_template($located, true);
  385.  
  386. } else if (bp_is_active('activity')) {
  387. bp_get_template_part('groups/single/activity');
  388.  
  389. } else if (bp_is_active('members')) {
  390. bp_groups_members_template_part();
  391. }
  392.  
  393. return $located;
  394. }
  395. }
  396.  
  397.  
  398.  
  399. /* Buddypress cover compatibility */
  400.  
  401. function kleo_bp_cover_image_css( $settings = array() ) {
  402. /**
  403. * If you are using a child theme, use bp-child-css
  404. * as the theme handel
  405. */
  406. $theme_handle = 'bp-parent-css';
  407.  
  408. $settings['theme_handle'] = $theme_handle;
  409. $settings['width'] = 1400;
  410. $settings['height'] = 440;
  411.  
  412. /**
  413. * Then you'll probably also need to use your own callback function
  414. * @see the previous snippet
  415. */
  416. //$settings['callback'] = 'your_theme_cover_image_callback';
  417.  
  418.  
  419. return $settings;
  420. }
  421. add_filter( 'bp_before_xprofile_cover_image_settings_parse_args', 'kleo_bp_cover_image_css', 10, 1 );
  422. add_filter( 'bp_before_groups_cover_image_settings_parse_args', 'kleo_bp_cover_image_css', 10, 1 );
  423.  
  424.  
  425. function kleo_bp_cover_html() {
  426.  
  427. if( ! bp_displayed_user_use_cover_image_header() ) {
  428. return;
  429. }
  430.  
  431. global $bp;
  432.  
  433. $output = '<div class="profile-cover-inner"></div>';
  434.  
  435. if ( bp_is_my_profile() || is_super_admin() ) {
  436.  
  437. $output .= '<div class="profile-cover-action">';
  438. $output .= '<a href="' . bp_displayed_user_domain() . $bp->profile->slug . '/change-cover-image/" class="button">' . __( "Change Cover", "kleo_framework" ) . '</a>';
  439. $output .= '</div>';
  440. }
  441.  
  442. echo $output;
  443. }
  444.  
  445. function kleo_bp_group_cover_html() {
  446.  
  447. if ( ! bp_group_use_cover_image_header() ) {
  448. return;
  449. }
  450.  
  451. global $bp;
  452.  
  453. $output ='';
  454.  
  455. if ( is_user_logged_in() ) {
  456.  
  457. $user_ID = get_current_user_id();
  458. $group_id = bp_get_current_group_id();
  459.  
  460. if (groups_is_user_mod($user_ID, $group_id) || groups_is_user_admin($user_ID, $group_id)) {
  461.  
  462. $message = __("Change Cover", 'bpcp');
  463.  
  464. $group = groups_get_group(array('group_id' => $group_id));
  465. $group_permalink = trailingslashit(bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/' . $group->slug . '/');
  466.  
  467. $output .= '<div class="profile-cover-action">';
  468. $output .= '<a href="' . trailingslashit($group_permalink . 'admin/group-cover-image') . '" class="button">' . $message . '</a>';
  469. $output .= '</div>';
  470. }
  471. }
  472.  
  473. echo $output;
  474. }
  475.  
  476. if ( version_compare( BP_VERSION, '2.4', '>=' ) ) {
  477. add_action('bp_before_member_header', 'kleo_bp_cover_html', 20);
  478. add_action('bp_before_group_header', 'kleo_bp_group_cover_html', 20);
  479. }
  480.  
  481. /* BP DOCS compatibility */
  482. add_filter( 'bp_docs_allow_comment_section', '__return_true', 100 );
  483.  
  484.  
  485.  
  486. /* Remove shortcodes from activity view */
  487. add_filter( 'bp_get_activity_content_body','kleo_bp_activity_filter', 1 );
  488. function kleo_bp_activity_filter( $content ) {
  489. $content = preg_replace("/\[(.*?)(?:(\/))?\](?:(.+?)\[\/\2\])?/s",'', $content);
  490. return $content;
  491. }
Add Comment
Please, Sign In to add comment