Minor bug fixes, 29th November 2012.
Bug Fixes
- Prevented multiple accounts with the same email address when logging in via an external identity provider.
- Updated Facebook plugin for change in location of user avatar URLs in Facebook Graph API response.
- Fixed functionality of 'Remember' checkbox in login form at the top of the Snow theme.
- Fixed reference to background image in Candy theme CSS file.
- Fixed partial log out when multiple Q2A sites share users and logins.
- Fixed rare PHP notice when viewing an IP address page.
- Added verification of content of uploaded images in WYSIWYG editor.
Other Changes
- Added Ajax-style loading spinners for non-Ajax operations which perform heavy writes to the database.
- Reset the created time of moderated posts to the moment when the posts are approved.
- Updated Snow theme with several visual improvements and tweaks.
- Updated to htmLawed 1.1.14 and CKEditor 3.6.5.
New default theme plus minor fixes and enhancements, 26th September 2012.
New Features
- Added new Snow theme by Q2A Market, selected by default in new installations.
- Added loading spinners for all Ajax page actions awaiting a server response (except voting).
- Added support for OpenSearch, allowing Q2A sites to be searched directly from browsers and search engines.
- Added support for avatars with external user management, including when integrating with WordPress.
- Added support for automatic detection and linking of URLs within HTML formatted content.
Bug Fixes
- Fixed MySQL error when adding events under external user integration with textual user identifiers.
- Fixed incorrect highlighting of custom page links if their path begins with the path of the current page.
- Fixed some HTML validation errors by changing HTML tags and ordering.
- Fixed occasional PHP notice when viewing an IP address page.
- Prevented posts belonging to deleted users from being claimable by other users.
- Fixed dual use of the CSS class
qa-nav-sub-selected.
- Fixed display of names containing a forward slash (
/) in the category menu.
- Fixed PHP notice displayed if captchas are activated but no captcha module is available.
- Prevented the IP address of the approver of a post from being assigned to the post's author.
- Fixed auto-complete for tags containing ampersands.
- Fixed the number of tags available for auto-complete (now 1,000 by default).
- Fixed the 'Delete hidden posts' button leaving behind some hidden questions without dependents.
- Fixed MySQL error when indexing a post containing a very long word, if MySQL is in strict mode.
- Prevented caret jumping into tags field when asking a question in Internet Explorer.
- Fixed momentary expansion of the page header casued by the Facebook Login button.
- Fixed censoring of single-character Chinese, Japanese and Korean (CJK) ideographic words.
- Question pages which are paginated now include the page number in their canonical URLs.
Other Changes
- Added new CSS classes on question or answer lists where all voting is disabled.
- Added new CSS class to identify zero answer counts in question lists.
- Added new
<SPAN> and CSS class to wrap post avatars and meta information.
- Updated to CKEditor 3.6.4 and jQuery 1.7.2.
- Prevented maximum login rate being set to zero, which could lock administrators out.
- Blocked IP addresses can no longer send messages through the feedback form.
- Restricted the
qa-check-lang.php language checking script to administrators only.
- Added parameter to
qa_sanitize_html() to distinguish between storage and display.
More minor bug fixes, 29th April 2012.
Bug Fixes
- Fixed problem with newly uploaded avatars not showing up correctly in Internet Explorer.
- Fixed navigation bugs when the home page is mapped to a question list and there are categories.
- Page requests from iPads are no longer considered as coming from a mobile device.
Minor fixes and improvements on 1.5 release, 18th March 2012.
Bug Fixes
- Fixed "Could not create a valid and unique handle" error when logging in via Facebook with a long name.
- Online theme and plugin version checking now works correctly with version numbers ending
.0.
- Fixed highlighting of 'Recent' tab on 'Questions page' even if another tab is selected.
- If using single sign-on integration, don't show link to 'My details' on user's favorites page.
- Fixed
'command_on_as' typo in option name in qa-page-admin-default.php.
- Fixed divide by zero error generated by XML Sitemap page if all questions have the same hotness.
- Prevented long words in question titles from breaking out of related questions sidebar.
- Fixed notice when PHP's
getimagesize() function doesn't return all documented elements - see here.
- Disabled Facebook and other login modules if Q2A is running with external user integration.
- Fixed 'answered' and 'commented' links on question page if using long URL structures.
- Use
https:// for Gravatar image URLs if the outer page was requested with HTTPS.
- Improved plugin version checking comparisons to work with differences after 2 or more decimal points.
- Allow the category to be removed from a question during editing, if categories are optional.
- Fixed issue with
stripslashes() when using WordPress integration and multiple select fields.
- List of blocked users will no longer go past the edge of the page, if there are many.
Other Improvements
- Online plugin version checking now checks the required Q2A and PHP versions for the upgrade.
- Uploaded transparent PNGs are now drawn on a white rather than a black background.
- Allowed the logged in user to be indicated as blocked when using single sign-on integration.
- Made the label for most checkboxes clickable, along with the checkbox itself.
- Added
VERSION.txt file containing the Q2A version number.
- Added
qa_post_set_created() function in qa-app-posts.php to change the created date of a post.
Version 1.5 (release) - Download
Final release of major feature update, 18th January 2012.
New Features
- Added admin option to allow users to log in by email only (i.e. not by username).
Bug Fixes
- Fixed reading of notification checkbox value when submitting answer or comment forms via Ajax.
- Fixed bug where question page jumps immediately to the answer form if it is shown.
- Fixed 'reply' buttons on question comments if Javascript is disabled or a comment was just added.
- Apply moderation settings correctly if anonymous users are treated less strictly than some registered users.
- Fixed error with passing
func_get_args() as a parameter that appears in some versions of PHP.
Version 1.5 beta 2 - Download
Mainly bug fixes from the first beta, 4th January 2012.
New Features
- Added optional minimum required PHP version to plugin metadata.
- Added event module event to indicate when an IP address is blocked or unblocked.
- Added functions in
qa-app-users.php to map between userids and handles, for plugin developers.
Bug Fixes
- Added support for widgets on 'My Favorites' and 'My Updates' page.
- Prevented server configuration errors if Apache does not have mod_rewrite.
- If a filter module modifies the content of a post, send updated plain text to later filter modules.
- Hid some admin options that were not relevant due to the settings of other options.
- Included custom page content when reindexing a site, for third party search modules.
- Added call to
unindex_post() in search modules when reindexing a site.
- Fixed problem creating tables while upgrading the database in MySQL 5.5 or later.
- Fixed reference to
QA_DEBUG_PERFORMANCE before it was defined in qa-index.php.
- Fixed display of the default avatar on anonymous posts.
- Fixed error when using Facebook Login plugin on PHP 4.x - plugin now explicitly requires PHP 5.
- Fixed undefined function error from
qa_get_logged_in_points() when integrating with external users.
- Worked around MySQL bug which could cause custom pages to be unavailable to users who are not logged in.
- Added
qa-nav-*-selected CSS class to custom links when appropriate.
- Allowed usernames to be interpreted case-insensitively when integrating with external users.
- Fixed display of usernames on questions in full-width related questions widget.
- Fixed Javascript bug when using Facebook Login plugin in Internet Explorer 6.
- Fixed problem where refresh was required to log in or log out with Facebook in some browsers.
- Fixed some layout and graphics issues in Internet Explorer 6.
Other Changes
- Allow moderation of posts by users with few points, even if anonymous posts aren't moderated.
- Allow captcha to be shown for posts by unconfirmed users, even if anonymous posts don't have a captcha.
- Added
$categoryid parameter to index_post() function in search modules.
- Added support for new
move_post() function in search modules for changing a post's category.
- Added
$request parameter to index_page() function in search modules.
- The Javascript returned by
update_script() in editor modules is now always called before post submission.
Version 1.5 beta 1 - Download
First beta of major feature update, 14th December 2011, also on GitHub.
Major New Features
For Users and Administrators
- Added moderation of posts by anonymous or unconfirmed users, or users with insufficient points.
- Added ability to close a question as a duplicate of another question, or with an explanatory note.
- Added user favoriting of questions, users, tags and categories.
- Added personalized news feeds, showing activity for users' favorites and responses to their content.
- Added mass mailing, allowing admins to send an email to all registered users (with opt out).
- Added Ajax support for adding answers and comments, instead of requiring a page refresh.
- Added Ajax support for many other one-click operations on answers and comments.
- Added option to send all emails directly via SMTP, rather than PHP's
mail() function.
For Developers
- Added overrides, allowing plugins to replace or wrap over 150 core Q2A functions.
- Added plugin filter modules which validate and/or modify many types of user input.
- Added plugin search modules which implement a custom indexer and/or search engine.
- Added plugin captcha modules which provide human verification interfaces like reCAPTCHA.
- Added plugin process modules which can run code at specific stages of Q2A's response processing.
- Added
init_queries() method allowing plugin modules to perform some database setup.
- Added ability for plugins to register their own language files for easy internationalization.
- Added tables for extendable meta information on posts, users, tags and categories (see
qa-db-metas.php).
Other New Features
Functionality
- Added ability to store an archive of private messages, showing users their previous correspondence.
- Added option to show a different theme to users on mobile devices.
- Added option to add a custom field to questions, and display its value publicly on question pages.
- Added optional custom messages on ask, answer, comment and registration forms.
- Added option to set whether users are allowed to answer their own questions.
- Added option to automatically close questions if an answer was selected.
Navigation
- Added paging of answers on a question page, with an option of how many per page.
- Added option to shorten comment lists beyond a certain length, and show all by clicking.
- Moved related questions to a widget which can also be displayed on the right of question pages.
- Page elements now appear or disappear using jQuery slide and fade effects.
- Extended 'Unanswered' page to list questions with no selected answer or no upvoted answers.
- Allow browsing by category on all listing pages if
QA_ALLOW_UNINDEXED_QUERIES is set in qa-config.php.
- Added category descriptions as popups in the category navigation, and below the question category selector.
- Added option to show full dates if posts are more than a certain number of days old.
- Added option not to show 'Ask a Question' link in main navigation.
- Page listing activity for a user now includes recent edits by the user.
- Added information about posts that were closed, moved, retagged, etc... to the 'All Activity' page.
- Added
<LINK REL="prev"...> and <LINK REL="next"...> tags for search-engine friendly pagination.
Administration
- Added new admin panels listing flagged and queued posts, accessible to non-admins where appropriate.
- Added Ajax buttons for one-click operations on hidden, queued and flagged posts in admin panel.
- Added ability for admins to manually assign bonus points to particular users.
- Added update notices displayed at the top of the page for first-time visitors or new registered users.
- Added separate permission setting for downvoting, to prevent negative behavior.
- Added separate permission setting for retagging and recategorizing questions.
- Added easy phrase customization, using a
qa-lang-*.php file in the qa-lang/custom directory.
- Added ability to make custom pages or links only visible to users of a certain level.
- Added separate points settings for receiving up vs down votes on posts.
- Page listing activity from an IP address now shows whether posts are already hidden.
- Added option requiring email address confirmation to complete registration.
- Added limit on new user registrations per IP address per hour.
- Added ability to completely delete users from the database.
- Added display of the Q2A build date and database size in the 'Stats' section of the admin panel.
For Developers
- Added ability for plugins to display per-user update notices at the top of Q2A pages (see
qa-db-notices.php).
- Added support for theme metadata in
qa-styles.css files, for display in admin panel.
- Added support for online version checking of third-party themes and plugins.
- Added
$this->context in theme class to help theme functions find out more about what they're showing.
- Added some additional useful elements in the
$params array for some events sent to event modules.
- If
QA_DEBUG_PERFORMANCE is on, show number or rows and columns returned by each database query.
- Layer classes are now renamed to include their source file, making error debugging easier.
- The
qa_fatal_error() function now shows a backtrace of the calling stack.
Other Changes
- Updated to CKEditor 3.6.2, jQuery 1.7.1, htmLawed 1.1.10 and Google's reCAPTCHA.
- Facebook Login plugin migrated to OAuth 2.0 and Facebook PHP SDK 3.1.1.
- The login rate limit per IP address now applies to successful as well as unsuccessful login attempts.
- Shortened and clarified descriptions for many admin options.
- Added support for Bengali and Traditional Chinese languages.
- Retrieve options in a separate database query, unless
QA_OPTIMIZE_DISTANT_DB is set in qa-config.php.
- Removed
QA_EXTERNAL_LANG and QA_EXTERNAL_EMAILER from qa-config.php - use plugin overrides instead.
- Changed URL structure for retrieving user avatar image JPEGs.
- Editor modules can define
load_script(), focus_script() and update_script() methods to work with Ajax.
Bug Fixes
- Fixed HTML escaping of titles of similar questions displayed on 'Ask a Question' page.
- Fixed application of permission setting requiring email confirmation and a minimum number of points.
- Fixed problem integrating with WordPress in network/multisite mode.
- Fixed high level functions in
qa-app-posts.php to work with external user management.
- Fixed bug where including
# or $ in some URLs could lead to a database query error.
- Worked around MySQL deadlock errors (errno 1213) by waiting a short time then retrying.
Key Source Code Changes
- Removed all use of global variables outside of functions, to enable Q2A to run entirely within a local scope.
- Moved reCAPTCHA functionality to a plugin, and activity count and ask box widgets to core modules.
- The database connection is now set to UTF-8 encocding, so
BINARY casts and _utf8 introducers no longer needed.
- Removed version information from all files except
qa-base.php to enable easier forking and diffing.
- The functions below from Q2A 1.4.x have been removed or are not backwards compatible:
qa_answer_validate()
qa_base_db_connect()
qa_base_db_disconnect()
qa_captcha_error()
qa_captcha_html()
qa_captcha_possible()
qa_captcha_validate()
qa_comment_validate()
qa_cookie_report_action()
qa_db_categoryslugs_sql()
qa_db_posts_recount()
qa_db_tag_count_qs_selectspec()
qa_db_unanswered_qs_selectspec()
qa_feed_load_ifcategory()
qa_handle_email_validate()
qa_length_validate()
qa_logged_in_user_selectspec()
qa_notify_validate()
qa_options_load_options()
qa_options_pending_selectspecs()
qa_page_q_add_c_form()
qa_page_q_comment_follow_list()
qa_page_q_do_comment()
qa_page_q_edit_a_form()
qa_page_q_edit_c_form()
qa_page_q_edit_q_form()
qa_page_q_load_q()
qa_page_q_post_rules()
qa_post_index()
qa_post_parent_to_answer()
qa_profile_field_validate()
qa_question_validate()
qa_search_max_match_anchor()
qa_user_report_action()
qa_vote_error_html()
- The new CSS classes below should be added to custom themes (start by copying from
qa-theme/Default/qa-styles.css):
qa-activity-count
qa-activity-count-item
qa-activity-count-data
qa-c-item-expand
qa-favorite-button
qa-favorite-hover
qa-favorite-image
qa-favoriting
qa-form-tall-suffix
qa-notice-close-button
qa-notice-close-hover
qa-notice
qa-q-item-buttons
qa-q-item-content
qa-q-item-flags
qa-q-view-closed-content
qa-q-view-closed
qa-q-view-extra-content
qa-q-view-extra
qa-related-q-item
qa-related-q-list
qa-unfavorite-button
qa-unfavorite-hover
Quick fix for bug introduced in previous version, 27th September 2011.
Bug Fixes
- Fixed table locking bug preventing the creation of users from external identity providers.
Minor fixes and improvements, 12th September 2011.
New Features
- Added the ability for administrators to remove a user's avatar.
- Added category question pages and category pages in XML sitemap, with options for control.
- Allowed widgets to be embedded in custom pages.
- Added Welsh (Cymraeg) to list of supported languages.
Bug Fixes
- Added ideographic space, comma and full stops as recognized punctuation, for CJK support.
- Fixed bug which removed periods (.) from the names of files uploaded in WYSIWYG editor.
- Display tag auto-suggestion and auto-completion even if a tag error message is showing.
- Worked around bug in MySQL 4.1.22 which affected retrieval of category information.
- Added synchronization to prevent duplicate users being created from external identity providers.
- Fixed PHP warning messages which appear under several unusual circumstances.
Code Changes
- Treat
false or '' responses from option_default() module functions the same as null.
- Added raw user information in
$qa_content['raw'] on user-related pages, for access by custom themes or layers.
Minor fixes and source code changes from 1.4 release, 10th July 2011.
Bug Fixes
- Fixed MySQL error when setting a vote or flag on a post, if MySQL is in strict mode.
- Fixed potential security issue in some browsers by escaping
/ slashes in Javascript variable values.
Other Changes
- Added optional RSS feed for hot questions.
- When converting an answer to a comment, only mark the post as edited if its content changed.
- Retrieve user's IP address through new function
qa_remote_ip_address() in qa-base.php.
- Added link to the language checking page in the admin interface, to encourage complete translations.
- Added
white-space:nowrap; style to prompt in Ask Box Widget, to prevent wrapping in some languages.
Version 1.4 (release) - Download
Final release of major feature update, 13th June 2011.
Minor Changes
- Include raw information in
$qa_content['q_view']['raw'] when editing a question.
- Re-sanitize HTML and apply the 'Open entered links in new window' setting when a question page is viewed.
- Increased minimum font size in tag cloud widget to 5 pixels.
Version 1.4 beta 2 - Download
Minor fixes and improvements on the first beta, 2nd June 2011.
New Features
Other Changes
- Also allow mapping of the home page via
$QA_CONST_PATH_MAP in qa-config.php.
- Changed order of elements in
<HEAD> to encourage CSS files to load first.
- Pre-check there is enough memory to deal with uploaded images to prevent silent errors.
- Q2A database errors are now included in the server's error log via PHP's
error_log() function.
- Redirect from URLs prefixed
/qa to the home page if the pages are identical.
Bug Fixes
- Fixed database error when asking a question with no category via the 'Ask a Question' widget.
- Fixed error shown in browser if question form is submitted while a jQuery Ajax request is in transit.
- Fixed XML error in sitemap caused by blank lines at the end of
qa-wysiwyg-upload.php.
- Fixed display of newlines in confirmation that a private message has been sent.
- Fixed error when upgrading the database if two Q2A sites are sharing the same user database.
- Fixed bug in hierarchical category selector when no sub-category is selected.
Version 1.4 beta 1 - Download
First beta of major feature update, 25th May 2011.
Major New Features
- Added hierarchical sub-categories up to 4 levels deep.
- Added uploading of images and other content within WYSIWYG editor.
- Added list of hot questions, with customizable weightings for hotness calculation.
- Added basic private messaging between users.
- Added points-based permissions, i.e. actions that require a user to have a certain number of points.
- Added optional counting and display of question views.
- Added flagging of posts, including admin notifications and automatic hiding.
Other New Features
- Added listing of questions by most votes, most answers and most views.
- Added widget plugin which provides a count of questions, answers, comments and users.
- Added category descriptions which are shown on 'Browse Categories' page.
- Added button on IP page to hide all previous posts from a blocked IP address.
- Added button on user page to hide all previous posts from a blocked user.
- Added ability to customize URL fragments for standard Q2A pages (
$QA_CONST_PATH_MAP in qa-config.php).
- Added option to open all user-entered links in a new window.
- Added option to only separate tags by commas, allowing tags to contain spaces.
- Added option not to allow users with posts to change their usernames.
- Added option to require login and/or email confirmation to view questions.
- Added option to control whether users are sent notifications by default.
- Added option to set the length of SEO-friendly question URLs.
- Added option to temporarily suspend user registrations, to help deal with spam.
- Added separate option for the length of the 'All Activity' page.
- Added user- and IP-based limits of the number of file uploads per hour.
- Added list of each user's extra privileges on their profile page.
- Improved language checker output (
qa-check-lang.php) including generation of PHP for missing phrases.
Other Changes
- Asking a question now takes place in a single page, using Ajax for updating.
- Ranking of search results now takes question hotness into consideration.
- Large objects (BLOBs) stored in the database now record who created them, and when.
- Posts are no longer marked as edited if they were saved but their title and content were not changed.
- Ask box widget passes through the appropriate category from the page it was shown on.
- Unanswered questions can not currently be browsed by category (to save on database indexes).
- IP page now shows whether a post from a particular IP address has been hidden.
Bug Fixes
- Fixed security issue where other PHP code running on a shared server could spoof a Q2A login via PHP sessions.
- Fixed warnings output by PHP due to calls to
date() before a timezone was set.
- Fixed inaccurate message shown when voting is only allowed on the question page.
- Fixed display of incorrect user points for recent edits on the 'All Activity' page.
- Fixed bug which always showed 10 items on user pages independent of the admin setting.
- Fixed divide-by-zero error on user pages if admin has set no points for voting.
- Fixed possible overflow of user-entered content outside the main content section.
- Fixed overflow of meta information on edited comments into the button area.
- Fixed bug (introduced in 1.4 developer preview) requiring custom themes to have a
qa-theme.php file.
Source Code Changes
- Transitioned from jxs to the popular jQuery Javascript library, which plugins can now assume is present.
- Added
qa-app-posts.php for easy manipulation of questions, answers and comments in PHP.
- Added several utility functions to suspend notifications, indexing, event reporting and updating of counts.
- Updated CKEditor to version 3.5.4.
- Q2A fatal errors are now included in the server's error log via PHP's
error_log() function.
- Added CSS classes
qa-nav-main-hot, qa-nav-cat..., qa-...-flags, qa-view-count... and qa-browse-cat...
Version 1.4 developer preview - Download
Preview of new plugin functionality coming in version 1.4, plus other small changes, 4th April 2011.
New Features
- Added support for event modules in plugins, which are notified about important Q2A events.
- Added support for widget modules in plugins, which show extra pieces of content on Q2A's pages.
- Added support for layers in plugins, which allow modification of the HTML for any part of a page.
- Added support for
option_default() method in modules, allowing them to provide default option values.
- Added layer plugin which shows the content of questions when the user mouses over their title.
- Added widget plugin which provides a basic ask box that can be shown on many pages.
- Added widget plugin which provides basic support for Google Adsense ads.
- Added widget plugin which provides a tag cloud showing most popular tags.
- Added event plugin which logs important Q2A events to a database table and/or log files.
- Allow multiple Question2Answer sites to share a single user base, via new settings in
qa-config.php.
Other Changes
- Index individual words within tags, so searches can now match part of multi-word tags.
- Welcome emails now also sent to users who log in via an external identity provider such as Facebook.
Bug Fixes
- Allow multiple Chinese, Japanese and Korean (CJK) ideographs within tags or words in question URLs.
- Fixed layout of custom pages for admin users when no side panel is shown.
- Prevent Facebook plugin showing login button if Q2A logout didn't complete.
Source Code Changes
- Split
qa-page-home.php into separate files for each type of question list, to make it simpler.
- Updated to latest versions of Services_JSON (1.0.3) and CKEditor (3.5.2).
- Added widget-related CSS classes, which third-party themes should implement.
Quick fix for bug introduced in version 1.3.2, 16th March 2011.
Bug Fixes
- Fixed bug in which custom header or footer was repeated within the page body.
Small improvements and bug fixes plus more changes for theme and plugin developers, 14th March 2011.
Bug Fixes
- Fixed Facebook Login plugin which was retrieving partial user details after change in Facebook API.
- Worked around MySQL bug which caused truncation of long usernames containing non-ASCII characters.
Other Changes
- Identify Chinese, Japanese and Korean (CJK) ideographs as separate words for indexing and searching.
- Allow automatic login ('Remember me') to the same account from multiple browsers.
- Searching by username now works with multi-word usernames, if the search query contains nothing else.
Source Code Changes
- All HTML is output from within the theme class, to allow full control by custom themes.
- External PHP code no longer needs to define
QA_BASE_DIR or call qa_base_db_connect().
- An error failure handler is no longer required to connect to the database (default automatically used).
Source changes to help theme and plugin developers, plus a few bug fixes, 1st February 2011.
Source Code Changes
- Added CSS classes to <BODY> tag to allow per-category and per-template styling.
- Added extra CSS class to answers count box if a best answer has been selected.
- Pass the level (e.g. editor) of users to the theme layer for use by advanced themes.
- Allow page and editor modules to add CSS files or other HTML tags in the <HEAD> of a page.
Bug Fixes
- HTML sanitizer now allows Flash content (e.g. YouTube movies added via WYSIWYG editor).
- Users who log in via an external identity provider now have their last login time updated.
- Set the locale so that strtolower() doesn't break UTF-8 characters under Windows/IIS.
Version 1.3 (release) - Download
Final release of major feature update, 23rd November 2010.
Bug Fixes
- Fixed handling of Unicode characters in XML sitemap page plugin.
- Fixed positioning of avatars in question lists for Candy theme.
Version 1.3 beta 2 - Download
Addressed some minor issues and requests from the first beta, 11th November 2010.
New Features
- Added option to show avatars in question lists.
- Added option to show default avatar for users who have none.
- Added field showing latest available Q2A version in 'Stats' page in 'Admin' panel.
Other Changes
- Improved layout and auto focusing of WYSIWYG editor on some browsers.
- Added HTML integration points on the login and register pages for login plugins.
- Use MySQL's time rather than PHP's to calculate time deltas, in case the two are different.
Bug Fixes
- Stopped showing errors for items with hidden parents in the recent activity list on user pages.
- Show an explanatory error message if an image upload failed instead of a PHP error.
- Try using curl to access the Facebook API if file_get_contents for URLs has been disabled.
- When restoring a user's session if the PHP session is lost, restore the login source as well.
Version 1.3 beta 1 - Download
First beta of major feature update, 4th November 2010, now licensed under GPL.
New Features
- Added plugin architecture with four initial plugin types: login, page, editor, viewer.
- Added WYSIWYG text editor plugin based on CKEditor.
- Added user avatars, either uploaded directly or from Gravatar.
- Added support for Facebook single sign-on via a login plugin.
- Added custom fields on user profile pages.
- Added custom user titles based on points.
- Added XML Sitemap for search engines via a page plugin.
- Added usernames of authors to all email notifications.
- Added permalinks to answers and comments on question pages.
- Added 'Edit this page' button on custom pages for administrators.
- Added maintenance mode to allow site to be temporarily taken down.
- Added links to canonical URLs in <HEAD> of question pages (for SEO).
- Added RSS auto-discovery in <HEAD> of all appropriate listing pages.
- Added version information to 'Stats' page in 'Admin' panel.
Other Changes
- The 'All Activity' page now includes recently edited posts.
- All POST requests are redirected to prevent browser warnings when refreshing or clicking back.
- Apostrophes within words are now ignored when indexing, searching or building search-friendly URLs.
- User pages now show combined recent activity instead of separate questions and answers.
- IP address pages now show more detailed activity, including recent edits.
Bug Fixes
- Clicking 'I wrote this' updates the last editing user if appropriate.
- 'Page not found' error no longer shown for tag 0 (zero).
- Hidden follow-on questions are now shown to admins, and must now be deleted before their parent answer.
- Fixed mislabelling of anonymous posts as 'by me' in some versions of PHP.
Source Code Changes (relevant for those who have modified the Q2A core)
- The first parameter (usually
$db) for the database connection has been removed from all functions.
- To make a direct query to the Q2A database, use
qa_db_connection() to retrieve the connection.
- All options are now retrieved for every page request so
qa_options_set_pending() is no longer necessary.
- To retrieve an option, use
qa_opt('OPTION_NAME') instead of qa_get_option($db, 'OPTION_NAME').
- Page content is supplied by
return from page files, rather than being set in the global $qa_content.
- Many parameters for
qa_post_html_fields() and related functions were combined in the $options array parameter.
- Most Q/A/C validation, creation, modification and indexing functions have additional parameters.
Addressed some minor issues from 1.2 release, 29th July 2010.
New Features
- Added a (very basic) categories page which lists categories and question counts.
Other Changes
- Improved detection of URLs to work better with posts containing HTML code.
- Show username of logged in users on their own posts instead of 'by me'.
Bug Fixes
- Fixed issue with some posts from anonymous users mistakenly displayed as 'by me'.
- Display information in profile about field on multiple lines as entered.
- Respond with appropriate HTTP 404 header for all 'not found' pages.
Version 1.2 (release) - Download
Final release of major feature update, 20th July 2010.
New Features
- Added option to hide 'Questions' tab.
- Added option to only allow voting on question page.
- Added option to require a minimum number of question tags.
- Added option to allow only one answer per user.
- Added option to order answers by the number of votes.
- Added option to control when the answer form is immediately shown on question pages.
- Added option to show or hide 'reply' button by comments (instead of old 'comment' buttons).
Other Changes
- Detect and link URLs in RSS feeds if appropriate option is set.
- Show user's own vote more clearly if up and down votes are being displayed separately.
- Take categories into account when calculating the list of related questions.
Bug Fixes
- Fix double slash added to default site URL if Q2A was installed at domain root.
- Show specified <META> description on home page even if it has custom content.
- Don't include email confirmation link in welcome email to Super Administrator.
- Fixed PHP warning generated by RSS feed page when not including full text in feeds.
- Fixed number_format PHP warning generated by Admin statistics page in PHP 5.3.
- Set explicit default values on database columns for compatibility with MySQL strict mode.
- Changed search query to work around UNION bug in MySQL 4.1.4 and other versions.
Version 1.2 beta 1 - Download
First beta of major feature update, 27th June 2010.
New Features
Functionality
- Added categories which can be used instead of, or along with, tags.
- Added RSS feeds for most question listing pages.
- Added deleting of hidden posts and admin button to delete all hidden.
- Added custom pages and links to be shown in navigation tabs.
- Added detailed permissions settings for most operations.
- Added new Expert and Moderator user levels.
Security
- Added optional email confirmation for registered users.
- Added display of IP addresses on anonymous posts.
- Added pages which show recent activity from an IP address.
- Added display of IP addresses of recent activity on user pages (for moderators or admins).
- Added ability to block users and/or IP addresses.
- Added bad word filter to censor out selected words.
- Added rate limit for login attempts per IP address.
Layout
- Added appropriate META description and keywords tags on question pages.
- Added option to set explicit META description tag for front page.
- Added option to show a custom home page instead of recent questions and answers.
- Added option to show custom HTML in the side panel, below the sidebar box.
- Added options to hide most top navigation tabs.
- Added activity page that combines recent questions, answers and comments.
- Added display of number of up and down votes cast on user pages.
- Added option to hide age of questions, answer and comments.
Miscellaneous
- Added separate points settings for users casting up and down votes.
- Added option for maximum number of characters in question title.
- Added option for maximum number of question tags allowed.
- Added option for whether to show the selected answer first.
Other Changes
- Most question titles link consistently to the top of question pages.
- Added separate 'answered' or 'commented' link where appropriate.
- Main admin tab navigates back to the last viewed admin page.
- Added character prefix before element IDs in HTML to pass formal HTML validation.
- Added 404 header and suggestion of what to do next on 'Page not found' pages.
- Hidden questions now shown as grayed out text instead of using diagonal 'hidden' background.
- Added hyphen separators in email notifications to make user content more prominent.
- Added setting in qa-config.php to switch off Gzip HTML compression.
- Added header to Ajax responses to work around servers that send unexpected prefixes.
- All database indexes and foreign keys now named explicitly, to make future upgrades easier.
Bug Fixes
- Clicking log in or register from a page with a URL parameter now keeps that parameter.
- After running an ALTER TABLE query, relock MySQL tables, since locks can be lost.
- Changed queries to work around LEFT JOIN bug in MySQL 5.1.46 and 5.1.47.
Version 1.0.1 (release) - Download
Cleared up some remaining issues related to URL paths, 23rd May 2010.
Other Changes
- Removed PHP closing tags (?>) to help prevent accidental output by users modifying files.
Bug Fixes
- Substituted encodeURIComponent() for escape() in Javascript to preserve Unicode.
- Fixed some problems with the new URL structures introduced in 1.0.1 beta.
- Introduced a more rigorous URL structure test and fixed some edge cases.
Version 1.0.1 beta - Download
Minor fixes with a focus on installation issues, 11th May 2010.
New Features
- Added more options for page URL structure.
- Extended language checking script (qa-check-lang.php) to test translations.
Other Changes
- Don't show reCAPTCHA on the feedback form if the user is logged in.
- When adding comments, switch user notification on by default.
- Improved error reporting when database installation or upgrade fails.
Bug Fixes
- Fixed viewing page for a tag which was used in two different accented forms.
- Fixed submitting comments and answers on questions with % symbols.
- Fixed QA_BASE_DIR on setups with no $_SERVER['SCRIPT_FILENAME'].
- Fixed installing on servers which can't use index.php/x style URLs (e.g. 1&1).
- Fixed vote display on list of recently answered questions on user pages.
- Don't allow answers to be converted into comments where comments aren't allowed.
Version 1.0 (release) - Download
Final release of version 1.0, 9th April 2010.
New Features
- Added reCAPTCHA support for feedback and forgot password pages.
- Added documentation for functions in the source code.
Other Changes
- Show the site name on its own in the HTML title of the home page.
- Pass the page request to the theme class to enable custom pages.
- Added individual CSS classes to navigation items to allow per-item styling.
- Apply rate limits when claiming a post or converting an answer to a comment.
- Improved aesthetics and wording during the installation process.
- Doubled the height of the text area when adding or editing comments.
- Stopped using several PHP functions which cause warnings under PHP 5.3.
- Email field now focuses when anonymous users click the checkbox above.
Bug Fixes
- Fixed incorrect reference to $qa_db when sending notification of new questions.
- Fixed ugly mouseover effect for icon buttons in Candy theme.
- Fixed error given by some MySQL configurations when logging out.
Version 1.0 beta 3 - Download
Third public version, 31st March 2010. Feature complete preview of the 1.0 release.
New Features
- Added second theme (Candy).
- Added support for reCAPTCHA for user registration and anonymous posts.
- Added optional tab for unanswered questions.
- Added ability for author or editor to convert an answer into a comment.
- Added 'Remember me' checkbox on login to store cookie in browser.
- Added admin panel showing hidden questions, answers and comments.
- Added admin option to be emailed when a new question is asked.
- Added number of comments to admin statistics page.
- Added switch for display of user points alongside usernames.
Other Changes
- Users now prevented from directly opening include files from their web browser.
- All files now use Windows (CRLF) line endings for easy editing.
- After posting an answer or comment, the page is scrolled to the new content.
- Logged in sessions no longer expire while the browser window is open.
- Duplicate submissions of answers or comments now detected.
- All users shown on the 'Users' page, even if they have no activity.
Bug Fixes
- Improve reliability of pop-up tooltips on buttons in Internet Explorer.
- When using external users, allow viewing of pages for users with no activity.
- Fixed requests to pages for tags or users with unusual characters.
- Fixed layout where a question has a large number of tags.
- Be forgiving if some $_SERVER elements are not set by the PHP environment.
- Changed date() to gmdate() to prevent warnings in some PHP versions.
- Fixed external user sample code to work with empty array parameters.
- Custom text is properly included in user welcome emails.
Version 1.0 beta 2 - Download
Second public version, 8th March 2010. A mostly complete preview of the 1.0 release, some small things left to do.
New Features
- Added comments on questions and answers.
- Added related questions.
- Many new notifications, e.g. if an answer is selected or a question is commented on.
- Allow the number of up votes and down votes for each post to be displayed separately.
- Allow voting to be enabled or disabled for questions or answers.
- Store and display user who last modified a post, and when they modified it.
- Users who log in after posting can reclaim the post as their own.
- Added website to user profile, which is linked with rel=nofollow.
- Added an admin option to insert custom content into page <HEAD>.
Other Changes
- Show gray arrows instead of nothing when a user cannot vote on their own post.
- Show more information about votes given and received on user page.
- Don't allow the author of a hidden post to reshow it, if it was hidden by an editor.
- Improved style of buttons and positioning of forms on question page.
- Improved speed of search within content of posts.
- Added 'Best answer' under star if an answer was selected.
- Show 'by anonymous' for a post if it was not by a registered user.
- Disallow user editing their profile on the user page (they use My Account).
- Allow voting in every case where vote counts are shown for a post.
- Changed order of input fields on register page to be more intuitive.
- Prompt users to enter hyphens to create multi-word tags.
- Show suggested next step at bottom of some more low-content pages.
- Don't show answer form on question pages by default unless it has no answers.
- Added link to online documentation if .htaccess file not working.
- Added individual CSS classes to buttons to allow different styling.
Bug Fixes
- Allow viewing of pages for tags containing ampersands (&).
- Allow clicking auto-complete tags with ampersands and $ signs.
- Disallow + and / characters in usernames due to URL problems.
- Set appropriate count to zero in words table if a word is no longer used.
- Make tabs and leading spaces visible in post content.
- Don't allow a comment or answer to be viewed out of context by requesting its postid.
- Include anonymous questions when counting how many times a user had their answer selected.
- Initiate Gzip page compression code earlier, to prevent content encoding errors on some setups.
- Fix database error when indexing content if a word was not added to the words table.
- Add DirectoryIndex and commented RewriteBase directives to .htaccess file.
- Ajax voting code now refreshes more HTML code, to get pluralization right.
Version 1.0 beta 1 - Download
First public version, 4th February 2010.