Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#644 Registration link is still showing up when registration is disabled #645

Open
wants to merge 23 commits into
base: 1.8
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
f72accd
Fix tag cloud plugin on PHP 5.2
svivian Jan 30, 2018
958b40d
Fix upgrade query with Wordpress integration
svivian Jan 30, 2018
5520ae8
Fix qa_db_list_tables (external users)
svivian Jan 30, 2018
176f605
1.8.0
svivian Jan 30, 2018
1a34ee2
Update cached tag count when deleting posts
pupi1985 Feb 7, 2018
4ae9c8f
Move the cache calculation away from the basic search plugin
pupi1985 Feb 7, 2018
d4b7409
Fix some scenarios where ^userpoints records are not present and gene…
pupi1985 Feb 10, 2018
96dd714
Merge pull request #605 from pupi1985/patch-102
svivian Mar 1, 2018
0bd2a82
Update hidden HTML to avoid its detection as malware
pupi1985 Feb 12, 2018
6965766
Merge pull request #607 from pupi1985/patch-103
svivian Mar 3, 2018
33bd9dc
Merge pull request #602 from pupi1985/patch-101
svivian Mar 3, 2018
a1da514
Update branches
svivian Mar 4, 2018
fdd38b2
Fix missing email confirmation link in user account
svivian Mar 5, 2018
a0a0d32
Reinstate PHPMailerAutoload
svivian Mar 5, 2018
c2da004
Prevent browser content encoding error in PHP 5.3
svivian Mar 6, 2018
6890815
Fix another PHP 7.2 count warning
pupi1985 Apr 9, 2018
7cca35e
Merge pull request #631 from pupi1985/patch-107
svivian Apr 14, 2018
dfa3df7
#642 fix php 7.2 warning on main page
hendrikiseke1979 May 30, 2018
20ea1c3
#644 Registration link is still showing up when registration is disabled
hendrikiseke1979 May 30, 2018
e62b463
Merge branch 'bugfix' into 1.8
May 30, 2018
fc9ebb3
tabs to spaces
hendrikiseke1979 May 30, 2018
3efb665
Merge remote-tracking branch 'origin/1.8' into 1.8
hendrikiseke1979 May 30, 2018
8df1c87
tabs to spaces
hendrikiseke1979 May 30, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 5 additions & 11 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
# How to contribute

As of version 1.6.3, all development of [Question2Answer][Home] will take place through GitHub. Bug reports and pull requests are encouraged, provided they follow these guidelines.
As of version 1.6.3, all development of [Question2Answer](http://www.question2answer.org/) will take place through GitHub. Bug reports and pull requests are encouraged, provided they follow these guidelines.


## Bug reports (issues)

If you find a bug (error) with Question2Answer, please [submit an issue here][Issues]. Be as descriptive as possible: include exactly what you did to make the bug appear, what you expect to happen, and what happened instead. Also include your PHP version and MySQL version. Remember to check for similar issues already reported.
If you find a bug (error) with Question2Answer, please [submit an issue here](https://github.com/q2a/question2answer/issues). Be as descriptive as possible: include exactly what you did to make the bug appear, what you expect to happen, and what happened instead. Also include your PHP version and MySQL version. Remember to check for similar issues already reported.

If you think you've found a security issue, you can responsibly disclose it to us using the [contact form here](http://www.question2answer.org/feedback.php).

Note that general troubleshooting issues such as installation or how to use a feature should continue to be asked on the [Question2Answer Q&A][QA].
Note that general troubleshooting issues such as installation or how to use a feature should continue to be asked on the [Question2Answer Q&A](http://www.question2answer.org/qa/).


## Pull requests

If you have found the cause of the bug in the Q2A code, you can submit the patch back to the Q2A repository. Create a fork of the repo, make the changes in your fork, then submit a pull request. Bug fix pull requessts must be made to the `dev` branch. PRs for new features must be made to the next version branch, for example `1.8`.
If you have found the cause of the bug in the Q2A code, you can submit the patch back to the Q2A repository. Create a fork of the repo, make the changes in your fork, then submit a pull request. Bug fix pull requests must be targeted to the **`bugfix`** branch. PRs for new features or large code changes must be made to the **`dev`** branch.

If you wish to implement a feature, you should start a discussion on the [Question2Answer Q&A][QA] first. We welcome all ideas but they may not be appropriate for the Q2A core. Consider whether your idea could be developed as a plugin.

Expand All @@ -23,7 +23,7 @@ If you wish to implement a feature, you should start a discussion on the [Questi

From 1.7 onwards a new coding style has been implemented that is more in line with other projects. All PHP code should use these guidelines:

- PHP code should start with `<?php` (almost always the very first line). The closing tag `?>` should be omitted to avoid accidental output.
- PHP code should start with `<?php` (almost always the very first line). The closing tag `?>` should be omitted to avoid accidental whitespace output.
- PHP files should use UTF-8 encoding without BOM (this is usually default in most text editors).
- Trailing whitespace (tabs or spaces at the end of lines) should not be present. Any advanced text editor should be able to do this automatically when saving. (For Sublime Text you can add the option `"trim_trailing_white_space_on_save": true` to your preferences. In Notepad++ you can press Alt+Shift+S.)
- Use tabs for indenting. Each file should start at level 0 (i.e. no indentation).
Expand All @@ -39,9 +39,3 @@ If in doubt, follow the style of the surrounding code. Code examples can be foun
## Documentation

Please see the repository [q2a.github.io](https://github.com/q2a/q2a.github.io/) which automatically produces the documentation website [docs.question2answer.org](http://docs.question2answer.org/).


[Home]: http://www.question2answer.org/
[QA]: http://www.question2answer.org/qa/
[Issues]: https://github.com/q2a/question2answer/issues
[PSR0]: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md
2 changes: 1 addition & 1 deletion qa-include/app/captcha.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ function qa_captcha_reason_note($captchareason)

switch ($captchareason) {
case 'login':
$notehtml = qa_insert_login_links(qa_lang_html('misc/captcha_login_fix'));
$notehtml = qa_insert_login_links(qa_lang_html(qa_opt('suspend_register_users') ? 'misc/captcha_login_fix_no_register' : 'misc/captcha_login_fix'));
break;

case 'confirm':
Expand Down
3 changes: 1 addition & 2 deletions qa-include/app/emails.php
Original file line number Diff line number Diff line change
Expand Up @@ -132,8 +132,7 @@ function qa_send_email($params)

// @error_log(print_r($params, true));

require_once QA_INCLUDE_DIR . 'vendor/PHPMailer/class.phpmailer.php';
require_once QA_INCLUDE_DIR . 'vendor/PHPMailer/class.smtp.php';
require_once QA_INCLUDE_DIR . 'vendor/PHPMailer/PHPMailerAutoload.php';

$mailer = new PHPMailer();
$mailer->CharSet = 'utf-8';
Expand Down
2 changes: 1 addition & 1 deletion qa-include/app/format.php
Original file line number Diff line number Diff line change
Expand Up @@ -381,7 +381,7 @@ function qa_post_html_fields($post, $userid, $cookieid, $usershtml, $dummy, $opt
if (@$options['categoryview'] && isset($post['categoryname']) && isset($post['categorybackpath'])) {
$favoriteclass = '';

if (count(@$favoritemap['category'])) {
if (!empty($favoritemap['category']) && count($favoritemap['category'])) {
if (@$favoritemap['category'][$post['categorybackpath']]) {
$favoriteclass = ' qa-cat-favorited';
} else {
Expand Down
20 changes: 16 additions & 4 deletions qa-include/app/messages.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,10 @@ function qa_wall_error_html($fromuserid, $touserid, $touserflags)
{
require_once QA_INCLUDE_DIR . 'app/limits.php';

if (qa_to_override(__FUNCTION__)) { $args=func_get_args(); return qa_call_override(__FUNCTION__, $args); }
if (qa_to_override(__FUNCTION__)) {
$args = func_get_args();
return qa_call_override(__FUNCTION__, $args);
}

if (!QA_FINAL_EXTERNAL_USERS && qa_opt('allow_user_walls')) {
if (($touserflags & QA_USER_FLAGS_NO_WALL_POSTS) && !(isset($fromuserid) && $fromuserid == $touserid))
Expand All @@ -50,7 +53,10 @@ function qa_wall_error_html($fromuserid, $touserid, $touserflags)
break;

case 'login':
return qa_insert_login_links(qa_lang_html('profile/post_wall_must_login'), qa_request());
return qa_insert_login_links(qa_lang_html(
qa_opt('suspend_register_users') ? 'profile/post_wall_must_login_no_register' : 'profile/post_wall_must_login'),
qa_request()
);
break;

case 'confirm':
Expand Down Expand Up @@ -89,7 +95,10 @@ function qa_wall_error_html($fromuserid, $touserid, $touserflags)
*/
function qa_wall_add_post($userid, $handle, $cookieid, $touserid, $tohandle, $content, $format)
{
if (qa_to_override(__FUNCTION__)) { $args=func_get_args(); return qa_call_override(__FUNCTION__, $args); }
if (qa_to_override(__FUNCTION__)) {
$args = func_get_args();
return qa_call_override(__FUNCTION__, $args);
}

require_once QA_INCLUDE_DIR . 'app/format.php';
require_once QA_INCLUDE_DIR . 'db/messages.php';
Expand Down Expand Up @@ -142,7 +151,10 @@ function qa_wall_delete_post($userid, $handle, $cookieid, $message)
*/
function qa_wall_posts_add_rules($usermessages, $start)
{
if (qa_to_override(__FUNCTION__)) { $args=func_get_args(); return qa_call_override(__FUNCTION__, $args); }
if (qa_to_override(__FUNCTION__)) {
$args = func_get_args();
return qa_call_override(__FUNCTION__, $args);
}

$userid = qa_get_logged_in_userid();
// reuse "Hiding or showing any post" and "Deleting hidden posts" permissions
Expand Down
2 changes: 1 addition & 1 deletion qa-include/app/page.php
Original file line number Diff line number Diff line change
Expand Up @@ -777,7 +777,7 @@ function qa_content_prepare($voting = false, $categoryids = array())
);
}

if (!empty($userlinks['register'])) {
if (!empty($userlinks['register']) && !qa_opt('suspend_register_users')) {
$qa_content['navigation']['user']['register'] = array(
'url' => qa_html(@$userlinks['register']),
'label' => qa_lang_html('main/nav_register'),
Expand Down
1 change: 1 addition & 0 deletions qa-include/app/post-create.php
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ function qa_update_counts_for_q($postid)
qa_db_unaqcount_update();
qa_db_unselqcount_update();
qa_db_unupaqcount_update();
qa_db_tagcount_update();
}


Expand Down
3 changes: 3 additions & 0 deletions qa-include/app/post-update.php
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,9 @@ function qa_question_set_content($oldquestion, $title, $content, $format, $text,

} elseif ($oldquestion['type'] == 'Q') { // not hidden or queued
qa_post_index($oldquestion['postid'], 'Q', $oldquestion['postid'], $oldquestion['parentid'], $title, $content, $format, $text, $tagstring, $oldquestion['categoryid']);
if ($tagschanged) {
qa_db_tagcount_update();
}
}

$eventparams = array(
Expand Down
11 changes: 11 additions & 0 deletions qa-include/app/users.php
Original file line number Diff line number Diff line change
Expand Up @@ -456,6 +456,17 @@ function qa_get_logged_in_user_cache()
require_once QA_INCLUDE_DIR . 'db/selects.php';
$qa_cached_logged_in_user = qa_db_get_pending_result('loggedinuser', qa_db_user_account_selectspec($userid, true));

// If the site is configured to share the ^users table then there might not be a record in the
// ^userpoints table so this creates it
if ($qa_cached_logged_in_user['points'] === null) {
require_once QA_INCLUDE_DIR . 'db/points.php';
require_once QA_INCLUDE_DIR . 'db/users.php';

qa_db_points_update_ifuser($userid, null);
qa_db_uapprovecount_update();
$qa_cached_logged_in_user = qa_db_single_select(qa_db_user_account_selectspec($userid, true));
}

if (!isset($qa_cached_logged_in_user)) {
// the user can no longer be found (should only apply to deleted users)
qa_clear_session_user();
Expand Down
40 changes: 30 additions & 10 deletions qa-include/app/votes.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,10 @@
*/
function qa_vote_error_html($post, $vote, $userid, $topage)
{
if (qa_to_override(__FUNCTION__)) { $args=func_get_args(); return qa_call_override(__FUNCTION__, $args); }
if (qa_to_override(__FUNCTION__)) {
$args = func_get_args();
return qa_call_override(__FUNCTION__, $args);
}

// The 'login', 'confirm', 'limit', 'userblock' and 'ipblock' permission errors are reported to the user here.
// Others ('approve', 'level') prevent the buttons being clickable in the first place, in qa_get_vote_view(...)
Expand All @@ -51,8 +54,7 @@ function qa_vote_error_html($post, $vote, $userid, $topage)
return qa_lang_html('main/vote_disabled_queued');
}

switch($post['basetype'])
{
switch ($post['basetype']) {
case 'Q':
$allowVoting = qa_opt('voting_on_qs');
break;
Expand Down Expand Up @@ -85,7 +87,7 @@ function qa_vote_error_html($post, $vote, $userid, $topage)
break;

case 'login':
return qa_insert_login_links(qa_lang_html('main/vote_must_login'), $topage);
return qa_insert_login_links(qa_lang_html(qa_opt('suspend_register_users') ? 'main/vote_must_login_no_register' : 'main/vote_must_login'), $topage);
break;

case 'confirm':
Expand Down Expand Up @@ -115,7 +117,10 @@ function qa_vote_error_html($post, $vote, $userid, $topage)
*/
function qa_vote_set($post, $userid, $handle, $cookieid, $vote)
{
if (qa_to_override(__FUNCTION__)) { $args=func_get_args(); return qa_call_override(__FUNCTION__, $args); }
if (qa_to_override(__FUNCTION__)) {
$args = func_get_args();
return qa_call_override(__FUNCTION__, $args);
}

require_once QA_INCLUDE_DIR . 'db/points.php';
require_once QA_INCLUDE_DIR . 'db/hotness.php';
Expand Down Expand Up @@ -185,7 +190,10 @@ function qa_vote_set($post, $userid, $handle, $cookieid, $vote)
*/
function qa_flag_error_html($post, $userid, $topage)
{
if (qa_to_override(__FUNCTION__)) { $args=func_get_args(); return qa_call_override(__FUNCTION__, $args); }
if (qa_to_override(__FUNCTION__)) {
$args = func_get_args();
return qa_call_override(__FUNCTION__, $args);
}

// The 'login', 'confirm', 'limit', 'userblock' and 'ipblock' permission errors are reported to the user here.
// Others ('approve', 'level') prevent the flag button being shown, in qa_page_q_post_rules(...)
Expand All @@ -200,7 +208,10 @@ function qa_flag_error_html($post, $userid, $topage)
) {
switch (qa_user_post_permit_error('permit_flag', $post, QA_LIMIT_FLAGS)) {
case 'login':
return qa_insert_login_links(qa_lang_html('question/flag_must_login'), $topage);
return qa_insert_login_links(
qa_lang_html(qa_opt('suspend_register_users') ? 'question/flag_must_login_no_register' : 'question/flag_must_login'),
$topage
);
break;

case 'confirm':
Expand Down Expand Up @@ -237,7 +248,10 @@ function qa_flag_error_html($post, $userid, $topage)
*/
function qa_flag_set_tohide($oldpost, $userid, $handle, $cookieid, $question)
{
if (qa_to_override(__FUNCTION__)) { $args=func_get_args(); return qa_call_override(__FUNCTION__, $args); }
if (qa_to_override(__FUNCTION__)) {
$args = func_get_args();
return qa_call_override(__FUNCTION__, $args);
}

require_once QA_INCLUDE_DIR . 'db/votes.php';
require_once QA_INCLUDE_DIR . 'app/limits.php';
Expand Down Expand Up @@ -286,7 +300,10 @@ function qa_flag_set_tohide($oldpost, $userid, $handle, $cookieid, $question)
*/
function qa_flag_clear($oldpost, $userid, $handle, $cookieid)
{
if (qa_to_override(__FUNCTION__)) { $args=func_get_args(); return qa_call_override(__FUNCTION__, $args); }
if (qa_to_override(__FUNCTION__)) {
$args = func_get_args();
return qa_call_override(__FUNCTION__, $args);
}

require_once QA_INCLUDE_DIR . 'db/votes.php';
require_once QA_INCLUDE_DIR . 'app/limits.php';
Expand Down Expand Up @@ -328,7 +345,10 @@ function qa_flag_clear($oldpost, $userid, $handle, $cookieid)
*/
function qa_flags_clear_all($oldpost, $userid, $handle, $cookieid)
{
if (qa_to_override(__FUNCTION__)) { $args=func_get_args(); return qa_call_override(__FUNCTION__, $args); }
if (qa_to_override(__FUNCTION__)) {
$args = func_get_args();
return qa_call_override(__FUNCTION__, $args);
}

require_once QA_INCLUDE_DIR . 'db/votes.php';
require_once QA_INCLUDE_DIR . 'app/limits.php';
Expand Down
18 changes: 10 additions & 8 deletions qa-include/db/install.php
Original file line number Diff line number Diff line change
Expand Up @@ -1587,18 +1587,20 @@ function qa_db_upgrade_tables()

case 67:
// ensure we don't have old userids lying around
qa_db_upgrade_query('ALTER TABLE ^messages MODIFY fromuserid ' . $definitions['messages']['fromuserid']);
qa_db_upgrade_query('ALTER TABLE ^messages MODIFY touserid ' . $definitions['messages']['touserid']);
qa_db_upgrade_query('UPDATE ^messages SET fromuserid=NULL WHERE fromuserid NOT IN (SELECT userid FROM ^users)');
qa_db_upgrade_query('UPDATE ^messages SET touserid=NULL WHERE touserid NOT IN (SELECT userid FROM ^users)');
// set up foreign key on messages table
qa_db_upgrade_query('ALTER TABLE ^messages ADD CONSTRAINT ^messages_ibfk_1 FOREIGN KEY (fromuserid) REFERENCES ^users(userid) ON DELETE SET NULL');
qa_db_upgrade_query('ALTER TABLE ^messages ADD CONSTRAINT ^messages_ibfk_2 FOREIGN KEY (touserid) REFERENCES ^users(userid) ON DELETE SET NULL');
if (!QA_FINAL_EXTERNAL_USERS) {
qa_db_upgrade_query('ALTER TABLE ^messages MODIFY fromuserid ' . $definitions['messages']['fromuserid']);
qa_db_upgrade_query('ALTER TABLE ^messages MODIFY touserid ' . $definitions['messages']['touserid']);
qa_db_upgrade_query('UPDATE ^messages SET fromuserid=NULL WHERE fromuserid NOT IN (SELECT userid FROM ^users)');
qa_db_upgrade_query('UPDATE ^messages SET touserid=NULL WHERE touserid NOT IN (SELECT userid FROM ^users)');
// set up foreign key on messages table
qa_db_upgrade_query('ALTER TABLE ^messages ADD CONSTRAINT ^messages_ibfk_1 FOREIGN KEY (fromuserid) REFERENCES ^users(userid) ON DELETE SET NULL');
qa_db_upgrade_query('ALTER TABLE ^messages ADD CONSTRAINT ^messages_ibfk_2 FOREIGN KEY (touserid) REFERENCES ^users(userid) ON DELETE SET NULL');
}

qa_db_upgrade_query($locktablesquery);
break;

// Up to here: Version 1.8 beta1
// Up to here: Version 1.8
}

qa_db_set_db_version($newversion);
Expand Down
10 changes: 9 additions & 1 deletion qa-include/db/selects.php
Original file line number Diff line number Diff line change
Expand Up @@ -1523,9 +1523,17 @@ function qa_db_top_users_selectspec($start, $count = null)
);
}

// If the site is configured to share the ^users table then there might not be a record in the ^userpoints table
if (defined('QA_MYSQL_USERS_PREFIX')) {
$basePoints = (int)qa_opt('points_base');
$source = '^users JOIN (SELECT ^users.userid, COALESCE(points,' . $basePoints . ') AS points FROM ^users LEFT JOIN ^userpoints ON ^users.userid=^userpoints.userid ORDER BY points DESC LIMIT #,#) y ON ^users.userid=y.userid';
} else {
$source = '^users JOIN (SELECT userid FROM ^userpoints ORDER BY points DESC LIMIT #,#) y ON ^users.userid=y.userid JOIN ^userpoints ON ^users.userid=^userpoints.userid';;
}

return array(
'columns' => array('^users.userid', 'handle', 'points', 'flags', '^users.email', 'avatarblobid' => 'BINARY avatarblobid', 'avatarwidth', 'avatarheight'),
'source' => '^users JOIN (SELECT userid FROM ^userpoints ORDER BY points DESC LIMIT #,#) y ON ^users.userid=y.userid JOIN ^userpoints ON ^users.userid=^userpoints.userid',
'source' => $source,
'arguments' => array($start, $count),
'arraykey' => 'userid',
'sortdesc' => 'points',
Expand Down
2 changes: 2 additions & 0 deletions qa-include/lang/qa-lang-main.php
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,7 @@
'view_q_must_be_approved' => 'Your account must be approved to view question pages. Please wait or ^1add more information^2.',
'view_q_must_confirm' => 'Please ^5confirm your email address^6 to view question pages.',
'view_q_must_login' => 'Please ^1log in^2 or ^3register^4 to view question pages.',
'view_q_must_login_no_register' => 'Please ^1log in^2 to view question pages.',
'viewed_qs_in_x' => 'Most viewed questions in ^',
'viewed_qs_title' => 'Most viewed questions',
'vote_disabled_approve' => 'Your account must be approved before you can vote',
Expand All @@ -203,6 +204,7 @@
'vote_limit' => 'Too many votes received - please try again in an hour',
'vote_must_confirm' => 'Please ^5confirm your email address^6 to vote.',
'vote_must_login' => 'Please ^1log in^2 or ^3register^4 to vote.',
'vote_must_login_no_register' => 'Please ^1log in^2 to vote.',
'vote_not_allowed' => 'Voting on this is not allowed',
'vote_up_popup' => 'Click to vote up',
'voted_down_popup' => 'You have voted this down - click to remove vote',
Expand Down
2 changes: 2 additions & 0 deletions qa-include/lang/qa-lang-misc.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
'captcha_error' => 'Please complete the anti-spam verification',
'captcha_label' => 'Anti-spam verification:',
'captcha_login_fix' => 'To avoid this verification in future, please ^1log in^2 or ^3register^4.',
'captcha_login_fix_no_register' => 'To avoid this verification in future, please ^1log in^2.',
'feed_a_edited_prefix' => 'Answer edited: ',
'feed_a_prefix' => 'Answered: ',
'feed_a_reshown_prefix' => 'Answer reshown: ',
Expand Down Expand Up @@ -60,6 +61,7 @@
'message_for_x' => 'Your message for ^:',
'message_limit' => 'You cannot send more private messages this hour',
'message_must_login' => 'Please ^1log in^2 or ^3register^4 to send private messages.',
'message_must_login_no_register' => 'Please ^1log in^2 to send private messages.',
'message_recent_history' => 'Recent correspondence with ^',
'message_sent' => 'Your private message below was sent',
'more_favorite_qs' => 'More favorite questions...',
Expand Down
1 change: 1 addition & 0 deletions qa-include/lang/qa-lang-profile.php
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@
'post_wall_must_be_approved' => 'Your account must be approved to post on this wall. Please wait or ^1add more information^2.',
'post_wall_must_confirm' => 'Please ^5confirm your email address^6 to post on this wall.',
'post_wall_must_login' => 'Please ^1log in^2 or ^3register^4 to post on this wall.',
'post_wall_must_login_no_register' => 'Please ^1log in^2 to post on this wall.',
'questions' => 'Questions:',
'questions_by_x' => 'Questions by ^',
'ranked_x' => ' (ranked #^)',
Expand Down
Loading