Question2Answer is a free and open source platform for Q&A sites, running on PHP/MySQL.

Related tags

CMS question2answer
Overview

Question2Answer

Build Status Open Issues Current Release PHP version License

Question2Answer (Q2A) is a popular free open source Q&A platform for PHP/MySQL, used by over 22,000 sites in 40 languages.

Key features

  • Asking and answering questions (duh!)
  • Voting, comments, best answer selection, follow-on and closed questions.
  • Complete user management including points-based reputation management.
  • Create experts, editors, moderators and admins.
  • Fast integrated search engine, plus checking for similar questions when asking.
  • Categories (up to 4 levels deep) and/or tagging.
  • Easy styling with CSS themes.
  • Supports translation into any language.
  • Custom sidebar, widgets, pages and links.
  • SEO features such as neat URLs, microformats and XML Sitemaps.
  • RSS, email notifications and personal news feeds.
  • User avatars (or Gravatar) and custom fields.
  • Private messages and public wall posts.
  • Log in via Facebook or others (using plugins).
  • Out-of-the-box WordPress 3+ integration.
  • Out-of-the-box Joomla! 3.0+ integration (in conjunction with a Joomla! extension).
  • Custom single sign-on support for other sites.
  • PHP/MySQL scalable to millions of users and posts.
  • Safe from XSS, CSRF and SQL injection attacks.
  • Beat spam with captchas, rate-limiting, moderation and/or flagging.
  • Block users, IP addresses, and censor words

Plugins

Q2A also features an extensive plugin system:

  • Modify the HTML output for a page with layers.
  • Add custom pages to a Q2A site with page modules.
  • Add extra content in various places with widget modules.
  • Allow login via an external identity provider such as Facebook with login modules.
  • Integrate WYSIWYG or other text editors with editor/viewer modules.
  • Do something when certain actions take place with event modules.
  • Validate and/or modify many types of user input with filter modules.
  • Implement a custom search engine with search modules.
  • Add extra spam protection with captcha modules.
  • Extend many core Q2A functions using function overrides.

Q2A themes, plugins and language files created by other members are available here.

Development

Question2Answer is open source and we welcome contributions! The collaborative development process is being managed by Scott Vivian. Please read the contributing page for more information on how to get involved. We also have an active community where you can ask for help and discuss Q2A with other members.

Official releases can be found either on the Q2A website or via the Releases tab on GitHub.

Comments
  • fully support IPv6

    fully support IPv6

    This code part does not work for IPv6 addresses: COALESCE(INET_ATON(

    An IPv6 address does not have a . in its format

    At least loginip and createip are affected by this.

    opened by DanielRuf 25
  • Out-of-the-box Joomla! integration.

    Out-of-the-box Joomla! integration.

    These changes implement out-of-the-box integration with Joomla!, in a similar vein to the existing Wordpress integration.

    In addition to these changes, the Joomla! integration also requires a plugin to be installed into Joomla! (see https://github.com/SFWLtd/plg_q2a_integration). This plugin allows the Joomla! administrator to configure the Joomla! permissions that will grant different levels of access to Q2A.

    Note that the installation instructions on the Joomla! plugin currently describe how to install it with a version of Q2A that does not contain the changes in this pull request. The changes here will allow those installation instructions to be dramatically simplified.

    opened by Spudley 20
  • Distortion in menu bar when switched to RTL mode

    Distortion in menu bar when switched to RTL mode

    With the new Snow theme 1.4 when the admin switches to RTL mode the menus no longer stay in the same line, they items gets distorted and stack on top of each other

    opened by amint 18
  • Error when upgrading db from 1.5.x to 1.7.1

    Error when upgrading db from 1.5.x to 1.7.1

    After clicking "needs to be upgraded" the server did not respond anymore.

    Error log says:

    [21-Jun-2015 13:14:59] PHP Question2Answer MySQL query error 1054: Unknown column 'qa_posts.name' in 'field list' - Query: (SELECT '0' AS selectkey, qa_posts.postid, qa_posts.categoryid, qa_posts.type, LEFT(qa_posts.type, 1) AS basetype, INSTR(qa_posts.type, '_HIDDEN')>0 AS hidden, qa_posts.acount, qa_posts.selchildid, qa_posts.closedbyid, qa_posts.upvotes, qa_posts.downvotes, qa_posts.netvotes, qa_posts.views, qa_posts.hotness, qa_posts.flagcount, qa_posts.title, qa_posts.tags, UNIX_TIMESTAMP(qa_posts.created) AS created, qa_posts.name, qa_categories.title AS categoryname, qa_categories.backpath AS categorybackpath, CONCAT_WS(',', qa_posts.catidpath1, qa_posts.catidpath2, qa_posts.catidpath3, qa_posts.categoryid) AS categoryids, qa_posts.userid, qa_posts.cookieid, INET_NTOA(qa_posts.createip) AS createip, qa_userpoints.points, qa_users.flags, qa_users.level, qa_users.email AS email, qa_users.handle AS handle, BINARY qa_users.avatarblobid AS avatarblobid, qa_users.avatarwidth, qa_users.avatarheight, NULL AS obasetype, NULL AS ohidden, NULL AS opostid, NULL AS ouserid, NULL AS ocookieid, NULL AS oname, NULL AS oip, NULL AS otime, NULL AS oflagcount, NULL AS oflags, NULL AS olevel, NULL AS oemail, NULL AS ohandle, NULL AS oavatarblobid, NULL AS oavatarwidth, NULL AS oavatarheight, NULL AS opoints, NULL AS parentid, NULL AS qcount, NULL AS position, NULL AS childcount, NULL AS content, NULL AS backpath, NULL AS action, NULL AS period, NULL AS count, NULL AS pageid, NULL AS permit, NULL AS nav, NULL AS heading, NULL AS widgetid, NULL AS place FROM qa_posts LEFT JOIN qa_categories ON qa_categories.categoryid=qa_posts.categoryid LEFT JOIN qa_users ON qa_posts.userid=qa_users.userid LEFT JOIN qa_userpoints ON qa_posts.userid=qa_userpoints.userid JOIN (SELECT postid FROM qa_posts WHERE type='Q' ORDER BY qa_posts.created DESC LIMIT 0,30) y ON qa_posts.postid=y.postid) UNION ALL (SELECT '1', qa_posts.postid, qa_posts.categoryid, qa_posts.type, LEFT(qa_posts.type, 1), INSTR(qa_posts.type, '_HIDDEN')>0, qa_posts.acount, qa_posts.selchildid, qa_posts.closedbyid, qa_posts.upvotes, qa_posts.downvotes, qa_posts.netvotes, qa_posts.views, qa_posts.hotness, qa_posts.flagcount, qa_posts.title, qa_posts.tags, UNIX_TIMESTAMP(qa_posts.created), qa_posts.name, qa_categories.title, qa_categories.backpath, CONCAT_WS(',', qa_posts.catidpath1, qa_posts.catidpath2, qa_posts.catidpath3, qa_posts.categoryid), qa_posts.userid, qa_posts.cookieid, INET_NTOA(qa_posts.createip), qa_userpoints.points, qa_users.flags, qa_users.level, qa_users.email, qa_users.handle, BINARY qa_users.avatarblobid, qa_users.avatarwidth, qa_users.avatarheight, LEFT(aposts.type, 1), INSTR(aposts.type, '_HIDDEN')>0, aposts.postid, aposts.userid, aposts.cookieid, aposts.name, INET_NTOA(aposts.createip), UNIX_TIMESTAMP(aposts.created), aposts.flagcount, ausers.flags, ausers.level, ausers.email, ausers.handle, BINARY ausers.avatarblobid, ausers.avatarwidth, ausers.avatarheight, auserpoints.points, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL FROM qa_posts LEFT JOIN qa_categories ON qa_categories.categoryid=qa_posts.categoryid LEFT JOIN qa_users ON qa_posts.userid=qa_users.userid LEFT JOIN qa_userpoints ON qa_posts.userid=qa_userpoints.userid JOIN qa_posts AS aposts ON qa_posts.postid=aposts.parentid LEFT JOIN qa_users AS ausers ON aposts.userid=ausers.userid LEFT JOIN qa_userpoints AS auserpoints ON aposts.userid=auserpoints.userid JOIN (SELECT postid FROM qa_posts WHERE type='A' ORDER BY qa_posts.created DESC LIMIT 0,50) y ON aposts.postid=y.postid WHERE qa_posts.type='Q') UNION ALL (SELECT '2', qa_posts.postid, qa_posts.categoryid, qa_posts.type, LEFT(qa_posts.type, 1), INSTR(qa_posts.type, '_HIDDEN')>0, qa_posts.acount, qa_posts.selchildid, qa_posts.closedbyid, qa_posts.upvotes, qa_posts.downvotes, qa_posts.netvotes, qa_posts.views, qa_posts.hotness, qa_posts.flagcount, qa_posts.title, qa_posts.tags, UNIX_TIMESTAMP(qa_posts.created), qa_posts.name, qa_categories.title, qa_categories.backpath, CONCAT_WS(',', qa_posts.catidpath1, qa_posts.catidpath2, qa_posts.catidpath3, qa_posts.categoryid), qa_posts.userid, qa_posts.cookieid, INET_NTOA(qa_posts.createip), qa_userpoints.points, qa_users.flags, qa_users.level, qa_users.email, qa_users.handle, BINARY qa_users.avatarblobid, qa_users.avatarwidth, qa_users.avatarheight, LEFT(cposts.type, 1), INSTR(cposts.type, '_HIDDEN')>0, cposts.postid, cposts.userid, cposts.cookieid, cposts.name, INET_NTOA(cposts.createip), UNIX_TIMESTAMP(cposts.created), cposts.flagcount, cusers.flags, cusers.level, cusers.email, cusers.handle, BINARY cusers.avatarblobid, cusers.avatarwidth, cusers.avatarheight, cuserpoints.points, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL FROM qa_posts LEFT JOIN qa_categories ON qa_categories.categoryid=qa_posts.categoryid LEFT JOIN qa_users ON qa_posts.userid=qa_users.userid LEFT JOIN qa_userpoints ON qa_posts.userid=qa_userpoints.userid JOIN qa_posts AS parentposts ON qa_posts.postid=(CASE LEFT(parentposts.type, 1) WHEN 'A' THEN parentposts.parentid ELSE parentposts.postid END) JOIN qa_posts AS cposts ON parentposts.postid=cposts.parentid LEFT JOIN qa_users AS cusers ON cposts.userid=cusers.userid LEFT JOIN qa_userpoints AS cuserpoints ON cposts.userid=cuserpoints.userid JOIN (SELECT postid FROM qa_posts WHERE type='C' ORDER BY qa_posts.created DESC LIMIT 0,50) y ON cposts.postid=y.postid WHERE qa_posts.type='Q' AND ((parentposts.type='Q') OR (parentposts.type='A'))) UNION ALL (SELECT '3', NULL, qa_categories.categoryid, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, qa_categories.title, qa_categories.tags, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, qa_categories.parentid, qa_categories.qcount, qa_categories.position, COUNT(child.categoryid), qa_categories.content, qa_categories.backpath, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL FROM qa_categories JOIN (SELECT NULL AS parentkey UNION SELECT grandparent.parentid FROM qa_categories JOIN qa_categories AS parent ON qa_categories.parentid=parent.categoryid JOIN qa_categories AS grandparent ON parent.parentid=grandparent.categoryid WHERE qa_categories.backpath='' UNION SELECT parent.parentid FROM qa_categories JOIN qa_categories AS parent ON qa_categories.parentid=parent.categoryid WHERE qa_categories.backpath='' UNION SELECT parentid FROM qa_categories WHERE backpath='' UNION SELECT categoryid FROM qa_categories WHERE backpath='') y ON qa_categories.parentid<=>parentkey LEFT JOIN qa_categories AS child ON child.parentid=qa_categories.categoryid GROUP BY qa_categories.categoryid ORDER BY qa_categories.position) UNION ALL (SELECT 'pending_iplimits', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, action, period, count, NULL, NULL, NULL, NULL, NULL, NULL FROM qa_iplimits WHERE ip=COALESCE(INET_ATON('78.57.238.26'), 0)) UNION ALL (SELECT 'pending_navpages', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, title, tags, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, flags, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, position, NULL, NULL, NULL, NULL, NULL, NULL, pageid, permit+0, nav, heading, NULL, NULL FROM qa_pages WHERE nav IN ('B','M','O','F') ORDER BY position) UNION ALL (SELECT 'pending_widgets', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, title, tags, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, position, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, widgetid, place FROM qa_widgets ORDER BY position)
    

    Admin panel said before the upgrade: Q2A database version: 47

    bug 
    opened by q2apro 16
  • Bug when favoriting a tag:

    Bug when favoriting a tag: "teisė" and "teisę" are interpreted as the same tag

    While developping another plugin that deals with tags I stumbled over the following bug:

    When a user favorites the tag "teisė" or the tag "teisę" both are favorited as entity "teisę".

    Already in the frontend favorite form you can see that both tags have the same T id which is for the example favorite_T_1900_0. However, teisė should have 11294 according to the database.

    For seeing the bug: http://www.klaustukai.lt/tag/teis%C4%97 http://www.klaustukai.lt/tag/teis%C4%99

    The problem lies in qa-db-selects.php with the mysql query:

    case QA_ENTITY_TAG:
                $selectspec['source'].=' AND entityid=(SELECT wordid FROM ^words WHERE word=$ LIMIT 1)';
                break;
    

    Querying my database with SELECT wordid FROM qa_words WHERE word="teisė" LIMIT 1 incorrectly returns wordid=1900 instead of wordid=11294. Obviously the special character ė is interpreted as ę.

    Any way to fix this? Kai

    opened by q2apro 16
  • X-Frame-Options, X-XSS-Protection and X-Content-Type-Options headers

    X-Frame-Options, X-XSS-Protection and X-Content-Type-Options headers

    What do you think about setting the headers for X-Frame-Options, X-XSS-Protection and X-Content-Type-Options?

    https://securityheaders.io https://scotthelme.co.uk/hardening-your-http-response-headers/#x-frame-options

    This would harden the website a bit more against possible attacks and should not cause any problems (unlike CSP, which has to be used with caution).

    CSP may be more difficult to integrate, as this is not supported in every browser and has to be used with caution (adding allow origins for example) but may be a look worth.

    opened by DanielRuf 15
  • Bonus points in user profile are showing unusual behaviour

    Bonus points in user profile are showing unusual behaviour

    I was checking this feature and it was working fine till I was adding points to user profile...but as I reduced the points then points started to show very unusual results. Then I created a fake account and tested it more rigorously, first I added 100 points to a user (the user was already having 100 points and all point settings are as q2a offers). Now users score is 200 then I reduced 100 points (by typing -100) and the score turned to zero. The added 100 points, with zero and hundred the final score was hundred. Now added 10 points (final score 110). This time tried to reduce 10 points which should have resulted in 100 but the score with was there is 90.

    This was getting even confusing so I thought to report it here instead to getting mad.

    opened by gurjyot 15
  • Timeout when opening the plugin options under admin

    Timeout when opening the plugin options under admin

    Noticed here: https://www.question2answer.org/qa/72828/stop-spam-and-editor-plugin-not-working-and-down-whole-website

    And can confirm that I run into the same problem, once in a while.

    Opening admin/plugins then "options" (especially with SCeditor).

    Empty error logs :(

    opened by q2apro 14
  • [1.8] use password_hash and password_verify

    [1.8] use password_hash and password_verify

    Please test it.

    This pull request converts user hashes after a successful login, and uses bcrypt for all new passwords by default.

    You need to add password_compat functions to question2answer to make it compatible with PHP 5.3+ (I work with PHP 5.6 and 7.0 on my local machine).

    Worked here without any issues.

    This pull request solves #340

    Keep in mind that we do not need any salt as password_hash creates a safe hash by default.

    opened by DanielRuf 14
  • Move question2answer.org documentation to GitHub Pages / Jekyll

    Move question2answer.org documentation to GitHub Pages / Jekyll

    Hello all. In order to make updates to question2answer.org easier for more people to get involved, and to reduce the maintenance effort from current management, I propose to move this website to GitHub pages using their web server and Jekyll for page processing.

    This may be considered a best practice for open source projects and I have started most of the effort already.

    For a live preview of this website, please see https://fulldecent.github.io/question2answer.org/

    If you would like to get involved, please see https://github.com/fulldecent/question2answer.org

    This issue was created in an effort to find more contributors interested in helping. Please join if you have HTML or Jekyll experience or if you otherwise support the cause.

    When the result is good enough, we will create a pull request from that project into this project in a new gh-pages branch move this project to the q2a user. The end result will be a website which is automatically generated from source code here in the question2answer repository and supported by the Q2A contributors like you and me. Further discussion on the project plan and migration plan are at https://github.com/fulldecent/question2answer.org/blob/gh-pages/README.md

    opened by fulldecent 14
  • Question2Answer 1.7 - Stored XSS Vulnerability

    Question2Answer 1.7 - Stored XSS Vulnerability

    Just bringing this into attention from http://www.question2answer.org/qa/52743/security-wise-how-secure-is-q%26a resp. http://iedb.ir/exploits-2900.html

    ###########################
    
    # Question2Answer 1.7 - Stored XSS Vulnerability
    
    ###########################
    
    ######################################################################
    [+] Title: Script Question2Answer 1.7 - Stored XSS Vulnerability
    [+] Author: s0w
    [+] Tested On Windows & Linux
    [+] Date: 21/03/2015
    [+] Type: Web Application
    [+] Script Download: https://github.com/q2a/question2answer
    [+] Vendor Homepage: http://www.question2answer.org
    [+] Vulnerability in:\qa-include\pages\question.php
    [+] Google Dork : intext:"Powered by Question2Answer"
    #######################################################################
    
    [+] As shown in the code, the value of 'title' and 'textbody' not filtered
    by 'htmlspecialcharts'
    which cause stored xss and same in data-store in webserver SQL commands
    .
    
    [+] Exploit :
    1. Browse application in browser ..
    2. Add new question with xss code like alert method ;)
    3. submit the new question to viewers ..
    4. complete next steps as xss in tag,body,title,.. etc ..
    5. Finally submit your Qes ..
    6. Test your target in main page ./index.php ..
    7. Use this in Cookies,alerts, Or TrafficBots :D Have Fun !!
    
    [+] XSS Pattern can be used: '"<script>alert(/s0w/)</script>
    [+] Demo Video : http://youtu.be/6qy9DXifNiw
    [+] Demo Target :
    http://soualwjoab.com/
    
    # Discovered By: s0w
    # Contact: fb.me/s0w.egy
    # Mail: [email protected]
    
    To Egyptian Shell team | Sec4ever
    
    ###########################
    
    # Iranian Exploit DataBase = http://IeDb.Ir [2015-03-25]
    
    ###########################
    

    Has this been fixed?

    opened by q2apro 13
  • Login and registration are on the same page

    Login and registration are on the same page

    Hi, in default login page and signup page is separate . It is better both in same page. for example :

    if you have an account please log in : 
    username:
    password:
    
    
    if you dont have an account , please sign up : 
    username : 
    email : 
    password
    
    opened by PCcloob 0
  • Is it possible to extend a theme?

    Is it possible to extend a theme?

    I'm having trouble modifying sections of the code controlled by SnowFlat theme from my plugin. The theme just calls $this->method, instead of delegating to the layer stack which would cause my layer to run. It isn't documented that theme defined methods will have precedence over whatever is written in a layer class

    Anyway, I want to convert my layer into a theme, but without overriding all the styling of SnowFlat. Unfortunately, it just enables my new theme but doesn't seem to execute its qa-theme class. At the top of it, I have

    require_once QA_INCLUDE_DIR . "../qa-theme/SnowFlat/qa-theme.php";
    
    use qa_html_theme as SnowFlat;
    
    class qa_html_theme extends SnowFlat {
        // my methods
    }
    

    The above neither works nor throws any error. I can't var_dump but I know the class doesn't run since it throws no error when I put a deliberately wrong path

    How do I fix this?

    opened by nmeri17 0
  • A notes link is rendered unusable by prefixing it with the word

    A notes link is rendered unusable by prefixing it with the word "denied:"

    After entering a notes link like in a text field (question/answer/comment) and after saving and closing the dialog the link is prepended by the word "denied:" which renders the link unusable. A notes link is something like "notes:///xxxxxxxxxxx". See https://www.hcltechsw.com/notes. This is NOT an issue of ckeditor. The culprit is q2a/qa-inlude/vendor/htmLawed.php line 340.

    opened by rumpumpel1 2
  • Fix: Fix transparent background of top-right menu

    Fix: Fix transparent background of top-right menu

    What's wrong?

    Using the default theme (SnowFlat), the top right menu has a corrupted background, as shown in the image below.

    Screenshot from 2022-10-10 21-14-41

    What does this PR do?

    This PR simply adds extra space for the menu container by extending its height. It will look like this: Screenshot from 2022-10-10 21-14-10

    opened by emranbm 5
  • the basic install should mention you need to switch to the master branch

    the basic install should mention you need to switch to the master branch

    I recently walked through the basic install https://docs.question2answer.org/install/ And it says you can find the latest version of the code on github. However, the default branch is dev, not master.

    It would probably be good to mention the person installing needs to switch to the master branch because there are bugs in the dev branch. Or just make master the default branch? Either way...

    opened by tooPhatJones 0
Releases(v1.8.6)
  • v1.8.6(Apr 20, 2021)

  • v1.8.5(Jul 15, 2020)

    Miscellaneous bug fixes:

    • Prevent parsing links in code blocks.
    • Fix SnowFlat comment vote buttons.
    • Improve compact number display.
    • Improve delete cache performance.
    • Prevent use of <style> tag (PR #740 from @alacn1).
    • Remove database entries where deleted user was favorited (PR #754 from @jairlopez).
    • Fix database overflow issue with many repeated words (PR #758 from @pupi1985).
    • Fix mismatch between Q2A and PHPMailer email validation (PR #773 from @pupi1985).
    • Fix some PHP notices on PHP 7.4.
    • Add 404 response for empty tag page.
    Source code(tar.gz)
    Source code(zip)
    question2answer-1.8.5.zip(2.24 MB)
  • v1.8.4(May 7, 2020)

    Security improvement and some bug fixes:

    • Security fix: prevent use of <embed> and <object> tags (PR #807 by @gturri).
    • Treat blob ids as strings due to size limitations (PR #735 by @pupi1985).
    • Fix negative upvoteCount wrongly displayed (PR #738 by @pupi1985).
    • Fix file input field causing problems on SnowFlat theme.
    • Avoid magic quotes deprecation notice on PHP 7.4.
    • Prevent duplicated vote events (PR #751 by @pupi1985).
    Source code(tar.gz)
    Source code(zip)
    question2answer-1.8.4.zip(2.22 MB)
  • v1.8.3(Jan 12, 2019)

    Minor bugs fixes:

    • Fix voting on follow-on question 'comments'.
    • Fix selection of answers trying to close questions.
    • Fix titles wrapping in SnowFlat theme.
    • Fix cache trim function.
    • Clear cache when posts are hidden.
    • Fix minimum tags error when using only categories.
    • Fix MySQL reserved keyword clash.
    Source code(tar.gz)
    Source code(zip)
    question2answer-1.8.3.zip(2.22 MB)
  • v1.8.2(Dec 20, 2018)

    Several bug fixes:

    • Fix closed questions by selected answer not displayed as closed
    • Fix tag background color in Classic theme
    • Fix 'no permissions' message in WYSIWYG editor upload
    • Fix errors in structured data
    • Add ^site_url parameter to email notifications
    • Fix event logger issue with Unicode characters
    • Fix searching/indexing in Thai language
    • Add confirmation for email unsubscribe
    • Fix plugin version comparison (when plugin version is later than official release)
    • Fix Q2A version comparison (for pre-release versions e.g. 1.8.0-beta vs 1.8.0)
    • Fix Ubuntu font in SnowFlat theme on Windows
    Source code(tar.gz)
    Source code(zip)
    question2answer-1.8.2.zip(2.22 MB)
  • v1.8.0(Jan 30, 2018)

    Issues fixed since beta2:

    • Fix missing function qa_get_gravatar_url when using Wordpress integration.
    • Added total unanswered questions to Admin > Stats.
    • Fix MySQL query errors when using SQL mode IGNORE_SPACE.

    Main features in Q2A 1.8:

    • Significant performance improvements
    • Caching system
    • Comment voting
    • Enable/disable plugins
    • Joomla integration
    • Schema.org microdata

    And many more! Full changelog here

    Source code(tar.gz)
    Source code(zip)
    question2answer-1.8.0.zip(2.10 MB)
  • v1.8.0-beta2(Dec 23, 2017)

    Second beta of next major version. Changelog since beta1:

    • Fixed errors with output buffering and gzip compression.
    • Fixed non-ANSI group-by queries in MySQL 5.7.
    • Fixed notices on PHP 7.2.
    • Fixed points recalculation when converting answers to comments.
    • Added generic .qa-post-content class to replace old .entry-content which was removed.
    • Fixed non-unique cache keys.
    • Reworked file cache to securely allow cache inside web root.
    • Fixed issue with PHPMailer's autoloader on PHP 7.2.
    • Removed (non-functional) clipboard from CKEditor.
    Source code(tar.gz)
    Source code(zip)
    question2answer-1.8.0-beta2.zip(2.11 MB)
  • v1.8.0-beta1(Dec 23, 2017)

  • v1.7.5(Aug 30, 2017)

    Important security fix and other minor improvements:

    • Security fix - prevent creation of multiple users during installation.
    • Use site language for reCAPTCHA.
    • Add site language to HTML tag.
    • Change from / reply-to for feedback form.
    • Fix missing icon on private messages in SnowFlat theme.
    • Fix users being unable to see all their own profile fields.
    • Minor fixes to post validation.
    Source code(tar.gz)
    Source code(zip)
    question2answer-1.7.5.zip(2.03 MB)
  • v1.7.4(Mar 16, 2016)

  • v1.7.3(Feb 3, 2016)

    Many small bug fixes and improvements:

    • Fix missing error message when post content too short.
    • Fix empty question title, answer or comment passing validation.
    • Handle 4-byte Unicode characters (prevent blank usernames).
    • Various minor fixes to SnowFlat theme.
    • Fix error message during JavaScript recalc scripts.
    • Remove link to hidden duplicate/follow-on questions.
    • Fix private messages link being shown for SSO/Wordpress sites.
    • Fix custom registration URLs with Wordpress integration.
    • Increase default size of Facebook avatars.
    • Fix slow query when migrating files to/from disk.
    • Fix issues when uploaded files are missing from disk or database.
    Source code(tar.gz)
    Source code(zip)
    question2answer-1.7.3.zip(2.03 MB)
  • v1.7.2(Nov 17, 2015)

    Many small bug fixes and improvements:

    • Fix warning under certain conditions on closed questions.
    • Fix meta description not showing on re-routed home pages.
    • Fix missing server-side check regarding allow_multi_answers option.
    • Fix missing title errors when recategorizing questions.
    • Fix database error when profile fields are missing.
    • Fix incorrect link styling for categories privileges in user profile.
    • Prevent blank paragraphs in CKeditor.
    • Fix potential infinite loop in JavaScript from qa_set_display_rules.
    • Change URL test string to avoid Apache mod_security issues.
    • Various minor fixes to themes.
    • Use local Ubuntu font by default.
    • Fix reCAPTCHA dependency on allow_url_fopen configuration.
    • Fix links/redirects to post anchors.
    • Add highlight for answer/comment anchors.
    • Allow PDFs to be displayed in-browser.
    • Add filename for image downloads.
    • Prevent usernames containing . or ..
    • Allow non-default port in MySQL connection.
    Source code(tar.gz)
    Source code(zip)
    question2answer-1.7.2.zip(2.05 MB)
  • v1.7.1(Jul 29, 2015)

    Many small bug fixes and improvements:

    • Fixed errors with microformats.
    • Fixed inconsistencies in SnowFlat theme between small screen responsive styles and mobile-detected styles.
    • Fixed issue with multiple reCAPTCHAs per page.
    • Fixed PHP notice when 'age of post' option is turned off.
    • Fixed text direction on login forms for RTL themes.
    • Allowed CKEditor config to be overriden more easily.
    • Reinstates CKEditor smiley plugin and added an admin button to fix missing image links.
    • Fixed upvote/downvote styles (when using separate counters) in SnowFlat theme.
    • Various minor style/alignment fixes in SnowFlat theme.
    • Improved the style of debug information.
    • Fixed missing theme initialization calls in AJAX requests.
    • Improved snippets in the mouseover-layer plugin.
    Source code(tar.gz)
    Source code(zip)
    question2answer-1.7.1.zip(1.95 MB)
Owner
Question2Answer
Free and open source platform for Q&A sites.
Question2Answer
🚀Bolt CMS is an open source, adaptable platform for building and running modern websites

??Bolt CMS is an open source, adaptable platform for building and running modern websites

Bolt 32 Dec 3, 2022
ExpressionEngine is a flexible, feature-rich, free open-source content management platform that empowers hundreds of thousands of individuals and organizations around the world to easily manage their web site.

ExpressionEngine CMS ExpressionEngine is a mature, flexible, secure, free open-source content management system. It is beloved by designers for giving

ExpressionEngine 412 Dec 27, 2022
Free, open-source, self-hosted CMS platform based on the Laravel PHP Framework.

Winter is a Content Management System (CMS) and web platform whose sole purpose is to make your development workflow simple again. It was born out of

Winter CMS 1.1k Jan 3, 2023
phpReel is a free, MIT open-source subscription-based video streaming service that lets you create your platform for distributing video content in the form of movies or series.

phpReel is a free, MIT open-source subscription-based video streaming service that lets you create your platform for distributing video content in the form of movies or series.

null 118 Dec 14, 2022
Baicloud CMS is a lightweight content management system (CMS) based on PHP and MySQL and running on Linux, windows and other platforms

BaiCloud-cms About BaiCloud-cms is a powerful open source CMS that allows you to create professional websites and scalable web applications. Visit the

null 5 Aug 15, 2022
Scriptlog is a free and an open source PHP blog software.

Scriptlog is a free and an open source PHP blog software. We're refactoring our legacy weblog code. Making it more simple, secure, modular, fast and robust personal blogging system. Scriptlog runs on PHP 5.6 or higher and uses MySQL.

M.Noermoehammad 7 Sep 12, 2022
Instructions and helpful files for running Drupal 7 on the Amezmo platform.

Drupal 7 Amezmo Instructions and helpful files for running Drupal 7 on the Amezmo platform. Description Drupal 7 requires some small modifications to

Steven DuBois 2 Aug 9, 2022
Security, performance, marketing, and design tools — Jetpack is made by WordPress experts to make WP sites safer and faster, and help you grow your traffic.

Jetpack Monorepo This is the Jetpack Monorepo. It contains source code for the Jetpack plugin, the Jetpack composer packages, and other things. How to

Automattic 1.4k Jan 7, 2023
HTMLy is an open source Databaseless Blogging Platform or Flat-File Blog prioritizes simplicity and speed written in PHP

HTMLy is an open source Databaseless Blogging Platform or Flat-File Blog prioritizes simplicity and speed written in PHP. HTMLy can be referred to as Flat-File CMS either since it will also manage your content.

Dan 858 Jan 6, 2023
Sulu is an open-source content management platform based on the Symfony PHP framework

This repository is no longer the recommended way to start a sulu project. Please have a look at the documentation to find out how to start a new proje

Sulu CMS 623 Nov 12, 2022
ExpressionEngine is a mature, flexible, secure, free open-source content management system.

ExpressionEngine is a flexible, feature-rich, free open-source content management platform that empowers hundreds of thousands of individuals and organizations around the world to easily manage their web site.

ExpressionEngine 366 Mar 29, 2022
Amila Laravel CMS - Free, open-source Simple Bootstrap Laravel CMS

Simple Bootstrap Laravel CMS. Support Laravel 8.x Can integrate into any existing Laravel project. Only add few database tables with prefixes, not affect your existing database tables. Support Laravel 7.x & Laravel 6.x & Laravel 5.x & MySql & PostgreSql - Amila Laravel CMS

Alex Zeng 96 Sep 6, 2022
Twill is an open source CMS toolkit for Laravel that helps developers rapidly create a custom admin console that is intuitive, powerful and flexible. /// Chat with us and others on Spectrum: https://spectrum.chat/twill

About Twill Twill is an open source Laravel package that helps developers rapidly create a custom CMS that is beautiful, powerful, and flexible. By st

AREA 17 3k Jan 6, 2023
Manage your photos with Piwigo, a full featured open source photo gallery application for the web. Star us on Github! More than 200 plugins and themes available. Join us and contribute!

Manage your photo library. Piwigo is open source photo gallery software for the web. Designed for organisations, teams and individuals. The piwigo.org

Piwigo 2.3k Jan 1, 2023
:star2: PJ Blog is an open source blog built with Laravel and Vue.js.

?? PJ Blog is an open source blog built with Laravel and Vue.js. https://pigjian.com Special thanks to the generous sponsorship by: PJ Blog This is a

Jiajian Chan 2.8k Dec 28, 2022
Flextype is an open-source Hybrid Content Management System with the freedom of a headless CMS and with the full functionality of a traditional CMS

Flextype is an open-source Hybrid Content Management System with the freedom of a headless CMS and with the full functionality of a traditional CMS. Building this Content Management System, we focused on simplicity. To achieve this, we implemented a simple but powerful API's.

Flextype 524 Dec 30, 2022
NukeViet 132 Nov 27, 2022
BaiCloud-cms is a powerful open source CMS that allows you to create professional websites and scalable web applications. Visit the project website for more information.

BaiCloud-cms About BaiCloud-cms is a powerful open source CMS that allows you to create professional websites and scalable web applications. Visit the

null 5 Aug 15, 2022
ProcessWire 3.x is a friendly and powerful open source CMS with a strong API.

Welcome to ProcessWire 3.x This document is in Markdown. An HTML formatted version of this document can be read at: https://github.com/processwire/pro

ProcessWire 804 Jan 3, 2023