wpForo Forum - Version 1.5.1

Version Description

Download this release

Release Info

Developer Tomdever
Plugin Icon 128x128 wpForo Forum
Version 1.5.1
Comparing to
See all releases

Code changes from version 1.5.0 to 1.5.1

readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: gVectors Team
3
  Tags: forum, forums, forum plugin, WordPress forum plugin, community, discussion
4
  Requires at least: 4.1
5
  Tested up to: 4.9
6
- Stable tag: 1.5.0
7
  Requires PHP: 5.4 and higher
8
  License: GPLv2 or later
9
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
@@ -36,7 +36,7 @@ GDPR Compliance: [https://wpforo.com/gdpr/](https://wpforo.com/gdpr/)
36
 
37
  = Forum Integration =
38
 
39
- wpForo forum plugin is well integrated with many Profile Builder and Membership plugins, especially with **BuddyPress** and **Ultimate Members** plugins.
40
 
41
 
42
  = FORUM FEATURES =
@@ -156,10 +156,16 @@ Find wpForo forum plugin addons on [gVectors Team website...](https://gvectors.c
156
 
157
  == Changelog ==
158
 
159
- = wpForo Forum 1.5.0 | 09.07.2018 =
160
 
161
- [wpForo v1.5.0 Release Summary](https://wpforo.com/community/wpforo-announcements/wpforo-1-5-0-is-released/)
162
 
 
 
 
 
 
 
163
  * Added: User Role-Usergroup Synchronization
164
  * Added: Automatically change Usergroup based on User Role
165
  * Added: Option to set Forum Usergroup for each User Role
3
  Tags: forum, forums, forum plugin, WordPress forum plugin, community, discussion
4
  Requires at least: 4.1
5
  Tested up to: 4.9
6
+ Stable tag: 1.5.1
7
  Requires PHP: 5.4 and higher
8
  License: GPLv2 or later
9
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
36
 
37
  = Forum Integration =
38
 
39
+ wpForo forum plugin is well integrated with many Profile Builder and Membership plugins, such as **BuddyPress** and **Ultimate Members** plugins.
40
 
41
 
42
  = FORUM FEATURES =
156
 
157
  == Changelog ==
158
 
159
+ = wpForo Forum 1.5.0 / 1.5.1 | 11.07.2018 =
160
 
161
+ [wpForo v1.5.0 and 1.5.1 Release Summary](https://wpforo.com/community/wpforo-announcements/wpforo-1-5-0-is-released/)
162
 
163
+ * wpForo Forum v1.5.1
164
+ * Added: Options to manage topic/post editing logs
165
+ * Fixed Bug: UM Integration issue on wpForo activation
166
+ * Fixed Bug: Long phrases cannot be changed in wpForo Phrase system
167
+ * --------------------
168
+ * wpForo Forum v1.5.0
169
  * Added: User Role-Usergroup Synchronization
170
  * Added: Automatically change Usergroup based on User Role
171
  * Added: Option to set Forum Usergroup for each User Role
wpf-admin/options-tabs/posts.php CHANGED
@@ -18,6 +18,30 @@
18
  <input id="rpt-posts" type="radio" name="wpforo_post_options[recent_posts_type]" value="posts" <?php wpfo_check(WPF()->post->options['recent_posts_type'], 'posts'); ?>/><label for="rpt-posts"><?php _e('Posts','wpforo'); ?></label>
19
  </div>
20
  </td>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  </tr>
22
  <tr>
23
  <th><label for="topics_per_page"><?php _e('Number of Topics per Page', 'wpforo'); ?> <a href="https://wpforo.com/docs/root/wpforo-settings/topic-post-settings/#item-per-page" title="<?php _e('Read the documentation', 'wpforo') ?>" target="_blank"><i class="far fa-question-circle"></i></a></label></th>
18
  <input id="rpt-posts" type="radio" name="wpforo_post_options[recent_posts_type]" value="posts" <?php wpfo_check(WPF()->post->options['recent_posts_type'], 'posts'); ?>/><label for="rpt-posts"><?php _e('Posts','wpforo'); ?></label>
19
  </div>
20
  </td>
21
+ </tr>
22
+ <tr>
23
+ <th>
24
+ <label><?php _e('Log Topic Editing Information','wpforo'); ?></label>
25
+ <p class="wpf-info"><?php _e('The post edit logging information "This post was modified 2 hours ago by John" is displayed under modified topic first post content..', 'wpforo') ?></p>
26
+ </th>
27
+ <td>
28
+ <div class="wpf-switch-field">
29
+ <input id="edit_topic_1" type="radio" name="wpforo_post_options[edit_topic]" value="1" <?php wpfo_check(WPF()->post->options['edit_topic'], 1); ?>/><label for="edit_topic_1"><?php _e('Enable','wpforo'); ?></label> &nbsp;
30
+ <input id="edit_topic_0" type="radio" name="wpforo_post_options[edit_topic]" value="0" <?php wpfo_check(WPF()->post->options['edit_topic'], 0); ?>/><label for="edit_topic_0"><?php _e('Disable','wpforo'); ?></label>
31
+ </div>
32
+ </td>
33
+ </tr>
34
+ <tr>
35
+ <th>
36
+ <label><?php _e('Log Post Editing Information','wpforo'); ?></label>
37
+ <p class="wpf-info"><?php _e('The post edit logging information "This post was modified 2 hours ago by John" is displayed under modified post content..', 'wpforo') ?></p>
38
+ </th>
39
+ <td>
40
+ <div class="wpf-switch-field">
41
+ <input id="edit_post_1" type="radio" name="wpforo_post_options[edit_post]" value="1" <?php wpfo_check(WPF()->post->options['edit_post'], 1); ?>/><label for="edit_post_1"><?php _e('Enable','wpforo'); ?></label> &nbsp;
42
+ <input id="edit_post_0" type="radio" name="wpforo_post_options[edit_post]" value="0" <?php wpfo_check(WPF()->post->options['edit_post'], 0); ?>/><label for="edit_post_0"><?php _e('Disable','wpforo'); ?></label>
43
+ </div>
44
+ </td>
45
  </tr>
46
  <tr>
47
  <th><label for="topics_per_page"><?php _e('Number of Topics per Page', 'wpforo'); ?> <a href="https://wpforo.com/docs/root/wpforo-settings/topic-post-settings/#item-per-page" title="<?php _e('Read the documentation', 'wpforo') ?>" target="_blank"><i class="far fa-question-circle"></i></a></label></th>
wpf-includes/class-activity.php CHANGED
@@ -96,12 +96,16 @@ class wpForoActivity
96
  private function init_options()
97
  {
98
  $this->options = get_wpf_option('wpforo_activity_options', $this->default->options);
 
 
 
 
99
  }
100
 
101
  private function init_hooks()
102
  {
103
- if ($this->options['edit_topic']) add_action('wpforo_after_edit_topic', array($this, 'action_edit_topic'));
104
- if ($this->options['edit_post']) add_action('wpforo_after_edit_post', array($this, 'action_edit_post'));
105
  }
106
 
107
  private function parse_args($args)
96
  private function init_options()
97
  {
98
  $this->options = get_wpf_option('wpforo_activity_options', $this->default->options);
99
+ //Some options are located in Topic & Posts setting page
100
+ foreach( $this->options as $key => $value ){
101
+ if( wpfkey( WPF()->post->options, $key ) ) $this->options[$key] = WPF()->post->options[$key];
102
+ }
103
  }
104
 
105
  private function init_hooks()
106
  {
107
+ if ( $this->options['edit_topic'] ) add_action('wpforo_after_edit_topic', array($this, 'action_edit_topic'));
108
+ if ( $this->options['edit_post'] ) add_action('wpforo_after_edit_post', array($this, 'action_edit_post'));
109
  }
110
 
111
  private function parse_args($args)
wpf-includes/class-members.php CHANGED
@@ -118,7 +118,7 @@ class wpForoMember{
118
  $this->pass_min_length = apply_filters('wpforo_pass_min_length', $this->pass_min_length);
119
  $this->pass_max_length = apply_filters('wpforo_pass_max_length', $this->pass_max_length);
120
 
121
- if( !empty($user_fields) && is_array($user_fields) && !empty($user_fields['user_pass1']) ){
122
 
123
  remove_action('register_new_user', 'wp_send_new_user_notifications');
124
  add_action('register_new_user', array($this, 'send_new_user_notifications'));
@@ -207,7 +207,7 @@ class wpForoMember{
207
  }
208
  }
209
  }
210
- elseif( !empty($user_fields['user_login']) && !empty($user_fields['user_email']) ){
211
  if( strlen($user_fields['user_login']) < $this->login_min_length || strlen($user_fields['user_login']) > $this->login_max_length ){
212
  WPF()->notice->add( 'Username length must be between %d characters and %d characters.', 'error', array($this->login_min_length, $this->login_max_length) );
213
  return FALSE;
@@ -2648,9 +2648,14 @@ class wpForoMember{
2648
  $fields = apply_filters('wpforo_get_register_fields', $fields);
2649
  foreach( $fields as $kr => $row ){
2650
  foreach( $row as $kc => $cols ){
2651
- foreach( $cols as $field ){
2652
  if( 'user_pass' == $field['name'] ){
2653
- $password = true;
 
 
 
 
 
2654
  }
2655
  }
2656
  }
118
  $this->pass_min_length = apply_filters('wpforo_pass_min_length', $this->pass_min_length);
119
  $this->pass_max_length = apply_filters('wpforo_pass_max_length', $this->pass_max_length);
120
 
121
+ if( !wpforo_feature('user-register-email-confirm') && !empty($user_fields) && is_array($user_fields) && !empty($user_fields['user_pass1']) ){
122
 
123
  remove_action('register_new_user', 'wp_send_new_user_notifications');
124
  add_action('register_new_user', array($this, 'send_new_user_notifications'));
207
  }
208
  }
209
  }
210
+ elseif( wpforo_feature('user-register-email-confirm') && !empty($user_fields['user_login']) && !empty($user_fields['user_email']) ){
211
  if( strlen($user_fields['user_login']) < $this->login_min_length || strlen($user_fields['user_login']) > $this->login_max_length ){
212
  WPF()->notice->add( 'Username length must be between %d characters and %d characters.', 'error', array($this->login_min_length, $this->login_max_length) );
213
  return FALSE;
2648
  $fields = apply_filters('wpforo_get_register_fields', $fields);
2649
  foreach( $fields as $kr => $row ){
2650
  foreach( $row as $kc => $cols ){
2651
+ foreach( $cols as $kf => $field ){
2652
  if( 'user_pass' == $field['name'] ){
2653
+ if( wpforo_feature('user-register-email-confirm') ){
2654
+ unset( $fields[$kr][$kc][$kf] );
2655
+ $password = false;
2656
+ } else {
2657
+ $password = true;
2658
+ }
2659
  }
2660
  }
2661
  }
wpf-includes/class-posts.php CHANGED
@@ -26,6 +26,8 @@ class wpForoPost{
26
  'layout_extended_intro_posts_length' => 50,
27
  'recent_posts_type' => 'topics',
28
  'topics_per_page' => 10,
 
 
29
  'eot_durr' => 300,
30
  'dot_durr' => 300,
31
  'posts_per_page' => 15,
26
  'layout_extended_intro_posts_length' => 50,
27
  'recent_posts_type' => 'topics',
28
  'topics_per_page' => 10,
29
+ 'edit_topic' => 1,
30
+ 'edit_post' => 1,
31
  'eot_durr' => 300,
32
  'dot_durr' => 300,
33
  'posts_per_page' => 15,
wpf-includes/class-template.php CHANGED
@@ -799,7 +799,7 @@ class wpForoTemplate{
799
 
800
  extract($url_data, EXTR_OVERWRITE);
801
 
802
- $lenght = apply_filters( 'wpforo_breadcrumb_text_lenght', 19 );
803
 
804
  switch($template) :
805
  case 'search': ?>
799
 
800
  extract($url_data, EXTR_OVERWRITE);
801
 
802
+ $lenght = apply_filters( 'wpforo_breadcrumb_text_length', 19 );
803
 
804
  switch($template) :
805
  case 'search': ?>
wpf-includes/functions-installation.php CHANGED
@@ -542,6 +542,14 @@ function wpforo_activation(){
542
  @WPF()->db->query( "ALTER TABLE `".WPF()->tables->profiles."` ADD `fields` LONGTEXT" );
543
  }
544
 
 
 
 
 
 
 
 
 
545
  #################################################################
546
  // CHECK Addon Notice /////////////////////////////////////////
547
  $lastHash = get_option('wpforo-addon-note-dismissed');
542
  @WPF()->db->query( "ALTER TABLE `".WPF()->tables->profiles."` ADD `fields` LONGTEXT" );
543
  }
544
 
545
+ #################################################################
546
+ // ADD `fields` field in profiles TABLE //////////////
547
+ $args = array( 'table' => WPF()->tables->phrases, 'col' => 'phrase_key', 'check' => 'col_type' );
548
+ $col_type = strtolower( wpforo_db_check( $args ) );
549
+ if( $col_type != 'text' ){
550
+ @WPF()->db->query( "ALTER TABLE `".WPF()->tables->phrases."` CHANGE `phrase_key` `phrase_key` TEXT;" );
551
+ }
552
+
553
  #################################################################
554
  // CHECK Addon Notice /////////////////////////////////////////
555
  $lastHash = get_option('wpforo-addon-note-dismissed');
wpf-includes/functions-template.php CHANGED
@@ -657,9 +657,10 @@ function wpforo_post_edited($post, $echo = true){
657
  $created = wpforo_date($post['created'], 'd/m/Y g:i a', false);
658
  $modified = wpforo_date($post['modified'], 'd/m/Y g:i a', false);
659
  if( isset($modified) && $created != $modified ){
660
- if($post['is_first_post']){
661
  $edit_html = WPF()->activity->build('topic', $post['topicid'], 'edit_topic');
662
- }else{
 
663
  $edit_html = WPF()->activity->build('post', $post['postid'], 'edit_post');
664
  }
665
  $edit_html = ( $edit_html ) ? sprintf( '<div class="wpf-post-edit-wrap">%s</div>', $edit_html ) : '';
657
  $created = wpforo_date($post['created'], 'd/m/Y g:i a', false);
658
  $modified = wpforo_date($post['modified'], 'd/m/Y g:i a', false);
659
  if( isset($modified) && $created != $modified ){
660
+ if( $post['is_first_post'] && WPF()->activity->options['edit_topic'] ){
661
  $edit_html = WPF()->activity->build('topic', $post['topicid'], 'edit_topic');
662
+ }
663
+ elseif( WPF()->activity->options['edit_post'] ){
664
  $edit_html = WPF()->activity->build('post', $post['postid'], 'edit_post');
665
  }
666
  $edit_html = ( $edit_html ) ? sprintf( '<div class="wpf-post-edit-wrap">%s</div>', $edit_html ) : '';
wpf-includes/install-sql.php CHANGED
@@ -174,7 +174,7 @@
174
  "CREATE TABLE IF NOT EXISTS `".WPF()->tables->phrases."` (
175
  `phraseid` INT UNSIGNED NOT NULL AUTO_INCREMENT,
176
  `langid` INT UNSIGNED NOT NULL,
177
- `phrase_key` VARCHAR(255) NOT NULL,
178
  `phrase_value` text NOT NULL,
179
  `package` VARCHAR(255) NOT NULL DEFAULT 'wpforo',
180
  PRIMARY KEY (`phraseid`),
174
  "CREATE TABLE IF NOT EXISTS `".WPF()->tables->phrases."` (
175
  `phraseid` INT UNSIGNED NOT NULL AUTO_INCREMENT,
176
  `langid` INT UNSIGNED NOT NULL,
177
+ `phrase_key` text NOT NULL,
178
  `phrase_value` text NOT NULL,
179
  `package` VARCHAR(255) NOT NULL DEFAULT 'wpforo',
180
  PRIMARY KEY (`phraseid`),
wpf-includes/integration/ultimate-member.php CHANGED
@@ -3,445 +3,464 @@
3
  // Exit if accessed directly
4
  if ( !defined( 'ABSPATH' ) ) exit;
5
 
6
- if ( false ) {
7
 
8
- function wpforo_um_tab_init(){
9
 
10
- $options = get_option( 'um_options' );
11
 
12
- if( wpfkey($options, 'profile_tab_foro') ||
13
- wpfkey($options, 'log_wpforo_user_reply')
14
- ){
15
- if( !empty( $options ) ){
16
- //Set default options for Tab Settings
17
- $tab_options = array( 'profile_tab_foro' => 1, 'profile_tab_foro_privacy' => 0 );
18
- foreach( $tab_options as $key => $value ) {
19
- if(!isset($options[$key])) $options[$key] = $value;
20
- }
21
- //Set default options for Notification Settings
22
- $notification_options = array();
23
- $notification_options['wpforo_user_reply'] = array(
24
- 'title' => __('User leaves a reply to wpForo topic', 'wpforo'),
25
- 'template' => '<strong>{member}</strong> has <strong>replied</strong> to a topic you started on the forum.',
26
- 'account_desc' => __('When a member replies to one of my forum topics', 'wpforo')
27
- );
28
- $notification_options['wpforo_user_reply_to_reply'] = array(
29
- 'title' => __('User replied to wpForo post', 'wpforo'),
30
- 'template' => '<strong>{member}</strong> has <strong>replied</strong> to your post on the forum.',
31
- 'account_desc' => __('When a member replies to one of my post in forum topics', 'wpforo')
32
- );
33
- foreach( $notification_options as $type => $note ) {
34
- if(!isset($options['log_' . $type])) $options['log_' . $type] = 1;
35
- if(!isset( $options['log_' . $type . '_template'])) $options['log_' . $type . '_template'] = $note['template'];
36
- }
37
- update_option( 'um_options', $options );
38
  }
 
39
  }
40
- }
41
 
42
- add_action('wp_enqueue_scripts', 'wpforo_um_frontend_enqueue');
43
- function wpforo_um_frontend_enqueue(){
44
- if (is_rtl()) {
45
- wp_register_style('wpforo-um-rtl', WPFORO_TEMPLATE_URL . '/integration/ultimate-member/style-rtl.css', false, WPFORO_VERSION );
46
- wp_enqueue_style('wpforo-um-rtl');
47
  }
48
- else{
49
- wp_register_style('wpforo-um', WPFORO_TEMPLATE_URL . '/integration/ultimate-member/style.css', false, WPFORO_VERSION );
50
- wp_enqueue_style('wpforo-um');
51
- }
52
- if(!is_wpforo_page()){
53
- wp_enqueue_style( 'dashicons' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  }
55
- }
56
 
 
57
 
58
- add_filter("um_notifications_core_log_types", "wpforo_um_notification_types", 500, 1);
59
- function wpforo_um_notification_types( $array ){
60
- $array['wpforo_user_reply'] = array(
61
- 'title' => __('User leaves a reply to wpForo topic', 'wpforo'),
62
- 'template' => '<strong>{member}</strong> has <strong>replied</strong> to a topic you started on the forum.',
63
- 'account_desc' => __('When a member replies to one of my forum topics', 'wpforo')
64
- );
65
- $array['wpforo_user_reply_to_reply'] = array(
66
- 'title' => __('User replied to wpForo post', 'wpforo'),
67
- 'template' => '<strong>{member}</strong> has <strong>replied</strong> to your post on the forum.',
68
- 'account_desc' => __('When a member replies to one of my post in forum topics', 'wpforo')
69
- );
70
- return $array;
71
- }
72
 
73
- add_filter('um_notifications_get_icon', 'wpforo_um_notification_icon', 10, 2 );
74
- function wpforo_um_notification_icon( $output, $type ) {
75
- if ( $type == 'wpforo_user_reply' ) {
76
- $output = '<i class="um-faicon-comments" style="color: #43A6DF"></i>';
77
- }
78
- if ( $type == 'wpforo_user_reply_to_reply' ) {
79
- $output = '<i class="um-faicon-comment" style="color: #43A6DF"></i>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
  }
81
- return $output;
82
- }
83
 
84
- add_action( 'wpforo_after_add_post', 'wpforo_um_add_notification', 10, 2 );
85
- function wpforo_um_add_notification( $post = array(), $topic = array() ) {
86
-
87
- if( !wpforo_feature('um_notification') || !class_exists( 'UM_Notifications_API' ) ) return;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
 
89
- //Get reply data
90
- if( !wpfval($post,'postid') ) return;
91
- if( !wpfval($topic,'topicid') ) return;
 
 
 
 
 
 
 
 
 
 
 
 
 
92
 
93
- //Don't notify if a new reply is unapproved
94
- if( wpfval($post,'status') ) return false;
95
- if( wpfval($post, 'is_first_post')) return false;
96
 
97
- //Get author information
98
- $author_id = $post['userid'];
99
- $topic_author_id = $topic['userid'];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
 
101
- // Hierarchical replies
102
- if ( wpfval($post, 'parentid') ) {
103
- $reply_to_item_author_id = wpforo_post( $post['parentid'], 'userid' );
104
  }
105
 
106
- // Notify the topic author if not the current reply author
107
- $has_topic_note = false;
108
- if ( $author_id !== $topic_author_id ) {
109
- $has_topic_note = true;
110
- $vars['photo'] = um_get_avatar_url( get_avatar( get_current_user_id(), 40 ) );
111
- $vars['member'] = wpforo_member( get_current_user_id(), 'display_name');
112
- $vars['notification_uri'] = esc_url_raw( $post['posturl'] );
113
- UM()->Notifications_API()->api()->store_notification( $topic_author_id, 'wpforo_user_reply', $vars );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
  }
115
 
116
- // Notify the immediate reply author if not the current reply author
117
- if ( wpfval($post, 'parentid') && !$has_topic_note && ($topic_author_id !== $reply_to_item_author_id) && ( $author_id !== $reply_to_item_author_id ) ) {
118
- $vars['photo'] = um_get_avatar_url( get_avatar( get_current_user_id(), 40 ) );
119
- $vars['member'] = wpforo_member( get_current_user_id(), 'display_name');
120
- $vars['notification_uri'] = esc_url_raw( $post['posturl'] );
121
- UM()->Notifications_API()->api()->store_notification( $reply_to_item_author_id, 'wpforo_user_reply_to_reply', $vars );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
122
  }
123
- }
124
 
125
- add_action( 'wpforo_post_status_update', 'wpforo_um_notification_on_post_status_change', 10, 2 );
126
- function wpforo_um_notification_on_post_status_change( $reply_id, $status = 0 ) {
127
- if( !$reply_id || !wpforo_feature('bp_notification') ) return;
128
- $post = WPF()->post->get_post($reply_id);
129
- $post['status'] = $status;
130
- $post['posturl'] = WPF()->post->get_post_url( $post['postid'] );
131
- if( wpfval($post,'topicid') ) {
132
- $topic = WPF()->topic->get_topic($post['topicid']);
133
- } else {
134
- return false;
135
- }
136
- if( !$status ){
137
- wpforo_um_add_notification( $post, $topic );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
138
  }
139
- }
140
 
141
- add_filter('um_profile_tabs', 'wpforo_um_tabs', 999 );
142
- function wpforo_um_tabs( $tabs ) {
143
- $user_id = um_user('ID');
144
- if( $user_id && wpforo_feature('um_forum_tab') ){
145
- $member = wpforo_member( $user_id );
146
- $topics = 0; $posts = 0; $likes = 0; $subscriptions = 0;
147
- if( wpfval( $member, 'stat' ) ){
148
- if( wpfval($member, 'stat', 'topics') ) $topics = $member['stat']['topics'];
149
- if( wpfval($member, 'stat', 'posts') ) $posts = $member['stat']['posts'];
150
- if( wpfval($member, 'stat', 'likes') ) $likes = $member['stat']['likes'];
 
 
 
 
 
 
 
 
 
151
  }
152
- $args = array('userid' => $user_id);
153
- $subs = WPF()->sbscrb->get_subscribes( $args);
154
- if( !empty($subs) ) $subscriptions = count($subs);
155
- $tabs['foro'] = array(
156
- 'name' => wpforo_phrase('Forums', false),
157
- 'icon' => 'um-faicon-comments',
158
- 'subnav' => array(
159
- 'topics' => wpforo_phrase('Topics Started', false) . '<span>' . intval($topics) . '</span>',
160
- 'replies' => wpforo_phrase('Replies Created', false) . '<span>' . intval($posts) . '</span>',
161
- 'favorites' => wpforo_phrase('Liked Posts', false) . '<span>' . intval($likes) . '</span>',
162
- 'subscriptions' => wpforo_phrase('Subscriptions', false) . '<span>' . intval($subscriptions) . '</span>',
163
- ),
164
- 'subnav_default' => 'topics'
165
  );
 
166
  }
167
- return $tabs;
168
- }
169
 
170
- add_filter('um_user_profile_tabs', 'wpforo_um_user_tabs', 999 );
171
- function wpforo_um_user_tabs( $tabs ) {
172
- if( wpfval($tabs, 'foro','subnav_default') &&
173
- wpfval($tabs, 'foro', 'subnav', $tabs['foro']['subnav_default'])
174
- ) {
175
- $i = 0;
176
- if ( isset( $tabs['foro']['subnav'] ) ) {
177
- foreach( $tabs['foro']['subnav'] as $id => $data ) {
178
- $i++;
179
- if ( $i == 1 ) {
180
- $tabs['foro']['subnav_default'] = $id;
181
- }
182
- }
183
  }
 
 
 
 
184
  }
185
- return $tabs;
186
- }
187
 
188
- add_action('um_profile_content_foro_default', 'wpforo_um_default_tab_content');
189
- function wpforo_um_default_tab_content( $args ) {
190
- wpforo_um_user_topics( $args );
191
 
192
- }
 
 
193
 
194
- add_action('um_profile_content_foro_topics', 'wpforo_um_user_topics');
195
- function wpforo_um_user_topics( $args ) {
196
- $user_id = um_user('ID');
197
- if(isset($_GET['wpfpaged']) && intval($_GET['wpfpaged'])) $paged = intval($_GET['wpfpaged']);
198
- $paged = (isset($paged) && $paged) ? $paged : 1;
199
- $args = array(
200
- 'offset' => ($paged - 1) * WPF()->post->options['posts_per_page'],
201
- 'row_count' => WPF()->post->options['posts_per_page'],
202
- 'userid' => $user_id,
203
- 'check_private' => true
204
- );
205
- $activities = WPF()->topic->get_topics( $args, $items_count);
206
- ?>
207
- <div id="wpforo-topics" class="wpforo-activity">
208
- <h3 class="wpf-activity-head"><?php wpforo_phrase('Forum Topics Started'); ?></h3>
209
- <?php if(empty($activities)) : ?>
210
- <p class="wpf-p-error"> <?php wpforo_phrase('No activity found for this member.') ?> </p>
211
- <?php else: ?>
212
- <table width="100%" border="0" cellspacing="0" cellpadding="0">
213
- <?php $bg = FALSE; foreach( $activities as $activity ) : ?>
214
- <tr>
215
- <td class="wpf-activity-title">
216
- <span class="dashicons dashicons-admin-comments"></span>
217
- <?php
218
- $topic = wpforo_topic($activity['topicid']);
219
- 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');
220
- ?><a href="<?php echo esc_url($topic_url) ?>" class="wpf-item-title"><?php echo $topic_title ?></a><?php
221
- }
222
- if( wpfval($topic, 'forumid') ){
223
- $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');
224
- ?><p style="font-style: italic"><span><?php echo wpforo_phrase('in forum', false) ?></span> <a href="<?php echo esc_url($forum_url) ?>"><?php echo $forum_title ?></a></p><?php
225
- }
226
- ?>
227
- </td>
228
- <td class="wpf-activity-users">
229
- <?php $members = WPF()->topic->members($topic['topicid'], 3); ?>
230
- <?php if(!empty($members)): foreach( $members as $member ): ?>
231
- <?php if(!empty($member)): ?>
232
- <a href="<?php echo um_user_profile_url($member['ID']) ?>" title="<?php echo esc_attr(um_get_display_name($member['ID'])); ?>"><?php echo WPF()->member->avatar($member, 'alt="'.esc_attr($member['display_name']).'"', 30) ?></a>
233
- <?php endif; ?>
234
- <?php endforeach; endif; ?>
235
- </td>
236
- <td class="wpf-activity-posts">
237
- <?php echo $activity['posts']; ?> <?php wpforo_phrase('posts'); ?>
238
- </td>
239
- <td class="wpf-activity-date"><?php wpforo_date($topic['created']); ?></td>
240
- </tr>
241
- <?php endforeach ?>
242
- </table>
243
- <div class="wpf-activity-foot"><?php WPF()->tpl->pagenavi( $paged, $items_count, false ); ?></div>
244
- <div style="clear: both"></div>
245
- <?php endif; ?>
246
- </div>
247
- <?php
248
 
249
- }
 
 
 
250
 
251
- add_action('um_profile_content_foro_replies', 'wpforo_um_user_replies');
252
- function wpforo_um_user_replies( $args ) {
253
- $user_id = um_user('ID');
254
- if(isset($_GET['wpfpaged']) && intval($_GET['wpfpaged'])) $paged = intval($_GET['wpfpaged']);
255
- $paged = (isset($paged) && $paged) ? $paged : 1;
256
- $args = array(
257
- 'offset' => ($paged - 1) * WPF()->post->options['posts_per_page'],
258
- 'row_count' => WPF()->post->options['posts_per_page'],
259
- 'userid' => $user_id,
260
- 'check_private' => true
261
- );
262
- $activities = WPF()->post->get_posts( $args, $items_count);
263
- ?>
264
- <div id="wpforo-posts" class="wpforo-activity">
265
- <h3 class="wpf-activity-head"><?php wpforo_phrase('Forum Replies Created'); ?></h3>
266
- <?php if(empty($activities)) : ?>
267
- <p class="wpf-p-error"> <?php wpforo_phrase('No activity found for this member.') ?> </p>
268
- <?php else: ?>
269
- <table width="100%" border="0" cellspacing="0" cellpadding="0">
270
- <?php $bg = FALSE; foreach( $activities as $activity ) : ?>
271
- <tr>
272
- <td class="wpf-activity-title">
273
- <span class="dashicons dashicons-format-chat"></span>
274
- <?php
275
- $post = wpforo_post($activity['postid']);
276
- 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');
277
- ?><a href="<?php echo esc_url($post_url) ?>" class="wpf-item-title"><?php echo $post_title ?></a><?php
278
- }
279
- ?>
280
- <?php if(wpfval($post, 'body')): ?>
281
- <p class="wpf-post-excerpt" style="font-style: italic">
282
- <?php
283
- $body = wpforo_content_filter( $post['body'] );
284
- $body = preg_replace('#\[attach\][^\[\]]*\[\/attach\]#is', '', strip_shortcodes(strip_tags($body)));
285
- wpforo_text($body, 200);
286
- ?>
287
- </p>
288
- <?php endif; ?>
289
- </td>
290
- <td class="wpf-activity-forum">
291
- <?php
292
- if( wpfval($post, 'forumid') ){
293
- $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');
294
- ?><p style="font-style: italic"><span><?php echo wpforo_phrase('in forum', false) ?></span> <a href="<?php echo esc_url($forum_url) ?>"><?php echo $forum_title ?></a></p><?php
295
- }
296
- ?>
297
- </td>
298
- <td class="wpf-activity-date"><?php wpforo_date($post['created']); ?></td>
299
- </tr>
300
- <?php endforeach ?>
301
- </table>
302
- <div class="wpf-activity-foot"><?php WPF()->tpl->pagenavi( $paged, $items_count, false ); ?></div>
303
- <div style="clear: both"></div>
304
- <?php endif; ?>
305
- </div>
306
- <?php
307
- }
308
 
309
- add_action('um_profile_content_foro_favorites', 'wpforo_um_user_favorites');
310
- function wpforo_um_user_favorites( $args ) {
311
- $user_id = um_user('ID');
312
- if(isset($_GET['wpfpaged']) && intval($_GET['wpfpaged'])) $paged = intval($_GET['wpfpaged']);
313
- $paged = (isset($paged) && $paged) ? $paged : 1;
314
- $args = array(
315
- 'userid' => $user_id,
316
- 'offset' => ($paged - 1) * WPF()->post->options['posts_per_page'],
317
- 'row_count' => WPF()->post->options['posts_per_page'],
318
- 'var' => 'postid'
319
- );
320
- $activities = WPF()->post->get_liked_posts( $args, $items_count);
321
- ?>
322
- <div id="wpforo-liked-posts" class="wpforo-activity">
323
- <h3 class="wpf-activity-head"><?php wpforo_phrase('Liked Forum Posts'); ?></h3>
324
- <?php if(empty($activities)) : ?>
325
- <p class="wpf-p-error"> <?php wpforo_phrase('No activity found for this member.') ?> </p>
326
- <?php else: ?>
327
- <table width="100%" border="0" cellspacing="0" cellpadding="0">
328
- <?php $bg = FALSE; foreach( $activities as $postid ) : ?>
329
- <tr>
330
- <td class="wpf-activity-title">
331
- <span class="dashicons dashicons-thumbs-up"></span>
332
- <?php
333
- $post = wpforo_post($postid);
334
- 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');
335
- ?><a href="<?php echo esc_url($post_url) ?>" class="wpf-item-title"><?php echo $post_title ?></a><?php
336
- }
337
- ?>
338
- <?php if(wpfval($post, 'body')): ?>
339
- <p class="wpf-post-excerpt" style="font-style: italic">
340
- <?php
341
- $body = wpforo_content_filter( $post['body'] );
342
- $body = preg_replace('#\[attach\][^\[\]]*\[\/attach\]#is', '', strip_shortcodes(strip_tags($body)));
343
- wpforo_text($body, 200);
344
- ?>
345
- </p>
346
- <?php endif; ?>
347
- </td>
348
- <td class="wpf-activity-forum">
349
- <?php
350
- if( wpfval($post, 'forumid') ){
351
- $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');
352
- ?><p style="font-style: italic"><span><?php echo wpforo_phrase('in forum', false) ?></span> <a href="<?php echo esc_url($forum_url) ?>"><?php echo $forum_title ?></a></p><?php
353
- }
354
- ?>
355
- </td>
356
- <td class="wpf-activity-date"><?php wpforo_date($post['created']); ?></td>
357
- </tr>
358
- <?php endforeach ?>
359
- </table>
360
- <div class="wpf-activity-foot"><?php WPF()->tpl->pagenavi( $paged, $items_count, false ); ?></div>
361
- <div style="clear: both"></div>
362
- <?php endif; ?>
363
- </div>
364
- <?php
365
- }
366
 
367
- add_action('um_profile_content_foro_subscriptions', 'wpforo_um_user_subscriptions');
368
- function wpforo_um_user_subscriptions( $args ) {
369
- $user_id = um_user('ID');
370
- if(isset($_GET['wpfpaged']) && intval($_GET['wpfpaged'])) $paged = intval($_GET['wpfpaged']);
371
- $paged = (isset($paged) && $paged) ? $paged : 1;
372
- $args = array(
373
- 'offset' => ($paged - 1) * WPF()->post->options['posts_per_page'],
374
- 'row_count' => WPF()->post->options['posts_per_page'],
375
- 'userid' => $user_id,
376
- 'order' => 'DESC'
377
- );
378
- $activities = WPF()->sbscrb->get_subscribes( $args, $items_count);
379
- ?>
380
- <div id="wpforo-subscriptions" class="wpforo-activity">
381
- <h3 class="wpf-activity-head"><?php wpforo_phrase('Forum Subscriptions'); ?></h3>
382
- <?php if(empty($activities)) : ?>
383
- <p class="wpf-p-error"> <?php wpforo_phrase('No activity found for this member.') ?> </p>
384
- <?php else: ?>
385
- <table width="100%" border="0" cellspacing="0" cellpadding="0">
386
- <?php $bg = FALSE; foreach( $activities as $activity ) : ?>
387
- <tr>
388
- <td class="wpf-activity-title">
389
- <span class="dashicons <?php echo ($activity['type'] == 'forum') ? 'dashicons-category' : 'dashicons-admin-comments' ; ?>"></span>
390
- <?php
391
- if( in_array($activity['type'], array('forum', 'forum-topic')) ){
392
- $item = wpforo_forum($activity['itemid']);
393
- $item_url = $item['url'];
394
- }elseif($activity['type'] == 'topic'){
395
- $item = wpforo_topic($activity['itemid']);
396
- $item_url = $item['url'];
397
- }elseif ( in_array($activity['type'], array('forums', 'forums-topics')) ){
398
- $item = array('title' => wpforo_phrase('All ' . $activity['type'], false));
399
- $item_url = '#';
400
- }
401
- if(empty($item)) continue;
402
- ?>
403
- <a href="<?php echo esc_url($item_url) ?>" class="wpf-item-title"><?php echo esc_html($item['title']) ?></a>
404
- </td>
405
- <td class="wpf-activity-unsb"><a href="<?php echo esc_url(WPF()->sbscrb->get_unsubscribe_link($activity['confirmkey'])) ?>"><?php wpforo_phrase('Unsubscribe'); ?></a></td>
406
- </tr>
407
- <?php endforeach ?>
408
- </table>
409
- <div class="wpf-activity-foot"><?php WPF()->tpl->pagenavi( $paged, $items_count, false ); ?></div>
410
- <div style="clear: both"></div>
411
- <?php endif; ?>
412
- </div>
413
- <?php
414
- }
415
 
416
- wpforo_um_tab_init();
417
-
418
- add_filter( 'wpforo_member_profile_url', 'wpforo_um_profile_url', 10, 3 );
419
- function wpforo_um_profile_url( $url = '', $member = array(), $template = 'profile' ){
420
- if( wpfval($member, 'ID') && wpforo_feature('um_profile') ){
421
- //UM Functions don't work here
422
- //um_fetch_user( $member['ID'] );
423
- //$user_domain = um_user_profile_url();
424
- //Fatal error: Allowed memory size of ### bytes exhausted (tried to allocate #### bytes) in wp-includes\option.php on line 33
425
- $user_domain = get_author_posts_url( $member['ID'] );
426
- $user_domain = strtok( $user_domain, '?');
427
- if( $user_domain ){
428
- if( $template == 'account' ){
429
- //$url = $user_domain . '?profiletab=main&um_action=edit';
430
- $url = $user_domain;
431
- }
432
- elseif( $template == 'activity' ){
433
- //$url = $user_domain . '?profiletab=foro';
434
- $url = $user_domain;
435
- }
436
- elseif( $template == 'subscriptions' ){
437
- //$url = $user_domain . '?profiletab=foro&subnav=subscriptions';
438
- $url = $user_domain;
439
- } else{
440
- $url = $user_domain;
441
- }
442
  }
443
  }
444
- return apply_filters('wpforo_um_member_profile_url', $url, $member, $template);
445
  }
446
 
 
 
447
  }
3
  // Exit if accessed directly
4
  if ( !defined( 'ABSPATH' ) ) exit;
5
 
6
+ if( class_exists('UM') ){
7
 
8
+ class wpForo_UM {
9
 
10
+ private static $instance;
11
 
12
+ static public function instance() {
13
+ if ( is_null( self::$instance ) ) {
14
+ self::$instance = new self();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  }
16
+ return self::$instance;
17
  }
 
18
 
19
+ function __construct() {
20
+ add_action('init', array( $this, 'init' ), 100 );
21
+ add_action('wp_enqueue_scripts', array($this, 'um_frontend_enqueue'), 100 );
 
 
22
  }
23
+
24
+ function init() {
25
+ $this->um_init();
26
+ if( wpforo_feature('um_forum_tab') ){
27
+ add_filter('um_profile_tabs', array($this, 'um_tabs'), 999 );
28
+ add_filter('um_user_profile_tabs', array($this, 'um_user_tabs'), 999 );
29
+ add_action('um_profile_content_foro_default', array($this, 'um_default_tab_content') );
30
+ add_action('um_profile_content_foro_topics', array($this, 'um_user_topics') );
31
+ add_action('um_profile_content_foro_replies', array($this, 'um_user_replies') );
32
+ add_action('um_profile_content_foro_favorites', array($this, 'um_user_favorites') );
33
+ add_action('um_profile_content_foro_subscriptions', array($this, 'um_user_subscriptions') );
34
+ }
35
+ if( wpforo_feature('um_profile') ){
36
+ add_filter('wpforo_member_profile_url', array($this, 'um_profile_url'), 10, 3 );
37
+ }
38
+ if( wpforo_feature('um_notification') && class_exists( 'UM_Notifications_API') ) {
39
+ add_filter('um_notifications_core_log_types', array($this, 'um_notification_types'), 500, 1 );
40
+ add_filter('um_notifications_get_icon', array($this, 'um_notification_icon'), 10, 2 );
41
+ add_action('wpforo_after_add_post', array($this, 'um_add_notification'), 10, 2 );
42
+ add_action('wpforo_post_status_update', array($this, 'um_notification_on_post_status_change'), 10, 2 );
43
+ }
44
  }
 
45
 
46
+ function um_init(){
47
 
48
+ $options = get_option( 'um_options' );
 
 
 
 
 
 
 
 
 
 
 
 
 
49
 
50
+ if( wpfkey($options, 'profile_tab_foro') ||
51
+ wpfkey($options, 'log_wpforo_user_reply')
52
+ ){
53
+ if( !empty( $options ) ){
54
+ //Set default options for Tab Settings
55
+ $tab_options = array( 'profile_tab_foro' => 1, 'profile_tab_foro_privacy' => 0 );
56
+ foreach( $tab_options as $key => $value ) {
57
+ if(!isset($options[$key])) $options[$key] = $value;
58
+ }
59
+ //Set default options for Notification Settings
60
+ $notification_options = array();
61
+ $notification_options['wpforo_user_reply'] = array(
62
+ 'title' => __('User leaves a reply to wpForo topic', 'wpforo'),
63
+ 'template' => '<strong>{member}</strong> has <strong>replied</strong> to a topic you started on the forum.',
64
+ 'account_desc' => __('When a member replies to one of my forum topics', 'wpforo')
65
+ );
66
+ $notification_options['wpforo_user_reply_to_reply'] = array(
67
+ 'title' => __('User replied to wpForo post', 'wpforo'),
68
+ 'template' => '<strong>{member}</strong> has <strong>replied</strong> to your post on the forum.',
69
+ 'account_desc' => __('When a member replies to one of my post in forum topics', 'wpforo')
70
+ );
71
+ foreach( $notification_options as $type => $note ) {
72
+ if(!isset($options['log_' . $type])) $options['log_' . $type] = 1;
73
+ if(!isset( $options['log_' . $type . '_template'])) $options['log_' . $type . '_template'] = $note['template'];
74
+ }
75
+ update_option( 'um_options', $options );
76
+ }
77
+ }
78
  }
 
 
79
 
80
+ function um_tabs( $tabs ) {
81
+ $user_id = um_user('ID');
82
+ if( $user_id ){
83
+ $member = wpforo_member( $user_id );
84
+ $topics = 0; $posts = 0; $likes = 0; $subscriptions = 0;
85
+ if( wpfval( $member, 'stat' ) ){
86
+ if( wpfval($member, 'stat', 'topics') ) $topics = $member['stat']['topics'];
87
+ if( wpfval($member, 'stat', 'posts') ) $posts = $member['stat']['posts'];
88
+ if( wpfval($member, 'stat', 'likes') ) $likes = $member['stat']['likes'];
89
+ }
90
+ $args = array('userid' => $user_id);
91
+ $subs = WPF()->sbscrb->get_subscribes( $args);
92
+ if( !empty($subs) ) $subscriptions = count($subs);
93
+ $tabs['foro'] = array(
94
+ 'name' => wpforo_phrase('Forums', false),
95
+ 'icon' => 'um-faicon-comments',
96
+ 'subnav' => array(
97
+ 'topics' => wpforo_phrase('Topics Started', false) . '<span>' . intval($topics) . '</span>',
98
+ 'replies' => wpforo_phrase('Replies Created', false) . '<span>' . intval($posts) . '</span>',
99
+ 'favorites' => wpforo_phrase('Liked Posts', false) . '<span>' . intval($likes) . '</span>',
100
+ 'subscriptions' => wpforo_phrase('Subscriptions', false) . '<span>' . intval($subscriptions) . '</span>',
101
+ ),
102
+ 'subnav_default' => 'topics'
103
+ );
104
+ }
105
+ return $tabs;
106
+ }
107
 
108
+ function um_user_tabs( $tabs ) {
109
+ if( wpfval($tabs, 'foro','subnav_default') &&
110
+ wpfval($tabs, 'foro', 'subnav', $tabs['foro']['subnav_default'])
111
+ ) {
112
+ $i = 0;
113
+ if ( isset( $tabs['foro']['subnav'] ) ) {
114
+ foreach( $tabs['foro']['subnav'] as $id => $data ) {
115
+ $i++;
116
+ if ( $i == 1 ) {
117
+ $tabs['foro']['subnav_default'] = $id;
118
+ }
119
+ }
120
+ }
121
+ }
122
+ return $tabs;
123
+ }
124
 
125
+ function um_default_tab_content( $args ) {
126
+ $this->um_user_topics( $args );
127
+ }
128
 
129
+ function um_user_topics( $args ) {
130
+ $user_id = um_user('ID');
131
+ if(isset($_GET['wpfpaged']) && intval($_GET['wpfpaged'])) $paged = intval($_GET['wpfpaged']);
132
+ $paged = (isset($paged) && $paged) ? $paged : 1;
133
+ $args = array(
134
+ 'offset' => ($paged - 1) * WPF()->post->options['posts_per_page'],
135
+ 'row_count' => WPF()->post->options['posts_per_page'],
136
+ 'userid' => $user_id,
137
+ 'check_private' => true
138
+ );
139
+ $activities = WPF()->topic->get_topics( $args, $items_count);
140
+ ?>
141
+ <div id="wpforo-topics" class="wpforo-activity">
142
+ <h3 class="wpf-activity-head"><?php wpforo_phrase('Forum Topics Started'); ?></h3>
143
+ <?php if(empty($activities)) : ?>
144
+ <p class="wpf-p-error"> <?php wpforo_phrase('No activity found for this member.') ?> </p>
145
+ <?php else: ?>
146
+ <table width="100%" border="0" cellspacing="0" cellpadding="0">
147
+ <?php $bg = FALSE; foreach( $activities as $activity ) : ?>
148
+ <tr>
149
+ <td class="wpf-activity-title">
150
+ <span class="dashicons dashicons-admin-comments"></span>
151
+ <?php
152
+ $topic = wpforo_topic($activity['topicid']);
153
+ 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');
154
+ ?><a href="<?php echo esc_url($topic_url) ?>" class="wpf-item-title"><?php echo $topic_title ?></a><?php
155
+ }
156
+ if( wpfval($topic, 'forumid') ){
157
+ $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');
158
+ ?><p style="font-style: italic"><span><?php echo wpforo_phrase('in forum', false) ?></span> <a href="<?php echo esc_url($forum_url) ?>"><?php echo $forum_title ?></a></p><?php
159
+ }
160
+ ?>
161
+ </td>
162
+ <td class="wpf-activity-users">
163
+ <?php $members = WPF()->topic->members($topic['topicid'], 3); ?>
164
+ <?php if(!empty($members)): foreach( $members as $member ): ?>
165
+ <?php if(!empty($member)): ?>
166
+ <a href="<?php echo um_user_profile_url($member['ID']) ?>" title="<?php echo esc_attr(um_get_display_name($member['ID'])); ?>"><?php echo WPF()->member->avatar($member, 'alt="'.esc_attr($member['display_name']).'"', 30) ?></a>
167
+ <?php endif; ?>
168
+ <?php endforeach; endif; ?>
169
+ </td>
170
+ <td class="wpf-activity-posts">
171
+ <?php echo $activity['posts']; ?> <?php wpforo_phrase('posts'); ?>
172
+ </td>
173
+ <td class="wpf-activity-date"><?php wpforo_date($topic['created']); ?></td>
174
+ </tr>
175
+ <?php endforeach ?>
176
+ </table>
177
+ <div class="wpf-activity-foot"><?php WPF()->tpl->pagenavi( $paged, $items_count, false ); ?></div>
178
+ <div style="clear: both"></div>
179
+ <?php endif; ?>
180
+ </div>
181
+ <?php
182
 
 
 
 
183
  }
184
 
185
+ function um_user_replies( $args ) {
186
+ $user_id = um_user('ID');
187
+ if(isset($_GET['wpfpaged']) && intval($_GET['wpfpaged'])) $paged = intval($_GET['wpfpaged']);
188
+ $paged = (isset($paged) && $paged) ? $paged : 1;
189
+ $args = array(
190
+ 'offset' => ($paged - 1) * WPF()->post->options['posts_per_page'],
191
+ 'row_count' => WPF()->post->options['posts_per_page'],
192
+ 'userid' => $user_id,
193
+ 'check_private' => true
194
+ );
195
+ $activities = WPF()->post->get_posts( $args, $items_count);
196
+ ?>
197
+ <div id="wpforo-posts" class="wpforo-activity">
198
+ <h3 class="wpf-activity-head"><?php wpforo_phrase('Forum Replies Created'); ?></h3>
199
+ <?php if(empty($activities)) : ?>
200
+ <p class="wpf-p-error"> <?php wpforo_phrase('No activity found for this member.') ?> </p>
201
+ <?php else: ?>
202
+ <table width="100%" border="0" cellspacing="0" cellpadding="0">
203
+ <?php $bg = FALSE; foreach( $activities as $activity ) : ?>
204
+ <tr>
205
+ <td class="wpf-activity-title">
206
+ <span class="dashicons dashicons-format-chat"></span>
207
+ <?php
208
+ $post = wpforo_post($activity['postid']);
209
+ 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');
210
+ ?><a href="<?php echo esc_url($post_url) ?>" class="wpf-item-title"><?php echo $post_title ?></a><?php
211
+ }
212
+ ?>
213
+ <?php if(wpfval($post, 'body')): ?>
214
+ <p class="wpf-post-excerpt" style="font-style: italic">
215
+ <?php
216
+ $body = wpforo_content_filter( $post['body'] );
217
+ $body = preg_replace('#\[attach\][^\[\]]*\[\/attach\]#is', '', strip_shortcodes(strip_tags($body)));
218
+ wpforo_text($body, 200);
219
+ ?>
220
+ </p>
221
+ <?php endif; ?>
222
+ </td>
223
+ <td class="wpf-activity-forum">
224
+ <?php
225
+ if( wpfval($post, 'forumid') ){
226
+ $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');
227
+ ?><p style="font-style: italic"><span><?php echo wpforo_phrase('in forum', false) ?></span> <a href="<?php echo esc_url($forum_url) ?>"><?php echo $forum_title ?></a></p><?php
228
+ }
229
+ ?>
230
+ </td>
231
+ <td class="wpf-activity-date"><?php wpforo_date($post['created']); ?></td>
232
+ </tr>
233
+ <?php endforeach ?>
234
+ </table>
235
+ <div class="wpf-activity-foot"><?php WPF()->tpl->pagenavi( $paged, $items_count, false ); ?></div>
236
+ <div style="clear: both"></div>
237
+ <?php endif; ?>
238
+ </div>
239
+ <?php
240
  }
241
 
242
+ function um_user_favorites( $args ) {
243
+ $user_id = um_user('ID');
244
+ if(isset($_GET['wpfpaged']) && intval($_GET['wpfpaged'])) $paged = intval($_GET['wpfpaged']);
245
+ $paged = (isset($paged) && $paged) ? $paged : 1;
246
+ $args = array(
247
+ 'userid' => $user_id,
248
+ 'offset' => ($paged - 1) * WPF()->post->options['posts_per_page'],
249
+ 'row_count' => WPF()->post->options['posts_per_page'],
250
+ 'var' => 'postid'
251
+ );
252
+ $activities = WPF()->post->get_liked_posts( $args, $items_count);
253
+ ?>
254
+ <div id="wpforo-liked-posts" class="wpforo-activity">
255
+ <h3 class="wpf-activity-head"><?php wpforo_phrase('Liked Forum Posts'); ?></h3>
256
+ <?php if(empty($activities)) : ?>
257
+ <p class="wpf-p-error"> <?php wpforo_phrase('No activity found for this member.') ?> </p>
258
+ <?php else: ?>
259
+ <table width="100%" border="0" cellspacing="0" cellpadding="0">
260
+ <?php $bg = FALSE; foreach( $activities as $postid ) : ?>
261
+ <tr>
262
+ <td class="wpf-activity-title">
263
+ <span class="dashicons dashicons-thumbs-up"></span>
264
+ <?php
265
+ $post = wpforo_post($postid);
266
+ 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');
267
+ ?><a href="<?php echo esc_url($post_url) ?>" class="wpf-item-title"><?php echo $post_title ?></a><?php
268
+ }
269
+ ?>
270
+ <?php if(wpfval($post, 'body')): ?>
271
+ <p class="wpf-post-excerpt" style="font-style: italic">
272
+ <?php
273
+ $body = wpforo_content_filter( $post['body'] );
274
+ $body = preg_replace('#\[attach\][^\[\]]*\[\/attach\]#is', '', strip_shortcodes(strip_tags($body)));
275
+ wpforo_text($body, 200);
276
+ ?>
277
+ </p>
278
+ <?php endif; ?>
279
+ </td>
280
+ <td class="wpf-activity-forum">
281
+ <?php
282
+ if( wpfval($post, 'forumid') ){
283
+ $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');
284
+ ?><p style="font-style: italic"><span><?php echo wpforo_phrase('in forum', false) ?></span> <a href="<?php echo esc_url($forum_url) ?>"><?php echo $forum_title ?></a></p><?php
285
+ }
286
+ ?>
287
+ </td>
288
+ <td class="wpf-activity-date"><?php wpforo_date($post['created']); ?></td>
289
+ </tr>
290
+ <?php endforeach ?>
291
+ </table>
292
+ <div class="wpf-activity-foot"><?php WPF()->tpl->pagenavi( $paged, $items_count, false ); ?></div>
293
+ <div style="clear: both"></div>
294
+ <?php endif; ?>
295
+ </div>
296
+ <?php
297
  }
 
298
 
299
+ function um_user_subscriptions( $args ) {
300
+ $user_id = um_user('ID');
301
+ if(isset($_GET['wpfpaged']) && intval($_GET['wpfpaged'])) $paged = intval($_GET['wpfpaged']);
302
+ $paged = (isset($paged) && $paged) ? $paged : 1;
303
+ $args = array(
304
+ 'offset' => ($paged - 1) * WPF()->post->options['posts_per_page'],
305
+ 'row_count' => WPF()->post->options['posts_per_page'],
306
+ 'userid' => $user_id,
307
+ 'order' => 'DESC'
308
+ );
309
+ $activities = WPF()->sbscrb->get_subscribes( $args, $items_count);
310
+ ?>
311
+ <div id="wpforo-subscriptions" class="wpforo-activity">
312
+ <h3 class="wpf-activity-head"><?php wpforo_phrase('Forum Subscriptions'); ?></h3>
313
+ <?php if(empty($activities)) : ?>
314
+ <p class="wpf-p-error"> <?php wpforo_phrase('No activity found for this member.') ?> </p>
315
+ <?php else: ?>
316
+ <table width="100%" border="0" cellspacing="0" cellpadding="0">
317
+ <?php $bg = FALSE; foreach( $activities as $activity ) : ?>
318
+ <tr>
319
+ <td class="wpf-activity-title">
320
+ <span class="dashicons <?php echo ($activity['type'] == 'forum') ? 'dashicons-category' : 'dashicons-admin-comments' ; ?>"></span>
321
+ <?php
322
+ if( in_array($activity['type'], array('forum', 'forum-topic')) ){
323
+ $item = wpforo_forum($activity['itemid']);
324
+ $item_url = $item['url'];
325
+ }elseif($activity['type'] == 'topic'){
326
+ $item = wpforo_topic($activity['itemid']);
327
+ $item_url = $item['url'];
328
+ }elseif ( in_array($activity['type'], array('forums', 'forums-topics')) ){
329
+ $item = array('title' => wpforo_phrase('All ' . $activity['type'], false));
330
+ $item_url = '#';
331
+ }
332
+ if(empty($item)) continue;
333
+ ?>
334
+ <a href="<?php echo esc_url($item_url) ?>" class="wpf-item-title"><?php echo esc_html($item['title']) ?></a>
335
+ </td>
336
+ <td class="wpf-activity-unsb"><a href="<?php echo esc_url(WPF()->sbscrb->get_unsubscribe_link($activity['confirmkey'])) ?>"><?php wpforo_phrase('Unsubscribe'); ?></a></td>
337
+ </tr>
338
+ <?php endforeach ?>
339
+ </table>
340
+ <div class="wpf-activity-foot"><?php WPF()->tpl->pagenavi( $paged, $items_count, false ); ?></div>
341
+ <div style="clear: both"></div>
342
+ <?php endif; ?>
343
+ </div>
344
+ <?php
345
  }
 
346
 
347
+ function um_profile_url( $url = '', $member = array(), $template = 'profile' ){
348
+ if( wpfval($member, 'ID') ){
349
+ um_fetch_user( $member['ID'] );
350
+ $user_domain = um_user_profile_url();
351
+ $user_domain = ( $user_domain ) ? $user_domain : get_author_posts_url( $member['ID'] );
352
+ $user_domain = strtok( $user_domain, '?');
353
+ if( $user_domain ){
354
+ if( $template == 'account' ){
355
+ $url = $user_domain . '?profiletab=main&um_action=edit';
356
+ }
357
+ elseif( $template == 'activity' ){
358
+ $url = $user_domain . '?profiletab=foro';
359
+ }
360
+ elseif( $template == 'subscriptions' ){
361
+ $url = $user_domain . '?profiletab=foro&subnav=subscriptions';
362
+ } else{
363
+ $url = $user_domain;
364
+ }
365
+ }
366
  }
367
+ return apply_filters('wpforo_um_member_profile_url', $url, $member, $template);
368
+ }
369
+
370
+ function um_notification_types( $array ){
371
+ $array['wpforo_user_reply'] = array(
372
+ 'title' => __('User leaves a reply to wpForo topic', 'wpforo'),
373
+ 'template' => '<strong>{member}</strong> has <strong>replied</strong> to a topic you started on the forum.',
374
+ 'account_desc' => __('When a member replies to one of my forum topics', 'wpforo')
375
+ );
376
+ $array['wpforo_user_reply_to_reply'] = array(
377
+ 'title' => __('User replied to wpForo post', 'wpforo'),
378
+ 'template' => '<strong>{member}</strong> has <strong>replied</strong> to your post on the forum.',
379
+ 'account_desc' => __('When a member replies to one of my post in forum topics', 'wpforo')
380
  );
381
+ return $array;
382
  }
 
 
383
 
384
+ function um_notification_icon( $output, $type ) {
385
+ if ( $type == 'wpforo_user_reply' ) {
386
+ $output = '<i class="um-faicon-comments" style="color: #43A6DF"></i>';
 
 
 
 
 
 
 
 
 
 
387
  }
388
+ if ( $type == 'wpforo_user_reply_to_reply' ) {
389
+ $output = '<i class="um-faicon-comment" style="color: #43A6DF"></i>';
390
+ }
391
+ return $output;
392
  }
 
 
393
 
394
+ function um_add_notification( $post = array(), $topic = array() ) {
 
 
395
 
396
+ //Get reply data
397
+ if( !wpfval($post,'postid') ) return;
398
+ if( !wpfval($topic,'topicid') ) return;
399
 
400
+ //Don't notify if a new reply is unapproved
401
+ if( wpfval($post,'status') ) return false;
402
+ if( wpfval($post, 'is_first_post')) return false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
403
 
404
+ //Get author information
405
+ $author_id = $post['userid'];
406
+ $topic_author_id = $topic['userid'];
407
+ um_fetch_user( get_current_user_id() );
408
 
409
+ // Hierarchical replies
410
+ if ( wpfval($post, 'parentid') ) {
411
+ $reply_to_item_author_id = wpforo_post( $post['parentid'], 'userid' );
412
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
413
 
414
+ // Notify the topic author if not the current reply author
415
+ $has_topic_note = false;
416
+ if ( $author_id !== $topic_author_id ) {
417
+ $has_topic_note = true;
418
+ $vars['photo'] = um_get_avatar_url( get_avatar( get_current_user_id(), 40 ) );
419
+ $vars['member'] = um_user('display_name');
420
+ $vars['notification_uri'] = esc_url_raw( $post['posturl'] );
421
+ UM()->Notifications_API()->api()->store_notification( $topic_author_id, 'wpforo_user_reply', $vars );
422
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
423
 
424
+ // Notify the immediate reply author if not the current reply author
425
+ if ( wpfval($post, 'parentid') && !$has_topic_note && ($topic_author_id !== $reply_to_item_author_id) && ( $author_id !== $reply_to_item_author_id ) ) {
426
+ $vars['photo'] = um_get_avatar_url( get_avatar( get_current_user_id(), 40 ) );
427
+ $vars['member'] = um_user('display_name');
428
+ $vars['notification_uri'] = esc_url_raw( $post['posturl'] );
429
+ UM()->Notifications_API()->api()->store_notification( $reply_to_item_author_id, 'wpforo_user_reply_to_reply', $vars );
430
+ }
431
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
432
 
433
+ function um_notification_on_post_status_change( $reply_id, $status = 0 ) {
434
+ if( !$reply_id || !wpforo_feature('bp_notification') ) return;
435
+ $post = WPF()->post->get_post($reply_id);
436
+ $post['status'] = $status;
437
+ $post['posturl'] = WPF()->post->get_post_url( $post['postid'] );
438
+ if( wpfval($post,'topicid') ) {
439
+ $topic = WPF()->topic->get_topic($post['topicid']);
440
+ } else {
441
+ return false;
442
+ }
443
+ if( !$status ){
444
+ $this->um_add_notification( $post, $topic );
445
+ }
446
+ }
447
+
448
+ function um_frontend_enqueue(){
449
+ if (is_rtl()) {
450
+ wp_register_style('wpforo-um-rtl', WPFORO_TEMPLATE_URL . '/integration/ultimate-member/style-rtl.css', false, WPFORO_VERSION );
451
+ wp_enqueue_style('wpforo-um-rtl');
452
+ }
453
+ else{
454
+ wp_register_style('wpforo-um', WPFORO_TEMPLATE_URL . '/integration/ultimate-member/style.css', false, WPFORO_VERSION );
455
+ wp_enqueue_style('wpforo-um');
456
+ }
457
+ if(!is_wpforo_page()){
458
+ wp_enqueue_style( 'dashicons' );
459
  }
460
  }
461
+
462
  }
463
 
464
+ $WPFUM = new wpForo_UM();
465
+
466
  }
wpf-includes/wpf-phrases.php CHANGED
@@ -746,6 +746,7 @@ $wpforo_phrases = array(
746
  'Split' => __('Split', 'wpforo'),
747
  'Move Reply' => __('Move Reply', 'wpforo'),
748
  'This action changes topic URL. Once the topic is moved to other forum the old URL of this topic will no longer be available.' => __('This action changes topic URL. Once the topic is moved to other forum the old URL of this topic will no longer be available.', 'wpforo'),
 
749
 
750
  //1.5.0
751
  'No data submitted' => __('No data submitted', 'wpforo'),
746
  'Split' => __('Split', 'wpforo'),
747
  'Move Reply' => __('Move Reply', 'wpforo'),
748
  'This action changes topic URL. Once the topic is moved to other forum the old URL of this topic will no longer be available.' => __('This action changes topic URL. Once the topic is moved to other forum the old URL of this topic will no longer be available.', 'wpforo'),
749
+ 'When you login first time using Facebook Login button, we collect your account %s information shared by Facebook, based on your privacy settings. We also get your email address to automatically create a forum account for you. Once your account is created, you\'ll be logged-in to this account and you\'ll receive a confirmation email.' => __('When you login first time using Facebook Login button, we collect your account %s information shared by Facebook, based on your privacy settings. We also get your email address to automatically create a forum account for you. Once your account is created, you\'ll be logged-in to this account and you\'ll receive a confirmation email.', 'wpforo'),
750
 
751
  //1.5.0
752
  'No data submitted' => __('No data submitted', 'wpforo'),
wpf-languages/wpforo.pot CHANGED
@@ -5,7 +5,7 @@ msgid ""
5
  msgstr ""
6
  "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
7
  "Project-Id-Version: Forum - wpForo\n"
8
- "POT-Creation-Date: 2018-07-09 16:16+0300\n"
9
  "PO-Revision-Date: 2016-06-28 21:09+0400\n"
10
  "Last-Translator: \n"
11
  "Language-Team: \n"
@@ -405,10 +405,10 @@ msgstr ""
405
  #: wpf-admin/options-tabs/general.php:58 wpf-admin/options-tabs/general.php:69
406
  #: wpf-admin/options-tabs/members.php:13 wpf-admin/options-tabs/members.php:27
407
  #: wpf-admin/options-tabs/members.php:46 wpf-admin/options-tabs/members.php:87
408
- #: wpf-admin/options-tabs/posts.php:23 wpf-admin/options-tabs/posts.php:28
409
- #: wpf-admin/options-tabs/posts.php:35 wpf-admin/options-tabs/posts.php:41
410
- #: wpf-admin/options-tabs/posts.php:46 wpf-admin/options-tabs/posts.php:53
411
- #: wpf-admin/options-tabs/posts.php:61 wpf-admin/options-tabs/posts.php:77
412
  #: wpf-admin/options-tabs/styles.php:43 wpf-admin/usergroup.php:28
413
  #: wpf-admin/usergroup.php:30 wpf-admin/usergroup.php:243
414
  #: wpf-themes/classic/functions.php:39 wpf-themes/classic/functions.php:48
@@ -666,7 +666,8 @@ msgstr ""
666
  #: wpf-admin/options-tabs/api.php:37 wpf-admin/options-tabs/api.php:49
667
  #: wpf-admin/options-tabs/api.php:60 wpf-admin/options-tabs/api.php:71
668
  #: wpf-admin/options-tabs/api.php:140 wpf-admin/options-tabs/api.php:147
669
- #: wpf-admin/options-tabs/members.php:94 wpf-admin/tools-tabs/legal.php:48
 
670
  #: wpf-admin/tools-tabs/legal.php:60 wpf-admin/tools-tabs/legal.php:82
671
  #: wpf-admin/tools-tabs/legal.php:117 wpf-admin/tools-tabs/legal.php:129
672
  #: wpf-admin/tools-tabs/legal.php:148
@@ -676,7 +677,8 @@ msgstr ""
676
  #: wpf-admin/options-tabs/api.php:38 wpf-admin/options-tabs/api.php:50
677
  #: wpf-admin/options-tabs/api.php:61 wpf-admin/options-tabs/api.php:72
678
  #: wpf-admin/options-tabs/api.php:141 wpf-admin/options-tabs/api.php:148
679
- #: wpf-admin/options-tabs/members.php:95 wpf-admin/tools-tabs/legal.php:49
 
680
  #: wpf-admin/tools-tabs/legal.php:61 wpf-admin/tools-tabs/legal.php:83
681
  #: wpf-admin/tools-tabs/legal.php:118 wpf-admin/tools-tabs/legal.php:130
682
  #: wpf-admin/tools-tabs/legal.php:149
@@ -817,10 +819,10 @@ msgid ""
817
  "and bottom) locations."
818
  msgstr ""
819
 
820
- #: wpf-admin/options-tabs/api.php:245 wpf-admin/options-tabs/emails.php:132
821
  #: wpf-admin/options-tabs/features.php:89 wpf-admin/options-tabs/forums.php:16
822
  #: wpf-admin/options-tabs/general.php:83 wpf-admin/options-tabs/members.php:181
823
- #: wpf-admin/options-tabs/posts.php:88 wpf-admin/options-tabs/styles.php:93
824
  #: wpf-admin/tools-tabs/antispam.php:343 wpf-admin/tools-tabs/cleanup.php:49
825
  #: wpf-admin/tools-tabs/legal.php:179 wpf-admin/tools-tabs/misc.php:134
826
  #: wpf-includes/wpf-phrases.php:344
@@ -856,7 +858,7 @@ msgid ""
856
  msgstr ""
857
 
858
  #: wpf-admin/options-tabs/emails.php:33 wpf-admin/options-tabs/emails.php:45
859
- #: wpf-admin/options-tabs/emails.php:116 wpf-admin/options-tabs/features.php:77
860
  #: wpf-admin/tools-tabs/antispam.php:31 wpf-admin/tools-tabs/antispam.php:40
861
  #: wpf-admin/tools-tabs/antispam.php:49 wpf-admin/tools-tabs/antispam.php:150
862
  #: wpf-admin/tools-tabs/antispam.php:159 wpf-admin/tools-tabs/antispam.php:169
@@ -868,7 +870,7 @@ msgid "Yes"
868
  msgstr ""
869
 
870
  #: wpf-admin/options-tabs/emails.php:34 wpf-admin/options-tabs/emails.php:46
871
- #: wpf-admin/options-tabs/emails.php:117 wpf-admin/options-tabs/features.php:79
872
  #: wpf-admin/tools-tabs/antispam.php:32 wpf-admin/tools-tabs/antispam.php:41
873
  #: wpf-admin/tools-tabs/antispam.php:50 wpf-admin/tools-tabs/antispam.php:151
874
  #: wpf-admin/tools-tabs/antispam.php:160 wpf-admin/tools-tabs/antispam.php:170
@@ -934,30 +936,50 @@ msgid "Report message body"
934
  msgstr ""
935
 
936
  #: wpf-admin/options-tabs/emails.php:97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
937
  msgid "Reset Password Emails"
938
  msgstr ""
939
 
940
- #: wpf-admin/options-tabs/emails.php:98
941
  msgid "This message comes from Reset Password form."
942
  msgstr ""
943
 
944
- #: wpf-admin/options-tabs/emails.php:102
945
  msgid "Reset Password message body"
946
  msgstr ""
947
 
948
- #: wpf-admin/options-tabs/emails.php:107
949
  msgid "User Mentioning Email"
950
  msgstr ""
951
 
952
- #: wpf-admin/options-tabs/emails.php:112
953
  msgid "Enable Email Notification"
954
  msgstr ""
955
 
956
- #: wpf-admin/options-tabs/emails.php:122
957
  msgid "User Mention message subject"
958
  msgstr ""
959
 
960
- #: wpf-admin/options-tabs/emails.php:126
961
  msgid "User Mention message body"
962
  msgstr ""
963
 
@@ -1383,9 +1405,9 @@ msgstr ""
1383
  msgid "Online status timeout"
1384
  msgstr ""
1385
 
1386
- #: wpf-admin/options-tabs/members.php:16 wpf-admin/options-tabs/posts.php:31
1387
- #: wpf-admin/options-tabs/posts.php:38 wpf-admin/options-tabs/posts.php:49
1388
- #: wpf-admin/options-tabs/posts.php:56 wpf-includes/wpf-phrases.php:390
1389
  msgid "minutes"
1390
  msgstr ""
1391
 
@@ -1562,63 +1584,83 @@ msgstr ""
1562
  msgid "Recent Posts Display Type"
1563
  msgstr ""
1564
 
1565
- #: wpf-admin/options-tabs/posts.php:23 wpf-includes/wpf-phrases.php:213
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1566
  msgid "Number of Topics per Page"
1567
  msgstr ""
1568
 
1569
- #: wpf-admin/options-tabs/posts.php:28 wpf-includes/wpf-phrases.php:30
1570
  msgid "Allow Edit Own Topic for"
1571
  msgstr ""
1572
 
1573
- #: wpf-admin/options-tabs/posts.php:29 wpf-admin/options-tabs/posts.php:36
1574
- #: wpf-admin/options-tabs/posts.php:47 wpf-admin/options-tabs/posts.php:54
1575
  msgid "Set this option value 0 if you want to remove time limit."
1576
  msgstr ""
1577
 
1578
- #: wpf-admin/options-tabs/posts.php:35 wpf-includes/wpf-phrases.php:27
1579
  msgid "Allow Delete Own Topic for"
1580
  msgstr ""
1581
 
1582
- #: wpf-admin/options-tabs/posts.php:41 wpf-includes/wpf-phrases.php:212
1583
  msgid "Number of Posts per Page"
1584
  msgstr ""
1585
 
1586
- #: wpf-admin/options-tabs/posts.php:46 wpf-includes/wpf-phrases.php:29
1587
  msgid "Allow Edit Own Post for"
1588
  msgstr ""
1589
 
1590
- #: wpf-admin/options-tabs/posts.php:53 wpf-includes/wpf-phrases.php:28
1591
  msgid "Allow Delete Own post for"
1592
  msgstr ""
1593
 
1594
- #: wpf-admin/options-tabs/posts.php:61 wpf-includes/wpf-phrases.php:169
1595
  msgid "Maximum upload file size"
1596
  msgstr ""
1597
 
1598
- #: wpf-admin/options-tabs/posts.php:62 wpf-includes/wpf-phrases.php:370
1599
  msgid ""
1600
  "You can not set this value more than \"upload_max_filesize\" and "
1601
  "\"post_max_size\". If you want to increase server parameters please contact "
1602
  "to your hosting service support."
1603
  msgstr ""
1604
 
1605
- #: wpf-admin/options-tabs/posts.php:65 wpf-includes/wpf-phrases.php:166
1606
  msgid "MB"
1607
  msgstr ""
1608
 
1609
- #: wpf-admin/options-tabs/posts.php:68 wpf-includes/wpf-phrases.php:288
1610
  msgid "Server \"upload_max_filesize\" is "
1611
  msgstr ""
1612
 
1613
- #: wpf-admin/options-tabs/posts.php:69 wpf-includes/wpf-phrases.php:287
1614
  msgid "Server \"post_max_size\" is "
1615
  msgstr ""
1616
 
1617
- #: wpf-admin/options-tabs/posts.php:77
1618
  msgid "Attachment click - message for non-permitted users"
1619
  msgstr ""
1620
 
1621
- #: wpf-admin/options-tabs/posts.php:78
1622
  msgid ""
1623
  "This message will be displayed when a non-permitted forum member clicks on "
1624
  "attached file link in topic and posts."
@@ -2619,7 +2661,7 @@ msgstr ""
2619
  msgid " Discussion Board"
2620
  msgstr ""
2621
 
2622
- #: wpf-includes/class-posts.php:35
2623
  msgid "You are not permitted to view this attachment"
2624
  msgstr ""
2625
 
@@ -2635,41 +2677,41 @@ msgstr ""
2635
  msgid "Open link in a new tab"
2636
  msgstr ""
2637
 
2638
- #: wpf-includes/class-template.php:1454 wpf-includes/wpf-phrases.php:327
2639
  msgid "Theme file not readable"
2640
  msgstr ""
2641
 
2642
- #: wpf-includes/functions-installation.php:663
2643
  msgid "Start Profile Synchronization"
2644
  msgstr ""
2645
 
2646
- #: wpf-includes/functions-installation.php:663
2647
  msgid "Continue Synchronization"
2648
  msgstr ""
2649
 
2650
- #: wpf-includes/functions-installation.php:666
2651
  msgid ""
2652
  "This process may take a few seconds or dozens of minutes, please be patient "
2653
  "and don't close this page."
2654
  msgstr ""
2655
 
2656
- #: wpf-includes/functions-installation.php:667
2657
  msgid ""
2658
  "You can permanently disable this message in Dashboard > Forums > Features "
2659
  "admin page."
2660
  msgstr ""
2661
 
2662
- #: wpf-includes/functions-installation.php:669
2663
  msgid "wpForo Forum Installation | "
2664
  msgstr ""
2665
 
2666
- #: wpf-includes/functions-installation.php:670
2667
  msgid ""
2668
  "Forum users' profile data are not synchronized yet, this step is required! "
2669
  "Please click the button below to complete installation."
2670
  msgstr ""
2671
 
2672
- #: wpf-includes/functions-installation.php:681
2673
  msgid ""
2674
  "This process may take a few seconds or dozens of minutes, please be patient "
2675
  "and don't close this page. Database backup is not required. If you got 500 "
@@ -2677,15 +2719,15 @@ msgid ""
2677
  "in MySQL server."
2678
  msgstr ""
2679
 
2680
- #: wpf-includes/functions-installation.php:682
2681
  msgid "Updater Database"
2682
  msgstr ""
2683
 
2684
- #: wpf-includes/functions-installation.php:683
2685
  msgid "wpForo - Update Database "
2686
  msgstr ""
2687
 
2688
- #: wpf-includes/functions-installation.php:684
2689
  msgid "Please click the button below to complete wpForo update."
2690
  msgstr ""
2691
 
@@ -2895,15 +2937,15 @@ msgstr ""
2895
  msgid "Search Forums..."
2896
  msgstr ""
2897
 
2898
- #: wpf-includes/integration/buddypress.php:78 wpf-includes/wpf-phrases.php:789
2899
  msgid "Topics Started"
2900
  msgstr ""
2901
 
2902
- #: wpf-includes/integration/buddypress.php:89 wpf-includes/wpf-phrases.php:790
2903
  msgid "Replies Created"
2904
  msgstr ""
2905
 
2906
- #: wpf-includes/integration/buddypress.php:100 wpf-includes/wpf-phrases.php:791
2907
  msgid "Liked Posts"
2908
  msgstr ""
2909
 
@@ -2938,23 +2980,23 @@ msgstr ""
2938
  msgid "You do not have permission to mark notifications for that user."
2939
  msgstr ""
2940
 
2941
- #: wpf-includes/integration/ultimate-member.php:22
2942
- #: wpf-includes/integration/ultimate-member.php:59
2943
  msgid "User leaves a reply to wpForo topic"
2944
  msgstr ""
2945
 
2946
- #: wpf-includes/integration/ultimate-member.php:24
2947
- #: wpf-includes/integration/ultimate-member.php:61
2948
  msgid "When a member replies to one of my forum topics"
2949
  msgstr ""
2950
 
2951
- #: wpf-includes/integration/ultimate-member.php:27
2952
- #: wpf-includes/integration/ultimate-member.php:64
2953
  msgid "User replied to wpForo post"
2954
  msgstr ""
2955
 
2956
- #: wpf-includes/integration/ultimate-member.php:29
2957
- #: wpf-includes/integration/ultimate-member.php:66
2958
  msgid "When a member replies to one of my post in forum topics"
2959
  msgstr ""
2960
 
@@ -4876,7 +4918,7 @@ msgstr ""
4876
  msgid "Done!"
4877
  msgstr ""
4878
 
4879
- #: wpf-includes/wpf-phrases.php:671 wpf-includes/wpf-phrases.php:775
4880
  msgid "You are not allowed to attach this file type"
4881
  msgstr ""
4882
 
@@ -5129,181 +5171,191 @@ msgid ""
5129
  "old URL of this topic will no longer be available."
5130
  msgstr ""
5131
 
5132
- #: wpf-includes/wpf-phrases.php:751
5133
- msgid "No data submitted"
 
 
 
 
 
 
5134
  msgstr ""
5135
 
5136
  #: wpf-includes/wpf-phrases.php:752
5137
- msgid "User profile fields not found"
5138
  msgstr ""
5139
 
5140
  #: wpf-includes/wpf-phrases.php:753
5141
- msgid "field is required"
5142
  msgstr ""
5143
 
5144
  #: wpf-includes/wpf-phrases.php:754
 
 
 
 
5145
  #, php-format
5146
  msgid "field value must be at least %d"
5147
  msgstr ""
5148
 
5149
- #: wpf-includes/wpf-phrases.php:755
5150
  #, php-format
5151
  msgid "field value cannot be greater than %d"
5152
  msgstr ""
5153
 
5154
- #: wpf-includes/wpf-phrases.php:756
5155
  #, php-format
5156
  msgid "field length must be at least %d characters"
5157
  msgstr ""
5158
 
5159
- #: wpf-includes/wpf-phrases.php:757
5160
  #, php-format
5161
  msgid "field length can not be greater than %d characters"
5162
  msgstr ""
5163
 
5164
- #: wpf-includes/wpf-phrases.php:758
5165
  msgid "field value is not a valid URL"
5166
  msgstr ""
5167
 
5168
- #: wpf-includes/wpf-phrases.php:759
5169
  msgid "file type is not detected"
5170
  msgstr ""
5171
 
5172
- #: wpf-includes/wpf-phrases.php:760
5173
  #, php-format
5174
  msgid "file type %s is not allowed"
5175
  msgstr ""
5176
 
5177
- #: wpf-includes/wpf-phrases.php:761
5178
  msgid "file is too large"
5179
  msgstr ""
5180
 
5181
- #: wpf-includes/wpf-phrases.php:762
5182
  msgid "Success! Please check your mail for confirmation."
5183
  msgstr ""
5184
 
5185
- #: wpf-includes/wpf-phrases.php:763
5186
  #, php-format
5187
  msgid "Username length must be between %d characters and %d characters."
5188
  msgstr ""
5189
 
5190
- #: wpf-includes/wpf-phrases.php:764
5191
  msgid "User registration is disabled."
5192
  msgstr ""
5193
 
5194
- #: wpf-includes/wpf-phrases.php:765
5195
  msgid "Avatar image is too big maximum allowed size is 2MB"
5196
  msgstr ""
5197
 
5198
- #: wpf-includes/wpf-phrases.php:766
5199
  msgid "One of the selected Usergroups cannot be set as Secondary"
5200
  msgstr ""
5201
 
5202
- #: wpf-includes/wpf-phrases.php:767
5203
  msgid "The selected Usergroup is not found in allowed list"
5204
  msgstr ""
5205
 
5206
- #: wpf-includes/wpf-phrases.php:768
5207
  msgid "The selected Usergroup cannot be set"
5208
  msgstr ""
5209
 
5210
- #: wpf-includes/wpf-phrases.php:769
5211
  msgid "Admin and Moderator Usergroups are not permitted"
5212
  msgstr ""
5213
 
5214
- #: wpf-includes/wpf-phrases.php:770
5215
  msgid "You have no permission to edit Usergroup field"
5216
  msgstr ""
5217
 
5218
- #: wpf-includes/wpf-phrases.php:771
5219
  msgid "This nickname is already in use. Please insert another."
5220
  msgstr ""
5221
 
5222
- #: wpf-includes/wpf-phrases.php:772
5223
  msgid "Nickname validation failed"
5224
  msgstr ""
5225
 
5226
- #: wpf-includes/wpf-phrases.php:773
5227
  msgid "Numerical nicknames are not allowed. Please insert another."
5228
  msgstr ""
5229
 
5230
- #: wpf-includes/wpf-phrases.php:774
5231
  #, php-format
5232
  msgid "Maximum allowed file size is %s MB"
5233
  msgstr ""
5234
 
5235
- #: wpf-includes/wpf-phrases.php:776
5236
  msgid "This email address is already registered. Please insert another"
5237
  msgstr ""
5238
 
5239
- #: wpf-includes/wpf-phrases.php:777
5240
  #, php-format
5241
  msgid "Allowed file types: %s"
5242
  msgstr ""
5243
 
5244
- #: wpf-includes/wpf-phrases.php:778
5245
  msgid "Form name not found"
5246
  msgstr ""
5247
 
5248
- #: wpf-includes/wpf-phrases.php:779
5249
  msgid "Form template not found"
5250
  msgstr ""
5251
 
5252
- #: wpf-includes/wpf-phrases.php:780
5253
  msgid "Profile updated successfully"
5254
  msgstr ""
5255
 
5256
- #: wpf-includes/wpf-phrases.php:781
5257
  msgid "User data update failed"
5258
  msgstr ""
5259
 
5260
- #: wpf-includes/wpf-phrases.php:782
5261
  msgid "User profile update failed"
5262
  msgstr ""
5263
 
5264
- #: wpf-includes/wpf-phrases.php:783
5265
  msgid "User custom field update failed"
5266
  msgstr ""
5267
 
5268
- #: wpf-includes/wpf-phrases.php:784
5269
  msgid "Sorry, there was an error uploading attached file"
5270
  msgstr ""
5271
 
5272
- #: wpf-includes/wpf-phrases.php:785
5273
  msgid "Edit Topic"
5274
  msgstr ""
5275
 
5276
- #: wpf-includes/wpf-phrases.php:786
5277
  #, php-format
5278
  msgid "This topic was modified %s by %s"
5279
  msgstr ""
5280
 
5281
- #: wpf-includes/wpf-phrases.php:787
5282
  msgid "Edit Post"
5283
  msgstr ""
5284
 
5285
- #: wpf-includes/wpf-phrases.php:788
5286
  #, php-format
5287
  msgid "This post was modified %s by %s"
5288
  msgstr ""
5289
 
5290
- #: wpf-includes/wpf-phrases.php:792
5291
  msgid "Topic link"
5292
  msgstr ""
5293
 
5294
- #: wpf-includes/wpf-phrases.php:793
5295
  msgid "Forum Topics Started"
5296
  msgstr ""
5297
 
5298
- #: wpf-includes/wpf-phrases.php:794
5299
  msgid "Forum Replies Created"
5300
  msgstr ""
5301
 
5302
- #: wpf-includes/wpf-phrases.php:795
5303
  msgid "Liked Forum Posts"
5304
  msgstr ""
5305
 
5306
- #: wpf-includes/wpf-phrases.php:796
5307
  msgid "Forum Subscriptions"
5308
  msgstr ""
5309
 
5
  msgstr ""
6
  "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
7
  "Project-Id-Version: Forum - wpForo\n"
8
+ "POT-Creation-Date: 2018-07-11 17:35+0300\n"
9
  "PO-Revision-Date: 2016-06-28 21:09+0400\n"
10
  "Last-Translator: \n"
11
  "Language-Team: \n"
405
  #: wpf-admin/options-tabs/general.php:58 wpf-admin/options-tabs/general.php:69
406
  #: wpf-admin/options-tabs/members.php:13 wpf-admin/options-tabs/members.php:27
407
  #: wpf-admin/options-tabs/members.php:46 wpf-admin/options-tabs/members.php:87
408
+ #: wpf-admin/options-tabs/posts.php:47 wpf-admin/options-tabs/posts.php:52
409
+ #: wpf-admin/options-tabs/posts.php:59 wpf-admin/options-tabs/posts.php:65
410
+ #: wpf-admin/options-tabs/posts.php:70 wpf-admin/options-tabs/posts.php:77
411
+ #: wpf-admin/options-tabs/posts.php:85 wpf-admin/options-tabs/posts.php:101
412
  #: wpf-admin/options-tabs/styles.php:43 wpf-admin/usergroup.php:28
413
  #: wpf-admin/usergroup.php:30 wpf-admin/usergroup.php:243
414
  #: wpf-themes/classic/functions.php:39 wpf-themes/classic/functions.php:48
666
  #: wpf-admin/options-tabs/api.php:37 wpf-admin/options-tabs/api.php:49
667
  #: wpf-admin/options-tabs/api.php:60 wpf-admin/options-tabs/api.php:71
668
  #: wpf-admin/options-tabs/api.php:140 wpf-admin/options-tabs/api.php:147
669
+ #: wpf-admin/options-tabs/members.php:94 wpf-admin/options-tabs/posts.php:29
670
+ #: wpf-admin/options-tabs/posts.php:41 wpf-admin/tools-tabs/legal.php:48
671
  #: wpf-admin/tools-tabs/legal.php:60 wpf-admin/tools-tabs/legal.php:82
672
  #: wpf-admin/tools-tabs/legal.php:117 wpf-admin/tools-tabs/legal.php:129
673
  #: wpf-admin/tools-tabs/legal.php:148
677
  #: wpf-admin/options-tabs/api.php:38 wpf-admin/options-tabs/api.php:50
678
  #: wpf-admin/options-tabs/api.php:61 wpf-admin/options-tabs/api.php:72
679
  #: wpf-admin/options-tabs/api.php:141 wpf-admin/options-tabs/api.php:148
680
+ #: wpf-admin/options-tabs/members.php:95 wpf-admin/options-tabs/posts.php:30
681
+ #: wpf-admin/options-tabs/posts.php:42 wpf-admin/tools-tabs/legal.php:49
682
  #: wpf-admin/tools-tabs/legal.php:61 wpf-admin/tools-tabs/legal.php:83
683
  #: wpf-admin/tools-tabs/legal.php:118 wpf-admin/tools-tabs/legal.php:130
684
  #: wpf-admin/tools-tabs/legal.php:149
819
  "and bottom) locations."
820
  msgstr ""
821
 
822
+ #: wpf-admin/options-tabs/api.php:245 wpf-admin/options-tabs/emails.php:164
823
  #: wpf-admin/options-tabs/features.php:89 wpf-admin/options-tabs/forums.php:16
824
  #: wpf-admin/options-tabs/general.php:83 wpf-admin/options-tabs/members.php:181
825
+ #: wpf-admin/options-tabs/posts.php:112 wpf-admin/options-tabs/styles.php:93
826
  #: wpf-admin/tools-tabs/antispam.php:343 wpf-admin/tools-tabs/cleanup.php:49
827
  #: wpf-admin/tools-tabs/legal.php:179 wpf-admin/tools-tabs/misc.php:134
828
  #: wpf-includes/wpf-phrases.php:344
858
  msgstr ""
859
 
860
  #: wpf-admin/options-tabs/emails.php:33 wpf-admin/options-tabs/emails.php:45
861
+ #: wpf-admin/options-tabs/emails.php:148 wpf-admin/options-tabs/features.php:77
862
  #: wpf-admin/tools-tabs/antispam.php:31 wpf-admin/tools-tabs/antispam.php:40
863
  #: wpf-admin/tools-tabs/antispam.php:49 wpf-admin/tools-tabs/antispam.php:150
864
  #: wpf-admin/tools-tabs/antispam.php:159 wpf-admin/tools-tabs/antispam.php:169
870
  msgstr ""
871
 
872
  #: wpf-admin/options-tabs/emails.php:34 wpf-admin/options-tabs/emails.php:46
873
+ #: wpf-admin/options-tabs/emails.php:149 wpf-admin/options-tabs/features.php:79
874
  #: wpf-admin/tools-tabs/antispam.php:32 wpf-admin/tools-tabs/antispam.php:41
875
  #: wpf-admin/tools-tabs/antispam.php:50 wpf-admin/tools-tabs/antispam.php:151
876
  #: wpf-admin/tools-tabs/antispam.php:160 wpf-admin/tools-tabs/antispam.php:170
936
  msgstr ""
937
 
938
  #: wpf-admin/options-tabs/emails.php:97
939
+ msgid "New User Registration Email for admins"
940
+ msgstr ""
941
+
942
+ #: wpf-admin/options-tabs/emails.php:98 wpf-admin/options-tabs/emails.php:114
943
+ msgid "This message comes when new user registers to site"
944
+ msgstr ""
945
+
946
+ #: wpf-admin/options-tabs/emails.php:103 wpf-admin/options-tabs/emails.php:119
947
+ msgid "Message Subject"
948
+ msgstr ""
949
+
950
+ #: wpf-admin/options-tabs/emails.php:108 wpf-admin/options-tabs/emails.php:124
951
+ msgid "Message Body"
952
+ msgstr ""
953
+
954
+ #: wpf-admin/options-tabs/emails.php:113
955
+ msgid "New User Registration Email for user"
956
+ msgstr ""
957
+
958
+ #: wpf-admin/options-tabs/emails.php:129
959
  msgid "Reset Password Emails"
960
  msgstr ""
961
 
962
+ #: wpf-admin/options-tabs/emails.php:130
963
  msgid "This message comes from Reset Password form."
964
  msgstr ""
965
 
966
+ #: wpf-admin/options-tabs/emails.php:134
967
  msgid "Reset Password message body"
968
  msgstr ""
969
 
970
+ #: wpf-admin/options-tabs/emails.php:139
971
  msgid "User Mentioning Email"
972
  msgstr ""
973
 
974
+ #: wpf-admin/options-tabs/emails.php:144
975
  msgid "Enable Email Notification"
976
  msgstr ""
977
 
978
+ #: wpf-admin/options-tabs/emails.php:154
979
  msgid "User Mention message subject"
980
  msgstr ""
981
 
982
+ #: wpf-admin/options-tabs/emails.php:158
983
  msgid "User Mention message body"
984
  msgstr ""
985
 
1405
  msgid "Online status timeout"
1406
  msgstr ""
1407
 
1408
+ #: wpf-admin/options-tabs/members.php:16 wpf-admin/options-tabs/posts.php:55
1409
+ #: wpf-admin/options-tabs/posts.php:62 wpf-admin/options-tabs/posts.php:73
1410
+ #: wpf-admin/options-tabs/posts.php:80 wpf-includes/wpf-phrases.php:390
1411
  msgid "minutes"
1412
  msgstr ""
1413
 
1584
  msgid "Recent Posts Display Type"
1585
  msgstr ""
1586
 
1587
+ #: wpf-admin/options-tabs/posts.php:24
1588
+ msgid "Log Topic Editing Information"
1589
+ msgstr ""
1590
+
1591
+ #: wpf-admin/options-tabs/posts.php:25
1592
+ msgid ""
1593
+ "The post edit logging information \"This post was modified 2 hours ago by "
1594
+ "John\" is displayed under modified topic first post content.."
1595
+ msgstr ""
1596
+
1597
+ #: wpf-admin/options-tabs/posts.php:36
1598
+ msgid "Log Post Editing Information"
1599
+ msgstr ""
1600
+
1601
+ #: wpf-admin/options-tabs/posts.php:37
1602
+ msgid ""
1603
+ "The post edit logging information \"This post was modified 2 hours ago by "
1604
+ "John\" is displayed under modified post content.."
1605
+ msgstr ""
1606
+
1607
+ #: wpf-admin/options-tabs/posts.php:47 wpf-includes/wpf-phrases.php:213
1608
  msgid "Number of Topics per Page"
1609
  msgstr ""
1610
 
1611
+ #: wpf-admin/options-tabs/posts.php:52 wpf-includes/wpf-phrases.php:30
1612
  msgid "Allow Edit Own Topic for"
1613
  msgstr ""
1614
 
1615
+ #: wpf-admin/options-tabs/posts.php:53 wpf-admin/options-tabs/posts.php:60
1616
+ #: wpf-admin/options-tabs/posts.php:71 wpf-admin/options-tabs/posts.php:78
1617
  msgid "Set this option value 0 if you want to remove time limit."
1618
  msgstr ""
1619
 
1620
+ #: wpf-admin/options-tabs/posts.php:59 wpf-includes/wpf-phrases.php:27
1621
  msgid "Allow Delete Own Topic for"
1622
  msgstr ""
1623
 
1624
+ #: wpf-admin/options-tabs/posts.php:65 wpf-includes/wpf-phrases.php:212
1625
  msgid "Number of Posts per Page"
1626
  msgstr ""
1627
 
1628
+ #: wpf-admin/options-tabs/posts.php:70 wpf-includes/wpf-phrases.php:29
1629
  msgid "Allow Edit Own Post for"
1630
  msgstr ""
1631
 
1632
+ #: wpf-admin/options-tabs/posts.php:77 wpf-includes/wpf-phrases.php:28
1633
  msgid "Allow Delete Own post for"
1634
  msgstr ""
1635
 
1636
+ #: wpf-admin/options-tabs/posts.php:85 wpf-includes/wpf-phrases.php:169
1637
  msgid "Maximum upload file size"
1638
  msgstr ""
1639
 
1640
+ #: wpf-admin/options-tabs/posts.php:86 wpf-includes/wpf-phrases.php:370
1641
  msgid ""
1642
  "You can not set this value more than \"upload_max_filesize\" and "
1643
  "\"post_max_size\". If you want to increase server parameters please contact "
1644
  "to your hosting service support."
1645
  msgstr ""
1646
 
1647
+ #: wpf-admin/options-tabs/posts.php:89 wpf-includes/wpf-phrases.php:166
1648
  msgid "MB"
1649
  msgstr ""
1650
 
1651
+ #: wpf-admin/options-tabs/posts.php:92 wpf-includes/wpf-phrases.php:288
1652
  msgid "Server \"upload_max_filesize\" is "
1653
  msgstr ""
1654
 
1655
+ #: wpf-admin/options-tabs/posts.php:93 wpf-includes/wpf-phrases.php:287
1656
  msgid "Server \"post_max_size\" is "
1657
  msgstr ""
1658
 
1659
+ #: wpf-admin/options-tabs/posts.php:101
1660
  msgid "Attachment click - message for non-permitted users"
1661
  msgstr ""
1662
 
1663
+ #: wpf-admin/options-tabs/posts.php:102
1664
  msgid ""
1665
  "This message will be displayed when a non-permitted forum member clicks on "
1666
  "attached file link in topic and posts."
2661
  msgid " Discussion Board"
2662
  msgstr ""
2663
 
2664
+ #: wpf-includes/class-posts.php:37
2665
  msgid "You are not permitted to view this attachment"
2666
  msgstr ""
2667
 
2677
  msgid "Open link in a new tab"
2678
  msgstr ""
2679
 
2680
+ #: wpf-includes/class-template.php:1457 wpf-includes/wpf-phrases.php:327
2681
  msgid "Theme file not readable"
2682
  msgstr ""
2683
 
2684
+ #: wpf-includes/functions-installation.php:671
2685
  msgid "Start Profile Synchronization"
2686
  msgstr ""
2687
 
2688
+ #: wpf-includes/functions-installation.php:671
2689
  msgid "Continue Synchronization"
2690
  msgstr ""
2691
 
2692
+ #: wpf-includes/functions-installation.php:674
2693
  msgid ""
2694
  "This process may take a few seconds or dozens of minutes, please be patient "
2695
  "and don't close this page."
2696
  msgstr ""
2697
 
2698
+ #: wpf-includes/functions-installation.php:675
2699
  msgid ""
2700
  "You can permanently disable this message in Dashboard > Forums > Features "
2701
  "admin page."
2702
  msgstr ""
2703
 
2704
+ #: wpf-includes/functions-installation.php:677
2705
  msgid "wpForo Forum Installation | "
2706
  msgstr ""
2707
 
2708
+ #: wpf-includes/functions-installation.php:678
2709
  msgid ""
2710
  "Forum users' profile data are not synchronized yet, this step is required! "
2711
  "Please click the button below to complete installation."
2712
  msgstr ""
2713
 
2714
+ #: wpf-includes/functions-installation.php:689
2715
  msgid ""
2716
  "This process may take a few seconds or dozens of minutes, please be patient "
2717
  "and don't close this page. Database backup is not required. If you got 500 "
2719
  "in MySQL server."
2720
  msgstr ""
2721
 
2722
+ #: wpf-includes/functions-installation.php:690
2723
  msgid "Updater Database"
2724
  msgstr ""
2725
 
2726
+ #: wpf-includes/functions-installation.php:691
2727
  msgid "wpForo - Update Database "
2728
  msgstr ""
2729
 
2730
+ #: wpf-includes/functions-installation.php:692
2731
  msgid "Please click the button below to complete wpForo update."
2732
  msgstr ""
2733
 
2937
  msgid "Search Forums..."
2938
  msgstr ""
2939
 
2940
+ #: wpf-includes/integration/buddypress.php:78 wpf-includes/wpf-phrases.php:790
2941
  msgid "Topics Started"
2942
  msgstr ""
2943
 
2944
+ #: wpf-includes/integration/buddypress.php:89 wpf-includes/wpf-phrases.php:791
2945
  msgid "Replies Created"
2946
  msgstr ""
2947
 
2948
+ #: wpf-includes/integration/buddypress.php:100 wpf-includes/wpf-phrases.php:792
2949
  msgid "Liked Posts"
2950
  msgstr ""
2951
 
2980
  msgid "You do not have permission to mark notifications for that user."
2981
  msgstr ""
2982
 
2983
+ #: wpf-includes/integration/ultimate-member.php:64
2984
+ #: wpf-includes/integration/ultimate-member.php:374
2985
  msgid "User leaves a reply to wpForo topic"
2986
  msgstr ""
2987
 
2988
+ #: wpf-includes/integration/ultimate-member.php:66
2989
+ #: wpf-includes/integration/ultimate-member.php:376
2990
  msgid "When a member replies to one of my forum topics"
2991
  msgstr ""
2992
 
2993
+ #: wpf-includes/integration/ultimate-member.php:69
2994
+ #: wpf-includes/integration/ultimate-member.php:379
2995
  msgid "User replied to wpForo post"
2996
  msgstr ""
2997
 
2998
+ #: wpf-includes/integration/ultimate-member.php:71
2999
+ #: wpf-includes/integration/ultimate-member.php:381
3000
  msgid "When a member replies to one of my post in forum topics"
3001
  msgstr ""
3002
 
4918
  msgid "Done!"
4919
  msgstr ""
4920
 
4921
+ #: wpf-includes/wpf-phrases.php:671 wpf-includes/wpf-phrases.php:776
4922
  msgid "You are not allowed to attach this file type"
4923
  msgstr ""
4924
 
5171
  "old URL of this topic will no longer be available."
5172
  msgstr ""
5173
 
5174
+ #: wpf-includes/wpf-phrases.php:749
5175
+ #, php-format
5176
+ msgid ""
5177
+ "When you login first time using Facebook Login button, we collect your "
5178
+ "account %s information shared by Facebook, based on your privacy settings. "
5179
+ "We also get your email address to automatically create a forum account for "
5180
+ "you. Once your account is created, you'll be logged-in to this account and "
5181
+ "you'll receive a confirmation email."
5182
  msgstr ""
5183
 
5184
  #: wpf-includes/wpf-phrases.php:752
5185
+ msgid "No data submitted"
5186
  msgstr ""
5187
 
5188
  #: wpf-includes/wpf-phrases.php:753
5189
+ msgid "User profile fields not found"
5190
  msgstr ""
5191
 
5192
  #: wpf-includes/wpf-phrases.php:754
5193
+ msgid "field is required"
5194
+ msgstr ""
5195
+
5196
+ #: wpf-includes/wpf-phrases.php:755
5197
  #, php-format
5198
  msgid "field value must be at least %d"
5199
  msgstr ""
5200
 
5201
+ #: wpf-includes/wpf-phrases.php:756
5202
  #, php-format
5203
  msgid "field value cannot be greater than %d"
5204
  msgstr ""
5205
 
5206
+ #: wpf-includes/wpf-phrases.php:757
5207
  #, php-format
5208
  msgid "field length must be at least %d characters"
5209
  msgstr ""
5210
 
5211
+ #: wpf-includes/wpf-phrases.php:758
5212
  #, php-format
5213
  msgid "field length can not be greater than %d characters"
5214
  msgstr ""
5215
 
5216
+ #: wpf-includes/wpf-phrases.php:759
5217
  msgid "field value is not a valid URL"
5218
  msgstr ""
5219
 
5220
+ #: wpf-includes/wpf-phrases.php:760
5221
  msgid "file type is not detected"
5222
  msgstr ""
5223
 
5224
+ #: wpf-includes/wpf-phrases.php:761
5225
  #, php-format
5226
  msgid "file type %s is not allowed"
5227
  msgstr ""
5228
 
5229
+ #: wpf-includes/wpf-phrases.php:762
5230
  msgid "file is too large"
5231
  msgstr ""
5232
 
5233
+ #: wpf-includes/wpf-phrases.php:763
5234
  msgid "Success! Please check your mail for confirmation."
5235
  msgstr ""
5236
 
5237
+ #: wpf-includes/wpf-phrases.php:764
5238
  #, php-format
5239
  msgid "Username length must be between %d characters and %d characters."
5240
  msgstr ""
5241
 
5242
+ #: wpf-includes/wpf-phrases.php:765
5243
  msgid "User registration is disabled."
5244
  msgstr ""
5245
 
5246
+ #: wpf-includes/wpf-phrases.php:766
5247
  msgid "Avatar image is too big maximum allowed size is 2MB"
5248
  msgstr ""
5249
 
5250
+ #: wpf-includes/wpf-phrases.php:767
5251
  msgid "One of the selected Usergroups cannot be set as Secondary"
5252
  msgstr ""
5253
 
5254
+ #: wpf-includes/wpf-phrases.php:768
5255
  msgid "The selected Usergroup is not found in allowed list"
5256
  msgstr ""
5257
 
5258
+ #: wpf-includes/wpf-phrases.php:769
5259
  msgid "The selected Usergroup cannot be set"
5260
  msgstr ""
5261
 
5262
+ #: wpf-includes/wpf-phrases.php:770
5263
  msgid "Admin and Moderator Usergroups are not permitted"
5264
  msgstr ""
5265
 
5266
+ #: wpf-includes/wpf-phrases.php:771
5267
  msgid "You have no permission to edit Usergroup field"
5268
  msgstr ""
5269
 
5270
+ #: wpf-includes/wpf-phrases.php:772
5271
  msgid "This nickname is already in use. Please insert another."
5272
  msgstr ""
5273
 
5274
+ #: wpf-includes/wpf-phrases.php:773
5275
  msgid "Nickname validation failed"
5276
  msgstr ""
5277
 
5278
+ #: wpf-includes/wpf-phrases.php:774
5279
  msgid "Numerical nicknames are not allowed. Please insert another."
5280
  msgstr ""
5281
 
5282
+ #: wpf-includes/wpf-phrases.php:775
5283
  #, php-format
5284
  msgid "Maximum allowed file size is %s MB"
5285
  msgstr ""
5286
 
5287
+ #: wpf-includes/wpf-phrases.php:777
5288
  msgid "This email address is already registered. Please insert another"
5289
  msgstr ""
5290
 
5291
+ #: wpf-includes/wpf-phrases.php:778
5292
  #, php-format
5293
  msgid "Allowed file types: %s"
5294
  msgstr ""
5295
 
5296
+ #: wpf-includes/wpf-phrases.php:779
5297
  msgid "Form name not found"
5298
  msgstr ""
5299
 
5300
+ #: wpf-includes/wpf-phrases.php:780
5301
  msgid "Form template not found"
5302
  msgstr ""
5303
 
5304
+ #: wpf-includes/wpf-phrases.php:781
5305
  msgid "Profile updated successfully"
5306
  msgstr ""
5307
 
5308
+ #: wpf-includes/wpf-phrases.php:782
5309
  msgid "User data update failed"
5310
  msgstr ""
5311
 
5312
+ #: wpf-includes/wpf-phrases.php:783
5313
  msgid "User profile update failed"
5314
  msgstr ""
5315
 
5316
+ #: wpf-includes/wpf-phrases.php:784
5317
  msgid "User custom field update failed"
5318
  msgstr ""
5319
 
5320
+ #: wpf-includes/wpf-phrases.php:785
5321
  msgid "Sorry, there was an error uploading attached file"
5322
  msgstr ""
5323
 
5324
+ #: wpf-includes/wpf-phrases.php:786
5325
  msgid "Edit Topic"
5326
  msgstr ""
5327
 
5328
+ #: wpf-includes/wpf-phrases.php:787
5329
  #, php-format
5330
  msgid "This topic was modified %s by %s"
5331
  msgstr ""
5332
 
5333
+ #: wpf-includes/wpf-phrases.php:788
5334
  msgid "Edit Post"
5335
  msgstr ""
5336
 
5337
+ #: wpf-includes/wpf-phrases.php:789
5338
  #, php-format
5339
  msgid "This post was modified %s by %s"
5340
  msgstr ""
5341
 
5342
+ #: wpf-includes/wpf-phrases.php:793
5343
  msgid "Topic link"
5344
  msgstr ""
5345
 
5346
+ #: wpf-includes/wpf-phrases.php:794
5347
  msgid "Forum Topics Started"
5348
  msgstr ""
5349
 
5350
+ #: wpf-includes/wpf-phrases.php:795
5351
  msgid "Forum Replies Created"
5352
  msgstr ""
5353
 
5354
+ #: wpf-includes/wpf-phrases.php:796
5355
  msgid "Liked Forum Posts"
5356
  msgstr ""
5357
 
5358
+ #: wpf-includes/wpf-phrases.php:797
5359
  msgid "Forum Subscriptions"
5360
  msgstr ""
5361
 
wpforo.php CHANGED
@@ -5,14 +5,14 @@
5
  * Description: WordPress Forum plugin. wpForo is a full-fledged forum solution for your community. Comes with multiple modern forum layouts.
6
  * Author: gVectors Team (A. Chakhoyan, R. Hovhannisyan)
7
  * Author URI: https://gvectors.com/
8
- * Version: 1.5.0
9
  * Text Domain: wpforo
10
  * Domain Path: /wpf-languages
11
  */
12
 
13
  //Exit if accessed directly
14
  if( !defined( 'ABSPATH' ) ) exit;
15
- if( !defined( 'WPFORO_VERSION' ) ) define('WPFORO_VERSION', '1.5.0');
16
 
17
  function wpforo_load_plugin_textdomain() { load_plugin_textdomain( 'wpforo', FALSE, basename( dirname( __FILE__ ) ) . '/wpf-languages/' ); }
18
  add_action( 'plugins_loaded', 'wpforo_load_plugin_textdomain' );
@@ -264,7 +264,7 @@ if( !class_exists( 'wpForo' ) ) {
264
  'user-register-email-confirm' => 1,
265
  'register-url' => 0,
266
  'login-url' => 0,
267
- 'resetpass-url' => 0, //In most cases incompatible with security and antispam plugins
268
  'replace-avatar' => 1,
269
  'avatars' => 1,
270
  'custom-avatars' => 1,
@@ -285,8 +285,8 @@ if( !class_exists( 'wpForo' ) ) {
285
  'bp_notification' => 1,
286
  'bp_forum_tab' => 1,
287
  'um_profile' => 0,
288
- 'um_forum_tab' => 0,
289
- 'um_notification' => 0,
290
  'user-synch' => 0,
291
  'role-synch' => 1,
292
  'output-buffer' => 1,
5
  * Description: WordPress Forum plugin. wpForo is a full-fledged forum solution for your community. Comes with multiple modern forum layouts.
6
  * Author: gVectors Team (A. Chakhoyan, R. Hovhannisyan)
7
  * Author URI: https://gvectors.com/
8
+ * Version: 1.5.1
9
  * Text Domain: wpforo
10
  * Domain Path: /wpf-languages
11
  */
12
 
13
  //Exit if accessed directly
14
  if( !defined( 'ABSPATH' ) ) exit;
15
+ if( !defined( 'WPFORO_VERSION' ) ) define('WPFORO_VERSION', '1.5.1');
16
 
17
  function wpforo_load_plugin_textdomain() { load_plugin_textdomain( 'wpforo', FALSE, basename( dirname( __FILE__ ) ) . '/wpf-languages/' ); }
18
  add_action( 'plugins_loaded', 'wpforo_load_plugin_textdomain' );
264
  'user-register-email-confirm' => 1,
265
  'register-url' => 0,
266
  'login-url' => 0,
267
+ 'resetpass-url' => 1, //In most cases incompatible with security and antispam plugins
268
  'replace-avatar' => 1,
269
  'avatars' => 1,
270
  'custom-avatars' => 1,
285
  'bp_notification' => 1,
286
  'bp_forum_tab' => 1,
287
  'um_profile' => 0,
288
+ 'um_forum_tab' => 1,
289
+ 'um_notification' => 1,
290
  'user-synch' => 0,
291
  'role-synch' => 1,
292
  'output-buffer' => 1,