....................................../////.===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 : 66.29.146.187  /  Your IP : 216.73.216.167
Web Server : LiteSpeed
System : Linux premium302.web-hosting.com 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
User : ailwtbdh ( 734)
PHP Version : 8.1.34
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/ailwtbdh/www/wp-content/plugins/wpforo/integrations/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/ailwtbdh/www/wp-content/plugins/wpforo/integrations/BuddyPressHooks.php
<?php
add_action( 'wp_enqueue_scripts', function() {
	if( is_rtl() ) {
		wp_register_style( 'wpforo-bp-rtl', WPF()->tpl->template_url . '/integration/buddypress/style-rtl.css', false, WPFORO_VERSION );
		wp_enqueue_style( 'wpforo-bp-rtl' );
	} else {
		wp_register_style( 'wpforo-bp', WPF()->tpl->template_url . '/integration/buddypress/style.css', false, WPFORO_VERSION );
		wp_enqueue_style( 'wpforo-bp' );
	}
	if( ! is_wpforo_page() ) {
		wp_enqueue_style( 'dashicons' );
	}
} );

/**
 * Insert BuddyPress Activity
 *
 * @param array $args
 *
 * @return bool|int
 */
function wpforo_bp_activity( $args = [] ) {
	if( ! function_exists( 'bp_activity_add' ) || ! is_user_logged_in() ) return false;
	$default = [
		'action'        => '',
		'title'         => '',
		'content'       => '',
		'component'     => 'community',
		'type'          => false,
		'primary_link'  => '',
		'user_id'       => '',
		'item_id'       => false,
		'hide_sitewide' => false,
		'is_spam'       => false,
	];

	$args = wpforo_parse_args( $args, $default );
	if( function_exists( 'bp_activity_add' ) ) {
		if( function_exists( 'bp_loggedin_user_domain' ) ) {
			$user_url = bp_loggedin_user_domain( $args['user_id'] );
			if( function_exists( 'bp_core_get_user_displayname' ) ) {
				$user_name = bp_core_get_user_displayname( $args['user_id'] );
				$activity_types = apply_filters( 'wpforo_buddypress_activity_types', ['wpforo_topic', 'wpforo_post', 'wpforo_like']);
				if( $user_url && $user_name ) {
					$user_link    = '<a href="' . esc_url( (string) $user_url ) . '">' . esc_html( $user_name ) . '</a>';
					$content_link = ( $args['primary_link'] && $args['title'] ) ? '<a href="' . esc_url( (string) $args['primary_link'] ) . '">' . esc_html( $args['title'] ) . '</a> - ' : $args['title'] . ' - ';
					if( $args['type'] == 'wpforo_topic' ) {
						$args['action'] = sprintf( wpforo_phrase( '%s posted a new topic %s', false ), $user_link, $content_link );
					} elseif( $args['type'] == 'wpforo_post' ) {
						$args['action'] = sprintf( wpforo_phrase( '%s replied to the topic %s', false ), $user_link, $content_link );
					} elseif( $args['type'] == 'wpforo_like' ) {
						$args['action'] = sprintf( wpforo_phrase( '%s liked forum post %s', false ), $user_link, $content_link );
					}
				}
			}
		}

		if( in_array( $args['type'], $activity_types ) ){
			return $activity_id = bp_activity_add( $args );
		}
	}

	return false;
}

/**
 * Delete BuddyPress Activity
 *
 * @param array $args
 */
function wpforo_bp_activity_delete( $args = [] ) {
	if( ! function_exists( 'bp_activity_delete' ) || ! is_user_logged_in() ) return;
	$default = [
		'action'        => '',
		'title'         => '',
		'content'       => '',
		'component'     => 'community',
		'type'          => false,
		'primary_link'  => '',
		'user_id'       => '',
		'item_id'       => false,
		'hide_sitewide' => false,
		'is_spam'       => false,
	];

	$args = wpforo_parse_args( $args, $default );
	if( function_exists( 'bp_activity_delete' ) ) {
		bp_activity_delete( $args );
	}
}

/**
 * Disable comment button for wpForo activity
 *
 * @param bool $can_comment
 *
 * @return bool
 */
function wpforo_bp_activity_disable_comment( $can_comment = true ) {
	if( false === $can_comment ) return $can_comment;
	if( function_exists( 'bp_get_activity_action_name' ) ) {
		$action_name      = bp_get_activity_type();
		$disabled_actions = [ 'wpforo_topic', 'wpforo_post', 'wpforo_like' ];
		$disabled_actions = apply_filters( 'wpforo_bp_activity_disable_comment', $disabled_actions );
		if( in_array( $action_name, $disabled_actions ) ) {
			$can_comment = false;
		}
	}

	return $can_comment;
}

/**
 * Register BuddyPress Activities
 */

add_action( 'bp_register_activity_actions', function() {
	bp_activity_set_action( 'community', 'wpforo_topic', wpforo_phrase( 'Forum topic', false ), '', wpforo_phrase( 'Forum topic', false ), [ 'member' ] );
	bp_activity_set_action( 'community', 'wpforo_post', wpforo_phrase( 'Forum post', false ), '', wpforo_phrase( 'Forum post', false ), [ 'member' ] );
	bp_activity_set_action( 'community', 'wpforo_like', wpforo_phrase( 'Forum post like', false ), '', wpforo_phrase( 'Forum post like', false ), [ 'member' ] );
} );
add_filter( 'bp_activity_can_comment', 'wpforo_bp_activity_disable_comment' );

function wpforo_bp_forums_screen_topics() {
	add_action( 'bp_template_content', function() {
		if( isset( $_GET['wpfpaged'] ) && intval( $_GET['wpfpaged'] ) ) $paged = intval( $_GET['wpfpaged'] );
		$paged      = ( isset( $paged ) && $paged ) ? $paged : 1;
		$args       = [
			'offset'        => ( $paged - 1 ) * WPF()->current_object['items_per_page'],
			'row_count'     => WPF()->current_object['items_per_page'],
			'userid'        => bp_displayed_user_id(),
			'orderby'       => 'modified',
			'check_private' => true,
		];
		$activities = WPF()->topic->get_topics( $args, $items_count );
		?>
        <div id="wpforo-topics" class="wpforo-activity">
            <h2 class="entry-title"><?php wpforo_phrase( 'Forum Topics Started' ); ?></h2>
			<?php if( empty( $activities ) ) : ?>
                <p class="wpf-p-error"> <?php wpforo_phrase( 'No activity found for this member.' ) ?> </p>
			<?php else: ?>
                <table>
					<?php $bg = false;
					foreach( $activities as $activity ) : ?>
                        <tr>
                            <td class="wpf-activity-title">
                                <span class="dashicons dashicons-admin-comments"></span>
								<?php
								$topic = wpforo_topic( $activity['topicid'] );
								if( ! empty( $topic ) ) {
									$topic_url   = $topic['url'];
									$topic_title = $topic['title'];
									if( ! $topic_url ) $topic_url = '#';
									if( ! $topic_title ) $topic_title = wpforo_phrase( 'Topic link' );
									?><a href="<?php echo esc_url( (string) $topic_url ) ?>" class="wpf-item-title"><?php echo $topic_title ?></a><?php
								}
								if( wpfval( $topic, 'forumid' ) ) {
									$forum       = wpforo_forum( $topic['forumid'] );
									$forum_url   = $forum['url'];
									$forum_title = $forum['title'];
									if( ! $forum_url ) $forum_url = '#';
									if( ! $forum_title ) $forum_url = wpforo_phrase( 'Forum link' );
									?><p style="font-style: italic"><span><?php echo wpforo_phrase( 'in forum', false ) ?></span> <a href="<?php echo esc_url( (string) $forum_url ) ?>"><?php echo $forum_title ?></a></p><?php
								}
								?>
                            </td>
                            <td class="wpf-activity-users">
								<?php $members = WPF()->topic->members( $topic['topicid'], 3 ); ?>
								<?php if( ! empty( $members ) ): foreach( $members as $member ): ?>
									<?php if( ! empty( $member ) ): ?>
                                        <a href="<?php echo bp_members_get_user_url( $member['userid'] ) ?>" title="<?php echo esc_attr( bp_core_get_user_displayname( $member['userid'] ) ); ?>"><?php echo wpforo_user_avatar( $member, 30 ) ?></a>
									<?php endif; ?>
								<?php endforeach; endif; ?>
                            </td>
                            <td class="wpf-activity-posts">
								<?php echo $activity['posts']; ?><?php wpforo_phrase( 'posts' ); ?>
                            </td>
                            <td class="wpf-activity-date"><?php wpforo_date( $topic['created'] ); ?></td>
                        </tr>
					<?php endforeach ?>
                </table>
                <div class="wpf-activity-foot"><?php WPF()->tpl->pagenavi( $paged, $items_count, null, false ); ?></div>
                <div style="clear: both"></div>
			<?php endif; ?>
        </div>
		<?php
	} );
	bp_core_load_template( apply_filters( 'wpforo_bp_forums_screen_topics', 'members/single/plugins' ) );
}

function wpforo_bp_forums_screen_replies() {
	add_action( 'bp_template_content', function() {
		if( isset( $_GET['wpfpaged'] ) && intval( $_GET['wpfpaged'] ) ) $paged = intval( $_GET['wpfpaged'] );
		$paged      = ( isset( $paged ) && $paged ) ? $paged : 1;
		$args       = [
			'offset'        => ( $paged - 1 ) * WPF()->current_object['items_per_page'],
			'row_count'     => WPF()->current_object['items_per_page'],
			'userid'        => bp_displayed_user_id(),
			'orderby'       => '`created` DESC',
			'check_private' => true,
		];
		$activities = WPF()->post->get_posts( $args, $items_count );
		?>
        <div id="wpforo-posts" class="wpforo-activity">
            <h2 class="entry-title"><?php wpforo_phrase( 'Forum Replies Created' ); ?></h2>
			<?php if( empty( $activities ) ) : ?>
                <p class="wpf-p-error"> <?php wpforo_phrase( 'No activity found for this member.' ) ?> </p>
			<?php else: ?>
                <table>
					<?php foreach( $activities as $activity ) : ?>
                        <tr>
                            <td class="wpf-activity-title">
                                <span class="dashicons dashicons-format-chat"></span>
								<?php
								$post = wpforo_post( $activity['postid'] );
								if( ! empty( $post ) ) {
									$post_url   = $post['url'];
									$post_title = $post['title'];
									if( ! $post_url ) $post_url = '#';
									if( ! $post_title ) $post_title = wpforo_phrase( 'Post link' );
									?><a href="<?php echo esc_url( (string) $post_url ) ?>" class="wpf-item-title"><?php echo $post_title ?></a><?php
								}
								?>
								<?php if( wpfval( $post, 'body' ) ): ?>
                                    <p class="wpf-post-excerpt" style="font-style: italic">
										<?php
										$body = wpforo_content_filter( $post['body'], $post );
										$body = preg_replace( '#\[attach][^\[\]]*\[/attach]#i', '', strip_shortcodes( strip_tags( $body ) ) );
										wpforo_text( $body, 200 );
										?>
                                    </p>
								<?php endif; ?>
                            </td>
                            <td class="wpf-activity-forum">
								<?php
								if( wpfval( $post, 'forumid' ) ) {
									$forum       = wpforo_forum( $post['forumid'] );
									$forum_url   = $forum['url'];
									$forum_title = $forum['title'];
									if( ! $forum_url ) $forum_url = '#';
									if( ! $forum_title ) $forum_url = wpforo_phrase( 'Forum link' );
									?><p style="font-style: italic"><span><?php echo wpforo_phrase( 'in forum', false ) ?></span> <a href="<?php echo esc_url( (string) $forum_url ) ?>"><?php echo $forum_title ?></a></p><?php
								}
								?>
                            </td>
                            <td class="wpf-activity-date"><?php wpforo_date( $post['created'] ); ?></td>
                        </tr>
					<?php endforeach ?>
                </table>
                <div class="wpf-activity-foot"><?php WPF()->tpl->pagenavi( $paged, $items_count, null, false ); ?></div>
                <div style="clear: both"></div>
			<?php endif; ?>
        </div>
		<?php
	} );
	bp_core_load_template( apply_filters( 'wpforo_bp_forums_screen_replies', 'members/single/plugins' ) );
}

function wpforo_bp_forums_screen_likes() {
	add_action( 'bp_template_content', function() {
		if( isset( $_GET['wpfpaged'] ) && intval( $_GET['wpfpaged'] ) ) $paged = intval( $_GET['wpfpaged'] );
		$paged      = ( isset( $paged ) && $paged ) ? $paged : 1;
		$args       = [
			'userid'    => bp_displayed_user_id(),
			'offset'    => ( $paged - 1 ) * WPF()->current_object['items_per_page'],
			'row_count' => WPF()->current_object['items_per_page'],
			'var'       => 'postid',
		];
		$activities = WPF()->post->get_liked_posts( $args, $items_count );
		?>
        <div id="wpforo-liked-posts" class="wpforo-activity">
            <h2 class="entry-title"><?php wpforo_phrase( 'Liked Forum Posts' ); ?></h2>
			<?php if( empty( $activities ) ) : ?>
                <p class="wpf-p-error"> <?php wpforo_phrase( 'No activity found for this member.' ) ?> </p>
			<?php else: ?>
                <table>
					<?php $bg = false;
					foreach( $activities as $postid ) : ?>
                        <tr>
                            <td class="wpf-activity-title">
                                <span class="dashicons dashicons-thumbs-up"></span>
								<?php
								$post = wpforo_post( $postid );
								if( ! empty( $post ) ) {
									$post_url   = $post['url'];
									$post_title = $post['title'];
									if( ! $post_url ) $post_url = '#';
									if( ! $post_title ) $post_title = wpforo_phrase( 'Post link' );
									?><a href="<?php echo esc_url( (string) $post_url ) ?>" class="wpf-item-title"><?php echo $post_title ?></a><?php
								}
								?>
								<?php if( wpfval( $post, 'body' ) ): ?>
                                    <p class="wpf-post-excerpt" style="font-style: italic">
										<?php
										$body = wpforo_content_filter( $post['body'], $post );
										$body = preg_replace( '#\[attach\][^\[\]]*\[\/attach\]#is', '', strip_shortcodes( strip_tags( $body ) ) );
										wpforo_text( $body, 200 );
										?>
                                    </p>
								<?php endif; ?>
                            </td>
                            <td class="wpf-activity-forum">
								<?php
								if( wpfval( $post, 'forumid' ) ) {
									$forum       = wpforo_forum( $post['forumid'] );
									$forum_url   = $forum['url'];
									$forum_title = $forum['title'];
									if( ! $forum_url ) $forum_url = '#';
									if( ! $forum_title ) $forum_url = wpforo_phrase( 'Forum link' );
									?><p style="font-style: italic"><span><?php echo wpforo_phrase( 'in forum', false ) ?></span> <a href="<?php echo esc_url( (string) $forum_url ) ?>"><?php echo $forum_title ?></a></p><?php
								}
								?>
                            </td>
                            <td class="wpf-activity-date"><?php wpforo_date( $post['created'] ); ?></td>
                        </tr>
					<?php endforeach ?>
                </table>
                <div class="wpf-activity-foot"><?php WPF()->tpl->pagenavi( $paged, $items_count, null, false ); ?></div>
                <div style="clear: both"></div>
			<?php endif; ?>
        </div>
		<?php
	} );
	bp_core_load_template( apply_filters( 'wpforo_bp_forums_screen_likes', 'members/single/plugins' ) );
}

function wpforo_bp_forums_screen_subscriptions() {
	add_action( 'bp_template_content', 'wpforo_bp_member_forums_subscriptions_content' );
	bp_core_load_template( apply_filters( 'wpforo_bp_forums_screen_subscriptions', 'members/single/plugins' ) );
}

function wpforo_bp_member_forums_subscriptions_content() {
    if( !WPF()->sbscrb ) return;
	if( isset( $_GET['wpfpaged'] ) && intval( $_GET['wpfpaged'] ) ) $paged = intval( $_GET['wpfpaged'] );
	$user_id    = bp_displayed_user_id();
	$paged      = ( isset( $paged ) && $paged ) ? $paged : 1;
	$args       = [
		'offset'    => ( $paged - 1 ) * WPF()->current_object['items_per_page'],
		'row_count' => WPF()->current_object['items_per_page'],
		'userid'    => $user_id,
		'order'     => 'DESC',
	];
	$activities = WPF()->sbscrb->get_subscribes( $args, $items_count );
	?>
    <div id="wpforo-subscriptions" class="wpforo-activity">
        <h2 class="entry-title"><?php wpforo_phrase( 'Forum Subscriptions' ); ?></h2>
		<?php if( empty( $activities ) ) : ?>
            <p class="wpf-p-error"> <?php wpforo_phrase( 'No activity found for this member.' ) ?> </p>
		<?php else: ?>
            <table>
				<?php $bg = false;
				foreach( $activities as $activity ) : ?>
                    <tr>
                        <td class="wpf-activity-title">
                            <span class="dashicons <?php echo ( $activity['type'] == 'forum' ) ? 'dashicons-category' : 'dashicons-admin-comments'; ?>"></span>
							<?php
							$item_url = '#';
							if( in_array( $activity['type'], [ 'forum', 'forum-topic' ] ) ) {
								$item     = wpforo_forum( $activity['itemid'] );
								$item_url = $item['url'];
							} elseif( $activity['type'] == 'topic' ) {
								$item     = wpforo_topic( $activity['itemid'] );
								$item_url = $item['url'];
							} elseif( in_array( $activity['type'], [ 'forums', 'forums-topics' ] ) ) {
								$item     = [ 'title' => wpforo_phrase( 'All ' . $activity['type'], false ) ];
								$item_url = '#';
							}
							if( empty( $item ) ) continue;
							?>
                            <a href="<?php echo esc_url( (string) $item_url ) ?>" class="wpf-item-title"><?php echo esc_html( $item['title'] ) ?></a>
                        </td>
						<?php if( wpforo_is_owner( $user_id ) ) : ?>
                            <td class="wpf-activity-unsb"><a href="<?php echo esc_url( (string) WPF()->sbscrb->get_unsubscribe_link( $activity['confirmkey'] ) ) ?>"><?php wpforo_phrase( 'Unsubscribe' ); ?></a></td>
						<?php else : ?>
                            <td></td>
						<?php endif; ?>
                    </tr>
				<?php endforeach ?>
            </table>
            <div class="wpf-activity-foot"><?php WPF()->tpl->pagenavi( $paged, $items_count, null, false ); ?></div>
            <div style="clear: both"></div>
		<?php endif; ?>
    </div>
	<?php
}

/**
 * Filter registered notifications components, and add 'community' to the queried 'component_name' array.
 *
 * @param array $component_names
 *
 * @return array
 * @since wpForo (1.4.8)
 *
 */
add_filter( 'bp_notifications_get_registered_components', function( $component_names = [] ) {
	if( ! is_array( $component_names ) ) $component_names = [];
	array_push( $component_names, 'community' );

	return $component_names;
},          11 );

/**
 * Format the BuddyBar/Toolbar notifications
 *
 * @param string $action The kind of notification being rendered
 * @param int $item_id The primary item id
 * @param int $secondary_item_id The secondary item id
 * @param int $total_items The total number of messaging-related notifications waiting for the user
 * @param string $format 'string' for BuddyBar-compatible notifications; 'array' for WP Toolbar
 *
 * @since wpForo (1.4.8)
 *
 */
function wpforo_bp_format_buddypress_notifications( $action, $item_id, $secondary_item_id, $total_items, $format = 'string' ) {
	// New reply notifications

	if( 'wpforo_new_reply' === $action ) {

		$post = wpforo_post( $item_id );
		if( ! wpfval( $post, 'postid' ) ) return false;
		$topic = wpforo_topic( $post['topicid'] );
		if( ! wpfval( $topic, 'topicid' ) ) return false;

		$reply_id    = $post['postid'];
		$reply_url   = $post['url'];
		$topic_title = $topic['title'];
		$reply_link  = wp_nonce_url( add_query_arg( [ 'action' => 'wpforo_mark_read', 'itemid' => $reply_id ], $reply_url ), 'wpforo_mark_topic_' . $reply_id );
		$title_attr  = __( 'Topic reply', 'wpforo' );

		if( (int) $total_items > 1 ) {
			$text   = sprintf( __( 'You have %d new replies', 'wpforo' ), (int) $total_items );
			$filter = 'wpforo_bp_multiple_new_subscription_notification';
		} else {
			if( ! empty( $secondary_item_id ) ) {
				$text = sprintf( __( 'You have %d new reply to %2$s from %3$s', 'wpforo' ), (int) $total_items, $topic_title, bp_core_get_user_displayname( $secondary_item_id ) );
			} else {
				$text = sprintf( __( 'You have %d new reply to %s', 'wpforo' ), (int) $total_items, $topic_title );
			}
			$filter = 'wpforo_bp_single_new_subscription_notification';
		}
		// WordPress Toolbar
		if( 'string' === $format ) {
			$return = apply_filters( $filter, '<a href="' . esc_url( (string) $reply_link ) . '" title="' . esc_attr( $title_attr ) . '">' . esc_html( $text ) . '</a>', (int) $total_items, $text, $reply_link );
		} else {
			$return = apply_filters( $filter, [ 'text' => $text, 'link' => $reply_link ], $reply_link, (int) $total_items, $text, $topic_title );
		}
		do_action( 'wpforo_bp_format_buddypress_notifications', $action, $item_id, $secondary_item_id, $total_items );

		return $return;
	}

	return $action;
}

add_filter( 'bp_notifications_get_notifications_for_user', 'wpforo_bp_format_buddypress_notifications', 11, 5 );

/**
 * Hooked into the new reply function, this notification action is responsible
 * for notifying topic and hierarchical reply authors of topic replies.
 *
 * @param array $post
 * @param array $topic
 *
 * @since wpForo (1.4.8)
 *
 */
function wpforo_bp_add_notification( $post = [], $topic = [] ) {
	if( ! wpforo_setting( 'buddypress', 'notification' ) ) return;

	//Get reply data
	if( ! wpfval( $post, 'postid' ) ) return;
	if( ! wpfval( $topic, 'topicid' ) ) return;

	//Don't notify if a new reply is unapproved
	if( wpfval( $post, 'status' ) ) return;
	if( wpfval( $post, 'is_first_post' ) ) return;

	//Get author information
	$author_id       = $post['userid'];
	$topic_author_id = $topic['userid'];

	// Hierarchical replies
	if( wpfval( $post, 'parentid' ) ) {
		$reply_to_item_author_id = wpforo_post( $post['parentid'], 'userid' );
	}

	// Notify the topic author if not the current reply author
	if( $author_id != $topic_author_id ) {
		$args = [
			'user_id'           => $topic_author_id,
			'item_id'           => $post['postid'],
			'component_name'    => 'community',
			'component_action'  => 'wpforo_new_reply',
			'date_notified'     => $post['created'],
			'secondary_item_id' => $author_id,
		];
		bp_notifications_add_notification( $args );
	}

	// Notify the immediate reply author if not the current reply author
	if( isset( $reply_to_item_author_id ) && wpfval( $post, 'parentid' ) && $topic_author_id != $reply_to_item_author_id && $author_id != $reply_to_item_author_id ) {
		$args = [
			'user_id'           => $reply_to_item_author_id,
			'item_id'           => $post['postid'],
			'component_name'    => 'community',
			'component_action'  => 'wpforo_new_reply',
			'date_notified'     => $post['created'],
			'secondary_item_id' => $author_id,
		];
		bp_notifications_add_notification( $args );
	}
}

add_action( 'wpforo_after_add_post', 'wpforo_bp_add_notification', 10, 2 );

/**
 * Remove notification when reply is set unapproved
 *
 * @param array $post
 * @param array $topic
 *
 * @since wpForo (1.4.8)
 *
 */
function wpforo_bp_delete_notification( $post = [], $topic = [] ) {

	if( ! wpforo_setting( 'buddypress', 'notification' ) ) return;

	//Get reply data
	if( ! wpfval( $post, 'postid' ) ) return;
	if( ! wpfval( $topic, 'topicid' ) && wpfval( $post, 'topicid' ) ) {
		$topic = wpforo_topic( $post['topicid'] );
	}

	$reply_to_item_author_id = 0;
	if( wpfval( $post, 'parentid' ) ) {
		$reply_to_item_author_id = wpforo_post( $post['parentid'], 'userid' );
	}

	if( wpfval( $topic, 'userid' ) ) {
		bp_notifications_delete_notifications_by_item_id( $topic['userid'], $post['postid'], 'community', 'wpforo_new_reply' );
	}

	if( $reply_to_item_author_id && $topic['userid'] !== $reply_to_item_author_id ) {
		bp_notifications_delete_notifications_by_item_id( $reply_to_item_author_id, $post['postid'], 'community', 'wpforo_new_reply' );
	}
}

add_action( 'wpforo_after_delete_post', 'wpforo_bp_delete_notification', 10 );

/**
 * Add / Remove buddypress notification based on post status (approve/unapprove)
 *
 * @param int $reply_id
 * @param int $status | 0 is approved, 1 is unapproved
 *
 * @since wpForo (1.4.8)
 *
 */
add_action( 'wpforo_post_status_update',
    function( $post, $status = 0 ) {
        if( !$post || ! wpforo_setting( 'buddypress', 'notification' ) ) return;
        $post['status'] = $status = intval( $status );
        if( wpfval( $post, 'topicid' ) ) {
            $topic = WPF()->topic->get_topic( $post['topicid'] );
        } else {
            return;
        }
        if( $status ) {
            wpforo_bp_delete_notification( $post, $topic );
        } else {
            wpforo_bp_add_notification( $post, $topic );
        }
    }, 10, 2
);

/**
 * Mark notifications as read when reading a topic
 *
 * @since wpForo (1.4.8)
 *
 * If not trying to mark a notification as read
 */
add_action( 'wpforo_actions_end', function( $action = '' ) {
	if( empty( $_GET['itemid'] ) || empty( $_GET['action'] ) ) return;
	if( 'wpforo_mark_read' !== $_GET['action'] ) return;

	// Get required data
	$action   = $action ?: $_GET['action'];
	$user_id  = bp_loggedin_user_id();
	$reply_id = intval( $_GET['itemid'] );

	// Check nonce
	$result = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( $_REQUEST['_wpnonce'], 'wpforo_mark_topic_' . $reply_id ) : false;

	if( ! $result ) {
		$wp_error = new WP_Error();
		$wp_error->add( 'wpforo_bp_notification_error', __( 'Are you sure you wanted to do that?', 'wpforo' ) );
		// Check current user's ability to edit the user
	} elseif( ! current_user_can( 'edit_user', $user_id ) ) {
		$wp_error = new WP_Error();
		$wp_error->add( 'wpforo_bp_notification_permissions', __( 'You do not have permission to mark notifications for that user.', 'wpforo' ) );
	}

	if( ! isset( $wp_error ) ) {
		$success = bp_notifications_mark_notifications_by_item_id( $user_id, $reply_id, 'community', 'wpforo_new_reply' );
		do_action( 'wpforo_bp_notifications_handler', $success, $user_id, $reply_id, $action );
	}

	// Redirect to the topic
	$redirect = wpforo_post( $reply_id, 'url' );

	// Redirect
	wp_safe_redirect( $redirect );

	// For good measure
	exit();
},          9 );

function wpforo_bp_profile_url( $url = '', $member = [], $template = 'profile' ) {
	if( wpfval( $member, 'userid' ) ) {
		$user_domain = wpforo_bp_profile_domain( $member );
		$tabs        = wpforo_setting( 'buddypress', 'forum_tab' );
		if( $user_domain && $tabs ) {
			if( $template === 'account' ) {
				$url = rtrim( $user_domain, '/' ) . '/profile/';
			} elseif( $template === 'activity' ) {
				$url = rtrim( $user_domain, '/' ) . '/community/';
			} elseif( $template === 'subscriptions' ) {
				$url = rtrim( $user_domain, '/' ) . '/community/subscriptions/';
			} elseif( $template === 'profile' ) {
				$url = $user_domain;
			}
		} else {
			$url = $user_domain;
		}
	}

	return apply_filters( 'wpforo_bp_member_profile_url', $url, $member, $template );
}

function wpforo_bp_profile_domain( $member ) {
	$user_domain = trim( (string) bp_members_get_user_url( $member['userid'] ), '/' );
	// Get profile root slug and build current login user url //////////////////
	$root_slug = 'members';
	if( strpos( (string) $user_domain, '//' ) !== false ) {
		if( $pages = bp_core_get_directory_page_ids() ) {
			if( wpfval( $pages, 'members' ) ) {
				$root      = get_post_field( 'post_name', intval( $pages['members'] ) );
				$root_slug = $root ?: $root_slug;
			}
			$username = bp_members_get_user_slug( $member['userid'] );
			if( bp_is_username_compatibility_mode() ) $username = rawurlencode( $username );
			$after_domain = bp_core_enable_root_profiles() ? $username : $root_slug . '/' . $username;
			$domain = trailingslashit( bp_get_root_url() . '/' . $after_domain );
			$user_domain  = apply_filters( 'bp_members_get_user_url', $domain, $member['userid'], $member['user_nicename'], $member['user_login'] );
		}
	}

	//////////////////////////////////////////////////////////////////////////
	return strtok( $user_domain, '?' );
}

add_action( 'profile_update', function( $userid ) {
	WPF()->member->reset( $userid );
});

add_filter( 'bp_get_displayed_user_avatar', function( $avatar, $r ) {
	$replace_buddypress_avatar = apply_filters( 'wpforo_replace_buddypress_avatar', false );
	if( $replace_buddypress_avatar ) {
		if( ! $r['width'] ) $r['width'] = 150;

		return wpforo_avatar( $avatar, $r['item_id'], $r['width'], '', $r['alt'] );
	}

	return $avatar;
},          10, 2 );

add_filter( 'bp_get_activity_content_body', function( $body ) { return wpforo_strip_shortcodes( $body ); }, 4 );

Youez - 2016 - github.com/yon3zu
LinuXploit