Version History

Version 1.6.3 - Download

More minor bug fixes and interface tweaks, 19th January 2014.

  • Combined sub-navigation for user profile and account/favorites pages.
  • Allowed any wall post (beyond the first page) to be deleted.
  • Excluded ( ) [ ] brackets when automatically detecting URLs.
  • Allowed changes of category to be performed as a silent edit.
  • Fixed recalculation of user points when using external user integration with textual userids.
  • Stopped sending passwords out in user registration emails.
  • Filtered out <FORM> tags from being displayed in the content of posts.
  • Excluded irrelevant tables when calculating database size for admin/stats page.
  • Excluded closed questions from listings on the 'Unanswered' page.
  • Increment the counters which limit rate of posting when posts are queued, not approved.
  • Send the direct link for a comment (instead of its parent) in notification emails regarding comments.
  • Applied word censoring to the contents of wall posts sent out in email notifications.
  • Applied word censoring to the titles of items in search results.
  • Applied word censoring when showing tags in the tag cloud widget.
  • Fixed WordPress integration (and sample external user integration code) to work with any Q2A URL structure.
  • Prevented blocked users from changing their user profile.
  • Fixed PHP warning on several different pages if all extra user fields are removed.
  • Added an indication if a user is blocked on their account page.
  • Added user email confirmation status to the admin page for moderating user registrations.
  • Show maximum rate for wall posts and private messages in admin panel in all appropriate cases.
  • Allowed custom pages to be saved and viewed directly in a single click.
  • Ensured that no category can be specified when asking a question, if admin permits this.
  • Fixed PHP warning on ask page if tags are not being used on a Q2A site.
  • Fixed bug in 'queued' parameter passed to filter modules when determining whether a new post has to be moderated.
  • Only show category links on Unanswered page if QA_ALLOW_UNINDEXED_QUERIES is set to true.
  • Fixed several minor issues in the Snow theme.
  • Improved behavior of WYSIWYG editor in non-Javascript or Android browsers.

Version 1.6.2 - Download

More minor bug fixes on the 1.6 release, 31st July 2013.

  • Linked 'asked' word on question pages to the question page itself.
  • Removed navigation link to user wall if using external user integration (bug).
  • Fixed PHP notices in deprecated qa_limits_remaining() function (bug).
  • Worked around a bug in some versions of MySQL, which prevented avatars showing in some cases (bug).
  • Fixed Apache rewriting issue that prevented viewing wall or activity tabs for usernames containing & or # characters (bug).
  • Fixed PHP notice when editing a question if categories are not being used (bug).
  • Stopped enforcing minimum number of tags if tags are not being used (bug).
  • Fixed nonsensical hidden times showing for some posts on admin pages (bug).
  • Fixed automatic recalculation of necessary database information in a few admin scenarios (bug).

Version 1.6.1 - Download

A few minor presentation-related fixes from the 1.6 release, 7th July 2013.

  • Removed inactive option to disable adding names to anonymous posts.
  • Worked around a bug in some versions of MySQL which prevented avatars showing on wall posts.
  • Worked around a WebKit rendering bug when updating the voters tooltip via Ajax.
  • Fixed vertical centering of fields in the Snow theme for Internet Explorer 10.

Version 1.6 (release) - Download

Final release of the first version I'm not embarrassed by, 27th June 2013.

  • Added ability to add or delete wall posts from a user's wall page as well as their profile page.
  • Removed answer count boxes from pages listing all of a user's answers.
  • Removed error message on login form if the 'Login' button is clicked at the top of the Snow theme.
  • Fixed database issue preventing multiple custom links pointing to the same URL.
  • Fixed upgrading the database from some versions of MySQL that have InnoDB disabled.
  • Fixed a couple of minor issues in the default Snow theme.

Version 1.6 beta 2 - Download

Minor tweaks and fixes from the first beta, 20th June 2013.

  • Added viewing of all posts on a user's wall via a separate page.
  • Showed answer votes on the list of a user's answers instead of votes on the related questions.
  • Removed views counter and vote display from several question lists where they are not relevant.
  • Separated out anti-spam limits for private messages and wall posts by a user.
  • Made the active plugin options form more prominent on the plugin administration page.
  • Converted all HTML tags to lower case.
  • Improved editing of category-specific user privileges.
  • Added functions and functionality in qa-app.posts.php to reflect new possible operations on posts.
  • Fixed favoriting and unfavoriting of categories on question list pages.

Version 1.6 beta 1 - Download

First beta of major feature upgrade, 6th June 2013.

New Features

For Users

  • Added walls for posting messages on user profile pages (if admin allows it).
  • Added ability for anonymous users to include a name for display with their posts.
  • Added highlighting of user favorite questions, tags, categories and users where those entities appear.
  • Added more information to user's news feed so that it's clear why each item appears there.
  • Added new and improved design for user profile pages in the default Snow theme.
  • Added separate pages for each user showing their recent activity, all questions and all answers.
  • Added option to show the number of views on question pages.
  • Added avatar at top of default Snow theme for logged in users.
  • Improved display of private message history to match user wall posts.

For Administrators

  • Added per-category privilege levels, e.g. to allow a user to be an expert in one category only.
  • Added optional user moderation, where new users must wait for approval, or have reduced privileges.
  • Added option to store all uploaded content in disk files rather than in the database.
  • Added ability for privileged users to make silent edits to the content of posts.
  • Added ability for custom user fields to be shown on the user registration form.
  • Added option to control whether moderated posts show their time of creation or time of approval.
  • Added mouseover showing who flagged and voted on each post, for privileged users only.
  • Added option for posts to be queued again for moderation when they are edited.
  • Added ability for some custom user fields to be shown to privileged users only.
  • Added optional notification email for admin whenever a new user registers.
  • Added option to moderate posts based on whether the author has enough points.
  • Added count of flagged and queued posts in the admin sub-navigation menu.
  • Improved layout of plugins section of admin panel to only show one set of options at a time.

For Developers

  • Added internal image upload API for use by WYSIWYG editor and other plugins.
  • Added reorder_parts(), form_reorder_fields() and form_reorder_buttons() methods for reordering theme elements.
  • Added qa-part-* classes to HTML pages to allow targeting of specific page forms via CSS.
  • Improved error reporting for eval()'d code from overrides and layers by showing the source file name.
  • Improved error reporting in some other places by removing the @ sign where possible.

Other Changes

Security

  • Added protection from Cross-Site Request Forgery (CSRF) attacks in all forms.
  • Information displayed for fatal errors no longer includes full file paths.
  • No longer display failed database queries to the user.
  • Blocked users and IPs are still able to view question pages.
  • When hiding all posts from a user or IP address, also reject queued posts from that user/IP.

General

  • Users are warned if they have reached a rate limit before they write a new post.
  • Posts which were hidden while queued for moderation can now be reshown.
  • Facebook login now occurs on a separate page, for better future compatibility.
  • If a question has no answers, don't include an empty <H2> tag on the question page.
  • Removed qa-*-hover CSS classes and related Javascript, whose only purpose was IE6 support.
  • Updated to CKEditor 3.6.6 and Facebook PHP SDK 3.2.2.

For Developers

  • The load_module() method in modules is now passed the module type and name as extra parameters.
  • Duplicate Javascript includes in $qa_content['script_src']) are now removed.
  • Adding terminating semicolons (;) after all Javascript statements to allow Javascript compression methods.
  • Language checking script now considers language phrases used in plugins.
  • The functions below from Q2A 1.5.x have been removed or are not backwards compatible:
    qa_page_q_add_a_form()
    qa_page_q_add_c_form()
    qa_page_q_comment_view()
    qa_page_q_comment_follow_list()
  • The new CSS classes below should be added to custom themes (start by copying from qa-theme/Default/qa-styles.css):
    qa-message-item
    qa-message-content
    qa-message-avatar
    qa-message-meta
    qa-message-buttons
    qa-q-favorited
    qa-tag-favorited
    qa-cat-favorited
    qa-user-favorited
    qa-nav-cat-favorited
    qa-browse-cat-favorited
    qa-cat-parent-favorited

Bug Fixes

  • Prevent registration from an external user identity provider if the email already matches an account.
  • Fixed display of avatars (and PHP error) for some list items when using external user integration.
  • Moderation by third party filter modules is now reapplied when a hidden post is reshown by its author.
  • Fixed erroneous updating of the last write IP address for some users when deleting an answer.
  • Filtered out ASCII control characters from the content displayed in XML feeds.
  • Fixed bug when creating a user from an external identity source on systems with case sensitive MySQL table names.
  • Convert . to _ in variable names when building $_GET array to match PHP's behavior.
  • Fixed bug where users with blank email addresses could generate an error by clicking to confirm.
  • Prevent the deletion of an answer which had a related question asked, to avoid SQL error.
  • Ensure that 'answered' and 'commented' links on question pages use the canonical URL for the question.
  • Fixed invalid CSS class names for some individual navigation items.
  • Fixed silent Javascript error in Snow theme on non-question pages.
  • Removed login form on Snow theme when using external user integration.

Version 1.5.4 - Download

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.

Version 1.5.3 - Download

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.

Version 1.5.2 - Download

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.

Version 1.5.1 - Download

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

Version 1.4.3 - Download

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.

Version 1.4.2 - Download

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.

Version 1.4.1 - Download

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.

Version 1.3.3 - Download

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.

Version 1.3.2 - Download

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).

Version 1.3.1 - Download

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.

Version 1.2.1 - Download

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.