wpForo Forum - Version beta-4

Version Description

Download this release

Release Info

Developer Tomdever
Plugin Icon 128x128 wpForo Forum
Version beta-4
Comparing to
See all releases

Code changes from version beta-3 to beta-4

Files changed (56) hide show
  1. readme.txt +31 -7
  2. wpf-admin/forum.php +1 -3
  3. wpf-admin/options-tabs/features.php +1 -0
  4. wpf-admin/options-tabs/styles.php +31 -4
  5. wpf-assets/js/frontend.js +0 -6
  6. wpf-assets/js/tinymce-code.js +67 -0
  7. wpf-assets/js/tinymce-link.js +408 -0
  8. wpf-includes/class-forums.php +2 -2
  9. wpf-includes/class-members.php +7 -21
  10. wpf-includes/class-posts.php +11 -3
  11. wpf-includes/class-template.php +23 -5
  12. wpf-includes/functions-installation.php +52 -32
  13. wpf-includes/functions-template.php +91 -7
  14. wpf-includes/functions.php +10 -1
  15. wpf-includes/wpf-actions.php +2 -2
  16. wpf-includes/wpf-hooks.php +31 -2
  17. wpf-includes/wpf-phrases.php +4 -0
  18. wpf-languages/wpforo-cs_CZ.mo +0 -0
  19. wpf-languages/wpforo-cs_CZ.po +2377 -2322
  20. wpf-languages/wpforo-da_DK.mo +0 -0
  21. wpf-languages/wpforo-da_DK.po +0 -2322
  22. wpf-languages/wpforo-de_AT.mo +0 -0
  23. wpf-languages/wpforo-de_AT.po +0 -2322
  24. wpf-languages/wpforo-de_CH.mo +0 -0
  25. wpf-languages/wpforo-de_DE.mo +0 -0
  26. wpf-languages/wpforo-de_DE.po +0 -2322
  27. wpf-languages/wpforo-es_ES.mo +0 -0
  28. wpf-languages/wpforo-es_ES.po +0 -2322
  29. wpf-languages/wpforo-fr_FR.mo +0 -0
  30. wpf-languages/wpforo-fr_FR.po +0 -2322
  31. wpf-languages/wpforo-he_IL.mo +0 -0
  32. wpf-languages/wpforo-he_IL.po +0 -2322
  33. wpf-languages/wpforo-hy_AM.mo +0 -0
  34. wpf-languages/wpforo-hy_AM.po +0 -2322
  35. wpf-languages/wpforo-ko_KR.mo +0 -0
  36. wpf-languages/{wpforo-de_CH.po → wpforo-ko_KR.po} +604 -527
  37. wpf-languages/wpforo-nl_NL.mo +0 -0
  38. wpf-languages/wpforo-nl_NL.po +0 -2322
  39. wpf-languages/wpforo-pl_PL.mo +0 -0
  40. wpf-languages/wpforo-pl_PL.po +0 -2323
  41. wpf-languages/wpforo-ro_RO.mo +0 -0
  42. wpf-languages/wpforo-ro_RO.po +0 -2323
  43. wpf-languages/wpforo-ru_RU.mo +0 -0
  44. wpf-languages/wpforo-ru_RU.po +580 -568
  45. wpf-themes/classic/colors.css +8 -0
  46. wpf-themes/classic/layouts/1/forum.php +8 -5
  47. wpf-themes/classic/layouts/1/post.php +1 -1
  48. wpf-themes/classic/layouts/2/forum.php +4 -2
  49. wpf-themes/classic/layouts/2/post.php +1 -1
  50. wpf-themes/classic/layouts/3/forum.php +4 -1
  51. wpf-themes/classic/layouts/3/post.php +1 -1
  52. wpf-themes/classic/profile-home.php +17 -9
  53. wpf-themes/classic/register.php +5 -1
  54. wpf-themes/classic/style-rtl.css +4 -1
  55. wpf-themes/classic/style.css +5 -2
  56. wpforo.php +12 -7
readme.txt CHANGED
@@ -2,17 +2,17 @@
2
Contributors: gVectors Team
3
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Y4YBFBNBV3R2E
4
Tags: forum, community, discussion, bulletin board, question and answers, qa, support, foro
5
- Requires at least: 4.4
6
Tested up to: 4.5
7
- Stable tag: beta-3
8
License: GPLv2 or later
9
License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
11
- WordPress forum plugin. Everything you need to run an efficient and professional community. Powerful and beautiful bulletin board with unique features
12
13
== Description ==
14
15
- New Generation of WordPress forum plugins. Everything you need to run an efficient and professional community. Powerful and beautiful bulletin board with unique features.
16
17
<blockquote>
18
It's on the Beta stage and we're working hard to reach the Gold 1.0.0 version as soon as possible. If you found some issue or bug please open a support topic in plugin page or in our support forum: http://wpforo.com/community/.
@@ -106,8 +106,11 @@ You can download [Go2wpForo](http://wpforo.com/community/migrate-to-wpforo-from-
106
107
6. **Forum Style & Colors:** In Dashboard > Settings > Styles admin page you can set forum Style/Colors. You can choose either "Default (Blue)", "Red", "Green", "Orange", "Grey".
108
109
- 7. **Login and Registration** In Dashboard > Settings > Features admin page you can force WP to use wpForo Login and Register pages or keep default WordPress pages. For custom Login/Register/Lostpassword Pages please navigate to Members Tab and use "Custom Authorization URLs" option.
110
111
112
wpForo Support Forum: <http://wpforo.com/community/>
113
@@ -133,6 +136,29 @@ wpForo Support Forum: <http://wpforo.com/community/>
133
134
== Changelog ==
135
136
= Beta-3 | 30.06.2016 =
137
138
* Added: POT Translation file. wpForo can be translated with mo/po
@@ -144,8 +170,6 @@ wpForo Support Forum: <http://wpforo.com/community/>
144
* Fixed Bug: Note/Login/Register Pop-up on mobile screens
145
* Fixed Bug: QA Layout isAnswer and Profile Badges on mobile screens
146
147
- NOTE! Make sure you've deleted all caches after updating this plugin
148
-
149
150
= Beta-2 | 28.06.2016 =
151
2
Contributors: gVectors Team
3
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Y4YBFBNBV3R2E
4
Tags: forum, community, discussion, bulletin board, question and answers, qa, support, foro
5
+ Requires at least: 4.2
6
Tested up to: 4.5
7
+ Stable tag: beta-4
8
License: GPLv2 or later
9
License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
11
+ New Forum plugin. Everything you need to run an efficient and professional community. Powerful and beautiful bulletin board with unique features
12
13
== Description ==
14
15
+ New Generation of WordPress forum plugins made by [gVectors Team](http://gvectors.com/). Everything you need to run an efficient and professional community. Powerful and beautiful bulletin board with unique features.
16
17
<blockquote>
18
It's on the Beta stage and we're working hard to reach the Gold 1.0.0 version as soon as possible. If you found some issue or bug please open a support topic in plugin page or in our support forum: http://wpforo.com/community/.
106
107
6. **Forum Style & Colors:** In Dashboard > Settings > Styles admin page you can set forum Style/Colors. You can choose either "Default (Blue)", "Red", "Green", "Orange", "Grey".
108
109
+ 7. **Login and Registration** In Forums > Settings > Features admin page you can force WP to use wpForo Login and Register pages or keep default WordPress pages. For custom Login/Register/Lostpassword Pages please navigate to Members Tab and use "Custom Authorization URLs" option.
110
111
+ 8. **Forum is loaded on website top:** In this case you should navigate to Forums > Settings > Features admin page and check "Enable Output Buffer" option.
112
+
113
+ 9. **Forums don't show up on the main page** Please read this FAQ topic: http://wpforo.com/community/faq/forums-dont-show-up-on-the-main-page/
114
115
wpForo Support Forum: <http://wpforo.com/community/>
116
136
137
== Changelog ==
138
139
+ = Beta-4 | 09.07.2016 =
140
+
141
+ * Added: Supports WordPress default emoticons
142
+ * Added: Automatic image URL to image conversion in post content (image auto-embed)
143
+ * Added: View HTML source button on TiniMCE post editor
144
+ * Added: Profile Social Network URLs and Skype links
145
+ * Added: Last post link, date, author name for Intro Topics - Extended & QA Layouts
146
+ * Added: Options to set Forum, Topic and Post Content font size
147
+ * Added: Options to add custom CSS code
148
+ * Added: Russian (ru_RU) translation, many thanks to Dmitry Butkevich (WPNICE.RU)
149
+ * Added: Korean (ko_KO) translation, many thanks to Jeehwan Song
150
+ * Added: Czech (cs_CZ) translation, many thanks to Glados (The Witcher)
151
+ * Fixed Bug: Topic and Post layout don't changed after changing forum parent category
152
+ * Fixed Bug: Problem with https and www. websites
153
+ * Fixed Bug: Forums and Topics don't show up on the main page.
154
+ * Fixed Bug: Proble with post quote, HTML content.
155
+ * Fixed Bug: Problem with "Online Members" widget
156
+ * Fixed Bug: Before and after [wpforo-index] content.
157
+ * Fixed Bug: Forum is loaded on top of website, before theme header. We've added an option "Enable Output Buffer". This feature is useful if you're adding content before or after [wpforo-index] shortcode in page content. Also it useful if you see forum is loaded before website template, on top of front-end.
158
+
159
+ NOTE! Make sure you've deleted all caches after updating this plugin
160
+
161
+
162
= Beta-3 | 30.06.2016 =
163
164
* Added: POT Translation file. wpForo can be translated with mo/po
170
* Fixed Bug: Note/Login/Register Pop-up on mobile screens
171
* Fixed Bug: QA Layout isAnswer and Profile Badges on mobile screens
172
173
174
= Beta-2 | 28.06.2016 =
175
wpf-admin/forum.php CHANGED
@@ -129,9 +129,7 @@
129
<?php $layouts = $wpforo->tpl->find_layouts( WPFORO_THEME ); ?>
130
<?php if(!empty($layouts)): ?>
131
<select id="cat_layout" name="forum[cat_layout]" class="postform" <?php $data['cat_layout'] = ( isset($data['cat_layout']) ? $data['cat_layout'] : 1 ); echo ( isset($data['is_cat']) && $data['is_cat'] == 1 ? '' : 'disabled="TRUE"' ); ?> >
132
- <?php foreach( $layouts as $layout ): ?>
133
- <option value="<?php echo esc_attr(trim($layout['id'])) ?>" <?php echo ( $data['cat_layout'] == $layout['id'] ? 'selected' : '' ); ?> ><?php echo esc_html($layout['name']) ?></option>
134
- <?php endforeach; ?>
135
</select>
136
<?php else: ?>
137
<p><?php _e('No layout found.', 'wpforo'); ?></p>
129
<?php $layouts = $wpforo->tpl->find_layouts( WPFORO_THEME ); ?>
130
<?php if(!empty($layouts)): ?>
131
<select id="cat_layout" name="forum[cat_layout]" class="postform" <?php $data['cat_layout'] = ( isset($data['cat_layout']) ? $data['cat_layout'] : 1 ); echo ( isset($data['is_cat']) && $data['is_cat'] == 1 ? '' : 'disabled="TRUE"' ); ?> >
132
+ <?php $wpforo->tpl->show_layout_selectbox($data['cat_layout']); ?>
133
</select>
134
<?php else: ?>
135
<p><?php _e('No layout found.', 'wpforo'); ?></p>
wpf-admin/options-tabs/features.php CHANGED
@@ -26,6 +26,7 @@ $options = array(
26
'seo-title' => array( 'label' => __('Enable wpForo SEO for Meta Titles', 'wpforo'), 'type' => '', 'required' => '', 'value' => 1),
27
'seo-meta' => array( 'label' => __('Enable wpForo SEO for Meta Tags', 'wpforo'), 'type' => '', 'required' => '', 'value' => 1),
28
'font-awesome' => array( 'label' => __('Enable wpForo Font-Awesome Lib', 'wpforo'), 'type' => '', 'required' => '', 'value' => 1),
29
'copyright' => array( 'label' => __('Help wpForo to grow, show plugin info', 'wpforo'), 'type' => '', 'required' => '', 'value' => 1, 'description' => __('Please enable this option to help wpForo get more popularity as your thank to the hard work we do for you totally free. This option adds a very small icon in forum footer, which will allow your site visitors recognize the name of forum solution you use.', 'wpforo')),
30
);
31
26
'seo-title' => array( 'label' => __('Enable wpForo SEO for Meta Titles', 'wpforo'), 'type' => '', 'required' => '', 'value' => 1),
27
'seo-meta' => array( 'label' => __('Enable wpForo SEO for Meta Tags', 'wpforo'), 'type' => '', 'required' => '', 'value' => 1),
28
'font-awesome' => array( 'label' => __('Enable wpForo Font-Awesome Lib', 'wpforo'), 'type' => '', 'required' => '', 'value' => 1),
29
+ 'output-buffer' => array( 'label' => __('Enable Output Buffer', 'wpforo'), 'type' => '', 'required' => '', 'value' => 1, 'description' => __('This feature is useful if you\'re adding content before or after [wpforo-index] shortcode in page content. Also it useful if forum is loaded before website header, on top of the front-end.', 'wpforo')),
30
'copyright' => array( 'label' => __('Help wpForo to grow, show plugin info', 'wpforo'), 'type' => '', 'required' => '', 'value' => 1, 'description' => __('Please enable this option to help wpForo get more popularity as your thank to the hard work we do for you totally free. This option adds a very small icon in forum footer, which will allow your site visitors recognize the name of forum solution you use.', 'wpforo')),
31
);
32
wpf-admin/options-tabs/styles.php CHANGED
@@ -7,14 +7,41 @@
7
8
<form action="" method="POST" class="validate">
9
<?php wp_nonce_field( 'wpforo-settings-styles' ); ?>
10
- <table style="width:2%; border:none; padding:5px; float:left;">
11
<tbody>
12
- <tr class="form-field form-required">
13
- <td class="wpf-dw-td-value-p">&nbsp;</td>
14
</tr>
15
</tbody>
16
</table>
17
- <table style="width:95%; border:none; padding:5px; float:left; margin-left:10px;">
18
<tbody>
19
<tr class="form-field form-required">
20
<td class="wpf-dw-td-value-p">
7
8
<form action="" method="POST" class="validate">
9
<?php wp_nonce_field( 'wpforo-settings-styles' ); ?>
10
+ <table class="wpforo_settings_table">
11
<tbody>
12
+ <tr>
13
+ <th style="width:30%;"><label><?php _e('Font Sizes', 'wpforo'); ?>:</label></th>
14
+ <td>
15
+ <label style="display:inline-block; text-align:center; font-size:14px;">
16
+ <span><?php _e('Forums','wpforo'); ?>:</span>
17
+ <select name="wpforo_style_options[font_size_forum]" style="min-width:80px;">
18
+ <?php for( $a=11; $a < 28; $a++ ): ?><option value="<?php echo intval($a) ?>" <?php wpfo_check( $wpforo->style_options['font_size_forum'], $a, 'selected') ?>><?php echo intval($a); ?>px</option><?php endfor; ?>
19
+ </select>
20
+ </label> &nbsp;
21
+ <label style="display:inline-block; text-align:center; font-size:14px;">
22
+ <span><?php _e('Topics','wpforo'); ?>:</span>
23
+ <select name="wpforo_style_options[font_size_topic]" style="min-width:80px;">
24
+ <?php for( $a=11; $a < 28; $a++ ): ?><option value="<?php echo intval($a) ?>" <?php wpfo_check( $wpforo->style_options['font_size_topic'], $a, 'selected') ?>><?php echo intval($a); ?>px</option><?php endfor; ?>
25
+ </select>
26
+ </label> &nbsp;
27
+ <label style="display:inline-block; text-align:center; font-size:14px;">
28
+ <span><?php _e('Post Content','wpforo'); ?>:</span>
29
+ <select name="wpforo_style_options[font_size_post_content]" style="min-width:80px;">
30
+ <?php for( $a=11; $a < 28; $a++ ): ?><option value="<?php echo intval($a) ?>" <?php wpfo_check( $wpforo->style_options['font_size_post_content'], $a, 'selected') ?>><?php echo intval($a); ?>px</option><?php endfor; ?>
31
+ </select>
32
+ </label>
33
+ </td>
34
+ </tr>
35
+ <tr>
36
+ <th style="width:30%;"><label><?php _e('Custom CSS Code', 'wpforo'); ?>:</label></th>
37
+ <td>
38
+ <textarea name="wpforo_style_options[custom_css]" style="width:90%; height:130px; font-family:Consolas, 'Andale Mono', 'Lucida Console'; color:#666666; background:#fdfdfd;"><?php echo esc_textarea($wpforo->style_options['custom_css']); ?></textarea>
39
+ </td>
40
</tr>
41
</tbody>
42
</table>
43
+ <h3 style="margin:0px 20px 0px 20px; padding:10px 0px; border-bottom:3px solid #F5F5F5;"><?php _e('Forum Color Styles', 'wpforo'); ?></h3>
44
+ <table style="width:95%; border:none; padding:5px; margin-left:10px; margin-top:15px;">
45
<tbody>
46
<tr class="form-field form-required">
47
<td class="wpf-dw-td-value-p">
wpf-assets/js/frontend.js CHANGED
@@ -177,10 +177,4 @@ jQuery(document).ready(function($){
177
//Turn off on dev mode
178
//$(window).bind('resize', function(){ if (window.RT) { clearTimeout(window.RT); } window.RT = setTimeout(function(){ this.location.reload(false);}, 100); });
179
180
- });
181
-
182
- //tinymce link module changes
183
- jQuery(document).delegate('#mceu_12', 'click', function(){
184
- jQuery( "#mceu_43" ).remove();
185
- jQuery( "#mceu_41 > input[type='text']" ).attr('placeholder', 'Paste URL');
186
});
177
//Turn off on dev mode
178
//$(window).bind('resize', function(){ if (window.RT) { clearTimeout(window.RT); } window.RT = setTimeout(function(){ this.location.reload(false);}, 100); });
179
180
});
wpf-assets/js/tinymce-code.js ADDED
@@ -0,0 +1,67 @@
1
+ (function() {
2
+
3
+ tinymce.create('tinymce.plugins.wpforo_source_code_button', {
4
+ /**
5
+ * Initializes the plugin, this will be executed after the plugin has been created.
6
+ * This call is done before the editor instance has finished it's initialization so use the onInit event
7
+ * of the editor instance to intercept that event.
8
+ *
9
+ * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
10
+ * @param {string} url Absolute URL to where the plugin is located.
11
+ */
12
+ init : function(ed, url) {
13
+
14
+ function showDialog() {
15
+ var win = ed.windowManager.open({
16
+ title: "Source code",
17
+ body: {
18
+ type: 'textbox',
19
+ name: 'code',
20
+ multiline: true,
21
+ minWidth: ed.getParam("code_dialog_width", 600),
22
+ minHeight: ed.getParam("code_dialog_height", Math.min(tinymce.DOM.getViewPort().h - 200, 500)),
23
+ spellcheck: false,
24
+ style: 'direction: ltr; text-align: left'
25
+ },
26
+ onSubmit: function(e) {
27
+ // We get a lovely "Wrong document" error in IE 11 if we
28
+ // don't move the focus to the editor before creating an undo
29
+ // transation since it tries to make a bookmark for the current selection
30
+ ed.focus();
31
+
32
+ ed.undoManager.transact(function() {
33
+ ed.setContent(e.data.code);
34
+ });
35
+
36
+ ed.selection.setCursorLocation();
37
+ ed.nodeChanged();
38
+ }
39
+ });
40
+
41
+ // Gecko has a major performance issue with textarea
42
+ // contents so we need to set it when all reflows are done
43
+ win.find('#code').value(ed.getContent({source_view: true}));
44
+ }
45
+
46
+ ed.addCommand("mceCodeEditor", showDialog);
47
+
48
+ ed.addButton('source_code', {
49
+ icon: 'codesample',
50
+ tooltip: 'Source code',
51
+ onclick: showDialog
52
+ });
53
+
54
+ ed.addMenuItem('code', {
55
+ icon: 'code',
56
+ text: 'Source code',
57
+ context: 'tools',
58
+ onclick: showDialog
59
+ });
60
+
61
+ },
62
+ });
63
+
64
+ // Register plugin
65
+ tinymce.PluginManager.add('wpforo_source_code_button', tinymce.plugins.wpforo_source_code_button);
66
+
67
+ })();
wpf-assets/js/tinymce-link.js ADDED
@@ -0,0 +1,408 @@
1
+ (function() {
2
+
3
+ tinymce.create('tinymce.plugins.wpforo_link_button', {
4
+ /**
5
+ * Initializes the plugin, this will be executed after the plugin has been created.
6
+ * This call is done before the editor instance has finished it's initialization so use the onInit event
7
+ * of the editor instance to intercept that event.
8
+ *
9
+ * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
10
+ * @param {string} url Absolute URL to where the plugin is located.
11
+ */
12
+ init : function(ed, url) {
13
+
14
+
15
+ function createLinkList(callback) {
16
+ return function() {
17
+ var linkList = ed.settings.link_list;
18
+
19
+ if (typeof linkList == "string") {
20
+ tinymce.util.XHR.send({
21
+ url: linkList,
22
+ success: function(text) {
23
+ callback(tinymce.util.JSON.parse(text));
24
+ }
25
+ });
26
+ } else if (typeof linkList == "function") {
27
+ linkList(callback);
28
+ } else {
29
+ callback(linkList);
30
+ }
31
+ };
32
+ }
33
+
34
+ function buildListItems(inputList, itemCallback, startItems) {
35
+ function appendItems(values, output) {
36
+ output = output || [];
37
+
38
+ tinymce.each(values, function(item) {
39
+ var menuItem = {text: item.text || item.title};
40
+
41
+ if (item.menu) {
42
+ menuItem.menu = appendItems(item.menu);
43
+ } else {
44
+ menuItem.value = item.value;
45
+
46
+ if (itemCallback) {
47
+ itemCallback(menuItem);
48
+ }
49
+ }
50
+
51
+ output.push(menuItem);
52
+ });
53
+
54
+ return output;
55
+ }
56
+
57
+ return appendItems(inputList, startItems || []);
58
+ }
59
+
60
+ function showDialog(linkList) {
61
+ var data = {}, selection = ed.selection, dom = ed.dom, selectedElm, anchorElm, initialText;
62
+ var win, onlyText, textListCtrl, linkListCtrl, relListCtrl, targetListCtrl, classListCtrl, linkTitleCtrl, value;
63
+
64
+ function linkListChangeHandler(e) {
65
+ var textCtrl = win.find('#text');
66
+
67
+ if (!textCtrl.value() || (e.lastControl && textCtrl.value() == e.lastControl.text())) {
68
+ textCtrl.value(e.control.text());
69
+ }
70
+
71
+ win.find('#href').value(e.control.value());
72
+ }
73
+
74
+ function buildAnchorListControl(url) {
75
+ var anchorList = [];
76
+
77
+ tinymce.each(ed.dom.select('a:not([href])'), function(anchor) {
78
+ var id = anchor.name || anchor.id;
79
+
80
+ if (id) {
81
+ anchorList.push({
82
+ text: id,
83
+ value: '#' + id,
84
+ selected: url.indexOf('#' + id) != -1
85
+ });
86
+ }
87
+ });
88
+
89
+ if (anchorList.length) {
90
+ anchorList.unshift({text: 'None', value: ''});
91
+
92
+ return {
93
+ name: 'anchor',
94
+ type: 'listbox',
95
+ label: 'Anchors',
96
+ values: anchorList,
97
+ onselect: linkListChangeHandler
98
+ };
99
+ }
100
+ }
101
+
102
+ function updateText() {
103
+ if (!initialText && data.text.length === 0 && onlyText) {
104
+ this.parent().parent().find('#text')[0].value(this.value());
105
+ }
106
+ }
107
+
108
+ function urlChange(e) {
109
+ var meta = e.meta || {};
110
+
111
+ if (linkListCtrl) {
112
+ linkListCtrl.value(ed.convertURL(this.value(), 'href'));
113
+ }
114
+
115
+ tinymce.each(e.meta, function(value, key) {
116
+ win.find('#' + key).value(value);
117
+ });
118
+
119
+ if (!meta.text) {
120
+ updateText.call(this);
121
+ }
122
+ }
123
+
124
+ function isOnlyTextSelected(anchorElm) {
125
+ var html = selection.getContent();
126
+
127
+ // Partial html and not a fully selected anchor element
128
+ if (/</.test(html) && (!/^<a [^>]+>[^<]+<\/a>#x2F;.test(html) || html.indexOf('href=') == -1)) {
129
+ return false;
130
+ }
131
+
132
+ if (anchorElm) {
133
+ var nodes = anchorElm.childNodes, i;
134
+
135
+ if (nodes.length === 0) {
136
+ return false;
137
+ }
138
+
139
+ for (i = nodes.length - 1; i >= 0; i--) {
140
+ if (nodes[i].nodeType != 3) {
141
+ return false;
142
+ }
143
+ }
144
+ }
145
+
146
+ return true;
147
+ }
148
+
149
+ selectedElm = selection.getNode();
150
+ anchorElm = dom.getParent(selectedElm, 'a[href]');
151
+ onlyText = isOnlyTextSelected();
152
+
153
+ data.text = initialText = anchorElm ? (anchorElm.innerText || anchorElm.textContent) : selection.getContent({format: 'text'});
154
+ data.href = anchorElm ? dom.getAttrib(anchorElm, 'href') : '';
155
+
156
+ if (anchorElm) {
157
+ data.target = dom.getAttrib(anchorElm, 'target');
158
+ } else if (ed.settings.default_link_target) {
159
+ data.target = ed.settings.default_link_target;
160
+ }
161
+
162
+ if ((value = dom.getAttrib(anchorElm, 'rel'))) {
163
+ data.rel = value;
164
+ }
165
+
166
+ if ((value = dom.getAttrib(anchorElm, 'class'))) {
167
+ data['class'] = value;
168
+ }
169
+
170
+ if ((value = dom.getAttrib(anchorElm, 'title'))) {
171
+ data.title = value;
172
+ }
173
+
174
+ if (onlyText) {
175
+ textListCtrl = {
176
+ name: 'text',
177
+ type: 'textbox',
178
+ size: 40,
179
+ label: 'Link Text',
180
+ onchange: function() {
181
+ data.text = this.value();
182
+ }
183
+ };
184
+ }
185
+
186
+ if (linkList) {
187
+ linkListCtrl = {
188
+ type: 'listbox',
189
+ label: 'Link list',
190
+ values: buildListItems(
191
+ linkList,
192
+ function(item) {
193
+ item.value = ed.convertURL(item.value || item.url, 'href');
194
+ },
195
+ [{text: 'None', value: ''}]
196
+ ),
197
+ onselect: linkListChangeHandler,
198
+ value: ed.convertURL(data.href, 'href'),
199
+ onPostRender: function() {
200
+ /*eslint consistent-this:0*/
201
+ linkListCtrl = this;
202
+ }
203
+ };
204
+ }
205
+
206
+ if (ed.settings.target_list !== false) {
207
+ targetListCtrl = {
208
+ name: 'target',
209
+ type: 'checkbox',
210
+ checked: true,
211
+ text: 'Open link in a new tab'
212
+ };
213
+ }
214
+
215
+ if (ed.settings.rel_list) {
216
+ relListCtrl = {
217
+ name: 'rel',
218
+ type: 'listbox',
219
+ label: 'Rel',
220
+ values: buildListItems(ed.settings.rel_list)
221
+ };
222
+ }
223
+
224
+ if (ed.settings.link_class_list) {
225
+ classListCtrl = {
226
+ name: 'class',
227
+ type: 'listbox',
228
+ label: 'Class',
229
+ values: buildListItems(
230
+ ed.settings.link_class_list,
231
+ function(item) {
232
+ if (item.value) {
233
+ item.textStyle = function() {
234
+ return ed.formatter.getCssText({inline: 'a', classes: [item.value]});
235
+ };
236
+ }
237
+ }
238
+ )
239
+ };
240
+ }
241
+
242
+ if (ed.settings.link_title !== false) {
243
+ linkTitleCtrl = {
244
+ name: 'title',
245
+ type: 'textbox',
246
+ label: 'Title',
247
+ value: data.title
248
+ };
249
+ }
250
+
251
+ win = ed.windowManager.open({
252
+ title: 'Insert link',
253
+ data: data,
254
+ body: [
255
+ {
256
+ name: 'href',
257
+ type: 'filepicker',
258
+ filetype: 'file',
259
+ size: 40,
260
+ autofocus: true,
261
+ label: 'URL',
262
+ onchange: urlChange,
263
+ onkeyup: updateText
264
+ },
265
+ textListCtrl,
266
+ linkTitleCtrl,
267
+ buildAnchorListControl(data.href),
268
+ linkListCtrl,
269
+ relListCtrl,
270
+ targetListCtrl,
271
+ classListCtrl
272
+ ],
273
+ onSubmit: function(e) {
274
+ /*eslint dot-notation: 0*/
275
+ var href;
276
+
277
+ data = tinymce.extend(data, e.data);
278
+ href = data.href;
279
+ if ( href && ! /^(?:[a-z]+:|#|\?|\.|\/)/.test( href ) ) {
280
+ href = 'http://' + href;
281
+ }
282
+
283
+ // Delay confirm since onSubmit will move focus
284
+ function delayedConfirm(message, callback) {
285
+ var rng = ed.selection.getRng();
286
+
287
+ tinymce.util.Delay.setEditorTimeout(editor, function() {
288
+ ed.windowManager.confirm(message, function(state) {
289
+ ed.selection.setRng(rng);
290
+ callback(state);
291
+ });
292
+ });
293
+ }
294
+
295
+ function insertLink() {
296
+ var linkAttrs = {
297
+ href: href,
298
+ target: data.target ? data.target : null,
299
+ rel: data.rel ? data.rel : null,
300
+ "class": data["class"] ? data["class"] : null,
301
+ title: data.title ? data.title : null
302
+ };
303
+
304
+ if (anchorElm) {
305
+ ed.focus();
306
+
307
+ if (onlyText && data.text != initialText) {
308
+ if ("innerText" in anchorElm) {
309
+ anchorElm.innerText = data.text;
310
+ } else {
311
+ anchorElm.textContent = data.text;
312
+ }
313
+ }
314
+
315
+ dom.setAttribs(anchorElm, linkAttrs);
316
+
317
+ selection.select(anchorElm);
318
+ ed.undoManager.add();
319
+ } else {
320
+ if (onlyText) {
321
+ ed.insertContent(dom.createHTML('a', linkAttrs, dom.encode(data.text)));
322
+ } else {
323
+ ed.execCommand('mceInsertLink', false, linkAttrs);
324
+ }
325
+ }
326
+ }
327
+
328
+ if (!href) {
329
+ ed.execCommand('unlink');
330
+ return;
331
+ }
332
+
333
+ // Is email and not //user@domain.com
334
+ if (href.indexOf('@') > 0 && href.indexOf('//') == -1 && href.indexOf('mailto:') == -1) {
335
+ delayedConfirm(
336
+ 'The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?',
337
+ function(state) {
338
+ if (state) {
339
+ href = 'mailto:' + href;
340
+ }
341
+
342
+ insertLink();
343
+ }
344
+ );
345
+
346
+ return;
347
+ }
348
+
349
+ // Is not protocol prefixed
350
+ if ((ed.settings.link_assume_external_targets && !/^\w+:/i.test(href)) ||
351
+ (!ed.settings.link_assume_external_targets && /^\s*www[\.|\d\.]/i.test(href))) {
352
+ delayedConfirm(
353
+ 'The URL you entered seems to be an external link. Do you want to add the required http:// prefix?',
354
+ function(state) {
355
+ if (state) {
356
+ href = 'http://' + href;
357
+ }
358
+
359
+ insertLink();
360
+ }
361
+ );
362
+
363
+ return;
364
+ }
365
+
366
+ insertLink();
367
+ }
368
+ });
369
+ }
370
+
371
+ ed.addButton('link', {
372
+ icon: 'link',
373
+ tooltip: 'Insert/edit link',
374
+ shortcut: 'Meta+K',
375
+ onclick: createLinkList(showDialog),
376
+ stateSelector: 'a[href]'
377
+ });
378
+
379
+ ed.addButton('unlink', {
380
+ icon: 'unlink',
381
+ tooltip: 'Remove link',
382
+ cmd: 'unlink',
383
+ stateSelector: 'a[href]'
384
+ });
385
+
386
+ ed.addShortcut('Meta+K', '', createLinkList(showDialog));
387
+ ed.addCommand('mceLink', createLinkList(showDialog));
388
+
389
+ this.showDialog = showDialog;
390
+
391
+ ed.addMenuItem('link', {
392
+ icon: 'link',
393
+ text: 'Insert/edit link',
394
+ shortcut: 'Meta+K',
395
+ onclick: createLinkList(showDialog),
396
+ stateSelector: 'a[href]',
397
+ context: 'insert',
398
+ prependToContext: true
399
+ });
400
+
401
+
402
+ },
403
+ });
404
+
405
+ // Register plugin
406
+ tinymce.PluginManager.add('wpforo_link_button', tinymce.plugins.wpforo_link_button);
407
+
408
+ })();
wpf-includes/class-forums.php CHANGED
@@ -62,7 +62,7 @@ class wpForoForum{
62
$is_cat = (isset($is_cat)) ? intval($is_cat) : 0;
63
if(!$parentid) $is_cat = 1;
64
65
- if($parentid && !isset($cat_layout)) {
66
$cat_layout = $this->wpforo->db->get_var("SELECT `cat_layout` FROM `".$this->wpforo->db->prefix ."wpforo_forums` WHERE `forumid` = " . intval($parentid) );
67
$cat_layout = intval($cat_layout);
68
}
@@ -137,7 +137,7 @@ class wpForoForum{
137
$is_cat = (isset($is_cat)) ? intval($is_cat) : 0;
138
if(!$parentid) $is_cat = 1;
139
140
- if($parentid && !isset($cat_layout)) {
141
$cat_layout = $this->wpforo->db->get_var("SELECT `cat_layout` FROM `".$this->wpforo->db->prefix ."wpforo_forums` WHERE `forumid` = " . intval($parentid) );
142
$cat_layout = intval($cat_layout);
143
}
62
$is_cat = (isset($is_cat)) ? intval($is_cat) : 0;
63
if(!$parentid) $is_cat = 1;
64
65
+ if($parentid) {
66
$cat_layout = $this->wpforo->db->get_var("SELECT `cat_layout` FROM `".$this->wpforo->db->prefix ."wpforo_forums` WHERE `forumid` = " . intval($parentid) );
67
$cat_layout = intval($cat_layout);
68
}
137
$is_cat = (isset($is_cat)) ? intval($is_cat) : 0;
138
if(!$parentid) $is_cat = 1;
139
140
+ if($parentid) {
141
$cat_layout = $this->wpforo->db->get_var("SELECT `cat_layout` FROM `".$this->wpforo->db->prefix ."wpforo_forums` WHERE `forumid` = " . intval($parentid) );
142
$cat_layout = intval($cat_layout);
143
}
wpf-includes/class-members.php CHANGED
@@ -411,7 +411,7 @@ class wpForoMember{
411
'groupid' => NULL, // groupid
412
'orderby' => 'userid', //
413
'order' => 'ASC', // ASC DESC
414
- 'offset' => NULL, // OFFSET
415
'row_count' => NULL // ROW COUNT
416
);
417
@@ -426,29 +426,17 @@ class wpForoMember{
426
LEFT JOIN `".$this->wpforo->db->prefix."wpforo_profiles` p ON p.`userid` = u.`ID`
427
LEFT JOIN `".$this->wpforo->db->prefix."wpforo_usergroups` ug ON ug.`groupid` = p.`groupid`";
428
$wheres = array();
429
- if(!empty($include)) $wheres[] = "`ID` IN(" . implode(', ', array_map('intval', $include)) . ")";
430
- if(!empty($exclude)) $wheres[] = "`ID` NOT IN(" . implode(', ', array_map('intval', $exclude)) . ")";
431
if(isset($status)) $wheres[] = " p.`status` = '" . esc_sql(sanitize_text_field($status)) . "' ";
432
if($groupid != NULL) $wheres[] = "p.`groupid` = " . intval($groupid);
433
434
- if(!empty($wheres)){
435
- $sql .= " WHERE " . implode($wheres, " AND ");
436
- }
437
-
438
$items_count = $this->wpforo->db->get_var(preg_replace('#SELECT.+?FROM#isu', 'SELECT count(*) FROM', $sql));
439
-
440
$sql .= esc_sql(" ORDER BY $orderby " . $order);
441
-
442
- if($row_count != NULL){
443
- if($offset != NULL){
444
- $sql .= esc_sql(" LIMIT $offset,$row_count");
445
- }else{
446
- $sql .= esc_sql(" LIMIT $row_count");
447
- }
448
- }
449
450
return $this->wpforo->db->get_results($sql, ARRAY_A);
451
-
452
}
453
}
454
@@ -772,7 +760,7 @@ class wpForoMember{
772
if($duration == 240) $duration = $this->wpforo->member_options['online_status_timeout'];
773
$current_time = current_time( 'timestamp', 1 );
774
$online_timeframe = $current_time - $duration;
775
- return $this->wpforo->db->get_var( "SELECT COUNT(`user_id`) FROM `".$this->wpforo->db->prefix."usermeta` WHERE meta_key = 'wpforo_online_time' AND meta_value > " . esc_sql($online_timeframe) );
776
777
}
778
@@ -780,12 +768,10 @@ class wpForoMember{
780
if($duration == 240) $duration = $this->wpforo->member_options['online_status_timeout'];
781
$current_time = current_time( 'timestamp', 1 );
782
$online_timeframe = $current_time - $duration;
783
- $onlinemembers_ids = $this->wpforo->db->get_col( "SELECT `user_id` FROM `".$this->wpforo->db->prefix."usermeta` WHERE meta_key = 'wpforo_online_time' AND meta_value > " . esc_sql($online_timeframe) );
784
-
785
if(!empty($onlinemembers_ids)){
786
$args = array(
787
'include' => $onlinemembers_ids, // array( 2, 10, 25 )
788
- 'status' => "'active'", // 'active', 'blocked', 'trashed', 'spamer'
789
'orderby' => 'userid', // forumid, order, parentid
790
'row_count' => $count,
791
'order' => 'ASC', // ASC DESC
411
'groupid' => NULL, // groupid
412
'orderby' => 'userid', //
413
'order' => 'ASC', // ASC DESC
414
+ 'offset' => 0, // OFFSET
415
'row_count' => NULL // ROW COUNT
416
);
417
426
LEFT JOIN `".$this->wpforo->db->prefix."wpforo_profiles` p ON p.`userid` = u.`ID`
427
LEFT JOIN `".$this->wpforo->db->prefix."wpforo_usergroups` ug ON ug.`groupid` = p.`groupid`";
428
$wheres = array();
429
+ if(!empty($include)) $wheres[] = "u.`ID` IN(" . implode(', ', array_map('intval', $include)) . ")";
430
+ if(!empty($exclude)) $wheres[] = "u.`ID` NOT IN(" . implode(', ', array_map('intval', $exclude)) . ")";
431
if(isset($status)) $wheres[] = " p.`status` = '" . esc_sql(sanitize_text_field($status)) . "' ";
432
if($groupid != NULL) $wheres[] = "p.`groupid` = " . intval($groupid);
433
434
+ if(!empty($wheres)) $sql .= " WHERE " . implode($wheres, " AND ");
435
$items_count = $this->wpforo->db->get_var(preg_replace('#SELECT.+?FROM#isu', 'SELECT count(*) FROM', $sql));
436
$sql .= esc_sql(" ORDER BY $orderby " . $order);
437
+ if($row_count) $sql .= esc_sql(" LIMIT $offset,$row_count");
438
439
return $this->wpforo->db->get_results($sql, ARRAY_A);
440
}
441
}
442
760
if($duration == 240) $duration = $this->wpforo->member_options['online_status_timeout'];
761
$current_time = current_time( 'timestamp', 1 );
762
$online_timeframe = $current_time - $duration;
763
+ return $this->wpforo->db->get_var( "SELECT COUNT(`user_id`) FROM `".$this->wpforo->db->prefix."usermeta` WHERE meta_key = 'wpforo_online_time' AND meta_value > " . wpforo_bigintval($online_timeframe) );
764
765
}
766
768
if($duration == 240) $duration = $this->wpforo->member_options['online_status_timeout'];
769
$current_time = current_time( 'timestamp', 1 );
770
$online_timeframe = $current_time - $duration;
771
+ $onlinemembers_ids = $this->wpforo->db->get_col( "SELECT `user_id` FROM `".$this->wpforo->db->prefix."usermeta` WHERE meta_key = 'wpforo_online_time' AND meta_value > " . wpforo_bigintval($online_timeframe) );
772
if(!empty($onlinemembers_ids)){
773
$args = array(
774
'include' => $onlinemembers_ids, // array( 2, 10, 25 )
775
'orderby' => 'userid', // forumid, order, parentid
776
'row_count' => $count,
777
'order' => 'ASC', // ASC DESC
wpf-includes/class-posts.php CHANGED
@@ -508,9 +508,16 @@ class wpForoPost{
508
*
509
* @return string $url
510
*/
511
- function get_post_url( $postid ){
512
- $postid = intval($postid);
513
- $post = $this->get_post($postid);
514
515
if( is_array($post) && !empty($post) ){
516
$url = WPFORO_BASE_URL . $this->get_forumslug_byid($postid) . '/' . $this->get_topicslug_byid($postid);
@@ -529,6 +536,7 @@ class wpForoPost{
529
530
}
531
532
/**
533
* return 0 or 1
534
*
508
*
509
* @return string $url
510
*/
511
+ function get_post_url( $arg ){
512
+
513
+ if(empty($arg['postid'])){
514
+ $postid = intval($arg);
515
+ $post = $this->get_post($postid);
516
+ }
517
+ else{
518
+ $post = $arg;
519
+ $postid = $post['postid'];
520
+ }
521
522
if( is_array($post) && !empty($post) ){
523
$url = WPFORO_BASE_URL . $this->get_forumslug_byid($postid) . '/' . $this->get_topicslug_byid($postid);
536
537
}
538
539
+
540
/**
541
* return 0 or 1
542
*
wpf-includes/class-template.php CHANGED
@@ -9,14 +9,32 @@ class wpForoTemplate{
9
10
function __construct( $wpForo ){
11
if(!isset($this->wpforo)) $this->wpforo = $wpForo;
12
- add_filter("mce_external_plugins", array(&$this, 'add_pre_button'));
13
}
14
15
- function add_pre_button($plugin_array) {
16
$plugin_array['wpforo_pre_button'] = WPFORO_URL . '/wpf-assets/js/tinymce-pre.js';
17
return $plugin_array;
18
}
19
20
function topic_form($forumid){
21
if(!isset($this->wpforo->post_options['max_upload_size']) || !$this->wpforo->post_options['max_upload_size']){ $server_mus = wpforo_human_size_to_bytes(ini_get('upload_max_filesize')); if( !$server_mus || $server_mus > 10485760 ) $server_mus = 10485760; $this->wpforo->post_options['max_upload_size'] = $server_mus;}
22
?>
@@ -42,7 +60,7 @@ class wpForoTemplate{
42
'teeny'=> FALSE, // output the minimal editor config used in Press This
43
'dfw'=> false, // replace the default fullscreen with DFW (supported on the front - end in WordPress 3.4)
44
'tinymce'=> array(
45
- 'toolbar1' => 'bold,italic,underline,strikethrough,forecolor,bullist,numlist,hr,alignleft,aligncenter,alignright,alignjustify,link,unlink,blockquote,pre,undo,redo',
46
'toolbar2' => '',
47
'toolbar3' => '',
48
'toolbar4' => ''
@@ -135,7 +153,7 @@ class wpForoTemplate{
135
<div id="wpf-form-wrapper">
136
<?php echo $head_html; //this is a HTML content ?>
137
<div id="wpf-post-create" class="wpf-post-create">
138
- <form name="post" action="" enctype="multipart/form-data" method="POST" class="editor" onsubmit="document.getElementById('formtopictitle').disabled = false;">
139
<?php wp_nonce_field( 'wpforo_verify_form', 'wpforo_form' ); ?>
140
<input type="hidden" id="formaction" name="post[action]" value="add"/>
141
<input type="hidden" id="formtopicid" name="post[topicid]" value="<?php echo intval($topicid) ?>"/>
@@ -160,7 +178,7 @@ class wpForoTemplate{
160
'teeny'=> false, // output the minimal editor config used in Press This
161
'dfw'=> false, // replace the default fullscreen with DFW (supported on the front - end in WordPress 3.4)
162
'tinymce'=> array(
163
- 'toolbar1' => 'bold,italic,underline,strikethrough,forecolor,bullist,numlist,hr,alignleft,aligncenter,alignright,alignjustify,link,unlink,blockquote,pre,undo,redo',
164
'toolbar2' => '',
165
'toolbar3' => '',
166
'toolbar4' => ''
9
10
function __construct( $wpForo ){
11
if(!isset($this->wpforo)) $this->wpforo = $wpForo;
12
+ if(!is_admin()){
13
+ add_filter("mce_external_plugins", array(&$this, 'add_tinymce_buttons'), 15);
14
+ add_filter("tiny_mce_plugins", array(&$this, 'filter_tinymce_plugins'), 15);
15
+ add_filter("wp_mce_translation", array(&$this, 'add_tinymce_translations'));
16
+ }
17
}
18
19
+ function add_tinymce_buttons($plugin_array) {
20
+ $plugin_array = array();
21
$plugin_array['wpforo_pre_button'] = WPFORO_URL . '/wpf-assets/js/tinymce-pre.js';
22
+ $plugin_array['wpforo_link_button'] = WPFORO_URL . '/wpf-assets/js/tinymce-link.js';
23
+ $plugin_array['wpforo_source_code_button'] = WPFORO_URL . '/wpf-assets/js/tinymce-code.js';
24
return $plugin_array;
25
}
26
27
+ function filter_tinymce_plugins($plugins){
28
+ return array('hr','lists','textcolor');
29
+ }
30
+
31
+ function add_tinymce_translations($mce_translation){
32
+ $mce_translation['Insert link'] = __( 'Insert link' );
33
+ $mce_translation['Link Text'] = __( 'Link Text' );
34
+ $mce_translation['Open link in a new tab'] = __( 'Open link in a new tab' );
35
+ return $mce_translation;
36
+ }
37
+
38
function topic_form($forumid){
39
if(!isset($this->wpforo->post_options['max_upload_size']) || !$this->wpforo->post_options['max_upload_size']){ $server_mus = wpforo_human_size_to_bytes(ini_get('upload_max_filesize')); if( !$server_mus || $server_mus > 10485760 ) $server_mus = 10485760; $this->wpforo->post_options['max_upload_size'] = $server_mus;}
40
?>
60
'teeny'=> FALSE, // output the minimal editor config used in Press This
61
'dfw'=> false, // replace the default fullscreen with DFW (supported on the front - end in WordPress 3.4)
62
'tinymce'=> array(
63
+ 'toolbar1' => 'bold,italic,underline,strikethrough,forecolor,bullist,numlist,hr,alignleft,aligncenter,alignright,alignjustify,link,unlink,blockquote,pre,undo,redo,source_code',
64
'toolbar2' => '',
65
'toolbar3' => '',
66
'toolbar4' => ''
153
<div id="wpf-form-wrapper">
154
<?php echo $head_html; //this is a HTML content ?>
155
<div id="wpf-post-create" class="wpf-post-create">
156
+ <form name="post" action="" enctype="multipart/form-data" method="POST" class="editor">
157
<?php wp_nonce_field( 'wpforo_verify_form', 'wpforo_form' ); ?>
158
<input type="hidden" id="formaction" name="post[action]" value="add"/>
159
<input type="hidden" id="formtopicid" name="post[topicid]" value="<?php echo intval($topicid) ?>"/>
178
'teeny'=> false, // output the minimal editor config used in Press This
179
'dfw'=> false, // replace the default fullscreen with DFW (supported on the front - end in WordPress 3.4)
180
'tinymce'=> array(
181
+ 'toolbar1' => 'bold,italic,underline,strikethrough,forecolor,bullist,numlist,hr,alignleft,aligncenter,alignright,alignjustify,link,unlink,blockquote,pre,undo,redo,source_code',
182
'toolbar2' => '',
183
'toolbar3' => '',
184
'toolbar4' => ''
wpf-includes/functions-installation.php CHANGED
@@ -5,6 +5,7 @@
5
6
function wpforo_activation(){
7
8
if( ! current_user_can( 'activate_plugins' ) ) return;
9
10
global $wpforo;
@@ -78,11 +79,20 @@ function wpforo_activation(){
78
'seo-title' => 1,
79
'seo-meta' => 1,
80
'font-awesome' => 1,
81
'copyright' => 1
82
);
83
add_option( 'wpforo_features', $wpforo_features );
84
85
// Theme ///////////////////////////////////////////////////
86
$defaut_theme = 'classic';
87
$theme = $wpforo->tpl->find_theme( $defaut_theme );
88
add_option( 'wpforo_theme_options', $theme );
@@ -408,26 +418,28 @@ function wpforo_activation(){
408
409
// Creating Forum Page ///////////////////////////////////////////////////////////////
410
if( !$wpforo->pageid ){
411
- $wpforo_page = array(
412
- 'post_date' => current_time( 'mysql', 1 ),
413
- 'post_date_gmt' => current_time( 'mysql', 1 ),
414
- 'post_content' => '[wpforo-index]',
415
- 'post_title' => 'Forum',
416
- 'post_status' => 'publish',
417
- 'comment_status' => 'close',
418
- 'ping_status' => 'close',
419
- 'post_name' => 'community',
420
- 'post_modified' => current_time( 'mysql', 1 ),
421
- 'post_modified_gmt' => current_time( 'mysql', 1 ),
422
- 'post_parent' => 0,
423
- 'menu_order' => 0,
424
- 'post_type' => 'page'
425
- );
426
- if( $page_id = wp_insert_post( $wpforo_page ) ){
427
- if(!is_wp_error($page_id)){
428
- update_option( 'wpforo_pageid', $page_id );
429
- update_option( 'wpforo_url', trim(get_permalink($page_id), '/') . '/' );
430
- }
431
}
432
}
433
@@ -445,29 +457,36 @@ function wpforo_activation(){
445
wp_mkdir_p($avatars_upload_dir);
446
}
447
448
- wpforo_update();
449
450
- $wpforo->notice->clear();
451
- }
452
-
453
- function wpforo_update() {
454
- global $wpforo, $wpdb;
455
$old_version = get_option('wpforo_version');
456
- //Beta-3//////////////////////////////////////////////////////
457
- if( $old_version != 'Beta-3' && $wpforo->version == 'Beta-3' ){
458
$member_options = get_option( 'wpforo_member_options' );
459
if(!isset($member_options['login_url'])) $member_options['login_url'] = '';
460
if(!isset($member_options['register_url'])) $member_options['register_url'] = '';
461
if(!isset($member_options['lost_password_url'])) $member_options['lost_password_url'] = '';
462
if(!isset($member_options['rating_title_ug'])) $member_options['rating_title_ug'] = array ( 1 => '1', 5 => '1', 4 => '1', 2 => '1', 3 => '1');
463
if(!isset($member_options['rating_badge_ug'])) $member_options['rating_badge_ug'] = array ( 1 => '1', 5 => '1', 4 => '1', 2 => '1', 3 => '1');
464
- update_option( 'wpforo_member_options', $member_options );
465
- }
466
- //////////////////////////////////////////////////////////////
467
update_option('wpforo_version', $wpforo->version);
468
}
469
470
-
471
function wpforo_deactivation() {}
472
473
@@ -534,6 +553,7 @@ function wpforo_uninstall() {
534
535
$menu = wp_get_nav_menu_object( 'wpforo-navigation' );
536
wp_delete_nav_menu( $menu->term_id );
537
538
deactivate_plugins( WPFORO_BASENAME );
539
5
6
function wpforo_activation(){
7
8
+ if( ! is_admin() ) return;
9
if( ! current_user_can( 'activate_plugins' ) ) return;
10
11
global $wpforo;
79
'seo-title' => 1,
80
'seo-meta' => 1,
81
'font-awesome' => 1,
82
+ 'output-buffer' => 0,
83
'copyright' => 1
84
);
85
add_option( 'wpforo_features', $wpforo_features );
86
87
// Theme ///////////////////////////////////////////////////
88
+ $wpforo_style = array(
89
+ 'font_size_forum' => 17,
90
+ 'font_size_topic' => 16,
91
+ 'font_size_post_content' => 14,
92
+ 'custom_css' => "#wpforo-wrap {\r\n font-size: 13px; width: 100%; margin:0;\r\n}\r\n",
93
+ );
94
+ add_option( 'wpforo_style_options', $wpforo_style );
95
+
96
$defaut_theme = 'classic';
97
$theme = $wpforo->tpl->find_theme( $defaut_theme );
98
add_option( 'wpforo_theme_options', $theme );
418
419
// Creating Forum Page ///////////////////////////////////////////////////////////////
420
if( !$wpforo->pageid ){
421
+ if( !$page_id = $wpforo->db->get_var("SELECT `ID` FROM `{$wpforo->db->prefix}posts` WHERE `post_content` LIKE '%[wpforo-index]%' AND `post_status` LIKE 'publish' AND `post_type` IN('post', 'page')") ){
422
+ $wpforo_page = array(
423
+ 'post_date' => current_time( 'mysql', 1 ),
424
+ 'post_date_gmt' => current_time( 'mysql', 1 ),
425
+ 'post_content' => '[wpforo-index]',
426
+ 'post_title' => 'Forum',
427
+ 'post_status' => 'publish',
428
+ 'comment_status' => 'close',
429
+ 'ping_status' => 'close',
430
+ 'post_name' => 'community',
431
+ 'post_modified' => current_time( 'mysql', 1 ),
432
+ 'post_modified_gmt' => current_time( 'mysql', 1 ),
433
+ 'post_parent' => 0,
434
+ 'menu_order' => 0,
435
+ 'post_type' => 'page'
436
+ );
437
+ $page_id = wp_insert_post( $wpforo_page );
438
+ }
439
+
440
+ if( $page_id && !is_wp_error($page_id) ){
441
+ update_option( 'wpforo_pageid', $page_id );
442
+ update_option( 'wpforo_url', trim(get_permalink($page_id), '/') . '/' );
443
}
444
}
445
457
wp_mkdir_p($avatars_upload_dir);
458
}
459
460
+ ################################################################################
461
+ // UDATES //////////////////////////////////////////////////////////////////////
462
+ ################################################################################
463
464
$old_version = get_option('wpforo_version');
465
+
466
+ //if ( version_compare($old_version, 'Beta-3', '<') ) {
467
$member_options = get_option( 'wpforo_member_options' );
468
if(!isset($member_options['login_url'])) $member_options['login_url'] = '';
469
if(!isset($member_options['register_url'])) $member_options['register_url'] = '';
470
if(!isset($member_options['lost_password_url'])) $member_options['lost_password_url'] = '';
471
if(!isset($member_options['rating_title_ug'])) $member_options['rating_title_ug'] = array ( 1 => '1', 5 => '1', 4 => '1', 2 => '1', 3 => '1');
472
if(!isset($member_options['rating_badge_ug'])) $member_options['rating_badge_ug'] = array ( 1 => '1', 5 => '1', 4 => '1', 2 => '1', 3 => '1');
473
+ if(!empty($member_options))update_option( 'wpforo_member_options', $member_options );
474
+ //}
475
+
476
+ //if ( version_compare($old_version, 'Beta-4', '<') ) {
477
+ $features = get_option( 'wpforo_features' );
478
+ if(!isset($features['output-buffer'])) $features['output-buffer'] = 0;
479
+ if(!empty($features)) update_option( 'wpforo_features', $features );
480
+ //}
481
+
482
+ ################################################################################
483
+ // UDATES END //////////////////////////////////////////////////////////////////
484
+ ################################################################################
485
+
486
update_option('wpforo_version', $wpforo->version);
487
+ $wpforo->notice->clear();
488
}
489
490
function wpforo_deactivation() {}
491
492
553
554
$menu = wp_get_nav_menu_object( 'wpforo-navigation' );
555
wp_delete_nav_menu( $menu->term_id );
556
+ wp_delete_post($wpforo->pageid, TRUE);
557
558
deactivate_plugins( WPFORO_BASENAME );
559
wpf-includes/functions-template.php CHANGED
@@ -377,12 +377,90 @@ class wpForo_Widget_online_members extends WP_Widget {
377
}
378
} // widget online members
379
380
class wpForo_Widget_recent_replies extends WP_Widget {
381
function __construct() {
382
parent::__construct(
383
'wpForo_Widget_recent_replies', // Base ID
384
- 'wpForo Recent Replies', // Name
385
- array( 'description' => 'Your forum\'s recent replies.' ) // Args
386
);
387
}
388
public function widget( $args, $instance ) {
@@ -393,15 +471,16 @@ class wpForo_Widget_recent_replies extends WP_Widget {
393
echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ). $args['after_title'];//This is a HTML content//
394
}
395
// widget content from front end
396
- $getposts_args = array(
397
'orderby' => 'modified', // forumid, order, parentid
398
'order' => 'DESC', // ASC DESC
399
'row_count' => $instance['count'] // 4 or 1 ...
400
);
401
- $recent_posts = $wpforo->post->get_posts($getposts_args);
402
echo '<div class="wpforo-widget-content"><ul>';
403
foreach( $recent_posts as $post ){
404
- $post_url = $wpforo->post->get_post_url( $post['postid'] );
405
$member = $wpforo->member->get_member( $post['userid'] );
406
?>
407
<li>
@@ -414,7 +493,7 @@ class wpForo_Widget_recent_replies extends WP_Widget {
414
<div class="wpforo-list-item-right" <?php if( !$instance['display_avatar'] ): ?> style="width:100%"<?php endif; ?>>
415
<p class="posttitle"><a href="<?php echo esc_url($post_url) ?>"><?php echo esc_html($post['title']) ?></a></p>
416
<p class="posttext"><?php echo esc_html(wpforo_text($post['body'], 55)); ?></p>
417
- <p class="postuser"><?php wpforo_phrase('by') ?> <a href="<?php echo esc_url($wpforo->member->get_profile_url($post['userid'])) ?>"><?php echo esc_html($member['display_name']) ?></a></p>
418
<p class="postdate"><?php wpforo_phrase('posted') ?>&nbsp;<?php esc_html(wpforo_date($post['created'])) ?></p>
419
</div>
420
<div class="wpf-clear"></div>
@@ -427,7 +506,7 @@ class wpForo_Widget_recent_replies extends WP_Widget {
427
echo $args['after_widget'];//This is a HTML content//
428
}
429
public function form( $instance ) {
430
- $title = ! empty( $instance['title'] ) ? $instance['title'] : 'Recent Replies';
431
$count = ! empty( $instance['count'] ) ? $instance['count'] : '9';
432
$display_avatar = isset( $instance['display_avatar'] ) ? (bool) $instance['display_avatar'] : false;
433
?>
@@ -508,6 +587,11 @@ function wpforo_widget_online_members() {
508
}
509
add_action( 'widgets_init', 'wpforo_widget_online_members' );
510
511
function wpforo_widget_recent_replies() {
512
register_widget( 'wpForo_Widget_recent_replies' );
513
}
377
}
378
} // widget online members
379
380
+ class wpForo_Widget_recent_topics extends WP_Widget {
381
+ function __construct() {
382
+ parent::__construct(
383
+ 'wpForo_Widget_recent_topics', // Base ID
384
+ 'wpForo Recent Topics', // Name
385
+ array( 'description' => 'Your forum\'s recent topics.' ) // Args
386
+ );
387
+ }
388
+ public function widget( $args, $instance ) {
389
+ global $wpforo;
390
+ echo $args['before_widget'];//This is a HTML content//
391
+ echo '<div id="wpf-widget-recent-replies" class="wpforo-widget-wrap">';
392
+ if ( ! empty( $instance['title'] ) ) {
393
+ echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ). $args['after_title'];//This is a HTML content//
394
+ }
395
+ // widget content from front end
396
+ $topic_args = array(
397
+ 'orderby' => 'modified', // forumid, order, parentid
398
+ 'order' => 'DESC', // ASC DESC
399
+ 'row_count' => $instance['count'] // 4 or 1 ...
400
+ );
401
+ $topics = $wpforo->topic->get_topics($topic_args);
402
+ echo '<div class="wpforo-widget-content"><ul>';
403
+ foreach( $topics as $topic ){
404
+ if( !$wpforo->perm->forum_can( $topic['forumid'], 'vf' ) ) continue;
405
+ $topic_url = $wpforo->topic->get_topic_url( $topic );
406
+ $member = $wpforo->member->get_member( $topic['userid'] );
407
+ $post = $wpforo->post->get_post($topic['first_postid']);
408
+ ?>
409
+ <li>
410
+ <div class="wpforo-list-item">
411
+ <?php if( $instance['display_avatar'] ): ?>
412
+ <div class="wpforo-list-item-left">
413
+ <?php echo $wpforo->member->get_avatar( $topic['userid'], 'style="width:95%;"'); ?>
414
+ </div>
415
+ <?php endif; ?>
416
+ <div class="wpforo-list-item-right" <?php if( !$instance['display_avatar'] ): ?> style="width:100%"<?php endif; ?>>
417
+ <p class="posttitle"><a href="<?php echo esc_url($topic_url) ?>"><?php echo esc_html($topic['title']) ?></a></p>
418
+ <p class="posttext"><?php echo esc_html(wpforo_text($post['body'], 55)); ?></p>
419
+ <p class="postuser"><?php wpforo_phrase('by') ?> <a href="<?php echo esc_url($wpforo->member->profile_url($member)) ?>"><?php echo esc_html($member['display_name']) ?></a></p>
420
+ <p class="postdate"><?php wpforo_phrase('posted') ?>&nbsp;<?php esc_html(wpforo_date($topic['created'])) ?></p>
421
+ </div>
422
+ <div class="wpf-clear"></div>
423
+ </div>
424
+ </li>
425
+ <?php
426
+ }
427
+ echo '</ul></div>';
428
+ echo '</div>';
429
+ echo $args['after_widget'];//This is a HTML content//
430
+ }
431
+ public function form( $instance ) {
432
+ $title = ! empty( $instance['title'] ) ? $instance['title'] : 'Recent Topics';
433
+ $count = ! empty( $instance['count'] ) ? $instance['count'] : '9';
434
+ $display_avatar = isset( $instance['display_avatar'] ) ? (bool) $instance['display_avatar'] : false;
435
+ ?>
436
+ <p>
437
+ <label><?php _e('Title', 'wpforo'); ?>:</label>
438
+ <input class="widefat" name="<?php echo esc_attr($this->get_field_name( 'title' )); ?>" type="text" value="<?php echo esc_attr( $title ); ?>">
439
+ </p><p>
440
+ <label><?php _e('Number of Items', 'wpforo'); ?></label>&nbsp;
441
+ <input type="number" min="1" style="width: 53px;" name="<?php echo esc_attr($this->get_field_name( 'count' )); ?>" value="<?php echo esc_attr($count) ; ?>">
442
+ </p><p>
443
+ <label><input <?php checked( $display_avatar ); ?> type="checkbox" name="<?php echo esc_attr($this->get_field_name( 'display_avatar' )); ?>" >
444
+ <?php _e('Display with Avatars', 'wpforo'); ?></label>
445
+ </p>
446
+ <?php
447
+ }
448
+ public function update( $new_instance, $old_instance ) {
449
+ $instance = array();
450
+ $instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : '';
451
+ $instance['count'] = ( ! empty( $new_instance['count'] ) ) ? intval( $new_instance['count'] ) : '';
452
+ $instance['display_avatar'] = isset( $new_instance['display_avatar'] ) ? (bool) $new_instance['display_avatar'] : false;
453
+ return $instance;
454
+ }
455
+ } // Recent topics
456
+
457
+
458
class wpForo_Widget_recent_replies extends WP_Widget {
459
function __construct() {
460
parent::__construct(
461
'wpForo_Widget_recent_replies', // Base ID
462
+ 'wpForo Recent Posts', // Name
463
+ array( 'description' => 'Your forum\'s recent posts.' ) // Args
464
);
465
}
466
public function widget( $args, $instance ) {
471
echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ). $args['after_title'];//This is a HTML content//
472
}
473
// widget content from front end
474
+ $posts_args = array(
475
'orderby' => 'modified', // forumid, order, parentid
476
'order' => 'DESC', // ASC DESC
477
'row_count' => $instance['count'] // 4 or 1 ...
478
);
479
+ $recent_posts = $wpforo->post->get_posts($posts_args);
480
echo '<div class="wpforo-widget-content"><ul>';
481
foreach( $recent_posts as $post ){
482
+ if( !$wpforo->perm->forum_can( $post['forumid'], 'vf' ) ) continue;
483
+ $post_url = $wpforo->post->get_post_url( $post );
484
$member = $wpforo->member->get_member( $post['userid'] );
485
?>
486
<li>
493
<div class="wpforo-list-item-right" <?php if( !$instance['display_avatar'] ): ?> style="width:100%"<?php endif; ?>>
494
<p class="posttitle"><a href="<?php echo esc_url($post_url) ?>"><?php echo esc_html($post['title']) ?></a></p>
495
<p class="posttext"><?php echo esc_html(wpforo_text($post['body'], 55)); ?></p>
496
+ <p class="postuser"><?php wpforo_phrase('by') ?> <a href="<?php echo esc_url($wpforo->member->profile_url($member)) ?>"><?php echo esc_html($member['display_name']) ?></a></p>
497
<p class="postdate"><?php wpforo_phrase('posted') ?>&nbsp;<?php esc_html(wpforo_date($post['created'])) ?></p>
498
</div>
499
<div class="wpf-clear"></div>
506
echo $args['after_widget'];//This is a HTML content//
507
}
508
public function form( $instance ) {
509
+ $title = ! empty( $instance['title'] ) ? $instance['title'] : 'Recent Posts';
510
$count = ! empty( $instance['count'] ) ? $instance['count'] : '9';
511
$display_avatar = isset( $instance['display_avatar'] ) ? (bool) $instance['display_avatar'] : false;
512
?>
587
}
588
add_action( 'widgets_init', 'wpforo_widget_online_members' );
589
590
+ function wpforo_widget_recent_topics() {
591
+ register_widget( 'wpForo_Widget_recent_topics' );
592
+ }
593
+ add_action( 'widgets_init', 'wpforo_widget_recent_topics' );
594
+
595
function wpforo_widget_recent_replies() {
596
register_widget( 'wpForo_Widget_recent_replies' );
597
}
wpf-includes/functions.php CHANGED
@@ -606,7 +606,16 @@ function wpforo_admin_options_tabs( $tabs, $current = 'general', $subtab = FALSE
606
607
function wpforo_content_filter( $content ){
608
$content = apply_filters('wpforo_body_text_filter', $content);
609
- $content = preg_replace('#([^\'\"]|^)(https?://[^\s\'\"<>]+)([^\'\"]|$)#isu', '$1 <a href="$2" target="_blank">$2</a> $3', $content);
610
return wpautop($content);
611
}
612
606
607
function wpforo_content_filter( $content ){
608
$content = apply_filters('wpforo_body_text_filter', $content);
609
+ $content = preg_replace('#([^\'\"]|^)(https?://[^\s\'\"<>]+\.(?:jpg|jpeg|png|gif|ico|svg|bmp|tiff))([^\'\"]|$)#isu', '$1 <a class="wpforo-auto-embeded-link" href="$2" target="_blank"><img class="wpforo-auto-embeded-image" src="$2"/></a> $3', $content);
610
+ $content = preg_replace('#([^\'\"]|^)(https?://[^\s\'\"<>]+)([^\'\"]|$)#isu', '$1 <a class="wpforo-auto-embeded-link" href="$2" target="_blank">$2</a> $3', $content);
611
+ if(preg_match_all('#<pre([^<>]*)>(.*?class=[\'"]wpforo-auto-embeded[^\'"]*[\'"].*?)</pre>#isu', $content, $matches, PREG_SET_ORDER)){
612
+ foreach($matches as $match){
613
+ $match[2] = preg_replace('#<img[^<>]*class=[\'"]wpforo-auto-embeded-image[\'"][^<>]*src=[\'"]([^\'"]*)[\'"][^<>]*>#isu', '$1', $match[2]);
614
+ $match[2] = preg_replace('#<a[^<>]*class=[\'"]wpforo-auto-embeded-link[\'"][^<>]*href=[\'"]([^\'"]*)[\'"][^<>]*>.*?</a>#isu', '$1', $match[2]);
615
+ $content = str_replace($match[0], '<pre'.$match[1].'>'.$match[2].'</pre>', $content);
616
+ }
617
+ }
618
+ $content = preg_replace('#(<a[^<>]*>[^<>]*)<a[^<>]*class=[\'"]wpforo-auto-embeded-link[\'"][^<>]*href=[\'"]([^\'"]*)[\'"][^<>]*>[^<>]*</a>([^<>]*</a>)#isu', '$1$2$3', $content);
619
return wpautop($content);
620
}
621
wpf-includes/wpf-actions.php CHANGED
@@ -242,11 +242,11 @@ function wpforo_actions(){
242
}
243
244
##Theme options
245
- if( isset($_POST['wpforo_theme_options']) ){
246
check_admin_referer( 'wpforo-settings-styles' );
247
$wpforo->theme_options['style'] = sanitize_text_field($_POST['wpforo_theme_options']['style']);
248
$wpforo->theme_options['styles'] = $_POST['wpforo_theme_options']['styles'];
249
- if( update_option('wpforo_theme_options', $wpforo->theme_options) ){
250
$wpforo->notice->add('Theme options successfully updated', 'success');
251
}else{
252
$wpforo->notice->add('Theme options successfully updated, but previous value not changed', 'success');
242
}
243
244
##Theme options
245
+ if( isset($_POST['wpforo_theme_options']) && isset($_POST['wpforo_style_options']) ){
246
check_admin_referer( 'wpforo-settings-styles' );
247
$wpforo->theme_options['style'] = sanitize_text_field($_POST['wpforo_theme_options']['style']);
248
$wpforo->theme_options['styles'] = $_POST['wpforo_theme_options']['styles'];
249
+ if( update_option('wpforo_theme_options', $wpforo->theme_options) || update_option('wpforo_style_options', $_POST['wpforo_style_options']) ){
250
$wpforo->notice->add('Theme options successfully updated', 'success');
251
}else{
252
$wpforo->notice->add('Theme options successfully updated, but previous value not changed', 'success');
wpf-includes/wpf-hooks.php CHANGED
@@ -138,7 +138,14 @@ function wpforo_load( $content ){
138
$wpforo_url = WPFORO_BASE_URL;
139
$wpforo_pageslug = basename($wpforo_url);
140
if( $post->post_name == $wpforo_pageslug ){
141
- wpforo_init_template();
142
}else{
143
return false;
144
}
@@ -462,7 +469,7 @@ function wpf_quote(){
462
463
$post = $wpforo->db->get_row('SELECT `userid`, `body` FROM '.$wpforo->db->prefix.'wpforo_posts WHERE postid =' . intval($_POST['postid']), ARRAY_A);
464
$poster = $wpforo->member->get_member(intval($post['userid']));
465
- echo '<blockquote><div class="wpforo-post-quote-author">' . wpforo_phrase('Posted by', FALSE) . ': ' . ( $poster['display_name'] ? esc_textarea($poster['display_name']) : esc_textarea($poster['user_login']) ) . '</div><i class="fa fa-quote-left fa-0x wpfcl-0"></i> &nbsp; ' . esc_textarea($post['body']) . ' &nbsp; &#160;</blockquote><br /><br />';
466
exit();
467
}
468
@@ -856,6 +863,25 @@ function wpforo_dynamic_style() {
856
}
857
add_action( 'wp_enqueue_scripts', 'wpforo_dynamic_style' );
858
859
function wpforo_admin_enqueue(){
860
global $wpforo;
861
$phrases = array(
@@ -1163,4 +1189,7 @@ add_filter( 'wpforo_add_topic_data_filter', 'wpforo_add_default_attachment' );
1163
add_filter( 'wpforo_edit_topic_data_filter', 'wpforo_add_default_attachment' );
1164
add_filter( 'wpforo_add_post_data_filter', 'wpforo_add_default_attachment' );
1165
add_filter( 'wpforo_edit_post_data_filter', 'wpforo_add_default_attachment' );
1166
?>
138
$wpforo_url = WPFORO_BASE_URL;
139
$wpforo_pageslug = basename($wpforo_url);
140
if( $post->post_name == $wpforo_pageslug ){
141
+ if(wpforo_feature('output-buffer') && function_exists('ob_start')){
142
+ ob_start();
143
+ wpforo_init_template();
144
+ return ob_get_clean();
145
+ }
146
+ else{
147
+ wpforo_init_template();
148
+ }
149
}else{
150
return false;
151
}
469
470
$post = $wpforo->db->get_row('SELECT `userid`, `body` FROM '.$wpforo->db->prefix.'wpforo_posts WHERE postid =' . intval($_POST['postid']), ARRAY_A);
471
$poster = $wpforo->member->get_member(intval($post['userid']));
472
+ echo '<blockquote><div class="wpforo-post-quote-author">' . wpforo_phrase('Posted by', FALSE) . ': ' . ( $poster['display_name'] ? esc_textarea($poster['display_name']) : esc_textarea($poster['user_login']) ) . '</div><i class="fa fa-quote-left fa-0x wpfcl-0"></i> &nbsp; ' . wpautop($post['body']) . ' &nbsp; &#160;</blockquote><br /><br />';
473
exit();
474
}
475
863
}
864
add_action( 'wp_enqueue_scripts', 'wpforo_dynamic_style' );
865
866
+ function wpforo_style_options($css, $COLORS){
867
+ global $wpforo;
868
+ if( !isset($css)) return;
869
+ if( isset($wpforo->style_options['font_size_forum']) && $wpforo->style_options['font_size_forum'] != 17 ){
870
+ $css .= "\r\n#wpforo-wrap .wpforo-forum-title{font-size: " . intval($wpforo->style_options['font_size_forum']) . "px!important; line-height: " . (intval($wpforo->style_options['font_size_forum']) + 1) . "px!important;}";
871
+ }
872
+ if( isset($wpforo->style_options['font_size_topic']) && $wpforo->style_options['font_size_topic'] != 16 ){
873
+ $css .= "\r\n#wpforo-wrap .wpforo-topic-title a { font-size: " . intval($wpforo->style_options['font_size_topic']) . "px!important; line-height: " . (intval($wpforo->style_options['font_size_topic']) + 4) . "px!important; }";
874
+ }
875
+ if( isset($wpforo->style_options['font_size_post_content']) && $wpforo->style_options['font_size_post_content'] != 14 ){
876
+ $css .= "\r\n#wpforo-wrap .wpforo-post .wpf-right .wpforo-post-content {font-size: " . intval($wpforo->style_options['font_size_post_content']) . "px!important; line-height: " . (intval($wpforo->style_options['font_size_post_content']) + 4) . "px!important;}\r\n#wpforo-wrap .wpforo-post .wpf-right .wpforo-post-content p {font-size: " . intval($wpforo->style_options['font_size_post_content']) . "px;}";
877
+ }
878
+ if( isset($wpforo->style_options['custom_css']) ){
879
+ $css .= "\r\n" . $wpforo->style_options['custom_css'];
880
+ }
881
+ return $css;
882
+ }
883
+ add_filter( 'wpforo_dynamic_css_filter' , 'wpforo_style_options' , 10, 2 );
884
+
885
function wpforo_admin_enqueue(){
886
global $wpforo;
887
$phrases = array(
1189
add_filter( 'wpforo_edit_topic_data_filter', 'wpforo_add_default_attachment' );
1190
add_filter( 'wpforo_add_post_data_filter', 'wpforo_add_default_attachment' );
1191
add_filter( 'wpforo_edit_post_data_filter', 'wpforo_add_default_attachment' );
1192
+
1193
+ add_filter('wpforo_body_text_filter', 'wp_encode_emoji', 9);
1194
+ add_filter('wpforo_body_text_filter', 'convert_smilies');
1195
?>
wpf-includes/wpf-phrases.php CHANGED
@@ -58,6 +58,7 @@ $wpforo_phrases = array(
58
'Comments' => __('Comments', 'wpforo'),
59
'Confirm my subscription' => __('Confirm my subscription', 'wpforo'),
60
'Current active theme' => __('Current active theme', 'wpforo'),
61
'Custom Authorization URLs' => __('Custom Authorization URLs', 'wpforo'),
62
'Custom Title' => __('Custom Title', 'wpforo'),
63
'Dashboard Menu Position' => __('Dashboard Menu Position', 'wpforo'),
@@ -81,6 +82,7 @@ $wpforo_phrases = array(
81
'Enable wpForo Font-Awesome Lib' => __('Enable wpForo Font-Awesome Lib', 'wpforo'),
82
'Enable wpForo SEO for Meta Tags' => __('Enable wpForo SEO for Meta Tags', 'wpforo'),
83
'Enable wpForo SEO for Meta Titles' => __('Enable wpForo SEO for Meta Titles', 'wpforo'),
84
'Enter description here . . .' => __('Enter description here . . .', 'wpforo'),
85
'Enter forum title here' => __('Enter forum title here', 'wpforo'),
86
'Enter title here' => __('Enter title here', 'wpforo'),
@@ -324,6 +326,7 @@ $wpforo_phrases = array(
324
'Theme file not readable' => __('Theme file not readable', 'wpforo'),
325
'This action will also delete all sub-forums, topics and replies.' => __('This action will also delete all sub-forums, topics and replies.', 'wpforo'),
326
'This is a forum description. This content will be displayed under forum title on the forum list.' => __('This is a forum description. This content will be displayed under forum title on the forum list.', 'wpforo'),
327
'This message comes from post reporting pop-up form.' => __('This message comes from post reporting pop-up form.', 'wpforo'),
328
'This option doesn\'t affect website admins.' => __('This option doesn\'t affect website admins.', 'wpforo'),
329
'Timezone' => __('Timezone', 'wpforo'),
@@ -472,6 +475,7 @@ $wpforo_phrases = array(
472
'Phrase update error' => __('Phrase update error', 'wpforo'),
473
'Please insert required fields!' => __('Please insert required fields!', 'wpforo'),
474
'Post delete error' => __('Post delete error', 'wpforo'),
475
'Post options successfully updated' => __('Post options successfully updated', 'wpforo'),
476
'Post options successfully updated, but previous value not changed' => __('Post options successfully updated, but previous value not changed', 'wpforo'),
477
'Registration Error' => __('Registration Error', 'wpforo'),
58
'Comments' => __('Comments', 'wpforo'),
59
'Confirm my subscription' => __('Confirm my subscription', 'wpforo'),
60
'Current active theme' => __('Current active theme', 'wpforo'),
61
+ 'Custom CSS Code' => __('Custom CSS Code', 'wpforo'),
62
'Custom Authorization URLs' => __('Custom Authorization URLs', 'wpforo'),
63
'Custom Title' => __('Custom Title', 'wpforo'),
64
'Dashboard Menu Position' => __('Dashboard Menu Position', 'wpforo'),
82
'Enable wpForo Font-Awesome Lib' => __('Enable wpForo Font-Awesome Lib', 'wpforo'),
83
'Enable wpForo SEO for Meta Tags' => __('Enable wpForo SEO for Meta Tags', 'wpforo'),
84
'Enable wpForo SEO for Meta Titles' => __('Enable wpForo SEO for Meta Titles', 'wpforo'),
85
+ 'Enable Output Buffer' => __('Enable Output Buffer', 'wpforo'),
86
'Enter description here . . .' => __('Enter description here . . .', 'wpforo'),
87
'Enter forum title here' => __('Enter forum title here', 'wpforo'),
88
'Enter title here' => __('Enter title here', 'wpforo'),
326
'Theme file not readable' => __('Theme file not readable', 'wpforo'),
327
'This action will also delete all sub-forums, topics and replies.' => __('This action will also delete all sub-forums, topics and replies.', 'wpforo'),
328
'This is a forum description. This content will be displayed under forum title on the forum list.' => __('This is a forum description. This content will be displayed under forum title on the forum list.', 'wpforo'),
329
+ 'This feature is useful if you\'re adding content before or after [wpforo-index] shortcode in page content. Also it useful if forum is loaded before website header, on top of the front-end.' => __('This feature is useful if you\'re adding content before or after [wpforo-index] shortcode in page content. Also it useful if forum is loaded before website header, on top of the front-end.', 'wpforo'),
330
'This message comes from post reporting pop-up form.' => __('This message comes from post reporting pop-up form.', 'wpforo'),
331
'This option doesn\'t affect website admins.' => __('This option doesn\'t affect website admins.', 'wpforo'),
332
'Timezone' => __('Timezone', 'wpforo'),
475
'Phrase update error' => __('Phrase update error', 'wpforo'),
476
'Please insert required fields!' => __('Please insert required fields!', 'wpforo'),
477
'Post delete error' => __('Post delete error', 'wpforo'),
478
+ 'Post Content' => __('Post Content', 'wpforo'),
479
'Post options successfully updated' => __('Post options successfully updated', 'wpforo'),
480
'Post options successfully updated, but previous value not changed' => __('Post options successfully updated, but previous value not changed', 'wpforo'),
481
'Registration Error' => __('Registration Error', 'wpforo'),
wpf-languages/wpforo-cs_CZ.mo CHANGED
Binary file
wpf-languages/wpforo-cs_CZ.po CHANGED
@@ -1,2322 +1,2377 @@
1
- # Copyright (C) 2016 gVectors Team
2
- # This file is distributed under the same license as the wpForo package.
3
- msgid ""
4
- msgstr ""
5
- "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
6
- "Project-Id-Version: Forum - wpForo\n"
7
- "POT-Creation-Date: 2016-06-30 22:00+0400\n"
8
- "PO-Revision-Date: 2016-06-30 22:00+0400\n"
9
- "Language-Team: \n"
10
- "MIME-Version: 1.0\n"
11
- "Content-Type: text/plain; charset=UTF-8\n"
12
- "Content-Transfer-Encoding: 8bit\n"
13
- "X-Generator: Poedit 1.8.6\n"
14
- "X-Poedit-Basepath: ..\n"
15
- "X-Poedit-WPHeader: wpforo.php\n"
16
- "X-Poedit-SourceCharset: UTF-8\n"
17
- "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
18
- "esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
19
- "_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
20
- "Last-Translator: \n"
21
- "Language: cs_CZ\n"
22
- "X-Poedit-SearchPath-0: .\n"
23
- "X-Poedit-SearchPathExcluded-0: *.js\n"
24
-
25
- #: wpf-admin/dashboard.php:7 wpf-includes/wpf-phrases.php:403
26
- msgid "wpForo Dashboard"
27
- msgstr ""
28
-
29
- #: wpf-admin/dashboard.php:23 wpf-includes/wpf-phrases.php:356
30
- msgid "Welcome Message"
31
- msgstr ""
32
-
33
- #: wpf-admin/dashboard.php:29
34
- msgid ""
35
- "Thank you for trying wpForo! This forum development was started on 2013 and "
36
- "we were using it for our support community. Now it's ready for WordPress "
37
- "community as well. \n"
38
- " It's on the Beta stage and we're working "
39
- "hard to reach the Gold 1.0.0 version as soon as possible. \n"
40
- " wpForo is a professional bulletin board "
41
- "for WorPress, and the only forum software which comes with Multi-layout "
42
- "template system.\n"
43
- " The \"Extended\", \"Simplified\" and "
44
- "\"Question &amp Answer\" layouts fit almost all type of discussions needs. "
45
- "You can use wpForo for small and extremely large communities. \n"
46
- " <br />If you found some issue or bug "
47
- "please open a support topic in plugin page or in our support forum at "
48
- "gVectors.com. If you liked wpForo please leave some good review for this "
49
- "plugin. We really need your good reviews. \n"
50
- " If you didn't like wpForo please leave a "
51
- "list of issues and requirements you'd like us to fix and add in near future. "
52
- "We're here to help you and improve wpForo as much as possible."
53
- msgstr ""
54
-
55
- #: wpf-admin/dashboard.php:60 wpf-includes/wpf-phrases.php:128
56
- msgid "General Information"
57
- msgstr ""
58
-
59
- #: wpf-admin/dashboard.php:64 wpf-includes/wpf-phrases.php:363
60
- msgid "You are currently running"
61
- msgstr ""
62
-
63
- #: wpf-admin/dashboard.php:65 wpf-includes/wpf-phrases.php:18
64
- msgid "Active Theme"
65
- msgstr ""
66
-
67
- #: wpf-admin/dashboard.php:66 wpf-includes/wpf-phrases.php:408
68
- msgid "wpForo Website"
69
- msgstr ""
70
-
71
- #: wpf-admin/dashboard.php:67 wpf-includes/wpf-phrases.php:316
72
- msgid "Support Forum"
73
- msgstr ""
74
-
75
- #: wpf-admin/dashboard.php:78 wpf-includes/wpf-phrases.php:286
76
- msgid "Server Information"
77
- msgstr ""
78
-
79
- #: wpf-admin/dashboard.php:108 wpf-includes/wpf-phrases.php:46
80
- msgid "Available"
81
- msgstr ""
82
-
83
- #: wpf-admin/dashboard.php:108 wpf-includes/wpf-phrases.php:205
84
- msgid "Not available"
85
- msgstr ""
86
-
87
- #: wpf-admin/dashboard.php:126 wpf-includes/wpf-phrases.php:49
88
- msgid "Board Statistic"
89
- msgstr ""
90
-
91
- #: wpf-admin/dashboard.php:132 wpf-admin/options.php:14
92
- #: wpf-includes/wpf-phrases.php:121
93
- msgid "Forums"
94
- msgstr ""
95
-
96
- #: wpf-admin/dashboard.php:136 wpf-includes/class-forums.php:537
97
- #: wpf-includes/wpf-phrases.php:334
98
- msgid "Topics"
99
- msgstr ""
100
-
101
- #: wpf-admin/dashboard.php:140 wpf-includes/class-forums.php:537
102
- #: wpf-includes/wpf-phrases.php:229
103
- msgid "Posts"
104
- msgstr ""
105
-
106
- #: wpf-admin/dashboard.php:144 wpf-admin/member.php:10 wpf-admin/options.php:17
107
- #: wpf-includes/wpf-phrases.php:175
108
- msgid "Members"
109
- msgstr ""
110
-
111
- #: wpf-admin/dashboard.php:148 wpf-includes/wpf-phrases.php:176
112
- msgid "Members Online"
113
- msgstr ""
114
-
115
- #: wpf-admin/dashboard.php:155 wpf-includes/wpf-phrases.php:44
116
- msgid "Attachments"
117
- msgstr ""
118
-
119
- #: wpf-admin/dashboard.php:159 wpf-includes/wpf-phrases.php:45
120
- msgid "Attachments Size"
121
- msgstr ""
122
-
123
- #: wpf-admin/forum.php:13 wpf-includes/functions.php:548
124
- #: wpf-includes/wpf-phrases.php:298
125
- msgid "Show on screen"
126
- msgstr ""
127
-
128
- #: wpf-admin/forum.php:15 wpf-admin/forum.php:114
129
- #: wpf-includes/wpf-phrases.php:111
130
- msgid "Forum Options"
131
- msgstr ""
132
-
133
- #: wpf-admin/forum.php:16 wpf-includes/wpf-phrases.php:220
134
- msgid "Permissions"
135
- msgstr ""
136
-
137
- #: wpf-admin/forum.php:17 wpf-includes/wpf-phrases.php:303
138
- msgid "Slug"
139
- msgstr ""
140
-
141
- #: wpf-admin/forum.php:18 wpf-includes/wpf-phrases.php:110
142
- msgid "Forum Meta"
143
- msgstr ""
144
-
145
- #: wpf-admin/forum.php:21 wpf-includes/wpf-phrases.php:270
146
- msgid "Screen Layout"
147
- msgstr ""
148
-
149
- #: wpf-admin/forum.php:22 wpf-includes/wpf-phrases.php:206
150
- msgid "Number of Columns"
151
- msgstr ""
152
-
153
- #: wpf-admin/forum.php:32 wpf-includes/functions.php:562
154
- #: wpf-includes/wpf-phrases.php:271
155
- msgid "Screen Options"
156
- msgstr ""
157
-
158
- #: wpf-admin/forum.php:43 wpf-includes/wpf-phrases.php:51
159
- msgid "Categories and Forums"
160
- msgstr ""
161
-
162
- #: wpf-admin/forum.php:44 wpf-admin/options-tabs/general.php:42
163
- #: wpf-admin/themes.php:10 wpf-admin/usergroup.php:8
164
- #: wpf-includes/wpf-phrases.php:20
165
- msgid "Add New"
166
- msgstr ""
167
-
168
- #: wpf-admin/forum.php:55 wpf-includes/wpf-phrases.php:222
169
- msgid "Please drag and drop forum panels to set parent-child hierarchy."
170
- msgstr ""
171
-
172
- #: wpf-admin/forum.php:69 wpf-includes/wpf-phrases.php:269
173
- msgid "Save forums order and hierarchy"
174
- msgstr ""
175
-
176
- #: wpf-admin/forum.php:96 wpf-includes/wpf-phrases.php:85
177
- msgid "Enter forum title here"
178
- msgstr ""
179
-
180
- #: wpf-admin/forum.php:101 wpf-includes/wpf-phrases.php:84
181
- msgid "Enter description here . . ."
182
- msgstr ""
183
-
184
- #: wpf-admin/forum.php:102 wpf-includes/wpf-phrases.php:326
185
- msgid ""
186
- "This is a forum description. This content will be displayed under forum "
187
- "title on the forum list."
188
- msgstr ""
189
-
190
- #: wpf-admin/forum.php:117 wpf-includes/wpf-phrases.php:218
191
- msgid "Parent Forum"
192
- msgstr ""
193
-
194
- #: wpf-admin/forum.php:120 wpf-includes/wpf-phrases.php:201
195
- msgid "No parent"
196
- msgstr ""
197
-
198
- #: wpf-admin/forum.php:125 wpf-includes/wpf-phrases.php:342
199
- msgid "Use as Category"
200
- msgstr ""
201
-
202
- #: wpf-admin/forum.php:127 wpf-includes/wpf-phrases.php:52
203
- msgid "Category Layout"
204
- msgstr ""
205
-
206
- #: wpf-admin/forum.php:137 wpf-includes/wpf-phrases.php:199
207
- msgid "No layout found."
208
- msgstr ""
209
-
210
- #: wpf-admin/forum.php:146 wpf-admin/forum.php:153
211
- #: wpf-includes/wpf-phrases.php:231
212
- msgid "Publish"
213
- msgstr ""
214
-
215
- #: wpf-admin/forum.php:150 wpf-includes/wpf-phrases.php:37
216
- msgid "Are you sure you want to delete this forum?"
217
- msgstr ""
218
-
219
- #: wpf-admin/forum.php:150 wpf-admin/themes.php:73 wpf-admin/usergroup.php:37
220
- #: wpf-admin/usergroup.php:133 wpf-includes/functions.php:256
221
- #: wpf-includes/functions.php:469 wpf-includes/wpf-hooks.php:807
222
- #: wpf-includes/wpf-phrases.php:65
223
- msgid "Delete"
224
- msgstr ""
225
-
226
- #: wpf-admin/forum.php:151 wpf-admin/usergroup.php:39
227
- #: wpf-includes/class-forums.php:543 wpf-includes/wpf-phrases.php:350
228
- msgid "View"
229
- msgstr ""
230
-
231
- #: wpf-admin/forum.php:221 wpf-includes/wpf-phrases.php:116
232
- msgid "Forum Slug"
233
- msgstr ""
234
-
235
- #: wpf-admin/forum.php:224 wpf-includes/wpf-phrases.php:319
236
- msgid ""
237
- "The \"slug\" is the URL-friendly version of the name. It is usually all "
238
- "lowercase and contains only letters, numbers, and hyphens."
239
- msgstr ""
240
-
241
- #: wpf-admin/forum.php:230 wpf-includes/wpf-phrases.php:114
242
- msgid "Forum SEO"
243
- msgstr ""
244
-
245
- #: wpf-admin/forum.php:233 wpf-includes/wpf-phrases.php:180
246
- msgid "Meta Description"
247
- msgstr ""
248
-
249
- #: wpf-admin/forum.php:262 wpf-includes/wpf-phrases.php:325
250
- msgid "This action will also delete all sub-forums, topics and replies."
251
- msgstr ""
252
-
253
- #: wpf-admin/forum.php:270 wpf-includes/wpf-phrases.php:135
254
- msgid ""
255
- "If you want to delete this forum and keep its sub-forums, topics and "
256
- "replies, please select a new target forum in dropdown below"
257
- msgstr ""
258
-
259
- #: wpf-admin/forum.php:279 wpf-includes/wpf-phrases.php:26
260
- msgid ""
261
- "All sub-forums, topics and replies will be attached to selected forum. "
262
- "Layout will be inherited from this forum."
263
- msgstr ""
264
-
265
- #: wpf-admin/options-tabs/accesses.php:9 wpf-includes/wpf-phrases.php:21
266
- msgid "Add New Forum Access"
267
- msgstr ""
268
-
269
- #: wpf-admin/options-tabs/accesses.php:13 wpf-includes/wpf-phrases.php:15
270
- msgid "Access names"
271
- msgstr ""
272
-
273
- #: wpf-admin/options-tabs/accesses.php:27 wpf-includes/class-forums.php:539
274
- #: wpf-includes/wpf-phrases.php:376
275
- msgid "edit"
276
- msgstr ""
277
-
278
- #: wpf-admin/options-tabs/accesses.php:28 wpf-includes/wpf-phrases.php:39
279
- msgid ""
280
- "Are you sure you want to remove this access set? Usergroups which attached "
281
- "to this access will lost all forum permissions."
282
- msgstr ""
283
-
284
- #: wpf-admin/options-tabs/accesses.php:28 wpf-includes/class-forums.php:541
285
- #: wpf-includes/wpf-phrases.php:375
286
- msgid "delete"
287
- msgstr ""
288
-
289
- #: wpf-admin/options-tabs/accesses.php:42 wpf-includes/wpf-phrases.php:14
290
- msgid "Access name"
291
- msgstr ""
292
-
293
- #: wpf-admin/options-tabs/accesses.php:62 wpf-includes/wpf-phrases.php:267
294
- msgid "Save"
295
- msgstr ""
296
-
297
- #: wpf-admin/options-tabs/accesses.php:62 wpf-includes/wpf-phrases.php:339
298
- msgid "Update"
299
- msgstr ""
300
-
301
- #: wpf-admin/options-tabs/features.php:9 wpf-includes/wpf-phrases.php:291
302
- msgid "Show Admin Bar for Members"
303
- msgstr ""
304
-
305
- #: wpf-admin/options-tabs/features.php:9 wpf-includes/wpf-phrases.php:328
306
- msgid "This option doesn't affect website admins."
307
- msgstr ""
308
-
309
- #: wpf-admin/options-tabs/features.php:10 wpf-includes/wpf-phrases.php:293
310
- msgid "Show Forum Page Title"
311
- msgstr ""
312
-
313
- #: wpf-admin/options-tabs/features.php:11 wpf-includes/wpf-phrases.php:296
314
- msgid "Show Top/Menu Bar"
315
- msgstr ""
316
-
317
- #: wpf-admin/options-tabs/features.php:12 wpf-includes/wpf-phrases.php:295
318
- msgid "Show Top Search"
319
- msgstr ""
320
-
321
- #: wpf-admin/options-tabs/features.php:13 wpf-includes/wpf-phrases.php:292
322
- msgid "Show Breadcrumb"
323
- msgstr ""
324
-
325
- #: wpf-admin/options-tabs/features.php:14 wpf-includes/wpf-phrases.php:294
326
- msgid "Show Forum Statistic"
327
- msgstr ""
328
-
329
- #: wpf-admin/options-tabs/features.php:15 wpf-includes/wpf-phrases.php:254
330
- msgid "Replace Author Link to Forum Profile"
331
- msgstr ""
332
-
333
- #: wpf-admin/options-tabs/features.php:16 wpf-includes/wpf-phrases.php:255
334
- msgid "Replace Comment Author Link to Forum Profile"
335
- msgstr ""
336
-
337
- #: wpf-admin/options-tabs/features.php:17 wpf-includes/wpf-phrases.php:257
338
- msgid "Replace Registration Page URL to Forum URL"
339
- msgstr ""
340
-
341
- #: wpf-admin/options-tabs/features.php:18 wpf-includes/wpf-phrases.php:256
342
- msgid "Replace Login Page URL to Forum URL"
343
- msgstr ""
344
-
345
- #: wpf-admin/options-tabs/features.php:19 wpf-includes/wpf-phrases.php:253
346
- msgid "Replace Author Avatar with Forum Profile Avatar"
347
- msgstr ""
348
-
349
- #: wpf-admin/options-tabs/features.php:20 wpf-includes/wpf-phrases.php:76
350
- msgid "Enable Avatars"
351
- msgstr ""
352
-
353
- #: wpf-admin/options-tabs/features.php:21 wpf-includes/wpf-phrases.php:77
354
- msgid "Enable Custom Avatars"
355
- msgstr ""
356
-
357
- #: wpf-admin/options-tabs/features.php:22 wpf-includes/wpf-phrases.php:31
358
- msgid "Allow Member Signature"
359
- msgstr ""
360
-
361
- #: wpf-admin/options-tabs/features.php:23 wpf-includes/wpf-phrases.php:79
362
- msgid "Enable Member Rating"
363
- msgstr ""
364
-
365
- #: wpf-admin/options-tabs/features.php:24 wpf-includes/wpf-phrases.php:80
366
- msgid "Enable Member Rating Titles"
367
- msgstr ""
368
-
369
- #: wpf-admin/options-tabs/features.php:25 wpf-includes/wpf-phrases.php:78
370
- msgid "Enable Member Cashe"
371
- msgstr ""
372
-
373
- #: wpf-admin/options-tabs/features.php:26 wpf-includes/wpf-phrases.php:83
374
- msgid "Enable wpForo SEO for Meta Titles"
375
- msgstr ""
376
-
377
- #: wpf-admin/options-tabs/features.php:27 wpf-includes/wpf-phrases.php:82
378
- msgid "Enable wpForo SEO for Meta Tags"
379
- msgstr ""
380
-
381
- #: wpf-admin/options-tabs/features.php:28 wpf-includes/wpf-phrases.php:81
382
- msgid "Enable wpForo Font-Awesome Lib"
383
- msgstr ""
384
-
385
- #: wpf-admin/options-tabs/features.php:29 wpf-includes/wpf-phrases.php:132
386
- msgid "Help wpForo to grow, show plugin info"
387
- msgstr ""
388
-
389
- #: wpf-admin/options-tabs/features.php:29 wpf-includes/wpf-phrases.php:223
390
- msgid ""
391
- "Please enable this option to help wpForo get more popularity as your thank "
392
- "to the hard work we do for you totally free. This option adds a very small "
393
- "icon in forum footer, which will allow your site visitors recognize the name "
394
- "of forum solution you use."
395
- msgstr ""
396
-
397
- #: wpf-admin/options-tabs/features.php:46 wpf-includes/wpf-phrases.php:361
398
- msgid "Yes"
399
- msgstr ""
400
-
401
- #: wpf-admin/options-tabs/features.php:47 wpf-includes/wpf-phrases.php:193
402
- msgid "No"
403
- msgstr ""
404
-
405
- #: wpf-admin/options-tabs/features.php:57 wpf-admin/options-tabs/forums.php:16
406
- #: wpf-admin/options-tabs/general.php:49 wpf-admin/options-tabs/members.php:86
407
- #: wpf-admin/options-tabs/posts.php:57 wpf-admin/options-tabs/styles.php:46
408
- #: wpf-admin/options-tabs/subscriptions.php:75 wpf-includes/wpf-phrases.php:340
409
- msgid "Update Options"
410
- msgstr ""
411
-
412
- #: wpf-admin/options-tabs/general.php:14 wpf-includes/wpf-phrases.php:119
413
- msgid "Forum Title"
414
- msgstr ""
415
-
416
- #: wpf-admin/options-tabs/general.php:18 wpf-includes/wpf-phrases.php:106
417
- msgid "Forum Description"
418
- msgstr ""
419
-
420
- #: wpf-admin/options-tabs/general.php:22 wpf-includes/wpf-phrases.php:105
421
- msgid "Forum Base URL"
422
- msgstr ""
423
-
424
- #: wpf-admin/options-tabs/general.php:27 wpf-includes/wpf-phrases.php:63
425
- msgid "Dashboard Menu Position"
426
- msgstr ""
427
-
428
- #: wpf-admin/options-tabs/general.php:28 wpf-includes/wpf-phrases.php:320
429
- msgid "The position in the menu order wpForo should appear."
430
- msgstr ""
431
-
432
- #: wpf-admin/options-tabs/general.php:29 wpf-includes/wpf-phrases.php:344
433
- msgid ""
434
- "Use greater than 5 - below Posts, 10 - below Media, 15 - below Links, 20 - "
435
- "below Pages, 25 - below comments, 60 - below first separator, 65 - below "
436
- "Plugins, 70 - below Users, 75 - below Tools, 80 - below Settings, 100 - "
437
- "below second separator"
438
- msgstr ""
439
-
440
- #: wpf-admin/options-tabs/general.php:37 wpf-includes/wpf-phrases.php:108
441
- msgid "Forum Language"
442
- msgstr ""
443
-
444
- #: wpf-admin/options-tabs/general.php:61 wpf-includes/wpf-phrases.php:142
445
- msgid "Language XML file"
446
- msgstr ""
447
-
448
- #: wpf-admin/options-tabs/general.php:70 wpf-includes/wpf-phrases.php:22
449
- msgid "Add New Language"
450
- msgstr ""
451
-
452
- #: wpf-admin/options-tabs/members.php:13 wpf-includes/wpf-phrases.php:214
453
- msgid "Online status timeout"
454
- msgstr ""
455
-
456
- #: wpf-admin/options-tabs/members.php:16 wpf-admin/options-tabs/posts.php:19
457
- #: wpf-admin/options-tabs/posts.php:23 wpf-admin/options-tabs/posts.php:31
458
- #: wpf-admin/options-tabs/posts.php:35 wpf-includes/wpf-phrases.php:385
459
- msgid "minutes"
460
- msgstr ""
461
-
462
- #: wpf-admin/options-tabs/members.php:20 wpf-includes/wpf-phrases.php:177
463
- msgid "Members URL structure"
464
- msgstr ""
465
-
466
- #: wpf-admin/options-tabs/members.php:30 wpf-includes/wpf-phrases.php:61
467
- msgid "Custom Authorisation URLs"
468
- msgstr ""
469
-
470
- #: wpf-admin/options-tabs/members.php:41 wpf-includes/wpf-phrases.php:160
471
- msgid "Login URL"
472
- msgstr ""
473
-
474
- #: wpf-admin/options-tabs/members.php:42 wpf-includes/wpf-phrases.php:249
475
- msgid "Register URL"
476
- msgstr ""
477
-
478
- #: wpf-admin/options-tabs/members.php:43 wpf-includes/wpf-phrases.php:162
479
- msgid "Lost Password URL"
480
- msgstr ""
481
-
482
- #: wpf-admin/options-tabs/members.php:49 wpf-includes/wpf-phrases.php:172
483
- msgid "Member Reputation"
484
- msgstr ""
485
-
486
- #: wpf-admin/options-tabs/members.php:57 wpf-includes/wpf-phrases.php:244
487
- msgid "Rating Level"
488
- msgstr ""
489
-
490
- #: wpf-admin/options-tabs/members.php:58 wpf-includes/wpf-phrases.php:181
491
- msgid "Min Number of Posts"
492
- msgstr ""
493
-
494
- #: wpf-admin/options-tabs/members.php:59 wpf-includes/wpf-phrases.php:173
495
- msgid "Member Title"
496
- msgstr ""
497
-
498
- #: wpf-admin/options-tabs/members.php:60 wpf-includes/wpf-phrases.php:290
499
- msgid "Short Badge"
500
- msgstr ""
501
-
502
- #: wpf-admin/options-tabs/members.php:61 wpf-includes/wpf-phrases.php:126
503
- msgid "Full Badge"
504
- msgstr ""
505
-
506
- #: wpf-admin/options-tabs/members.php:62 wpf-includes/wpf-phrases.php:242
507
- msgid "Rating Color"
508
- msgstr ""
509
-
510
- #: wpf-admin/options-tabs/members.php:63 wpf-includes/wpf-phrases.php:243
511
- msgid "Rating Icon"
512
- msgstr ""
513
-
514
- #: wpf-admin/options-tabs/members.php:63 wpf-includes/wpf-phrases.php:183
515
- msgid "More"
516
- msgstr ""
517
-
518
- #: wpf-admin/options-tabs/members.php:68 wpf-includes/wpf-phrases.php:156
519
- msgid "Level"
520
- msgstr ""
521
-
522
- #: wpf-admin/options-tabs/members.php:69 wpf-includes/wpf-phrases.php:208
523
- msgid "Number of Posts"
524
- msgstr ""
525
-
526
- #: wpf-admin/options-tabs/members.php:70 wpf-includes/wpf-phrases.php:62
527
- msgid "Custom Title"
528
- msgstr ""
529
-
530
- #: wpf-admin/options-tabs/members.php:73 wpf-includes/wpf-phrases.php:56
531
- msgid "Color"
532
- msgstr ""
533
-
534
- #: wpf-admin/options-tabs/members.php:74 wpf-includes/wpf-phrases.php:48
535
- msgid "Badge Icon"
536
- msgstr ""
537
-
538
- #: wpf-admin/options-tabs/plugins.php:9
539
- msgid ""
540
- "Thank you for using wpForo. wpForo is a premium forum plugin which will "
541
- "always be available for free. There will never be paid and pro versions of "
542
- "this forum board. However this is a very large and hard project so we also "
543
- "develop paid addons (extensions), which will financially help us to keep "
544
- "improving and adding new features to the free wpForo plugin. Forum addons "
545
- "will also be actively developed. The first addons \"Advanced Media Uploader"
546
- "\", \"Polls\", \"Private Messages\" and \"Ad Manager\" will be available "
547
- "very soon. Once you got some addon and activated that, you will find "
548
- "settings in vertical subTabs here."
549
- msgstr ""
550
-
551
- #: wpf-admin/options-tabs/posts.php:14 wpf-includes/wpf-phrases.php:210
552
- msgid "Number of Topics per Page"
553
- msgstr ""
554
-
555
- #: wpf-admin/options-tabs/posts.php:18 wpf-includes/wpf-phrases.php:30
556
- msgid "Allow Edit Own Topic for"
557
- msgstr ""
558
-
559
- #: wpf-admin/options-tabs/posts.php:22 wpf-includes/wpf-phrases.php:27
560
- msgid "Allow Delete Own Topic for"
561
- msgstr ""
562
-
563
- #: wpf-admin/options-tabs/posts.php:26 wpf-includes/wpf-phrases.php:209
564
- msgid "Number of Posts per Page"
565
- msgstr ""
566
-
567
- #: wpf-admin/options-tabs/posts.php:30 wpf-includes/wpf-phrases.php:29
568
- msgid "Allow Edit Own Post for"
569
- msgstr ""
570
-
571
- #: wpf-admin/options-tabs/posts.php:34 wpf-includes/wpf-phrases.php:28
572
- msgid "Allow Delete Own post for"
573
- msgstr ""
574
-
575
- #: wpf-admin/options-tabs/posts.php:40 wpf-includes/wpf-phrases.php:167
576
- msgid "Maximum upload file size"
577
- msgstr ""
578
-
579
- #: wpf-admin/options-tabs/posts.php:41 wpf-includes/wpf-phrases.php:365
580
- msgid ""
581
- "You can not set this value more than \"upload_max_filesize\" and "
582
- "\"post_max_size\". If you want to increase server parameters please contact "
583
- "to your hosting service support."
584
- msgstr ""
585
-
586
- #: wpf-admin/options-tabs/posts.php:44 wpf-includes/wpf-phrases.php:164
587
- msgid "MB"
588
- msgstr ""
589
-
590
- #: wpf-admin/options-tabs/posts.php:47 wpf-includes/wpf-phrases.php:285
591
- msgid "Server \"upload_max_filesize\" is "
592
- msgstr ""
593
-
594
- #: wpf-admin/options-tabs/posts.php:48 wpf-includes/wpf-phrases.php:284
595
- msgid "Server \"post_max_size\" is "
596
- msgstr ""
597
-
598
- #: wpf-admin/options-tabs/subscriptions.php:13 wpf-includes/wpf-phrases.php:124
599
- msgid "From Name"
600
- msgstr ""
601
-
602
- #: wpf-admin/options-tabs/subscriptions.php:17 wpf-includes/wpf-phrases.php:123
603
- msgid "From Email Address"
604
- msgstr ""
605
-
606
- #: wpf-admin/options-tabs/subscriptions.php:22 wpf-includes/wpf-phrases.php:104
607
- msgid "Forum Admin Email Addresses"
608
- msgstr ""
609
-
610
- #: wpf-admin/options-tabs/subscriptions.php:23 wpf-includes/wpf-phrases.php:57
611
- msgid ""
612
- "Comma separated email addresses of forum administrators to get forum "
613
- "notifications. For example post report messages."
614
- msgstr ""
615
-
616
- #: wpf-admin/options-tabs/subscriptions.php:29 wpf-includes/wpf-phrases.php:314
617
- msgid "Subscription Emails"
618
- msgstr ""
619
-
620
- #: wpf-admin/options-tabs/subscriptions.php:33 wpf-includes/wpf-phrases.php:311
621
- msgid "Subscribe confirmation email subject"
622
- msgstr ""
623
-
624
- #: wpf-admin/options-tabs/subscriptions.php:37 wpf-includes/wpf-phrases.php:310
625
- msgid "Subscribe confirmation email message"
626
- msgstr ""
627
-
628
- #: wpf-admin/options-tabs/subscriptions.php:41 wpf-includes/wpf-phrases.php:192
629
- msgid "New topic notification email subject"
630
- msgstr ""
631
-
632
- #: wpf-admin/options-tabs/subscriptions.php:45 wpf-includes/wpf-phrases.php:191
633
- msgid "New topic notification email message"
634
- msgstr ""
635
-
636
- #: wpf-admin/options-tabs/subscriptions.php:49 wpf-includes/wpf-phrases.php:190
637
- msgid "New reply notification email subject"
638
- msgstr ""
639
-
640
- #: wpf-admin/options-tabs/subscriptions.php:53 wpf-includes/wpf-phrases.php:189
641
- msgid "New reply notification email message"
642
- msgstr ""
643
-
644
- #: wpf-admin/options-tabs/subscriptions.php:58 wpf-includes/wpf-phrases.php:224
645
- msgid "Post Reporting Emails"
646
- msgstr ""
647
-
648
- #: wpf-admin/options-tabs/subscriptions.php:59 wpf-includes/wpf-phrases.php:327
649
- msgid "This message comes from post reporting pop-up form."
650
- msgstr ""
651
-
652
- #: wpf-admin/options-tabs/subscriptions.php:64 wpf-includes/wpf-phrases.php:263
653
- msgid "Report message subject"
654
- msgstr ""
655
-
656
- #: wpf-admin/options-tabs/subscriptions.php:69 wpf-includes/wpf-phrases.php:262
657
- msgid "Report message body"
658
- msgstr ""
659
-
660
- #: wpf-admin/options.php:8 wpf-includes/wpf-phrases.php:115
661
- msgid "Forum Settings"
662
- msgstr ""
663
-
664
- #: wpf-admin/options.php:13 wpf-includes/wpf-phrases.php:127
665
- msgid "General"
666
- msgstr ""
667
-
668
- #: wpf-admin/options.php:15 wpf-includes/wpf-phrases.php:103
669
- msgid "Forum Accesses"
670
- msgstr ""
671
-
672
- #: wpf-admin/options.php:16 wpf-includes/wpf-phrases.php:335
673
- msgid "Topics &amp; Posts"
674
- msgstr ""
675
-
676
- #: wpf-admin/options.php:18 wpf-includes/wpf-phrases.php:75
677
- msgid "Emails"
678
- msgstr ""
679
-
680
- #: wpf-admin/options.php:19 wpf-includes/wpf-phrases.php:94
681
- msgid "Features"
682
- msgstr ""
683
-
684
- #: wpf-admin/options.php:21 wpf-includes/wpf-phrases.php:308
685
- msgid "Styles"
686
- msgstr ""
687
-
688
- #: wpf-admin/options.php:22 wpf-includes/wpf-phrases.php:25
689
- msgid "Addons"
690
- msgstr ""
691
-
692
- #: wpf-admin/phrase.php:10 wpf-includes/wpf-phrases.php:125
693
- msgid "Front-end Phrases"
694
- msgstr ""
695
-
696
- #: wpf-admin/themes.php:9 wpf-includes/wpf-phrases.php:118
697
- msgid "Forum Themes"
698
- msgstr ""
699
-
700
- #: wpf-admin/themes.php:46 wpf-includes/wpf-phrases.php:60
701
- msgid "Current active theme"
702
- msgstr ""
703
-
704
- #: wpf-admin/themes.php:48 wpf-includes/wpf-phrases.php:136
705
- msgid "Inactive"
706
- msgstr ""
707
-
708
- #: wpf-admin/themes.php:52 wpf-includes/wpf-phrases.php:141
709
- msgid "LAYOUTS"
710
- msgstr ""
711
-
712
- #: wpf-admin/themes.php:68 wpf-includes/wpf-phrases.php:17
713
- msgid "Activate"
714
- msgstr ""
715
-
716
- #: wpf-admin/themes.php:69 wpf-includes/wpf-phrases.php:122
717
- msgid "Fresh Installation"
718
- msgstr ""
719
-
720
- #: wpf-admin/themes.php:71 wpf-includes/wpf-phrases.php:138
721
- msgid "Install"
722
- msgstr ""
723
-
724
- #: wpf-admin/themes.php:73 wpf-includes/wpf-phrases.php:38
725
- msgid "Are you sure you want to delete this theme files?"
726
- msgstr ""
727
-
728
- #: wpf-admin/themes.php:76 wpf-includes/wpf-phrases.php:40
729
- msgid ""
730
- "Are you sure you want to reset all settings and style colors to default?"
731
- msgstr ""
732
-
733
- #: wpf-admin/themes.php:76 wpf-includes/wpf-phrases.php:265
734
- msgid "Reset Settings"
735
- msgstr ""
736
-
737
- #: wpf-admin/themes.php:96 wpf-includes/wpf-phrases.php:198
738
- msgid "No layout found"
739
- msgstr ""
740
-
741
- #: wpf-admin/themes.php:107 wpf-includes/wpf-phrases.php:203
742
- msgid "No theme found"
743
- msgstr ""
744
-
745
- #: wpf-admin/usergroup.php:8
746
- msgid "Usergroups"
747
- msgstr ""
748
-
749
- #: wpf-admin/usergroup.php:18 wpf-admin/usergroup.php:30
750
- #: wpf-admin/usergroup.php:62
751
- msgid "Usergroup Name"
752
- msgstr ""
753
-
754
- #: wpf-admin/usergroup.php:19
755
- msgid "Users Count"
756
- msgstr ""
757
-
758
- #: wpf-admin/usergroup.php:36
759
- msgid "Edit this usergroup"
760
- msgstr ""
761
-
762
- #: wpf-admin/usergroup.php:36 wpf-includes/functions.php:254
763
- #: wpf-includes/functions.php:467 wpf-includes/wpf-phrases.php:72
764
- msgid "Edit"
765
- msgstr ""
766
-
767
- #: wpf-admin/usergroup.php:37
768
- msgid "Delete this usergroup"
769
- msgstr ""
770
-
771
- #: wpf-admin/usergroup.php:39
772
- msgid "View users list in this usergroup"
773
- msgstr ""
774
-
775
- #: wpf-admin/usergroup.php:43
776
- msgid "Count of users in this usergroup"
777
- msgstr ""
778
-
779
- #: wpf-admin/usergroup.php:62 wpf-includes/wpf-phrases.php:131
780
- msgid "Guest"
781
- msgstr ""
782
-
783
- #: wpf-admin/usergroup.php:85 wpf-includes/wpf-phrases.php:369
784
- msgid "add"
785
- msgstr ""
786
-
787
- #: wpf-admin/usergroup.php:85
788
- msgid "save"
789
- msgstr ""
790
-
791
- #: wpf-admin/usergroup.php:106
792
- msgid "Delete Chosen Usergroup And Users"
793
- msgstr ""
794
-
795
- #: wpf-admin/usergroup.php:116
796
- msgid "Delete Chosen Usergroup And Join Users To Other Usergroup"
797
- msgstr ""
798
-
799
- #: wpf-admin/usergroup.php:128
800
- msgid "Users will be join this usergroup"
801
- msgstr ""
802
-
803
- #: wpf-includes/class-notices.php:128 wpf-includes/wpf-phrases.php:68
804
- msgid "Dismiss this notice."
805
- msgstr ""
806
-
807
- #: wpf-includes/class-permissions.php:116 wpf-includes/wpf-phrases.php:415
808
- #, php-format
809
- msgid "%s access successfully added"
810
- msgstr ""
811
-
812
- #: wpf-includes/class-permissions.php:141 wpf-includes/wpf-phrases.php:416
813
- #, php-format
814
- msgid "%s access successfully edited"
815
- msgstr ""
816
-
817
- #: wpf-includes/class-phrases.php:157
818
- #: wpf-includes/functions-installation.php:28 wpf-includes/wpf-phrases.php:7
819
- msgid " Forum"
820
- msgstr ""
821
-
822
- #: wpf-includes/class-phrases.php:158
823
- #: wpf-includes/functions-installation.php:29 wpf-includes/wpf-phrases.php:6
824
- msgid " Discussion Board"
825
- msgstr ""
826
-
827
- #: wpf-includes/class-template.php:868 wpf-includes/wpf-phrases.php:324
828
- msgid "Theme file not readable"
829
- msgstr ""
830
-
831
- #: wpf-includes/functions-template.php:7
832
- msgid "wpForo Menu"
833
- msgstr ""
834
-
835
- #: wpf-includes/functions-template.php:149 wpf-includes/wpf-phrases.php:405
836
- msgid "wpForo Sidebar"
837
- msgstr ""
838
-
839
- #: wpf-includes/functions-template.php:150 wpf-includes/wpf-phrases.php:188
840
- msgid ""
841
- "NOTE: If you're going to add widgets in this sidebar, please use 'Full "
842
- "Width' template for wpForo index page to avoid sidebar duplication."
843
- msgstr ""
844
-
845
- #: wpf-includes/functions-template.php:188
846
- #: wpf-includes/functions-template.php:295
847
- #: wpf-includes/functions-template.php:358
848
- #: wpf-includes/functions-template.php:435
849
- #: wpf-includes/functions-template.php:482 wpf-includes/wpf-phrases.php:330
850
- msgid "Title"
851
- msgstr ""
852
-
853
- #: wpf-includes/functions-template.php:361
854
- #: wpf-includes/functions-template.php:438 wpf-includes/wpf-phrases.php:207
855
- msgid "Number of Items"
856
- msgstr ""
857
-
858
- #: wpf-includes/functions-template.php:366 wpf-includes/wpf-phrases.php:69
859
- msgid "Display Avatars"
860
- msgstr ""
861
-
862
- #: wpf-includes/functions-template.php:442 wpf-includes/wpf-phrases.php:71
863
- msgid "Display with Avatars"
864
- msgstr ""
865
-
866
- #: wpf-includes/functions.php:252 wpf-includes/functions.php:465
867
- #: wpf-includes/wpf-phrases.php:50
868
- msgid "Bulk Actions"
869
- msgstr ""
870
-
871
- #: wpf-includes/functions.php:259 wpf-includes/functions.php:553
872
- #: wpf-includes/wpf-phrases.php:36
873
- msgid "Apply"
874
- msgstr ""
875
-
876
- #: wpf-includes/functions.php:268 wpf-includes/wpf-phrases.php:297
877
- msgid "Show all forums"
878
- msgstr ""
879
-
880
- #: wpf-includes/functions.php:297 wpf-includes/functions.php:475
881
- #: wpf-includes/wpf-phrases.php:380
882
- msgid "item"
883
- msgstr ""
884
-
885
- #: wpf-includes/functions.php:330 wpf-includes/functions.php:346
886
- #: wpf-includes/wpf-phrases.php:281
887
- msgid "Select All"
888
- msgstr ""
889
-
890
- #: wpf-includes/functions.php:412 wpf-includes/wpf-phrases.php:66
891
- msgid "Delete this item"
892
- msgstr ""
893
-
894
- #: wpf-includes/functions.php:412 wpf-includes/wpf-phrases.php:41
895
- msgid "Are you sure you whant to DELETE this item?"
896
- msgstr ""
897
-
898
- #: wpf-includes/functions.php:457 wpf-includes/wpf-phrases.php:197
899
- msgid "No items found"
900
- msgstr ""
901
-
902
- #: wpf-includes/functions.php:552 wpf-includes/wpf-phrases.php:139
903
- msgid "Items"
904
- msgstr ""
905
-
906
- #: wpf-includes/functions.php:795
907
- #, php-format
908
- msgid "Could not write file %s"
909
- msgstr ""
910
-
911
- #: wpf-includes/wpf-hooks.php:20 wpf-includes/wpf-phrases.php:134
912
- msgid ""
913
- "IMPORTANT! Uninstall is not a simple deactivation action. This action will "
914
- "permanently remove all forum data (forums, topics, replies, attachments...) "
915
- "from database. Please backup database before this action, you may need this "
916
- "forum data in future. If you are sure that you want to delete all forum data "
917
- "please confirm. If not, just cancel it, then you can deactivate this plugin, "
918
- "that will not remove forum data."
919
- msgstr ""
920
-
921
- #: wpf-includes/wpf-hooks.php:20
922
- msgid "Uninstall"
923
- msgstr ""
924
-
925
- #: wpf-includes/wpf-hooks.php:23
926
- msgid "Settings"
927
- msgstr ""
928
-
929
- #: wpf-includes/wpf-hooks.php:806 wpf-includes/wpf-phrases.php:184
930
- msgid "Move"
931
- msgstr ""
932
-
933
- #: wpf-includes/wpf-hooks.php:852
934
- msgid "Dismiss"
935
- msgstr ""
936
-
937
- #: wpf-includes/wpf-hooks.php:877 wpf-includes/wpf-phrases.php:407
938
- msgid "wpForo Usergroup"
939
- msgstr ""
940
-
941
- #: wpf-includes/wpf-hooks.php:885 wpf-includes/wpf-phrases.php:406
942
- msgid "wpForo User Timezone"
943
- msgstr ""
944
-
945
- #: wpf-includes/wpf-phrases.php:8
946
- #, php-format
947
- msgid "%s and %s liked"