From 8ddd5d24eee95ceb32c67aa0defe6a97a2679e53 Mon Sep 17 00:00:00 2001 From: "Michael J. Rubinsky" Date: Thu, 24 Dec 2009 13:03:40 -0500 Subject: [PATCH] Add agora to hatchery --- agora/COPYING | 280 +++ agora/README | 67 + agora/ban.php | 75 + agora/config/.htaccess | 1 + agora/config/conf.xml | 83 + agora/config/menu.php.dist | 41 + agora/config/prefs.php.dist | 268 +++ agora/deleteforum.php | 84 + agora/docs/CHANGES | 47 + agora/docs/CREDITS | 30 + agora/docs/INSTALL | 181 ++ agora/docs/TODO | 22 + agora/editforum.php | 72 + agora/forums.php | 74 + agora/index.php | 16 + agora/lib/.htaccess | 1 + agora/lib/Agora.php | 421 ++++ agora/lib/Api.php | 821 +++++++ agora/lib/Application.php | 71 + agora/lib/Block/forums.php | 96 + agora/lib/Block/thread.php | 94 + agora/lib/Block/threads.php | 132 ++ agora/lib/Comments.php | 127 ++ agora/lib/Forms/Forum.php | 55 + agora/lib/Forms/Message.php | 64 + agora/lib/Forms/Search.php | 73 + agora/lib/Messages.php | 2340 ++++++++++++++++++++ agora/lib/Messages/split_sql.php | 302 +++ agora/lib/Messages/sql.php | 300 +++ agora/lib/Tree/flat.php | 139 ++ agora/lib/View.php | 27 + agora/lib/base.php | 48 + agora/lib/prefs.php | 23 + agora/lib/version.php | 1 + agora/locale/.htaccess | 1 + agora/locale/de_DE/LC_MESSAGES/agora.mo | Bin 0 -> 171329 bytes agora/locale/es_ES/LC_MESSAGES/agora.mo | Bin 0 -> 164158 bytes agora/locale/fi_FI/LC_MESSAGES/agora.mo | Bin 0 -> 153753 bytes agora/locale/fr_FR/LC_MESSAGES/agora.mo | Bin 0 -> 151332 bytes agora/locale/hu_HU/LC_MESSAGES/agora.mo | Bin 0 -> 161858 bytes agora/locale/it_IT/LC_MESSAGES/agora.mo | Bin 0 -> 154393 bytes agora/locale/ja_JP/LC_MESSAGES/agora.mo | Bin 0 -> 147982 bytes agora/locale/lt_LT/LC_MESSAGES/agora.mo | Bin 0 -> 151905 bytes agora/locale/ro_RO/LC_MESSAGES/agora.mo | Bin 0 -> 18790 bytes agora/locale/sl_SI/LC_MESSAGES/agora.mo | Bin 0 -> 15987 bytes agora/locale/zh_TW/LC_MESSAGES/agora.mo | Bin 0 -> 127989 bytes agora/messages/abuse.php | 103 + agora/messages/delete.php | 88 + agora/messages/edit.php | 126 ++ agora/messages/index.php | 221 ++ agora/messages/lock.php | 84 + agora/messages/merge.php | 94 + agora/messages/move.php | 80 + agora/messages/split.php | 76 + agora/moderate.php | 87 + agora/moderators.php | 93 + agora/owner.php | 78 + agora/po/.htaccess | 1 + agora/po/README | 1 + agora/po/agora.pot | 1023 +++++++++ agora/po/de_DE.po | 1035 +++++++++ agora/po/es_ES.po | 1028 +++++++++ agora/po/fi_FI.po | 623 ++++++ agora/po/fr_FR.po | 281 +++ agora/po/hu_HU.po | 1016 +++++++++ agora/po/it_IT.po | 617 ++++++ agora/po/ja_JP.po | 1116 ++++++++++ agora/po/lt_LT.po | 966 ++++++++ agora/po/ro_RO.po | 263 +++ agora/po/sl_SI.po | 1032 +++++++++ agora/po/zh_TW.po | 140 ++ agora/rss/index.php | 59 + agora/rss/messages.php | 69 + agora/rss/threads.php | 108 + agora/scripts/phorum2agora.php | 222 ++ agora/scripts/sql/agora.mysql.sql | 67 + agora/scripts/sql/agora.sql | 67 + agora/scripts/upgrades/2006-10-26_forums_table.php | 76 + .../scripts/upgrades/2006-10-26_messages_table.php | 80 + .../scripts/upgrades/2006-10-28_update_counts.php | 100 + .../upgrades/2006-12-20_add_moderators_table.sql | 6 + agora/scripts/upgrades/2007-02-04_modifystamp.sql | 3 + agora/scripts/upgrades/2007-09-23_last_message.php | 102 + agora/scripts/upgrades/2007-09-23_last_message.sql | 6 + .../2008-10-26_add_distribution_address.sql | 4 + agora/search.php | 72 + agora/templates/.htaccess | 1 + agora/templates/ban.html.php | 19 + agora/templates/block/forums.html.php | 49 + agora/templates/block/thread.html.php | 41 + agora/templates/block/threads.html.php | 37 + agora/templates/common-header.inc | 30 + agora/templates/forums.html.php | 61 + agora/templates/main.html.php | 3 + agora/templates/messages/edit.html.php | 28 + agora/templates/messages/flat.html.php | 34 + agora/templates/messages/flat_thread.html.php | 29 + agora/templates/messages/form.html.php | 24 + agora/templates/messages/index.html.php | 22 + agora/templates/messages/message.html.php | 44 + agora/templates/messages/threads.html.php | 50 + agora/templates/moderate.html.php | 56 + agora/templates/moderators.html.php | 33 + agora/templates/prefs/avatarselect.inc | 10 + agora/templates/search.html.php | 36 + agora/templates/threads.html.php | 71 + agora/themes/bluewhite/graphics/comment_box.png | Bin 0 -> 729 bytes agora/themes/bluewhite/screen.css | 24 + agora/themes/graphics/agora.png | Bin 0 -> 281 bytes agora/themes/graphics/favicon.ico | Bin 0 -> 1406 bytes agora/themes/graphics/flagged.png | Bin 0 -> 350 bytes agora/themes/graphics/forums.png | Bin 0 -> 291 bytes agora/themes/graphics/hot.png | Bin 0 -> 353 bytes agora/themes/graphics/moderate.png | Bin 0 -> 196 bytes agora/themes/graphics/newforum.png | Bin 0 -> 380 bytes agora/themes/graphics/newmessage.png | Bin 0 -> 318 bytes agora/themes/graphics/reply.png | Bin 0 -> 231 bytes agora/themes/graphics/thread.png | Bin 0 -> 316 bytes agora/themes/graphics/threads.png | Bin 0 -> 316 bytes agora/themes/screen.css | 21 + agora/threads.php | 82 + agora/view.php | 34 + 122 files changed, 18629 insertions(+) create mode 100644 agora/COPYING create mode 100755 agora/README create mode 100644 agora/ban.php create mode 100755 agora/config/.htaccess create mode 100755 agora/config/conf.xml create mode 100755 agora/config/menu.php.dist create mode 100755 agora/config/prefs.php.dist create mode 100644 agora/deleteforum.php create mode 100644 agora/docs/CHANGES create mode 100755 agora/docs/CREDITS create mode 100755 agora/docs/INSTALL create mode 100755 agora/docs/TODO create mode 100644 agora/editforum.php create mode 100644 agora/forums.php create mode 100755 agora/index.php create mode 100755 agora/lib/.htaccess create mode 100644 agora/lib/Agora.php create mode 100644 agora/lib/Api.php create mode 100644 agora/lib/Application.php create mode 100644 agora/lib/Block/forums.php create mode 100644 agora/lib/Block/thread.php create mode 100644 agora/lib/Block/threads.php create mode 100644 agora/lib/Comments.php create mode 100644 agora/lib/Forms/Forum.php create mode 100644 agora/lib/Forms/Message.php create mode 100644 agora/lib/Forms/Search.php create mode 100644 agora/lib/Messages.php create mode 100644 agora/lib/Messages/split_sql.php create mode 100644 agora/lib/Messages/sql.php create mode 100644 agora/lib/Tree/flat.php create mode 100644 agora/lib/View.php create mode 100644 agora/lib/base.php create mode 100644 agora/lib/prefs.php create mode 100644 agora/lib/version.php create mode 100755 agora/locale/.htaccess create mode 100644 agora/locale/de_DE/LC_MESSAGES/agora.mo create mode 100755 agora/locale/es_ES/LC_MESSAGES/agora.mo create mode 100755 agora/locale/fi_FI/LC_MESSAGES/agora.mo create mode 100755 agora/locale/fr_FR/LC_MESSAGES/agora.mo create mode 100755 agora/locale/hu_HU/LC_MESSAGES/agora.mo create mode 100755 agora/locale/it_IT/LC_MESSAGES/agora.mo create mode 100755 agora/locale/ja_JP/LC_MESSAGES/agora.mo create mode 100755 agora/locale/lt_LT/LC_MESSAGES/agora.mo create mode 100755 agora/locale/ro_RO/LC_MESSAGES/agora.mo create mode 100644 agora/locale/sl_SI/LC_MESSAGES/agora.mo create mode 100755 agora/locale/zh_TW/LC_MESSAGES/agora.mo create mode 100644 agora/messages/abuse.php create mode 100644 agora/messages/delete.php create mode 100644 agora/messages/edit.php create mode 100644 agora/messages/index.php create mode 100644 agora/messages/lock.php create mode 100644 agora/messages/merge.php create mode 100644 agora/messages/move.php create mode 100644 agora/messages/split.php create mode 100644 agora/moderate.php create mode 100644 agora/moderators.php create mode 100644 agora/owner.php create mode 100755 agora/po/.htaccess create mode 100755 agora/po/README create mode 100644 agora/po/agora.pot create mode 100644 agora/po/de_DE.po create mode 100644 agora/po/es_ES.po create mode 100644 agora/po/fi_FI.po create mode 100644 agora/po/fr_FR.po create mode 100644 agora/po/hu_HU.po create mode 100644 agora/po/it_IT.po create mode 100644 agora/po/ja_JP.po create mode 100644 agora/po/lt_LT.po create mode 100644 agora/po/ro_RO.po create mode 100644 agora/po/sl_SI.po create mode 100644 agora/po/zh_TW.po create mode 100644 agora/rss/index.php create mode 100644 agora/rss/messages.php create mode 100644 agora/rss/threads.php create mode 100755 agora/scripts/phorum2agora.php create mode 100644 agora/scripts/sql/agora.mysql.sql create mode 100644 agora/scripts/sql/agora.sql create mode 100755 agora/scripts/upgrades/2006-10-26_forums_table.php create mode 100755 agora/scripts/upgrades/2006-10-26_messages_table.php create mode 100755 agora/scripts/upgrades/2006-10-28_update_counts.php create mode 100644 agora/scripts/upgrades/2006-12-20_add_moderators_table.sql create mode 100644 agora/scripts/upgrades/2007-02-04_modifystamp.sql create mode 100644 agora/scripts/upgrades/2007-09-23_last_message.php create mode 100644 agora/scripts/upgrades/2007-09-23_last_message.sql create mode 100644 agora/scripts/upgrades/2008-10-26_add_distribution_address.sql create mode 100644 agora/search.php create mode 100755 agora/templates/.htaccess create mode 100755 agora/templates/ban.html.php create mode 100755 agora/templates/block/forums.html.php create mode 100755 agora/templates/block/thread.html.php create mode 100755 agora/templates/block/threads.html.php create mode 100644 agora/templates/common-header.inc create mode 100755 agora/templates/forums.html.php create mode 100755 agora/templates/main.html.php create mode 100755 agora/templates/messages/edit.html.php create mode 100644 agora/templates/messages/flat.html.php create mode 100755 agora/templates/messages/flat_thread.html.php create mode 100755 agora/templates/messages/form.html.php create mode 100755 agora/templates/messages/index.html.php create mode 100755 agora/templates/messages/message.html.php create mode 100755 agora/templates/messages/threads.html.php create mode 100755 agora/templates/moderate.html.php create mode 100755 agora/templates/moderators.html.php create mode 100644 agora/templates/prefs/avatarselect.inc create mode 100755 agora/templates/search.html.php create mode 100755 agora/templates/threads.html.php create mode 100755 agora/themes/bluewhite/graphics/comment_box.png create mode 100755 agora/themes/bluewhite/screen.css create mode 100755 agora/themes/graphics/agora.png create mode 100755 agora/themes/graphics/favicon.ico create mode 100755 agora/themes/graphics/flagged.png create mode 100755 agora/themes/graphics/forums.png create mode 100755 agora/themes/graphics/hot.png create mode 100755 agora/themes/graphics/moderate.png create mode 100755 agora/themes/graphics/newforum.png create mode 100755 agora/themes/graphics/newmessage.png create mode 100755 agora/themes/graphics/reply.png create mode 100755 agora/themes/graphics/thread.png create mode 100755 agora/themes/graphics/threads.png create mode 100755 agora/themes/screen.css create mode 100644 agora/threads.php create mode 100644 agora/view.php diff --git a/agora/COPYING b/agora/COPYING new file mode 100644 index 000000000..a6b67561a --- /dev/null +++ b/agora/COPYING @@ -0,0 +1,280 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS diff --git a/agora/README b/agora/README new file mode 100755 index 000000000..787967920 --- /dev/null +++ b/agora/README @@ -0,0 +1,67 @@ +What is Agora? +-------------- + +Agora is a Horde-based forum program. + +This software is OSI Certified Open Source Software. +OSI Certified is a certification mark of the Open Source Initiative. + + +Obtaining Agora +--------------- + +Further information on Agora and the latest version can be obtained at + + http://www.horde.org/agora/ + + +Documentation +------------- + +The following documentation is available in the Agora distribution: + +README - This file +COPYING - Copyright and license information +docs/CHANGES - List of changes by release +docs/CREDITS - Who developed this +docs/INSTALL - Installation instructions + + +Installation +------------ + +Instructions for installing Agora can be found in the file INSTALL +in the docs/ directory of the Agora distribution. + + +Assistance +---------- + +If you encounter problems with Agora, help is available! + +The Horde Frequently Asked Questions List (FAQ), available on the Web +at + + http://www.horde.org/faq/ + +The Horde Project runs a number of mailing lists, for individual +applications and for issues relating to the project as a whole. +Information, archives, and subscription information can be found at + + http://www.horde.org/mail/ + +Lastly, Horde developers, contributors and users also make occasional +appearances on IRC, on the channel #horde on the Freenode Network +(irc.freenode.net). + + +Licensing +--------- + +For licensing and copyright information, please see the file COPYING +in the Agora distribution. + +Thanks, +The Agora team + +$Horde: agora/README,v 1.2 2007/04/22 04:51:51 chuck Exp $ diff --git a/agora/ban.php b/agora/ban.php new file mode 100644 index 000000000..ba6209fba --- /dev/null +++ b/agora/ban.php @@ -0,0 +1,75 @@ +push($forums->message, 'horde.error'); + header('Location: ' . Horde::applicationUrl('forums.php')); + exit; +} + +/* Check permissions */ +if (!$forums->hasPermission(Horde_Perms::DELETE)) { + $notification->push(sprintf(_("You don't have permissions to ban users from forum %s."), $forum_id), 'horde.warning'); + header('Location: ' . Horde::applicationUrl('forums.php')); + exit; +} + +/* Ban action */ +if (($action = Horde_Util::getFormData('action')) !== null) { + $user = Horde_Util::getFormData('user'); + $result = $forums->updateBan($user, $forum_id, $action); + if ($result instanceof PEAR_Error) { + $notification->push($result->getMessage(), 'horde.error'); + } + + $url = Agora::setAgoraId($forum_id, null, Horde::applicationUrl('ban.php'), $scope); + header('Location: ' . $url); + exit; +} + +/* Get the list of banned users. */ +$delete = Horde_Util::addParameter(Horde::applicationUrl('ban.php'), + array('action' => 'delete', + 'scope' => $scope, + 'forum_id' => $forum_id)); +$banned = $forums->getBanned(); +foreach ($banned as $user => $level) { + $banned[$user] = Horde::link(Horde_Util::addParameter($delete, 'user', $user), _("Delete")) . $user . ''; +} + +$title = _("Ban"); +$vars = Horde_Variables::getDefaultVariables(); +$form = new Horde_Form($vars, $title); +$form->addHidden('', 'scope', 'text', false); +$form->addHidden('', 'agora', 'text', false); +$form->addHidden('', 'action', 'text', false); +$vars->set('action', 'add'); +$form->addVariable(_("User"), 'user', 'text', true); + +$view = new Agora_View(); +$view->menu = Agora::getMenu('string'); +$view->formbox = Horde_Util::bufferOutput(array($form, 'renderActive'), null, null, 'ban.php', 'post'); +$view->notify = Horde_Util::bufferOutput(array($notification, 'notify'), array('listeners' => 'status')); +$view->banned = $banned; +$view->forum = $forums->getForum(); + +require AGORA_TEMPLATES . '/common-header.inc'; +echo $view->render('ban.html.php'); +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/agora/config/.htaccess b/agora/config/.htaccess new file mode 100755 index 000000000..3a4288278 --- /dev/null +++ b/agora/config/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/agora/config/conf.xml b/agora/config/conf.xml new file mode 100755 index 000000000..5fc38edcd --- /dev/null +++ b/agora/config/conf.xml @@ -0,0 +1,83 @@ + + + + + + Forum Settings + + + 1 + 0 + -1 + + + false + + + /usr/share/games/figlet/fonts/big.flf + + + + + + Thread Settings + true + Thread Settings + false + + + + Menu Settings + + + + + + + + + Avatar Settings + + true + + gif;jpg;jpeg;png + true + + 5 + 3 + + + + true + true + true + + 80 + 80 + 8 + + + + + + + + + + diff --git a/agora/config/menu.php.dist b/agora/config/menu.php.dist new file mode 100755 index 000000000..ce53036ed --- /dev/null +++ b/agora/config/menu.php.dist @@ -0,0 +1,41 @@ + 'http://www.example.com/', + * 'text' => 'Example, Inc.', + * 'icon' => 'example.png', + * 'icon_path' => 'http://www.example.com/images/', + * 'target' => '_blank', + * 'onclick' => '' + * ); + * + * You can also add a "separator" (a spacer) between menu items. To add a + * separator, simply add a new string to the $_menu array set to the text + * 'separator'. It should look like this: + * + * $_menu[] = 'separator'; + */ + +$_menu = array(); + +/* Add your custom entries below this line. */ diff --git a/agora/config/prefs.php.dist b/agora/config/prefs.php.dist new file mode 100755 index 000000000..3b36f7b65 --- /dev/null +++ b/agora/config/prefs.php.dist @@ -0,0 +1,268 @@ + _("My Information"), + 'label' => _("Avatar"), + 'desc' => _("Set the avatar image that is shown with your posts."), + 'members' => array('avatar_path', 'avatarselect') + ); +} + +$prefGroups['display_forums'] = array( + 'column' => _("Display Options"), + 'label' => _("Forums View"), + 'desc' => _("Set your options for the forums view."), + 'members' => array('forums_sortby', 'forums_sortdir', 'forums_per_page') +); + +$prefGroups['display_threads'] = array( + 'column' => _("Display Options"), + 'label' => _("Threads View"), + 'desc' => _("Set your options for the threads view."), + 'members' => array('threads_sortby', 'threads_sortdir', 'threads_hot', 'threads_per_page') +); + +$prefGroups['display_thread'] = array( + 'column' => _("Display Options"), + 'label' => _("Single Thread View"), + 'desc' => _("Set your options for the single thread view."), + 'members' => array('thread_sortby', 'thread_sortdir', 'thread_view_bodies', + 'thread_per_page') +); + +$prefGroups['display_message'] = array( + 'column' => _("Display Options"), + 'label' => _("Message View"), + 'desc' => _("Set your options for the message view."), + 'members' => array('message_emoticons') +); + +$prefGroups['display_comments'] = array( + 'column' => _("Display Options"), + 'label' => _("Comments view"), + 'desc' => _("Set your options for the single thread view."), + 'members' => array('comments_sortby', 'comments_sortdir', 'comments_view_bodies', + 'comments_per_page') +); + +/* Avatar */ + +$_prefs['avatar_path'] = array( + 'value' => '', + 'locked' => false, + 'shared' => false, + 'type' => 'text', + 'desc' => _("The location of your avatar image.") +); +if ($GLOBALS['conf']['avatar']['allow_avatars'] && $GLOBALS['conf']['avatar']['enable_image_tests']) { + $_prefs['avatar_path']['desc'] .= ' ' . sprintf(_("Avatars must be smaller than %s by %s pixels and less than %sKb in size."), + $GLOBALS['conf']['avatar']['max_width'], + $GLOBALS['conf']['avatar']['max_height'], + $GLOBALS['conf']['avatar']['max_size']); +} + +$_prefs['avatarselect'] = array('type' => 'special'); + +/* Forums */ + +$_prefs['forums_sortby'] = array( + 'value' => 'forum_name', + 'locked' => false, + 'shared' => false, + 'type' => 'enum', + 'enum' => array('forum_name' => _("Forum"), + 'message_count' => _("Messages"), + 'message_subject' => _("Last Message"), + 'message_author' => _("Posted by"), + 'message_date' => _("Date")), + 'desc' => _("Default forums view sort:") +); + +$_prefs['forums_sortdir'] = array( + 'value' => 0, + 'locked' => false, + 'shared' => false, + 'type' => 'enum', + 'enum' => array(0 => _("Ascending"), + 1 => _("Descending")), + 'desc' => _("Default sorting direction:") +); + +$_prefs['forums_per_page'] = array( + 'value' => 20, + 'locked' => false, + 'shared' => false, + 'type' => 'enum', + 'enum' => array(5 => 5, 10 => 10, 15 => 15, 20 => 20, 25 => 25), + 'desc' => _("Number of forums to display on each page") +); + +/* Threads */ + +$_prefs['threads_sortby'] = array( + 'value' => 'message_modifystamp', + 'locked' => false, + 'shared' => false, + 'type' => 'enum', + 'enum' => array('message_thread' => _("Thread"), + 'message_subject' => _("Subject"), + 'message_author' => _("Posted by"), + 'message_seq' => _("Posts"), + 'message_timestamp' => _("Date"), + 'message_modifystamp' => _("Last post")), + 'desc' => _("Default threads view sort:") +); + +$_prefs['threads_sortdir'] = array( + 'value' => 1, + 'locked' => false, + 'shared' => false, + 'type' => 'enum', + 'enum' => array(0 => _("Ascending"), + 1 => _("Descending")), + 'desc' => _("Default sorting direction:") +); + +$_prefs['threads_hot'] = array( + 'value' => 20, + 'locked' => false, + 'shared' => false, + 'type' => 'number', + 'desc' => _("Number of views in 24hrs to trigger a 'hot-thread':") +); + +$_prefs['threads_per_page'] = array( + 'value' => 10, + 'locked' => false, + 'shared' => false, + 'type' => 'enum', + 'enum' => array(5 => 5, 10 => 10, 15 => 15, 20 => 20, 25 => 25), + 'desc' => _("Number of messages to display on each page") +); + +/* Thread */ + +$_prefs['thread_sortby'] = array( + 'value' => 'message_timestamp', + 'locked' => false, + 'shared' => false, + 'type' => 'enum', + 'enum' => array('message_thread' => _("Thread"), + 'message_subject' => _("Subject"), + 'message_author' => _("Posted by"), + 'message_timestamp' => _("Date")), + 'desc' => _("Default thread view sort:") +); + +$_prefs['thread_sortdir'] = array( + 'value' => 0, + 'locked' => false, + 'shared' => false, + 'type' => 'enum', + 'enum' => array(0 => _("Ascending"), + 1 => _("Descending")), + 'desc' => _("Default sorting direction:") +); + +$_prefs['thread_view_bodies'] = array( + 'value' => 0, + 'locked' => false, + 'shared' => false, + 'type' => 'enum', + 'enum' => array(0 => _("No"), + 1 => _("Yes"), + 2 => _("Yes, and don't thread them")), + 'desc' => _("Display full message bodies in the thread list view?") +); + +$_prefs['thread_per_page'] = array( + 'value' => 10, + 'locked' => false, + 'shared' => false, + 'type' => 'enum', + 'enum' => array(5 => 5, 10 => 10, 15 => 15, 20 => 20, 25 => 25), + 'desc' => _("Number of message to display on each page") +); + +$_prefs['message_emoticons'] = array( + 'value' => 1, + 'locked' => false, + 'shared' => false, + 'type' => 'enum', + 'enum' => array(0 => _("No graphical emoticons"), + 1 => _("Show graphical emoticons")), + 'desc' => _("Display graphical emoticons?") +); + +$_prefs['forums_block_display'] = array( + 'value' => 0, + 'type' => 'implicit' +); + +$_prefs['threads_block_display'] = array( + 'value' => 0, + 'type' => 'implicit' +); + +$_prefs['moderate_sortby'] = array( + 'value' => 'message_id', + 'locked' => false, + 'shared' => false, + 'type' => 'implicit' +); + +$_prefs['moderate_sortdir'] = array( + 'value' => 0, + 'locked' => false, + 'shared' => false, + 'type' => 'implicit' +); + + +/* Comments */ + +$_prefs['comments_view_bodies'] = array( + 'value' => 2, + 'locked' => false, + 'shared' => false, + 'type' => 'enum', + 'enum' => array(2 => _("Flat"), + 1 => _("Thread")), + 'desc' => _("Display full message bodies in the comments view?") +); + +$_prefs['comments_sortby'] = array( + 'value' => 'message_timestamp', + 'locked' => false, + 'shared' => false, + 'type' => 'enum', + 'enum' => array('message_subject' => _("Subject"), + 'message_author' => _("Posted by"), + 'message_timestamp' => _("Date")), + 'desc' => _("Default comments view sort:") +); + +$_prefs['comments_sortdir'] = array( + 'value' => 1, + 'locked' => false, + 'shared' => false, + 'type' => 'enum', + 'enum' => array(0 => _("Ascending"), + 1 => _("Descending")), + 'desc' => _("Default sorting direction:") +); + +$_prefs['comments_per_page'] = array( + 'value' => 20, + 'locked' => false, + 'shared' => false, + 'type' => 'enum', + 'enum' => array(5 => 5, 10 => 10, 15 => 15, 20 => 20, 25 => 25), + 'desc' => _("Number of messages to display on each page") +); \ No newline at end of file diff --git a/agora/deleteforum.php b/agora/deleteforum.php new file mode 100644 index 000000000..15ffdafb8 --- /dev/null +++ b/agora/deleteforum.php @@ -0,0 +1,84 @@ + + * @author Marko Djukic + */ + +define('AGORA_BASE', dirname(__FILE__)); +require_once AGORA_BASE . '/lib/base.php'; + +/* Set up the forums object. */ +$scope = Horde_Util::getFormData('scope', 'agora'); +$forums = &Agora_Messages::singleton($scope); +$url = Horde::applicationUrl('forums.php'); + +/* Check permissions */ +if (!$forums->hasPermission(Horde_Perms::DELETE)) { + $notification->push(sprintf(_("You don't have permissions to delete forums in %s"), $registry->get('name', $scope)), 'horde.warning'); + header('Location: ' . $url); + exit; +} + +/* Get forum. */ +list($forum_id) = Agora::getAgoraId(); +$forum = $forums->getForum($forum_id); +if ($forum instanceof PEAR_Error) { + $notification->push($forum->message, 'horde.error'); + header('Location: ' . $url); + exit; +} + +/* Prepare forum. */ +$vars = Horde_Variables::getDefaultVariables(); +$form = new Horde_Form($vars, _("Delete Forum")); + +$form->setButtons(array(_("Delete"), _("Cancel"))); +$form->addHidden('', 'forum_id', 'int', $forum_id); +$form->addHidden('', 'scope', 'text', $scope); +$form->addVariable(_("This will delete the forum, any subforums and all relative messages."), 'prompt', 'description', false); +$form->addVariable(_("Forum name"), 'forum_name', 'text', false, true); +$vars->set('forum_name', $forum['forum_name']); +$vars->set('forum_id', $forum_id); + +/* Get a list of available forums. */ +$forums_list = Agora::formatCategoryTree($forums->getForums($forum_id, false, null, null)); +if (!empty($forums_list)) { + $html = implode('
', $forums_list); + $form->addVariable(_("Subforums"), 'subforums', 'html', false, true); + $vars->set('subforums', $html); +} + +/* Process delete. */ +if ($form->validate()) { + if ($vars->get('submitbutton') == _("Delete")) { + $result = $forums->deleteForum($vars->get('forum_id')); + if ($result instanceof PEAR_Error) { + $notification->push(sprintf(_("Could not delete the forum. %s"), $result->message), 'horde.error'); + } else { + $notification->push(_("Forum deleted."), 'horde.success'); + } + } else { + $notification->push(_("Forum not deleted."), 'horde.message'); + } + header('Location: ' . $url); + exit; +} + +/* Set up template variables. */ +$view = new Agora_View(); +$view->menu = Agora::getMenu('string'); +$view->main = Horde_Util::bufferOutput(array($form, 'renderActive'), null, $vars, 'deleteforum.php', 'post'); +$view->notify = Horde_Util::bufferOutput(array($notification, 'notify'), array('listeners' => 'status')); + +require AGORA_TEMPLATES . '/common-header.inc'; +echo $view->render('main.html.php'); +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/agora/docs/CHANGES b/agora/docs/CHANGES new file mode 100644 index 000000000..37e443fb4 --- /dev/null +++ b/agora/docs/CHANGES @@ -0,0 +1,47 @@ +-------- +v2.0-cvs +-------- + +[] Horde_Template to Horde_View (Duck ) +[] DB to MDB2 (Duck ) +[] Requires PHP5 (Duck ) + +-------- +v1.0-cvs +-------- + +[jan] Enable output compression. +[jan] Add Japanese translation (Takeshi Taguchi ). +[cjh] Merge Horde_Template_Compiling to stable Agora branch as Agora_Template. +[mjr] Added batch api methods for retrieving message counts and threads for + more than one forum at a time. +[jan] Add Hungarian translation (Garami Gábor ). +[cjh] Migrate from DataTree to local SQL usage (Duck ). +[jan] Add Slovenian translation (Duck ). +[jan] Allow to manage forums and messages added throught the comments API. +[jan] Add CAPTCHA test with Figlet fonts. +[jmf] Implement search page. +[jan] Use 'rel="nofollow"' link attributes to prevent spam if showing messages + through the API. +[cjh] Add avatar support (Andrew Hosie ). +[cjh] Use DataTree::sortByAttributes() to do more sorting in the database + and avoid loading excess objects (Duck ). +[cjh] Work around IE bugs for threaded message views by having columns + total 99% instead of 100% (Bug #1298). +[jan] Add Lithuanian translation (Vilius Sumskas ). +[mdj] Add attachments and moderation. +[mms] Allow user to specify how many forums/threads to display in the + block view. +[mms] Added paging of forum and thread pages. +[jan] Add Spanish translation (Manuel Perez Ayala ). +[jan] Add Traditional Chinese translation (Chih-Wei Yeh + ). +[jan] Add sorting by thread. +[jan] Quote replied messages. +[jan] Add Finnish translation (Petteri Karttunen ). +[cjh] Add deletion of messages. +[mdj] Add Romanian translation (Eugen Hoanca ). +[cjh] Fix permissions checking semantics. +[jan] Add German translation. +[jan] Add French translation (Florent Aide ). +[mdj] Initial import to CVS. diff --git a/agora/docs/CREDITS b/agora/docs/CREDITS new file mode 100755 index 000000000..8c26fd7e0 --- /dev/null +++ b/agora/docs/CREDITS @@ -0,0 +1,30 @@ +======================== + Agora Development Team +======================== + + +Core Developers +=============== + + + +Drivers +======= + + + +Localization +============ + +====================== =============================================== +Chinese (Traditional) Chih-Wei Yeh +Finnish Petteri Karttunen +French Florent Aide +German Jan Schneider +Hungarian Garami Gabor +Japanese Takeshi Taguchi +Lithuanian Vilius Å umskas +Romanian Eugen Hoanca +Slovenian Duck +Spanish Manuel Perez Ayala +====================== =============================================== diff --git a/agora/docs/INSTALL b/agora/docs/INSTALL new file mode 100755 index 000000000..376bc9d1f --- /dev/null +++ b/agora/docs/INSTALL @@ -0,0 +1,181 @@ +====================== + Installing Agora 0.1 +====================== + +:Last update: $Date: 2007/06/19 09:56:35 $ +:Revision: $Revision: 1.15 $ +:Contact: dev@lists.horde.org + +.. contents:: Contents +.. section-numbering:: + +This document contains instructions for installing the Agora forums +application on your system. + +For information on the capabilities and features of Agora, see the file +README_ in the top-level directory of the Agora distribution. + + +Obtaining Agora +=============== + +Agora is currently only available via CVS, since it is still in early +development. A packaged release will be made once it is ready for wider +testing. + +Bleeding-edge development versions of Agora are available via CVS; see the +file `docs/HACKING`_ in the Horde distribution for information on accessing +the Horde CVS repository. + + +Prerequisites +============= + +To function properly, Agora requires the following: + +1. A working Horde installation. + + Agora runs within the `Horde Application Framework`_, a set of common tools + for Web applications written in PHP. You must install Horde before + installing Agora. If you want to use the Text_Figlet_ support, you need at + least Horde Version 3.2. + + .. _`Horde Application Framework`: http://www.horde.org/horde/ + + The Horde Framework can be obtained from the Horde website and FTP server, + at + + http://www.horde.org/horde/ + + ftp://ftp.horde.org/pub/horde/ + + Many of Agora's prerequisites are also Horde prerequisites. Be sure to + have completed all of the steps in the INSTALL_ file for the Horde + Framework before installing Agora. + +2. A working Horde DataTree driver. + + Agora stores its data in the Horde DataTree system. You must have a + DataTree driver configured in Horde that supports persistant storage. + +3. The following PEAR modules: + (See `horde/docs/INSTALL`_ for instructions on installing PEAR modules) + + a. Text_Figlet [OPTIONAL] + + Text_Figlet is required if you want users to enter a verification string + if they are submitting a new message, to determine real users from spam + bots. Text_Figlet requires a Figlet_ font available on your local file + system. + + .. _Figlet: http://www.figlet.org/ + + +Installing Agora +================ + +To install the Agora application, checkout agora from the Horde CVS server +into your Horde directory and would then find Agora at the URL:: + + http://your-server/horde/agora/ + + +Configuring Agora +================= + +1. Configuring Horde for Agora + + a. Register the application + + In ``horde/config/registry.php``, find the ``applications['agora']`` + stanza. The ``status`` parameter should be marked ``'=> active'``. If + you have changed the location of Agora relative to Horde, either in the + URL or in the filesystem or both, you must update the ``fileroot`` and + ``webroot`` settings to their correct values. + + b. Configuring a DataTree backend + + Agora requires a permanent ``DataTree`` backend in Horde to manage + forums messages. If you didn't setup a DataTree backend yet, go to the + configuration interface, select Horde from the list of applications and + select a driver different than ``None`` on the ``DataTree System`` tab. + Make sure that you ran the necessary scripts to create a storage backend + for the DataTree system, e.g. one of the ``create.*.sql`` or + ``horde_datatree.*.sql`` SQL scripts in ``horde/scripts/sql/``. You + should have done this already during the installation of Horde. + +2. Configuring Agora + + To configure Agora, change to the ``config/`` directory of the installed + distribution, and make copies of all of the configuration ``dist`` files + without the ``dist`` suffix:: + + cd config/ + for foo in *.dist; do cp $foo `basename $foo .dist`; done + + Documentation on the format of those files can be found in each file. With + the exception of the ``conf.*`` files (see below), the other files in + ``config/`` need only be modified if you wish to customize Agora's + appearance or behavior, as the defaults will be correct for most sites. + + You must login to Horde as a Horde Administrator to finish the + configuration of Agora. Use the Horde ``Administration`` menu item to get + to the administration page, and then click on the ``Configuration`` icon to + get the configuration page. Select ``Forums`` from the selection list of + applications. Fill in or change any configuration values as needed. When + done click on ``Generate Forums Configuration`` to generate the + ``conf.php`` file. If your web server doesn't have write permissions to + the Agora configuration directory or file, it will not be able to write the + file. In this case, go back to ``Configuration`` and choose one of the + other methods to create the configuration file ``agora/config/conf.php``. + + Note for international users: Agora uses GNU gettext to provide local + translations of text displayed by applications; the translations are found + in the po/ directory. If a translation is not yet available for your + locale (and you wish to create one), see the ``horde/po/README`` file, or + if you're having trouble using a provided translation, please see the + `horde/docs/TRANSLATIONS`_ file for instructions. + +3. Testing Agora + + Use Agora to create forums and post in them. Test at least the following: + + - Create a new forum + - Edit a forum + - Post to a forum + - Reply to a message + + +Obtaining Support +================= + +If you encounter problems with Agora, help is available! + +The Horde Frequently Asked Questions List (FAQ), available on the Web at + + http://www.horde.org/faq/ + +The Horde Project runs a number of mailing lists, for individual applications +and for issues relating to the project as a whole. Information, archives, and +subscription information can be found at + + http://www.horde.org/mail/ + +Lastly, Horde developers, contributors and users may also be found on IRC, +on the channel #horde on the Freenode Network (irc.freenode.net). + +Please keep in mind that Agora is free software written by volunteers. For +information on reasonable support expectations, please read + + http://www.horde.org/support.php + +Thanks for using Agora! + +The Horde team + + +.. _README: ?f=README.html +.. _`docs/HACKING`: ../../horde/docs/?f=HACKING.html +.. _INSTALL: +.. _`horde/docs/INSTALL`: ../../horde/docs/?f=INSTALL.html +.. _`horde/docs/TRANSLATIONS`: ../../horde/docs/?f=TRANSLATIONS.html diff --git a/agora/docs/TODO b/agora/docs/TODO new file mode 100755 index 000000000..6e8b43bff --- /dev/null +++ b/agora/docs/TODO @@ -0,0 +1,22 @@ +============================= + Agora Development TODO List +============================= + +:Last update: $Date: 2007/12/17 11:49:15 $ +:Revision: $Revision: 1.20 $ +:Contact: dev@lists.horde.org + +- Add per-forum custom templates. + +- Write an agorad daemon that provided access to agora forums via NNTP, + possibly IMAP, etc. + +- Split threads per page in threaded view. + +- Add per-forum text filter settings. + +- Add permission management interface + +- Reduce number of loops in for thread display + +- AJAX reply submission \ No newline at end of file diff --git a/agora/editforum.php b/agora/editforum.php new file mode 100644 index 000000000..3944f4b43 --- /dev/null +++ b/agora/editforum.php @@ -0,0 +1,72 @@ + + */ + +define('AGORA_BASE', dirname(__FILE__)); +require_once AGORA_BASE . '/lib/base.php'; +require_once AGORA_BASE . '/lib/Forms/Forum.php'; + + +/* Set up the forums object. */ +$forums = &Agora_Messages::singleton(); + +list($forum_id, , $scope) = Agora::getAgoraId(); +$scope = Horde_Util::getGet('scope', 'agora'); +$title = $forum_id ? _("Edit Forum") : _("New Forum"); +$vars = Horde_Variables::getDefaultVariables(); +$vars->set('forum_id', $forum_id); + +/* Check permissions */ +if ($forum_id && !Horde_Auth::isAdmin('agora:admin')) { + $notification->push(sprintf(_("You don't have permissions to edit forum %s"), $registry->get('name', $scope)), 'horde.warning'); + header('Location: ' . Horde::applicationUrl('forums.php', true)); + exit; +} elseif (!Horde_Auth::isAdmin('agora:admin')) { + $notification->push(sprintf(_("You don't have permissions to create a new forum in %s"), $registry->get('name', $scope)), 'horde.warning'); + header('Location: ' . Horde::applicationUrl('forums.php', true)); + exit; +} + +$form = new ForumForm($vars, $title); +if ($form->validate()) { + $forum_id = $form->execute($vars); + if ($forum_id instanceof PEAR_Error) { + $notification->push(sprintf(_("Could not create the forum. %s"), $forum_id->message), 'horde.error'); + header('Location: ' . Horde::applicationUrl('forums.php', true)); + } else { + $notification->push($vars->get('forum_id') ? _("Forum Modified") : _("Forum created."), 'horde.success'); + header('Location: ' . Agora::setAgoraId($forum_id, null, Horde::applicationUrl('threads.php', true))); + } + exit; +} + +/* Check if a forum is being edited. */ +if ($forum_id) { + $forum = $forums->getForum($forum_id); + if (is_a($forum, 'PEAR_Error')) { + $notification->push($forum); + unset($forum); + } else { + $vars = new Horde_Variables($forums->getForum($forum_id)); + } +} + +/* Set up template variables. */ +$view = new Agora_View(); +$view->menu = Agora::getMenu('string'); +$view->main = Horde_Util::bufferOutput(array($form, 'renderActive'), null, null, 'editforum.php', 'post'); +$view->notify = Horde_Util::bufferOutput(array($notification, 'notify'), array('listeners' => 'status')); + +require AGORA_TEMPLATES . '/common-header.inc'; +echo $view->render('main.html.php'); +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/agora/forums.php b/agora/forums.php new file mode 100644 index 000000000..42276a66f --- /dev/null +++ b/agora/forums.php @@ -0,0 +1,74 @@ + + * @author Marko Djukic + */ + +require_once dirname(__FILE__) . '/lib/base.php'; + +/* Set up the forums object. */ +$scope = Horde_Util::getGet('scope', 'agora'); +$forums = Agora_Messages::singleton($scope); + +/* Set up actions */ +if (Horde_Auth::isAdmin()) { + $url = Horde::applicationUrl('forums.php'); + foreach ($registry->listApps(array('hidden', 'notoolbar', 'active')) as $app) { + if ($registry->hasMethod('hasComments', $app) && + $registry->callByPackage($app, 'hasComments') === true) { + $app_name = $registry->get('name', $app); + $actions[] = Horde::link(Horde_Util::addParameter($url, 'scope', $app), $app_name) . $app_name . ''; + } + } +} + +/* Get the sorting. */ +$sort_by = Agora::getSortBy('forums'); +$sort_dir = Agora::getSortDir('forums'); + +/* Which forums page are we on? Default to page 0. */ +$forum_page = Horde_Util::getFormData('forum_page', 0); +$forums_per_page = $prefs->getValue('forums_per_page'); +$forum_start = $forum_page * $forums_per_page; + +/* Get the list of forums. */ +$forums_list = $forums->getForums(0, true, $sort_by, $sort_dir, true, $forum_start, $forums_per_page); +if ($forums_list instanceof PEAR_Error) { + Horde::fatal($forums_list, __FILE__, __LINE__); +} elseif (empty($forums_list)) { + $forums_count = 0; +} else { + $forums_count = $forums->countForums(); +} + +/* Set up the column headers. */ +$col_headers = array('forum_name' => _("Forum"), 'forum_description' => _("Description"), 'message_count' => _("Posts"), 'thread_count' => _("Threads"), 'message_timestamp' => _("Last Post"), 'message_author' => _("Posted by"), 'message_date' => _("Date")); +$col_headers = Agora::formatColumnHeaders($col_headers, $sort_by, $sort_dir, 'forums'); + +/* Set up the template tags. */ +$view = new Agora_View(); +$view->col_headers = $col_headers; +$view->forums_list = $forums_list; +$view->menu = Agora::getMenu('string'); +$view->notify = Horde_Util::bufferOutput(array($notification, 'notify'), array('listeners' => 'status')); +$view->actions = empty($actions) ? null : $actions; + +/* Set up pager. */ +$vars = Horde_Variables::getDefaultVariables(); +$pager_ob = new Horde_Ui_Pager('forum_page', $vars, array('num' => $forums_count, 'url' => 'forums.php', 'perpage' => $forums_per_page)); +$pager_ob->preserve('scope', $scope); +$view->pager_link = $pager_ob->render(); + +$title = _("All Forums"); +require AGORA_TEMPLATES . '/common-header.inc'; +echo $view->render('forums.html.php'); +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/agora/index.php b/agora/index.php new file mode 100755 index 000000000..27f5cd40f --- /dev/null +++ b/agora/index.php @@ -0,0 +1,16 @@ + + * @package Agora + */ +class Agora { + + /** + * The virtual path to use for VFS data. + */ + const VFS_PATH = '.horde/agora/attachments/'; + const AVATAR_PATH = '.horde/agora/avatars/'; + + /** + * Determines the requested forum_id, message_id and application by + * checking first if they are passed as the single encoded var or + * individual vars. + * + * @return array Forum, message id and application. + */ + function getAgoraId() + { + if (($id = Horde_Util::getFormData('agora')) !== null) { + if (strstr($id, '.')) { + list($forum_id, $message_id) = explode('.', $id, 2); + } else { + $forum_id = $id; + $message_id = 0; + } + } else { + $forum_id = Horde_Util::getFormData('forum_id'); + $message_id = Horde_Util::getFormData('message_id'); + } + $scope = basename(Horde_Util::getFormData('scope', 'agora')); + + return array($forum_id, $message_id, $scope); + } + + /** + * Creates the Agora id. + * + * @return string If passed with the $url parameter, returns a completed + * url with the agora_id tacked on at the end, otherwise + * returns the simple agora_id. + */ + function setAgoraId($forum_id, $message_id, $url = '', $scope = null, $encode = false) + { + $agora_id = $forum_id . '.' . $message_id; + + if (!empty($url)) { + if ($scope) { + $url = Horde_Util::addParameter($url, 'scope', $scope, $encode); + } else { + $url = Horde_Util::addParameter($url, 'scope', Horde_Util::getGet('scope', 'agora'), $encode); + } + return Horde_Util::addParameter($url, 'agora', $agora_id, $encode); + } + + return $agora_id; + } + + /** + * Returns a new or the current CAPTCHA string. + * + * @param boolean $new If true, a new CAPTCHA is created and returned. + * The current, to-be-confirmed string otherwise. + * + * @return string A CAPTCHA string. + */ + function getCAPTCHA($new = false) + { + if ($new || empty($_SESSION['agora']['CAPTCHA'])) { + $_SESSION['agora']['CAPTCHA'] = ''; + for ($i = 0; $i < 5; $i++) { + $_SESSION['agora']['CAPTCHA'] .= chr(rand(65, 90)); + } + } + return $_SESSION['agora']['CAPTCHA']; + } + + /** + * Formats a list of forums, showing each child of a parent with + * appropriate indent using '.. ' as a leader. + * + * @param array $forums The list of forums to format. + * + * @return array Formatted forum list. + */ + function formatCategoryTree($forums) + { + foreach ($forums as $id => $forum) { + $levels = explode(':', $forum); + $forums[$id] = str_repeat('.. ', count($levels) - 1) . array_pop($levels); + } + return $forums; + } + + /** + * Returns the column to sort by, checking first if it is specified in the + * URL, then returning the value stored in prefs. + * + * @param string $view The view name, used to identify preference settings + * for sorting. + * + * @return string The column to sort by. + */ + function getSortBy($view) + { + global $prefs; + + if (($sortby = Horde_Util::getFormData($view . '_sortby')) !== null) { + $prefs->setValue($view . '_sortby', $sortby); + } + $sort_by = $prefs->getValue($view . '_sortby'); + + /* BC check for now invalid sort criteria. */ + if ($sort_by == 'message_date' || substr($sort_by, 0, 1) == 'l') { + $sort_by = $prefs->getDefault($view . '_sortby'); + $prefs->setValue($view . '_sortby', $sortby); + } + + return $sort_by; + } + + /** + * Returns the sort direction, checking first if it is specified in the URL, + * then returning the value stored in prefs. + * + * @param string $view The view name, used to identify preference settings + * for sorting. + * + * @return integer The sort direction, 0 = ascending, 1 = descending. + */ + function getSortDir($view) + { + global $prefs; + if (($sortdir = Horde_Util::getFormData($view . '_sortdir')) !== null) { + $prefs->setValue($view . '_sortdir', $sortdir); + } + return $prefs->getValue($view . '_sortdir'); + } + + /** + * Formats column headers have sort links and sort arrows. + * + * @param array $columns The columns to format. + * @param string $sort_by The current 'sort-by' column. + * @param string $sort_dir The current sort direction. + * @param string $view The view name, used to identify preference + * settings for sorting. + * + * @return array The formated column headers to be displayed. + */ + function formatColumnHeaders($columns, $sort_by, $sort_dir, $view) + { + /* Get the current url, remove any sorting parameters. */ + $url = Horde::selfUrl(true); + $url = Horde_Util::removeParameter($url, array($view . '_sortby', $view . '_sortdir')); + + /* Go through the column headers to format and add sorting links. */ + $headers = array(); + foreach ($columns as $col_name => $col_title) { + $extra = array(); + /* Is this a column with two headers? */ + if (is_array($col_title)) { + $keys = array_keys($col_title); + $extra_name = $keys[0]; + if ($sort_by == $keys[1]) { + $extra = array($keys[0] => $col_title[$keys[0]]); + $col_name = $keys[1]; + $col_title = $col_title[$keys[1]]; + } else { + $extra = array($keys[1] => $col_title[$keys[1]]); + $col_name = $keys[0]; + $col_title = $col_title[$keys[0]]; + } + } + if ($sort_by == $col_name) { + /* This column is currently sorted by, plain title and + * add sort direction arrow. */ + $sort_img = ($sort_dir ? 'za.png' : 'az.png'); + $sort_title = ($sort_dir ? _("Sort Ascending") : _("Sort Descending")); + $col_arrow = Horde::link(Horde_Util::addParameter($url, array($view . '_sortby' => $col_name, $view . '_sortdir' => $sort_dir ? 0 : 1)), $sort_title) . + Horde::img($sort_img, $sort_title, null, $GLOBALS['registry']->getImageDir('horde')) . ' '; + $col_class = 'selected'; + } else { + /* Column not currently sorted, add link to sort by + * this one and no sort arrow. */ + $col_arrow = ''; + $col_title = Horde::link(Horde_Util::addParameter($url, $view . '_sortby', $col_name), sprintf(_("Sort by %s"), $col_title)) . $col_title . ''; + $col_class = 'item'; + } + $col_class .= ' leftAlign'; + if (count($extra)) { + list($name, $title) = each($extra); + $col_title .= ' [' . + Horde::link(Horde_Util::addParameter($url, $view . '_sortby', $name), sprintf(_("Sort by %s"), $title)) . $title . '' . + ']'; + $col_name = $extra_name; + } + $headers[$col_name] = $col_arrow . $col_title; + $headers[$col_name . '_class_plain'] = $col_class; + $headers[$col_name . '_class'] = empty($col_class) ? '' : ' class="' . $col_class . '"'; + } + + return $headers; + } + + /** + * Returns a {@link VFS} instance. + * + * @return VFS A VFS instance. + */ + function getVFS() + { + global $conf; + + if (!isset($conf['vfs']['type'])) { + return PEAR::raiseError(_("The VFS backend needs to be configured to enable attachment uploads.")); + } + + require_once 'VFS.php'; + return VFS::singleton($conf['vfs']['type'], Horde::getDriverConfig('vfs')); + } + + function getMenu($returnType = 'object') + { + $menu = new Horde_Menu(); + $img_dir = $GLOBALS['registry']->getImageDir(); + $scope = Horde_Util::getGet('scope', 'agora'); + + /* Agora Home. */ + $url = Horde_Util::addParameter(Horde::applicationUrl('forums.php'), 'scope', $scope); + $menu->add($url, _("_Forums"), 'forums.png', $img_dir, null, null, + dirname($_SERVER['PHP_SELF']) == $GLOBALS['registry']->get('webroot') && basename($_SERVER['PHP_SELF']) == 'index.php' ? 'current' : null); + + /* Thread list, if applicable. */ + if (isset($GLOBALS['forum_id'])) { + $menu->add(Agora::setAgoraId($GLOBALS['forum_id'], null, Horde::applicationUrl('threads.php')), _("_Threads"), 'threads.png', $GLOBALS['registry']->getImageDir()); + if ($scope == 'agora' && Horde_Auth::getAuth()) { + $menu->add(Agora::setAgoraId($GLOBALS['forum_id'], null, Horde::applicationUrl('messages/edit.php')), _("New Thread"), 'newmessage.png', $GLOBALS['registry']->getImageDir()); + } + } + + if ($scope == 'agora' && Agora_Messages::hasPermission(Horde_Perms::DELETE, 0, $scope)) { + $menu->add(Horde::applicationUrl('editforum.php'), _("_New Forum"), 'newforum.png', $img_dir, null, null, Horde_Util::getFormData('agora') ? '__noselection' : null); + } + + if (Agora_Messages::hasPermission(Horde_Perms::DELETE, 0, $scope)) { + $url = Horde_Util::addParameter(Horde::applicationUrl('moderate.php'), 'scope', $scope); + $menu->add($url, _("_Moderate"), 'moderate.png', $img_dir); + } + + if (Horde_Auth::isAdmin()) { + $menu->add(Horde::applicationUrl('moderators.php'), _("_Moderators"), 'hot.png', $img_dir); + } + + $url = Horde_Util::addParameter(Horde::applicationUrl('search.php'), 'scope', $scope); + $menu->add($url, _("_Search"), 'search.png', $GLOBALS['registry']->getImageDir('horde')); + + if ($returnType == 'object') { + return $menu; + } else { + return $menu->render(); + } + } + + function validateAvatar($avatar_path) + { + if (!$GLOBALS['conf']['avatar']['allow_avatars'] || !$avatar_path) { + return false; + } + + preg_match('/^(http|vfs):\/\/(.*)\/(gallery|uploaded|.*)\/(.*\..*)/i', + $avatar_path, $matches); + + switch ($matches[1]) { + case 'http': + if (!$GLOBALS['conf']['avatar']['enable_external']) { + /* Avatar is external and external avatars have been + * disabled. */ + return false; + } + $dimensions = @getimagesize($avatar_path); + if (($dimensions === false) || + ($dimensions[0] > $GLOBALS['conf']['avatar']['max_width']) || + ($dimensions[1] > $GLOBALS['conf']['avatar']['max_height'])) { + /* Avatar is external and external avatars are + * enabled, but the image is too wide or high. */ + return false; + } else { + $avatar = null; + + $flock = fopen($avatar_path, 'r'); + while (!feof($flock)) { + $avatar .= fread($flock, 2048); + } + fclose($flock); + + if (strlen($avatar) > ($GLOBALS['conf']['avatar']['max_size'] * 1024)) { + /* Avatar is external and external avatars have + * been enabled, but the file is too large. */ + return false; + } + } + return true; + + case 'vfs': + switch ($matches[3]) { + case 'gallery': + /* Avatar is within the gallery. */ + return $GLOBALS['conf']['avatar']['enable_gallery']; + + case 'uploaded': + /* Avatar is within the uploaded avatar collection. */ + return $GLOBALS['conf']['avatar']['enable_uploads']; + + default: + /* Malformed URL. */ + return false; + } + break; + + default: + /* Malformed URL. */ + return false; + } + + return false; + } + + function getAvatarUrl($avatar_path, $scopeend_sid = true) + { + if (!$avatar_path) { + return PEAR::raiseError(_("Malformed avatar.")); + } + + preg_match('/^(http|vfs):\/\/(.*)\/(gallery|uploaded|.*)\/(.*\..*)/i', + $avatar_path, $matches); + + switch ($matches[1]) { + case 'http': + /* HTTP URL's are already "real" */ + break; + + case 'vfs': + /* We need to do some re-writing to VFS paths. */ + switch ($matches[3]) { + case 'gallery': + $avatar_collection_id = '1'; + break; + + case 'uploaded': + $avatar_collection_id = '2'; + break; + + default: + return PEAR::raiseError(_("Malformed database entry.")); + } + + $avatar_path = Horde::applicationUrl('avatars/?id=' . urlencode($matches[4]) . ':' . $avatar_collection_id, true, $scopeend_sid); + break; + } + + return $avatar_path; + } + + /** + * Send new posts to a distribution email address for a wider audience + * + * @param int $message_id Identifier of message to be distributed + * + * @return mixed Boolean true on success; PEAR_Error on failure + */ + function distribute($message_id) + { + global $conf; + + $storage = Agora_Messages::singleton(); + $message = $storage->getMessage($message_id); + $forum = $storage->getForum($message['forum_id']); + + if (empty($forum['forum_distribution_address'])) { + return false; + } + + require_once 'Mail.php'; + require_once 'Horde/MIME.php'; + require_once 'Horde/MIME/Headers.php'; + require_once 'Horde/MIME/Message.php'; + + $msg_headers = new MIME_Headers(); + $msg_headers->addMessageIdHeader(); + $msg_headers->addAgentHeader(); + $msg_headers->addHeader('Date', date('r')); + $msg_headers->addHeader('X-Horde-Agora-Post', $message_id); + + $msg_headers->addHeader('To', $forum['forum_distribution_address']); + $msg_headers->addHeader('From', $message['message_author']); + $msg_headers->addHeader('Subject', '[' . $forum['forum_name'] . '] ' . $message['message_subject']); + + $mime = new MIME_Message(); + $body = new MIME_Part('text/plain', $message['body'], + Horde_Nls::getCharset()); + $mime->addPart($body); + $msg_headers->addMIMEHeaders($mime); + $result = $mime->send($forum['forum_distribution_address'], $msg_headers, $conf['mailer']['type'], $conf['mailer']['params']); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + } + } +} diff --git a/agora/lib/Api.php b/agora/lib/Api.php new file mode 100644 index 000000000..e837cdffd --- /dev/null +++ b/agora/lib/Api.php @@ -0,0 +1,821 @@ + + * @author Duck + * @package Agora + */ + +class Agora_Api extends Horde_Registry_Api +{ + /** + * Get back a list of available forums. + * + * @param integer $forum_id Supplying this parameter will return a list of + * child forums of the requested forum id. + * @param string $scope If set, limit the forums to requested application. + * + * @return array The list of available forums. + */ + public function listForums($forum_id = 0, $scope = null) + { + require_once dirname(__FILE__) . '/base.php'; + + $forums = &Agora_Messages::singleton($scope); + return $forums->getForums($forum_id, true, 'forum_name', 0, isset($scope)); + } + + /** + * Retrieve the name of a forum + * + * @param string $scope Scope which form belongs to + * @param integer $forum_id The forum id to fetch the name for. + * + * @return mixed The forum name | Pear_Error + */ + public function getForumName($scope, $forum_id) + { + require_once dirname(__FILE__) . '/base.php'; + + $forums = &Agora_Messages::singleton($scope); + $forum = $forums->getForum($forum_id); + if ($forum instanceof PEAR_Error) { + return $forum; + } + + return $forum['forum_name']; + } + + /** + * Create or modify an agora forum. This is used for apps to create + * forums for their own use. They will not show up in the regular + * agora forum view since they will be using a datatree group + * 'agora.forums.'. + * + * @param string $scope The Horde application that is saving this forum. + * @param string $parent The parent forum. + * @param array $info The forum information to save + */ + public function saveForum($scope, $parent, $info) + { + require_once dirname(__FILE__) . '/base.php'; + + $forums = &Agora_Messages::singleton($scope); + $forum_info = $this->prepareFormData($scope, $parent, $info); + if ($forum_info instanceof PEAR_Error) { + return $forum_info; + } + + return $forums->saveForum($forum_info); + } + + /** + * Allow other applications to delete forums. Used when an object that + * has been commented on has been deleted. + * + * @param string $scope The Horde application that the forum belongs to. + * @param string $forum_name The unique forum name to delete. + * + * @return boolean True on success. + */ + public function deleteForum($scope, $forum_name) + { + require_once dirname(__FILE__) . '/base.php'; + + $forums = &Agora_Messages::singleton($scope); + $id = $forums->getForumId($forum_name); + if ($id instanceof PEAR_Error) { + Horde::logMessage($id, __LINE__, __FILE__, PEAR_LOG_ERR); + return false; + } + + $forums = &Agora_Messages::singleton($scope, $id); + $result = $forums->deleteForum($id); + if ($result instanceof PEAR_Error) { + Horde::logMessage($result, __LINE__, __FILE__, PEAR_LOG_ERR); + return false; + } + return true; + } + + /** + * Returns all messages of a forum, in a threaded order. + * + * @param string $forum_name The unique name for the forum. + * @param boolean $bodies Whether to include message bodies in the view. + * @param string $sort_by Return messages sorted by this property. + * @param integer $sort_dir The direction by which to sort: + * 0 - ascending + * 1 - descending + * @param string $scope The application that the specified forum belongs + * to. + * @param string $base_url An alternate link where edit/delete/reply links + * point to. + * @param string $from The thread to begin listing at. + * @param string $count The number of threads to return. + * + * @return array All messages of the specified forum. + */ + public function getThreads($forum_name, $sort_by = 'message_timestamp', $sort_dir = 0, $bodies = false, + $scope = 'agora', $base_url = null, $from = 0, $count = 0) + { + require_once dirname(__FILE__) . '/base.php'; + + $forums = &Agora_Messages::singleton($scope); + if (empty($forum_name)) { + return $forums->getThreads(0, false, $sort_by, $sort_dir, true, '', $base_url, $from, $count); + } elseif (($forum_id = $forums->getForumId($forum_name)) instanceof PEAR_Error) { + return $forum_id; + } elseif (empty($forum_id)) { + return array(); + } + + $messages = &Agora_Messages::singleton($scope, $forum_id); + if ($messages instanceof PEAR_Error) { + return $messages; + } + + return $messages->getThreads(0, true, $sort_by, $sort_dir, true, '', $base_url, $from, $count); + } + + /** + * Returns all messages for the forums requested, in a threaded order. + * + * @param array $forum_names An array of unique forum names. + * @param boolean $bodies Whether to include message bodies in the view. + * @param string $sort_by Return messages sorted by this property. + * @param integer $sort_dir The direction by which to sort: + * 0 - ascending + * 1 - descending + * @param string $scope The application that the specified forum belongs + * to. + * @param string $base_url An alternate link where edit/delete/reply links + * point to. + * @param string $from The thread to begin listing at. + * @param string $count The number of threads to return. + * + * @return array An array of message arrays of the specified forum. + */ + public function getThreadsBatch($forum_names, $sort_by = 'message_timestamp', $sort_dir = 0, $bodies = false, + $scope = 'agora', $base_url = null, $from = 0, $count = 0) + { + require_once dirname(__FILE__) . '/base.php'; + + $results = array(); + $forums = &Agora_Messages::singleton($scope); + $results = array(); + foreach ($forum_names as $forum) { + $forum_id = $forums->getForumId($forum); + if ($forum_id instanceof PEAR_Error || empty($forum_id)) { + $results[$forum] = array(); + } else { + $messages = &Agora_Messages::singleton($scope, $forum_id); + if ($messages instanceof PEAR_Error) { + return $messages; + } + $results[$forum] = $messages->getThreads(0, true, $sort_by, $sort_dir, true, '', $base_url, $from, $count); + } + } + return $results; + } + + /** + * Returns all messages of a forum, in a threaded order. + * + * @param string $forum_owner Forum owner + * @param boolean $bodies Whether to include message bodies in the view. + * @param string $sort_by Return messages sorted by this property. + * @param integer $sort_dir The direction by which to sort: + * 0 - ascending + * 1 - descending + * @param string $scope The application that the specified forum belongs + * to. + * @param string $from The thread to begin listing at. + * @param string $count The number of threads to return. + * + * @return array All messages of the specified forum. + */ + public function getThreadsByForumOwner($owner, $sort_by = 'message_timestamp', $sort_dir = 0, $bodies = false, + $scope = 'agora', $from = 0, $count = 0) + { + require_once dirname(__FILE__) . '/base.php'; + + $forums = &Agora_Messages::singleton($scope); + + return $forums->getThreadsByForumOwner($owner, 0, true, $sort_by, $sort_dir, true, $from, $count); + } + + /** + * Returns the number of messages in a forum. + * + * @param string $forum_name The unique name for the forum. + * @param string $scope The application that the specified forum + * belongs to. + * @param int $thread_id The thread to count, if not supplied it + * will count all messages + * + * @return int The number of messages in the specified forum. + */ + public function numMessages($forum_name, $scope = 'agora', $thread_id = null) + { + require_once dirname(__FILE__) . '/base.php'; + + $forums = &Agora_Messages::singleton($scope); + + if (($forum_id = $forums->getForumId($forum_name)) instanceof PEAR_Error) { + return $forum_id; + } elseif (empty($forum_id)) { + return 0; + } + + $messages = Agora_Messages::singleton($scope, $forum_id); + if (is_a($messages, 'PEAR_Error')) { + return $messages; + } + return ($thread_id === null) ? $messages->_forum['message_count'] : $messages->countThreads($thread_id); + } + + /** + * Returns the number of messages for the requested forums. + * All requested forums must belong to the same scope. + * + * @param array $forum_name An array of unique forum names. + * @param string $scope The application that the specified forum + * belongs to. + * @param int $thread_id The thread to count, if not supplied it + * will count all messages + * + * @return mixed An array containing the message counts with the forum name as + * the key | PEAR_Error + */ + public function numMessagesBatch($forum_name, $scope = 'agora', $thread_id = null) + { + require_once dirname(__FILE__) . '/base.php'; + + $forums = &Agora_Messages::singleton($scope); + if ($forums instanceof PEAR_Error) { + return $forums; + } + + $results = array(); + foreach ($forum_name as $forum) { + if (($forum_id = $forums->getForumId($forum)) instanceof PEAR_Error) { + // In case of error, just return zero but log the error - so + // the calling app always gets an array with all the image ids. + Horde::logMessage($forum_id, __FILE__, __LINE__, 'PEAR_LOG_ERR'); + $results[$forum] = 0; + } elseif (empty($forum_id)) { + $results[$forum] = 0; + } else { + $messages = Agora_Messages::singleton($scope, $forum_id); + if ($messages instanceof PEAR_Error) { + return $messages; + } + $results[$forum] = ($thread_id === null) ? $messages->_forum['message_count'] : $messages->countThreads($thread_id); + } + } + return $results; + } + + /** + * Returns all threads of a forum in a threaded view. + * + * @param string $forum_name The unique name for the forum. + * @param boolean $bodies Whether to include message bodies in the view. + * @param string $scope The application that the specified forum belongs to. + * @param string $base_url An alternate link where edit/delete/reply links + * point to. + * @param string $template_file Template file to use. + * + * @return string The HTML code of the thread view. + */ + public function renderThreads($forum_name, $bodies = false, $scope = 'agora', $base_url = null, $template_file = false) + { + /* An agora parameter may already be present. If so it would + * interfere; remove it. */ + if ($base_url) { + $base_url = Horde_Util::removeParameter($base_url, array('agora', 'message_parent_id', 'delete')); + } + + $threads = $this->getThreads($forum_name, 'message_thread', 0, $bodies, $scope, $base_url); + if (!count($threads)) { + return ''; + } + + $col_headers = array('message_thread' => _("Subject"), + 'message_thread_class_plain' => '', + 'message_author' => _("Posted by"), + 'message_author_class_plain' => '', + 'message_timestamp' => _("Date"), + 'message_timestamp_class_plain' => ''); + + $forums = &Agora_Messages::singleton($scope); + $forum_id = $forums->getForumId($forum_name); + + $messages = &Agora_Messages::singleton($scope, $forum_id); + if ($messages instanceof PEAR_Error) { + return $messages; + } + return '

' . _("Comments") . '

' . + $messages->getThreadsUI($threads, $col_headers, $bodies, $template_file); + } + + + /** + * Allows other Horde apps to add/edit messages. + * + * The forum name is constructed by just the $forum_name variable + * under the data root 'agora.forums.'. It is up to the apps + * themselves to make sure that the forum name is unique. + * + * If the forum does not exist, it will be automatically created by + * Agora. + * + * @access private + * + * @param string $scope The application which is posting this message. + * @param string $forum_name The unique name for the forum. + * @param string $callback A callback method of the specified application + * that gets called to make sure that posting to + * this forum is allowed. + * @param array $params Any parameters for the forum message posting. + *
+     * message_id        - An existing message to edit
+     * message_parent_id - The ID of the parent message
+     * message_body      - Message body
+     * 
+ * + * @return mixed Returns message id if the message was posted + * or PEAR_Error object on error + */ + public function addMessage($scope, $forum_name, $callback, $params = array()) + { + global $registry; + + /* Check if adding messages is allowed. */ + $check = $registry->callByPackage($scope, $callback, array($forum_name)); + if ($check instanceof PEAR_Error || !$check) { + return ''; + } + + require_once dirname(__FILE__) . '/base.php'; + + /* Check if the forum exists and fetch the ID, or create a new one. */ + $forums = &Agora_Messages::singleton($scope); + if (($params['forum_id'] = $forums->getForumId($forum_name)) instanceof PEAR_Error) { + return $params['forum_id']; + } elseif (empty($params['forum_id'])) { + $forum_info = $this->prepareFormData($scope, false, array('forum_name' => $forum_name), $callback); + if ($forum_info instanceof PEAR_Error) { + return $forum_info; + } + $params['forum_id'] = $forums->saveForum($forum_info); + if ($params['forum_id'] instanceof PEAR_Error) { + return $params['forum_id']; + } + } + + /* Set up the messages control object. */ + $messages = &Agora_Messages::singleton($scope, $params['forum_id']); + if ($messages instanceof PEAR_Error) { + return $messages; + } + + return $messages->saveMessage($params); + } + + /** + * Allows other Horde apps to post messages. + * + * The forum name is constructed by just the $forum_name variable under the + * data root 'agora.forums.'. It is up to the apps themselves to make + * sure that the forum name is unique. + * + * If the forum does not exist, it will be automatically created by Agora. + * + * @access private + * + * @param string $scope The application which is posting this message. + * @param string $forum_name The unique name for the forum. + * @param string $callback A callback method of the specified application + * that gets called to make sure that posting to + * this forum is allowed. + * @param array $params Any parameters for the forum message posting. + *
+     * message_id        - An existing message to edit
+     * message_parent_id - The ID of the parent message
+     * title             - Posting title
+     * 
+ * @param string $url If specified, the form gets submitted to this URL + * instead of the current page. + * @param array $variables A hash with all variables of a submitted form + * generated by this method. + * + * @return mixed Returns either the rendered Horde_Form for posting a message + * or PEAR_Error object on error, or true in case of a + * successful post. + */ + public function postMessage($scope, $forum_name, $callback, $params = array(), + $url = null, $variables = null) + { + global $registry; + + /* Check if posting messages is allowed. */ + $check = $registry->callByPackage($scope, $callback, array($forum_name)); + if ($check instanceof PEAR_Error || !$check) { + return ''; + } + + require_once dirname(__FILE__) . '/base.php'; + + /* Create a separate notification queue. */ + $queue = Horde_Notification::singleton('agoraPostMessage'); + $queue->attach('status'); + + /* Set up the forums object. */ + $forums = &Agora_Messages::singleton($scope); + + /* Set up form variables. */ + $vars = Horde_Variables::getDefaultVariables(); + if (is_array($variables)) { + foreach ($variables as $varname => $value) { + $vars->add($varname, $value); + } + } + $formname = $vars->get('formname'); + + /* Check if the forum exists and fetch the ID. */ + $params['forum_id'] = $forums->getForumId($forum_name); + if ($params['forum_id'] === null) { + $vars->set('new_forum', $forum_name); + } else { + $vars->set('forum_id', $params['forum_id']); + } + + /* Set up the messages control object. */ + $messages = &Agora_Messages::singleton($scope, $params['forum_id']); + if ($messages instanceof PEAR_Error) { + $queue->push(_("Could not post the message: ") . $messages->getMessage(), 'horde.error'); + return Horde_Util::bufferOutput(array($queue, 'notify'), array('listeners' => 'status')); + } + + /* Check post permissions. */ + if (!$messages->hasPermission(Horde_Perms::EDIT)) { + $message = sprintf(_("You don't have permission to post messages in forum %s."), $params['forum_id']); + if (!empty($GLOBALS['conf']['hooks']['permsdenied'])) { + $message = Horde::callHook('perms_denied', array('agora'), 'horde', $message); + } + return $message; + } + + if (isset($params['message_id'])) { + $message = $messages->getMessage($params['message_id']); + if (!$formname) { + $vars = new Horde_Variables($message); + $vars->set('message_subject', $message['message_subject']); + $vars->set('message_body', $message['body']); + } + $editing = true; + } else { + $editing = false; + $params['message_id'] = null; + } + + /* Set a default title if one not specified. */ + if (!isset($params['title'])) { + $params['title'] = ($editing) ? _("Edit Message") : _("Post a New Message"); + } + + /* Get the form object. */ + $form = $messages->getForm($vars, $params['title'], $editing, is_null($params['forum_id'])); + + /* Validate the form. */ + if ($form->validate($vars)) { + $form->getInfo($vars, $info); + + if (isset($info['new_forum'])) { + $forum_info = $this->prepareFormData($scope, false, array('forum_name' => $info['new_forum']), $callback); + if ($forum_info instanceof PEAR_Error) { + return $forum_info; + } + $info['forum_id'] = $m_params['forum_id'] = $forums->saveForum($forum_info); + $result = &Agora_Messages::singleton($scope, $info['forum_id']); + if ($result instanceof PEAR_Error) { + return $result; + } + } + + /* Try and store this message and get back a new message_id */ + $message_id = $messages->saveMessage($info); + if ($message_id instanceof PEAR_Error) { + $queue->push(_("Could not post the message: ") . $message_id->getMessage(), 'horde.error'); + } else { + $queue->push(_("Message posted."), 'horde.success'); + $count = $messages->countMessages(); + $registry->callByPackage($scope, $callback, array($forum_name, 'messages', $count)); + return Horde_Util::bufferOutput(array($queue, 'notify'), array('listeners' => 'status')); + } + } + + /* Replying to a previous post? */ + if (isset($params['message_parent_id']) && !$form->isSubmitted()) { + $message = $messages->replyMessage($params['message_parent_id']); + if (!($message instanceof PEAR_Error)) { + $vars->set('message_parent_id', $params['message_parent_id']); + $vars->set('message_subject', $message['message_subject']); + $vars->set('message_body', $message['body']); + } else { + /* Bad parent message id, offer to do a regular post. */ + $vars->set('message_parent_id', ''); + } + } + + if (!$url) { + $url = Horde::selfUrl(true, false, true); + } + + return Horde_Util::bufferOutput(array($form, 'renderActive'), null, $vars, $url, 'post', null, false); + } + + /** + * Allows other Horde apps to remove messages. + * + * The forum name is constructed by just the $forum_name variable + * under the data root 'agora.forums.'. It is up to the apps + * themselves to make sure that the forum name is unique. + * + * @access private + * + * @param string $scope The application which is posting this message. + * @param string $forum_name The unique name for the forum. + * @param string $callback A callback method of the specified application + * that gets called to make sure that posting to + * this forum is allowed. + * @param array $params Any parameters for the forum message posting. + *
+     * message_id        - An existing message to delete
+     * 
+ * @param array $variables A hash with all variables of a submitted form + * generated by this method. + * + * @return mixed Returns either the rendered Horde_Form for posting a message + * or PEAR_Error object on error, or true in case of a + * successful post. + */ + public function removeMessage($scope, $forum_name, $callback, $params = array(), + $variables = null) + { + global $registry; + + /* Check if posting messages is allowed. */ + $check = $registry->callByPackage($scope, $callback, array($forum_name)); + if ($check instanceof PEAR_Error || !$check) { + return ''; + } + + require_once dirname(__FILE__) . '/base.php'; + + /* Create a separate notification queue. */ + $queue = Horde_Notification::singleton('agoraRemoveMessage'); + $queue->attach('status'); + + /* Set up the forums object. */ + $forums = &Agora_Messages::singleton($scope); + $params['forum_id'] = $forums->getForumId($forum_name); + if (empty($params['forum_id'])) { + return PEAR::raiseError(sprintf(_("Forum %s does not exist."), $forum_name)); + } + + /* Set up the messages control object. */ + $messages = &Agora_Messages::singleton($scope, $params['forum_id']); + if ($messages instanceof PEAR_Error) { + PEAR::raiseError(sprintf(_("Could not delete the message. %s"), $messages->getMessage())); + } + + /* Check delete permissions. */ + if (!$messages->hasPermission(Horde_Perms::DELETE)) { + return PEAR::raiseError(sprintf(_("You don't have permission to delete messages in forum %s."), $params['forum_id'])); + } + + /* Get the message to be deleted. */ + $message = $messages->getMessage($params['message_id']); + if ($message instanceof PEAR_Error) { + return PEAR::raiseError(sprintf(_("Could not delete the message. %s"), $message->getMessage())); + } + + /* Set up the form. */ + $vars = new Horde_Variables($variables); + $form = new Horde_Form($vars, sprintf(_("Delete \"%s\" and all replies?"), $message['message_subject']), 'delete_agora_message'); + $form->setButtons(array(_("Delete"), _("Cancel"))); + $form->addHidden('', 'forum_id', 'int', true); + $form->addHidden('', 'message_id', 'int', true); + + if ($form->validate()) { + if ($vars->get('submitbutton') == _("Delete")) { + $result = $messages->deleteMessage($params['message_id']); + if ($result instanceof PEAR_Error) { + $queue->push(sprintf(_("Could not delete the message. %s"), $result->getMessage()), 'horde.error'); + } else { + $queue->push(_("Message deleted."), 'horde.success'); + $count = $messages->countMessages(); + $registry->callByPackage($scope, $callback, array($forum_name, 'messages', $count)); + } + } else { + $queue->push(_("Message not deleted."), 'horde.message'); + } + return Horde_Util::bufferOutput(array($queue, 'notify'), array('listeners' => 'status')); + } + + return Horde_Util::bufferOutput(array($form, 'renderActive'), null, null, null, 'post', null, false); + } + + /** + * Allows other Horde apps to post messages. + * + * In most apps we use the same code to make comments possible. This function + * does most of that. Allow comments to be added to any app. The app itself + * should check if the agora api is present, determine a key and call this + * function before app::menu is called (before any output has started. At the + * end of its output it can print the array returned to show the comments. + * + * @access private + * + * @param string $scope The application which is posting this message. + * @param string $key Unique key from the object (picture etc we're + * viewing. It will be used as the forum name. + * @param string $callback A callback method of the specified application + * that gets called to make sure that posting to + * this forum is allowed. + * @param boolean $body Show the comment bodies in the thread view or + * not. + * @param string $base_url Base URL the edit/delete/reply links should + * point to. + * @param string $url If specified, the form gets submitted to this + * URL instead of the current page. + * @param array $variables A hash with all variables of a submitted form + * generated by this method. + * @param string $template_file Template file to use. + * + * @return mixed array Returns either the rendered Horde_Form for comments + * and threads for posting/viewing a message or PEAR + * objects on error. + */ + public function doComments($scope, $key, $callback, $bodies = true, + $base_url = null, $url = null, $variables = null, + $template_file = false) + { + require_once dirname(__FILE__) . '/base.php'; + + if (is_null($base_url)) { + $base_url = Horde::selfUrl(true); + } + + list($forum_id, $message_id) = Agora::getAgoraId(); + + $params = array(); + if ($message_id) { + $params['message_id'] = $message_id; + } + + if ($parent = Horde_Util::getFormData('message_parent_id')) { + $params['message_parent_id'] = $parent; + } + + // See if we're editing. + if (isset($params['message_id'])) { + $params['title'] = _("Edit a comment"); + } else { + $params['title'] = _("Add a comment"); + $params['message_id'] = null; + } + + if (Horde_Util::getFormData('delete') === null) { + $comments = $this->postMessage($scope, $key, $callback, $params, $url, $variables); + } else { + $comments = $this->removeMessage($scope, $key, $callback, $params, $url, $variables); + } + + if ($comments instanceof PEAR_Error) { + return $comments; + } + + include AGORA_BASE . '/lib/Comments.php'; + $threads = Agora_ViewComments::render($key, $scope, $base_url, $template_file); + + if ($threads instanceof PEAR_Error) { + $threads = $threads->getMessage(); + } + if ($comments instanceof PEAR_Error) { + $comments = $comments->getMessage(); + } + + return array('threads' => $threads, 'comments' => $comments); + } + + /** + * Fill up a form data array. + * + * @param string $scope The Horde application that is saving this forum. + * @param string $parent The parent forum. + * @param array $info The forum information to consisting of: + * forum_parent_id + * forum_name + * forum_description + * forum_moderated + * forum_attachments + * @param string $callback A callback method of the specified application + * that gets called to make sure that posting to + * this forum is allowed. + */ + public function prepareFormData($scope, $parent = false, $info = array(), $callback = null) + { + require_once dirname(__FILE__) . '/base.php'; + + $forums = &Agora_Messages::singleton($scope); + + if ($parent) { + $parent_id = $forums->getForumId($parent); + $parent_form = $forums->getForum($parent_id); + $info['forum_parent_id'] = $parent_id; + if (!isset($info['forum_moderated'])) { + $info['forum_moderated'] = $parent_form->isModerated(); + } + if (!isset($info['forum_attachments'])) { + $info['forum_attachments'] = $parent_form->forum->data['forum_attachments']; + } + } elseif (isset($info['forum_name'])) { + $forum_id = $forums->getForumId($info['forum_name']); + if (!empty($forum_id)) { + $forum = $forums->getForum($forum_id); + $info = array_merge($forum, $info); + } + } + + if (!isset($info['forum_parent_id'])) { + $info['forum_parent_id'] = 0; + } + + if (!isset($info['forum_attachments'])) { + $info['forum_attachments'] = ($GLOBALS['conf']['forums']['enable_attachments'] == '-1') ? false : true; + } + + if (!isset($info['forum_moderated'])) { + $info['forum_moderated'] = false; + } + + if (!isset($info['forum_description'])) { + $info['forum_description'] = ''; + } + + if (!isset($info['author'])) { + $info['author'] = ''; + } + + if ($callback) { + /* Get the data owner */ + if (empty($info['author'])) { + $info['author'] = $GLOBALS['registry']->callByPackage($scope, $callback, array($info['forum_name'], 'owner')); + if ($info['author'] instanceof PEAR_Error) { + return $info['author']; + } + } + + /* Get description */ + if (empty($info['forum_description'])) { + $info['forum_description'] = $GLOBALS['registry']->callByPackage($scope, $callback, array($info['forum_name'])); + if ($info['forum_description'] instanceof PEAR_Error) { + return $info['forum_description']; + } + } + } + + return $info; + } + + /** + * Prepare the moderate form + * + * @param string $scope The Horde application that is saving this forum. + */ + public function moderateForm($scope) + { + global $notification, $prefs, $registry; + + require_once dirname(__FILE__) . '/base.php'; + + $api_call = true; + + return require AGORA_BASE . '/moderate.php'; + } +} \ No newline at end of file diff --git a/agora/lib/Application.php b/agora/lib/Application.php new file mode 100644 index 000000000..c44173207 --- /dev/null +++ b/agora/lib/Application.php @@ -0,0 +1,71 @@ + + * @author Duck + * @package Agora + */ + +class Agora_Application extends Horde_Registry_Application +{ + public $version = 'H4 (1.0-git)'; + + /** + * Returns a list of available permissions. + * + * @return array An array describing all available permissions. + */ + public function perms() + { + static $perms = array(); + if (!empty($perms)) { + return $perms; + } + + require_once dirname(__FILE__) . '/base.php'; + + $perms['tree']['agora']['admin'] = true; + $perms['title']['agora:admin'] = _("Admin"); + $perms['title']['agora:forums'] = _("Forums"); + + foreach ($GLOBALS['registry']->listApps() as $scope) { + $perms['title']['agora:forums:' . $scope] = $GLOBALS['registry']->get('name', $scope); + $perms['tree']['agora']['forums'][$scope] = false; + + $forums = &Agora_Messages::singleton($scope); + $forums_list = $forums->getBareForums(); + if (($forums_list instanceof PEAR_Error) || empty($forums_list)) { + continue; + } + + foreach ($forums_list as $id => $title) { + $perms['tree']['agora']['forums'][$scope][$id] = false; + $perms['title']['agora:forums:' . $scope . ':' . $id] = $title; + } + + } + + return $perms; + } + + /** + * Generate the menu to use on the prefs page. + * + * @return Horde_Menu A Horde_Menu object. + */ + public function prefsMenu() + { + return Agora::getMenu(); + } +} diff --git a/agora/lib/Block/forums.php b/agora/lib/Block/forums.php new file mode 100644 index 000000000..b5d25db73 --- /dev/null +++ b/agora/lib/Block/forums.php @@ -0,0 +1,96 @@ + + * @author Jan Schneider + * @package Horde_Block + */ +class Horde_Block_agora_forums extends Horde_Block { + + var $_app = 'agora'; + + function _title() + { + return Horde::link(Horde::applicationUrl('forums.php', true)) . _("Forums") . ''; + } + + function _params() + { + /* Display the last X number of threads. */ + $forum_display = array(); + $forum_display['name'] = _("Only display this many forums (0 to display all forums)"); + $forum_display['type'] = 'int'; + $forum_display['default'] = 0; + $forum_display['values'] = $GLOBALS['prefs']->getValue('forums_block_display'); + + return array('forum_display' => $forum_display); + } + + function _content() + { + global $registry; + + require_once dirname(__FILE__) . '/../base.php'; + + /* Set up the forums object. */ + $forums = array(Agora_Messages::singleton()); + if (Horde_Auth::isAdmin()) { + foreach ($registry->listApps(array('hidden', 'notoolbar', 'active')) as $scope) { + if ($registry->hasMethod('hasComments', $scope) && + $registry->callByPackage($scope, 'hasComments') === true) { + $forums[] = &Agora_Messages::singleton($scope); + } + } + } + + /* Get the sorting. */ + $sort_by = Agora::getSortBy('forums'); + $sort_dir = Agora::getSortDir('forums'); + + /* Get the list of forums. */ + $forums_list = array(); + foreach ($forums as $forum) { + $scope_forums = $forum->getForums(0, true, $sort_by, $sort_dir, true); + if ($scope_forums instanceof PEAR_Error) { + return $scope_forums->getMessage(); + } + $forums_list = array_merge($forums_list, $scope_forums); + } + + /* Show a message if no available forums. Don't raise an error + * as it is not an error to have no forums. */ + if (empty($forums_list)) { + return _("There are no forums."); + } + + /* Display only the most recent threads if preference set. */ + if (!empty($this->_params['forum_display'])) { + $forums_list = array_slice($forums_list, 0, $this->_params['forum_display']); + } + + /* Set up the column headers. */ + $col_headers = array('forum_name' => _("Forum"), 'message_count' => _("Posts"), 'message_subject' => _("Last Post"), 'message_author' => _("Posted by"), 'message_timestamp' => _("Date")); + $col_headers = Agora::formatColumnHeaders($col_headers, $sort_by, $sort_dir, 'forums'); + + /* Set up the template tags. */ + $view = new Agora_View(); + $view->col_headers = $col_headers; + $view->forums_list = $forums_list; + + return $view->render('block/forums.html.php'); + } +} \ No newline at end of file diff --git a/agora/lib/Block/thread.php b/agora/lib/Block/thread.php new file mode 100644 index 000000000..485671640 --- /dev/null +++ b/agora/lib/Block/thread.php @@ -0,0 +1,94 @@ + + * @package Horde_Block + */ +class Horde_Block_agora_thread extends Horde_Block { + + var $_app = 'agora'; + + function _params() + { + require_once dirname(__FILE__) . '/../base.php'; + + $forumOb = &Agora_Messages::singleton(); + $forums_list = $forumOb->getForums(0, true, 'forum_name', 0, true); + + $threads = array('name' => _("Thread"), + 'type' => 'mlenum', + 'values' => array()); + + foreach ($forums_list as $forum_id => $forum) { + $threadsOb = &Agora_Messages::singleton('agora', $forum_id); + $threads_list = $threadsOb->getThreads(); + foreach ($threads_list as $thread_id => $thread) { + if (!isset($threads['default'])) { + $threads['default'] = $forum_id . '.' . $thread['message_id']; + } + $threads['values'][$forum['indent'] . $forum['forum_name']][$forum_id . '.' . $thread['message_id']] = $thread['message_subject']; + } + } + + return array('thread_id' => $threads); + } + + function _title() + { + return _("Single Thread"); + } + + function _content() + { + /* Return empty if we don't have a thread set. */ + if (empty($this->_params['thread_id'])) { + return ''; + } + + require_once dirname(__FILE__) . '/../base.php'; + + /* Set up the message object. */ + list($forum_id, $message_id) = explode('.', $this->_params['thread_id']); + $messages = &Agora_Messages::singleton('agora', $forum_id); + + /* Check if valid thread, otherwise show forum list. */ + if ($messages instanceof PEAR_Error || empty($messages)) { + return PEAR::raiseError(_("Unable to fetch selected thread.")); + } + + /* Get the sorting. */ + $sort_by = Agora::getSortBy('threads'); + $sort_dir = Agora::getSortDir('threads'); + $view_bodies = $GLOBALS['prefs']->getValue('thread_view_bodies'); + + /* Get the message array and the sorted thread list. */ + $threads_list = $messages->getThreads($messages->getThreadRoot($message_id), true, $sort_by, $sort_dir, $view_bodies, Horde::selfUrl()); + + /* Set up the column headers. */ + $col_headers = array(array('message_thread' => _("Thread"), 'message_subject' => _("Subject")), 'message_author' => _("Posted by"), 'message_timestamp' => _("Date")); + $col_headers = Agora::formatColumnHeaders($col_headers, $sort_by, $sort_dir, 'threads'); + + /* Set up the template tags. */ + $view = new Agora_View(); + $view->col_headers = $col_headers; + $view->threads_list = $threads_list; + $view->threads_list_header = _("Thread List"); + $view->thread_view_bodies = $view_bodies; + + return $view->render('block/thread.html.php'); + } +} \ No newline at end of file diff --git a/agora/lib/Block/threads.php b/agora/lib/Block/threads.php new file mode 100644 index 000000000..032786df4 --- /dev/null +++ b/agora/lib/Block/threads.php @@ -0,0 +1,132 @@ + + * @author Jan Schneider + * @package Horde_Block + */ +class Horde_Block_agora_threads extends Horde_Block { + + /** + * @var array + */ + var $_threads = array(); + + /** + * @var string + */ + var $_app = 'agora'; + + /** + * @return array + */ + function _params() + { + require_once dirname(__FILE__) . '/../base.php'; + + $forums = Agora_Messages::singleton(); + + /* Get the list of forums to display. */ + $forum_id = array( + 'name' => _("Forum"), + 'type' => 'enum', + 'values' => $forums->getForums(0, false, 'forum_name', 0, !Horde_Auth::isAdmin()), + ); + + /* Display the last X number of threads. */ + $thread_display = array( + 'name' => _("Only display this many threads (0 to display all threads)"), + 'type' => 'int', + 'default' => 0, + 'values' => $GLOBALS['prefs']->getValue('threads_block_display'), + ); + + return array('forum_id' => $forum_id, + 'thread_display' => $thread_display); + } + + /** + * @return string + */ + function _title() + { + require_once dirname(__FILE__) . '/../base.php'; + + if (!isset($this->_params['forum_id'])) { + return _("Threads"); + } + + if (empty($this->_threads)) { + $this->_threads = &Agora_Messages::singleton('agora', $this->_params['forum_id']); + if ($this->_threads instanceof PEAR_Error) { + return _("Threads"); + } + } + + $title = sprintf(_("Threads in \"%s\""), $this->_threads->_forum['forum_name']); + $url = Horde::applicationUrl('threads.php', true); + if (!empty($scope)) { + $url = Horde_Util::addParameter($url, 'scope', $scope); + } + return Horde::link(Agora::setAgoraId($this->_params['forum_id'], null, $url)) + . $title . ''; + } + + /** + * @return string + */ + function _content() + { + require_once dirname(__FILE__) . '/../base.php'; + + if (!isset($this->_params['forum_id'])) { + return _("No forum selected"); + } + + if (empty($this->_threads)) { + $this->_threads = &Agora_Messages::singleton('agora', $this->_params['forum_id']); + if ($this->_threads instanceof PEAR_Error) { + return PEAR::raiseError(_("Unable to fetch threads for selected forum.")); + } + } + + /* Get the sorting. */ + $sort_by = Agora::getSortBy('threads'); + $sort_dir = Agora::getSortDir('threads'); + + /* Get a list of threads and display only the most recent if + * preference is set. */ + $threads_list = $this->_threads->getThreads(0, false, $sort_by, $sort_dir, false, Horde::selfUrl(), null, 0, !empty($this->_params['thread_display']) ? $this->_params['thread_display'] : null); + + /* Show a message if no available threads. Don't raise an error + * as it is not an error to have no threads. */ + if (empty($threads_list)) { + return _("No available threads."); + } + + /* Set up the column headers. */ + $col_headers = array('message_subject' => _("Subject"), 'message_author' => _("Posted by"), 'message_timestamp' => _("Date")); + $col_headers = Agora::formatColumnHeaders($col_headers, $sort_by, $sort_dir, 'threads'); + + /* Set up the template tags. */ + $view = new Agora_View(); + $view->col_headers = $col_headers; + $view->threads = $threads_list; + + return $view->render('block/threads.html.php'); + } +} \ No newline at end of file diff --git a/agora/lib/Comments.php b/agora/lib/Comments.php new file mode 100644 index 000000000..a7294e663 --- /dev/null +++ b/agora/lib/Comments.php @@ -0,0 +1,127 @@ + + * @author Duck + */ +class Agora_ViewComments { + + /** + * Returns all threads of a forum in a threaded view. + * + * @param string $forum_name The unique name for the forum. + * @param boolean $bodies Whether to include message bodies in the view. + * @param string $scope The application that the specified forum belongs to. + * @param string $base_url An alternate link where edit/delete/reply links + * point to. + * @param string $template_file Template file to use. + * + * @return string The HTML code of the thread view. + */ + static public function render($forum_name, $scope = 'agora', $base_url = null, $template_file = false) + { + $forums = &Agora_Messages::singleton($scope); + $forum_id = $forums->getForumId($forum_name); + if ($forum_id === null) { + return ''; + } + + $messages = &Agora_Messages::singleton($scope, $forum_id); + if ($messages instanceof PEAR_Error) { + return $messages->getMessage(); + } + + if (($view_bodies = Horde_Util::getPost('bodies')) !== null) { + $GLOBALS['prefs']->setValue('comments_view_bodies', $view_bodies); + } else { + $view_bodies = $GLOBALS['prefs']->getValue('comments_view_bodies'); + } + + if ($messages->_forum['message_count'] == 0) { + return ''; + } + + $sort_by = Agora::getSortBy('comments'); + $sort_dir = Agora::getSortDir('comments'); + $html = '
' . _("Comments") . ' (' . $messages->_forum['message_count'] . ')' . '  '; + if (!$GLOBALS['prefs']->isLocked('comments_view_bodies')) { + $rss = Horde_Util::addParameter(Horde::applicationUrl('rss/threads.php', true, -1), array('scope' => $scope, 'forum_id' => $forum_id)); + $html .= ''; + $html .= '
'; + $html .= _("View") . ' '; + + if ($view_bodies != '1') { + $html .= ' ' . _("Sort by") . ' '; + $html .= ''; + $html .= ' ' . _("Sort direction") . ' '; + $html .= ''; + } + $html .= ''; + $html .= ' RSS '; + $html .= '
'; + } + $html .= '
'; + + $col_headers = array('message_thread' => _("Subject"), + 'message_thread_class_plain' => '', + 'message_author' => _("Posted by"), + 'message_author_class_plain' => '', + 'message_timestamp' => _("Date"), + 'message_timestamp_class_plain' => ''); + + if ($view_bodies == 1) { + $threads = $messages->getThreads(0, true, 'message_thread', 0, true, '', $base_url); + $html .= $messages->getThreadsUI($threads, $col_headers, true, $template_file); + } else { + $thread_page = Horde_Util::getFormData('comments_page', 0); + $thread_per_page = $GLOBALS['prefs']->getValue('comments_per_page'); + $thread_start = $thread_page * $thread_per_page; + + if (empty($template_file)) { + $template_file = '/messages/flat.html.php'; + } + + if ($messages->_forum['message_count'] > $thread_per_page && $view_bodies == 2) { + $vars = new Horde_Variables(array('comments_page' => $thread_page)); + $pager_ob = new Horde_Ui_Pager('comments_page', $vars, + array('num' => $messages->_forum['message_count'], + 'url' => $base_url, + 'perpage' => $thread_per_page)); + + $pager_html = $pager_ob->render(); + } else { + $pager_html = ''; + } + + $threads_list = $messages->getThreads(0, true, $sort_by, $sort_dir, 1, '', $base_url, $thread_start, $thread_per_page); + if ($threads_list instanceof PEAR_Error) { + $html .= $threads_list->getDebugInfo(); + } else { + $html .= $pager_html + . $messages->getThreadsUI($threads_list, $col_headers, true, $template_file) + . $pager_html; + } + } + + return $html; + } + +} diff --git a/agora/lib/Forms/Forum.php b/agora/lib/Forms/Forum.php new file mode 100644 index 000000000..c4befb6ac --- /dev/null +++ b/agora/lib/Forms/Forum.php @@ -0,0 +1,55 @@ +getForums(0, false, 'forum_name', 0, true)); + + $this->setButtons($vars->get('forum_id') ? _("Update") : _("Create")); + + $this->addHidden('', 'forum_id', 'int', false); + $this->addVariable(_("Forum name"), 'forum_name', 'text', true); + + if (count($forums_list) > 0) { + $this->addVariable(_("Parent forum"), 'forum_parent_id', 'enum', false, false, null, array($forums_list, true)); + } else { + $this->addHidden('', 'forum_parent_id', 'text', false); + $vars->set('forum_parent_id', key($forums_list)); + } + $this->addVariable(_("Enter a brief description of this forum"), 'forum_description', 'longtext', false, false, null, array(4, 40)); + $this->addVariable(_("Is this a moderated forum?"), 'forum_moderated', 'boolean', false, false, _("Set this if you want all messages to be checked by a moderator before they are posted.")); + $this->addVariable(_("Optional email address to recieve a copy of each posted message"), 'forum_distribution_address', 'text', false, false); + if ($conf['forums']['enable_attachments'] == '0') { + $this->addVariable(_("Allow attachments in this forum?"), 'forum_attachments', 'boolean', false, false, _("If selected users will be able to attach files to their messages.")); + } + } + + /** + */ + function execute(&$vars) + { + global $forums; + + $this->getInfo($vars, $info); + return $forums->saveForum($info); + } + +} diff --git a/agora/lib/Forms/Message.php b/agora/lib/Forms/Message.php new file mode 100644 index 000000000..07f6a8009 --- /dev/null +++ b/agora/lib/Forms/Message.php @@ -0,0 +1,64 @@ +remove('captcha'); + $this->removeVariable($varname = 'captcha'); + $this->insertVariableBefore('newcomment', _("Spam protection"), 'captcha', 'figlet', true, null, null, array(Agora::getCAPTCHA(true), $conf['forums']['figlet_font'])); + } + return false; + } + + return true; + } + + function &getRenderer($params = array()) + { + $renderer = new Horde_Form_Renderer_MessageForm($params); + return $renderer; + } + +} + +/** + * Message renderer class. + * + * @package Agora + */ +class Horde_Form_Renderer_MessageForm extends Horde_Form_Renderer { + + function _renderVarInputEnd(&$form, &$var, &$vars) + { + if ($var->hasDescription()) { + // The description is actually the quote button + echo ' ' . $var->getDescription(); + } + } + + function close($focus = false) + { + echo '' . "\n"; + + if (Horde_Util::getGet('reply_focus')) { + echo ''; + } + } + +} diff --git a/agora/lib/Forms/Search.php b/agora/lib/Forms/Search.php new file mode 100644 index 000000000..61efb97cf --- /dev/null +++ b/agora/lib/Forms/Search.php @@ -0,0 +1,73 @@ + + * @package Agora + */ +class SearchForm extends Horde_Form { + + /** + * Get list of available forums + */ + function getForumsType($scope) + { + $forums = &Agora_Messages::singleton($scope); + $forumlist = $forums->getBareForums(); + + return array('multienum', array($forumlist)); + } + + /** + * Set up forum object + */ + function SearchForm(&$vars, $scope) + { + parent::Horde_Form($vars, _("Search Forums")); + + if ($scope == 'agora') { + list($forumstype, $forumsparams) = $this->getForumsType($scope); + $this->addVariable(_("Search in these forums"), 'forums', $forumstype, + false, false, null, $forumsparams); + } else { + $this->addHidden('', 'scope', 'text', false); + } + + $this->addVariable(_("Keywords"), 'keywords', 'text', false); + $var = &$this->addVariable(_("Require all keywords?"), 'allkeywords', + 'boolean', false); + $var->setDefault(true); + + $var = &$this->addVariable(_("Search in subjects?"), + 'searchsubjects', 'boolean', false); + $var->setDefault(true); + + $this->addVariable(_("Search in message contents?"), 'searchcontents', + 'boolean', false); + + $this->addVariable(_("Author"), 'author', 'text', false); + + $this->setButtons(_("Search")); + } + + /** + * Trick getInfo to catch pager parameters + */ + function getInfo($vars, &$info) + { + parent::getInfo($vars, $info); + + if (!$this->isSubmitted()) { + foreach ($info as $key => $val) { + $info[$key] = $vars->get($key); + } + } + } +} \ No newline at end of file diff --git a/agora/lib/Messages.php b/agora/lib/Messages.php new file mode 100644 index 000000000..51b9f831d --- /dev/null +++ b/agora/lib/Messages.php @@ -0,0 +1,2340 @@ + + * @author Jan Schneider + * @author Duck + * @package Agora + */ +class Agora_Messages { + + /** + * A hash containing any parameters for the current driver. + * + * @var array + */ + protected $_params = array(); + + /** + * The forums scope. + * + * @var string + */ + protected $_scope; + + /** + * Current forum data + * + * @var array + */ + public $_forum; + + /** + * Current forum ID + * + * @var string + */ + protected $_forum_id; + + /** + * Handle for the current database connection. + * + * @var DB + */ + protected $_db; + + /** + * Handle for the current database connection, used for writing. Defaults + * to the same handle as $_db if a separate write database is not required. + * + * @var DB + */ + protected $_write_db; + + /** + * Scope theads table name + * + * @var string + */ + protected $_threads_table = 'agora_messages'; + + /** + * Scope theads table name + * + * @var string + */ + protected $_forums_table = 'agora_forums'; + + /** + * Cache object + * + * @var Horde_Cache + */ + protected $_cache; + + /** + * Constructor + */ + public function __construct($scope) + { + /* Set parameters. */ + $this->_scope = $scope; + $this->_connect(); + + /* Initialize the Cache object. */ + $this->_cache = &Horde_Cache::singleton($GLOBALS['conf']['cache']['driver'], + Horde::getDriverConfig('cache', $GLOBALS['conf']['cache']['driver'])); + } + + /** + * Attempts to return a reference to a concrete Messages instance. It will + * only create a new instance if no Messages instance currently exists. + * + * This method must be invoked as: $var = &Agora_Messages::singleton(); + * + * @param string $scope Application scope to use + * @param int $forum_id Form to link to + * + * @return Forums The concrete Messages reference, or false on error. + */ + static public function &singleton($scope = 'agora', $forum_id = 0) + { + static $objects = array(); + + if (!isset($objects[$scope])) { + $driver = $GLOBALS['conf']['threads']['split'] ? 'split_sql' : 'sql'; + require_once AGORA_BASE . '/lib/Messages/' . $driver . '.php'; + $class_name = 'Agora_Messages_' . $driver; + $objects[$scope] = new $class_name($scope); + } + + if ($forum_id) { + /* Check if there was a valid forum object to get. */ + $forum = $objects[$scope]->getForum($forum_id); + if ($forum instanceof PEAR_Error) { + return $forum; + } + + /* Set curernt forum id and forum data */ + $objects[$scope]->_forum = $forum; + $objects[$scope]->_forum_id = (int)$forum_id; + } + + return $objects[$scope]; + } + + /** + * Checks if attachments are allowed in messages for the current forum. + * + * @return boolean Whether attachments allowed or not. + */ + public function allowAttachments() + { + return ($GLOBALS['conf']['forums']['enable_attachments'] == '1' || + ($GLOBALS['conf']['forums']['enable_attachments'] == '0' && + $this->_forum['forum_attachments'])); + } + + /** + * Saves the message. + * + * @param array $info Array containing all the message data to save. + * + * @return mixed Message ID on success or PEAR_Error on failure. + */ + public function saveMessage($info) + { + /* Check if the thread is locked before changing anything. */ + if ($info['message_parent_id'] && + $this->isThreadLocked($info['message_parent_id'])) { + return PEAR::raiseError(_("This thread has been locked.")); + } + + /* Check post permissions. */ + if (!$this->hasPermission(Horde_Perms::EDIT)) { + return PEAR::raiseError(sprintf(_("You don't have permission to post messages in forum %s."), $this->_forum_id)); + } + + if (empty($info['message_id'])) { + /* Get thread parents */ + if ($info['message_parent_id'] > 0) { + $parents = $this->_db->getOne('SELECT parents FROM ' . $this->_threads_table . ' WHERE message_id = ?', + null, array($info['message_parent_id'])); + $info['parents'] = $parents . ':' . $info['message_parent_id']; + $info['message_thread'] = $this->getThreadRoot($info['message_parent_id']); + } else { + $info['parents'] = ''; + $info['message_thread'] = 0; + } + + /* Create new message */ + $sql = 'INSERT INTO ' . $this->_threads_table + . ' (message_id, forum_id, message_thread, parents, ' + . 'message_author, message_subject, body, attachments, ' + . 'message_timestamp, message_modifystamp, ip) ' + . ' VALUES (?, ?, ?, ?, ?, ?, ?, 0, ?, ?, ?)'; + + $author = Horde_Auth::getAuth() ? Horde_Auth::getAuth() : $info['posted_by']; + $info['message_id'] = $this->_write_db->nextId('agora_messages'); + $params = array($info['message_id'], + $this->_forum_id, + $info['message_thread'], + $info['parents'], + $author, + $this->convertToDriver($info['message_subject']), + $this->convertToDriver($info['message_body']), + $_SERVER['REQUEST_TIME'], + $_SERVER['REQUEST_TIME'], + $_SERVER['REMOTE_ADDR']); + + $statement = $this->_write_db->prepare($sql); + if ($statement instanceof PEAR_Error) { + return $statement; + } + $result = $statement->execute($params); + $statement->free(); + if ($result instanceof PEAR_Error) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + + /* Update last message in forum, but only if it is not moderated */ + if (!$this->_forum['forum_moderated']) { + // Send the new post to the distribution address + if ($this->_forum['forum_distribution_address']) { + Agora::distribute($info['message_id']); + } + /* Update cached message/thread counts and last poster */ + $this->_lastInForum($this->_forum_id, $info['message_id'], $author, $_SERVER['REQUEST_TIME']); + $this->_forumSequence($this->_forum_id, 'message', '+'); + if ($info['message_thread']) { + $this->_sequence($info['message_thread'], '+'); + $this->_lastInThread($info['message_thread'], $info['message_id'], $author, $_SERVER['REQUEST_TIME']); + } else { + $this->_forumSequence($this->_forum_id, 'thread', '+'); + } + } + + } else { + /* Update message data */ + $sql = 'UPDATE ' . $this->_threads_table . ' SET ' . + 'message_subject = ?, body = ?, message_modifystamp = ? WHERE message_id = ?'; + $params = array($this->convertToDriver($info['message_subject']), + $this->convertToDriver($info['message_body']), + $_SERVER['REQUEST_TIME'], + $info['message_id']); + + $statement = $this->_write_db->prepare($sql); + if ($statement instanceof PEAR_Error) { + return $statement; + } + $result = $statement->execute($params); + $statement->free(); + if ($result instanceof PEAR_Error) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + + /* Get message thread for cache expiration */ + $info['message_thread'] = $this->getThreadRoot($info['message_id']); + if ($info['message_thread'] instanceof PEAR_Error) { + return $info['message_thread']; + } + } + + /* Handle attachment saves or deletions. */ + if (!empty($info['message_attachment']) || + !empty($info['attachment_delete'])) { + $vfs = Agora::getVFS(); + if ($vfs instanceof PEAR_Error) { + return $vfs; + } + $vfs_dir = Agora::VFS_PATH . $this->_forum_id . '/' . $info['message_id']; + + /* Check if delete requested or new attachment loaded, and delete + * any existing one. */ + if (!empty($info['attachment_delete'])) { + $sql = 'SELECT file_id FROM agore_files WHERE message_id = ?'; + foreach ($this->_db->getCol($sql, null, array($info['message_id'])) as $file_id) { + if ($vfs->exists($vfs_dir, $file_id)) { + $delete = $vfs->deleteFile($vfs_dir, $file_id); + if ($delete instanceof PEAR_Error) { + return $delete; + } + } + } + $this->_write_db->query('DELETE FROM agore_files WHERE message_id = ' . (int)$info['message_id']); + $attachments = 0; + } + + /* Save new attachment information. */ + if (!empty($info['message_attachment'])) { + $file_id = $this->_write_db->nextId('agora_files'); + $result = $vfs->write($vfs_dir, $file_id, $info['message_attachment']['file'], true); + if ($result instanceof PEAR_Error) { + return $result; + } + + $file_sql = 'INSERT INTO agora_files (file_id, file_name, file_type, file_size, message_id) VALUES (?, ?, ?, ?, ?)'; + $file_data = array($file_id, + $info['message_attachment']['name'], + $info['message_attachment']['type'], + $info['message_attachment']['size'], + $info['message_id']); + + $statement = $this->_write_db->prepare($file_sql); + if ($statement instanceof PEAR_Error) { + return $statement; + } + + $result = $statement->execute($file_data); + $statement->free(); + if ($result instanceof PEAR_Error) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + $attachments = 1; + } + + $sql = 'UPDATE ' . $this->_threads_table . ' SET attachments = ' . $attachments + . ' WHERE message_id = ' . (int)$info['message_id']; + $result = $this->_write_db->query($sql); + if ($result instanceof PEAR_Error) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + } + + /* Update cache */ + $this->_updateCacheState($info['message_thread']); + + return $info['message_id']; + } + + /** + * Moves a thread to another forum. + * + * @todo Update the number of messages in the old/new forum + * + * @param integer $thread_id The ID of the thread to move. + * @param integer $forum_id The ID of the destination forum. + */ + public function moveThread($thread_id, $forum_id) + { + $sql = 'SELECT forum_id FROM ' . $this->_threads_table . ' WHERE message_id = ' . (int)$thread_id; + $old_forum = $this->_db->getOne($sql); + if ($old_forum instanceof PEAR_Error) { + return $old_forum; + } + + $sql = 'UPDATE ' . $this->_threads_table . ' SET forum_id = ' . (int)$forum_id + . ' WHERE message_thread = ' . (int)$thread_id .' OR message_id = ' . (int)$thread_id; + $result = $this->_write_db->query($sql); + if ($result instanceof PEAR_Error) { + return $result; + } + + $this->_forumSequence($old_forum, 'thread', '-'); + $this->_forumSequence($forum_id, 'thread', '+'); + + /* Update last message */ + $this->_lastInForum($old_forum); + $this->_lastInForum($forum_id); + + /* Update cache */ + $this->_updateCacheState($thread_id); + + return true; + } + + /** + * Splits a thread on message id. + * + * @param integer $message_id The ID of the message to split at. + */ + public function splitThread($message_id) + { + $sql = 'SELECT message_thread FROM ' . $this->_threads_table . ' WHERE message_id = ' . (int)$message_id; + $thread_id = $this->_db->getOne($sql); + if ($thread_id instanceof PEAR_Error) { + return $thread_id; + } + + $sql = 'UPDATE ' . $this->_threads_table . ' SET message_thread = ?, parents = ? WHERE message_id = ?'; + $statement = $this->_write_db->prepare($sql); + if ($statement instanceof PEAR_Error) { + return $statement; + } + + $result = $statement->execute(array(0, '', (int)$message_id)); + $statement->free(); + if ($result instanceof PEAR_Error) { + return $result; + } + + $sql = 'SELECT message_thread, parents, message_id FROM ' . $this->_threads_table . ' WHERE parents LIKE ?'; + $children = $this->_db->getAll($sql, null, array(":$thread_id:%$message_id%")); + if ($children instanceof PEAR_Error) { + return $children; + } + + if (!empty($children)) { + $pos = strpos($children[0]['parents'], ':' . $message_id); + foreach ($children as $i => $message) { + $children[$i]['message_thread'] = (int)$message_id; + $children[$i]['parents'] = substr($message['parents'], $pos); + } + + $sql = 'UPDATE ' . $this->_threads_table . ' SET message_thread = ?, parents = ? WHERE message_id = ?'; + $statement = $this->_write_db->prepare($sql); + if ($statement instanceof PEAR_Error) { + return $statement; + } + $result = $this->_write_db->executeMultiple($statement, $children); + $statement->free(); + if ($result instanceof PEAR_Error) { + return $result; + } + } + + // Update count on old thread + $count = $this->countThreads($thread_id); + $sql = 'UPDATE ' . $this->_threads_table . ' SET message_seq = ' . $count . ' WHERE message_id = ' . (int)$thread_id; + $result = $this->_write_db->query($sql); + if ($result instanceof PEAR_Error) { + return $result; + } + + // Update count on new thread + $count = $this->countThreads($message_id); + $sql = 'UPDATE ' . $this->_threads_table . ' SET message_seq = ' . $count . ' WHERE message_id = ' . (int)$thread_id; + $result = $this->_write_db->query($sql); + if ($result instanceof PEAR_Error) { + return $result; + } + + /* Update last message */ + $this->_lastInForum($this->_forum_id); + $this->_lastInThread($thread_id); + $this->_lastInThread($message_id); + + $this->_forumSequence($this->_forum_id, 'thread', '+'); + + /* Update cache */ + $this->_updateCacheState($thread_id); + } + + /** + * Merges two threads. + * + * @param integer $thread_id The ID of the thread to merge. + * @param integer $message_id The ID of the message to merge to. + */ + public function mergeThread($thread_from, $message_id) + { + $sql = 'SELECT message_thread, parents FROM ' . $this->_threads_table . ' WHERE message_id = ?'; + $destination = $this->_db->getRow($sql, null, array($message_id)); + if ($destination instanceof PEAR_Error) { + return $destination; + } + + /* Merge to the top level */ + if ($destination['message_thread'] == 0) { + $destination['message_thread'] = $message_id; + } + + $sql = 'SELECT message_thread, parents, message_id FROM ' . $this->_threads_table . ' WHERE message_id = ? OR message_thread = ?'; + $children = $this->_db->getAll($sql, null, array($thread_from, $thread_from)); + if ($children instanceof PEAR_Error) { + return $children; + } + + if (!empty($children)) { + foreach ($children as $i => $message) { + $children[$i]['message_thread'] = $destination['message_thread']; + $children[$i]['parents'] = $destination['parents'] . $message['parents']; + if (empty($children[$i]['parents'])) { + $children[$i]['parents'] = ':' . $message_id; + } + } + + $statement = $this->_write_db->prepare('UPDATE ' . $this->_threads_table . ' SET message_thread = ?, parents = ? WHERE message_id = ?'); + if ($statement instanceof PEAR_Error) { + return $statement; + } + + $result = $this->_write_db->executeMultiple($statement, $children); + if ($result instanceof PEAR_Error) { + return $result; + } + } + + $count = $this->countThreads($destination['message_thread']); + $sql = 'UPDATE ' . $this->_threads_table . ' SET message_seq = ' . $count + . ' WHERE message_id = ' . (int)$destination['message_thread']; + $result = $this->_write_db->query($sql); + if ($result instanceof PEAR_Error) { + return $result; + } + + /* Update last message */ + $this->_lastInForum($this->_forum_id); + $this->_lastInThread($destination['message_thread']); + + $this->_forumSequence($this->_forum_id, 'thread', '-'); + + /* Update cache */ + $this->_updateCacheState($destination['message_thread']); + } + + /** + * Fetches a message. + * + * @param integer $message_id The ID of the message to fetch. + */ + public function getMessage($message_id) + { + $message = $this->_cache->get('agora_msg' . $message_id, $GLOBALS['conf']['cache']['default_lifetime']); + if ($message) { + return unserialize($message); + } + + $sql = 'SELECT message_id, forum_id, message_thread, parents, ' + . 'message_author, message_subject, body, message_seq, ' + . 'message_timestamp, view_count, locked, attachments FROM ' + . $this->_threads_table . ' WHERE message_id = ?'; + $message = $this->_db->getRow($sql, null, array($message_id)); + if ($message instanceof PEAR_Error) { + Horde::logMessage($message, __FILE__, __LINE__, PEAR_LOG_ERR); + return $message; + } + + if (empty($message)) { + return PEAR::raiseError(sprintf(_("Message ID \"%d\" not found"), + $message_id)); + } + + $message['message_subject'] = $this->convertFromDriver($message['message_subject']); + $message['body'] = $this->convertFromDriver($message['body']); + if ($message['message_thread'] == 0) { + $message['message_thread'] = $message_id; + } + + /* Is author a moderator? */ + if (isset($this->_forum['moderators']) && + in_array($message['message_author'], $this->_forum['moderators'])) { + $message['message_author_moderator'] = 1; + } + + $this->_cache->set('agora_msg' . $message_id, serialize($message)); + + return $message; + } + + /** + * Returns a hash with all information necessary to reply to a message. + * + * @param mixed $message The ID of the parent message to reply to, or arry of its data. + * + * @return array A hash with all relevant information. + */ + public function replyMessage($message) + { + if (!is_array($message)) { + $message = $this->getMessage($message); + if ($message instanceof PEAR_Error) { + return $message; + } + } + + /* Set up the form subject with the parent subject. */ + if (Horde_String::lower(Horde_String::substr($message['message_subject'], 0, 3)) != 're:') { + $message['message_subject'] = 'Re: ' . $message['message_subject']; + } else { + $message['message_subject'] = $message['message_subject']; + } + + /* Prepare the message quite body . */ + $message['body'] = sprintf(_("Posted by %s on %s"), + htmlspecialchars($message['message_author']), + strftime($GLOBALS['prefs']->getValue('date_format'), $message['message_timestamp'])) + . "\n-------------------------------------------------------\n" + . $message['body']; + $message['body'] = "\n> " . Horde_String::wrap($message['body'], 60, "\n> ", Horde_Nls::getCharset()); + + return $message; + } + + /** + * Deletes a message and all replies. + * + * @param integer $message_id The ID of the message to delete. + * + * @return mixed Thread ID on success or PEAR_Error on failure. + */ + public function deleteMessage($message_id) + { + /* Check delete permissions. */ + if (!$this->hasPermission(Horde_Perms::DELETE)) { + return PEAR::raiseError(sprintf(_("You don't have permission to delete messages in forum %s."), $this->_forum_id)); + } + + $sql = 'SELECT message_thread FROM ' . $this->_threads_table . ' WHERE message_id = ?'; + $thread_id = $this->_db->getOne($sql, null, array($message_id)); + + if ($thread_id instanceof PEAR_Error) { + Horde::logMessage($thread_id, __FILE__, __LINE__, PEAR_LOG_ERR); + return $thread_id; + } + + $sql = 'DELETE FROM ' . $this->_threads_table . ' WHERE message_id = ' . (int)$message_id; + if ($thread_id == 0) { + $sql .= ' OR message_thread = ' . (int)$message_id; + } + + $result = $this->_write_db->query($sql); + if ($result instanceof PEAR_Error) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + + /* Update counts */ + $this->_forumSequence($this->_forum_id, 'message', '-'); + if ($thread_id) { + $this->_sequence($thread_id, '-'); + } else { + $this->_forumSequence($this->_forum_id, 'thread', '-'); + } + + $this->_lastInForum($this->_forum_id); + $this->_lastInThread($thread_id); + + /* Update cache */ + $this->_updateCacheState($thread_id); + + return $thread_id; + } + + /** + * Update lastMessage in a Forum + * + * @param integer $forum_id Forum to update + * @param integer $message_id Last message id + * @param string $message_author Last message author + * @param integer $message_timestamp Last message timestamp + */ + private function _lastInForum($forum_id, $message_id = 0, $message_author = '', $message_timestamp = 0) + { + // Get the last message in form or thread - when managing threads + if ($message_id == 0) { + $sql = 'SELECT message_id, message_author, message_timestamp FROM ' . $this->_threads_table + . ' WHERE forum_id = ' . (int)$forum_id . ' ORDER BY message_id DESC'; + $this->_db->setLimit(1, 0); + $last = $this->_db->getRow($sql); + if (empty($last)) { + array(0, '', 0); + } else { + extract($last); + } + } + + $sql = 'UPDATE ' . $this->_forums_table + . ' SET last_message_id = ?, last_message_author = ?, last_message_timestamp = ? WHERE forum_id = ?'; + + $statement = $this->_write_db->prepare($sql); + if ($statement instanceof PEAR_Error) { + return $statement; + } + + $statement->execute(array($message_id, $message_author, $message_timestamp, $forum_id)); + + $this->_cache->expire('agora_forum_' . $forum_id, $GLOBALS['conf']['cache']['default_lifetime']); + } + + /** + * Update lastMessage in Thread + * + * @param integer $thread_id Thread to update + * @param integer $message_id Last message id + * @param string $message_author Last message author + * @param integer $message_timestamp Last message timestamp + */ + private function _lastInThread($thread_id, $message_id = 0, $message_author = '', $message_timestamp = 0) + { + // Get the last message in form or thread - when managing threads + if ($message_id == 0) { + $sql = 'SELECT message_id, message_author, message_timestamp FROM ' . $this->_threads_table + . ' WHERE message_thread = ' . (int)$thread_id . ' ORDER BY message_id DESC'; + $this->_db->setLimit(1, 0); + $last = $this->_db->getRow($sql); + if (empty($last)) { + $last = array(0, '', 0); + } else { + extract($last); + } + } + + $sql = 'UPDATE ' . $this->_threads_table + . ' SET last_message_id = ?, last_message_author = ?, message_modifystamp = ? WHERE message_id = ?'; + + $statement = $this->_write_db->prepare($sql); + if ($statement instanceof PEAR_Error) { + return $statement; + } + + $statement->execute(array($message_id, $message_author, $message_timestamp, $thread_id)); + } + + /** + * Increments or decrements a forum's message count. + * + * @param integer $forum_id Forum to update + * @param string $type What to increment message, thread or view. + * @param integer|string $diff Incremental or decremental step, either a + * positive or negative integer, or a plus or + * minus sign. + */ + public function _forumSequence($forum_id, $type = 'message', $diff = '+') + { + $t = $type . '_count'; + $sql = 'UPDATE ' . $this->_forums_table . ' SET ' . $t . ' = '; + + switch ($diff) { + case '+': + case '-': + $sql .= $t . ' ' . $diff . ' 1'; + break; + + default: + $sql .= (int)$diff; + break; + } + + $sql .= ' WHERE forum_id = ' . (int)$forum_id; + + return $this->_write_db->query($sql); + } + + /** + * Increments or decrements a thread's message count. + * + * @param integer $thread_id Thread to update. + * @param integer|string $diff Incremental or decremental step, either a + * positive or negative integer, or a plus or + * minus sign. + */ + private function _sequence($thread_id, $diff = '+') + { + $sql = 'UPDATE ' . $this->_threads_table . ' SET message_seq = '; + + switch ($diff) { + case '+': + case '-': + $sql .= 'message_seq ' . $diff . ' 1'; + break; + + default: + $sql .= (int)$diff; + break; + } + + $sql .= ', message_modifystamp = ' . $_SERVER['REQUEST_TIME'] . ' WHERE message_id = ' . (int)$thread_id; + Horde::logMessage('Query by Agora_Messages::_sequence(): ' . $sql, __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_write_db->query($sql); + } + + /** + * Deletes an entire message thread. + * + * @param integer $thread_id The ID of the thread to delete. If not + * specified will delete all the threads for the + * current forum. + */ + public function deleteThread($thread_id = 0) + { + /* Check delete permissions. */ + if (!$this->hasPermission(Horde_Perms::DELETE)) { + return PEAR::raiseError(sprintf(_("You don't have permission to delete messages in forum %s."), $this->_forum_id)); + } + + if ($thread_id > 0) { + $sql = 'DELETE FROM ' . $this->_threads_table . ' WHERE message_thread = ' . (int)$thread_id; + $result = $this->_write_db->query($sql); + if ($result instanceof PEAR_Error) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + + $sql = 'SELECT COUNT(*) FROM ' . $this->_threads_table . ' WHERE forum_id = ' . (int)$this->_forum_id; + $messages = $this->_db->getOne($sql); + + $this->_forumSequence($this->_forum_id, 'thread', '-'); + $this->_forumSequence($this->_forum_id, 'message', $messages); + + /* Update cache */ + $this->_updateCacheState($thread_id); + + } else { + $sql = 'DELETE FROM ' . $this->_threads_table . ' WHERE forum_id = ' . (int)$this->_forum_id; + $result = $this->_write_db->query($sql); + if ($result instanceof PEAR_Error) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + + $this->_forumSequence($this->_forum_id, 'thread', 0); + $this->_forumSequence($this->_forum_id, 'message', 0); + } + + /* Update last message */ + $this->_lastInForum($this->_forum_id); + + return true; + } + + /** + * Returns a list of threads. + * + * @param integer $thread_root Message at which to start the thread. + * If null get all forum threads + * @param boolean $all_levels Show all child levels or just one level. + * @param string $sort_by The column by which to sort. + * @param integer $sort_dir The direction by which to sort: + * 0 - ascending + * 1 - descending + * @param boolean $message_view + * @param string $link_back A url to pass to the reply script which + * will be returned to after an insertion of + * a post. Useful in cases when this thread + * view is used in blocks to return to the + * original page rather than to Agora. + * @param string $base_url An alternative URL where edit/delete links + * point to. Mainly for api usage. Takes "%p" + * as a placeholder for the parent message ID. + * @param string $from The thread to start listing at. + * @param string $count The number of threads to return. + * @param boolean $nofollow Whether to set the 'rel="nofollow"' + * attribute on linked URLs in the messages. + */ + public function getThreads($thread_root = 0, + $all_levels = false, + $sort_by = 'message_timestamp', + $sort_dir = 0, + $message_view = false, + $link_back = '', + $base_url = null, + $from = null, + $count = null, + $nofollow = false) + { + /* Check read permissions */ + if (!$this->hasPermission(Horde_Perms::SHOW)) { + return PEAR::raiseError(sprintf(_("You don't have permission to read messages in forum %s."), $this->_forum_id)); + } + + /* Get messages data */ + $messages = $this->_getThreads($thread_root, $all_levels, $sort_by, $sort_dir, $message_view, $from, $count); + if ($messages instanceof PEAR_Error || empty($messages)) { + return $messages; + } + + /* Moderators */ + if (isset($this->_forum['moderators'])) { + $moderators = array_flip($this->_forum['moderators']); + } + + /* Set up the base urls for actions. */ + $view_url = Horde::applicationUrl('messages/index.php'); + if ($base_url) { + $edit_url = $base_url; + $del_url = Horde_Util::addParameter($base_url, 'delete', 'true'); + } else { + $edit_url = Horde::applicationUrl('messages/edit.php'); + $del_url = Horde::applicationUrl('messages/delete.php'); + } + + // Get needed prefs + $per_page = $GLOBALS['prefs']->getValue('thread_per_page'); + $view_bodies = $GLOBALS['prefs']->getValue('thread_view_bodies'); + $abuse_url = Horde::applicationUrl('messages/abuse.php'); + $hot_img = Horde::img('hot.png', _("Hot thread"), array('title' => _("Hot thread"))); + $new_img = Horde::img('required.png', _("New posts"), array('title' => _("New posts")), $GLOBALS['registry']->getImageDir('horde')); + $is_moderator = $this->hasPermission(Horde_Perms::DELETE); + + /* Loop through the threads and set up the array. */ + foreach ($messages as $id => &$message) { + + /* Add attachment link */ + if ($message['attachments']) { + $message['message_attachment'] = $this->getAttachmentLink($id); + } + + /* Get last message link */ + if ($thread_root == 0 && $message['last_message_id'] > 0) { + $url = Agora::setAgoraId($message['forum_id'], $message['last_message_id'], $view_url, $this->_scope); + $message['message_url'] = Horde::link($url); + $last_timestamp = $message['last_message_timestamp']; + } else { + $last_timestamp = $message['message_timestamp']; + } + + /* Check if thread is hot */ + if ($this->isHot($message['view_count'], $last_timestamp)) { + $message['hot'] = $hot_img; + } + + /* Check if has new posts since user last visit */ + if ($thread_root == 0 && $this->isNew($id, $last_timestamp)) { + $message['new'] = $new_img; + } + + /* Mark moderators */ + if (isset($this->_forum['moderators']) && array_key_exists($message['message_author'], $moderators)) { + $message['message_author_moderator'] = 1; + } + + /* Link to view the message. */ + $url = Agora::setAgoraId($message['forum_id'], $id, $view_url, $this->_scope); + $message['link'] = Horde::link($url, $message['message_subject'], '', '', '', $message['message_subject']); + + /* Set up indenting for threads. */ + if ($sort_by != 'message_thread') { + unset($message['indent'], $message['parent']); + + /* Links to pages */ + if ($thread_root == 0 && $message['message_seq'] > $per_page && $view_bodies == 2) { + $sub_pages = $message['message_seq'] / $per_page; + for ($i = 0; $i < $sub_pages; $i++) { + $page_title = sprintf(_("Page %d"), $i+1); + $message['pages'][] = Horde::link(Horde_Util::addParameter($url, 'thread_page', $i), $page_title, '', '', '', $page_title) . ($i+1) . ''; + } + } + } + + /* Button to post a reply to the message. */ + if (!$message['locked']) { + if ($base_url) { + $url = $base_url; + if (strpos($url, '%p') !== false) { + $url = str_replace('%p', $message['message_id'], $url); + } else { + $url = Horde_Util::addParameter($url, 'message_parent_id', $message['message_id']); + } + if (!empty($link_back)) { + $url = Horde_Util::addParameter($url, 'url', $link_back); + } + } else { + $url = Agora::setAgoraId($message['forum_id'], $id, $view_url, $this->_scope); + } + $url = Horde_Util::addParameter($url, 'reply_focus', 1) . '#messageform'; + $message['reply'] = Horde::link($url, _("Reply to message"), '', '', '', _("Reply to message")) . _("Reply") . ''; + } + + /* Link to edit the message. */ + if ($thread_root > 0 && isset($this->_forum['moderators'])) { + $url = Agora::setAgoraId($message['forum_id'], $id, $abuse_url); + $message['actions'][] = Horde::link($url, _("Report as abuse")) . _("Report as abuse") . ''; + } + + if ($is_moderator) { + /* Link to edit the message. */ + $url = Agora::setAgoraId($message['forum_id'], $id, $edit_url, $this->_scope); + $message['actions'][] = Horde::link($url, _("Edit"), '', '', '', _("Edit message")) . _("Edit") . ''; + + /* Link to delete the message. */ + $url = Agora::setAgoraId($message['forum_id'], $id, $del_url, $this->_scope); + $message['actions'][] = Horde::link($url, _("Delete"), '', '', '', _("Delete message")) . _("Delete") . ''; + + /* Link to lock/unlock the message. */ + $url = Agora::setAgoraId($this->_forum_id, $id, Horde::applicationUrl('messages/lock.php'), $this->_scope); + $label = ($message['locked']) ? _("Unlock") : _("Lock"); + $message['actions'][] = Horde::link($url, $label, '', '', '', $label) . $label . ''; + + /* Link to move thread to another forum. */ + if ($this->_scope == 'agora') { + if ($message['message_thread'] == $id) { + $url = Agora::setAgoraId($this->_forum_id, $id, Horde::applicationUrl('messages/move.php'), $this->_scope); + $message['actions'][] = Horde::link($url, _("Move"), '', '', '', _("Move")) . _("Move") . ''; + + /* Link to merge a message thred with anoter thread. */ + $url = Agora::setAgoraId($this->_forum_id, $id, Horde::applicationUrl('messages/merge.php'), $this->_scope); + $message['actions'][] = Horde::link($url, _("Merge"), '', '', '', _("Merge")) . _("Merge") . ''; + } elseif ($message['message_thread'] != 0) { + + /* Link to split thread to two threads, from this message after. */ + $url = Agora::setAgoraId($this->_forum_id, $id, Horde::applicationUrl('messages/split.php'), $this->_scope); + $message['actions'][] = Horde::link($url, _("Split"), '', '', '', _("Split")) . _("Split") . ''; + } + } + } + } + + return $messages; + } + + /** + * Formats a message body. + * + * @param string $messages Messages to format + * @param string $sort_by List format order + * @param boolean $format Format messages body + * @param integer $thread_root Thread root + */ + protected function _formatThreads($messages, $sort_by = 'message_modifystamp', + $format = false, $thread_root = 0) + { + /* Loop through the threads and set up the array. */ + foreach ($messages as $id => &$message) { + $message['message_id'] = $id; + $message['message_author'] = htmlspecialchars($message['message_author']); + $message['message_subject'] = htmlspecialchars($this->convertFromDriver($message['message_subject']), ENT_COMPAT, Horde_Nls::getCharset()); + $message['message_date'] = $this->dateFormat($message['message_timestamp']); + if ($format) { + $message['body'] = $this->formatBody($this->convertFromDriver($message['body'])); + } + + // If we are on the top, thread id is message itself + if ($message['message_thread'] == 0) { + $message['message_thread'] = $id; + } + + /* Get last message */ + if ($thread_root == 0 && $message['last_message_id'] > 0) { + $message['last_message_date'] = $this->dateFormat($message['last_message_timestamp']); + } + + /* Set up indenting for threads. */ + if ($sort_by == 'message_thread') { + $indent = explode(':', $message['parents']); + $message['indent'] = count($indent) - 1; + $last = array_pop($indent); + if (!isset($messages[$last])) { + $message['indent'] = 1; + $last = null; + } + $message['parent'] = $last ? $last : null; + } + } + + return $messages; + } + + /** + * Formats a message body. + * + * @param string $body Text to format. + */ + public function formatBody($body) + { + static $filters, $filters_params; + + if ($filters == null) { + $filters = array('text2html', 'bbcode', 'highlightquotes', 'emoticons'); + $filters_params = array(array('parselevel' => Horde_Text_Filter_Text2html::MICRO), + array(), + array('citeblock' => true), + array('entities' => true)); + + // check bad words replacement + $config_dir = $GLOBALS['registry']->get('fileroot', 'agora') . '/config/'; + $config_file = 'words.php'; + if (file_exists($config_dir . $config_file)) { + if (!empty($GLOBALS['conf']['vhosts'])) { + $v_file = substr($config_file, 0, -4) . '-' . $GLOBALS['conf']['server']['name'] . '.php'; + if (file_exists($config_dir . $config_file)) { + $config_file = $v_file; + } + } + + $filters[] = 'words'; + $filters_params[] = array('words_file' => $config_dir . $config_file, + 'replacement' => false); + } + } + + if (($hasBBcode = strpos($body, '[')) !== false && + strpos($body, '[/', $hasBBcode) !== false) { + $filters_params[0]['parselevel'] = Horde_Text_Filter_Text2html::NOHTML; + } + + return Horde_Text_Filter::filter($body, $filters, $filters_params); + } + + /** + * Returns true if the message is hot. + */ + public function isHot($views, $last_post) + { + if (!$GLOBALS['conf']['threads']['track_views']) { + return false; + } + + return ($views > $GLOBALS['prefs']->getValue('threads_hot')) && $last_post > ($_SERVER['REQUEST_TIME'] - 86400); + } + + /** + * Returns true, has new posts since user last visit + */ + public function isNew($thread_id, $last_post) + { + if (!isset($_COOKIE['agora_viewed_threads']) || + ($pos1 = strpos($_COOKIE['agora_viewed_threads'], ':' . $thread_id . '|')) === false || + ($pos2 = strpos($_COOKIE['agora_viewed_threads'], '|', $pos1)) === false || + substr($_COOKIE['agora_viewed_threads'], $pos2+1, 10) > $last_post + ) { + return false; + } + + return true; + } + + /** + * Fetches a list of messages awaiting moderation. Selects all messages, + * irrespective of the thread root, which have the 'moderate' flag set in + * the attributes. + * + * @param string $sort_by The column by which to sort. + * @param integer $sort_dir The direction by which to sort: + * 0 - ascending + * 1 - descending + */ + public function getModerateList($sort_by, $sort_dir) + { + $sql = 'SELECT forum_id, forum_name FROM ' . $this->_forums_table . ' WHERE forum_moderated = ?'; + $params = array(1); + + /* Check permissions */ + if (Horde_Auth::isAdmin('agora:admin') || + ($GLOBALS['perms']->exists('agora:forums:' . $this->_scope) && + $GLOBALS['perms']->hasPermission('agora:forums:' . $this->_scope, Horde_Auth::getAuth(), Horde_Perms::DELETE))) { + $sql .= ' AND scope = ? '; + $params[] = $this->_scope; + } else { + // Get only author forums + $sql .= ' AND scope = ? AND author = ?'; + $params[] = $this->_scope; + $params[] = Horde_Auth::getAuth(); + } + + /* Get moderate forums and their names */ + $forums_list = $this->_db->getAssoc($sql, null, $params, null, MDB2_FETCHMODE_ASSOC, false); + if ($forums_list instanceof PEAR_Error || empty($forums_list)) { + return $forums_list; + } + + /* Get message waiting for approval */ + $sql = 'SELECT message_id, forum_id, message_subject, message_author, ' + . 'body, message_timestamp, attachments FROM ' . $this->_threads_table . ' WHERE forum_id IN (' + . implode(',', array_keys($forums_list)) . ')' + . ' AND approved = ? ORDER BY ' . $sort_by . ' ' + . ($sort_dir ? 'DESC' : 'ASC'); + + $messages = $this->_db->getAssoc($sql, null, array(0)); + if ($messages instanceof PEAR_Error) { + return $messages; + } + + /* Loop through the messages and set up the array. */ + $approve_url = Horde_Util::addParameter(Horde::applicationUrl('moderate.php'), 'approve', true); + $del_url = Horde::applicationUrl('messages/delete.php'); + foreach ($messages as $id => &$message) { + $message['forum_name'] = $this->convertFromDriver($forums_list[$message['forum_id']]); + $message['message_id'] = $id; + $message['message_author'] = htmlspecialchars($message['message_author']); + $message['message_subject'] = htmlspecialchars($this->convertFromDriver($message['message_subject']), ENT_COMPAT, Horde_Nls::getCharset()); + $message['message_body'] = Horde_Text_Filter::filter($this->convertFromDriver($message['body']), 'highlightquotes'); + if ($message['attachments']) { + $message['message_attachment'] = $this->getAttachmentLink($id); + } + $message['message_date'] = $this->dateFormat($message['message_timestamp']); + } + + return $messages; + } + + /** + * Get banned users from the current forum + */ + public function getBanned() + { + $perm_name = 'agora:forums:' . $this->_scope . ':' . $this->_forum_id; + if (!$GLOBALS['perms']->exists($perm_name)) { + return array(); + } + + $forum_perm = $GLOBALS['perms']->getPermission($perm_name); + if (!($forum_perm instanceof Horde_Perms_Permission)) { + return $forum_perm; + } + + $permissions = $forum_perm->getUserPermissions(); + if (empty($permissions)) { + return $permissions; + } + + // Filter users moderators + $filter = Horde_Perms::EDIT | Horde_Perms::DELETE; + foreach ($permissions as $user => $level) { + if ($level & $filter) { + unset($permissions[$user]); + } + } + + return $permissions; + } + + /** + * Ban user on a specific forum. + * + * @param string $user Moderator username. + * @param integer $forum_id Forum to add moderator to. + * @param string $action Action to peform ('add' or 'delete'). + */ + public function updateBan($user, $forum_id = null, $action = 'add') + { + global $perms; + + if ($forum_id == null) { + $forum_id = $this->_forum_id; + } + + $perm_name = 'agora:forums:' . $this->_scope . ':' . $forum_id; + if (!$perms->exists($perm_name)) { + $forum_perm = &$perms->newPermission($perm_name); + $perms->addPermission($forum_perm); + } else { + $forum_perm = $perms->getPermission($perm_name); + if ($forum_perm instanceof PEAR_Error) { + return $forum_perm; + } + } + + if ($action == 'add') { + // Allow to only read posts + $forum_perm->removeUserPermission($user, Horde_Perms::ALL, true); + $forum_perm->addUserPermission($user, Horde_Perms::READ, true); + } else { + // Remove all acces to user + $forum_perm->removeUserPermission($user, Horde_Perms::ALL, true); + } + + return true; + } + + /** + * Updates forum moderators. + * + * @param string $moderator Moderator username. + * @param integer $forum_id Forum to add moderator to. + * @param string $action Action to peform ('add' or 'delete'). + */ + public function updateModerator($moderator, $forum_id = null, $action = 'add') + { + global $perms; + + if ($forum_id == null) { + $forum_id = $this->_forum_id; + } + + switch ($action) { + case 'add': + $sql = 'INSERT INTO agora_moderators (forum_id, horde_uid) VALUES (?, ?)'; + break; + + case 'delete': + $sql = 'DELETE FROM agora_moderators WHERE forum_id = ? AND horde_uid = ?'; + break; + } + + $statement = $this->_write_db->prepare($sql); + if ($statement instanceof PEAR_Error) { + return $statement; + } + + $result = $statement->execute(array($forum_id, $moderator)); + $statement->free(); + if ($result instanceof PEAR_Error) { + return $result; + } + + /* Update permissions*/ + $perm_name = 'agora:forums:' . $this->_scope . ':' . $forum_id; + if (!$perms->exists($perm_name)) { + $forum_perm = &$perms->newPermission($perm_name); + $perms->addPermission($forum_perm); + } else { + $forum_perm = $perms->getPermission($perm_name); + if ($forum_perm instanceof PEAR_Error) { + return $forum_perm; + } + } + + switch ($action) { + case 'add': + $forum_perm->addUserPermission($moderator, Horde_Perms::DELETE, true); + break; + + case 'delete': + $forum_perm->removeUserPermission($moderator, Horde_Perms::DELETE, true); + break; + } + + $this->_cache->expire('agora_forum_' . $forum_id, $GLOBALS['conf']['cache']['default_lifetime']); + } + + /** + * Approves one or more ids. + * + * @param string $action Whether to 'approve' or 'delete' messages. + * @param array $ids Array of message IDs. + * + * @return mixed Returns true if successful or otherwise a PEAR_Error. + */ + public function moderate($action, $ids) + { + switch ($action) { + case 'approve': + + // Get message thread to expire cache + $sql = 'SELECT message_thread FROM ' . $this->_threads_table + . ' WHERE message_id IN (' . implode(',', $ids) . ')'; + $threads = $this->_db->getCol($sql); + $this->_updateCacheState($threads); + + $sql = 'UPDATE ' . $this->_threads_table . ' SET approved = 1' + . ' WHERE message_id IN (' . implode(',', $ids) . ')'; + $this->_write_db->query($sql); + + // Save original forum_id for later resetting + $orig_forum_id = $this->_forum_id; + foreach ($ids as $message_id) { + // Update cached message and thread counts + $message = $this->getMessage($message_id); + $this->_forum_id = $message['forum_id']; + + // Update cached last poster + $this->_lastInForum($this->_forum_id); + $this->_forumSequence($this->_forum_id, 'message', '+'); + if (!empty($message['parents'])) { + $this->_sequence($message['message_thread'], '+'); + $this->_lastInThread($message['message_thread'], $message_id, $message['message_author'], $_SERVER['REQUEST_TIME']); + } else { + $this->_forumSequence($this->_forum_id, 'thread', '+'); + } + + // Send the new post to the distribution address + Agora::distribute($message_id); + } + + // Restore original forum_id + $this->_forum_id = $orig_forum_id; + break; + + case 'delete': + foreach ($ids as $id) { + $this->deleteMessage($id); + } + break; + } + } + + /** + * Returns the number of replies on a thread, or threads in a forum + * + * @param integer $thread_root Thread to count. + * + * @return integer The number of messages in thread or PEAR_Error on + * failure. + */ + public function countThreads($thread_root = 0) + { + $sql = 'SELECT COUNT(*) FROM ' . $this->_threads_table . ' WHERE message_thread = ?'; + if ($thread_root) { + $params = array($thread_root); + return $this->_db->getOne($sql, 'integer', array($thread_root)); + } else { + return $this->_db->getOne($sql . ' AND forum_id = ?', 'integer', array(0, $this->_forum_id)); + } + } + + /** + * Returns the number of all messages (threads and replies) in a forum + * + * @return integer The number of messages in forum or PEAR_Error on + * failure. + */ + public function countMessages() + { + $sql = 'SELECT COUNT(*) FROM ' . $this->_threads_table . ' WHERE forum_id = ?'; + return $this->_db->getOne($sql, null, array($this->_forum_id)); + } + + /** + * Returns a table showing the specified message list. + * + * @param array $threads A hash with the thread messages as + * returned by {@link + * Agora_Messages::getThreads}. + * @param array $col_headers A hash with the column headers. + * @param boolean $bodies Display the message bodies? + * @param string $template_file Template to use. + * + * @return string The rendered message table. + */ + public function getThreadsUI($threads, $col_headers, $bodies = false, + $template_file = false) + { + if (!count($threads)) { + return ''; + } + + /* Render threaded lists with Horde_Tree. */ + $current = key($threads); + if (!$template_file && isset($threads[$current]['indent'])) { + $tree = Horde_Tree::factory('threads', 'html'); + $tree->setOption(array('multiline' => $bodies, + 'lines' => !$bodies)); + $tree->setHeader(array( + array('html' => '' . $col_headers['message_thread'] . '', + 'width' => '50%', + 'class' => $col_headers['message_thread_class_plain']), + array('html' => '' . $col_headers['message_author'] . '', + 'width' => '25%', + 'class' => $col_headers['message_author_class_plain']), + array('html' => '' . $col_headers['message_timestamp'] . '', + 'width' => '24%', + 'class' => $col_headers['message_timestamp_class_plain']))); + + foreach ($threads as &$thread) { + if ($bodies) { + $text = '' . $thread['message_subject'] . '['; + if (isset($thread['reply'])) { + $text .= ' ' . $thread['reply']; + } + if (!empty($thread['actions'])) { + $text .= ', ' . implode(', ', $thread['actions']); + } + $text .= ']
' . + str_replace(array("\r", "\n"), '', $thread['body'] . ((isset($thread['message_attachment'])) ? $thread['message_attachment'] : '')); + } else { + $text = '' . $thread['link'] . $thread['message_subject'] . ' '; + if (isset($thread['actions'])) { + $text .= '[' . implode(', ', $thread['actions']) . ']'; + } + } + + $tree->addNode($thread['message_id'], + $thread['parent'], + $text, + $thread['indent'], + true, + array('icon' => '', + 'class' => 'linedRow'), + array($thread['message_author'], + $thread['message_date'])); + } + + return $tree->getTree(true); + } + + /* Set up the thread template tags. */ + $view = new Agora_View(); + $view->threads_list = $threads; + $view->col_headers = $col_headers; + $view->thread_view_bodies = $bodies; + + /* Render template. */ + if (!$template_file) { + $template_file = 'messages/threads.html.php'; + } + + return $view->render($template_file); + } + + /** + */ + public function getThreadRoot($message_id) + { + $sql = 'SELECT message_thread FROM ' . $this->_threads_table . ' WHERE message_id = ?'; + $thread_id = $this->_db->getOne($sql, null, array($message_id)); + return $thread_id ? $thread_id : $message_id; + } + + /** + */ + public function setThreadLock($message_id, $lock) + { + $sql = 'UPDATE ' . $this->_threads_table . ' SET locked = ' . (int)$lock + . ' WHERE message_id = ' . (int)$message_id . ' OR message_thread = ' . (int)$message_id; + return $this->_write_db->query($sql); + } + + /** + * @return boolean + */ + public function isThreadLocked($message_id) + { + $sql = 'SELECT message_thread FROM ' . $this->_threads_table . ' WHERE message_id = ?'; + $thread = $this->_db->getOne($sql, null, array($message_id)); + + return $this->_db->getOne('SELECT locked FROM ' . $this->_threads_table . ' WHERE message_id = ?', + null, array($thread)); + } + + /** + */ + public function getThreadActions() + { + /* Actions. */ + $actions = array(); + + $url = Agora::setAgoraId($this->_forum_id, null, Horde::applicationUrl('messages/edit.php')); + if ($this->hasPermission(Horde_Perms::EDIT)) { + $actions[] = array('url' => $url, 'label' => _("Post message")); + } + + if ($this->hasPermission(Horde_Perms::DELETE)) { + if ($this->_scope == 'agora') { + $url = Agora::setAgoraId($this->_forum_id, null, Horde::applicationUrl('editforum.php')); + $actions[] = array('url' => $url, 'label' => _("Edit Forum")); + } + $url = Agora::setAgoraId($this->_forum_id, null, Horde::applicationUrl('deleteforum.php'), $this->_scope); + $actions[] = array('url' => $url, 'label' => _("Delete Forum")); + $url = Agora::setAgoraId($this->_forum_id, null, Horde::applicationUrl('ban.php'), $this->_scope); + $actions[] = array('url' => $url, 'label' => _("Ban")); + } + + return $actions; + } + + /** + */ + public function getForm($vars, $title, $editing = false, $new_forum = false) + { + global $conf; + + require_once AGORA_BASE . '/lib/Forms/Message.php'; + $form = new MessageForm($vars, $title); + $form->setButtons($editing ? _("Save") : _("Post")); + $form->addHidden('', 'url', 'text', false); + + /* Figure out what to do with forum IDs. */ + if ($new_forum) { + /* This is a new forum to be created, create the var to hold the + * full path for the new forum. */ + $form->addHidden('', 'new_forum', 'text', false); + } else { + /* This is an existing forum so create the forum ID variable. */ + $form->addHidden('', 'forum_id', 'int', false); + } + + $form->addHidden('', 'scope', 'text', false); + $form->addHidden('', 'message_id', 'int', false); + $form->addHidden('', 'message_parent_id', 'int', false); + + if (!Horde_Auth::getAuth()) { + $form->addVariable(_("From"), 'posted_by', 'text', true); + } + + /* We are replaying, so display the quote button */ + if ($vars->get('message_parent_id')) { + $desc = ''; + $form->addVariable(_("Subject"), 'message_subject', 'text', true, false, $desc); + $form->addHidden('', 'message_body_old', 'longtext', false); + } else { + $form->addVariable(_("Subject"), 'message_subject', 'text', true); + } + + $form->addVariable(_("Message"), 'message_body', 'longtext', true); + + /* Check if an attachment is available and set variables for deleting + * and previewing. */ + if ($vars->get('attachment_preview')) { + $form->addVariable(_("Delete the existing attachment?"), 'attachment_delete', 'boolean', false); + $form->addVariable(_("Current attachment"), 'attachment_preview', 'html', false); + } + + if ($this->allowAttachments()) { + $form->addVariable(_("Attachment"), 'message_attachment', 'file', false); + } + + if (!empty($conf['forums']['captcha']) && !Horde_Auth::getAuth()) { + $form->addVariable(_("Spam protection"), 'captcha', 'figlet', true, null, null, array(Agora::getCAPTCHA(!$form->isSubmitted()), $conf['forums']['figlet_font'])); + } + + return $form; + } + + /** + * Formats time according to user preferences. + * + * @param int $timestamp Message timestamp. + * + * @return string Formatted date. + */ + public function dateFormat($timestamp) + { + return strftime($GLOBALS['prefs']->getValue('date_format'), $timestamp) + . ' ' + . (date($GLOBALS['prefs']->getValue('twentyFour') ? 'G:i' : 'g:ia', $timestamp)); + } + + /** + * Logs a message view. + * + * @return boolean True, if the view was logged, false if the message was aleredy seen + */ + public function logView($thread_id) + { + if (!$GLOBALS['conf']['threads']['track_views']) { + return false; + } + + if ($GLOBALS['browser']->isRobot()) { + return false; + } + + /* We already read this thread? */ + if (isset($_COOKIE['agora_viewed_threads']) && + strpos($_COOKIE['agora_viewed_threads'], ':' . $thread_id . '|') !== false) { + return false; + } + + /* Rembember when we see a thread */ + if (!isset($_COOKIE['agora_viewed_threads'])) { + $_COOKIE['agora_viewed_threads'] = ':'; + } + $_COOKIE['agora_viewed_threads'] .= $thread_id . '|' . $_SERVER['REQUEST_TIME'] . ':'; + + setcookie('agora_viewed_threads', $_COOKIE['agora_viewed_threads'], $_SERVER['REQUEST_TIME']+22896000, + $GLOBALS['conf']['cookie']['path'], $GLOBALS['conf']['cookie']['domain'], + $GLOBALS['conf']['use_ssl'] == 1 ? 1 : 0); + + /* Update the count */ + $sql = 'UPDATE ' . $this->_threads_table . ' SET view_count = view_count + 1 WHERE message_id = ' . (int)$thread_id; + $result = $this->_write_db->query($sql); + if ($result instanceof PEAR_Error) { + return $result; + } + + return true; + } + + /** + * Constructs message attachments link. + */ + public function getAttachmentLink($message_id) + { + if (!$this->allowAttachments()) { + return ''; + } + + $sql = 'SELECT file_id, file_name, file_size, file_type FROM agora_files WHERE message_id = ?'; + $files = $this->_db->getAssoc($sql, null, array($message_id)); + if ($files instanceof PEAR_Error || empty($files)) { + Horde::logMessage($files, __FILE__, __LINE__, PEAR_LOG_ERR); + return $files; + } + + global $mime_drivers, $mime_drivers_map; + $result = Horde::loadConfiguration('mime_drivers.php', array('mime_drivers', 'mime_drivers_map'), 'horde'); + extract($result); + require_once 'Horde/MIME/Part.php'; + require_once 'Horde/MIME/Viewer.php'; + require_once 'Horde/MIME/Magic.php'; + require_once 'Horde/MIME/Contents.php'; + + /* Make sure we have the tooltips javascript. */ + Horde::addScriptFile('tooltips.js', 'horde', true); + + /* Constuct the link with a tooltip for further info on the download. */ + $html = '
'; + $view_url = Horde::applicationUrl('view.php'); + foreach ($files as $file_id => $file) { + $mime_icon = MIME_Viewer::getIcon($file['file_type']); + $title = _("download") . ': ' . $file['file_name']; + $tooltip = $title . "\n" . sprintf(_("size: %s"), $this->formatSize($file['file_size'])) . "\n" . sprintf(_("type: %s"), $file['file_type']); + $url = Horde_Util::addParameter($view_url, array('forum_id' => $this->_forum_id, + 'message_id' => $message_id, + 'file_id' => $file_id, + 'file_name' => $file['file_name'], + 'file_type' => $file['file_type'])); + $html .= Horde::linkTooltip($url, $title, '', '', '', $tooltip) . + Horde::img($mime_icon, $title, 'align="middle"', '') . ' ' . $file['file_name'] . '  
'; + } + + return $html; + } + + /** + * Formats file size. + * + * @param int $filesize + * + * @return string Formatted filesize. + */ + public function formatSize($filesize) + { + $units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'); + $pass = 0; // set zero, for Bytes + while($filesize >= 1024) { + $filesize /= 1024; + $pass++; + } + + return round($filesize, 2) . ' ' . $units[$pass]; + } + + + /** + * Fetches a forum data. + * + * @param integer $forum_id The ID of the forum to fetch. + * + * @return array The forum hash or a PEAR_Error on failure. + */ + public function getForum($forum_id = 0) + { + if (!$forum_id) { + $forum_id = $this->_forum_id; + } elseif ($forum_id instanceof PEAR_Error) { + return $forum_id; + } + + // Make the requested forum the current forum + $this->_forum_id = $forum_id; + + /* Check if we can read messages in this forum */ + if (!$this->hasPermission(Horde_Perms::SHOW, $forum_id)) { + return PEAR::raiseError(sprintf(_("You don't have permission to access messages in forum %s."), $forum_id)); + } + + $forum = $this->_cache->get('agora_forum_' . $forum_id, $GLOBALS['conf']['cache']['default_lifetime']); + if ($forum) { + return unserialize($forum); + } + + $sql = 'SELECT forum_id, forum_name, scope, active, forum_description, ' + . 'forum_parent_id, forum_moderated, forum_attachments, ' + . 'forum_distribution_address, author, message_count, thread_count ' + . 'FROM ' . $this->_forums_table . ' WHERE forum_id = ?'; + $forum = $this->_db->getRow($sql, null, array($forum_id)); + if ($forum instanceof PEAR_Error) { + return $forum; + } elseif (empty($forum)) { + return PEAR::raiseError(sprintf(_("Forum %s does not exist."), $forum_id)); + } + + $forum['forum_name'] = $this->convertFromDriver($forum['forum_name']); + $forum['forum_description'] = $this->convertFromDriver($forum['forum_description']); + $forum['forum_distribution_address'] = $this->convertFromDriver($forum['forum_distribution_address']); + + /* Get moderators */ + $sql = 'SELECT horde_uid FROM agora_moderators WHERE forum_id = ?'; + $moderators = $this->_db->getCol($sql, null, array($forum_id)); + if ($moderators instanceof PEAR_Error) { + return $moderators; + } elseif (!empty($moderators)) { + $forum['moderators'] = $moderators; + } + + $this->_cache->set('agora_forum_' . $forum_id, serialize($forum)); + + return $forum; + } + + /** + * Returns the number of forums. + */ + public function countForums() + { + $sql = 'SELECT COUNT(*) FROM ' . $this->_forums_table . ' WHERE active = ? AND scope = ?'; + return $this->_db->getOne($sql, null, array(1, $this->_scope)); + } + + /** + * Fetches a list of forums. + * + * @param integer $root_forum The first level forum. + * @param boolean $formatted Whether to return the list formatted or raw. + * @param string $sort_by The column to sort by. + * @param integer $sort_dir Sort direction, 0 = ascending, + * 1 = descending. + * @param boolean $add_scope Add parent forum if forum for another + * scopelication. + * @param string $from The forum to start listing at. + * @param string $count The number of forums to return. + * + * @return mixed An array of forums or PEAR_Error on failure. + */ + public function getForums($root_forum = 0, $formatted = true, + $sort_by = 'forum_name', $sort_dir = 0, + $add_scope = false, $from = 0, $count = 0) + { + /* Get messages data */ + $forums = $this->_getForums($root_forum, $formatted, $sort_by, + $sort_dir, $add_scope, $from, $count); + if ($forums instanceof PEAR_Error || empty($forums) || !$formatted) { + return $forums; + } + + $moderate = array(); + $user = Horde_Auth::getAuth(); + $edit_url = Horde::applicationUrl('messages/edit.php'); + $editforum_url = Horde::applicationUrl('editforum.php'); + $delete_url = Horde::applicationUrl('deleteforum.php'); + + foreach ($forums as $forum_id => &$forum) { + if (!$this->hasPermission(Horde_Perms::SHOW, $forum_id, $forum['scope'])) { + unset($forums[$forum_id]); + continue; + } + + $forum['indentn'] = 0; + $forum['indent'] = ''; + if (!$this->hasPermission(Horde_Perms::READ, $forum_id, $forum['scope'])) { + continue; + } + + $forum['url'] = Agora::setAgoraId($forum_id, null, Horde::applicationUrl('threads.php'), $forum['scope'], true); + $forum['message_count'] = number_format($forum['message_count']); + $forum['thread_count'] = number_format($forum['thread_count']); + + if ($forum['last_message_id']) { + $forum['last_message_date'] = $this->dateFormat($forum['last_message_timestamp']); + $forum['last_message_url'] = Agora::setAgoraId($forum_id, $forum['last_message_id'], Horde::applicationUrl('messages/index.php'), $forum['scope'], true); + } + + $forum['actions'] = array(); + + /* Post message button. */ + + if ($this->hasPermission(Horde_Perms::EDIT, $forum_id, $forum['scope'])) { + /* New Post forum button. */ + $url = Agora::setAgoraId($forum_id, null, $edit_url, $forum['scope'], true); + $forum['actions'][] = Horde::link($url, _("Post message")) . _("New Post") . ''; + + if (Horde_Auth::isAdmin('agora:admin')) { + /* Edit forum button. */ + $url = Agora::setAgoraId($forum_id, null, $editforum_url, $forum['scope'], true); + $forum['actions'][] = Horde::link($url, _("Edit forum")) . _("Edit") . ''; + } + } + + if (Horde_Auth::isAdmin('agora:admin')) { + /* Delete forum button. */ + $url = Agora::setAgoraId($forum_id, null, $delete_url, $forum['scope'], true); + $forum['actions'][] = Horde::link($url, _("Delete forum")) . _("Delete") . ''; + } + + /* User is a moderator */ + if (isset($forum['moderators']) && in_array($user, $forum['moderators'])) { + $moderate[] = $forum_id; + } + } + + /* If needed, display moderate link */ + if (!empty($moderate)) { + $sql = 'SELECT forum_id, COUNT(forum_id) FROM ' . $this->_threads_table + . ' WHERE forum_id IN (' . implode(',', $moderate) . ') AND approved = ?' + . ' GROUP BY forum_id'; + $unapproved = $this->_db->getAssoc($sql, null, array(0), null, MDB2_FETCHMODE_ASSOC, false); + if ($unapproved instanceof PEAR_Error) { + return $unapproved; + } + + $url = Horde::link(Horde::applicationUrl('moderate.php', true), _("Moderate")) . _("Moderate") . ''; + foreach ($unapproved as $forum_id => $count) { + $forum['actions'][] = $url . ' (' . $count . ')' ; + } + } + + return $forums; + } + + /** + * Fetches a list of forums. + * + * @param integer $root_forum The first level forum. + * @param boolean $formatted Whether to return the list formatted or raw. + * @param string $sort_by The column to sort by. + * @param integer $sort_dir Sort direction, 0 = ascending, + * 1 = descending. + * @param boolean $add_scope Add parent forum if forum for another + * scopelication. + * @param string $from The forum to start listing at. + * @param string $count The number of forums to return. + * + * @return mixed An array of forums or PEAR_Error on failure. + */ + protected function _getForums($root_forum = 0, $formatted = true, + $sort_by = 'forum_name', $sort_dir = 0, + $add_scope = false, $from = 0, $count = 0) + { + return array(); + } + + /** + * Fetches a list of forums. + * + * @param integer $forums Frorms to format + * @param boolean $formatted Whether to return the list formatted or raw. + * + * @return mixed An array of forums or PEAR_Error on failure. + */ + protected function _formatForums($forums, $formatted = true) + { + foreach (array_keys($forums) as $forum_id) { + $forums[$forum_id]['forum_name'] = $this->convertFromDriver($forums[$forum_id]['forum_name']); + if ($formatted) { + $forums[$forum_id]['forum_description'] = $this->convertFromDriver($forums[$forum_id]['forum_description']); + } + } + + if ($formatted) { + /* Get moderators */ + $sql = 'SELECT forum_id, horde_uid' + . ' FROM agora_moderators WHERE forum_id IN (' . implode(',', array_keys($forums)) . ')'; + $moderators = $this->_db->getAssoc($sql, null, null, null, MDB2_FETCHMODE_ASSOC, false, true); + if ($moderators instanceof PEAR_Error) { + return $moderators; + } + + foreach ($forums as $forum_id => $forum) { + if (isset($moderators[$forum_id])) { + $forums[$forum_id]['moderators'] = $moderators[$forum_id]; + } + } + } + + return $forums; + } + + /** + * Get forums ids and titles + * + * @return array An array of forums and form names. + */ + public function getBareForums() + { + return array(); + } + + /** + * Creates a new forum. + * + * @param string $forum_name Forum name. + * @param string $forum_owner Forum owner. + * + * @return integer ID of the new generated forum. + */ + public function newForum($forum_name, $owner) + { + if (empty($forum_name)) { + return PEAR::raiseError(_("Cannot create a forum with an empty name.")); + } + + $forum_id = $this->_write_db->nextId('agora_forums'); + $sql = 'INSERT INTO ' . $this->_forums_table . ' (forum_id, scope, forum_name, active, author) VALUES (?, ?, ?, ?, ?)'; + $statement = $this->_write_db->prepare($sql); + if ($statement instanceof PEAR_Error) { + return $statement; + } + + $result = $statement->execute(array($forum_id, $this->_scope, $this->convertToDriver($forum_name), 1, $owner)); + $statement->free(); + + if ($result instanceof PEAR_Error) { + return $result; + } + + return $forum_id; + } + + /** + * Saves a forum, either creating one if no forum ID is given or updating + * an existing one. + * + * @param array $info The forum information to save consisting of: + * forum_id + * forum_author + * forum_parent_id + * forum_name + * forum_moderated + * forum_description + * forum_attachments + * + * @return mixed The forum ID on success or PEAR_Error on failure. + */ + public function saveForum($info) + { + if (empty($info['forum_id'])) { + if (empty($info['author'])) { + $info['author'] = Horde_Auth::getAuth(); + } + $info['forum_id'] = $this->newForum($info['forum_name'], $info['author']); + if ($info['forum_id'] instanceof PEAR_Error) { + return $info['forum_id']; + } + } + + $sql = 'UPDATE ' . $this->_forums_table . ' SET forum_name = ?, forum_parent_id = ?, ' + . 'forum_description = ?, forum_moderated = ?, ' + . 'forum_attachments = ?, forum_distribution_address = ? ' + . 'WHERE forum_id = ?'; + + $params = array($this->convertToDriver($info['forum_name']), + (int)$info['forum_parent_id'], + $this->convertToDriver($info['forum_description']), + (int)$info['forum_moderated'], + isset($info['forum_attachments']) ? (int)$info['forum_attachments'] : abs($GLOBALS['conf']['forums']['enable_attachments']), + isset($info['forum_distribution_address']) ? $info['forum_distribution_address'] : '', + $info['forum_id']); + + Horde::logMessage('SQL Query by Agora_Message::saveForum(): ' . $sql, __FILE__, __LINE__, PEAR_LOG_DEBUG); + $statement = $this->_write_db->prepare($sql); + if ($statement instanceof PEAR_Error) { + return $statement; + } + + $result = $statement->execute($params); + $statement->free(); + + if ($result instanceof PEAR_Error) { + return $result; + } + + $this->_updateCacheState(0); + $this->_cache->expire('agora_forum_' . $info['forum_id'], $GLOBALS['conf']['cache']['default_lifetime']); + + return $info['forum_id']; + } + + /** + * Deletes a forum, any subforums that are present and all messages + * contained in the forum and subforums. + * + * @param integer $forum_id The ID of the forum to delete. + * + * @return mixed True on success or PEAR_Error on failure. + */ + public function deleteForum($forum_id) + { + $result = $this->deleteThread(); + if ($result instanceof PEAR_Error) { + return $result; + } + + /* Delete the forum itself. */ + $result = $this->_write_db->query('DELETE FROM ' . $this->_forums_table . ' WHERE forum_id = ' . (int)$forum_id); + if ($result instanceof PEAR_Error) { + return $result; + } + + return true; + } + + /** + * Searches forums for matching threads or posts. + * + * @param array $filter Hash of filter criteria: + * 'forums' => Array of forum IDs to search. If not + * present, searches all forums. + * 'keywords' => Array of keywords to search for. If not + * present, finds all posts/threads. + * 'allkeywords' => Boolean specifying whether to find all + * keywords; otherwise, wants any keyword. + * False if not supplied. + * 'message_author' => Name of author to find posts by. If not + * present, any author. + * 'searchsubjects' => Boolean specifying whether to search + * subjects. True if not supplied. + * 'searchcontents' => Boolean specifying whether to search + * post contents. False if not supplied. + * @param string $sort_by The column by which to sort. + * @param integer $sort_dir The direction by which to sort: + * 0 - ascending + * 1 - descending + * @param string $from The thread to start listing at. + * @param string $count The number of threads to return. + */ + public function search($filter, $sort_by = 'message_subject', $sort_dir = 0, + $from = 0, $count = 0) + { + if (!isset($filter['allkeywords'])) { + $filter['allkeywords'] = false; + } + if (!isset($filter['searchsubjects'])) { + $filter['searchsubjects'] = true; + } + if (!isset($filter['searchcontents'])) { + $filter['searchcontents'] = false; + } + + /* Select forums ids to search in */ + $sql = 'SELECT forum_id, forum_name FROM ' . $this->_forums_table . ' WHERE '; + if (empty($filter['forums'])) { + $sql .= ' active = ? AND scope = ?'; + $forums = $this->_db->getAssoc($sql, null, array(1, $this->_scope)); + } else { + $sql .= ' forum_id IN (' . implode(',', $filter['forums']) . ')'; + $forums = $this->_db->getAssoc($sql); + } + if ($forums instanceof PEAR_Error) { + return $forums; + } + + /* Build query */ + $sql = ' FROM ' . $this->_threads_table . ' WHERE forum_id IN (' . implode(',', array_keys($forums)) . ')'; + + if (!empty($filter['keywords'])) { + $sql .= ' AND ('; + if ($filter['searchsubjects']) { + $keywords = ''; + foreach ($filter['keywords'] as $keyword) { + if (!empty($keywords)) { + $keywords .= $filter['allkeywords'] ? ' AND ' : ' OR '; + } + $keywords .= 'message_subject LIKE ' . $this->_db->quote('%' . $keyword . '%'); + } + $sql .= '(' . $keywords . ')'; + } + if ($filter['searchcontents']) { + if ($filter['searchsubjects']) { + $sql .= ' OR '; + } + $keywords = ''; + foreach ($filter['keywords'] as $keyword) { + if (!empty($keywords)) { + $keywords .= $filter['allkeywords'] ? ' AND ' : ' OR '; + } + $keywords .= 'body LIKE ' . $this->_db->quote('%' . $keyword . '%'); + } + $sql .= '(' . $keywords . ')'; + } + $sql .= ')'; + } + + if (!empty($filter['author'])) { + $sql .= ' AND message_author = ' . $this->_db->quote(Horde_String::lower($filter['author'], Horde_Nls::getCharset())); + } + + /* Sort by result column. */ + $sql .= ' ORDER BY ' . $sort_by . ' ' . ($sort_dir ? 'DESC' : 'ASC'); + + /* Slice directly in DB. */ + if ($count) { + $total = $this->_db->getOne('SELECT COUNT(*) ' . $sql); + $this->_db->setLimit($count, $from); + } + + $sql = 'SELECT message_id, forum_id, message_subject, message_author, message_timestamp ' . $sql; + $messages = $this->_db->query($sql); + if ($messages instanceof PEAR_Error) { + return $messages; + } + if (empty($messages)) { + return array('results' => array(), 'total' => 0); + } + + $results = array(); + $msg_url = Horde::applicationUrl('messages/index.php'); + $forum_url = Horde::applicationUrl('threads.php'); + while ($message = $messages->fetchRow()) { + if (!isset($results[$message['forum_id']])) { + $index = array('agora' => $message['forum_id'], 'scope' => $this->_scope); + $results[$message['forum_id']] = array('forum_id' => $message['forum_id'], + 'forum_url' => Horde_Util::addParameter($forum_url, $index), + 'forum_name' => $this->convertFromDriver($forums[$message['forum_id']]), + 'messages' => array()); + } + $index = array('agora' => $message['forum_id']. '.' . $message['message_id'], 'scope' => $this->_scope); + $results[$message['forum_id']]['messages'][] = array( + 'message_id' => $message['message_id'], + 'message_subject' => htmlspecialchars($this->convertFromDriver($message['message_subject'])), + 'message_author' => $message['message_author'], + 'message_date' => $this->dateFormat($message['message_timestamp']), + 'message_url' => Horde_Util::addParameter($msg_url, $index)); + } + + return array('results' => $results, 'total' => $total); + } + + /** + * Finds out if the user has the specified rights to the messages forum. + * + * @param integer $perm The permission level needed for access. + * @param integer $forum_id Forum to check permissions for. + * @param string $scope Application scope to use. + * + * @return boolean True if the user has the specified permissions. + */ + public function hasPermission($perm = Horde_Perms::READ, $forum_id = null, $scope = null) + { + global $perms; + + // Allow all admins + if (($forum_id === null && isset($this->_forum['author']) && $this->_forum['author'] == Horde_Auth::getAuth()) || + Horde_Auth::isAdmin('agora:admin')) { + return true; + } + + // Allow forum author + if ($forum_id === null) { + $forum_id = $this->_forum_id; + } + + if ($scope === null) { + $scope = $this->_scope; + } + + if (!$perms->exists('agora:forums:' . $scope) && + !$perms->exists('agora:forums:' . $scope . ':' . $forum_id)) { + return ($perm & Horde_Perms::DELETE) ? false : true; + } + + return $perms->hasPermission('agora:forums:' . $scope, Horde_Auth::getAuth(), $perm) || + $perms->hasPermission('agora:forums:' . $scope . ':' . $forum_id, Horde_Auth::getAuth(), $perm); + } + + /** + * Converts a value from the driver's charset to the default charset. + * + * @param mixed $value A value to convert. + * + * @return mixed The converted value. + */ + public function convertFromDriver($value) + { + return Horde_String::convertCharset($value, $this->_params['charset']); + } + + /** + * Converts a value from the default charset to the driver's charset. + * + * @param mixed $value A value to convert. + * + * @return mixed The converted value. + */ + public function convertToDriver($value) + { + return Horde_String::convertCharset($value, Horde_Nls::getCharset(), $this->_params['charset']); + } + + /** + * Attempts to open a persistent connection to the SQL server. + * + * @return boolean True on success; exits (Horde::fatal()) on error. + */ + private function _connect() + { + require_once 'MDB2.php'; + + $this->_params = Horde::getDriverConfig('storage', 'sql'); + Horde::assertDriverConfig($this->_params, 'storage', + array('phptype', 'charset')); + + $charset = $this->_params['charset']; + unset($this->_params['charset']); + + $this->_write_db = MDB2::factory($this->_params); + if ($this->_write_db instanceof PEAR_Error) { + Horde::fatal($this->_write_db, __FILE__, __LINE__); + } + + if (!empty($params['splitread'])) { + $params = array_merge($this->_params, $this->_params['read']); + $this->_db = MDB2::factory($this->_params); + if ($this->_db instanceof PEAR_Error) { + Horde::fatal($this->_db, __FILE__, __LINE__); + } + } else { + /* Default to the same DB handle for the writer too. */ + $this->_db =& $this->_write_db; + } + + $this->_db->loadModule('Extended'); + if ($this->_db instanceof PEAR_Error) { + Horde::fatal($this->_db, __FILE__, __LINE__); + } + + $this->_db->setFetchMode(MDB2_FETCHMODE_ASSOC); + $this->_write_db->setOption('seqcol_name', 'id'); + $this->_db->setOption('portability', MDB2_PORTABILITY_ALL ^ MDB2_PORTABILITY_EMPTY_TO_NULL); + $this->_params['charset'] = $charset; + + return true; + } + + /** + * Increment namespace + */ + private function _updateCacheState($thread) + { + if (is_array($thread)) { + foreach ($thread as $id) { + $key = 'prefix_' . $this->_forum_id . '_' . $id; + $prefix = $this->_cache->get($key, $GLOBALS['conf']['cache']['default_lifetime']); + if ($prefix) { + $this->_cache->set($key, $prefix + 1); + } + } + } else { + $key = 'prefix_' . $this->_forum_id . '_' . $thread; + $prefix = $this->_cache->get($key, $GLOBALS['conf']['cache']['default_lifetime']); + if ($prefix) { + $this->_cache->set($key, $prefix + 1); + } else { + $this->_cache->set($key, 2); + } + } + } + + /** + * Append namespace to cache key + */ + private function _getCacheKey($key, $thread = 0) + { + static $prefix; + + if ($prefix == null) { + $prefix = $this->_cache->get('prefix_' . $this->_forum_id . '_' . $thread, + $GLOBALS['conf']['cache']['default_lifetime']); + if (!$prefix) { + $prefix = '1'; + } + } + + return 's_' . $prefix . '_' . $thread . '_' . $key; + } + + /** + * Get cache value + */ + protected function _getCache($key, $thread = 0) + { + $key = $this->_getCacheKey($key, $thread); + + return $this->_cache->get($key, $GLOBALS['conf']['cache']['default_lifetime']); + } + + /** + * Set cache value + */ + protected function _setCache($key, $value, $thread = 0) + { + $key = $this->_getCacheKey($key, $thread); + + return $this->_cache->set($key, $value); + } +} diff --git a/agora/lib/Messages/split_sql.php b/agora/lib/Messages/split_sql.php new file mode 100644 index 000000000..25b9bbfb1 --- /dev/null +++ b/agora/lib/Messages/split_sql.php @@ -0,0 +1,302 @@ + + * @package Agora + */ +class Agora_Messages_split_sql extends Agora_Messages { + + /** + * Constructor + */ + public function __construct($scope) + { + parent::__construct($scope); + + /* trick table name */ + if ($scope != 'agora') { + $this->_threads_table = 'agora_messages_' . $scope; + $this->_forums_table = 'agora_forums_' . $scope; + } + } + + /** + * Returns an ID for a given forum name. + * + * @param string $forum_name The full forum name. + * + * @return integer The ID of the forum. + */ + public function getForumId($forum_name) + { + static $ids = array(); + + if (!isset($ids[$forum_name])) { + $sql = 'SELECT forum_id FROM ' . $this->_forums_table . ' WHERE forum_name = ?'; + $ids[$forum_name] = $this->_db->getOne($sql, array('integer'), array($forum_name)); + } + + return $ids[$forum_name]; + } + + /** + * Get forums ids and titles + * + * @return array An array of forums and form names. + */ + public function getBareForums() + { + if ($this->_scope == 'agora') { + $sql = 'SELECT forum_id, forum_name FROM ' . $this->_forums_table; + } else { + $sql = 'SELECT forum_id, forum_description FROM ' . $this->_forums_table; + } + + return $this->_db->getAssoc($sql); + } + + /** + * Fetches a list of forums. + * + * @param integer $root_forum The first level forum. + * @param boolean $formatted Whether to return the list formatted or raw. + * @param string $sort_by The column to sort by. + * @param integer $sort_dir Sort direction, 0 = ascending, + * 1 = descending. + * @param boolean $add_scope Add parent forum if forum for another + * scopelication. + * @param string $from The forum to start listing at. + * @param string $count The number of forums to return. + * + * @return mixed An array of forums or PEAR_Error on failure. + */ + protected function _getForums($root_forum = 0, $formatted = true, + $sort_by = 'forum_name', $sort_dir = 0, + $add_scope = false, $from = 0, $count = 0) + { + $key = $this->_scope . ':' . $root_forum . ':' . $formatted . ':' + . $sort_by . ':' . $sort_dir . ':' . $add_scope . ':' . $from + . ':' . $count; + $forums = $this->_getCache($key); + if ($forums) { + return unserialize($forums); + } + + $sql = 'SELECT forum_id, forum_name'; + + if ($formatted) { + $sql .= ', scope, active, forum_description, forum_parent_id, ' + . 'forum_moderated, forum_attachments, message_count, thread_count, ' + . 'last_message_id, last_message_author, last_message_timestamp'; + } + + $sql .= ' FROM ' . $this->_forums_table . ' WHERE active = ? '; + $params = array(1); + + if ($root_forum != 0) { + $sql .= ' AND forum_parent_id = ? '; + $params[] = $root_forum; + } + + /* Sort by result colomn if possible */ + $sql .= ' ORDER BY '; + if ($sort_by == 'forum_name' || $sort_by == 'message_count') { + $sql .= $sort_by; + } else { + $sql .= 'forum_id'; + } + $sql .= ' ' . ($sort_dir ? 'DESC' : 'ASC'); + + /* Slice direcly in DB. */ + if ($count) { + $this->_db->setLimit($count, $from); + } + + $forums = $this->_db->getAssoc($sql, null, $params, null, MDB2_FETCHMODE_ASSOC, $formatted); + if ($forums instanceof PEAR_Error || empty($forums)) { + return $forums; + } + + $forums = $this->_formatForums($forums, $formatted); + + $this->_setCache($key, serialize($forums)); + + return $forums; + } + + /** + * Returns a list of threads. + * + * @param integer $thread_root Message at which to start the thread. + * If null get all forum threads + * @param boolean $all_levels Show all child levels or just one level. + * @param string $sort_by The column by which to sort. + * @param integer $sort_dir The direction by which to sort: + * 0 - ascending + * 1 - descending + * @param boolean $message_view + * @param string $from The thread to start listing at. + * @param string $count The number of threads to return. + */ + protected function _getThreads($thread_root = 0, + $all_levels = false, + $sort_by = 'message_modifystamp', + $sort_dir = 0, + $message_view = false, + $from = 0, + $count = 0) + { + /* Cache */ + $key = $this->_scope . ':' . $this->_forum_id . ':' . $thread_root . ':' . intval($all_levels) . ':' + . $sort_by . ':' . $sort_dir . ':' . intval($message_view) . ':' . intval($from) . ':' . intval($count); + $messages = $this->_getCache($key, $thread_root); + if ($messages) { + return unserialize($messages); + } + + $bind = $this->_buildThreadsQuery(null, $thread_root, $all_levels, $sort_by, + $sort_dir, $message_view, $from, $count); + + /* Slice direcly in DB. */ + if ($sort_by != 'message_thread' && $count) { + $this->_db->setLimit($count, $from); + } + + $messages = $this->_db->getAssoc($bind[0], null, $bind[1], null, MDB2_FETCHMODE_ASSOC, true); + if ($messages instanceof PEAR_Error) { + Horde::logMessage($messages, __FILE__, __LINE__, PEAR_LOG_ERR); + return $messages; + } + + $messages = $this->_formatThreads($messages, $sort_by, $message_view, $thread_root); + + $this->_setCache($key, serialize($messages), $thread_root); + + return $messages; + } + + /** + * Returns a list of threads. + * + * @param string $forum_owner Forum owner + * @param integer $thread_root Message at which to start the thread. + * If null get all forum threads + * @param boolean $all_levels Show all child levels or just one level. + * @param string $sort_by The column by which to sort. + * @param integer $sort_dir The direction by which to sort: + * 0 - ascending + * 1 - descending + * @param boolean $message_view + * @param string $from The thread to start listing at. + * @param string $count The number of threads to return. + */ + public function getThreadsByForumOwner($forum_owner, + $thread_root = 0, + $all_levels = false, + $sort_by = 'message_modifystamp', + $sort_dir = 0, + $message_view = false, + $from = 0, + $count = 0) + { + $bind = $this->_buildThreadsQuery($forum_owner, $thread_root, $all_levels, + $sort_by, $sort_dir, $message_view, $from, $count); + + if ($sort_by != 'message_thread' && $count) { + $this->_db->setLimit($count, $from); + } + + $messages = $this->_db->getAssoc($bind[0], null, $bind[1], null, MDB2_FETCHMODE_ASSOC, true); + if ($messages instanceof PEAR_Error) { + Horde::logMessage($messages, __FILE__, __LINE__, PEAR_LOG_ERR); + return $messages; + } + + return $this->_formatThreads($messages, $sort_by, $message_view, $thread_root); + } + + /** + * Build threads query. + * + * @param string $forum_owner Forum owner + * @param integer $thread_root Message at which to start the thread. + * If null get all forum threads + * @param boolean $all_levels Show all child levels or just one level. + * @param string $sort_by The column by which to sort. + * @param integer $sort_dir The direction by which to sort: + * 0 - ascending + * 1 - descending + * @param boolean $message_view + * @param string $from The thread to start listing at. + * @param string $count The number of threads to return. + */ + private function _buildThreadsQuery($forum_owner = null, + $thread_root = 0, + $all_levels = false, + $sort_by = 'message_modifystamp', + $sort_dir = 0, + $message_view = false, + $from = 0, + $count = 0) + { + $params = array(); + $where = ''; + $sql = 'SELECT m.message_id, m.forum_id, m.message_thread, m.parents, m.message_author, ' + . 'm.message_subject, m.message_timestamp, m.locked, m.view_count, ' + . 'm.message_seq, m.attachments'; + + if ($message_view) { + $sql .= ', m.body'; + } + + if ($thread_root == 0) { + $sql .= ', m.last_message_id, m.last_message_author, m.message_modifystamp AS last_message_timestamp'; + } + + /* Get messages form a specific owner */ + if ($forum_owner !== null) { + $sql .= ', f.forum_name FROM ' . $this->_threads_table . ' m, ' . $this->_forums_table . ' f'; + $where .= ' AND f.author = ? AND f.forum_id = m.forum_id '; + $params[] = $forum_owner; + } else { + $sql .= ' FROM ' . $this->_threads_table . ' m'; + /* Get messages form a specific forum */ + if ($this->_forum_id) { + $where .= ' AND m.forum_id = ?'; + $params[] = $this->_forum_id; + } + } + + /* Get all levels? */ + if (!$all_levels) { + $where .= ' AND m.parents = ?'; + $params[] = ''; + } + + /* Get only approved messages. */ + if ($this->_forum['forum_moderated']) { + $where .= ' AND m.approved = ?'; + $params[] = 1; + } + + if ($thread_root) { + $where .= ' AND (message_id = ? OR message_thread = ?)'; + $params[] = (int)$thread_root; + $params[] = (int)$thread_root; + } + + /* Sort by result column. */ + $sql .= ' WHERE ' . substr($where, 5) . ' ORDER BY ' . $sort_by . ' ' . ($sort_dir ? 'DESC' : 'ASC'); + + return array($sql, $params); + } +} diff --git a/agora/lib/Messages/sql.php b/agora/lib/Messages/sql.php new file mode 100644 index 000000000..8d86cbfc5 --- /dev/null +++ b/agora/lib/Messages/sql.php @@ -0,0 +1,300 @@ + + * @author Jan Schneider + * @author Duck + * @package Agora + */ +class Agora_Messages_sql extends Agora_Messages { + + /** + * Returns an ID for a given forum name. + * + * @param string $forum_name The full forum name. + * + * @return integer The ID of the forum. + */ + public function getForumId($forum_name) + { + static $ids = array(); + + if (!isset($ids[$forum_name])) { + $sql = 'SELECT forum_id FROM ' . $this->_forums_table . ' WHERE scope = ? AND forum_name = ? '; + $params = array($this->_scope, $forum_name); + $ids[$forum_name] = $this->_db->getOne($sql, array('integer'), $params); + } + + return $ids[$forum_name]; + } + + /** + * Get forums ids and titles + * + * @return array An array of forums and form names. + */ + public function getBareForums() + { + if ($this->_scope == 'agora') { + $sql = 'SELECT forum_id, forum_name FROM ' . $this->_forums_table . ' WHERE scope = ?'; + } else { + $sql = 'SELECT forum_id, forum_description FROM ' . $this->_forums_table . ' WHERE scope = ?'; + } + + return $this->_db->getAssoc($sql, null, array($this->_scope)); + } + + /** + * Fetches a list of forums. + * + * @param integer $root_forum The first level forum. + * @param boolean $formatted Whether to return the list formatted or raw. + * @param string $sort_by The column to sort by. + * @param integer $sort_dir Sort direction, 0 = ascending, + * 1 = descending. + * @param boolean $add_scope Add parent forum if forum for another + * scopelication. + * @param string $from The forum to start listing at. + * @param string $count The number of forums to return. + * + * @return mixed An array of forums or PEAR_Error on failure. + */ + protected function _getForums($root_forum = 0, $formatted = true, + $sort_by = 'forum_name', $sort_dir = 0, + $add_scope = false, $from = 0, $count = 0) + { + $key = $this->_scope . ':' . $root_forum . ':' . $formatted . ':' + . $sort_by . ':' . $sort_dir . ':' . $add_scope . ':' . $from + . ':' . $count; + $forums = $this->_getCache($key); + if ($forums) { + return unserialize($forums); + } + + $sql = 'SELECT forum_id, forum_name'; + + if ($formatted) { + $sql .= ', scope, active, forum_description, forum_parent_id, ' + . 'forum_moderated, forum_attachments, message_count, thread_count, ' + . 'last_message_id, last_message_author, last_message_timestamp'; + } + + $sql .= ' FROM ' . $this->_forums_table . ' WHERE active = ? '; + $params = array(1); + + if ($root_forum != 0) { + $sql .= ' AND forum_parent_id = ? '; + $params[] = $root_forum; + } + + if ($add_scope) { + $sql .= ' AND scope = ? '; + $params[] = $this->_scope; + } + + /* Sort by result colomn if possible */ + $sql .= ' ORDER BY '; + if ($sort_by == 'forum_name' || $sort_by == 'message_count') { + $sql .= $sort_by; + } else { + $sql .= 'forum_id'; + } + $sql .= ' ' . ($sort_dir ? 'DESC' : 'ASC'); + + /* Slice direcly in DB. */ + if ($count) { + $this->_db->setLimit($count, $from); + } + + $forums = $this->_db->getAssoc($sql, null, $params, null, MDB2_FETCHMODE_ASSOC, $formatted); + if ($forums instanceof PEAR_Error || empty($forums)) { + return $forums; + } + + $forums = $this->_formatForums($forums, $formatted); + + $this->_setCache($key, serialize($forums)); + + return $forums; + } + + /** + * Returns a list of threads. + * + * @param integer $thread_root Message at which to start the thread. + * If null get all forum threads + * @param boolean $all_levels Show all child levels or just one level. + * @param string $sort_by The column by which to sort. + * @param integer $sort_dir The direction by which to sort: + * 0 - ascending + * 1 - descending + * @param boolean $message_view + * @param string $from The thread to start listing at. + * @param string $count The number of threads to return. + */ + protected function _getThreads($thread_root = 0, + $all_levels = false, + $sort_by = 'message_modifystamp', + $sort_dir = 0, + $message_view = false, + $from = 0, + $count = 0) + { + /* Cache */ + $key = $this->_scope . ':' . $this->_forum_id . ':' . $thread_root . ':' . intval($all_levels) . ':' + . $sort_by . ':' . $sort_dir . ':' . intval($message_view) . ':' . intval($from) . ':' . intval($count); + $messages = $this->_getCache($key, $thread_root); + if ($messages) { + return unserialize($messages); + } + + $bind = $this->_buildThreadsQuery(null, $thread_root, $all_levels, $sort_by, + $sort_dir, $message_view, $from, $count); + + /* Slice direcly in DB. */ + if ($sort_by != 'message_thread' && $count) { + $this->_db->setLimit($count, $from); + } + + $messages = $this->_db->getAssoc($bind[0], null, $bind[1], null, MDB2_FETCHMODE_ASSOC, true); + if ($messages instanceof PEAR_Error) { + Horde::logMessage($messages, __FILE__, __LINE__, PEAR_LOG_ERR); + return $messages; + } + + $messages = $this->_formatThreads($messages, $sort_by, $message_view, $thread_root); + + $this->_setCache($key, serialize($messages), $thread_root); + + return $messages; + } + + /** + * Returns a list of threads. + * + * @param string $forum_owner Forum owner + * @param integer $thread_root Message at which to start the thread. + * If null get all forum threads + * @param boolean $all_levels Show all child levels or just one level. + * @param string $sort_by The column by which to sort. + * @param integer $sort_dir The direction by which to sort: + * 0 - ascending + * 1 - descending + * @param boolean $message_view + * @param string $from The thread to start listing at. + * @param string $count The number of threads to return. + */ + public function getThreadsByForumOwner($forum_owner, + $thread_root = 0, + $all_levels = false, + $sort_by = 'message_modifystamp', + $sort_dir = 0, + $message_view = false, + $from = 0, + $count = 0) + { + $bind = $this->_buildThreadsQuery($forum_owner, $thread_root, $all_levels, + $sort_by, $sort_dir, $message_view, $from, $count); + + if ($sort_by != 'message_thread' && $count) { + $this->_db->setLimit($count, $from); + } + + $messages = $this->_db->getAssoc($bind[0], null, $bind[1], null, MDB2_FETCHMODE_ASSOC, true); + if ($messages instanceof PEAR_Error) { + Horde::logMessage($messages, __FILE__, __LINE__, PEAR_LOG_ERR); + return $messages; + } + + return $this->_formatThreads($messages, $sort_by, $message_view, $thread_root); + } + + /** + * Build threads query. + * + * @param string $forum_owner Forum owner + * @param integer $thread_root Message at which to start the thread. + * If null get all forum threads + * @param boolean $all_levels Show all child levels or just one level. + * @param string $sort_by The column by which to sort. + * @param integer $sort_dir The direction by which to sort: + * 0 - ascending + * 1 - descending + * @param boolean $message_view + * @param string $from The thread to start listing at. + * @param string $count The number of threads to return. + */ + private function _buildThreadsQuery($forum_owner = null, + $thread_root = 0, + $all_levels = false, + $sort_by = 'message_modifystamp', + $sort_dir = 0, + $message_view = false, + $from = 0, + $count = 0) + { + /* Select threads */ + $sql = 'SELECT m.message_id AS message_id, m.forum_id AS forum_id, m.message_thread AS message_thread, m.parents AS parents, m.message_author AS message_author, ' + . 'm.message_subject AS message_subject, m.message_timestamp AS message_timestamp, m.locked AS locked, m.view_count AS view_count, ' + . 'm.message_seq AS message_seq , m.attachments AS attachments'; + + if ($message_view) { + $sql .= ', m.body AS body'; + } + + if ($thread_root == 0) { + $sql .= ', m.last_message_id AS last_message_id, m.last_message_author AS last_message_author'. + ', m.message_modifystamp AS last_message_timestamp'; + } + + $sql .= ' FROM ' . $this->_threads_table . ' m, ' . $this->_forums_table . ' AS f '; + + $params = array(); + $sql .= ' WHERE f.forum_id = m.forum_id '; + + /* Get messages form a specific forum or owner */ + if ($forum_owner !== null) { + $sql .= ' AND f.author = ? AND f.scope = ?'; + $params[] = $forum_owner; + $params[] = $this->_scope; + } elseif ($this->_forum_id) { + $sql .= ' AND m.forum_id = ?'; + $params[] = $this->_forum_id; + } else { + $sql .= ' AND f.scope = ?'; + $params[] = $this->_scope; + } + + /* Get all levels? */ + if (!$all_levels) { + $sql .= ' AND m.parents = ?'; + $params[] = ''; + } + + /* Get only approved messages. */ + if ($this->_forum['forum_moderated']) { + $sql .= ' AND m.approved = ?'; + $params[] = 1; + } + + if ($thread_root) { + $sql .= ' AND (m.message_id = ? OR m.message_thread = ?)'; + $params[] = $thread_root; + $params[] = $thread_root; + } + + /* Sort by result column. */ + $sql .= ' ORDER BY m.' . $sort_by . ' ' . ($sort_dir ? 'DESC' : 'ASC'); + + return array($sql, $params); + } +} \ No newline at end of file diff --git a/agora/lib/Tree/flat.php b/agora/lib/Tree/flat.php new file mode 100644 index 000000000..7c915baaa --- /dev/null +++ b/agora/lib/Tree/flat.php @@ -0,0 +1,139 @@ + + * @author Duck + */ +class Horde_Tree_agoraflat extends Horde_Tree { + + /** + * TODO + * + * @var array + */ + var $_nodes = array(); + + /** + * Constructor. + */ + function Horde_Tree_agoraflat($tree_name, $params) + { + parent::Horde_Tree($tree_name, $params); + $this->_static = true; + } + + /** + * Returns the tree. + * + * @return string The HTML code of the rendered tree. + */ + function getTree() + { + $this->_buildIndents($this->_root_nodes); + + $tree = ''; + foreach ($this->_root_nodes as $node_id) { + $tree .= $this->_buildTree($node_id); + } + return $tree; + } + + /** + * Checks the current environment to see if we can render the HTML tree. + * HTML is always renderable, at least until we add a php-gtk tree + * backend, in which case this implementation will actually need a body. + * + * @static + * + * @return boolean Whether or not this Tree:: backend will function. + */ + function isSupported() + { + return true; + } + + /** + * Returns just the JS node definitions as a string. This is a no-op for + * the select renderer. + */ + function renderNodeDefinitions() + { + } + + /** + * Adds additional parameters to a node. + * + * @param string $id The unique node id. + * @param array $params Any other parameters to set. + *
+     * selected --  Whether this node is selected
+     * 
+ */ + function addNodeParams($id, $params = array()) + { + if (!is_array($params)) { + $params = array($params); + } + + $allowed = array('selected'); + + foreach ($params as $param_id => $param_val) { + /* Set only allowed and non-null params. */ + if (in_array($param_id, $allowed) && !is_null($param_val)) { + $this->_nodes[$id][$param_id] = $param_val; + } + } + } + + /** + * Recursive function to walk through the tree array and build the output. + * + * @access private + * + * @param string $node_id The Node ID. + * + * @return string The tree rendering. + */ + function _buildTree($node_id) + { + $extra = $this->_nodes[$node_id]['extra'][1]; + $output = '
' . "\n" + . '
' . "\n" + . $extra['link'] . '' . $extra['message_subject'] . '
' . "\n" + . _("Posted by") . ': ' . $extra['message_author'] . "\n
" + . _("on: ") . $extra['message_date'] . "\n" + . '
' . "\n"; + + if (isset($extra['message_author_moderator'])) { + $output .= _("Moderator") . '
'; + } + + if (!empty($extra['actions'])) { + $output .= ' [ ' . implode(', ', $extra['actions']) . ' ] '; + } + + $output .= '
' . "\n" + . '

' . $this->_nodes[$node_id]['label'] . '

' . "\n" + . '
' . "\n"; + + if (isset($this->_nodes[$node_id]['children']) && + $this->_nodes[$node_id]['expanded']) { + $num_subnodes = count($this->_nodes[$node_id]['children']); + for ($c = 0; $c < $num_subnodes; $c++) { + $child_node_id = $this->_nodes[$node_id]['children'][$c]; + $output .= $this->_buildTree($child_node_id); + } + } + + return $output; + } +} \ No newline at end of file diff --git a/agora/lib/View.php b/agora/lib/View.php new file mode 100644 index 000000000..a93a93754 --- /dev/null +++ b/agora/lib/View.php @@ -0,0 +1,27 @@ + + * @package Video + */ +class Agora_View extends Horde_View { + + /** + * Constructor + */ + public function __construct() + { + /* Set default data. */ + parent::__construct(array('templatePath' => AGORA_TEMPLATES . '/', + 'encoding' => Horde_Nls::getCharset())); + } + +} diff --git a/agora/lib/base.php b/agora/lib/base.php new file mode 100644 index 000000000..29c960ad1 --- /dev/null +++ b/agora/lib/base.php @@ -0,0 +1,48 @@ +pushApp('agora'); +} catch (Horde_Exception $e) { + Horde_Auth::authenticateFailure('agora', $e); +} +$conf = &$GLOBALS['conf']; +define('AGORA_TEMPLATES', $registry->get('templates')); + +// Notification system. +$notification = Horde_Notification::singleton(); +$notification->attach('status'); + +/* Agora base library. */ +if (!defined('AGORA_BASE')) { + define('AGORA_BASE', dirname(__FILE__) . '/..'); +} + +require_once AGORA_BASE . '/lib/Agora.php'; +require_once AGORA_BASE . '/lib/Messages.php'; +require_once AGORA_BASE . '/lib/View.php'; + +// Start compression. +if (!Horde_Util::nonInputVar('no_compress')) { + Horde::compressOutput(); +} diff --git a/agora/lib/prefs.php b/agora/lib/prefs.php new file mode 100644 index 000000000..122f41038 --- /dev/null +++ b/agora/lib/prefs.php @@ -0,0 +1,23 @@ + + * + * See the enclosed file COPYING for license information (GPL). If you + * did not receive this file, see http://www.fsf.org/copyleft/gpl.html. + */ + +function handle_avatarselect($updated) +{ + if ($GLOBALS['conf']['avatar']['allow_avatars']) { + $avatar_path = Horde_Util::getFormData('avatar_path'); + $avatar_path = Agora::validateAvatar($avatar_path) ? $avatar_path : null; + if ($avatar_path) { + $GLOBALS['prefs']->setValue('avatar_path', $avatar_path); + $updated = true; + } + } + + return $updated; +} diff --git a/agora/lib/version.php b/agora/lib/version.php new file mode 100644 index 000000000..adb9df0a1 --- /dev/null +++ b/agora/lib/version.php @@ -0,0 +1 @@ + diff --git a/agora/locale/.htaccess b/agora/locale/.htaccess new file mode 100755 index 000000000..3a4288278 --- /dev/null +++ b/agora/locale/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/agora/locale/de_DE/LC_MESSAGES/agora.mo b/agora/locale/de_DE/LC_MESSAGES/agora.mo new file mode 100644 index 0000000000000000000000000000000000000000..dd069e61d2b185802c6f7d6b9fa295ce0f27e4e1 GIT binary patch literal 171329 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
qmw9Jiw5 zX4(~=n>y(IbSE0u9P~NZ9z7GwZ~P?u_hB8;=WQ02z*Tq@55@d-yF));pz)>sG>l&Z z{ocGE9e*J@-hQ-RVo#VyWpw@n(et%5rqAGZ(q;CB`TY?sv@iTV>wvD`F!UZ=g7xt$ z^nSc?f2u?e9E+~kVa$rT4upH92zqWyqUWV9`n)$s?~m^2y*Di8Peae&BJ>_ug`UrC z(NEF)>I?MwKZ4dj9n+W5=PBD~;khXgEsuV0G{6qn6+Pd}(D+uN_tAFrzB`7-c?G?v zbA6tQe`C&kG38!CpT7aQH>X(RS6) z@5e^yeEOizG~a*aGdpD;nQ)blxwZ=l3;q9p6I7`w;E-<5>O`dhU;*<6J<`Z>pnV9WtW( zmkS-QXtWyIZ*%lH?20MhD=~jE`aStP+U_m1-bQqt_oMB9L))eLI*gk?S`?j6Sv207 z(H7|W>4Kiy2hnw#gFcr#V)+l~JT9Z-r~M|(;|4Tc94)Vb{;q3)b8!UPZ`Nbs992i- z?TE%Z2yHh3UEitby*Ufrmp#!xuoLNA--h$oAH4_Wp?_}r6rFdr@51+PX)H>5Bzm3} zL^q)09Yy!=`{)^T{0nGYSJ8dSaXhS7A#|Pe-e%RbWC4D=ac$mxF>U=>z4=pUPwmgT?}21N@#!0 zV){<>IerM8|C4C{&!X*KLHk>Y&i@_sc{_rx+fOll7G0OCSP8TJ7~*Y&u47BIT?e%P zp6I!L0KJzcMW>=^pyT|G&ihJCXF3)7$%Bql5RJbsI^WjOJJEgypzAvV9semb?q|?`Uq;7y z6U*Sc==bRlX#1bgb@>y$Kd$>Z#9I*kT~HZa-&U9!$DsQ>9^J>s(e--?ZT~tN$9w3y zZ9?mPgwEqTwEpjCeE*>J)BY0H=Q?!%bEEfW0d(BzXn(cQc8$<^wnf+J4s?A-q4Sy$ z%crCBn}^1|8Xf-~bev5we<%9feu|#EW0;Joe+_?5EsEYZBcr>~_JvM|@k*inS4HEf zg^trCmbZ!dx1;m82i=!`F+Bop{|I_-O~B&#BDy}?&~vp5ZGQw^hvVovoI%(5BHBLp znb3bl^xV`(*RvfuPG7X&f#|*rLHm6SUB4;leLp*vuSU<=X0)F#(SCkM$NvlMC+W8^ zUJf)}2wjJYn6fVDxJ}Ucw?gmt+p!Bii?#3%AI%&bFZQ-Hz_hCwLeBfX%VlpJ9Gaq4S#+U5K9BmFT*Egx(`xV{$6~dk-|e zoPUKs50%Hcq`RSU{ehn63uxS#&WH8Rjjlrxw7(YU^K&PFGv`K7)P{`XP0p#43E$+#SiIGL~oiH>`IVwBKgvzTJVIpV8O?UqsjUhv-Fg-E&+F`K2%= z4)l4r10DZi^f`DAo&O5-9KI9tccRb7cj$hcM8`jkKDSveg}Cyf<>k?Rs)nB5hS8R> z{8scF-HyiBBjyiBpR2Lxc$1^k(Eetk^P7*hUxn519rT=@M)&bD=Ev-p!#OU8p2ylT z-72QLU@P+bpyRGY=kqQ)kL~Ds>_*2sh*j|j7Q*aTLcf*KeQkuc>x}l(9o?UP*c_)} zF+6~!@B+F%g|CMBmX20H?~|(Nyc(nH)G?;-kB&yq%~bSUEJF8l9lFm4FlAlP{kn|K zrvOj07DwZ)fW}cBea`Bm@!uNryGMJY^#`Ky4MqET4Belp=sG`##1}##e*Itx>iUL4C`L*rP1&UXX49($u-MZZJi`WgGwqV-0g`!xpL-CDC+Qbl!E)`8Gk<-q}XZYSFRK1{h!@ea~iGKPKahdz&^(0WtRd*^j@9X>|m_y%3))95{Z9zDO=GKJ?W zKei!V6a9XigpU6T8qb?(`+ev<4x#tfw`jf8*M;@D4qdNm==^%3?PjC%TY%kh85&3W z%;7vFqvxwS8doj!95hGwy&I;S4|JdUqw^Y$j{i7%&Ywc#TM&H(9e)|R?rYF?8`1tg zjrm_jk7Et;Pow=7%M#)!hn|y$==Wl$m_HPaXEGMUXV7uhN4LiEJ?MCcWB&Is{TmwJ zKj?T#S;IbOLie>aIxp1-fpV&~v;4eLlWL$N3?apN{!| z#`FcWpDXD8WXcxiUj*%^I(k3fithhF^d6sqe*e6N?%T$gzaNd~C-naM7d;18(0$09 zJ&czRJ+CFu`0Aqdn#S^u=(+5P&VMZ0{t5K?o`bH>2WY!f=sf;L&qL}Q;XciT-aq-! zaVnwvQVU(LCNaMi+O7k-Ze622(EYj>8{z=0jmy#b|A@}xDptW_y-Up-6eVT{PYYn&-q(+#=l6eT{D;x;enan-^f!e06vg4ByQ05m_h3yti>0v4jbZ;gqwV^k z{Z2yreG`p$6IR7T=<}X6PxwB}hkie{MECDu^uCycUGO;i{ME`E_Nyzp9zD^1hNI(5 zK+oY^OnLq><@rbVdn5Y&x)VJ|htPIEMK7c6bKVrrNilRD<l46T$ezR$vL-ht=^yOjjtDl=AOTZ%51D!Wwumnx%MBVjAgYSQ7W6_?7*LM^e&jfV5d1(Kyq4QXYw%ZZ&525>X z9F6xpdXCbR4)u$m>sK3Hr+cvpPDA_Oi;jB)jqe9^T`r>QnXXJ&&&=q2bD{B+L%&C= zqv!e#w0>VSjt64?nCKLAyywvMU4)LaA^H*8{s8)1e1)y?XLLT*%O<7#eN<=k{H{gU zcLRFfPoVK7%7yjGi>^yqbliq9-3I;sxEssiV08X3qw`pb^>H0q?=SRuO;C#2FZw*>trRST##IU{V^ehfMxyKbEPDUVN6*__V#!PIya z?I(4Wunw8fKX>Ft+vP#WD~9fO9rV6wfysCe8vg`z9jBo6XQOd1MbGU9bo^cD{60t5 z^#oe~B6h_bRm1Ot`_X-!g7)(PdOr4{aea@*{RcY!1$3M%=(=UD7RD)vKBwi-^VS*d z=YDkjacDnt&~`7P_s~jA#t+f?ev7W_zv%j1S3UG!0gIEaAJcu%dc)BEC&l!OIE(ZO zw0^@H;d`bpdQPUI=k9f^gkNAXW~dp@RkSHO{#|Ii6Vdpd!<4vV`a|@59zxI6cj)^6 z9P`hi_ueIRJ+H47_AePrlP-g~vaqw75sJvVdFb$JtAr;X_P zoI=+-(J<^o2K1cgLC--6^!aIk^{_R%eosc{p!@U+I?i&mzfCcJC%V7;(fjy2^xXf8 z{+>=W3hfJ``%?lfuY|@?1D$vCm~M-%Z};f^(NXAnO-7%W1!$bB&~Z1S?Y>0g{Q*6P zXV7+u#-ZH}=(uIj^4e(pZP5F(JKFCUbiJpbale4xqpzU*y%AlHU(oftijIF>ldwK{ z(cd41&~s57jiVA;uLah^&glGSp#982*Jm+0?i=WQR>$=F(d}rvz3BYEi0R+Z`JIpH zv`xc&GNb1rFM5wQ#bVe3jqd?;Uq{9Cqd1lHG<2LBnuYUL0IQO2gvmG}Iu~yzy&gU1 z*_(%YjnQ*D5|eR0I=>C*I&4ALe;+#jx9E63#q!_Kb-s+&%h4iO2;IL*XuBrpI<-d6 zeW&OEbR8$e@~6=H&!OYIi1xn(ecsli;~YSrkK<^6|DyfpXc_9?gr>`*=cESOt|dBN zS9F|v(fiji|+r6=)4xj{CBW8=}ple(ceW`ZwY_iY>RbCKZ4cpJ@g#>jy?~? zT8F4*=JUV`N?SDScWq3b&ojc+;*#ASFJ-qMr=-4&dJHA$zxJKPHm(fjuv^gKO^s zC8hlDSx;gS(oOq@`1_&jz6jmlk1-ifVSCKfFWh%`pwG?S=swRupUX{{4R=S6Mt?=0 zlS}CLdfxuw-YAP%NLNAc`9|pTe=BCd9_YPuANu@1h}Iv9-Y<`#<35G1%k$`YSQGP4 zqWAMzOu`Ge3NPYa_}2ZQJj;O4|Mlp2dC+?;8Eszz{XJC<9lsxX&yK+CI2G-GJ{tE+ zX#3aEbGrha*EaMX-XF_Pq4WM7GvZZrUKt05bDj(BuMT>Cnxg#KYHF8MO$Mr(w))u8H29( zlIU(MPWl|$F5lQNPBAoH4UMw_`a8J;dafTr;~Iy?F$449Yv}#*A=>^Jw!>5Cxvu$0 zIOh$~bPKdyd(4gf(C29!cEf4tbMgZ^&ogMfRO5m-qTie4&~+Jzet$oS_VWrl@3%1v z9zx^)5$*Rp+TT_5`OG~&JpajP{i-hLeKxZ=)8YHr1rW3G~l-KS!^k_hGI{ zNr{Ho9{v3}6U*cFm_CR0S88$?zd9Bo-5I?vMq(*^9qoTVy51+z`J6)ApF!ihh{m7h ziBK;Sy53pP^KdiTPj&QnL2E3G4`DJsgFd%wuseQ+##3=hDDQ}__fYg+d>t)69P=-s z^Q`z}IQM!ayu=fP?Yz z*-44V@jM#Om}iqx{_iU;MW2Uk&xL!u1e$Iay${`oaaa^zz$Um6i(}H9u)n2nB}dXt=s75j_S+bJ{%%40nH0;Xpx+M* z(Q)2IsNH*}mQ(eIB1=s8%2j{6}R|Cd-CPh$zpwIHlpU9^33 zG@fqg{&Yw8Z2-D1qtLi#p!3)jJ%F}9jPAo}bY1^O*DvFXq2FxiImwCcPeDwDdHIi) zboir#^YYI4@9XQBIOAsX`rJ-=y-fWV`TU!U#cKnLKb?11Cg01Bc{Sxdlk#cwKikdW zHIjZlpnOe8CSIqXV|-3Wy|i%*i~6~Uyh>8{PVyh2kFj_!@4mc0b`f}0qu))W_r~}` zE`RPM{S0+JjiNW6f&~F&%Xlk^c>SFQ(qdgf9?MElZwcx5$X`Mq{mB1_x=%6g zkCw%_ul4%@byhI{lGIsE<^bCHnj6=oPMlLl+VVenPvplOSci7k^BzFj*MqUXzdcgN zyzTVWo;n@r!|(jO#MOkhtI6L&zOQF!Hyuxq@5}F`Wz@Suo%hLGO8PLLUnK6nR^U~L z^0zIgZAI#oB<-s@c|Y)emGoNb7Y^Bp`iwP!&n+p-8po|norT2JBBo>2#8zVW{+q=6 zb?S79aaAL~8+|@Xx;Xhc`Md`CIl%vKXuc0AUq^Z+?|10)USc~;|2wHSp0cjwH=*7( zEJYt}X_t|*e$=VK=XKP7lX~U&>}weHey3~^`JL(SebU!aKASevd4EM&PU=2K*=zLI zp0Y0F^`>o4%6;|XU6VTFQ&RqKbGZ|#=j$T*d1#l0{)>=)p0dk$fIf2Zxi8}-QC^+; z&r`=&NAi4qNx82=+KfkxDkoNcG#aO2@b>1YN6Vyq|=kt``$LHUE0gCd7X2wTwCY8cX?I#QG9ts~Ecv{cI&Ym3&`^$@`7*8&kg{bw1@?GmbTd z@(twoBi7Z_>4wemY1*W=4fXD!&Isz9A${$Yn|j4aZy_Un?CW)Wk1=yo*H`g4{!r?E z67xzjb{+C(Qhsx6mp+!IG~z$X#q==d@GNmuz=Pz!jqP}UMt`+%G<}_ojXK4?CXnar zW?c23c+LBjzOKFQppUzF|3${9alF!`+Y;La^4{mYmoa?JCa+)kn0WL*eNLeMq&RL5 z#;ZjA*D2@cXd(|~FOtp|%bSw7Berc!nXeu6>+2EHMX7fr*8PBb{du>GaqXer*Q8g* z^3vp2<@4t;z9%SaM4bXLU7PY&q%Tt^EoEJKUwic<4u^l3vax*V#QPT7^^R>HiEDHR z?fK_EDX$T<8N{a~%F^+9I&EL3+}G2z-_QGN@_oHcn{&K-kv9g%$9kcZJCr^;lPFC6 z7pSwB*fLV*=Q#dzv0^sH_>jDnF@{&j??c@k+MU*dCf+D)YVIPI>zuKQ06 zLm2ZG>JE?XibYRTxfY+BQT8}}Ss2q7>E{l{&l%H0W4w=%w;;wE zT5|Si*NytOA%ApEl;Yip_@4PsjJ3(T_PUjN&r*L`%<#8#UB>T*?_ZhV$OdI}>?p$h%1SGqK+HjP0uiZR=ni%CEh~ z#r|hfR{1~q{L{FU*Y`0m1AYBToo{*HM%hEec!+)*#yB4(y^XSr)Eh#}U9nvq^3U;Z zNPd;@;@;Zjbl|JzXlxgLGyr)?+d`D({|A!V7# z=buR@)~DqDzyByn-Mzd|Q2z$Xefeh`UvJRw%j6A=`FF=YA7GqLKI5YB|n)yeEr4eEpc4a+xUEmvJu2^ zk$wmAc{Ahw_qCih{LwA(2xBcLo+Yuo9iN->euMX4yxY?DE&PajKT*Fp@2!0PoxDzQ zeETiUSW_rFg`0UdCT|P%I`Z~ajQ(GZW4uav20pLi{TpreQ|A`mtz+HS$p4UcM(Ukr zoRYlx>ywoK{rD#Ghml^!*e=a8#C` zc`2{**K2(KgnGBr{w>DcO1*-7eiLt} zeseze2~`t^a5Qy&oxt(2k9yP@LqBC{{{>~W$e+RIlh~ISOVdv~>c2!@)7T~(_4AVV zF69>}FMcg4 zdeq&*7{1!@c`{>difQvIlfL%4iTvm3!&hzkX&CE$Lf$^c_$2n*nEaCTm4*DC)bmw_ zbT0A-hh)ls@=w|m+hRI9<9y5Kk<=L*$1L=pv1`)*e)SSPFW-R-^sgJtoIh} zCo$gZl*cJ23J_B+(!O5iJ%xgK^ihbs5%@Xf{8fA6q1d1R`FR*;BI&(+-oWSKyg%kW znEJkI@%du>Z2E0Je;L!cDf@wURpOfXpZNK&jS`EfeFCC)&oC{w9{y^iz$p`)Kng??Loa<3Drw zin7~zpN@U*qQ0+f)Z4`PJIU|O=R@@6f4{LF zkBUKUCcgylyLj&+ZxMBBP~L;~gW}pWV{HDlW(u;d5)^TSWVf zu}> z1)b=7B<)_{oj&&eHf`rzYl!(Mn~V1`hlMf!J!0KMf45OqnY>E0T|r)J>iC*Kzhx;~ zN&X$AH&ONu?`yA_uDyPs&LaBEK}H2E$lKR~*k=yv z4kT|P{d|UycV=?XeD0L{uAG&|FrKye?4Pt)@v2l^$ipM z-)k0izoeh;jMak0Cj^6tocDe=Ed{$%TaY? zDO^J4aX$ac=dJWpj`XLo%{uy9OWC8OJJ8qPv4aeJUQd5tQ}zYz+7s6vK9`{0G4yqa z&!5m=Hp*Y2Zg=YVWi*brugm1WL3vl|ccbpp)Hy*}DL(I|EIVa`W6U>GXLkJjH2L3B z?(1*zN>hI^?S}IC1eywTN|0x2LVIR@C`F z-rfUFuI#S!y<`}`hV^1&;vIt+X{~CF3eR<&k4GoBUIUAMc-s^kii zT4XS0$;$^=g2C{Xx1wQ|9|eiRb4I3VD{Cg z``#1&C!g~_|8&lMIqvTvoqnex{6XB`7v=vsFz-S>Z=r4Xt9|_bBmUpO{hj=O7-?Tk z-k(7Dmje55DF4lb{XYM1#{YW$`@p||yx%|4-^BkhqHY)d|0V8Qgl$G1O~Um1 z0pfoG_)p~jZtC_PydP589-aLa`F35y{{yg%O|MmPoC;Xp8 zn%^Y<^eZBKiL}2O_5F1s{~%!A6m{wZ+}BagI}`U8k-_^@x1Z<#%Ygei-hT_+A4Zz* zjedPL?}rI{De0aU`Fu*G|0L3U7v)|c{xRU58|D5I{{!#$A zc)yS`UrYF7{w?bBcKlC7+cVPXcidmu+j)O7aG%KgzmV5s#Q!q> zE@@T?`*Omb2w1(|oqV2*dVFBizYC0he?<6yA?;_7$G4OI$2>SY9Pc*}_IlEMSETzg z-bW*^?;(%B$N&Ajr_}imBh4~tPU26$ZzsMB++CET-5R9-|yfb0oy0+=OX{F!hMare~UD)iS#c3<|Fxk z7yNC?`2=8ogLYgepRXX@mq*%nC+>C8z8&)T6Y_rpu>YQPII|Vv{(yWw78+d;!d7i4leg|-W$p1ys==XX2zYe$|@agwOl=&s$KTg~W zsOzWWZ;{U{qTUbi{vZ7Rzr=qu`F%WzzZ?I*rab)~CG4ZZ-6X%?Bks%jf0FQLk)}!c zPZ9q+QO-le{T=!DN&A_&zm|XfK0ESoU-kSwoSV^xR=huryuTgzZzk>6kk|hcdB1?L z7gOfn5&zZHMZaIby@UJRfO|{8Df}kkr+|M?!v7QQ=acsvBL26Cf1J4AC;T&c-w(`( z@c%C4^N+w>p^WbX=0iyHWx#wFVecR9P~PXF?APG_qp0&O!ma}Qnuu$WNBXTt*qbQh z)%+i&%!l~@8p3}c|2DAqQO5tt`@P8TcL}?T_p2k1=K%NLqwdcme2sEGl=^%r?zfW9 zfVi&=*zY5)e(yuvSMvTI;$8*(y92jEJ`LRZtwwuZ2K-0je;?xYdsqD5MB29z|A|rW ze}Vfa2ynjvc z)TKk+UPRdM^Z#1>`rRa-3&g)9U={W(%F^!($ZL!L9}HN9{UYvn3IDf|?#+aa0$%Y? z;Ql7wWSixbr{6aL_gem6M%*v+|5+ZK-K5MZd3}|D`F#uUuc5pzin{z*lyfZdf42z# zWcr{0?$yM%japVPDGoY?S%e z)M=f#GvWVM-Z^2<4gbdg`x}&{-)B?5x41LgjW&ljdv4VIy`pS|e>~~#Bm8Ih|5WPn z9+Bq~`Tr$w?-6x-7Vi%QelKOl`#+HX^MU*E$nS^Am$ongZ{}sZ17XO<``wvkM#oxpK#}W4dz&(%uQN*3EweQ0z>u<^9 zhe-Rez&|_6JwZDC{+Ra{1M?bS-W!D1|E~!D2VmcW@OLKf&nGVZzJ|EZr>q;1 z$5+Tkc%{$@$9NxFcqfNfAi}=4M{sdvqq740hmptwTZZGor)PVba z;{HC$7Tix0{wbts@_#?+_4_c=G=TYcAphsBDO11q0`||y_fz

Lh^W5%6Jd_|H%7M!tSBoKM%~uMVjZ}zlZRv;ZMapK$;guAN)A) z?+50q$nTSRr{DMD{@Q@~BI2G+n)Lg1;y!@?FQI;KuC={QTi!&P=Mne50RIgB^g9aN zM^KMflFx(0Zxi?7MDF6hjQj6+pHINN`{eV5{GX@nKL&oC|INtn7V#g1`|AjMl=nCD zep$5fry`GU!v8YLJWE{qy_NjVQRn9p_JIWE{Qm>)R}yAF;?wU6?w64Fk4C-<|7iXn zC(jqlO`0E6;N0&UiSN^vKcU|GeIfrJpYpd5+D*QDz@%Ru<^D2t`LFyR;(v?yzl(G~ zpm_YB$9t9h{}T7#;(jstyffvz6Y!tP|1S`B1JLL5|Mg14?-PO7@2A866}Vpq?2AeF zqKNzYsO#_I|2O=9afClknop+=KSg=J6m=O;<__WSN*=!m-1F(5Zzk?dSad++G`zas56@nc|L z$NMV(`u(ZDvX2Gsr%0pU!~V*CJK7uGtPy$1|J&sEf#HAU9NZ6(&-W1aEtLOzxPK_( z-;=hk;vSIx>-fKq^zT+nJ0Q;w!vBKkJC!pgk3GWm`!fDNg80X2->36_75;0q=bb6z zzXi+(M;o3^xPIp;WP)w?_O&@qQ6yeOAPO9dY`NYURrREIr~k=6#X!&I9{7zu5owD9U{5M1y&!S%X{W0&a0!F_#6W0UotAW?=cliGf z!aj$v7xMm7)sz2kB+a)H_N&0Xp7;Fk%Yl6h|KCY@_R9|+8t3iS-Z*dV431>^;pMHZ zVm!W9?B$2X@^|_;3_`xi09beQ2BXp7hTMC_cv6f!qBY607aSVDAa8X?MXSA+7dJcO z$=Jg>kdMOWHoO{#k%}40mg%pq?6o z;czs#UNC5sF%#1+x&>Y75uN^YQdsXWTtKQj+azhI>e~b6U~4?d=*C8VaWG-Z$$hrd z-zi4JQKxTF51&%tnm=0v7X4O#tH>`gs;!BQX(M0J%p3L0FYsnDnGVg-+3Dw3%(=lV z7^@1)JIt|O;n~kF6RJ()COJ=yD()%Mm_FXJtTj>E^0vAbo7NLRgHcBlhDMRnvLVt} zAZ@3v#Pn>+vVO`&45~(K?G{_t$YHZ!qAles@*4c+;HG8U>hI+x{NeEtjXHzTpJ*+l z0;v0Bmy#!)9_yC|SS?;VWkS&LzWigk;TsIqfq8pSc+8}AtpGcK1g16=5kD#{1Nx+$ zw?;ct^_{hUKEBm2<05j}D8k+v+edG-9(@%1;$H zgdG^B?SYmYlYvFHmv=k;YqX}X6!bCint`3R;)Q9(hBERSoyo4j(;?$Qztts)dftX_ zDLb0)Ove+YsX6Hg2Ky+@9(7uq-KZX+nzZAr(IE3K=rV6KvPSDDFHrTUb+yxe;=xv@ z{bZhg%L>+5O=*~+sB!ChQFg#&kTtfHd<%RxdE&veZc+vpr@hU>nwDZzgC6TlQ*ywh z&l=lGukL%|!NK^E7J z!TtB%3&t2}J37OjI?7%gIlOFrR9x>2rsHgxJ+U<+d-^2_-);N84X-uW)*bFj5F9ce`_rxCH>&7$aQBHMV`Ce8p-tIqZw!;zM@ z6~%V6=V(9e#4NTV?-w`nnGISMqt>14+TU_*O#>D@Zy^ucuMI0z%T(1R7rKIiwPlJx zITBQaBDKv7cSmY`z0uUPU2Ki^h9WOwEDe0R+3jrQ>*v;U(KK^OivBZB68+K2$DnrF zbYNLW!4TH&RQOTbt!wocq6ysQt5uuDqS`l)t*x$|d8Q4hQdL!{hlzH$O>J)1o%L)| zE9+r*$XZ=D+fb;dA;@dASCNL<@>;&q9ZcIy__h3W=hm%mA=lZ#j$Ri!JG+zoGMicD zYxV~>7s2~`GwX>S$%G7;rv%WalzyUhmO>9+Ir zlC<w73@npKEaU)HJMv1&*Xp)LJ&PT-IwNyvFJ ztZ(5?q92sqQvR6G8e~X!up?rD$;RN3ArnOvF?y)o8EcDyMkPj-P4D~^L^&Qd7JtIE zSmg;YCv+-Xu86IYpJ2Do2Q+Bp`IqUOHpNTs+dI20WzZtqZE~b{jg~%{XUknJ)zz_H zK>B#-nX{|79}LG1mSQW0DPnDd5BH?F$=tK#lg>oTRc__GNd;QGp{(uQX(_a;|9rWk zaT%m5>Lv?kr=42jZhp?#EDNn>t3!?V`dhoBLBDg$N#rqYGpfAg1So?w-H7)ks%fQ%+{JM_vlPbwq~n0pmU*3yWL`k zd20l;bArQStFsNlVzTw&)~+!l`}35*TrATI(iQkN9KQ118FcM6)k4HS=bGfD+rK1d|Exg z_Ho1u6juWybUJKI2Jm+ip<3q>d5=0wwNYymO5pIL9U69H+&F&X{udu16l@2Ddluvj zj=9B{MaV^wfXi&rB2~sn6=oP7pI!MqhsO6XO%8$@6-GWA!f{-p{T^|N5oy9lixPLn zyF#o{gkdeMQn4Z9>1M-a4obKqUa(JRj+ob4SN?`(TE4v2Tv=UhJfIfRb))Gf(c>*v zwQVAD8Fl4LUs0V-ZlL2%>)3irvt}!oN9*C&tquFmb( z!YZ*YdqXXe_4Dh_vyMtf#)Lg*me;KhyLvh!;-Zwq;&dxIlVIYnr{qHfozn zOD>=QYu#|}N@4_K1IO_7LV+63`78pb2-yZ{wg_rE6b`J)n#oIX&#>_^uDx-KioHYa zna^Tzd*-1Qw`bhjY|;AK+=-Bbr;ku(NYhqo(lm8-EedAW=4_0|HZo`1C1;^L*t)is zHh?9&nag!lyaqWA6vF0SetG%y>Xl{;xc6=?52lKi;_ZtEsM$P!;?7W7t4(Ce3$jDn zuza1?*#w19=(fj@)3ECzwe5uj4KyaP*|^t&z!*suU`hd6acGzB;M~-3#yG>eYJV1@xTN3zoc>eMMnr!M1QB-Y8T^OIpNfKQHl0IX-Au# zf)_G`ol$GJ+u1_Hk zbw-n2NsdlQ{^Hp|9kyzOitXt&gzu0@jkPQ(#S(6af;@#N6ds68*j(!6M|Z*Y*{MOB z5(eGQbv76=4!zds8c7FZC;=M{7{FV_j?kO{CiKH#GDcu4-}E|sMC|>iMlD#Z?9>Rh z2g+j=5`po(v{mrjKxovFqK0TFM|(0BCvi;sMJGS4UKzK#ExKgd-H`+n$LJbm=4V^u zfjsQvmqv^Rb)J%{-N{xiuke2X)U5rHtyOZKbqEQ>x+_rWh<5ty+>-RGleXAPJ3+;;wVP6n zS+d%%V!&Z%B{m4$Dy7mu8i_5?`QA}25z`#P=SV;3GadQCpw=(+U0sooj}u=RC6+}| z)g74p+-PT2Rg;F*Rs!4rpBO1rP7P`~Eb>RtAZyWrZ{QwRn4oAg)ND=Z3oX=ATCo0K$3tczfT^;{FZRv5d!H&R_*e(^USPolMI&;XQm_O5Sdn6$q6MJ zO~eUly__y4Y?RcZ7Ix`IU$w1;tb>xbsCTxqi;RGW5TCy!9UA2&zaN2Go?3L)(2zZ7 z6P282AbG^NC?F7-OF-_KPR~Fkl|U{(a521z2Gq+cP_&(mW;x`n8!gq6Z>eZ_(*ziM z=E`%!8%wz{;?gHCoE1qIq2k9(%E!d7x!bpGg*# z*P$6*=t{THo~CF1$|=Q#TPREQ^8L!9<&9W5O%>#Rjry6^s2hppy+DnK>`0Y6upvcf z6(K~iWS}1M^BWuMf?|o}%Sh9p2@$;0i7qOUM^boyl|?8l6@Z&k2U}2ZhaWDWjru!B zs?~`iwKW`5Y&c3;E&+qyruJ_ftPJX@#^GU|xYASN2Lg~Bpi@SqNHqpM=rz4S0ZbWx zBh#lj=A#+u?O+6;^AgEghSToihWQ9LNe}r9pgs!1cGJpbfo5xB z%S92D53*)^8$lps#T=Zi00}HLHn#1qpI#mx&706}6BL}xcU#(*rjxGOXUyiyBG!ap z_PBg2#rkY_6NDOii2w=OX9b6(+Zm|NJA^OL_^ZFO#k^6pq%z^>|aNEs6}q++2FL ziZc6vsOM0Rme69$yJ*Q5Q7U&+#2lSkqg`v+E{LsXo1)j6%cp}itw+NKfVMW_Em%l% zuE51e2{`u-T zfvuh0R19;`Nwca^WhJ*}hB8IQm?*wp;h?J*4@X4asd@nhO^9-9I)nwrNN&6}>L7|0 zXS$%ggPS78%vg-12%nuHZPC||ln#R=t~1m=bI&+08nc#s)u3z_B4xGqEb~MYxyjmr zVEbEL8)wf_tthiKEsb#L{9w*Z5ZC3H!e=};jNJi}3yFFmO8544oU!mKaAJw)()O;w zW9&;a*o4CD=M{c*V;bc$gDlf@G^WR72~4wGlr__~K6(aV#CJL4EohBm!jSFiMhoeF zZ_u7XYT6DtllwkaXf`8NZSlYl!D{t+F*C_oAB?aP*OqT>xE99GtwmsD`&e(T1%a=J zSXv^gK7C~-OYuM|vLuStX$lCP3>%avs-?U+fEp(b%1=mMAWUP?{+O3RteZ#z`@OcXy&}Ltx$C0;@_qShzd+`ux^^Iz8F13*2^mwW@;Y6GYesMtVTt^ z?3>MV6YpTa`RQFkI$~tSmbwOGZ_0^)jS~Ei8eh>sGtKHPn(Jno#vXoPG6QItg%fBh zz??g&bOIm7JKD-+DLr-UpG0}2EY3_TMK ziqz~3Rf-!jn#Er&Be1fHchc487sLcq?^KMt&C9KUfMl|%ZFsIqa1;AiS$$;26~qCX z@U$<($9>%s(sTLAR8{W(9#yA%$cB z!48G2K^%m=u{0kHk<*}e*JhHTbug~XURX0pKoWuBgAVmbx1lkah6kYjRmDjWF!Wd5 zAVL}qnDMO^X4o!3BC7$52GY{s$Ig%7V#n7AkV<$(c7PDP_aQq$98RtguA3&b~6L*Wfk-f)eJ#t|v5jYAAXLzQ$yf>84 zePs{*y{z~SKYVHRfyQN+{4%7b%|Bj+AG>l*+5yS2J{!u1He?MVP+k%#CZo%x_U01X=Lj={abNI9veRr1 zdpsvCdxQaoW)v8X>FA8l=x&4Gz#zPIt&z`;CMQcsx&m7sd!#@;Ro8e7>zDRP;xCfqrr<3nlLl#9}H#YCO{M*Ld87+n(Y4u$@mRxK=WWj8Q;?gXq%)WG9 zybVSCz}MLGU**TW+wPV1|N`n-d%&;7*rHN5>N)Ep1I zzJ@Hzt@WC<5q!zoQ-L|H>J9M|E(wyBSwMbxWBDvtD>5J$bwK6i*if3U*ip76ga>u0 zOJ|d8H!|H6dq$X7|X!*rlWw2{qBXjn->An+U%;+3A51 z;O$uA;j@0!VJA1gt(hYUL6e9!r~#bPVMIW%A}Ed7@=)~NCWIe9l&?am7YOBC{$Q#v zj=(VNa0MvVwq$uCnUDg&I7n@hqhH%y1|mCbYOx1VE71ZEA^61bc?!{g8gjt+M@@p{ z#+*xMiWs?Bst8H4%x;`RCoQK5WD9+ImaaHGnxZ;By@xJ=O2XlFvorNm17{i@cKLF4 z=1Ts^@R_fiL%GGG-QX zBsw_Y#>LhY(ZODBmWgx|+NKVqlK9md5MDC4R%&5Na-rTiW< zXrd&oE>mt%v;!8ChwfqYtZc=y??}q-OiYS!16HcZ8H!^2s&Y6WYP7@2+6P&T6+~^a|t)kyaFVMW|pBAq4Jm zhKv+vI-?=Pu+dn_ZsrM0Kb}1Hgu;WPMPxoaHyLc&{;XF1HERfj?Fc7 zabdGNNe{FnQe$;$O=%=5N%^=rvvm&I^9f2Fq#!yMWR_{{Q*_<+7a8s7NsQl9E=jOb zi?cd-`PCe@mW8w`cJ?!H1hQZ~1HK&$-2raRTq_$dFzJ=PEn_1BYDcinSip($NS6Cw zbT74L%+XzWKy~EG{cex#?%h^*+fRChpPe?6f#%T!WoK@-B$0IDULAjvg=66;jM{iP z_G)Wd)T6-RXGD~oxrvMrO&MfhCiTR0XqcZBVboG~wgnGQr=Eig=;K4t01+Y?s5;fG zR-*5iRZF>dx@=>ZfAi36*QTm`W~p`&rD+XPrKgpU%EnTfTSrT&LbDJv!iA{vEJS6U zHk*Z%CpxUDNxLtGEcS&vpDdkMbGdmTRg+0mPi_70tk_wjebQ<0sz=GY24%exC&mwg z5mUDa#4W)0S2fAkY_-rSBl@m;t$rROKfJ~^g)W?f_-9+A0jCJ!pvGC~;;zqxlSJLj z&K8@aDaWU9zzynA?q+xpTwds0WA>S|ixV33tokSpNSV8SGU}`>0TDGJRV4Gy4p=&0 zSzg~*Ilr8|+YnH=U(?~isxWB>ZE;Q6qA+Hw0M{_P!a~G7rh2vDO5JN-UnCCX?l}tv z#KQ>mPT3@ad$072Q767#OA0`0xu}8gAYKyXRYf71L{0Wk(XY$a@3pJ zfY?Iq`%XQGB5Sd~ zOMWO_1ygJ=+JRn~+0P$RD2H%(PB8dOZ$I4yKnfMHS2Kg{q7v~g`^c`#Y)2UI)i40-jkWx%BA;#I$1CvXX z>A0ASV|Aze_lt4#bJXsjL~R49`dmksEVU)_KP#l}b;?J(yHd zEzF0-?K9F4Jr(vkw%@1U#JyT5tpXhS4btUTK4B55=lq8Oxb0cUdxL4g=t5uA;br( zJ@!9;mL#-=1tUn5jv8PEI4OqE&*2xHCnDS@iGidbc+XXr$4aakqLZkm(SqDG;fXn8 z=;stGLy|ZsAXKGmU4+NF#WuwYlgejOEg>~4UPiBRI*7h8+As#sj@YLxOozI}ehDeT z@s#`p%n}xLXY>N~uEg}pyI0}~uh$Y|i@4u&W$np8cDze7EsKi`Ell5PKSm2Ns-_2n z2TqknS2LxI)Zl2$)sACKlO&8-2tz!?j}ky&M|-IKJ8a8gXJ@EXn^QS$wDfVBodD=d zk%aYIA8KwE6AMB2PF4M_ii4`a-Ry92gTt!S@r7MhRf=s_*~~eq;xAf1C+?y9D{-E- z7$&}ShBnrk>8YbMsgzSWb(3F{qC9WfveVrfR0Z!79i~h)PEZ9L1J#vX#=^5(k?I^6 zfkqL?bTV~0rB1hLjhP>Vb0lL1P@<_+3=0=VG|mZW&Z}?srBWcKSj8y4UEi)iJFsJd z6Aq5D#M7Bwm*Xy9cy#%(rcZp(1?zp=S6xbJ!mz;NQ0Z<8^mO$`W%;Et>mAHVi-4)c z3WK2m=k@*4JeOyhWhRh}qdTFhDo+Fn;CRk2unZ1y^cjo~m- zmWa7w=3M-i7IYbD$j%#4hB;9U>7x115<&1fZ3cK%X>3|v z6cSQadc7jO@y=DT{S`3C#;)rCrM8A0Zm?PyRnjxsGGfRGV?Rp^@~9AHx&6q#PFUI$ zREc6kSGZkcY@sw>M-S-^;iXDKvzXxY!L;{K24i8yR|unUi|}9yl=uFujz=xH-qrCKUMX8e*0z_uqSb3j z+4l;WUs0)7aPYqGPn}XRmg2;{Cr&h8v3?|b1%v_|)+?aH1vFK9iBBGG-D+LiwVPNt zCNadOs{;$s>OPb`T=e%^JmVa!cNu6m4h(Z-t9CqjNr3&LtJ{1y$vVcnm#>(D0-jhN zWMUvfzr;}f)zcPyq3G{$5L6*{x>SxUrmT}|_AWvR{e|NzYt%H3!0Mt$WurI6ckBU* zW>sW{i2R8q62$b${E`{FCRZrPE(DyVez{xd2F;a6uYd z6L^{{*ar_@PpAF-m{|mZG~AVBqn7ZBT^7(j=~0+LbgbHQUf;$Kjc0-{BGVjsh%i#+ zvJKu=8+rv!$=RWIOFYquY_cls%7X+Bw^nestjFE5-vJ2RA z=!7wEBoSO!!m(Mc%iYeX!|J)v!NN<|X-o<@f4?A1r>4W1q;|EN!zyQpfNKF4zzLC3 zl7x_z*F%f}+1TYsv)UmUf?qRMIcIXUtH)}&)~+HWwO!_O4M*P}`IXBT%$IB$u7OY# zi^=&OQZ#e=Y1VLy6Y@}2)2z-f$ThU=43aFM5e%CYG*}|A#Y2%+hpZ|B$pRSwG+;Lo zC)$yg3lLz0F!dU)XcSc`Gdf`lw@&ov)8KIt0ZK2^0vWZqyAhY{SVY4FF9K=6$l3dn z9ji3wy3Hy@Hm93z(&I2!paAOu+6-IByb%U(+sgGNMM}lQY3+q^&eyR~&>N~F8{q}W zZZ-^V{gHEbYS&j?z~G;}mX?Tz0O*DhoqLS&$jvNLks{I*!C>kVfRIect=fcDj6{0G z>#8t&At=_{eM~u-=F?#ci8djn*lJN<=b1{Lr^fHtsd+X|gdDmCx#Vq`uZ_V@r>ectoll)W2&C zq&-~ji?iFh(XrQ_*eU$5T1+Y&;F=ya@I#tQwGdTE(-5(=T>=fPWdZ%_x+t5tT}@F~ z79I7ClgA>rjLK*Ea6+H`mRZ5{(zGP7)x45?eFw>|n*a*1B1WgPhG%Yi=g$7Nj&nmQmc)d3`NG#p#v+x}N5yTU8Oc z%|^sssUF_xp3vZmKMe35~7dRFu~z}0E>~W z!H{xZ(;cX`5-ZL-ohq{n=W+zTzPM*JAZxnFP~<1QQfSY%r|Sf*``P$x00Kj#Jv`nb zmqvCKg{C$$ZId-m9%f+$RYykc7nmr{q_<@Zl6gNe-K<{)uFDQ7%&#sT=|qPtT}+aY zl!K}~_C9RtmY!jVvP{92Jg(xk?eH{v$3IJvvr^8E$8Ks2S+_)&fT&)eJY6$!E&-5@&@QiL{)>A4`z}v>XbLE zE>T=G!0RSFO}5tA;)+5^fR5&8ncmKen4Di$7sMmDGKzeSIk|Y&&qUN_J&RDYK8bNS zjWl~TM+^;Rm?hL&2NPKiWcLf*D~!*MIwmIF_AS50(yW(~Nus2vAs}}u*cq$pN*ks^ zWYvqo6?>n;V)tdj5=M6nxUx*@L}7P#+v(?YW+BF%x#1H41Fq6VokM%wN;&jBC zGz6hlDAgrhiR2DRcnTe)rd?VOpKfeP33C{c?NKr%b(hFzcU?B+mZjt(dV5RW?k-LfaHvKaWkckC*J`$= zt1uf~Nc-;G=@t4}acn;Mm4|%~lHaeXkeFO#&zkOwvfE17?qn_n+t(EpWW&Fg#}&BQ zTItMdvQP!jc^!`{A~5;|kTbN>8eBjRV&UQ?qyagW!51%W`1ShP#THfrJUY^qUt~X; zW*3WBZSWYjx;%wOq+=M@-N**{oPmf`03buqi=7hTAX2;xSy^U^T~7j_`6$^6Y{695 zQ(R`Q-HK-xJ#|y|c z)Hs4k=xN5|!YoHne#&iWCSIZf*-@KHBBEFmRwX@Pc=V`FFPSgQge~gj*+qmlqZVv6 zF3E=NsX1ZG;$jE-<>G)pPJQZDb{v()V+Jc4VQbO=UHgFnOSSKwp9qb|= zM*0d)lKpP=(GoVQx)@OD>gFR5MO2y|mk7VQ=0^?D@xo^SE?Y-#$9_g>nyTo)*(o0lxY$VWFxW1pu#=o&68IT)9|OhTWkUTj>TM6z7j!lDi(f!1~f zGt5gl!;2)$*Iq#k9(^aJS9jD4UHl6LuXqT$c_9k~O^FMa0}Xe_Gu#c`sYsfRE~Q z(~U3kim2$LSnDNgp)w3^SvGMI%vt+Hmieu3%!THh`w8h_ zU*gQ~DnJ8NyX4Ef)&$vN*qMh-J6p13+L*2>WNGZRanxNjG!jTS%p z7gM_D_n@6__)g666mL>k9G6$!X(5z{9Y8A!)Y6yg#y_t0$U^yH`WZNx@QOhWY#$+_ z+r;lHCfUuXNEfNPN>}GpE^Q&y&~u<8yL@%W^pmV?WPbAMK;k6~<;2wVYou3YA(@C5 z7O4OSuAQOiS!?D4V@3Ycdo3w+9H=Dklwa~xjI&>skzMMc4a4NaE+jK!XnZh5W}W0j zuU~U0vDeHEf*?vTZnatb;mK6R{wti;$^2w8uL>NM3$If&u(`odw5*_NmrmF!Idd5E& zMBkidJ2OCZp!Qz(OVpBA>5BHT`2^?JGo9o#yKFi9(mJ`yl^0huid7h1?Qze6E~lWL z<;QSv#m8`P=>P+-N^Mp7?29+VnHenabk;*oj(P~NrhyuppO4`Xj2=ABg}4VwgChXz zmzt}uLbf3Vn|K2)Ko|LB>sPC`Nc?n&PK4<(o$ES0;1n-AiR8twBO6RXyHofmmke)B zxerRH4`KMYHuFAvK>MA<59R!o2*0eoS16vUFx4k0q)_nWB5O=z*_baT$zWSIVG= z1ZaZ@cV9W3GS$K=CAhUnj@{dcl_{;b$OYl;tbslW{X2Mdkq&`O2?QJ2I(%wpI7EUb zw@58}CPARtj45a`AfE3FU{Od-!x7X}w$2y)=mi7;h`r|x(uw4TgDLDBaM*~#82G)Q zU`uiQ45SB(q|&k3o4BXncz5 zym@(K2TX_5(hcP($?CPQGG2u4LnxzyebII><+2*s6mn8siGV-o?E^GQxlYWNJ9ui4 zm@3Nx)XQB%MoiM*E+}5R(%eAm%&84mD5)qRW23Oh))J;Kq(%oAtux<$VYABt8cB_K zA=$tR9|t0=^}&$i9~bL)0!SE0I1C_{wBkT5tp^Pk1_>e7f*`FlQ@sW>5@U#vnZO`N zJ+TNy(HpVv=vWrIL}mbrO{uiH^! z_AkV$sbxB^Lm0xMdKK=tEda(Nvk))a9OcJeF0=RM>wXTNJj+DKZZ*3>t| z65Q%l3b~A14SXQtqRy{+5mGppttXdp9Iv^YK6v70l;sAZf`bAk18l8OwkL-KU7RVx zG#MGRH_rgvDMDVL_HD$ZA0@y)w`Y5>Pj$llI`{g~D#AD&O?=zN?oTd|sVgsp5@*3HW2FCYWr<2HLtfv99~JAxzAeU|jz>Ah|Sz_DrH124OlH z!qxkkj#ol=j50L9SfIU9R{HiVvdhioyjGdROr6cnbnx z^8)w>NCwsSeRqp}Fhap%sA71qW$sB$g+pkYw|lCr2JvNdNqzK2pw{aYbmO}oL~ZBR5lpJoZYlVrEejN8r2+cKo3J>z^e zn{0{>ZG%*wRUl+A%3R4JZt~Rb!j>w!+=3yHrsH-ocZN+RMof*8FjL7 zBZ;a^FTkaGVp|=g4pb1>!dN)gj~N(h{NsB&hK7VWN`at|kywGc5L<1%Z32C@@tLJK z2>PrJX;j5w5s#Ehc(oHoybW&sfke|sn^_P&v|(HNq^p_K(}SuiVm^Q7iAW6ZW4i9A z9tHyE&P*9ZI1V5!`Zvudd)wZ@{zCujCQ0qnm^8aNRPE+~81WLOw1;PpGt;RBupB+s z7Ma+-*%40bUbEG<_PX4GFf4naFyo!bHneCm>s_f295AI?jM2X><^*N#!c0K+>2?@4 z&9ZKtHeckR7tAEjr40<9QHV&+rV$Z_h7J|t$jbxdqnG(Qf-a-D41Q$+AAjK9c@str=afyj$i3sgvc8$R-@3COl zZmzAbm$%1AiQ=54TySAvgW#6pW;(w}Zk%x$cGkSIvT~-`%$irLWYk*deijT$p0{6z+9C-N5`5$eI+&m^VetBQRO2f}%wB`N>`*`-YegG5|^H;iR3p(u6RN zipDIO14a&3ZOAiA+fZEXz9mh1BamG_br5b<5oX*xli89LC4{%&s^#k5(Iy-O6f+ql z#=8nBjnbPsAp0Zjlpf&@AlcBk}dS$PbU%c^S% zR}yeLm*F@2>aG$+at^bIgL%#*Ne@eej>B-LiRR)^oWH_26_=73ifX}am6cUy)(~4c zG83YoksXxXRRTb2bvP9x$yYS2j9Qq)Yaz}Ni6YBsCK>C?4pRD&6HEcs*DgnyfwSa` zOSY)Fl0zq>k3Ebz7$BxK>S{4V<2|$v-~i1M-U{1pNEtigKnfe0tZ$o0MT7>#&E`&- zco=tRnL`_2%?KEHeHT?xTsH|R(kzDHM2XLvoVXD7u$N;loAqWKM5u0*3e^ZcHmrPu z9uvIWMuXnKvDw{WLClWt-z&;85esF|SO0yEjvHAE53s8yM% z1-CY=e}PV4eX3R=--nl2fYrwokgCwFo82%qsa)#$Vm3y%ljZE!1DJy8v@r2Z85U2n zS-|RKz|@w4+Gd7&c-V>$aM_aFW8lsBs>xx%P>+{laZ_f~CW~SX9pZ9OUFvAE82`qW z$Hh`01LG3Xhg!uY7(?k-G?7tfa}#1uqQ054RhF!5hDsbrKDi?Y)N0d3YVt{e60-_Y zRoEVO*Q`Hn3iX(uEYbco?Uk$ud(7AkZDOM(i)`2JON2c(Dk2d{5YdDkK&M#E__B*# zF6LK$dN~UXOjH3gF$oxxFPRM3W{@8S!Ow=L(+C0OLoU>RZT7U9Wycj6e6A-z;}(VR zX>bq4SKN_k$t%N}h;`!`_aJ7mj^Q1LWt6vkCY4AY8$B$1WQwgD7@B-ziGwo!67Dt5 zmM;?S?CP|FT49m{eH;%zOx7qyoWU8kSn+)$G+MGVV0m)?hBgg@Hb7`)? z7ZKoFsW3a;IRB`8eZV;gd@P9SqtfP;pv`p_9=*v}3Cz9~>dx|}XZITMQ4>*_9p0?p zzHAuBorz}6F573^$UvS2pKjwLpdJ^uAC-)Uhr(^NZ-{+Nrx`4G&Um8+ga%j3`BYb1uD>qi~tL!WEho1C-YgP3hOAWlXFt3vqR?*cU^`ZeAVo0MS8 zld%zmU^d+hk+2hLcoE|>sHw9N5wMhWHbzm&P4#5RBQInvpX|ewr8(tqvyv>Af|`)) z5a}DLz{Eo64ZRvK$;w9|Q*yH2+AG|n?g{ll`iz25JJ?E7mV0&4-P#78((C3myU>|q z>F|n1B)IC2!t8=zU04hiVMdWw(b-~V!7zehKl00{4YM2XVaZCuJ*hWl@=wxofwHFS zMT=Sy!}v6ELClSq1lU>561vweD5T~(d*`&dsH}Q1zMsg_hrN0>{USj1^dew08v~)w zw3Q?5- zgqxq42*pc;*&Sz1FxaNbyNQc8KCs}!oET$U)C&d4@eJDfH^C622D6&$alB?{1{s1GT&hfW#sRT!wdcm)#n) zv72q|wmRH*zS?ZO_yk6K^4b7zFxO?FEEcIWXi%Ot+D|a&!F|${`3e_%13@f1OIQz! z*Z$=TU^F*P6QhXoq!~OmUzfMc%NBa5^pWciUB$ zl*IL-!gE}B4vD0X&qu~y8;3SCpk&r1Y^Zh_MyzGe2EhiSCe&z?lPB{nXhStphdG61 z^^vO@PO%jB5xw;@E0`1Aq5C9g7fKPwE)hw|_^F0tVg zy8yF=3Jxe*8<)xxZ|63T7amrji}^gF+p_VD`}GQ_PC+-o&& zbMO$%Rd$V0YD^B8*WtKBQEyUUc&jtEeVu``J_hzvwaJP})%iLq`6IF|Igf@R+= zbB(+hhJHF~ZE>YtM(rvd27&Y65J)CkHdUM&0OcXd&8Qg7i*kyJDsub4G{%|?;tDB_ z`kM+G0l1Ksn&?sjKxiidAO8&1Kn9(3_{^H6zptD|iB zK+@6bQW9xMzZ}?^_2c3v>vcQVJA+Xx%RsFT&M|5d-RlQ`mvVKU;~F!ztd1oJmybqM z0SbHA+n61xj4DUqdWHI|w!DU$#!p^yAmgZI-Sk{*i&ZpPTMOLwiFvM|+HGQLi2oU|2cR%E0e>_Go>tBVWh2@SQ zvQBj}TyWK=5?`s|uEn4nJO>w5N?+yOH?tyxD~X#dxNyzo=;`Rc{yEyl(nJC zySBmC=f<>O&I}{5Z8q0a**enDn(~3jb9+}&pLpqlDM~#tqRAf&85V_Q&h)>(xBfC*7O^iu+AZK|f@m6?Pr zmK?j2y?qEJ(wJCSYc$sPB;k)G?{0c7<_r;TAuvS2ZO-nM=EkY0 zQ`#}d*lm5MO|)~*uDR3nF_1LWsBm<3rIMy&grP{%wj!x9t`hToxwXg*)K`34gE|Xmiap`XzOx^E5n_$!JJ@8-0&`!`-|{% zc2Y_c9oP&jI-?dAW{OaUX~w1ey48xUr^K0wHqm|ZeDb(&QgTXi6ZtvvWMS5#mr}m< z-dG4+&Oz0pgbq&PnUp${5ol(Xy}exn7~7ZH@bl&2Vc8NWNpj8 z6R4d8P}czH!iMT})YvpjMs5;Y%B0{G5p4@s!y}}dI!1)(UMX0#$nEy8~kKUlXzqQ92MkgtQ8@BSfCvp$jHseZ3i|2HQqlZy@?6Z zr`95$quLr^#yFB>+^Bu|EGRJF4T6w)#sz8~uIQvA6^5@)X1->QXhGV2kK|=N(!Dy+ z*7gmB^;I9s5c)lhE>ek)uJTRWWKrDd54&6cTZ$R?#wT3rk_szB{@Kdonn;Em5p9|R zYTqM+c8f0$6}jEYTJ>HMJCyN0%@91S^1a6-Fl7>jtjNE}=!{;O#`8=ql0o+Im)yIA z9eoVGVZpk9Y$ja1gH^+@55$CtgPB#ghl+|Cr{cH^v&q{h8R!IXoS>hD)Xh7#mYG|< zmY7WrGeAoQ?GL$>?zu~q^GW6{OMF2>1v5*v29g@6?>5Sc#2FOdT`r$Hh1uv$EvsIO zYvr}P!mK^N=Od1vc+q{W?R!$Cfid zVF$QBpyagTAhR|xyQSZ3^2#x1<%!QXDl%Ablt02S#lGyl_WEXnl(MPMkc02W1oF%< zYVqw1dsrk(htN^fH+oSp`pz911`(HZS0W$9Ji<}PI)UOtjAVQ&lCutO*z;bV|x zCO{#ywJlLnBB!L6^n{ke^s4MTM!H%B6ih%3?gHC-N|P*lB8!?}(Tb}YZ(hE{Yd4R} zpkYA;rhL^kb(Y{YA?)q;Aj!jI5UE^7;%~Gfsc7 z%8<@(LJ)%>a z9`^l*%YIx%CtgsWQ-w&|OE-?$ZJb9rBZncDeL_Slc?Gh0#3w5cudlGUM)*O5tcAne zLwW=|ragTQ0izw;hv`z~EM4>lAD-uNjY&D>O(($gfF^(?~(P^XRPPu1Aq3tK8^gnWtGZDYqt4^tvXBy^+c#&kp-?S-X! z?Z%Oppt~dv^)7uSZ7v>G0$HwbFZlq{GrkSDG1U^yHgubWVHD20a@YoT?@EP##@Usn zN0vZJ?c%0lq+d#$y-?M@8*_AbnNBOQpgh+&cEoZK1;_d}dlDA43{vg#UxM`>tzz3?S7h7=oofTnP0aoJvq85Q1o3D`T znH(K*nZr!svMWzbnTY`ZASs;b@%`m506HKOr}b;CtCGe6*?o<3h;qCcm6w(~$jrxa z_vMPlpATZ)rdbmp{OY3ldbRoVYwU+&q3f-Q9ZK~?P|mEWss^#4g<$0#kVFEG1yP6i zX86H*)n;LoK06?G!;@~b>cZMo-LMGuPVooSFLmO+v9Fb}zYnpH^|^Dv*wzx)ny|kL zY}jB&(5~HM#mxdqtXOYN;a}9v$GuIbuVy3to|5`ihoLE~b(noOH+BjLhl%aJ^=ur# z!%Z$&0UNPUhjjxh%@5i2+C6*PMrViLEKgJC)>BK1Qcm4{y*?W&v>IPTJ}`@Y5ovzY z&XQrTrj8YG@bX|ywyWA5*2oJv9X=8VC*XOiyyk%K0H{@PeS16_u#gsxGk14L!I{Xi zXNK*|#EWr=ZHb~6*~L^5Q>E6F;F$XYHKIU@w z^svktY>(lYs_|eY7=0ln0T}D@##soUEmU}XlJ`KUN3m3TnqY_nw~_iUhW0D7I4V#a zlS&4;E%?=rOR$~VPR+og>=3yCRa@0Z6FiWKD6si$VlJAm_6_$IPscgPdGtOTeU$Io z>vMMLyKPC$Snp3yv0$-aUd(ND7-P{4u7_JO0zz#n@A!q`+V`m&wH_WhY(hj|-2q-l z0q+E~Po=8{XxXZ6P=L_php%j$Z9H&9epxJkZsgKEdqV#vryuhWnSY|ko+sTSER;WSX?8i&u1u1N%Lgt&)Yii^JtfNK!uqU#}*2qD=_8o_NiOCKfm zqI8Hxn(m4N@q*|KbO>s&4}R$|%rVCfcvfmI0?oCoRflG}+7!0@f^oiu8j?kMJD~&kVy(`+(>paA@}Vf#4WjSYd`| z5d{X7Xh*XlnL_x-35)eOE>#_ zg<`AcJ1z*xrm@yscO_jq_m*oysj!8KY#fsiMAFa7dP;{G&FV}$v8C6&Ov=aZX9^}= z{yi*g`4sLWI%;u|V-<2}7@5w8A6ad#tnz_g!fx0@6I&je{fEX+x?@WmDki*k@ zO?9{lKf_!}DrN!ZtX?8=tb-#mnP7`H;cq&y?2PB(s{oYyKR88Lcsk)s6ZcEe^?OH@ z57U)eEF(eZ*dim-;{z*?nmP#a5ZC<5NL!iPsaw_?V)n`ifz_h=+u1S{u;rCoobS7) z%yrgi$eJqXS@-zia`k)|KMM^jkLp?rKZnj->9jfJ#ME7BHd&_HggppeL@DT5v-%GM z6P>g>3B`|llsAS#tiUw0(Kb#GOB!eO72GE3phN)%K!68pBBB?&6 zAY}p)QUxE7@($qKj2_zq2TV>-7$avp7Fj#S64MPkfH>8t9j7{`j*9Nm7z;KHz>G?%{T z)%R2zhVa>*?oBdtc99aEd9uo@9rvD#F*`4i0rGR$nVCZcWfuN93aQu1&&!uKQm+0` zrN!Q|JcOL9tM`RzDg-AYKyCK5W=(-&ifc5LI3(pkUl~%QGx*ZL9aF}{`zNH-oeD{< z^-M|>B7LUmOeeP~!qev7jJobNU1P~&&H7a_-YbkcWXpj)YRRHwEP*xejw!SSYYtks zTkaK&8wVq>l=A9YOqiB32?9N84$Mp?=U!rV*m`2w*@R{M{jSs*c(B1;cb#K0`Fuje z5;t(lN?f5x8f0fFbSLdLYlS~XL`PgL->}3wdDo%wU3c+8djezHiMwVmOzBEmzCgU> zpBvV_HPLOl_e1?_Rs!WEs*?RI3ZKaQzXqSqd$GPwL!NR_*-tp=U>J>H5?Y%?5VceFms!zFyep|{xy-J7Kg{S`KVJpVRnQV>(VeD; zCP%kd#RlV^7v2*nO6*+h;r4m%wodV};zj#(ZXQ?`xMo`Kr>IG3r;@&rTy}f_)QkaU zr&q0{WX7aZ<#y=Es_J65GQXsdRX3S60fQmZ7QM2GFDgK@?9-hrTCl>aHu-coT30O8 z%5@vSc}U+47JzBw>RB>fp9Yjm9Tx!FboSjs6=YGdetR`Q6A?M;fDP8i9=T_(+$PLs zMCsfLU!1Ybf^_P)J})%0b>TU^=J)!DVNMtOBy&UKaQyg-l|RbQa3gbdN37*>7KZ(# zC@Gn4ob-I_mn9p}s?DwHWWGsOoNm%lqhv0=i8!WjM~M%d+zMe zcN+J6rQ5RJUt^<2tq!$~6J9>8MKDR>(vD>2NK-WN4XtB-6_@=;n@zWBo!i+FdD0oN zBFvOS5EQ7#DkS*&S)s+1h~8Zsxxa?Ox@8rQn!N&ZFwXcLAhfbGd2Xx&ZUs+AnQ`l< zI9^tQZ8NqJ{QojIsqlScVB0`6Xs)7*VTTwgq?@6zaWyldkkTAWCKNBsvBlFI0yHvB z>O5ilT=x*g1WspU%F}yV9%kJY{SxWt;UalSx`p4TWqpbHI;meXX~>P~-tli~+mub` z3aU-p(MF;x!E?zDng!!>Nng)VzXLOf_)?-;wvV3U@&YUUfXH;!x2?h0>e--ZqexfV zVl1lOxJAVUwpmbC!b2V<#0!Jt=v^2lKD~>z$>Z486g>I6h(IRtXhZ9zSp;!QJ-I%{c!?BaDqW0vX@Qw9@vU@*4@sU`I9Xp!P5WXp zTp}P0OGEz%lhBjW(up=>Rnm7H#H48%AsF)`44KTTqy^6)JG4zE8=(xtC6PCo(q|U#8k&UL1s6y#L{ltvGoxcA-%8u~k)AHVnHefPcaUP1sw>?o7t zIk@`_?*5ba2HXXd0*#HZ70|_(x*MmtwaYzeGN^mmYg+w}DT{ykT^Hig%?8)HK$3Qj zKhWP-$F_FaF2z@@dbIu51x3bZezvy;NgCL_k;QIBQL!x%MV{iWDcI; zrW<|kJU{&SbO+_uHl~P7AYv3|a)AnDx0p@}g(L5aR6DNfAdu^*@=W}ZCNYRh*Hd%g zovSPm)>ycNb=L~=WT0;qNcFMCoQvYL{Zo7r7acgdgd45h?t$@V8r;0nZ7dt*4-;6H zK>ivZr;|gW3i72mN)M#2%6SsL)`QHDaW3G4xrNlgb_$MMvGA9&(}bOBO?ylkojb?3 z{ZyO?yfJ0!?MqVUC4 z59_$xHEwsXHi_x$@<|fuT~@IH>!F_zO}i-z{+TvZNjXcYv^p*KbQ7xGDE44P;T*rG&0S}+jbIqRU zCedE*@M+9V>PKrERCGLf8>@j};2MllMUp6C%x-40LvV-Gc^y*K8q572=XMK-7?Pag8Z2GrrD!c$&3T+Y``{BLUiKwKs0~WH!|AE{2EZO{ z?QTEC4C+e~q|H(7>hXaG!wzhm=%~23TwWr$R#N&At^Mtt7Ng;*UQeGBuF-$g@A!Pg_X6E1Mk@@U6RzZL*6xG9>i0@gFo z2vH9qvjjn*C;7OTbnh3r$AkMIKsaF2UQg2*@cc@T;S^qp%4y=XSzWTLw%JF_@}>lC zd|DJ*y36ocrwD1{yrBC~MSReg+HNEn!-so_mAeAZ}05n8E;;66?5aLE}P~CG`ob#raHW+CjK~UGz?3>ZI?mF z8;z{NZD)-J7W$*s)lU0~2V0%?lX?1KB#*e!IRtM6H7i#l+sIJ(MxE+|dsj-h@SR4! zv85u-0_KSalgvI9y37@9yItE2%7QcvThncg9Jg{B2?q5^>u+D)%!JDt+bUJ$>JtyT zS~L|&W%-CC`!-+tu)Z$~28l3e;IR7C%^JJP$;iC@?exiXzSG^N&V6=FE$7BiDUhZi zR<~Xr)_NJ$v83%#07bt+kEa=SKrL?HX7A&y!8x?DK>JAU6A#);ZH@xDNRJJvFoMvq zMJg~mF6x126WrD=vg0Qj?&=$v(wbz)?=Mm6iTmawPuv#?``LX^aTje()esP&_eE&h zv$HC{`|rJ%YyKpc-7c7;qwK|HZZCU$I(iBmyqrI7)2^SLpsOn#4fv#R@)4|q9fm4_2k?271oKNB}jmC>y2hgJDaQOkz)S&a(!#`dzGVM zYbQ`Ok~2MYV7-NcX{H2xIu1DBkTD;ALze}>;vT!A9m313DpDc%+jN+J?&N<%pY3bW zzLM_LsCQr*yyJyGqaJns_-#;+vHI&NStGF}HALVP+px;_Zlhw*n6jH8*USuon z)&sgiFq#lhYqOwb4D%h$iKIgHg!|wDYq22fFrIRM2LX3 z*N&~PWwK3PJ)H%Is7(`!7D`qOUI+T3-&NCWe@D?M4%cTgUpPep`!v#xWJ6?JduJ&V zGlG!EMQL#9beaW)M0nypttD{&NL$@fb_&*Hx78H^ok4Kln!;m|?xGN)O$3bm7zF2D zJZ`nG1oe>fV91*PWVY6s>|op@cGB3MTBgpf)q^dh9$@9}7y~H$ZfL)jO}$zRq8~;u z306cuSW9z8TZ&+}pRfw7q-Qr>dmOfVUmI}SZ@T%+{Za{B3hif zwwYVg@!KZ1Y~z4(b`EA{;)vllo+I(~^Hip@(043z$@=x$+gU+u{Mv_|DQS6`5){y3 z=gWy_gjZ@E$JZsfHQJ^3b|%yoM!g}oh_^UvoES6%8usF)*O((&``%!_QhozWVv||B zt+s!*=u{SZxG~3$HTTQ(CKAK^bhN3}vAn$l%|J06gVp{*Qn=w3GNkNByX2PH-0-J3 z5qI_Y)&o+1a+T&_j=AzcSD(6DS9XO9MycygWd#|tlPtzbT6cy_#Xa5??&iK}KbGxZ&_=av+%R2Maq!Fi-M3Ll$we8l%nWuhNx{b( z)(Vh%MPW&zAqk42mirSv52G<)!5a0{!4FSFgZ)_lREg)!;1Q+OW zUSj|F2yfkDQKtuj{kHL`j2U$!4snTKsHgHn2aVK6(SsoKFoT>W0<&dRD8g_o$UF)V{e_c~gs)2(r%B8wml%=5iqm!Gr=*>l9)Vu161HH7<5qv$ zK1HipX1MDa0s71VgyK3v$B2UBcCvDcL$FA71^1)fD6m&zWUQFjPFdE`2~6m;KxR@e zNGv%VnF}YpLy0#rfq|Wj48;xJf7lltVBUu>6!f{${ZF#+MMkFE7j6&d*wB;sI zddgucF&Vq%skmNT26PUqiC$*Q7a`xa+u1?%WgRk;x(@e@ir=0L=WEY3_IIv40`lIF z11(?-C$ZMgubcc-;3fmvQm&z9OGVhg}3jQ$^ZfcAp#(V1&BTDZKD;40$7bI z6s8JAihQblh<=7SjhQaI>PH@JqFQR3bK)k{G6%nDmmt9%rn*-3Vk)Ci}0mjI(1CIq_y zCV)8bXLyFFR_LUoMG$D&$s6iRaz#{j%eS<};1mb*%V=l$rWVI~Qv{0p*+UydIGGQK zO4aX$=M}sP0-om^mKYhDJ*JhN}vibkkpLJ^IumKfggXWiuMf zF6!f_J@9n&f$7pK?Go%Y5?GfXtO+3(qZAux*Why3ThhlqU*Ft0>i6Q?C|Y2WXQ<`E zA^CQ$+L|d&bzLjlC3V8YZHw-0Tw79x9_bw@X6SsJ_+h&%Vif?_fL+%95d0ySk1#0U z4555FT=6c}CD3*L9E`pnj!j}~KYzM`%fLvToWsqq6fopyBT=RW}*T^_Oi7!xkEp%W#cZozt%9BZ`TDh7II~ zF@eZ@G2Ol5CXY|1s)q9}hy0n3=Dm%PWQ`K+aE8;}_cmU?M)?~3FhfN^z1kR#&m>0i zS2?+9uiAy56w)kTc(agVwmm#vkhB-zsd6;hq&7ZRH^QpjTKbrUJzG`Urjb5J4CG_>42+}zN!z8>Cg^>Z`(G?bY zT~8Nphe(Ntch$y>u~C>hzZ4*96L*LZp+jLu=vlx;JDBM7;G%x^0bhB&!#U6!WQ>9o z9`a*>iv=RWjFX`U0w0Lo!LpQe7&CB`rG_2OET|8^20*%}FrBGUtbU3u zRF61_d2uSHVRVBqFP0z|fRejNiAr0MlCxRUlEuqhZJsisQfrQnX9$&a8U08nwX)$G zfH24pwk&EF$A9;^>^*_H#>{V^6iyk*N!ZlTwB`M>7HY8+-LnJ&J=>{+Io;Sv++z`) z3UR_cLiGL@fGDU9_i#sPcjA0{S!|Wy9~|F49`}rXUnN5_I&5?#;UVLXqgSj# z8$;<$*qUvhDqGof`)r7H=7RU!ZfS#hg?&?Q2K5x!y1v6+fYIwQzKnOkDnk5?p~!fb zgc>L(;le9MgK5L33E#f-B|u*km8humlrU?&Ry5y9jYE;Y)eFpOdPRHe&v^$sJ}8hY z13u%an=l?W{Ko9Og>#`iP27=z19APm)W>jOz$k|cIBo(_8Gaeg>a+Q}FpopPsa7)? zLNYkfB`aJ>uo0vUQNV{>ve3k(kITpp{LgSh7p~P9vZ(ZtSEX}I#G zs15WI_UY%{KV=c(nIJx4_>s1F{M}?RfXn8mF!J{}1or~1c=Wp3o07@^9x)_yE-Q3d zfcWS8)l0||2fG0WYtj$fV*my0gu8QD5%l_EHog3)M@3qIuk|XVbjoX2DIZsJ=a{Tg z^1~?#*)D+du6DyiD#N?@?~W<@A48Z*SE_hy_chPX1LeVOa~3$X6R0L}YjSxigcO8P zIA}5_=b5L9xv-fpML6QQ$&T#q4PG%^03VCNg`=g8jz{}cD`H^~Y`70e!Qta`wCMo+ zWpsE6-Nc$GHjK4;LJ1*%f*OEyBtKI`DaL3n#elh0I>MHOWF|9tl{X*g}TZPEh+J-BX>n&xR!@mv(-H@ zObKbo@lI!BVq(li>cR;NJ7bq7L#=$Wx;(>pN~1Nfr{|b9;Dy*EJ_2NwcMv45PNhO1 z=V88yq~v&0c?J^C%LInciO$ty;7+~HBqIm^z$;-nPG5@4_)1)D4B!1YK9_0peCmUQ zZ6w!VW;i1kYXc$|Y2d{H9!oQEM_KzVk6GGpb|R4^jS!DhyQh=UYlQZp)YtekXR4sh zY-wzM6*mQI-kmp(!VyUhA}6>5%M5HhMI|I}RgVd$h13De@RLNDD_jxF-)y{vGh^#& z?yLRv8<}3Iw#KGe zmf3mZCrpnLvqFe+e@yOe#7~Jq;-zkF?U-HoBI#<=Mo|0ZCJ{wsc6H?_?Gmr!Asi(M z*KM4Eq&n9<0<9{ZN#!UUYFMkuWd`jEt`p+w;JCpVe$m@e6fM$#L%v6*;a93X7_$vz?mBwBm~E##e@-{|sBO}Bu7 zw1?YuvFYsMn5CvttZ8}FQ3YDL(##C1E&TE@jNz2|6HiTs&bwq=u`~kZv`B_uY{A^3 zlB~k)NwoRIo3yu0edCN-PCIP0Vl(F-9pc2L8>)-Mu8 zqji*eVtd2|ccp^JleaFo*I(bf4#5)HXuePrS}jexbs9-)XNMebYCx-Ky*He^W^)@x zE4rkF$^>xNdIc%R*P>xKt)}4ty9yTIb#zG7doyIVdjnCmR9LZVb}aZntL9b3Ldc(Zo!t?q0Y;<|GLb2?=ziM!D znN_0%;3W@<_HgDmLS401v5?za09=aGsFO%-8%wib6dWnlAdiH1tBJK}&7XK3X$8o4 zgEAq&HR;JW(FVdnr?}eb@|?D<_PdD;Lg-$8nVkDdh}5B$uGE*I?>@tZ*2SnS6FSWT zXKi|+8FgQZR ziGljoc-k2MqZes3mp+DcR%!^Xj;xw06QyrlI_>?b>V{r*hqb#j*02!0J|{1&CiI5J ztq_=g_M5gYuHO|~gCbSjndWD;V0qOocU+=uyT`Y9%ho}l@<<*W0L{3ul0X*tvF9$6 z?g-+R14zZ4kcC`Y{DgLrM=T&|tEp8yaWsl&5@V&8v+8nDU_RLqh^c2dteG-1Xz6V7 z*=yOE!ARy#ly_j2FXhnIXs;;0yp6CnEyS=@B?EbDDZ9Pc+7!A<%T24TJz3&`s~VSv zH0^{=ZOnDoFSyn7gyW=65q-mW2j3IcoZaFCJSNxTymMj0(^M!*EW#0sra9uQP*d~Y zDm-E}zX2;-dFR23adW$Rv?g~!@CO>g6pldKIG+b#S^$oBC2^fL^Aw2v0jy2s%y_yh z)9$W$cgk`t9L6N|YRiRl5Cdi?Go6q!+jj{ZZ0^fXJCars0?MZ3PQ6FaF)r`2+7yM; zNAT4GWJ6uWaz45`SCr$0d!cem`4jkH^TS;AkfAjv^*b;dF>wKs=VM+T8G19dul~5;K|OQqg;tutXB-;sglD8oQ?!rdUAB z5kgB9J&2mxFryakOTy@JuYLL+hfT(x*Y7=jw)2PHa~u?ldxZn%SLKrje&kN^;t>Z2 zQ4PbYn{rSLQ2+3-+U#>$Aow@8?L z$ZIFZYcdQ?dnfY?mFFWL%`Y5@gef!rW4{pbbM!6Cfiuh)4b*5iy8d}@xA*M$Z^Luk z_$Y2^;qs3<4C-E`!q=K#1IJT!V=<|uo*?whPwdL>&BM6Lw6Wb9s_6GyS6V`Us*m2- z^xAq-tluUGu*}s}Uy8TVL8Kq2@^8#nZm5O0^PM?ykieJmTCeZMGDK^*wypHoP$Mvc zbV;8oYZhRNMNP7xqblC~9=N${IX4#*U8ZuI`GgZDFZ|&uV?M^!xoH>K>o(+57*#yS zwOor(z$SCbP&bdN;AN>M*X+|(_^qbPV1wy0!#hoNX8Z!|o_$o*bEv|pd=mZB^@{hu ztidzIWST?>sdV>#?yfN{XH7+irJ2f>K~+2O?5mOZT&k<&bLrkDy%+>@QMiYgOM2m( zH0%%H9?`e!r6HRQ_rgjW?^=~n<#zOd^>ceTqj7l>ZGyC<{8m#3tRK)HGqwN;F}-T@ zBjGRjuVcfIFwA{^A&5vu#|_7gj zAUh-mOVN~GQ#f0?ckgih@%>z3s_)d|F;Ed4JfVX@Kj<f10qz-1GReQb3U5D7Y1 zxp>woWzofeyoK645P3DpZ$5%kNRBcYLbg*Fimv6gCvUimZ`h$RZvKrZeeM&P$4+a! z{ruznip?!&W>E0*&V{_y@EcX)55R5AM>J#*KbDQ$`*MGg=NZ)yC&<$L29=bd9k}Bq zn=`cXL@NU!!Jr>xqYuNy8SB3-gvx;sC!t>70X^ood1sA*qUmD~yNvd`q_s(2B`Ah$ z{S45!-h5A|wP{yd8VvQXYGZTNfiu^;)hO(z;^=wY!PmEgC*6RiS zf3jt12a`j(GxWyeKHT(*8_uVT8^NlJJBi({xCLDrw<#V4doAu{szvS34O{x|im$ZR zSn;y>%EQFpi#ofUy?7)qNHM6tpS{1-xNME<{$TvphO0B&t1l7m5%U5fF;)l7wu?fT z?qYgo5wqbq`f^d&Zt%O157Pe6=#dxg7^!j`K-Zq;sM`c(22@B~x zn5kUI8Z*tB-vHbNuRq4+qkGK^9g(rM2ZkUd-o(iCb)mz|yalJx0g z9d%#pi-cizq*HQZIAz>xV+Wg%phshyXlMlD7x+-=3le@nZa`0=M_<+-aH&|U@4R5( zaSN5Jj(DQ^wz;>)lYuhP!C1bz^RQ@_xJ%N&;HzL-a|B%4LepgQ57|{od|!zJ!3zvn z>pq)vSd}>}#M8h32j{Qgsxuh(wigT;rZ)UX$?b)4-SRlF10_>Y7kPxq6rMzkSTin` zc;kzx1KMFjI-20YO8x}j1@>Xucotx=@r({uqzrC$QOt6m>`c1*U`O>eR-W|bKh;6t zFkNPt2*HQ-UvQ5>24MdG`rt1};3t1=eRns)Dl`?>h$as|_XRQbvTuEdAw}~{d7)^_ zV5tvx){IzEdjR{=zJ2rnTTv+H4xAvwT;a+9x)Q^pjZ2>h!xz)!>r?kR{h>2Urc9JA z4d)?QQxafHl*U~QT|QN@k4Jm6+}fVXe#YsOVVFfqxU6*dzmsoIreHYOl{;|Ft1Y=~ zL44VBOR?m*?eT@a)Q#X4x5whN#)J4IS)0H(XpYgnKz_QP>PXo{-X49 zxgyLyNMcOvuUMx#b9o9I@;qO^Ld`d@9B3ETEC&PR?oPQ96}+ijzX`)=72C=tLzAu4 zEtqa1-vj|AHY0LQ3(l99Ep3w|+D_D1+ZU&}4jIe}#${On`s@AO(oikQ{*?7)EsA&; zM;@Gq<*a#3eV6+U#1`B_S@}CgEDx&yg?0G`oXH-5R1I+B@(XR${)BFJaXAzHLrG~dbrJNX zYKa7TPqvag>-;Jl>->U$$K-?Ss;#ynk{fuauc*xCkIcV!%anQ69{@IgDqhHA1+9w0 z$=m6Iy7&6d@GUHsJ(9VU;~fYrOH#0ES5b`{EUkewAb>L+*_O3gWGGZR)1LjAz?A)u z0$wbLnRDBbZBXctu}t2+-NM_2!6jHZ*7)+O$hkQ3<+e9=o&@*K?ym zFY4pkAS~QvH0|He)%`-6{9O**GCnMabEy(EXe-2X1J`{(za%q*+n1VLfJimaC&5JL ztVijL&7ME6i~Fo%h0;jsNeO-Q^uv$l)r+_~c+X<8n$o?4>G-|8e%0)z=&(jD;Iuw6 zQ7~seokS9oolb1jcak>n!i8Me$(23OVRSe`C=d2zqL{9-Ncd!K56~~FZBJ3YWX2RO zk68qfClv9S+0bBBq<2+&H!(}|C0n!Gz-@zSdqfJ+v7-N=RhuS66XooXX0z3TZgvTn z+nyrCjQKN#TaoGUQn&24iJq+s1CmaLAbg&xOnHM4q1ac^Iq)Z+UoC({_&Kt`C~uTq zI9{J4`u^vA6I%F(T!)hFKvOKJO0{rd8Ch8aN~al$((Bq)aCqKR!lDrBx4l?iS z4}@p(E3a@h;}3w=C48R^nsnSmwf;1ZLcZ6|(+V6WW)fgVwxlnwE9j*ozAcIs|O|=J|ut_2JXfz#9Pwpu(86vxtXV0*9p#PzszXVmRmcL zjDoPMVON|yRMgcHI2j*$oT^I}YOnT{wTW{I0@V z8GdE07nz|u4CxO;a%Y54o=Ig-`$e`fPMe+S&Oxm4?NlFRUQ=QYf1i za^XG=F4fyK6N6?Dkp#)4EnqWQoDy@#3dA@o|B9s>NT`5}BgHiw;nIXsxs$RXZ`ytL~ZL(+)Ii1cPN8pPZ%-4y8oh1JBw8G^d`W?j_|%_X_=FNAa^Bo=HTA zxH?X=cNu|nUtoh4mXm06H&$CKjEYWbzmYmq_z&%(8V|v6rI9%`liEJIUh zLOC+SjVdB^k2I1l*Vz2DUKZTiN|xua*^CqEB>JcK_zvKTf^<(5*Qxu=$DM=0pv=s7 z$33GQSGH%#Z0I8)Un%HRAS9qCxI14XuJ!sEs`ST&GD7Cd@(bLX`_>{94yZN#PQUO*2QZ zP0hn9#)*?I%NM7NQM7dxDzKsqHNc4xu%^MSp_{#&R#KnPu;DnveLe#}D@-9g^`waC z3Ngu$OV`xF;FA*(T7U*l(9N|RGfFCC6&oWNAYzY;ki5){sn6T3m*n`yev@bELO>Qg;1KZi#+j{Pi@z@qI&rAEBW4Dmi z(7A-Hma4?u0=*`d;OAQ9cTzRtbQkg<&}O1+??1CD%k9Vz;|bt~+PpF){*4F6;UJ`d zDd{4u<$1LEWUaoZe5HF6(i<&GCLV$C{ZHrpP(C#h* zdE`QOQ@B@sFIZH)x!=PIb2a$>e)CDFLH42#5U0m<6?F?rk{iKtV`lYae)ft9AwNy? zO=EgS3~*!4!yA#?{rcxwd@PDEK{IG}f#=DwOZJ=}2nPx=-@!TA*2N!EtVL2{i+bjU z_1lJ1+?A+%#R6zgk)>}uS)5<#SlOy z*Oq6o#wMfBCmP(j5C#WAvF`XK;>x+=y>{Kr$8oob!)~R6DGGc%Sd; z6HSZlj)6St#9ke6^=;Nm#O z1c8ScONHi5dE6}R>k_>*3qNhQ~9GV-T_I_ETA^PLrrF}w}e9cd^lf#wwVv8 z>om%Umo_rP&~h3=2ietfv5~@N6B}Qc;Fhb|+}BHOz+|~p=;o_Sk_ufzQ|%4}`pLAo zYwlzTN&sNzCx7+=9G2fbSUEiG}p)1HuUVJMitUB!1(m^FWyVj<9=u zZqB)=Qh*GkKjM!V@#)n_UDxIy8>Sz>_C~44a7WTn%iLv>D-NX z{Z(3J#-(}}B__QTqF}mAxdBu8_2Xa#X1d9vBN5Mi{;xwh zWJPNgPay%fejyKz#>zQPN}WXOAX_t)@(YS&5g?APt*uqN)AIqFZgw=+G7!5l{rRPE zD`YKhDpxI8aV#M>5i7-&!SLypJ6%xH2SPu>M=||C>po*jFo2j6l$;mT=r(VaGKsID zv~Q{ISlkMYmy^ylrjo%DqpMF%<1M6Ac4a<A+ckw;W_lwzCwYOL8Jv-d2aAiB(-+J5&e`%Q&Su%e3Rh(_JRz2C-f3daG zul5G72UF`c=GDmn)9JAO)=#|k%z3a34}d`a`7lHomSnOwI2oJ~xQa}(H^6WN)?+@H z;c{1cDa(6iZ!jLb8`+=tb66hNqZ5+OUNrI^lxWE%3lY$C6xW%MxddFV*_-<3Y9LW8 z(&K9~q`c;oPH30z&m=cFJ>4Ro9^>HjgEr_G6U$!fQ4Ee)MavPV({hlDtU3h{z4?)0 z=c&@JXwnW&Wws+=4Nh)Od`OUtSeDKWLqQb=sTIF*&%fp=?B>#IVB=74E=kJ9p_5M) zxKr(YoPFS4Ivnj@A9rE}(cCX@ZUYiy$mJd$TXE5QfZXi&IZufdA2)(p9;g;#5Ez^K0Lc+QtnrTm)|vuh+#_?X zk_fQz9uTp4NaPpd?cP9C{eDUl>i}r?2vhpN4$iov4CqfBC{p$PaDq8RARkKP7^9Jt zOu|^IbI8IXy2p7O=p;(S^peAh<+Sd&jWM`MF}cnKIUu7b6q;a_G(u!K>4Vr7Ccs4E zavZ)L59iW;@7z7P(-91fIpjSvx&3$_%ygbpVP(Jx2A2-j6g<_WH#5~C9ZrY3mp+{g z`>CCc^}qRWY#!$9U`H3MnFf(w@!*am(Ljg6k!_&pFofzg{(|lUKTnPL6XZ2^}Ju;9DYuH@l`8uoZ3!5AEDV@(@ zv%^jOcE6NnqxEcCuqw5S101pO?coA*KCK@A2tzO}S3E%iipj})qw`rpJNJ;!G&+Yw zx7=)j!kx{HRJl>LoVH3K@#rzKoZ2^TMoian?{DM8e}~70?=wfb*j9e7=uIdgS4jY z?%p)*f0jY8l}9jwGWS0Iz&1|02MIpJ7vx{`&^%t@3gN!Vqs16D+U&nmoDCMdaxr*4 z)gL7b<`2hg;OeDoM&xW}k5C}xKlH7<(e;9zwPt0&{`j*-TF*?L6 zrUe%=aSCm#+Gp9GL?qlz22?0;Fq@u3OfsdjXR=LlBqeK!HB#O>jzniG?pYhjFsuVS z%f}oe0#=-7T5_4OJ6gw@i0v%!8BLqfgGyn)PIlJj5zL|?8szf+uz#R|FUL#^=zY% z@y??shbTq#9hX1;866{y?X!DxYxw6w{<$2CP1@9^4dtibazkR2%|Jk)t%h%iqtM`T z*xMK=H@0-QeCyGA&t!8E^U{;&+V7bdgoXCAm!y=ow3v{n6g2}j+eNOawT~C8Lte5w zHSNgZGR>`KFA{U3#b8mhbNz4ZLH*_KLh47zx?B~ar5+B0^z3(?d4oiWyHMD0F_CkY z3O4wMzvj07^rSGA-J9B3vxD({y*D4i^`eT#{oRze3$-Sci<3ZjCqi=uf(u}j?24>e z6^m?;28IO%BsZs@3}2(Hn$qlZxhu@CTmC9}Ad2*Jw0OD!SsU8P9Ou&io8fzngT&ba zszPv``M*YEOgdvTLW10fvH=~T^h0z5-{o4|TMSS;QrcI|R&>OwPK=+C{;+UOTJWV7 zSd(~2I{#LR!MANqeqyB84m(w@HodAzDL1xRG@)joY8*?V)g7x<`wiQ#5^bC}IWoyVK*39L z`X*c<^9}>uGIktGpm|!*pf@>5*|PgK;T@cYTf)RKQ&gx%(;*G- zv$^|0M3}d=>|3Xci7%zO@I8sHCFUMVg+j$#+cQb5p)eZ;_GNZ;z>V?X>Vrp1T5(4CBcPn3kk@1vE`&1C#_XbM#9UlmpE@ZJ}8a&i&ZxflCme?QcuRyFl2SA#XyE_z0LlBlB2;$r*dn@H;LgW%3T% z;SYDjnI;M3d>Dl2yf@NZAipwarAtu36`my@k;?a&_!B!MB4=zp-IedR5&9)83ub^n zyPYQP`3nJ7eo;L;2NN_OBYvS9&LXDCFuS}Z1heNnnx9a-1^jE>H8Q&^dde{2k|?VS zHV@R{3CbkU>TDh8W1X9@e3JXT#&>ba7|njjj-WTK49;DYF@w`NgA7H;hTUw3Sw!?| zLt!8qhk4+WUQ^S|wd&bKz6BSrmF&E?C4Y)auBPTi>#CLM)lU4h-XlPCq(h9N@Bqhq z=hHe|nayg-x-gqpeeZYjBQ^g|r`2Y~2ypJa98&qJx0^?y1i(9JYcnb3HmxTbp>AYz zOf(DgngXJcRw1psjj+6>Jaeo>JFd9paOm^mtJw{8Q5?cf6@*l8c5vKLJRq|%R$7uy zCL|;P!<%rh?vKvUn`L{rDKW3YeF4buMnbPO;@S}YhZDZFRW68WcZaLAu8g|x&M~i@ z4RBwuZKZWFALOhyQHBpuOR`nKb{MBFS`jxBBTIu&r5}b1`)ahK#Msv0w6UwZ4B-NB z(IX$(ht95?iS=e{{rSU(fc9fh3xWM7D9dNq9)&}a7&+;f78Rl! zyvuTl^xa`QtMs6s?zZ#Hwjas#!W~~YECLytu7(d*SNi0j(m6>=X=p$CmKv*jbdobE z0Zy+bq&GW5slJE%p2TZx0RV#e*!uET;Y3j0j)2MHU4TRxW0H$OSvWtU>&YRYeD0wy ztclY7Fd(&?Gu9|zC+JAdwN6-Shwg5_RSuQZ@Ov=(S4 zFY$xHIn)CCJHSl25KX$T2$#ew!8*tg#0PWy9_5hx2K>2P4CFS&0mn*NAu}Jy$9sO9 zV+RPEyl~B=q`-Ggov9ANSg|7mODA+RbLjK~-XklK%iL!XO_?328`kYIPJYW|Solnw zGq}7kimf!iBr_7-&Pj^W0~S}D+JfOsu##OmptLGM3#`PAQ(48?zE~V=X9Xu*yP5^6@egQbTT!hFS>8-sdL{u}Ufk+lDDWoEUh2*W1pp4=3m+1ju$ zo0P8-=bPgP)lwo2St|lW-En|>3!=?DZ3;{H4N0snFGW4fwjU)Ff5Q|YU+GH!%&UXZ z)$75CSex_%vBK=G@^BHmKmo8WYAKoJsyaZ^x-zt#lPP3sjC@^Y*U)|kOd;E}zy(g& zvl4#W%mGqb3`>`VpwU;noT(y3MN*d=(M$qPV`}H!vidqS970xl;h^lU52g;Ss6M^W zoG0_AY)|B)$x0)k*+#&^rjaV;6lgtBfQY*9oy!UqTa8)iZ~pqQ&PG)T9gWnSI#^tO z1fPWZRDUxlQjsL6H}I_=FeT|PtruR5cA2%_`e9O_q=F`cj^-DSgW1_B0q}Uo8{xX~ zYVW`L{jGgR3H7y{MiVIyt|UWn5!hg0B8FYt;9)A(HllC*tnt(beO%KAZJ>Ml*;qEW z44(CmMTjv8I^<+Xf&mG;KZU2+jmyPlk3J^?p?*Fb)VVQm$IRbBSuE4aI0~)i~$aRG~ z0URV5s8<%HkE<$hliL#T)0oyVqoQ%J_F|=T^cuF}A|#qojuXSp(Y4%;+dMeM>?%C* zWVVo3VEP3EJ4K_#6Gsla&3%3Y%`+Wr+21Mn6_#CZl_NlNM)(x5GxW2x77N=>iSt7? zgTO@1;;u&TR|;84?8}VBI85NK$l+(N-=O@vL^nAe;l z@}qS{R)D6(n*QR^15UqDr;n zyQ492As{p)6(&Rkr}{`8n`o|!@l`Kj6{Z8UhU9sFy=fx{1)bFJ>HEo^dVWF7HT$c0 zOL8lX;AuaL%P;I-#@ysc#st}MX7AVotwO(PTL#`*lIR=dPX^@3EK=chD;|>A7hN{S zTp5vrtDbA%b8gWZVMoRpC=5M_b3mHoF%7N5`3G)|4orQ`FxyMXEVNW73t4Kvh$5}G zILKnD=+FE7^Wk7Td06E%h(P5y41Hp4^ucwm-Z$y^&^XpW8AmTTU#0AVeIr%WikxUZ#$ApD^$Z87^ zRM?kVA_OMQO0KVa!<@`Bwn=&4-N=oY@J?vikWX#@dn7d=b%tC4&C$vTUAt*}u{LjK zLP97hFk!~c)qjP&NDk))=Axf2SQktyL&LmA7#V)}jiy1_Ml{TExL}st9JP(ReKu|ut;Eolc;|)S zDjro3rxmgRyZ+OpUnny%_)t14f+q2A-S7JT##D#@aYQvpyfFpm%8$6l^YoMP9^N-$ zt?fP0?_&+Kq{YyW(^mSRNm-3@i4uyu2o4tVVfFm~5srjmJN<1>Uu)<@r_UK*P+}<6 zF_bo$F6~n<{=L8R;@`J>Tja9GMXTNN=N~zRn3E*s=k)y*Jnbhr`x{TWnu~p(!<}qN zNaf~}hT_Dn7Xr;VKO7;ndcK%^1VzL7cv64$hu{5QBA(4t))t9*47KjeR4F{f3*jzD zO$-1IJdO%H#!?|~E*q8wZX1ItPEtFcy(b)YHn@yb@-28t;82u9KFcG-jO0x!>M6h` z%h$H7)2{@(`g;clO-|E)+fA?sMtb?YjZEEP#_Dv|rbx`kiG%s7t>=%Q?QU27SIwJr zY=G}H78ykObnz7J%a2~%CxgX2itH|4Q$%r_L zft{C`q?Yg?OB+NN_H6Fw7pzqqL(?-@#kWaZj7i~|ZALmHTas;d^X9w~rAY4ZOgLTI z#2oYQ?8R~Dnaj^ffoi?PhRk|ZhB-+`COQ?jGEDY@{fVuE5~RR+<=L5Z;FtN6SmS^!{Cv7Y|k)b z2kqq?aI#`}I!+!5(Uwl`2_&KuVYkX{shkU5ju*sxqL${~nGv<@{)^@eV6CF#v_+aP zr*?V0%nm{(aLZr8CWzyYIegk9c^i-kBF^Ip$b~J_-y$;){PvXMaBrM&1%7D3LVKd> zhFxiwupuY)N6{km7axJ0cSgyKn+)o(Y)B-o_=1`Sj-H#ScNRy2-*u?P~D6e>e&cx(vGBiU8y2z25k3QJ31 zqAfy=f}%oqWpfiqkHeoha~a#!#gC$ zi}U(l8#fR(SgSb|bDO7uUHU5dKyOu?{p-YZn=F0FMJGf?9wzWX!DE6lxs@`pMLd~8 z4|G0la$)R8s61ig*NV<)MR-h;WVCzMJ?58JAeO6yFvnadmA3r%kRGhSVf<0BY0c3c_a z!#e#LpZ7P~A1^qlHGG*xd}-|H0~Qlos?K9+Mgswsqb6#yF_-*GoEIE|)e0qZU%_q8 znt~Iu=n%vjynvGS4TM`L3I$4pret-^w_@qE^nq%n=rZ&exy%TXRLz=h2%oX8!(0T{4lD(6*tvg)i8j?$ShG)0-95!om#YZXh~L2#%il+Cbk;)yfA zqEa~#sXYS7l6xDRa+dUXunMt#NfxqLc{9I(AUx%IacdKrMy?k6<-CR$q}Nfo8-1I% zo2BSOoax}q+!demTc#gdsZeZa`>9>1>+H$jL4N(;87 ziQEQEgAb`jVZ)*k+42;wQ|}I0=BT$Mj*ueBH3k*1wtWl=ex7Ze`9De+Pa9$cgM?g$avDF*}49tO^4bkh5r|&Rvk1G8j@d&MX zs_rs}<_)IQPZC%dCK>ySLDXe4hIVCT7?1+uO;_y~)7{ql`KDD9HiEugu;T;v$nWfh z7>hBF>3B+P27C)v&H7^xR^v&%pq25D^)^;EAqWr}F>kiEPGp`7d>i}L^36DDj4{&e zrGv-fQff~WFriJv5weRRI_X&>xH6LL&sqyZB96hPJP1pP$+jk3h|)yv+Pgb{cQ*V2+~ledBYYb#CC~Wkf;xX zi2cI^V0)sI+8S7sQa5@~n~dV^yU>AdO7>x}H}`!t=nBPHnqSr^-9PUlL4RLVa+lzv z#_E{?{qA4N^w^(`>RobbF&t`S96iS#OeRC!nqB=(5pY|wKXRB4Y763)0v`S2NYrmx z7%EB3G<910@w-q4Ebh(*tOa`VU*>%M2t%x6$lEs%>q;eTqIVWMDS$mFr>MB z52@b{LS4JA;?F41-pk6b_}nl;LTniyu{GJkIsXPV(418z9yOsl+D~$f(Y2@hmY-;W zFxS3uS9@CN*;Bwh#cY;k3Q6p$;(ed*vPAJ|;26?JY3V_j2p_Uv#gz#&`C8GVDn+2> zs=~bbp#4IwPGXo<-+i91Rf04C$XI4_ldM(s-xBr23N@BQLM(ti<-O_N=FBF${cbSF z5{W$zZm#ozDXAYLR;!(vC_dW2*s_suB!i)TEP^84S06VyUQVzV4{fJOdrS9z>@MBg z={nbAy@=4&{IFXo9Oa|z&$+;1|2uR0AEg8^NLe0v$o>hBvNfG@!%*hz9S-qBevFW! z;?I}0csG8i*3ZPk4hJV(kHVAfkV&6Z}Xd&!KtFi|Nn{Cce3Fmxg63=;H4De*KRp!?QoJGh$s;Xx(bADA0+z zzQ0295C=9tUAwtCCF2VsDPWC95ghLHd;j`15d?NyG$W>|$hIxidn6rnOh$JZkWjHl zZwPrGofBd*L>_Y9EL5Cv1Gj+RS|pNN#65L2&RICmIO0FYbHVbV+E&Y4TW|mu4X3xp z?CkXqdb`szK@+1-SV1^u^JoW4erjjsGX8ZD#lt;9}KSv`ag5uifh_SzHD$vvp zi%nVVo4|UhZk)Dd3AJ>VECYdCtiT=}GWd{WWMc_U?Uo9k5sK(alf8tc;OpMO)}!4| z4mC2l420o#>wfWI3ub9FY(ZJ~oexvAk;?52oHc3o8AK4X+fUb-4dpS1ifTlPy!c2eJg-Tk*ItOP=+>6>MN`!)Zkm!cD z6V~-Pr45<0?x^~htY+6+eo|~1nz^0Lp2ts^?!+FbGsM$2(b!-iA8BLgLON5}AUY<1 zK}!0IZQ92=6Ow&k{bVmmtDmboWEwS?X0Q4&WMdETo)u6g?!0>uBjUzOV02S>O zMWzeMR2HS?pqXpS%S@hLPzpSjl56MX8@joiSPCr7Obv~bW6rQa^DU0kP0muy&m`}{ zbfC+R8cR0=ZiG9Un57+yW4 zq_>PBeJHjGnZtbwJUj<;_7u~Lc!>c*G7y{GXj&U99-Jbkl(jDCHkIT;OQ>9obWJSG0o3xrvCsw9UC=yt5fj zIZz;jfheckrqP9FxaZF}X2iC3r&E??pi9Ll@O`miZ>Tr}t!5p2Ab)B%^ClEgeb@GH zoSbmeIUEu_$T@Ht!Q=xi7L(@_-f1@JB?mYA9{T1_Z!ArY30gEMlLajez!%0NM&8uf zh;uXkH_heRZ5Yz^wTZgM1E?3==N6on zihQ=*zT}fc6^I2ood{>=w%)WFoRiwJdRSNn#q=^e_>SNneSg_bB}$OS3oB#(v^C@x z(|(BzCRkqkxzmy2V)RZJK47tk3ql5F6YChq2<99lR4R%Lsq8{NqIx|AEA-_;$3ZHv z$gxH8!ei8c5Le5JoU*&xVwWfQ6s5K7!_ye&Vu-!ayWs!}+e}`+k!D8(;$5UYNy~D} zsm=+r1#m6IYA!RG>T$&W|J3l zTaz+_Tr?Y?R8!`CO+Hb^8&aN=$bzmZVK!|4_iB=jK2xXm0h7y#98%9bN24Wq(ri=4~5#-3QqLN;v0N`k)B{ z*CoM7iLaVW7%2!bcy#Od9GfhLCuOcRHMl%q#|pF_15FqnSOgy#WWsJvK9U5(`p1MN zL4w|Qr;V34&)2aJFHmgs*mJ=Xd{|VDJRVR}FWHRVE z?5KUs#Bn*`fbW`#VHcL{-k#QW@UTwflh$Q&ZBuas^gGOPO;2-aM+(95EW6ViLI+QV zA1uxEMg4qx!?taFKXNr+)*setGT{IAe|+`z@Bevl`rBr>(+1yG|JbI&B`V;Nw9zDc z9Va0JwhrSAwzZlNBa`nvvlFAv#D!OZU}Bqp#y5!v!KV_AU>KHh&Tjn@KztWMwz~l4jc)v`7kT;uN}GWLsY~bTl4MHozL~kiveSAuX2;hgGn>JQ zrhwIHrTRkVTecWlhq4|NLC>7;_{9BYRVP~ySw|&a=p$FNv-vG3X)y2up-QU$FF+r8Wbvk|!((W4LUL3sr^D&-fG@sK zej2k?`{2T~s>4N`$a?q_r>=9&ANK^wUXXvp8Dud##|IP+E!P9kj$_`B zhYP%t7L~YIz3xN?vut-Olhe$8j4NzN|pIq@05LfZp=H!WqJDmilmi=$(Ll(>; zsWw?S+^^)N=T+jsJh)F-Rv=Y5gE*XFFsZjWar(2!ca?hupJr8AU$3voe2k*^*VeQZ zX%l?}S$pN^(x)>*wg3$}6$o-w z+;N*8JB2>=6$8a?Bn~{V7bGrw%Yt(M-ex(inEBR#|Kc~ii(0nL3i;%~-ngW0)uh{e z!u#GH`|E}(y1^^*0A}@@k5J~=tub5TC-ccMU;-j@nY;#ZLc-*m9LndNZVtuZJSYqH zX_KnG=0TWCQbnENZ^CuIT(pDl`WhXJDW_dF~qDFk>TtBT>{gk9t zN4m_A^|NPF_Ki#6ETeHFTkW=t1^l_M+>Sf0_)u#_mBLnRKc9M~MIXzB?@W;5r>9*> zX*JIh%=P^6ac^^azCg;qs>#*LKImps3DiPb433LH zZ9)L~JZgjMuQ;E>m6GWHOeZH=LM2hg2_t$m8^hB&vVr)0@-hfgRyRJeovpC9x87-u zzri5k3h9fbzV~{1`TkSOyeq~m*Yk;u6wSHySr;|>5qs6mE?2+%NvWxlhmed#=#4ir zJGR2kCvfU=l30*d$bH`PX=_Z56yY;Z>86BkQv1SCgIhSyQoO1#fKY%;(SE`{BB7ir zq`)`QyR=2786;50rlAdcQZVxuiWD$daz0%u9VDO)%W|XKWXAI@N+lHdz`2e`2!+av zb?=CE@`wA<=Rhee5~PWf*_w=qWEd6?F?Rk)DasObQM`i>l%!Y>^^~~0t^=HrGd&Q+ zRe3&OdiB=mB9hY{WrQaG!jI*0G?|}`03+59cJSex&lLx;Gg#!R59eP@RIE7y{M+Rv5Ztk;ANx*E_ z7u$@1T7%lLFkS0Iw)q6L72qtPbM96Q(2oLT)SiB6n+1v@Ah05zv(cW#@Q;-F?x zp02Dn?1K-^BV|yMVL^0~Q-Lv+r!CvI4C)NF!I@YfQ>Fm!*q7uIP4)&ZV$*(Y?Hkfy{6L?0xHEE1AwHFW4v}VR@0XV7218SH3+KD0mV40=7B%dMdyWphg| zZ(QqJRTgU30XIqy^AF}ZdpJIj_I{` z?sDF;O6sg?{#6zdIR+UCWi=%BT2q;-?*o3`+ zJZlSKmpa{33%fQhBKYBt2?f%YIy}916`%j-$GrySw%JQQ!DEhH%A; z)v~RFHk0Va5%_YQ5@mj}0*z90pld@5ev?JHu^+SGV7@}-aoud6A82~Rnq{Kch(11cCwp`Tr zUd@O95rdivt_6jbuQ_Kx%CHr3~u!0Ao8sxiM^APQgzc(_S;S>mJON(-NUIK_4~?z5b{sl z7blIJBy&qfLRS74gzNIp#R+Tgl;$DOaG`i?5C4cOl`tvWudl=w^_{192_PKkvFhUA z+Wt)6K}U>{anctHrTF_GLbb!l9jT$@x~2B0+^r0s9tq7KPn|>$S+lrCv~TtisvXdf zu$%UZ)&}V$1!=W`f^_N-g!VyU40u$?@C6G{H(r_tH0;@O^@Pw2^_NEt$FW7r72NdF zQ4-=22}v&qctf2gxbGS;rEX;KBA={LCl>0d&KLuC3O4EGo~EB!rXum(`xR=w(w~{z zWA*2M`Q0Di{=VK;h=@rwPywSl`*@*L$m#J`h=OpAnlbfwKTe?~e`!>pGn;101w_s4 z0f?%io(80YwgxhsrSeS-S-TwH_S$pF^lh30<$U`s|MAbi58h0tUvMUXcE@iC#4|qi zt@1`!-wyb%b%-#>2kTDGgN&JaY%Yv;drHa|ZGo8M(VVD2X33ME(4*6#q7l?=d2cjI z?BYvh%=KQ05={77StM2CDf_OkW5siqv1If#F2Q8_Nv^9ux2p7ybnRBHGw6F|`=g7i z3J4ZR-D4=3`zY*9Njq+<&w9s0m^J#hdgXSNriE@oRBF{H8j|0+ZBvquyNk5Gf3`-( z{O;3N<#7r7K+zH5*dy%hCNiP1SU7&j(St_eZ;uw38GJ{(L;c(T^V=v5GjewptvPe) z_gK5)JFA=EKEB?GeYK=S?Ti3KMC?MgTKjYGW286cHo^#psSqlq-o=4R>DNIChljogi1PV z@#j`!Q1)%d#HkNLF9wCCz=a8lM^U(4J0EI4E{8cWf&(Y98N6XaigicHDYs}2>fdd15% z0FQOV$bDsLWD(&7nmBl|9~zHg^NsR=#Ni8~gCep|pM|ZhGk; zs_Tj;jo%T3m89xUT1;2-fPCViA^8 zuXa8w?88sFNW4h3SnWz*Hi&F))_PMG)Fgb_uHd~zg3|fip~n=CAz`H(x92mG=XZ^D z8BnW*i_=!4wVajL7>x~DdM9x;^GN)%Y_QXA0&AC>ho5-Lab&o!_h-3WryF8{Xq9H@ zvn?vO#P)!c2*dV=JwFh{)aO9W1^mG`)m)@W4P2aH!*s+H;?c?kh+?IXnl^#cP z=S*X2L}5X2@wR>(>84y_Z8v$j^rnu|%Hd)*B5Sb>N{3Q8ijvyO+(W1JKh>OAIjmZ2!>(l)C2ZTgB7nY6|>h7wwf$1uI&1Koc-VhW@0ba zuuYN3v^b(fKn=1EZmCS7*$=F_TMc7}&4k=zpbpDtQ#s&#NKwLLDMAX($qU!l(Jj`T z`R7FCnlGi4_OmouhH5;lzFnM6$!$U^^^58yCsYC_56DwYy3Nt#cmQC};a``R z@2kIX1{mj2D()OXa6>?3IPq>2$wW!m8$Qknym3mE^bTm5JZgt5A43A4ADR z4e_qlFJAdnV6sTRUXf#izR40*`R@UyW?k$XwVIMuy=oC<^~x3Yboj=rr==mTdgabi z)vLtP0;_{DWou_85Q99hcCL~4&T*={^KXRczhMnk0-^;Sk|Jn~i#t3I^yoxpzP1}$ zs9Xsjt!S(zY;Cy`wp^JiJ9a0iS0_$m15Ns`w;G_y*mB}7KF+O<&NTtN`ZOB|+)Cyx z)I*(th-7zaUN=!1+q?0*v7EltRLg9YlvRi9D&^dVZ`VJ0!cuQ&?eP2VygL37 z!1c|;>dhO>qMZ3CxUCsq{83QG3DX}#$ofq0K@4EDBes6H$n^9|p+9lohz~*wpO)TZ z>!jJ^9fh=E*>Zr(M~U+U`po~ zVo(hxK)YU$&RN;wito6{jeKAM6%Xs*-ktxpzL##BX-se3FDuEfk!4e1ak5?vdMfMh zUsHCQl`XvY(vVoN9Le)VK%K~GZ0D9IJ@K6?1xbl>Np4IJjOh-Jj~#TW3}2GWG(N?tLm4)b+#%-N zlrv9p8+k=E67548oNQp4&nx%+f*T_5sI4ZK1=XN8$%yGE8L~q;)l}P-u*{@KseFmg z4-w%2jxjrs{)yux6auvo%Cty|=hfl+OKS_soKNX?l}Wp)UANqCfxi;I;3$NP89lvy dq@2pf533>}2h2a~#pth^m4u^e9;sxl`v1dmu^a#Z literal 0 HcmV?d00001 diff --git a/agora/locale/es_ES/LC_MESSAGES/agora.mo b/agora/locale/es_ES/LC_MESSAGES/agora.mo new file mode 100755 index 0000000000000000000000000000000000000000..ca6710c4c9cd6d627d955eb00aa9a013f22a66a9 GIT binary patch literal 164158 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 z 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 W(pj&=o^bW> zYDyg{p!t!>-Trp@2+jEe)7pD zqxH>=t&O|uqpj7u4^}s~*6;4Fb8U3{!N&i-OQ}%aZ>5tTQSO2}yL9wN6l@~wUX5;@ zxx!z(!~E6Ny%(5FL3bP#*=?)HqnR{0@T77c?Z17-dv-T18{2D0Lh{3t-=ymaX2yH{ zaYAV&wiPMaQtl?*S9oKTo{JFZKgy%bqVyN8>gzpILl5Wu^2*|+f1#B6`EwaK_rMON zXp@KZ!ynFmY&2}<7ZO6fDPbqD9KbUhWTE^8Oi7OQ+S$2OAhBQcyz>k?6!a>2ujK9J zEix>T{B}?}t*1{C&O+n*&W45+E1B1WBee@J6b_FF(1E-oz+FBnY!IO!f;!ca_NM0V zOG-ul$kt)3-S++&=iV!?MwLZF6_HXEg>rOTMB+7d#^5Q3Po66c3np@wO2}w!XQy6Q z2dvRgOnuEe2Tg4h;84|$S2)) zr|}$~NxzCNZj`@l5G|+jT`ABt-8+-2hMa=Mk;J>`!(m6QE3uq}@1}A-p-(7rI(M&> zJZ5_Oi?`SrQ69BT9JbQdmRn_v5MR^kS2HQ%?`W&np## zWzIb!zcQhq-Jh0dto?TcR_KTV+c5va@JBsd*6TzY1bo}{vbtpSbE%Hh+6ONa>2y)<1p15y|joWlU! z0}~+ou|zJqFc+-%-K~~Y=D6^la^&U-;e2NZp$}-dynj^i(BTFH*O^lhFUBjW)U3}p zw+{EgtuG!^#R%Us_S$aw&@Y%y`^U<>V6A-A&67j023!7!uAGu^7xMid>*=HJ%E70y zssN4m%+cZvAN9OC#U*UA=*eDd8)r?~C|UgwOh8=lI6FUKnpGrz_CG!o+s2obinr7_ zWp?>Kq*>qDTVKk!Vh*R5qGe33m?h?*BxIc{K;Dgs0_R6+W9S^G5Q3~qvRpCmf;*(& z6;)H3Zf(+gNFDj%b(KoAKu9dTw{I49icVk}N@mhs)v(*s{ExiVb*TEAVB|Gy z;G&_{sLhXi6c9Q^edLWE+C1-lUN8v6hg*geyl8B7D%93i6(aMZ#yw-}XIZ8JrxnU{ zfE`)!k)X24aExlBbq=p4zb&I7*?b}e{x4l!y(sx5niyMSlxUDw;RyY~0`sj<` z>={E7AcjL5YPu2n{g}cg#18jedj=H!+%z>PeN&jX3_N=mG>2vE^A*?hTe`m6o@>g1 zd+ybgavViQr)Egt-W%*$ZFTfN$nvv){w#}xv3tB!9su4JSdEBie|#Xsk%vePks_mt zZT))X^z1WlS8w&VY;XL8>3%=7BCpRagER=8% zBOrQA1XaXi225_lG(0)gZiBR$J)|zo;k7A!IH+wb|C2E_`z*&8E?d`jSHJmRkg|ZT zuf3saCU$}}Lr>_I@m0Ri3v~}x?9HkZTr&A`5ib}rSSdA{%6|f`=GKI-x{3-T#kOtB+%GG|8+D+THvsc#is^&9zOI z!yKbvVIfHdleZW_bR}l&x=>^Y`=3YKv7~CN*o~F$&uyv5fZUy%!_*eBALJeOA7Ndd zQiwUk{nE>-NaAGUqH22YAO`F<(z2D(s?KSwU{S>Fia>OEs!dFqoBoh&6u zh3hvwE#iovrP#3ogX=?>uLA&Pt&)w^j%F}m0%^J&n*>inTN){hUrrI1k}l8VCYL^N zaJ?*onLsY~y$ZM-&5pX~H@fG~nJBXqO-af7*3*hxHY;QjQz%n_$H#m3W6c3w&k3#X zK(NE9k`hwyJnB4O&|IJL9&Ix)LR5>6C^N#664-yGJ2=Skbz?+LtZ7K6JW^P*b_nX3 z_yseTr^Q9zQOB5>l16@dqzsL2><|mBSm!r}s?~Fk@pc9MYKpRU5mafuIji|X)wwWZ z@!^Yd6qO06YuqWc2k0q7vS}Dmw(=3YP<0%O*UA&;tSuZ)Djnbl16fOTZ78K*Cs|CX kuN2+0SB<&j#TxK)_wq*9q5(L0+=|3nQgVi~s-t literal 0 HcmV?d00001 diff --git a/agora/locale/fi_FI/LC_MESSAGES/agora.mo b/agora/locale/fi_FI/LC_MESSAGES/agora.mo new file mode 100755 index 0000000000000000000000000000000000000000..702bb551ce94278386cd6883343705ca32ec4cf8 GIT binary patch literal 153753 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 literal 0 HcmV?d00001 diff --git a/agora/locale/fr_FR/LC_MESSAGES/agora.mo b/agora/locale/fr_FR/LC_MESSAGES/agora.mo new file mode 100755 index 0000000000000000000000000000000000000000..17be9304b4114d429ed899ab5e892defc772cabf GIT binary patch literal 151332 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 VO`V69(lC=E86_H4 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 VrAEl!!>P28Zp;&5yY1o4`~QlAD=Pp1 literal 0 HcmV?d00001 diff --git a/agora/locale/it_IT/LC_MESSAGES/agora.mo b/agora/locale/it_IT/LC_MESSAGES/agora.mo new file mode 100755 index 0000000000000000000000000000000000000000..feca3d531b64cf4de56e882d9c569de7fae8d6be GIT binary patch literal 154393 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 literal 0 HcmV?d00001 diff --git a/agora/locale/lt_LT/LC_MESSAGES/agora.mo b/agora/locale/lt_LT/LC_MESSAGES/agora.mo new file mode 100755 index 0000000000000000000000000000000000000000..2dbb47a536cb82cb22b0c94baadf6f55b213203a GIT binary patch literal 151905 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�zxgl@}FVsI-THjDc?i!lr;U}T4pHSRg+#C!Th| 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 literal 0 HcmV?d00001 diff --git a/agora/locale/zh_TW/LC_MESSAGES/agora.mo b/agora/locale/zh_TW/LC_MESSAGES/agora.mo new file mode 100755 index 0000000000000000000000000000000000000000..8585510992eda0d6a331e6f8dc51a4e339075742 GIT binary patch literal 127989 zcmb^4b#zu&yYKx3cXz#!BuH>~cc-{Z0t5>r1c&18Zp9(E6ev=h;_eiuxD|(DWq*H} z7yGcEv;R3`oHfqkv!-2B*Gizze&3skqD=SVIvd@~D-A9!>E#t1%gf7ufO5UO9xeCs ziieLeKK_GoF-AByCd1g69^+tkjDm$RF_yp-SO-&MN6d&LFbA$g^?Mo9;#`ZmVE zn5$fzM3|IxT14q4GbZg9sT`?8@f>UuDYP{9gy7C~*OL`U- z#^YEAqpb7tDu4~J368^t_z=}^srAk(sPX=Uaj}Wn0X43ksPPZ9^k|GvdNQirB8-hI zQ1jnx`8!ba+=o7R3_bV~b*>U_@bXH4J{TVhqWYIW0Q0o%^SGP~e zQRB{x{+J6jo@S_dbV7|k7}bA2)H;nu&1a(J&qj?m994fSD((SGpF*woRaF0X%*UvB zuTcGcz~uND)jshi7dIVhA9AARQ4jSVcSX&AGOFEjbGLa3HJ`sRJ$^;KH)%Jshgb|X zo*Jm})kp1nGt_(nEk6u3p8l8^N22CA7xjLIV*=b|=~Jk4e-9P^8)}}>x48OoQT=Da zI9LERzp_{yJD}c&WvF$&iHh?Gli*9#dPV)s#f^#TKR&9y2Q|)YSOiOABJ7Qt$5`~k z8K`~VjoI)iY8=V7x_ZS?>rx37wa6 zmhZQnIg_rB>UWm88%vYEXXQRSTzLm`0_LN9Gp52vmLK_dx4v01CHbW=D>g>GFGErN ztiUXI3bhX(Q0o$Nr~CPl1hp?IF&X-rB~bIPXEsCaM*ymQAJq97hFZ7rsCAx(+OM6c z_Iu4EsCs8GDqgny8ydY_JFitx(k;dqJAWxr@%>Q!6|wvpsB_j7HQx@F4o1cAZ~3E8=WQZte&MKbZLst{ zRGed$e;IY|AEDyDNA25J%a3}CsC5az?ARNN;ZpSAZPfaEA93@~gqcYDqxz|B z`K?j?cf@Ge3$-5uQRAP0(Q&q=7op~}2GipX)V^Ou_4fhOValU!9)(f!tc%L;W=_P^ zq}QR^9YbGyhB-0uF_$ijY8Qm+XOyLvS^5uDyE~|Lh;iJ#&-qdL9Z>lbu`vFQ8qZtQ zcO%gW_wyP&chpLzIq??C7E+$g=)VLqv2MJi@Px%p1=fn4K?p)sPp&D(uvQxIKHTQIWY>B zvUGV=ocfjyK=mJn@o@+$-W1flm!rmU8WZ9r)cgDhb#A=QyLf3Z63OgX1#_a_o8GAY z2VyQ9iZO5#YJ58_eG=9GB~<+fsChp{_4g4q?t~ZIygeA1bUswPLa6mCjcQjJ6~BR{ z+oSe94E6n7fU$80YJP_-eG;|)f1>((iCUj;sQJga=-#JvsPPs?twUwZj{&If`D{#t zzoOb7#Ef_j%i=rKI168L19ee79KsZq)dXVN5)W5kL2= z{2gjtyf3@=EhZ}MhsiJ(Y919)?HX8qH`M$`qUJLL)$e-LxVND%9>Q|?+{*J@aq}*U zdar7r#@_`s{ywOn>hP)Vg=a)VK&!;x0^#mr?8a6g93lsP+G1M!wq??%Nrj2hp0)Ve*y9QY13&rCPn&ymKc@9z|I zGkQp0Le297YW))4a{HDQ_4A+>>U|7FmCr!E59?6hpM$9NI)>{10csv^QRmY8wi|C$ zRQ-6U^2Dfldn}zDHJ`$$^(&96S08mw+Mvq2qv8xe?duR!z1665wGCB&KdSy&)c9_o z*7Kw3eaH156E*H6sP-9A=gA+{PhQkK3R!tE)cRLI)vJlAupVk1gE2FXMzvpOZbFS~ z8}`S;sQ0z}UoK7))c9JV=F(@$4XTF4HyZxTmDYe_wfK~ zU9X_#``FSSQ0o)pt{ZP=)H-BE)z4??@@7rcI2xh)ZGoD1AZlDcqvkQeoPnx89~E~g zYCh{w^|xarJc5dM9JO!fP~*IbY4I7VeXM(~UJ}&zCN(O4PE>h*RR1M03RXnTzZxn| zE7X1s#PT>BtKdyD%Y7F=1U1e+7zKx+;*UnH^HkJ#XrAS-LydnMYTSD)eG=9F0_y$w z6Vu@lMOYGJeUECpvK)4HLjkheg>n?(L{`f%TRIFpw7`oRGi(Y zc84${o<*(mTU0%-hpt^*)H)?X<>yB2Qwdc2>ZtiQM6E|F)I2((#?uY;-5H3ba5HK= zZ!t4|#Jrg9k&9CY6}Jg0ULZ!tU{wFTQ1cuxNbA4L!8r)HeT?&oX{)OoCjS+OfB z{w&mYYY8g;4$I$<>gOctdwmsk9-pA*^&Iscyus2K<%yS9JFI}3?;2G59jNw)QRnh9 zs@)Uh|9O4pk2Lt;sr#-*e#V-S_CxhE1yz3*#>ADV{n>;b+=DuAw^85w*BA|>J$Jt+ z#YOdB8}nl;%#G7g`*8^M9(+N~KjGhQ+$pgLXt*{C%M-RTlteEhH8(%S0oa(4` zZjBmOKg@#TQRna{TOEHC8+khQRn;|s{SKX zKc6t-yuNbj+^Bk$QR~AEv<5bi-%tEd6LQIHjQ0uzeJc!z#6R7&<%&V6F z7wTL+Lbdy5Mtg1VlbHx(QJx&*VMbKkJg9XmWcjTy4(VWwkNr_`$D!I!#TYmrHNSAo zjvGx9m6^Sv4M^ZXR*=fx9LyQm*ryacFpDpWr{sQKhY&9^LSKdPbnt&19e6V&)xVI}O0 zTJO!MaqdUW>jY~5&Z6R6M76t)>h}@q`}zh||2_KPXH>fk|G55qFdOOYsCEr3zcs2| zd&}>P>ZccK`~%IAsCtu7nP*9*-Kw zX3O7$bx0pZjWgwEH=k^%IE7IAR2oxZO{|JRm=ZUm`Z;Cg7cKqL{DAsy{EM1rx-V{C zSy1yTgITaKD$Wp8f1^?T%tWorU*>z%{>S?2);lh$JSA$pIZ*8jqSm84>OHECir?Do zfT|yiT94kS^&E<7H^uVjp!Rhc=EaRxeh;_Dt%ZCy}r4A5~A9rM4e}U%g=*4 z*F`M9l%>m~=35oDZVgc1xlXA4AAss_mX)tZ&HE43dA*Jr-#gU#NaW=mu|EE&{)$?< zG-~~7qT)A2?MD|>yq>6WOhDC}gXu9GHIBom`TS)*MD4>fRQ*q={-S$(N32U+R603o z{nJ|72Nfqf>RjbUjUyix#^UIYVW@Rnj9GCDYW;6n`4h}ZI(a1Ti2uG)(d>(gvkvp) zL)3nziR>M*UjC^4s({LGfI83ZFe&y$&36)J!qupKIgJ|6JxhN;)sGX!jW;8x0=z7sd=2fEvdL)Hz#(6>v3{!B?nt%ooj#uQ2L; zs)6di8R~p=L%oNiQE?`r)^QGM{>xD7u?5xs5Nh8pqTYvVsQvkXio*s+j6XVRU3^gI zsVJ&_b=3MdMa^#-s@)6}5jyQT_dcIw$|4;zWz#+9ky-q|>0*tpaAowy5}{ zQ0IR-YCV2Mt@~EgxjBeh_ZO)196hFY#NSK&uo>y9sCk5AN!*EAkI$&_#EIp`lLXaY zCe-@oMy+Fc)c9+m=2ainzP;u5MvZ?UY8}E+<6nn5Pv=qR=z*obpynSxws*w)oDTK# zrZ8$Bilg?i0_uF$vUI390M*Y()H+Ns=b`4a3N`LuExikM4i2K)T||8cuA|Q1BUJs! zaa{lLQ1eZWTFYsT z{!*dhdrMuQNUcRXH%7yBu6sq55sPA-p^x#0$`CDM=qp0`x32Gev@!hy9q3U(R+BgR@;!{+= z@e;UxlcLr=9cukDqsCvz%8OgN0%jw>Dr!B$to&yzOL`RQ=frW;`*+_=lF;>24)wlN zN6jk$b#8)D>)#8tPNOV;8tQ$RXZagY`?3?&{u*k%AE4IlGv>wEiCmnLsCiXIo%`CT zb#H0;oy`!lH)?zXQSoM=)?qoSztyOD|ArdpUeq}}fr@(-)z3pzzwc4&`~?*!a$;9M z2IeQ747Fa>uo4EM>aRu3b2Dmw=TZGU!icz*{{^*v36r?~Q=NG@wUf; z7;5QNsCoW|ihBrk4o{%g@gn+QjHKQX|9+4Y^N?RjbRjklte*F?QX%~9(fjH*8pRc|gT{u0zW{EC{_Vbsr`*Qk22le=_c)IRu|MNsQr z5mm1mY9D_>tw#$~{f?;bU@z1-`=Qot0%{+oqx##7T91>cc5hJo;+4Xki+HH-Rtk*x zuA=%aj_S8O>i3dbsP=VH-=UVM@r0qy!(jB_T-18*M77_Ks(%tS&bz2M?=j+hrF7$n zfyz&W+TZk87jvQ3c?f34IjHsDgNk<+HQsyXGt@e~MeW09%a4`H;-luD9`$|7f!e?F zsD2xv#@hik{(-2U`=hOV8S1^?f~t22wGP)Y2p^#b>!x;?zXdZ-m;f=BRN7q2}2Wb^b?N{#?|0u0WmN1E_JGNA3GH)OYAH z>V5bZ6)$ckx9+LXpL9Xg_}ik&d!gn%3^l&7sBuk3t;-D5c-Eon?L&?K2x@-kEPV~N zFZWU7eu=6dDYF|-Ofv;)zJ93hO+M7`69rN8`3cpoDF$F0%Rh|1q)(%M&wh_uk6b?X zb077c4?~@+ji{evS5e=s_`dEv$%>k1Db)BYp!%(e>bHTFH@Ez@sP*iGns;ARyK zW6f!(IKQC2H_I^M_W@M9Yp8bjQS*Oh>3>lB`3<#y@%>z!%&2wrNA*(@HI7QC{cd3S z0jT(0Q1k3%>B*@6=34$@)c))=52M!o9BMsYp!WS8>im8}jVE>%H(n2_Uw_p47Dc_+ zZBgy|qsB4V9E;lD>8NqfLd_!_^uE+oz7 ze%_ZueNTFz<~<4Zy;_A;k-up3cYS`YqQ)DJ4e$)AKRoQlbF z*x!dy<2a4wFn><(i2pl;-q?ZkK5U2Ca(R1=z{!{!Q{;BvlPc&#dMN7m;gzWIJ;mu* zDUWx=f6usqs^^#2twRmWPWorefU8mKb`mv@=a>(D^SSkDf?CH>SQOWz%AcU(rpxcX zi{;UebQ|>G7}Pqg#)y4EjsGpqL7xI{JbO{&e~pTpzo3iT0ZWjcfPr`dYhd0&?&rcF z%t?9!D()?;hY1RMNBrL#1fup~FIL9qsC_J0#QnZE7_*Vyj2h=H)b~9`Q5WAA)xH7h zoD4<%+}eoU@D+B)HpSdNUBF<{#fp1-ZNk;4?_J9hZa%#*FX>-U=kN@c#7~$Jizji({1U1!vHqK}nNLH#_LZRKms?Wps82=)8OBh-FBL&Z&A z&h?WHbv}Jj=dU8_JoH7KuO*lZ&!P4+QhB#usZi@)0`;D^MUCrc%#5>8ad)A9uG~P4 z=O0u*sVaC!yeBnL<-w@)F~-unQ2ky(y{|DUx_J3f-@AI2?u}|c3l)D8YFrml@9k&Q zcR6DvmtP7szChG?$Dq#r63gFb`43R%@*CH8S3ZP8!P{c>Mv#ucaD;y>g7V6hk~eh9Z};AvGfp(I2Ra&{9TwB_oL>2 z2@~R7RK0ho-xspfbn90NRj&o=ee8r9e-G67reG|bhfy&cwN7g-e?My8C(TEeAGwx` z6Au;F-z0QJQR_1bHP88|cFR%YSdaN}JC?$~QT1}xcI#0PRj(qdU2W7l zG)C3yf|_R->gV?m)cZOQHJ{C>c^*a8yI|#aQ0w{;^?mr)%CpvS>sk;MuQIBiHmL7Z zM@)cSQ0I9dYFsl>^IeFlACB7h^{8{Q3pJjjsP(vsI*)Hr?|bCB?tRIJdT;BY>UGD8 zI1)AfQ>b%(4fXwt`;%KY4{AQG%s|wi<6UU!6{z{FN5$KQ z>US3^-Z9ko<{}os52){Do_g+mZG|~Vk3sdb4Yf|YQR{gb^?i7SI*$qKyYfB7kMK~Knu~-Z5i2ps`dQ?3BmhShjMyPqNML#@<`W`(; zeb=J2a^*=-`|ppXvAU(lqt5+Wtb@l;>zJmsTla#f_ooi(T(m=-hwiBJ(F=8M2U`9} z)cnR<`9jqE!cp_xhDGrNYM#;CxN#;#y$=~s=P)a(Jg4OsM)h0T(iKtt)-)TU&Sfjq zxVo4i)yj{e-kS@k@jgebk9S)aCmm{CbEC#v8WpcHDqaoC zZ;yJfg3S=rIKoi#8i^X`WYl`iLha*f%RhkH&ts@KuTlNHLyhYbDqg$*H(n1aUJ+Dz zY1F#cL&Xn7#p#Wz*AKN`Lr`%hVn$qqn%5tw@8}6jUqyXS|3dA<->7(RE&l^*ogxSF zd#bmWmj|`pecQQyhNIF`Q1O2;mzir(@wTA)*@ha|AE^Dfgc{!q)cH@;-mP~@)c2tg z>irEx&3`hg{W8poTT%15W9b*D-y>6Ya27z#s}AbtLqpWMwL^`k4{F@QQT4`~Q&IJ1 zTlpGuGpgNA)P5ha^f~h;>b-h`#qk@eUhyEeP8G2+={l%>SEKf86RN+xsP#OLIu|!l z`+64@=LxFaTT6ejbhM5xKOU-nGE1jLy-z-zBk#i7HQr8edja{JfSfZdNdBqRv@E)cORW_Ng!GJ2BGI zGg0GSiuz8hw(^6hb{A3oKEQnV3U$tXy1IGPLG5!FRGbh?_d)$U8))f;<}%d&twOy& zdo2G7s{IX1-$V8L*z(_6{%6$uy@Fl8F;Vg2nVC@Kg{{1d<&3h** z?s?Ssub7Wf5o%s% zP~-a(^`8BW+K+!w7h>g?c~xqvku` z3`dP~18O`wP~$y{YIhy=UA<%J_`TiulAz-In)y-dTNd?mskPZ2HSaE{`HeuGn>ncQ zZbr>xAL{q|bEtED3040NY8~F0Ur_54xsNj`s=gnpeqPki;fknrX^omkcT|5pQSb9m z)O)lDBYv+(jsF5_{%=t2qxE(BnhZUp{ZZvLQ0KOlrH7&7%rt+++@w#UFaC>~w@*K} zpQTXqsD~PNJJdY;qUJLgHSTe!c9Si=8nu5LQ19_})X%>&sCe(KJVt*PCn2hS8q_)U zLB-93T91OLpHJmb``i*WzwxMg3sK`)h7sok_50BdRQp}#F;xGTQS0^?bv{0#`j0-q z#Z7?9&xD#+9@KkN4HdUFs(t|KJa$3#-yd~OMxxefmbm~`Z#n8c*@CKn3>D`hY92RH z?e3aSQ2o6^orAZidT|EYx}o+Z4XRykR6m7KaVw(g*D~u_eq&3wG25fY-PzIu%pvAT zbDTNZoPqgiHy5>DXHf6`O;rC6Q2X=(wGWYgcHjN@Sders)PA)?tw%T1KKH|{I1_bV z_o3#09W~FlsB`rh)o-FfZk`@gJs(uP5~zO5qvF>=jjtK1UI6O7?~mHw>8Sl)ZRH2e z8>o4_L+xLT!Opa1Uex+kLXE2tY97Iu5yzt1tuqgx_U#I)-)E@!k%qW>Nl|gKp}qrU zQ1x1(#vO(l=Xg}RaB~N${z+8*r>OaR4|VP0q3Zjh;uk^1sg0`F5jBrqSPe&^A6`JU z`+}NB{9(?_sP!v?+K0NRdaY3N3q`$eBT?g-jp}bbD$Y@?g*Q>-$vNEBtAIMkO;PbW zqUsMowV#67a1G|b%c%X1I>O!$RQrUM_MrCP$IOkIZ!xnns(pPcZ-(l(J^Er_)OTqS z>btQPb-s6*hs@LF6;%8?sNZw`My*4KlcU9DR2}Hf`gRwpiL%qLO&0DDN z`8`zsF-Ez55~9YR4kPA?YL^>TuK;R2N?N)GYJLq+^@33CyIML7)vhn9-B8s2O+l^y z3eg{TsCZFEJL96_CbP7UrE{Xzs|4y?HAk&uPgLBYsBw%( z?f()~+*7D{mr>(+U_Q0-mzMsBTK9h~ootM&pW5`G;`w02c|?uB0_wX_8})uP!iaT4 z?Q2(5yFsXNj5cRkez>^-Rew8by^o{*es~V`y?cRrZ&HqR`e~!7tTw~>1Q0I3CD&8T~{$I87=cx64jf(Tdj5^MxZHRX>Iu(&0eVe8;074IhOw`YFv9z?argdbKQJk`7bT~(bAE}yZ;?T9MpNNjQahk z0qXpPp~g1`6@Mb;!6m5vFPhI$?V?U_-@DAHb66eKt}|xAL8x{sQTw8N^h%te;J z0<|t{&EHY;Jc|0c^vH}o$;~ULSrN65El}q@%p8IGPR&FQZbGfo1uK7xItNiFyYVH$ zoTQVZ#!(S9?|N3=!fcD0cL%e(<@ZI+>t}O>m5(=Ppx%cCsCC_mI_HN``*0o=_o4aH z{Afm+;`Svrs-Fy~bDhP~g;48U5*4SM$sP*fH`nfR}weFKq zaW|XWQT^`5ns^emPHCpPdcJ0M)Hrfmx(I6ACCv(`b*_$Dk0zEMh-%l_(qX82{Za49 z7%N|Z`gybh_4lv?sQtc=>c@MUn{NzMyx6FDBr#K>_CFnJzS&XlMKRPm)I^=DmZVF4nfA^UuQSJUjwfh@2uQ#au_nz+lo|hC=FEwgBxl#4Y zq57$e8ebjMxZ7ZM48a^Y-#me8_X+hre?yHY=?oV?11erYRJ~G`E{}>^13lQ>(gRWR zpMVAH938;B3#E5-B^}of+w^{x%R6pk}eHFFtcTwy40Tn;SEH}S+=ubKgYP?lY z^XX^hgHY=_!Sa`);;%%FV*@Jgc1s^aeSglQe(!x_>4dXgoIGYFRC#k$`+n%baj5U< zTGV{Epw8t!RKI6X{a!|`*KO2zpQ7gV61A`IF*in=oQ!2>rw00Vy=7tLa-v~@u>P2Q1R}d#{Ud8j<2Y=k> z^byoLUojt|#_=9CpA_@me)yu|=0$xs%AwY&394RK)Oqc1=?SR*=UM(5)cN0S`IjvJ z0cxKApw{avdNA4o7uOHfZvoUiDx&H&M#XP~TAvWqJo=#Ok3z+rjoP>QsP?N-^>?Gj zeGpaeym5`nfg_ zHIA*QIQz}RsQ4$$i>P=vEqxzV|8L8GV}7!H?bI{s993_UIo+INE^B8rRD^H1v zmj?Cy@2p)Omh_8pk)wk00*dH$POn(x`bgvUH%O z2cX6=2G#FGOD{&PW4NVPp}yzqQR{xf@-Jad($`S)h_%A4OEOg4^r(I_qt+)6X2%Ms zbJZPHZz!t&QI?*In$JR1{0*pnZ=t>;k5TiAw9?H#6)H|HGd~s}T?F+W2b+UX=VCHy z|7M}aw+PjKo#k(`^iI@!vJW+$JE-=rEd38^95Gh8I384-9H{ttEnN)t?<%EH?E|d5 zli33`jscb)gNifNoMrxEE;hr>HK^ZfHez%fBaF?Q26+`?jcf9Z=)#XZfR0^~YQJJk)&GqsDdKd~AM0?SIlWPCwK-7D1hp zI+h=Z8don=|ASEHaJc0!MxBe*R=x$*-wxD!aR#;C_fc`5q23>_wJu&fRC!`lek#;= zDGO>H^P%DtL(R7~YW~epml? zU+3oMhsrOH9&CmB4h%-^#{zRTYP?%5y&tuIr%>yA3qAM>HIGE=U3)(>pIHhOry6F( z23Q#fq1NpvYJYE_=J^b@&M#2?MBU)_DLHDLJg9a#Q1dEdHb$*?chq;FH|D^lsJQ1) zKQ}I-*6$grezcA5y^o7pM_*KaezO>=-?CO-3w3UqTX{RwzICzmAk_YiM70}d`Lj{& z7FzjA)Hv2z{t?SRi(0QssQtKuI`7X><4X9ei=P6uZfQ~Z{;2iHhg!dCsQ0n8l@CUZ zXA~;#bW1Nn#b0OXbEx&bWxhdQ($P1${&J$$wFGKDolx`bff`32OAoU0;g+6YPPP15 z<|0(PRj6~h5%qqYMD52#)VaHh8vk3sJspzA~t|RW04l%7ZQ4 z*Bok&GpC#L&2V!AYP{Pmy%%-aP@sgXF zQS;4%8c%gpzim-*JD~dSZVt5au~t3_)owOwd>c^T!L63wVeUi4J!0vT<^@zg*R1@W zr5{`RwWU9x{@&!Z!|iJp%tx{?>YR2)?PG{J%AAi{r_HE-_F%*~P(Qy;TKQ$nLi#T& zkNvxwPXbiG$x(4iq4ujPDo$h6yj!5Yi-D+p9DrKaiI%?#HNO3*aa_TScn1|H%1)Ob z6LroKq0X}hRh|bm-h!z1rBVGos@^zrIx5b5)Hs(|dX<&0N1e}Ymfnq;*J0Fm<%0PLwN779 z-@Vv-T|XYwK4(R>D`r+kty_ImzwNLbc0tA6h&o3HQSHxL{(aQCe6;fT`&@ZiRJ>fM zcBN70ttP79MyPoQTDmK0o%>n-1k^grMD;fhwNL9T{~BstZ==@#DJov{{ce2|p!)Nm z;$%aW=R(CPj9D-ci{S*+&$nZ!-z%PBQA}{awXcR6cWu1$3f7o*nWH`M!j z0=51RQRDc68i)5EuD@8Qe1FvMJ$X>;RR=ZxmX;rcT8Gi7b3YgL`$jmbzxAm42T}1) zn^(*`sP%e+>hB$DT%S;^aZ~Qxvs7Wv#rvl{Z1HLtE51dZE78<5BG< zS$Y<#-?`>ORQzS;I@I{Kn)^}fd=k~~6V$oJYQP*8_WO4(%y$%|Iy62sPQF1 z#rHL{V=24~WE&#?Rzn3eQeEQFU)>lOc~JHMGx`<53qjtXX7)b9^1 zQR5nbTF)Vt9*e3!$@~TNU0#J6_deAA9YM9bjEZyHypLL!C#e1MI_7@f#zxi8hpJ!P z(q&NNtZMnqQT?<*eGh_A-?6b)KF`V*nJdiosB!&<+J}Rv{kmxBzftl2MXi(PxI5nk zQ2%|nF4o5G=!^SN>-!k>JxF}Qz4sYV8t!qhC{f4OW?x^qQL{!}M<^fc_ z%cyp*Q2P+;oLg6a)Or-f>{uN$V{g>^_X{fS0o3>Cu9bV8cmE#hgPLbc)VL?2`U^+> zKDG}F<2}?mq`lzEYoYoJLhbW(RDXL==i|Ql2^BB?MYqmb&C00#ZI9Z=p;!i2V|{#% z)v(+p_kV{q5r>h!hnjEDWf!*}D$aCsBWnI9QTzBBOJJlcZe2^G-lKZh5u0N^JYwZv zFbC-bf4cQ3iHg$z_1?8JJE6Wm-B9sDEx*5|2b*J1--D^B_iG{Q=iho%yx%bz?!|0) z7&Y(LR$lU|t6vWF^Qac8T|-pdW~lWIvizZ_enz3<&NSzvz7xw(^Vx-84(e#W}#Ooy6(UR3;YsCe~JaXMIfkU15#PRr3Be?xr-@1pvT zbIZLCnJ_QuYN+`PM3v7(t=~G-`kl1$=csW-yY0r23N;RY)Vh~Ko%5y`@t&jJ?{HMy zW9Y#YThswfl_vPDJ|4 zm1jY%M-9}tnxpE4p~lf4)z5HLoN1`{U^eRK<091iv<4&2HLBhb)bGJ3QTy`>6(`bN z7dIgmAe{=;Uu{&phGrYH3+lZ0M#Y(d5$lHP?-;7xRn++JqsH?U^}fWs=i(!Ie`26c`)q2@6FHNGLJb1)j!&tlZ~X9ud?F4TS>Lbdx7wGTJZgKsc1 zCb{p*i=f(-M8&U!8edJb1!|qUqUO=l9E!fAC!yANE2{l9RJ^}X>-7{hj+hVJ`H6>` zXExOQ3S&;JimKNK6=xtS&Tv$}6Rdo$xzJpO`h9N|s{UqF++C=3IF0&_{Dm6l7u5Vb z51qMD^-H71RTmYf6>5KjQ18aAm+kA^HU}k zQ@(J&M^{3PXBHO3&8YsKqSp1BrBl9i??DdKIVgnsPECid z2^D9j%Y!R=yq8|8CTKcp4S|2CCf?^x)s9_VM4i z{t}_SZ^=>P%YcfL&B}|R;*_@X8mMtKK*i~Z8g~~f4?)%Mhx+|zl$9?*&2t56Up85K z2Wp=Wn#WQ7pGD2@FZ4!To$TSgI_COSA3Uy6mYzd-8-l%8K&~BTFFeR1M5bOW%X2kY ze+Iw6@&;M_T=>>v&ZhjfmCqu^AEb-mWGyOJQY@(j;5tIPeVQEC-{kElMq$+7TiQ`C zIrnGM^(@{#o}=^pfb#5=rJ%k)?bBHKT%Ol6M;`^`+D-f>q)%`U=Dtl{B&A z1FFd7OMY(R^d?`|Y3`9Wr)Bipkoy2-TToY1?i{qywFajU>j>@3k^YlA33cDmz9sdm zl3#>7p2g-@Rj;49|D|35i_w94q15TjUEJyg;5}kgur>NZof#SvJ|M3rMj=i+@|N&C zlA`Lg;Rr-rzwn^m~Oik9i)am|UOm1?fV#m3nW9^Aby8Yufuz zU)MT^S10P~ibMSe7XLTXmAF4|P_F=S>eA-}>_zqltM`fLZa=hnOCOP_)A5JACKjwP zdAI2+A@_M=rl9T}$`;tTa?wuLUGDhgl_TxX^LEDHjW*qFypxC%i?Qq{t#?>gQtCGQ zu}|8hB}NvD`4j0?v>9!E`4H~}?V{7B0(GWxU*x$H`BAuisTZ60uc;G-=lGQ8Ax3$N zr#^R+zl%C2sNam|*_2hIkN)IcR0Xc6mV8}*kmj%CUOR0b^UVFk`Pb@BurZCcbXj~!ym4J z^r`C>^|x^!CheghBlSA)T$p~&({8Gb`48&8x0n$P`C}&K2WfkWyCY@0tl$FaeZ(kB zxgW+QU4UnPEs3~F@ce=M4EaBE>l#Dffs|*rF)HsoWrb)zpL;yxI7uH%DQ`;Kt>lH{ zS=#7lPAZ;t>+{Z4CEq9?DB>@h#A^t54f+_)9Y~$Jqys6_b)CBi`L7tqS&Yj)pZ2G? zw^P=Y^jDsLyk^k;4E=t=eH09*uN2hN6>8&-OnNoXos{PJG5wvO-VM^@Xjg#ylEod# z^DwGqpxyw+(NJy4(}7<{{a8HLq3$TM=5o)cP7TWbNm zma-t8Us7+2)vIkDrtVnsd*fuwQ|#X4rMC1O(!+R8z&(`s3su3cmGl$a>J3!C^rx!{ z&nqo|4{f%Qf6NtmdGH?btI&2AWxAsBtm~`8tFX;~2I)++&4YDm^A7K01!C8xZCmSa z4eh7X<}zivQjpHU7?N0dJ1j|FLdw%vY}LzaV{E1b7k>qbxF%Yi>eSy#PI>Z!h>?~0 zsfZg&`AF2&igC2Z&D4EK`4#F-qrNYB<5ZXQFO+Q}os{x3JVz$KJNGl%M&?e&t!pN6 z|DygB>gbwF{Ye-Sk>d9j+TYStgR&HzNRo3dpqHQ(G`%*B9K3Z^pzgAKwCFNNd%Rkgf%Uzy$3%Dn6>#9Zl zx<9nJN*q7h=o&zsaN6q1Myx-0K1*3Xo-0%DH_9uMUPAstV(afUgUGK;ybPp+cz(+B z4C;qRM4>J9$C0n=DE22k*3vGQSDtvSY)myM*VT!;IrlHhC-1rClk)08{T-y=QC63J zqx}$X5_!?dn}`+F_J?aH?Vd0;{XLU^rt{jvd=e4okhRZEp03U0|4iF!lpP?i0&RXK zZ!qc_Z}q-WrzLe(k$ef*qq*DC@2}+R`i1*6dDpCt^7hiMsEwnoGPw3pCj+;xe`veVo?qcF z^k2jkdA%o2ck*g-N28yulyxF6n0X{5?;?4RNe{RFPtnhB)>iyU9bJjcV$_>Q+lsah zJ7{~7HZ`epnONQy=ONF!F3>I|c?0P;F?Cx}SAQQY%RPb^=gF(g^91fv)Cs_K7JEJE zo;CQ@F9y1I6f&P?o8-2KQ; zNPZXUkKtZV{U5KV)<$`UXxD@K%V@Wo{K(uHsK1H3A^G30VC9isjO7`_TkiclC!qb` zR60)j`&HTE_am>RJ!heAXP)bPuViMV&QQkqiT;}se>&+y)D0#bhPt}Z?jmI&Dkr}d zed?-b>bVH@I9;AI`@_I0aoW$&HdL^?uzmey|I0sWc zk>?#4M!E<6@SniFYI5s}K_1;jT;D9ul3vS6ub_Sz>+5^I{{6Zr`MM6#_z5xcQ8zCB zc=?hJVC=eXaet(42VyO>yh=aBJ!*N2O#btQ*AVJ|WIkEQ>k$!!-%)txKS_HHLjH-| ztC)>rnW9pot-D0eO`7jfAJ?gZlyb^ik=Gj&eP9x?)%&iY4?V{CvaDzEH!sp@)yv`m%Q&+I{IHtS!wdh z{?Ko9@^syz&G)Mq&kZb{m-$q*I0MK_MWy)knTh9|w4G(`9}&M7_jvAflpm*$60{AX z{&efF7G;@&Qh9`W3gc;#rPE2g>K`W^l_5l{m}rE_wa%6ZMZ${~`HtsMDXjx%E|&*um84PJCbTzh805 zdqR2yF}6{r>kBdd;Q2c7D$+ie%Z~Un5_L~f=3_DLVifA{rtVp4jJS~+4z;W z(c*tE-%k2Ab#!ecP62B>ggyg#zCnIX+8?1_HtIFN%G~#PK0$v^xZhC6gSvWCBGT@r)W2W^g`;cqU~6Ve}}T!JXfLJ zKioAaUq^W=^3z+L&E)H9#=2Z4#(!Q-$zMaABDA|^YrmKDLY`Y$j4w2L$z6iHQa=Q! zNST-jm7gK(Rc6W%GlXNZ|%sBSZ_Qxxg=0S!pLn;x>smFhrB|h=g_`3d3|V;8N;ck z>os-eQT8)+lJH!LGF`=J_m%XIS5)dO;@(W#_co7sINsXCrgBz`t9IVR(A9+aems}v z`5DjOuRivCo{XWit3`h)iS;x2g}J@SYiu!6TirXBUQ5{!#-ghW&-pFCD9gsA|<9|>2bn7P$`NQnFHP1b{=Tg4}{dA%J1nS1Lb`*Jyw*GEd z%xJW|OC|t4optWi99za<`~iqRmgRh z{95$!o5dKzb0gw>qbv?}lM(Njjdc%oI`Vv%^3CMWa@gT?gz$c^iwBlo<8M z&&Yk7zGKs_ALV;VZ{YbBdAh3btm`ECx>|A}S$zla#Y{$p!Xki7hq^|iF( zk08!5`j1Bb_iGUkQHk}CyC8Mn&@MgCr5Tft%~f?<+Vfo6PNU8??z_Z#Wn=%Fw&_VH zB!3jH;ntOcdl+r%+c<7f|LhNORVN1hji>x0ZMRT2H{~;U?n%C`WaO2l-7R8vv;JBr zpE?ytPba?;_YsSG(kxBPG?YK)zDeC5ukDoeA#XjI`MH~sE@AyG;kgSjVv=8-wpqDL zQ8y-i?B)3?&()}tiu!B0|DbLx>ZasAL0KQvRff7lskfZ*m%@B_g}evcy6Vx^!~L1E z72LWy(LR~-cuqopX?R{r{In6J{H|+lkB~ot=gpYU$`V@HR$^VEO+3mPqpkYQ z8xX%balT)1sQbkF?@GN)JV&McFy5q6D9)$OQ2N-(csB6-6VGRPe)~NL)*`+>O}*vZ zx?<2rHXEDLxvcN_Si+t!lYg4$LOr z<~b+rE|AVh*=o{1UR7y7mOHWK|6}o0C$CjpM?bns5Th%x_Sib?ATQMBk(T_)HjY4^ zD{_zip|44_Ilw)N{J0jcB5kLU*P8T8o^SEoi#9Ka^QYB`==g^}(o?pcJ3e)Fy*A$w zHwVuvTz16&zsKqmV*~dGVyoIOHn*S1+r^!o%ng)1r)?B&UA-LGvzQuBePNInS+#G0|mtrKfIl>J}pQD(;@7pAvsDx2}%dm3a=L-C*vFq(|U$6>@dt zIWFbxxifM{vGw~%S!&8^;5p(iqbw_B9eMU}|K~N3yh>#LiVdjypVvCe8)n_c3eVpLV)h)3%JY|3Ka@>TaQZKgz1$>WEsrhqOCp zZ7SOMS5S8m_d)8!r#zF@{gLhTsjDxsM({k6`zq~E;5)UozF$$NE%}2m1NphBUmLGe zPuES-ap|K!cVEUal(ep6*oJyD@f>${>hB@lh_V3u@ybHm0@TTa->;m+YHjuYC4U&{ z?i5~UEZcb=Oa0-*e8h7ZYqx;<@2OMC+O@SgJSML?^>cCSn#X;WwzEl}wY=gHCGL+_ z5Z~G=r<~Q%b3tMcJZH=;#H;%S5xdX{-Ou83!zu^ng zit|QjICKdKjHiEks z`I)WWca~e6@9B;9(1Z5L8OsjJH_~4c#`_z7v-$^l*45t9!PKouo2S;dacD%HrJ)rM;!8MlQ))e zY$nz+i`Rn~|4`>3_bb}|=kuLIs{wU&m7}Z~`Om0d*JVZgS&ewZs2j#uhLTgB`n|YA z$e&{MM$zsX&&#;GQ@4)wv!CZ_)XhN5K-vdepLJ+^l)A;p)0K|$Cgfctj;@2$JH{Q& z;vAq}N$Omu{CD!RlWxR4mb_%HiB}b?t7I6@r>UErx{YxG>Ax7qQJ&9{x7+GwB2U*+ z@^%tS*AVLL;Qqwjit=ezw>Igw-1DicDY7;_=oeXuyQ$zMWVSL%JgVv?TEJ&=2* z^)Y}Lf6~4T?dp-AfcpSteVEgqwEaZ+F49v;w;(;2@*x&5hV|8g_QB*2=H5(MRq7VN zKWMjrycFC$sndYGpKLs_t?fSY*O2$w@;lS^`*oDQ*V9&4xbi(&d_p||t^0&}TDK3* zO0rDbwt=CcodWxKd_t8D>dHez4W)VnQ`bFo2@VMf?xp8GfuTJDLtH`Y9v-iZKA{;s ztviPVwhrjy3G5vd+9TBE1%-OL2KVr^_5=il1h(xF9MUJ}e-!j=-8m@0)3!r!P}{)& zy)3Xx>!8k_)&T(_4D)|hX&c#YC+nvR6PO%in7uv*U?D+*1UEn=wNQH;*^=zovE?LA9LI|sCy^36 zvh3%4zHe1^_Y6Q%^11gu4=`O_`|{SiSM{Ot9Pp#?{z7RgUzx2GN|to6N0CGBH%DZ? zlq-$rgQ47)Nnm5*mw6oK|wKAxrkr!twKTa8`usa&Oy8!P(m5i6*wMxC8hUIaPCot@DGf?s~8**Vbzdq5}b zp#9cB^uQP60FryY(2~Nd3RI&s$CrG}pA1*>rwZj-HR=Y*LtLEde z91F*$&P=r}m@ULuu{_SM?T#nOUX1e~;7UBrhA)qg*D6|-?qmTJJ(kaxG*`B&hLss4 zSg$a-z%+*CwWh!?3vM3=)XIA1<5GS;Zo#62gjwYs%%4o&q34zy_HqB&fU8 zlCP*?;XqNGot`WxQFvo^x}w2n2Te~W^5d0-S9%d{0tju~q48aYelz_SELZYwg9x5fsY**!EcwC}SHAT5=4B^xJV zaEIR9X*#pjgi&VW?o#!ZfeyvJ#d2)|&>o8W3a3vO^9t=RPw6pOn3|r8kAS+;w~po`XR%6Ei{y$8M7%M_7MB9tx(%*4uqnrjUy58X}?=NAq6Dq*^stm zZE`E-v+Eu9qvE=uw_Gt-nX%N_T%lqCp<%G*P`*^t_Rqyb<%Ch}uBpQ+r! zaJUNT+l;X#;^2%Cu?p3q0<2O%Rfg(~wb~Vr)gT__8Y46ok~zsuOcX@3!Gwap+H4m4 zJ6`H`)pf;>3ti<(aj`rlIs<62TvP~Xs3S(}CJI$i2v|c>)Y1kND_4rTi`r}hRXs>?Gq2wmy5QcyQ7{Q1 zHRWM_D%Df~CMz?Se>w>k=ClnJt$N33Fvk=A$ex9qVvG8ZyHieuj>_nrV`O6?@LEfpw$Eg}B|vXbhZDi`fh(@x>N zTw0ic8;FN1<);^TuY&VB&{bY7@lG&O!hkcbW-{ZPjA$jk7tx zwJ^omY(_8<%os*mk;rImwsWowGd(A4H!FUN34;~@5tZB+B)8*Ofq~3dJ0IBd#V_q7 z7KC#u4~xxWjucLl+s7QTxrP>sC#WKiwQ!dX9^(6URPSTuZVe*>js)gcU*4 zxFI2k?FtvF)52}O2}2{=OkydkwXseot*PLY81E93S%G&K_`4^}N%xVVk=}uU&M#|( zOkJfmMsjsLUoz&!?Mp=z3bAFV7IM3XbApZWSdyj|yn4dA>G>hIA;$6`0_4uJaLo36 zJ3V95OqC>0fb5F3nG&084!LgHL=1xY85p8;h&eWYsncX^m9YV`e0R&2qNkS3c@Qd? zyrs&|kktfhtFTf4UFYe0O&mB6#BU^fCQ>1L&P^X5U#L`17WXo1o@FY`z@oC=)jV)8{z)<)0^|~&fsEmCvlUuLb_QK^Z zPN?p7@}=pk)@EnR6|w4~LfvBA^Dtyy`;skvL>sP!{C(E)eh~-z?l>~n*P}K|0%XX5 z(M2QrT~3Gu8_hfMM510rdYWpkfPN&~;j{{mD@3Tma+?KZ0QkT*`uI(^rv zEu2w18p~ARqHSuo#CA!(ZmYGDe+pR}@Elu+k97A993Als?q)Yr2cV*@c<1KHG&0h^ z=kB?*S4YsYwO4nFVL7cpAzz%R!myssSH^OMr^J|@Mhnn$cz=Jq@9A-Xts3>@CXnGO zaOvf$NnX-_b+twdD#d&#dO9})lf|f{pVG}!UIfE;E#>b@*)Maymq4wQFT{PCkZP`&V>W8VDXD)5 zR8G)lygyeh>je^exWWq1-5RAP3Q_NoUj7HcnIc?JHSL9AXgE6UUg$DPixNarT35}_ zI7Gp-yS=$03_F4lff;^g#>(_o0lO6E~rIo6iPc)sW#;x8deGf-Ml1I4O2p(@iW8R5RyDST+f zR7%RQz|4Cc(p*MdQOr(WGctUfALRN6Y zCJ>KiGoFKU(w?n`Nl;PG=Bcow9-)hqFsjU=n5A+hS6N6mOVY6!7Q?h)XdmZG5Dr0n z>?R^qV;pGOwQPSxp;#RxN7vz`UX-dO8%}GFV5i6Ppg9#nF%jPfi$9g06YqQ3sJdE2qGW$08RkJ2Rz(6n^l~;IKZ+$wI}&7q zEY=IlFoimv!3iV>b7<7H$1HY%z`_iBHwf#!<56!O@p*W7J#W`eb5 zSq+M#ve;zF**Ds`DO+kdPEDHv+r%Dc#It?h6`NQqyVkZ)5me|76yW){Q7_n@qd%BH z+^@kcS}owgtE4qaB-332DADX!vn6_@U*HxI7u0SVfVks8&z{depk?uCqm^8ui|Xhp zOnp&Ff>${L}fLgd2zY~y+}*!9!V353k?va)$%wTR>#3S zY)oltXS(6A8s%oIH0uM2_K}G4%$Vpc0f3!;YH+*&`p&{5Nu3CUY%E-;#^^?Q2G&Xs zb~RAop6Hwzj=eDqd%^>ll7k#&ct6F>qGYfq7z%A!ZyD}Eq$>?sq#39Uwv~{+!C*{I zqVs}kx8*Z%m3B?DZrf$Jue-V{9)XLRn-!*Uxan|hu4qQx)_U1-T590JsdhrDw70Gc zXckjk;B22;?LNvnRd&C-#78(YOnEXyjk1UPkRivV)|4hB$sv59T;f>7Jq6KWOBC{5 zCa#j71PT*NyRQzL51`4u1;wOQ-YqZPfx{~a*3JBsEerH+BUofAC&P9^1vx~nY!aot zH$A21c^qIc%_d|A`tCNE)9{A~y{a+A_ z3T&Xyp1Jr46oDW_VdB1lQ)NT~-hz%?CbD1;^CZ(|IGb*Uo9z<4@u#i4COs7QIkGim zlf_()yD2ikFD*DG?uDdl@MtS??@QHWpp3epYhoPl5iyVq)O?A9dKp!cHZfy@7 z2><4Ic9czpSy6!ds&T%v)qN+O)XBW~M(rKRPr*9i{Zww7ZELSH>*T65<|0&U1_j~5 z_Qhyf;9?oUUMfr2yoD{Jn>hhrz9qIi23J;!Q#9rL9@KgZ&I(Xrf`ZA_Vxz^40zKJD zv<$|uCV*#ALp0<4R*sM6&@>~;)L_pHowwA!MSMsq0@Rpn^)0g#GBdYrdK*}iN4`hd zE?X3+Zx&A{6r+7dTdEZAuO<^_Py<(l*X)Dq#ddVXBW1Wy(hv)TPnBiD@w~C*Kqocg z?l8_48b!LxO=;#S-~oIaUNJ6ADi*pXxuu4}Bai1qzBt?3eF-=yNV|InTYB!J15<3i zQ?2t|$@@H80IO{q-#%mYb~zo6Ve=%KZDZ>*iwQY2oj}S?v1X%0DL&bBXR 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%0D*B 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 z%;zMqpush($messages->getMessage(), 'horde.warning'); + $url = Horde::applicationUrl('forums.php', true); + header('Location: ' . $url); + exit; +} + +/* Get requested message, if fail then back to forums list. */ +$message = $messages->getMessage($message_id); +if ($message instanceof PEAR_Error) { + $notification->push(sprintf(_("Could not open the message. %s"), $message->getMessage()), 'horde.warning'); + header('Location: ' . Horde::applicationUrl('forums.php', true)); + exit; +} + +/* We have any moderators? */ +$forum = $messages->getForum(); +if (!isset($forum['moderators'])) { + $notification->push(_("No moderators are associated with this forum."), 'horde.warning'); + $url = Agora::setAgoraId($forum_id, $message_id, Horde::applicationUrl('messages/index.php', true), $scope); + header('Location: ' . $url); + exit; +} + +/* Get the form object. */ +$vars = Horde_Variables::getDefaultVariables(); +$form = new Horde_Form($vars, _("Report as abuse")); +$form->setButtons(array(_("Report as abuse"), _("Cancel"))); +$form->addHidden('', 'agora', 'text', false); +$form->addHidden('', 'scope', 'text', false); + +if ($form->validate()) { + + $url = Agora::setAgoraId($forum_id, $message_id, Horde::applicationUrl('messages/index.php', true), $scope); + + if ($vars->get('submitbutton') == _("Cancel")) { + header('Location: ' . $url); + exit; + } + + /* Collect moderators emails, and send them the notify */ + require_once 'Horde/Identity.php'; + $emails = array(); + foreach ($forum['moderators'] as $moderator) { + $identity = &Identity::singleton('none', $moderator); + $address = $identity->getValue('from_addr'); + if (!empty($address)) { + $emails[] = $address; + } + } + + if (empty($emails)) { + header('Location: ' . $url); + exit; + } + + $mail = new Horde_Mime_Mail(array( + 'subject' => sprintf(_("Message %s reported as abuse"), + $message_id), + 'body' => $url . "\n\n" . Horde_Auth::getAuth() . "\n\n" . $_SERVER["REMOTE_ADDR"], + 'to' => $emails, + 'from' => $emails[0], + 'charset' => Horde_Nls::getCharset())); + $mail->addHeader('User-Agent', 'Agora ' . $registry->getVersion()); + $mail->send(Horde::getMailerConfig()); + + $notification->push($subject, 'horde.success'); + header('Location: ' . $url); + exit; +} + +/* Set up template data. */ +$view = new Agora_View(); +$view->menu = Agora::getMenu('string'); +$view->formbox = Horde_Util::bufferOutput(array($form, 'renderActive'), null, $vars, 'abuse.php', 'post'); +$view->notify = Horde_Util::bufferOutput(array($notification, 'notify'), array('listeners' => 'status')); +$view->message_subject = $message['message_subject']; +$view->message_author = $message['message_author']; +$view->message_date = strftime($prefs->getValue('date_format'), $message['message_timestamp']); +$view->message_body = Agora_Messages::formatBody($message['body']); + +require AGORA_TEMPLATES . '/common-header.inc'; +echo $view->render('messages/form.html.php'); +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/agora/messages/delete.php b/agora/messages/delete.php new file mode 100644 index 000000000..8c3996783 --- /dev/null +++ b/agora/messages/delete.php @@ -0,0 +1,88 @@ + + */ + +define('AGORA_BASE', dirname(__FILE__) . '/..'); +require_once AGORA_BASE . '/lib/base.php'; +require_once AGORA_BASE . '/lib/Messages.php'; + +/* Set up the messages object. */ +list($forum_id, $message_id, $scope) = Agora::getAgoraId(); +$messages = &Agora_Messages::singleton($scope, $forum_id); +if ($messages instanceof PEAR_Error) { + $notification->push($messages->getMessage(), 'horde.warning'); + $url = Horde::applicationUrl('forums.php', true); + header('Location: ' . $url); + exit; +} + +/* Get requested message, if fail then back to forums list. */ +$message = $messages->getMessage($message_id); +if ($message instanceof PEAR_Error) { + $notification->push(sprintf(_("Could not open the message. %s"), $message->getMessage()), 'horde.warning'); + header('Location: ' . Horde::applicationUrl('forums.php', true)); + exit; +} + +/* Check delete permissions */ +if (!$messages->hasPermission(Horde_Perms::DELETE)) { + $notification->push(sprintf(_("You don't have permission to delete messages in forum %s."), $forum_id), 'horde.warning'); + $url = Agora::setAgoraId($forum_id, $message_id, Horde::applicationUrl('messages/index.php', true), $scope); + header('Location: ' . $url); + exit; +} + +/* Get the form object. */ +$vars = Horde_Variables::getDefaultVariables(); +$form = new Horde_Form($vars, sprintf(_("Delete \"%s\" and all replies?"), $message['message_subject'])); +$form->setButtons(array(_("Delete"), _("Cancel"))); +$form->addHidden('', 'agora', 'text', false); +$form->addHidden('', 'scope', 'text', false); + +if ($form->validate()) { + if ($vars->get('submitbutton') != _("Delete")) { + $notification->push(_("Message not deleted."), 'horde.message'); + $url = Agora::setAgoraId($forum_id, $message_id, Horde::applicationUrl('messages/index.php', true), $scope); + header('Location: ' . $url); + exit; + } + + $thread_id = $messages->deleteMessage($message_id); + if ($thread_id instanceof PEAR_Error) { + $notification->push(sprintf(_("Could not delete the message. %s"), $thread_id->getMessage()), 'horde.error'); + } elseif ($thread_id) { + $notification->push(_("Message deleted."), 'horde.success'); + $url = Agora::setAgoraId($forum_id, $thread_id, Horde::applicationUrl('messages/index.php', true), $scope); + header('Location: ' . $url); + exit; + } else { + $notification->push(_("Thread deleted."), 'horde.success'); + $url = Agora::setAgoraId($forum_id, null, Horde::applicationUrl('threads.php', true), $scope); + header('Location: ' . $url); + exit; + } +} + +/* Set up template data. */ +$view = new Agora_View(); +$view->message_subject = $message['message_subject']; +$view->message_author = $message['message_author']; +$view->message_date = $messages->dateFormat($message['message_timestamp']); +$view->message_body = Agora_Messages::formatBody($message['body']); +$view->menu = Agora::getMenu('string'); +$view->notify = Horde_Util::bufferOutput(array($notification, 'notify'), array('listeners' => 'status')); +$view->formbox = Horde_Util::bufferOutput(array($form, 'renderActive'), null, $vars, 'delete.php', 'post'); + +require AGORA_TEMPLATES . '/common-header.inc'; +echo $view->render('messages/form.html.php'); +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/agora/messages/edit.php b/agora/messages/edit.php new file mode 100644 index 000000000..ab4d404a0 --- /dev/null +++ b/agora/messages/edit.php @@ -0,0 +1,126 @@ + + */ + +define('AGORA_BASE', dirname(__FILE__) . '/..'); +require_once AGORA_BASE . '/lib/base.php'; +require_once AGORA_BASE . '/lib/Messages.php'; + +list($forum_id, $message_id, $scope) = Agora::getAgoraId(); +$message_parent_id = Horde_Util::getFormData('message_parent_id'); + +$vars = Horde_Variables::getDefaultVariables(); +$vars->set('scope', $scope); +$formname = $vars->get('formname'); + +/* Set up the messages control object. */ +$messages = &Agora_Messages::singleton($scope, $forum_id); +if ($messages instanceof PEAR_Error) { + $notification->push(_("Could not post the message: ") . $messages->getMessage(), 'horde.warning'); + $url = Horde::applicationUrl('forums.php', true); + header('Location: ' . $url); + exit; +} + +/* Check edit permissions */ +if (!$messages->hasPermission(Horde_Perms::EDIT)) { + $notification->push(sprintf(_("You don't have permission to post messages in forum %s."), $forum_id), 'horde.warning'); + $url = Agora::setAgoraId($forum_id, $message_id, Horde::applicationUrl('messages/index.php', true), $scope); + header('Location: ' . $url); + exit; +} + +/* Check if a message is being edited. */ +if ($message_id) { + $message = $messages->getMessage($message_id); + if (!$formname) { + $vars = new Horde_Variables($message); + $vars->set('message_subject', $message['message_subject']); + $vars->set('message_body', $message['body']); + } + if ($message['attachments']) { + $attachment_link = $messages->getAttachmentLink($message_id); + if ($attachment_link) { + $vars->set('attachment_preview', $attachment_link); + } + } +} else { + $vars->set('forum_id', $forum_id); + $vars->set('message_id', $message_id); +} + +/* Get the forum details. */ +$forum_name = $messages->_forum['forum_name']; + +/* Set the title. */ +$title = $message_parent_id ? + sprintf(_("Post a Reply to \"%s\""), $forum_name) : + ($message_id ? sprintf(_("Edit Message in \"%s\""), $forum_name) : + sprintf(_("Post a New Message to \"%s\""), $forum_name)); + +/* Get the form object. */ +$form = $messages->getForm($vars, $title, $message_id); + +/* Validate the form. */ +if ($form->validate($vars)) { + $form->getInfo($vars, $info); + + /* Try and store this message and get back a new message_id */ + $message_id = $messages->saveMessage($info); + if ($message_id instanceof PEAR_Error) { + $notification->push(_("Could not post the message: ") . $message_id->getDebugInfo(), 'horde.error'); + } else { + if ($messages->_forum['forum_moderated']) { + $notification->push(_("Your message has been enqueued and is awaiting moderation. It will become visible after moderator approval."), 'horde.success'); + } else { + $notification->push(_("Message posted."), 'horde.success'); + } + if (!empty($info['url'])) { + $url = Horde::url($info['url'], true); + } else { + $url = Agora::setAgoraId($forum_id, $message_id, Horde::applicationUrl('messages/index.php', true), $scope); + } + header('Location: ' . $url); + exit; + } +} + +/* Set up template */ +$view = new Agora_View(); + +/* Check if a parent message exists and set up tags accordingly. */ +if ($message_parent_id) { + $message = $messages->replyMessage($message_parent_id); + if (!($message instanceof PEAR_Error)) { + $vars->set('message_subject', $message['message_subject']); + $vars->set('message_body_old', $message['body']); + $view->message_subject = $message['message_subject']; + $view->message_author = $message['message_author']; + $view->message_body = $message['body']; + } else { + /* Bad parent message id, offer to do a regular post. */ + $message_parent_id = null; + $vars->set('message_parent_id', ''); + $notification->push(_("Invalid parent message, you will be posting this message as a new thread."), 'horde.warning'); + } +} + +$view->replying = $message_parent_id; +$view->menu = Agora::getMenu('string'); +$view->notify = Horde_Util::bufferOutput(array($notification, 'notify'), array('listeners' => 'status')); +$view->formbox = Horde_Util::bufferOutput(array($form, 'renderActive'), null, $vars, 'edit.php', 'post'); + +require AGORA_TEMPLATES . '/common-header.inc'; +echo $view->render('messages/edit.html.php'); +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/agora/messages/index.php b/agora/messages/index.php new file mode 100644 index 000000000..3e98b5494 --- /dev/null +++ b/agora/messages/index.php @@ -0,0 +1,221 @@ + + */ + +define('AGORA_BASE', dirname(__FILE__) . '/..'); +require_once AGORA_BASE . '/lib/base.php'; +require_once AGORA_BASE . '/lib/Messages.php'; +require_once 'Horde/Identity.php'; + +/* Set up the messages object. */ +list($forum_id, $message_id, $scope) = Agora::getAgoraId(); +$messages = &Agora_Messages::singleton($scope, $forum_id); +if ($messages instanceof PEAR_Error) { + $notification->push($messages->getMessage(), 'horde.warning'); + $url = Horde::applicationUrl('forums.php', true); + header('Location: ' . $url); + exit; +} + +/* Get requested message, if fail then back to forums list. */ +$message = $messages->getMessage($message_id); +if ($message instanceof PEAR_Error) { + $notification->push(sprintf(_("Could not open the message. %s"), $message->getMessage()), 'horde.warning'); + header('Location: ' . Horde::applicationUrl('forums.php', true)); + exit; +} + +/* Check if we must show bodies */ +if (($view_bodies = Horde_Util::getGet('bodies')) !== null) { + $prefs->setValue('thread_view_bodies', $view_bodies); +} else { + $view_bodies = $prefs->getValue('thread_view_bodies'); +} + +/* Get view settings. */ +$sort_by = ($view_bodies == 1) ? 'message_thread' : Agora::getSortBy('thread'); +$sort_dir = Agora::getSortDir('thread'); +$forum = $messages->getForum(); +$title = $forum['forum_name'] . ' :: ' . $message['message_subject']; +$thread_page = Horde_Util::getFormData('thread_page'); + +/* Count = replies + opening thread */ +$thread_count = $messages->countThreads($message['message_thread']); +if ($thread_count instanceof PEAR_Error) { + $notification->push(sprintf(_("Could not open the message. %s"), $thread_count->getMessage()), 'horde.warning'); + $thread_count = 0; +} else { + $thread_count++; +} + +/* Log thread views. */ +$seen = $messages->logView($message['message_thread']); + +/* Set thread page views */ +if ($view_bodies == 2) { + if ($thread_page === null && !$seen) { + /* Jump to the last page, if we already seen the thread */ + $thread_page = max(ceil($thread_count / $prefs->getValue('thread_per_page')) - 1, 0); + } + $thread_per_page = $prefs->getValue('thread_per_page'); + $thread_start = $thread_page * $thread_per_page; +} else { + $thread_page = 0; + $thread_per_page = 0; + $thread_start = 0; +} + +/* Set up template */ +$view = new Agora_View(); + +if (!$view_bodies) { + /* Get the author's avatar. */ + if ($conf['avatar']['allow_avatars']) { + $identity = &Identity::singleton('none', $message['message_author']); + $avatar_path = $identity->getValue('avatar_path'); + $message_author_avatar = Agora::validateAvatar($avatar_path) ? Agora::getAvatarUrl($avatar_path) : false; + $view->message_author_avatar = $message_author_avatar; + } + + $view->message_id = $message['message_id']; + $view->message_author = sprintf(_("Posted by %s on %s"), htmlspecialchars($message['message_author']), $messages->dateFormat($message['message_timestamp'])); + if (isset($message['message_author_moderator'])) { + $view->message_author_moderator = 1; + } + $view->message_subject = $message['message_subject']; + $view->message_body = Agora_Messages::formatBody($message['body']); + + if ($message['attachments']) { + $view->message_attachment = $messages->getAttachmentLink($message_id); + } + + $template_file = 'messages/message.html.php'; +} else { + $template_file = 'messages/index.html.php'; +} + +/* Actions. */ +$actions = array(); + +/* Check if the thread allows replies. */ +if (!$message['locked']) { + $url = Agora::setAgoraId($forum_id, null, Horde::applicationUrl('messages/edit.php')); + $url = Horde_Util::addParameter($url, 'message_parent_id', $message_id); + $actions[] = Horde::link($url, _("Reply")) . _("Reply") . ''; +} + +/* Add admin permissons */ +if ($messages->hasPermission(Horde_Perms::DELETE)) { + $url = Agora::setAgoraId($forum_id, $message_id, Horde::applicationUrl('messages/edit.php')); + $actions[] = Horde::link($url, _("Edit")) . _("Edit") . ''; + + $url = Agora::setAgoraId($forum_id, $message_id, Horde::applicationUrl('messages/delete.php')); + $actions[] = Horde::link($url, _("Delete")) . _("Delete") . ''; + + $url = Agora::setAgoraId($forum_id, $message_id, Horde::applicationUrl('messages/lock.php')); + $label = ($message['locked']) ? _("Unlock thread") : _("Lock thread"); + $actions[] = Horde::link($url, $label) . $label . ''; +} + +/* Get the message array and the sorted thread list. */ +$threads_list = $messages->getThreads($message['message_thread'], true, $sort_by, $sort_dir, ($view_bodies ? 1 : 0), '', null, $thread_start, $thread_per_page); +if ($threads_list instanceof PEAR_Error) { + $notification->push($threads_list->getMessage(), 'horde.error'); + header('Location: ' . Horde::applicationUrl('forums.php', true)); + exit; +} + +/* Set up pager. */ +if ($thread_count > $thread_per_page && $view_bodies == 2) { + $vars = new Horde_Variables(array('thread_page' => $thread_page)); + $pager_ob = new Horde_Ui_Pager('thread_page', $vars, array('num' => $thread_count, 'url' => 'messages/index.php', 'perpage' => $thread_per_page)); + $pager_ob->preserve('agora', Horde_Util::getFormData('agora')); + $view->pager_link = $pager_ob->render(); +} + +/* Set up the column headers. */ +$col_headers = array(array('message_thread' => _("Thread"), 'message_subject' => _("Subject")), 'message_author' => _("Posted by"), 'message_timestamp' => _("Date")); +$col_headers = Agora::formatColumnHeaders($col_headers, $sort_by, $sort_dir, 'thread'); + +/* Actions. */ +$url = Agora::setAgoraId($forum_id, $message_id, Horde::applicationUrl('messages/index.php')); + +/* Get the thread table. */ +switch ($view_bodies) { +case '2': + $threads_template = 'messages/flat.html.php'; + if (!$prefs->isLocked('thread_view_bodies')) { + $actions[] = Horde::link(Horde_Util::addParameter($url, 'bodies', 0), _("Hide bodies")) . _("Hide bodies") . ''; + $actions[] = Horde::link(Horde_Util::addParameter($url, 'bodies', 1), _("Thread")) . _("Thread") . ''; + } + $threads = $messages->getThreadsUI($threads_list, $col_headers, $view_bodies, $threads_template); + break; + +case '1': + $threads_template = 'messages/flat_thread.html.php'; + if (!$prefs->isLocked('thread_view_bodies')) { + $actions[] = Horde::link(Horde_Util::addParameter($url, 'bodies', 0), _("Hide bodies")) . _("Hide bodies") . ''; + $actions[] = Horde::link(Horde_Util::addParameter($url, 'bodies', 2), _("Flat")) . _("Flat") . ''; + } + + /* Resort messages by thread */ + require_once AGORA_BASE . '/lib/Tree/flat.php'; + $tree = new Horde_Tree_agoraflat('flatthread', array()); + foreach ($threads_list as &$node) { + $tree->addNode($node['message_id'], $node['parent'], $node['body'], $node['indent'], true, array(), $node); + } + + $threads = $tree->getTree(); + break; + +default: + $threads_template = false; + if (!$prefs->isLocked('thread_view_bodies')) { + $actions[] = Horde::link(Horde_Util::addParameter($url, 'bodies', 1), _("View bodies")) . _("View bodies") . ''; + } + $threads = $messages->getThreadsUI($threads_list, $col_headers, $view_bodies, $threads_template); + break; +} + +/* Set up the main template tags. */ +$view->menu = Agora::getMenu('string'); +$view->notify = Horde_Util::bufferOutput(array($notification, 'notify'), array('listeners' => 'status')); +$view->actions = $actions; +$view->threads = $threads; +$view->rss = Horde_Util::addParameter(Horde::applicationUrl('rss/messages.php', true, -1), array('scope' => $scope, 'message_id' => $message_id, 'forum_id' => $forum_id)); + +/* Display an edit-dialogue if the thread is not locked and we can edit messages in them. */ +if (!$messages->hasPermission(Horde_Perms::EDIT)) { + $message = sprintf(_("You don't have permission to post messages in forum %s."), $forum['forum_name']); + if (!empty($conf['hooks']['permsdenied'])) { + $message = Horde::callHook('perms_denied', array('agora'), 'horde', $message); + } + $view->form = $message; +} elseif ($message['locked']) { + $view->form = _("Thread locked."); +} else { + $reply = $messages->replyMessage($message); + $vars = Horde_Variables::getDefaultVariables(); + $vars->set('forum_id', $forum_id); + $vars->set('message_parent_id', $message_id); + $vars->set('message_subject', $reply['message_subject']); + $vars->set('message_body_old', $reply['body']); + $form = $messages->getForm($vars, sprintf(_("Post a Reply to \"%s\""), $reply['message_subject'])); + $view->form = Horde_Util::bufferOutput(array($form, 'renderActive'), null, null, 'edit.php', 'post', null, false); +} + +Horde::addScriptFile('hideable.js', 'horde', true); +Horde::addScriptFile('stripe.js', 'horde', true); +require AGORA_TEMPLATES . '/common-header.inc'; +echo $view->render($template_file); +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/agora/messages/lock.php b/agora/messages/lock.php new file mode 100644 index 000000000..1582bef38 --- /dev/null +++ b/agora/messages/lock.php @@ -0,0 +1,84 @@ + + */ + +define('AGORA_BASE', dirname(__FILE__) . '/..'); +require_once AGORA_BASE . '/lib/base.php'; +require_once AGORA_BASE . '/lib/Messages.php'; + +/* Set up the messages object. */ +list($forum_id, $message_id, $scope) = Agora::getAgoraId(); +$messages = &Agora_Messages::singleton($scope, $forum_id); +if ($messages instanceof PEAR_Error) { + $notification->push($messages->getMessage(), 'horde.warning'); + $url = Horde::applicationUrl('forums.php', true); + header('Location: ' . $url); + exit; +} + +/* Get requested message, if fail then back to forums list. */ +$message = $messages->getMessage($message_id); +if ($message instanceof PEAR_Error) { + $notification->push(sprintf(_("Could not open the message. %s"), $message->getMessage()), 'horde.warning'); + header('Location: ' . Horde::applicationUrl('forums.php', true)); + exit; +} + +/* Check delete permissions */ +if (!$messages->hasPermission(Horde_Perms::DELETE)) { + $notification->push(sprintf(_("You don't have permission to delete messages in forum %s."), $forum_id), 'horde.warning'); + $url = Agora::setAgoraId($forum_id, $message_id, Horde::applicationUrl('messages/index.php', true), $scope); + header('Location: ' . $url); + exit; +} + +/* Get the form object. */ +$vars = Horde_Variables::getDefaultVariables(); +$form = new Horde_Form($vars, sprintf(_("Locking thread \"%s\""), $message['message_subject'])); +$form->setButtons(_("Update"), true); +$form->addHidden('', 'agora', 'text', false); +$v = &$form->addVariable(_("Allow replies in this thread"), 'message_lock', 'radio', true, false, null, array(array('0' => _("Yes, allow replies"), '1' => _("No, do not allow replies")))); +$v->setDefault('0'); + +if ($form->validate()) { + $form->getInfo($vars, $info); + + /* Try and delete this message. */ + $result = $messages->setThreadLock($message_id, $info['message_lock']); + if ($result instanceof PEAR_Error) { + $notification->push(sprintf(_("Could not lock the thread. %s"), $result->getMessage()), 'horde.error'); + } else { + if ($info['message_lock']) { + $notification->push(_("Thread locked."), 'horde.success'); + } else { + $notification->push(_("Thread unlocked."), 'horde.success'); + } + $url = Agora::setAgoraId($forum_id, $message_id, Horde::applicationUrl('messages/index.php', true)); + header('Location: ' . $url); + exit; + } +} + +/* Set up template data. */ +$view = new Agora_View(); +$view->menu = Agora::getMenu('string'); +$view->formbox = Horde_Util::bufferOutput(array($form, 'renderActive'), null, $vars, 'lock.php', 'post'); +$view->notify = Horde_Util::bufferOutput(array($notification, 'notify'), array('listeners' => 'status')); +$view->message_subject = $message['message_subject']; +$view->message_author = $message['message_author']; +$view->message_date = strftime($prefs->getValue('date_format'), $message['message_timestamp']); +$view->message_body = Agora_Messages::formatBody($message['body']); + +require AGORA_TEMPLATES . '/common-header.inc'; +echo $view->render('messages/form.html.php'); +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/agora/messages/merge.php b/agora/messages/merge.php new file mode 100644 index 000000000..df767d583 --- /dev/null +++ b/agora/messages/merge.php @@ -0,0 +1,94 @@ +push($messages->getMessage(), 'horde.warning'); + $url = Horde::applicationUrl('forums.php', true); + header('Location: ' . $url); + exit; +} + +/* Get requested message, if fail then back to forums list. */ +$message = $messages->getMessage($message_id); +if ($message instanceof PEAR_Error) { + $notification->push(sprintf(_("Could not open the message. %s"), $message->getMessage()), 'horde.warning'); + header('Location: ' . Horde::applicationUrl('forums.php', true)); + exit; +} + +/* Check delete permissions */ +if (!$messages->hasPermission(Horde_Perms::DELETE)) { + $notification->push(sprintf(_("You don't have permission to delete messages in forum %s."), $forum_id), 'horde.warning'); + $url = Agora::setAgoraId($forum_id, $message_id, Horde::applicationUrl('messages/index.php', true), $scope); + header('Location: ' . $url); + exit; +} + +/* Get the form object. */ +$vars = Horde_Variables::getDefaultVariables(); +$form = new Horde_Form($vars, sprintf(_("Merge \"%s\" with another thread"), $message['message_subject'])); +$form->setButtons(array(_("Merge"), _("Cancel"))); +$form->addHidden('', 'agora', 'text', false); +$form->addHidden('', 'scope', 'text', false); + +$action_submit = Horde_Form_Action::factory('submit'); +$threads_list = array(); +foreach ($messages->getThreads(0, false, 'message_subject', 0) as $id => $thread) { + $threads_list[$id] = $thread['message_subject']; +} + +$v = &$form->addVariable(_("With Thread: "), 'new_thread_id', 'enum', true, false, null, array($threads_list)); +$v->setAction($action_submit); +$v->setOption('trackchange', true); + +if ($vars->get('new_thread_id')) { + $message_list = array(); + foreach ($messages->getThreads($vars->get('new_thread_id'), true, 'message_timestamp') as $id => $thread) { + $message_list[$id] = $thread['message_subject'] . ' (' . $thread['message_author'] . ' ' . $thread['message_date'] . ')'; + } + $form->addVariable(_("After Message: "), 'after_message_id', 'enum', true, false, null, array($message_list)); +} + +/* Validate the form. */ +if ($form->validate()) { + $form->getInfo($vars, $info); + + if ($vars->get('submitbutton') == _("Merge")) { + $merge = $messages->mergeThread($message_id, $info['after_message_id']); + if ($merge instanceof PEAR_Error) { + $notification->push($merge->getMessage(), 'horde.error'); + } else { + $notification->push(sprintf(_("Thread %s merged with thread %s after message %s."), $message_id, $info['new_thread_id'], $info['after_message_id']), 'horde.error'); + header('Location: ' . Agora::setAgoraId($forum_id, $info['new_thread_id'], Horde::applicationUrl('messages/index.php', true), $scope)); + exit; + } + } +} + +/* Template object. */ +$view = new Agora_View(); +$view->menu = Agora::getMenu('string'); +$view->main = Horde_Util::bufferOutput(array($form, 'renderActive'), null, $vars, 'merge.php', 'post'); +$view->message_subject = $message['message_subject']; +$view->message_author = $message['message_author']; +$view->message_body = Agora_Messages::formatBody($message['body']); + +require AGORA_TEMPLATES . '/common-header.inc'; +echo $view->render('main.html.php'); +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/agora/messages/move.php b/agora/messages/move.php new file mode 100644 index 000000000..9becb4948 --- /dev/null +++ b/agora/messages/move.php @@ -0,0 +1,80 @@ +push($messages->getMessage(), 'horde.warning'); + $url = Horde::applicationUrl('forums.php', true); + header('Location: ' . $url); + exit; +} + +/* Get requested message, if fail then back to forums list. */ +$message = $messages->getMessage($message_id); +if ($message instanceof PEAR_Error) { + $notification->push(sprintf(_("Could not open the message. %s"), $message->getMessage()), 'horde.warning'); + header('Location: ' . Horde::applicationUrl('forums.php', true)); + exit; +} + +/* Check delete permissions */ +if (!$messages->hasPermission(Horde_Perms::DELETE)) { + $notification->push(sprintf(_("You don't have permission to delete messages in forum %s."), $forum_id), 'horde.warning'); + $url = Agora::setAgoraId($forum_id, $message_id, Horde::applicationUrl('messages/index.php', true), $scope); + header('Location: ' . $url); + exit; +} + +/* Get the form object. */ +$vars = Horde_Variables::getDefaultVariables(); +$form = new Horde_Form($vars, sprintf(_("Move \"%s\" to another forum"), $message['message_subject'])); +$form->setButtons(array(_("Move"), _("Cancel"))); +$form->addHidden('', 'agora', 'text', false); +$form->addHidden('', 'scope', 'text', false); + +$forums_list = Agora::formatCategoryTree($messages->getForums(0, false)); +$v = &$form->addVariable(_("Forum"), 'new_forum_id', 'enum', true, false, null, array($forums_list)); +$v->setDefault($forum_id); + +/* Validate the form. */ +if ($form->validate()) { + $form->getInfo($vars, $info); + + if ($vars->get('submitbutton') == _("Move")) { + $move = $messages->moveThread($message_id, $info['new_forum_id']); + if ($move instanceof PEAR_Error) { + $notification->push($move->getMessage(), 'horde.error'); + } else { + $notification->push(sprintf(_("Thread %s moved to from forum %s to %s."), $message_id, $forum_id, $info['new_forum_id']), 'horde.success'); + header('Location: ' . Agora::setAgoraId($info['new_forum_id'], $message_id, Horde::applicationUrl('messages/index.php', true), $scope)); + exit; + } + } +} + +/* Template object. */ +$view = new Agora_View(); +$view->menu = Agora::getMenu('string'); +$view->formbox = Horde_Util::bufferOutput(array($form, 'renderActive'), null, $vars, 'move.php', 'post'); +$view->message_subject = $message['message_subject']; +$view->message_author = $message['message_author']; +$view->message_body = Agora_Messages::formatBody($message['body']); + +require AGORA_TEMPLATES . '/common-header.inc'; +echo $view->render('messages/edit.html.php'); +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/agora/messages/split.php b/agora/messages/split.php new file mode 100644 index 000000000..2bb8044b5 --- /dev/null +++ b/agora/messages/split.php @@ -0,0 +1,76 @@ +push($messages->getMessage(), 'horde.warning'); + $url = Horde::applicationUrl('forums.php', true); + header('Location: ' . $url); + exit; +} + +/* Get requested message, if fail then back to forums list. */ +$message = $messages->getMessage($message_id); +if ($message instanceof PEAR_Error) { + $notification->push(sprintf(_("Could not open the message. %s"), $message->getMessage()), 'horde.warning'); + header('Location: ' . Horde::applicationUrl('forums.php', true)); + exit; +} + +/* Check delete permissions */ +if (!$messages->hasPermission(Horde_Perms::DELETE)) { + $notification->push(sprintf(_("You don't have permission to delete messages in forum %s."), $forum_id), 'horde.warning'); + $url = Agora::setAgoraId($forum_id, $message_id, Horde::applicationUrl('messages/index.php', true), $scope); + header('Location: ' . $url); + exit; +} + +/* Get the form object. */ +$vars = Horde_Variables::getDefaultVariables(); +$form = new Horde_Form($vars, sprintf(_("Split \"%s\""), $message['message_subject'])); +$form->setButtons(array(_("Split"), _("Cancel"))); +$form->addHidden('', 'agora', 'text', false); +$form->addHidden('', 'scope', 'text', false); + +/* Validate the form. */ +if ($form->validate()) { + $form->getInfo($vars, $info); + + if ($vars->get('submitbutton') == _("Split")) { + $split = $messages->splitThread($message_id); + if ($split instanceof PEAR_Error) { + $notification->push($split->getMessage(), 'horde.error'); + } else { + $notification->push(sprintf(_("Thread splitted by message %s."), $message_id), 'horde.error'); + header('Location: ' . Agora::setAgoraId($forum_id, $message_id, Horde::applicationUrl('messages/index.php', true), $scope)); + exit; + } + } +} + +/* Template object. */ +$view = new Agora_View(); +$view->menu = Agora::getMenu('string'); +$view->formbox = Horde_Util::bufferOutput(array($form, 'renderActive'), null, $vars, 'split.php', 'post'); +$view->message_subject = $message['message_subject']; +$view->message_author = $message['message_author']; +$view->message_body = Agora_Messages::formatBody($message['body']); + +require AGORA_TEMPLATES . '/common-header.inc'; +echo $view->render('messages/edit.html.php'); +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/agora/moderate.php b/agora/moderate.php new file mode 100644 index 000000000..39e16183e --- /dev/null +++ b/agora/moderate.php @@ -0,0 +1,87 @@ +getValue('threads_per_page'); +$messages_start = $messages_page * $messages_per_page; + +/* Get the sorting. */ +$sort_by = Agora::getSortBy('moderate'); +$sort_dir = Agora::getSortDir('moderate'); + +/* Check for any actions. */ +switch (Horde_Util::getFormData('action')) { +case _("Approve"): + $message_ids = Horde_Util::getFormData('message_ids'); + $messages->moderate('approve', $message_ids); + $notification->push(sprintf(_("%d messages was approved."), count($message_ids)), 'horde.success'); + break; + +case _("Delete"): + $message_ids = Horde_Util::getFormData('message_ids'); + $messages->moderate('delete', $message_ids); + $notification->push(sprintf(_("%d messages was deleted."), count($message_ids)), 'horde.success'); + break; +} + +/* Get a list of messages still to moderate. Error will occur if you don't have the right permissions */ +$messages_list = $messages->getModerateList($sort_by, $sort_dir); +if ($messages_list instanceof PEAR_Error) { + $notification->push($messages_list->getMessage(), 'horde.error'); + header('Location: ' . Horde::applicationUrl('forums.php', true)); + exit; +} elseif (empty($messages_list)) { + $messages_count = 0; + $notification->push(_("No messages are waiting for moderation."), 'horde.message'); +} else { + $messages_count = count($messages_list); + $messages_list = array_slice($messages_list, $messages_start, $messages_per_page); +} + + +/* Set up the column headers. */ +$col_headers = array('forum_id' => _("Forum"), 'message_subject' => _("Subject"), 'message_author' => _("Posted by"), 'message_body' => _("Body"), 'message_timestamp' => _("Date")); +$col_headers = Agora::formatColumnHeaders($col_headers, $sort_by, $sort_dir, 'moderate'); + +/* Set up the template tags. */ +$view = new Agora_View(); +$view->col_headers = $col_headers; +$view->messages = $messages_list; +$view->buttons = array(_("Approve"), _("Delete")); +$view->session_tag = Horde_Util::formInput(); +$view->notify = Horde_Util::bufferOutput(array($notification, 'notify'), array('listeners' => 'status')); + +/* Set up pager. */ +$vars = Horde_Variables::getDefaultVariables(); +$pager_ob = new Horde_Ui_Pager('moderate_page', $vars, array('num' => $messages_count, 'url' => Horde::selfUrl(true), 'perpage' => $messages_per_page)); +$pager_ob->preserve('agora', Horde_Util::getFormData('agora')); +$view->pager = $pager_ob->render(); + +if (isset($api_call)) { + return $view->render('moderate.html.php'); +} else { + $title = _("Messages Awaiting Moderation"); + $view->menu = Agora::getMenu('string'); + Horde::addScriptFile('stripe.js', 'horde', true); + require_once AGORA_TEMPLATES . '/common-header.inc'; + echo $view->render('moderate.html.php'); + require_once $registry->get('templates', 'horde') . '/common-footer.inc'; +} diff --git a/agora/moderators.php b/agora/moderators.php new file mode 100644 index 000000000..fb65ba0fb --- /dev/null +++ b/agora/moderators.php @@ -0,0 +1,93 @@ + + * @author Marko Djukic + */ + +define('AGORA_BASE', dirname(__FILE__)); +require_once AGORA_BASE . '/lib/base.php'; + +if (!Horde_Auth::isAdmin()) { + header('Location: ' . Horde::applicationUrl('forums.php')); + exit; +} + +/* Set up the messages object. */ +$scope = Horde_Util::getFormData('scope', 'agora'); +$messages = &Agora_Messages::singleton($scope); +if ($messages instanceof PEAR_Error) { + $notification->push($messages->getMessage(), 'horde.warning'); + $url = Horde::applicationUrl('forums.php', true); + header('Location: ' . $url); + exit; +} + +/* Moderator action */ +$action = Horde_Util::getFormData('action'); +if ($action) { + $forum_id = Horde_Util::getFormData('forum_id'); + $moderator = Horde_Util::getFormData('moderator'); + $result = $messages->updateModerator($moderator, $forum_id, $action); + if ($result instanceof PEAR_Error) { + $notification->push($result->getMessage(), 'horde.error'); + } + + header('Location: ' . Horde::applicationUrl('moderators.php', true)); + exit; +} + +/* Get the list of forums. */ +$forums_list = $messages->getForums(0, true, 'forum_name'); +if ($forums_list instanceof PEAR_Error) { + $notification->push($forums_list->getMessage(), 'horde.error'); + header('Location: ' . Horde::applicationUrl('forums.php', true)); + exit; +} + +/* Add delete links to moderators */ +$url = Horde_Util::addParameter(Horde::applicationUrl('moderators.php'), 'action', 'delete'); +foreach ($forums_list as $forum_id => $forum) { + if (!isset($forum['moderators'])) { + unset($forums_list[$forum_id]); + continue; + } + foreach ($forum['moderators'] as $id => $moderator) { + $delete = Horde_Util::addParameter($url, array('moderator' => $moderator, 'forum_id' => $forum_id)); + $forums_list[$forum_id]['moderators'][$id] = Horde::link($delete, _("Delete")) . $moderator . ''; + } +} + +$title = _("Moderators"); +$vars = Horde_Variables::getDefaultVariables(); +$form = new Horde_Form($vars, $title); +$form->addHidden('', 'scope', 'text', false); +$form->addHidden('', 'action', 'text', false); +$vars->set('action', 'add'); +$form->addVariable(_("Moderator"), 'moderator', 'text', true); +if ($messages->countForums() > 50) { + $form->addVariable(_("Forum"), 'forum_id', 'int', true); +} else { + $forums_enum = $messages->getForums(0, false, 'forum_name', 0, !Horde_Auth::isAdmin()); + $form->addVariable(_("Forum"), 'forum_id', 'enum', true, false, false, array($forums_enum)); +} + +/* Set up template data. */ +$view = new Agora_View(); +$view->menu = Agora::getMenu('string'); +$view->formbox = Horde_Util::bufferOutput(array($form, 'renderActive'), null, null, 'moderators.php', 'post'); +$view->notify = Horde_Util::bufferOutput(array($notification, 'notify'), array('listeners' => 'status')); +$view->forums = $forums_list; + +Horde::addScriptFile('stripe.js', 'horde', true); +require AGORA_TEMPLATES . '/common-header.inc'; +echo $view->render('moderators.html.php'); +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/agora/owner.php b/agora/owner.php new file mode 100644 index 000000000..2eac6a439 --- /dev/null +++ b/agora/owner.php @@ -0,0 +1,78 @@ + + */ + +require_once dirname(__FILE__) . '/lib/base.php'; + +/* Only authenticated users should be using this. */ +if (!Horde_Auth::isAuthenticated()) { + $notification->push(_("You are not authorised for this action."), 'horde.warning'); + Horde_Auth::authenticateFailure('agora'); +} + +/* Default to agora and current user if is not an admin. */ +$scope = Horde_Util::getGet('scope', 'agora'); +$owner = Horde_Auth::isAdmin() ? Horde_Util::getGet('owner', Horde_Auth::getAuth()) : Horde_Auth::getAuth(); + +/* Get the sorting. */ +$sort_by = Agora::getSortBy('threads'); +$sort_dir = Agora::getSortDir('threads'); + +require AGORA_TEMPLATES . '/common-header.inc'; + +echo '

'; +$notification->notify(array('listeners' => 'status')); +echo '

' . sprintf(_("Last posts in forums owned by %s"), $owner) . '

'; + +foreach ($registry->listApps() as $scope) { + if ($scope == 'agora' || ($registry->hasMethod('hasComments', $scope) && + $registry->callByPackage($scope, 'hasComments') === true)) { + $scope_name = $registry->get('name', $scope); + $forums = Agora_Messages::singleton($scope); + $threads = $forums->getThreadsByForumOwner($owner, 0, false, $sort_by, $sort_dir, false, 0, 5); + echo '

' . $scope_name . '

'; + + if ($threads instanceof PEAR_Error) { + echo $threads->getMessage(); + } elseif (empty($threads)) { + echo _("No threads"); + } else { + $link_back = $registry->hasMethod('show', $scope); + $url = Horde::applicationUrl('agora/messages/index.php'); + + /* link threads if possible */ + foreach ($threads as &$thread) { + if ($link_back) { + $thread['link'] = Horde::link($registry->linkByPackage($scope, 'show', array('id' => $thread['forum_name']))); + } else { + $thread['link'] = Horde::link(Agora::setAgoraId($thread['forum_id'], $thread['message_id'], $url, $scope, false)); + } + } + + /* Set up the column headers. */ + $col_headers = array('message_subject' => _("Subject"), 'message_author' => _("Posted by"), 'message_timestamp' => _("Date")); + $col_headers = Agora::formatColumnHeaders($col_headers, $sort_by, $sort_dir, 'threads'); + + /* Set up the template tags. */ + $view = new Agora_View(); + $view->col_headers = $col_headers; + $view->threads = $threads; + + echo $view->render('block/threads.html.php'); + } + + echo '
'; + } +} + +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/agora/po/.htaccess b/agora/po/.htaccess new file mode 100755 index 000000000..3a4288278 --- /dev/null +++ b/agora/po/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/agora/po/README b/agora/po/README new file mode 100755 index 000000000..a985e94aa --- /dev/null +++ b/agora/po/README @@ -0,0 +1 @@ +see horde/po/README diff --git a/agora/po/agora.pot b/agora/po/agora.pot new file mode 100644 index 000000000..630ea34fc --- /dev/null +++ b/agora/po/agora.pot @@ -0,0 +1,1023 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Horde Project +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2009-06-27 16:09+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: moderate.php:35 +#, php-format +msgid "%d messages was approved." +msgstr "" + +#: moderate.php:41 +#, php-format +msgid "%d messages was deleted." +msgstr "" + +#: scripts/phorum2agora.php:217 +msgid "-a, --agora_id[=aid] Agora forum id to save message to" +msgstr "" + +#: scripts/phorum2agora.php:220 +msgid "-c, --count[=messages] Number of messages to move at once" +msgstr "" + +#: scripts/phorum2agora.php:219 +msgid "" +"-f, --from[=offset] Offset from where to start to read messages" +msgstr "" + +#: scripts/phorum2agora.php:215 +msgid "-h, --help Show this help" +msgstr "" + +#: scripts/phorum2agora.php:216 +msgid "-p, --phorum_id[=pid] Phorum forum id to read message from" +msgstr "" + +#: scripts/phorum2agora.php:218 +msgid "-t, --phorum_table[=table] Phorum messages tablename" +msgstr "" + +#: lib/api.php:860 +msgid "Add a comment" +msgstr "" + +#: lib/api.php:164 +msgid "Admin" +msgstr "" + +#: messages/merge.php:65 +msgid "After Message: " +msgstr "" + +#: forums.php:71 +msgid "All Forums" +msgstr "" + +#: lib/Forms/Forum.php:41 +msgid "Allow attachments in this forum?" +msgstr "" + +#: messages/lock.php:50 +msgid "Allow replies in this thread" +msgstr "" + +#: moderate.php:32 moderate.php:68 +msgid "Approve" +msgstr "" + +#: lib/Comments.php:73 config/prefs.php.dist:92 config/prefs.php.dist:127 +#: config/prefs.php.dist:168 config/prefs.php.dist:256 +msgid "Ascending" +msgstr "" + +#: lib/Messages.php:1568 +msgid "Attachment" +msgstr "" + +#: lib/Comments.php:68 lib/Forms/Search.php:55 +msgid "Author" +msgstr "" + +#: config/prefs.php.dist:11 +msgid "Avatar" +msgstr "" + +#: config/prefs.php.dist:64 +#, php-format +msgid "" +"Avatars must be smaller than %s by %s pixels and less than %sKb in size." +msgstr "" + +#: ban.php:57 lib/Messages.php:1513 +msgid "Ban" +msgstr "" + +#: templates/ban.html.php:10 +msgid "Banned" +msgstr "" + +#: moderate.php:61 +msgid "Body" +msgstr "" + +#: deleteforum.php:44 messages/abuse.php:47 messages/abuse.php:55 +#: messages/merge.php:46 messages/move.php:46 messages/delete.php:48 +#: messages/split.php:46 lib/api.php:781 +msgid "Cancel" +msgstr "" + +#: lib/Messages.php:1944 +msgid "Cannot create a forum with an empty name." +msgstr "" + +#: templates/prefs/avatarselect.inc:8 +msgid "Choose from a gallery of avatars: " +msgstr "" + +#: lib/Comments.php:54 lib/api.php:491 +msgid "Comments" +msgstr "" + +#: rss/threads.php:63 +#, php-format +msgid "Comments on %s" +msgstr "" + +#: config/prefs.php.dist:48 +msgid "Comments view" +msgstr "" + +#: editforum.php:44 +#, php-format +msgid "Could not create the forum. %s" +msgstr "" + +#: deleteforum.php:65 +#, php-format +msgid "Could not delete the forum. %s" +msgstr "" + +#: messages/delete.php:62 lib/api.php:764 lib/api.php:775 lib/api.php:789 +#, php-format +msgid "Could not delete the message. %s" +msgstr "" + +#: threads.php:30 +#, php-format +msgid "Could not list threads. %s" +msgstr "" + +#: messages/lock.php:59 +#, php-format +msgid "Could not lock the thread. %s" +msgstr "" + +#: messages/abuse.php:30 messages/merge.php:30 messages/move.php:30 +#: messages/index.php:33 messages/index.php:55 messages/lock.php:32 +#: messages/delete.php:32 messages/split.php:30 +#, php-format +msgid "Could not open the message. %s" +msgstr "" + +#: messages/edit.php:30 messages/edit.php:82 lib/api.php:630 lib/api.php:683 +msgid "Could not post the message: " +msgstr "" + +#: scripts/phorum2agora.php:64 +msgid "Couldn't read command-line options." +msgstr "" + +#: lib/Forms/Forum.php:26 +msgid "Create" +msgstr "" + +#: lib/Messages.php:1564 +msgid "Current attachment" +msgstr "" + +#: owner.php:63 forums.php:54 moderate.php:61 messages/index.php:147 +#: lib/Comments.php:67 lib/Comments.php:87 lib/api.php:481 +#: lib/Block/threads.php:122 lib/Block/forums.php:86 lib/Block/thread.php:82 +#: config/prefs.php.dist:83 config/prefs.php.dist:117 +#: config/prefs.php.dist:159 config/prefs.php.dist:247 +msgid "Date" +msgstr "" + +#: config/prefs.php.dist:248 +msgid "Default comments view sort:" +msgstr "" + +#: config/prefs.php.dist:84 +msgid "Default forums view sort:" +msgstr "" + +#: config/prefs.php.dist:94 config/prefs.php.dist:129 +#: config/prefs.php.dist:170 config/prefs.php.dist:258 +msgid "Default sorting direction:" +msgstr "" + +#: config/prefs.php.dist:160 +msgid "Default thread view sort:" +msgstr "" + +#: config/prefs.php.dist:119 +msgid "Default threads view sort:" +msgstr "" + +#: deleteforum.php:44 deleteforum.php:62 ban.php:54 moderators.php:65 +#: moderate.php:38 moderate.php:68 messages/index.php:123 +#: messages/delete.php:48 messages/delete.php:53 lib/Messages.php:955 +#: lib/Messages.php:1837 lib/api.php:781 lib/api.php:786 +msgid "Delete" +msgstr "" + +#: messages/delete.php:47 lib/api.php:780 +#, php-format +msgid "Delete \"%s\" and all replies?" +msgstr "" + +#: deleteforum.php:42 lib/Messages.php:1511 +msgid "Delete Forum" +msgstr "" + +#: lib/Messages.php:1837 +msgid "Delete forum" +msgstr "" + +#: lib/Messages.php:955 +msgid "Delete message" +msgstr "" + +#: lib/Messages.php:1563 +msgid "Delete the existing attachment?" +msgstr "" + +#: lib/Comments.php:74 config/prefs.php.dist:93 config/prefs.php.dist:128 +#: config/prefs.php.dist:169 config/prefs.php.dist:257 +msgid "Descending" +msgstr "" + +#: forums.php:54 +msgid "Description" +msgstr "" + +#: config/prefs.php.dist:18 config/prefs.php.dist:25 config/prefs.php.dist:32 +#: config/prefs.php.dist:40 config/prefs.php.dist:47 +msgid "Display Options" +msgstr "" + +#: config/prefs.php.dist:237 +msgid "Display full message bodies in the comments view?" +msgstr "" + +#: config/prefs.php.dist:181 +msgid "Display full message bodies in the thread list view?" +msgstr "" + +#: config/prefs.php.dist:200 +msgid "Display graphical emoticons?" +msgstr "" + +#: messages/index.php:120 lib/Messages.php:951 lib/Messages.php:1830 +msgid "Edit" +msgstr "" + +#: editforum.php:25 lib/Messages.php:1508 +msgid "Edit Forum" +msgstr "" + +#: lib/api.php:658 +msgid "Edit Message" +msgstr "" + +#: messages/edit.php:69 +#, php-format +msgid "Edit Message in \"%s\"" +msgstr "" + +#: lib/api.php:858 +msgid "Edit a comment" +msgstr "" + +#: lib/Messages.php:1830 +msgid "Edit forum" +msgstr "" + +#: lib/Messages.php:951 +msgid "Edit message" +msgstr "" + +#: lib/Forms/Forum.php:37 +msgid "Enter a brief description of this forum" +msgstr "" + +#: messages/index.php:168 lib/Comments.php:60 config/prefs.php.dist:235 +msgid "Flat" +msgstr "" + +#: moderators.php:77 moderators.php:80 forums.php:54 moderate.php:61 +#: templates/moderators.html.php:8 messages/move.php:51 +#: lib/Block/threads.php:45 lib/Block/forums.php:86 config/prefs.php.dist:79 +msgid "Forum" +msgstr "" + +#: lib/Messages.php:1735 lib/api.php:758 +#, php-format +msgid "Forum %s does not exist." +msgstr "" + +#: editforum.php:47 +msgid "Forum Modified" +msgstr "" + +#: editforum.php:47 +msgid "Forum created." +msgstr "" + +#: deleteforum.php:67 +msgid "Forum deleted." +msgstr "" + +#: deleteforum.php:48 templates/moderators.html.php:9 lib/Forms/Forum.php:29 +msgid "Forum name" +msgstr "" + +#: deleteforum.php:70 +msgid "Forum not deleted." +msgstr "" + +#: templates/forums.html.php:9 templates/common-header.inc:27 lib/api.php:165 +#: lib/Block/forums.php:3 lib/Block/forums.php:28 +msgid "Forums" +msgstr "" + +#: config/prefs.php.dist:19 +msgid "Forums View" +msgstr "" + +#: rss/index.php:28 +#, php-format +msgid "Forums in %s" +msgstr "" + +#: lib/Messages.php:1545 +msgid "From" +msgstr "" + +#: templates/threads.html.php:44 templates/threads/threads.html.php:44 +msgid "Goto page:" +msgstr "" + +#: messages/index.php:158 messages/index.php:167 +msgid "Hide bodies" +msgstr "" + +#: lib/Messages.php:869 +msgid "Hot thread" +msgstr "" + +#: lib/Forms/Forum.php:41 +msgid "If selected users will be able to attach files to their messages." +msgstr "" + +#: messages/edit.php:115 +msgid "" +"Invalid parent message, you will be posting this message as a new thread." +msgstr "" + +#: lib/Forms/Forum.php:38 +msgid "Is this a moderated forum?" +msgstr "" + +#: lib/Forms/Search.php:43 +msgid "Keywords" +msgstr "" + +#: config/prefs.php.dist:81 +msgid "Last Message" +msgstr "" + +#: forums.php:54 lib/Block/forums.php:86 +msgid "Last Post" +msgstr "" + +#: threads.php:59 config/prefs.php.dist:118 +msgid "Last post" +msgstr "" + +#: owner.php:35 +#, php-format +msgid "Last posts in forums owned by %s" +msgstr "" + +#: lib/Messages.php:959 +msgid "Lock" +msgstr "" + +#: messages/index.php:126 +msgid "Lock thread" +msgstr "" + +#: messages/lock.php:47 +#, php-format +msgid "Locking thread \"%s\"" +msgstr "" + +#: lib/Agora.php:345 +msgid "Malformed avatar." +msgstr "" + +#: lib/Agora.php:368 +msgid "Malformed database entry." +msgstr "" + +#: scripts/phorum2agora.php:213 +msgid "" +"Mandatory arguments to long options are mandatory for short options too." +msgstr "" + +#: messages/merge.php:46 messages/merge.php:72 lib/Messages.php:970 +msgid "Merge" +msgstr "" + +#: messages/merge.php:45 +#, php-format +msgid "Merge \"%s\" with another thread" +msgstr "" + +#: lib/Messages.php:1558 +msgid "Message" +msgstr "" + +#: messages/abuse.php:77 +#, php-format +msgid "Message %s reported as abuse" +msgstr "" + +#: lib/Messages.php:522 +#, php-format +msgid "Message ID \"%d\" not found" +msgstr "" + +#: config/prefs.php.dist:41 +msgid "Message View" +msgstr "" + +#: messages/delete.php:64 lib/api.php:791 +msgid "Message deleted." +msgstr "" + +#: messages/delete.php:54 lib/api.php:796 +msgid "Message not deleted." +msgstr "" + +#: messages/edit.php:87 lib/api.php:685 +msgid "Message posted." +msgstr "" + +#: templates/messages/index.html.php:1 config/prefs.php.dist:80 +msgid "Messages" +msgstr "" + +#: moderate.php:81 templates/moderate.html.php:11 +msgid "Messages Awaiting Moderation" +msgstr "" + +#: lib/Messages.php:1856 +msgid "Moderate" +msgstr "" + +#: moderators.php:75 templates/messages/flat_thread.html.php:10 +#: templates/messages/flat.html.php:11 templates/messages/message.html.php:21 +#: lib/Tree/flat.php:117 +msgid "Moderator" +msgstr "" + +#: moderators.php:69 templates/forums.html.php:39 +#: templates/moderators.html.php:4 templates/moderators.html.php:10 +msgid "Moderators" +msgstr "" + +#: messages/move.php:46 messages/move.php:58 lib/Messages.php:966 +msgid "Move" +msgstr "" + +#: messages/move.php:45 +#, php-format +msgid "Move \"%s\" to another forum" +msgstr "" + +#: config/prefs.php.dist:10 +msgid "My Information" +msgstr "" + +#: editforum.php:25 +msgid "New Forum" +msgstr "" + +#: lib/Messages.php:1825 +msgid "New Post" +msgstr "" + +#: lib/Agora.php:251 +msgid "New Thread" +msgstr "" + +#: lib/Messages.php:870 +msgid "New posts" +msgstr "" + +#: config/prefs.php.dist:178 +msgid "No" +msgstr "" + +#: lib/Block/threads.php:118 +msgid "No available threads." +msgstr "" + +#: lib/Block/threads.php:97 +msgid "No forum selected" +msgstr "" + +#: templates/forums.html.php:60 +msgid "No forums have been created." +msgstr "" + +#: config/prefs.php.dist:198 +msgid "No graphical emoticons" +msgstr "" + +#: moderate.php:53 +msgid "No messages are waiting for moderation." +msgstr "" + +#: messages/abuse.php:38 +msgid "No moderators are associated with this forum." +msgstr "" + +#: templates/moderators.html.php:27 +msgid "No moderators have been created." +msgstr "" + +#: owner.php:48 templates/block/threads.html.php:32 +msgid "No threads" +msgstr "" + +#: messages/lock.php:50 +msgid "No, do not allow replies" +msgstr "" + +#: config/prefs.php.dist:103 +msgid "Number of forums to display on each page" +msgstr "" + +#: config/prefs.php.dist:190 +msgid "Number of message to display on each page" +msgstr "" + +#: config/prefs.php.dist:146 config/prefs.php.dist:267 +msgid "Number of messages to display on each page" +msgstr "" + +#: config/prefs.php.dist:137 +msgid "Number of views in 24hrs to trigger a 'hot-thread':" +msgstr "" + +#: lib/Block/forums.php:35 +msgid "Only display this many forums (0 to display all forums)" +msgstr "" + +#: lib/Block/threads.php:52 +msgid "Only display this many threads (0 to display all threads)" +msgstr "" + +#: lib/Forms/Forum.php:39 +msgid "Optional email address to recieve a copy of each posted message" +msgstr "" + +#: templates/forums.html.php:34 +msgid "Options" +msgstr "" + +#: lib/Messages.php:917 +#, php-format +msgid "Page %d" +msgstr "" + +#: lib/Forms/Forum.php:32 +msgid "Parent forum" +msgstr "" + +#: lib/Messages.php:1527 +msgid "Post" +msgstr "" + +#: lib/api.php:658 +msgid "Post a New Message" +msgstr "" + +#: messages/edit.php:70 +#, php-format +msgid "Post a New Message to \"%s\"" +msgstr "" + +#: messages/edit.php:68 messages/index.php:213 +#, php-format +msgid "Post a Reply to \"%s\"" +msgstr "" + +#: lib/Messages.php:1502 lib/Messages.php:1825 +msgid "Post message" +msgstr "" + +#: owner.php:63 forums.php:54 moderate.php:61 +#: templates/messages/flat_thread.html.php:7 messages/index.php:147 +#: lib/Comments.php:85 lib/api.php:479 lib/Block/threads.php:122 +#: lib/Block/forums.php:86 lib/Block/thread.php:82 lib/Tree/flat.php:112 +#: config/prefs.php.dist:82 config/prefs.php.dist:115 +#: config/prefs.php.dist:158 config/prefs.php.dist:246 +msgid "Posted by" +msgstr "" + +#: templates/messages/flat.html.php:9 messages/index.php:91 +#: lib/Messages.php:567 +#, php-format +msgid "Posted by %s on %s" +msgstr "" + +#: threads.php:59 forums.php:54 lib/Block/forums.php:86 +#: config/prefs.php.dist:116 +msgid "Posts" +msgstr "" + +#: lib/Messages.php:1550 +msgid "Quote" +msgstr "" + +#: messages/index.php:114 lib/Messages.php:939 +msgid "Reply" +msgstr "" + +#: lib/Messages.php:939 +msgid "Reply to message" +msgstr "" + +#: messages/abuse.php:46 messages/abuse.php:47 lib/Messages.php:945 +msgid "Report as abuse" +msgstr "" + +#: lib/Forms/Search.php:44 +msgid "Require all keywords?" +msgstr "" + +#: lib/Messages.php:1527 +msgid "Save" +msgstr "" + +#: lib/Forms/Search.php:57 +msgid "Search" +msgstr "" + +#: search.php:69 lib/Forms/Search.php:33 +msgid "Search Forums" +msgstr "" + +#: templates/search.html.php:5 +msgid "Search Results" +msgstr "" + +#: lib/Forms/Search.php:52 +msgid "Search in message contents?" +msgstr "" + +#: lib/Forms/Search.php:48 +msgid "Search in subjects?" +msgstr "" + +#: lib/Forms/Search.php:37 +msgid "Search in these forums" +msgstr "" + +#: config/prefs.php.dist:12 +msgid "Set the avatar image that is shown with your posts." +msgstr "" + +#: lib/Forms/Forum.php:38 +msgid "" +"Set this if you want all messages to be checked by a moderator before they " +"are posted." +msgstr "" + +#: config/prefs.php.dist:20 +msgid "Set your options for the forums view." +msgstr "" + +#: config/prefs.php.dist:42 +msgid "Set your options for the message view." +msgstr "" + +#: config/prefs.php.dist:34 config/prefs.php.dist:49 +msgid "Set your options for the single thread view." +msgstr "" + +#: config/prefs.php.dist:27 +msgid "Set your options for the threads view." +msgstr "" + +#: config/prefs.php.dist:199 +msgid "Show graphical emoticons" +msgstr "" + +#: lib/Block/thread.php:3 lib/Block/thread.php:52 +msgid "Single Thread" +msgstr "" + +#: config/prefs.php.dist:33 +msgid "Single Thread View" +msgstr "" + +#: lib/Agora.php:192 +msgid "Sort Ascending" +msgstr "" + +#: lib/Agora.php:192 +msgid "Sort Descending" +msgstr "" + +#: lib/Comments.php:65 +msgid "Sort by" +msgstr "" + +#: lib/Agora.php:200 lib/Agora.php:207 +#, php-format +msgid "Sort by %s" +msgstr "" + +#: lib/Comments.php:71 +msgid "Sort direction" +msgstr "" + +#: lib/Messages.php:1572 lib/Forms/Message.php:24 +msgid "Spam protection" +msgstr "" + +#: messages/split.php:46 messages/split.php:54 lib/Messages.php:975 +msgid "Split" +msgstr "" + +#: messages/split.php:45 +#, php-format +msgid "Split \"%s\"" +msgstr "" + +#: threads.php:59 +msgid "Started" +msgstr "" + +#: deleteforum.php:56 +msgid "Subforums" +msgstr "" + +#: threads.php:59 owner.php:63 moderate.php:61 messages/index.php:147 +#: lib/Comments.php:69 lib/Comments.php:83 lib/Messages.php:1552 +#: lib/Messages.php:1555 lib/api.php:477 lib/Block/threads.php:122 +#: lib/Block/thread.php:82 config/prefs.php.dist:114 config/prefs.php.dist:157 +#: config/prefs.php.dist:245 +msgid "Subject" +msgstr "" + +#: lib/Agora.php:229 +msgid "The VFS backend needs to be configured to enable attachment uploads." +msgstr "" + +#: config/prefs.php.dist:61 +msgid "The location of your avatar image." +msgstr "" + +#: lib/Block/forums.php:77 +msgid "There are no forums." +msgstr "" + +#: templates/threads.html.php:69 templates/threads/threads.html.php:69 +msgid "There are no threads in this forum." +msgstr "" + +#: lib/Messages.php:159 +msgid "This thread has been locked." +msgstr "" + +#: deleteforum.php:47 +msgid "This will delete the forum, any subforums and all relative messages." +msgstr "" + +#: messages/index.php:147 messages/index.php:159 lib/Comments.php:61 +#: lib/Block/thread.php:32 lib/Block/thread.php:82 config/prefs.php.dist:113 +#: config/prefs.php.dist:156 config/prefs.php.dist:236 +msgid "Thread" +msgstr "" + +#: messages/merge.php:77 +#, php-format +msgid "Thread %s merged with thread %s after message %s." +msgstr "" + +#: messages/move.php:63 +#, php-format +msgid "Thread %s moved to from forum %s to %s." +msgstr "" + +#: templates/messages/index.html.php:10 lib/Block/thread.php:89 +msgid "Thread List" +msgstr "" + +#: templates/messages/message.html.php:34 +msgid "Thread Summary" +msgstr "" + +#: messages/delete.php:69 +msgid "Thread deleted." +msgstr "" + +#: messages/index.php:205 messages/lock.php:62 +msgid "Thread locked." +msgstr "" + +#: messages/split.php:59 +#, php-format +msgid "Thread splitted by message %s." +msgstr "" + +#: messages/lock.php:64 +msgid "Thread unlocked." +msgstr "" + +#: forums.php:54 templates/threads.html.php:1 +#: templates/threads/threads.html.php:1 lib/Comments.php:77 +#: lib/Block/threads.php:3 lib/Block/threads.php:70 lib/Block/threads.php:76 +msgid "Threads" +msgstr "" + +#: config/prefs.php.dist:26 +msgid "Threads View" +msgstr "" + +#: lib/Block/threads.php:80 +#, php-format +msgid "Threads in \"%s\"" +msgstr "" + +#: threads.php:66 threads.php:79 rss/threads.php:57 +#, php-format +msgid "Threads in %s" +msgstr "" + +#: lib/Block/thread.php:70 +msgid "Unable to fetch selected thread." +msgstr "" + +#: lib/Block/threads.php:103 +msgid "Unable to fetch threads for selected forum." +msgstr "" + +#: lib/Messages.php:959 +msgid "Unlock" +msgstr "" + +#: messages/index.php:126 +msgid "Unlock thread" +msgstr "" + +#: messages/lock.php:48 lib/Forms/Forum.php:26 +msgid "Update" +msgstr "" + +#: scripts/phorum2agora.php:211 +#, php-format +msgid "Usage: %s [OPTIONS]..." +msgstr "" + +#: ban.php:64 +msgid "User" +msgstr "" + +#: lib/Comments.php:59 +msgid "View" +msgstr "" + +#: messages/index.php:184 +msgid "View bodies" +msgstr "" + +#: threads.php:59 +msgid "Views" +msgstr "" + +#: messages/merge.php:56 +msgid "With Thread: " +msgstr "" + +#: config/prefs.php.dist:179 +msgid "Yes" +msgstr "" + +#: messages/lock.php:50 +msgid "Yes, allow replies" +msgstr "" + +#: config/prefs.php.dist:180 +msgid "Yes, and don't thread them" +msgstr "" + +#: owner.php:19 +msgid "You are not authorised for this action." +msgstr "" + +#: lib/Messages.php:1719 +#, php-format +msgid "You don't have permission to access messages in forum %s." +msgstr "" + +#: messages/merge.php:37 messages/move.php:37 messages/lock.php:39 +#: messages/delete.php:39 messages/split.php:37 lib/Messages.php:588 +#: lib/Messages.php:766 lib/api.php:769 +#, php-format +msgid "You don't have permission to delete messages in forum %s." +msgstr "" + +#: messages/edit.php:38 messages/index.php:199 lib/Messages.php:164 +#: lib/api.php:636 +#, php-format +msgid "You don't have permission to post messages in forum %s." +msgstr "" + +#: lib/Messages.php:841 +#, php-format +msgid "You don't have permission to read messages in forum %s." +msgstr "" + +#: ban.php:29 +#, php-format +msgid "You don't have permissions to ban users from forum %s." +msgstr "" + +#: editforum.php:35 +#, php-format +msgid "You don't have permissions to create a new forum in %s" +msgstr "" + +#: deleteforum.php:26 +#, php-format +msgid "You don't have permissions to delete forums in %s" +msgstr "" + +#: editforum.php:31 +#, php-format +msgid "You don't have permissions to edit forum %s" +msgstr "" + +#: messages/edit.php:85 +msgid "" +"Your message has been enqueued and is awaiting moderation. It will become " +"visible after moderator approval." +msgstr "" + +#: lib/Agora.php:244 +msgid "_Forums" +msgstr "" + +#: lib/Agora.php:261 +msgid "_Moderate" +msgstr "" + +#: lib/Agora.php:265 +msgid "_Moderators" +msgstr "" + +#: lib/Agora.php:256 +msgid "_New Forum" +msgstr "" + +#: lib/Agora.php:269 +msgid "_Search" +msgstr "" + +#: lib/Agora.php:249 +msgid "_Threads" +msgstr "" + +#: templates/forums.html.php:51 templates/threads.html.php:60 +#: templates/threads/threads.html.php:60 +msgid "by" +msgstr "" + +#: lib/Messages.php:1665 +msgid "download" +msgstr "" + +#: templates/messages/flat_thread.html.php:8 lib/Tree/flat.php:113 +msgid "on: " +msgstr "" + +#: lib/Messages.php:1666 +#, php-format +msgid "size: %s" +msgstr "" + +#: lib/Messages.php:1666 +#, php-format +msgid "type: %s" +msgstr "" diff --git a/agora/po/de_DE.po b/agora/po/de_DE.po new file mode 100644 index 000000000..45e2975c2 --- /dev/null +++ b/agora/po/de_DE.po @@ -0,0 +1,1035 @@ +# German translations for Agora. +# Copyright 2003-2009 The Horde Project +# This file is distributed under the same license as the Agora package. +# Jan Schneider , 2003-2008. +# +# message: Beitrag +# thread: Thema +msgid "" +msgstr "" +"Project-Id-Version: Agora 0.1\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2008-08-01 10:44+0200\n" +"PO-Revision-Date: 2008-04-01 15:04+0200\n" +"Last-Translator: Jan Schneider \n" +"Language-Team: i18n@lists.horde.org\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: moderate.php:36 +#, php-format +msgid "%d messages was approved." +msgstr "%d Beiträge wurden freigegeben." + +#: moderate.php:42 +#, php-format +msgid "%d messages was deleted." +msgstr "%d Beiträge wurden gelöscht." + +#: scripts/phorum2agora.php:218 +msgid "-a, --agora_id[=aid] Agora forum id to save message to" +msgstr "" +"-a, --agora_id[=aid] ID des Forums in dem Beiträge gespeichert " +"werden\n" +" sollen." + +#: scripts/phorum2agora.php:221 +msgid "-c, --count[=messages] Number of messages to move at once" +msgstr "" +"-c, --count[=messages] Anzahl der Beiträge die auf einmal verschoben\n" +" werden sollen" + +#: scripts/phorum2agora.php:220 +msgid "" +"-f, --from[=offset] Offset from where to start to read messages" +msgstr "" +"-f, --from[=offset] Offset ab dem Beiträge gelesen werden sollen" + +#: scripts/phorum2agora.php:216 +msgid "-h, --help Show this help" +msgstr "-h, --help Diese Hilfe anzeigen" + +#: scripts/phorum2agora.php:217 +msgid "-p, --phorum_id[=pid] Phorum forum id to read message from" +msgstr "" +"-p, --phorum_id[=pid] Phorum Foren-ID von dem Beiträge gelesen " +"werden\n" +" sollen" + +#: scripts/phorum2agora.php:219 +msgid "-t, --phorum_table[=table] Phorum messages tablename" +msgstr "-t, --phorum_table[=table] Phorum Tabellenname für Beiträge" + +#: lib/api.php:854 +msgid "Add a comment" +msgstr "Kommentar hinzufügen" + +#: lib/api.php:164 +msgid "Admin" +msgstr "Administration" + +#: messages/merge.php:66 +msgid "After Message: " +msgstr "Nach Beitrag: " + +#: forums.php:72 +msgid "All Forums" +msgstr "Alle Foren" + +#: lib/Forms/Forum.php:40 +msgid "Allow attachments in this forum?" +msgstr "Anhänge in diesem Forum erlauben?" + +#: messages/lock.php:51 +msgid "Allow replies in this thread" +msgstr "Antworten zu diesem Thema zulassen" + +#: moderate.php:33 moderate.php:69 +msgid "Approve" +msgstr "Freigeben" + +#: lib/Comments.php:73 config/prefs.php.dist:92 config/prefs.php.dist:127 +#: config/prefs.php.dist:168 config/prefs.php.dist:256 +msgid "Ascending" +msgstr "Aufsteigend" + +#: lib/Messages.php:1512 +msgid "Attachment" +msgstr "Anhang" + +#: lib/Comments.php:68 lib/Forms/Search.php:55 +msgid "Author" +msgstr "Autor" + +#: config/prefs.php.dist:11 +msgid "Avatar" +msgstr "Avatar" + +#: config/prefs.php.dist:64 +#, php-format +msgid "" +"Avatars must be smaller than %s by %s pixels and less than %sKb in size." +msgstr "Avatare müssen kleiner als %s mal %s Pixel und kleiner als %sKB sein." + +#: ban.php:58 lib/Messages.php:1457 +msgid "Ban" +msgstr "Verbannen" + +#: templates/ban.html.php:10 +msgid "Banned" +msgstr "Verbannt" + +#: moderate.php:62 +msgid "Body" +msgstr "Text" + +#: deleteforum.php:45 messages/abuse.php:48 messages/abuse.php:56 +#: messages/merge.php:47 messages/move.php:47 messages/delete.php:49 +#: messages/split.php:47 lib/api.php:775 +msgid "Cancel" +msgstr "Abbrechen" + +#: lib/Messages.php:1870 +msgid "Cannot create a forum with an empty name." +msgstr "Foren mit leeren Namen können nicht erstellt werden." + +#: templates/prefs/avatarselect.inc:8 +msgid "Choose from a gallery of avatars: " +msgstr "Wählen Sie einen Avatar aus der Liste aus:" + +#: lib/Comments.php:81 lib/api.php:483 +msgid "Comments" +msgstr "Kommentare" + +#: rss/threads.php:54 +#, php-format +msgid "Comments on %s" +msgstr "Kommentar zu %s" + +#: config/prefs.php.dist:48 +msgid "Comments view" +msgstr "Kommentaranzeige" + +#: editforum.php:44 +#, php-format +msgid "Could not create the forum. %s" +msgstr "Forum konnte nicht erstellt werden. %s" + +#: deleteforum.php:66 +#, php-format +msgid "Could not delete the forum. %s" +msgstr "Forum konnte nicht gelöscht erstellt werden. %s" + +#: messages/delete.php:63 lib/api.php:758 lib/api.php:769 lib/api.php:783 +#, php-format +msgid "Could not delete the message. %s" +msgstr "Beitrag konnte nicht gelöscht werden. %s" + +#: threads.php:32 +#, php-format +msgid "Could not list threads. %s" +msgstr "Themen konnten nicht angezeigt werden. %s" + +#: messages/lock.php:60 +#, php-format +msgid "Could not lock the thread. %s" +msgstr "Das Thema konnte nicht gesperrt werden. %s" + +#: messages/abuse.php:31 messages/merge.php:31 messages/move.php:31 +#: messages/index.php:34 messages/lock.php:33 messages/delete.php:33 +#: messages/split.php:31 +#, php-format +msgid "Could not open the message. %s" +msgstr "Beitrag konnte nicht geöffnet werden. %s" + +#: messages/edit.php:31 messages/edit.php:83 lib/api.php:623 lib/api.php:676 +msgid "Could not post the message: " +msgstr "Beitrag konnte nicht gespeichert werden:" + +#: scripts/phorum2agora.php:65 +msgid "Couldn't read command-line options." +msgstr "Die Kommandozeilenparameter konnten nicht gelesen werden." + +#: lib/Forms/Forum.php:26 +msgid "Create" +msgstr "Erstellen" + +#: lib/Messages.php:1508 +msgid "Current attachment" +msgstr "Aktueller Anhang" + +#: owner.php:63 forums.php:55 moderate.php:62 messages/index.php:142 +#: lib/Comments.php:67 lib/Comments.php:87 lib/api.php:473 +#: lib/Block/threads.php:122 lib/Block/forums.php:86 lib/Block/thread.php:82 +#: config/prefs.php.dist:83 config/prefs.php.dist:117 +#: config/prefs.php.dist:159 config/prefs.php.dist:247 +msgid "Date" +msgstr "Datum" + +#: config/prefs.php.dist:248 +msgid "Default comments view sort:" +msgstr "Standard-Sortierreihenfolge der Kommentare:" + +#: config/prefs.php.dist:84 +msgid "Default forums view sort:" +msgstr "Standard-Sortierreihenfolge der Foren:" + +#: config/prefs.php.dist:94 config/prefs.php.dist:129 +#: config/prefs.php.dist:170 config/prefs.php.dist:258 +msgid "Default sorting direction:" +msgstr "Sortierrichtung:" + +#: config/prefs.php.dist:160 +msgid "Default thread view sort:" +msgstr "Standard-Sortierreihenfolge in Themen:" + +#: config/prefs.php.dist:119 +msgid "Default threads view sort:" +msgstr "Standard-Sortierreihenfolge der Themen:" + +#: deleteforum.php:45 deleteforum.php:63 ban.php:55 moderators.php:66 +#: moderate.php:39 moderate.php:69 messages/index.php:118 +#: messages/delete.php:49 messages/delete.php:54 lib/Messages.php:927 +#: lib/Messages.php:1763 lib/api.php:775 lib/api.php:780 +msgid "Delete" +msgstr "Löschen" + +#: messages/delete.php:48 lib/api.php:774 +#, php-format +msgid "Delete \"%s\" and all replies?" +msgstr "\"%s\" und alle Antworten löschen?" + +#: deleteforum.php:43 lib/Messages.php:1455 +msgid "Delete Forum" +msgstr "Forum löschen" + +#: lib/Messages.php:1763 +msgid "Delete forum" +msgstr "Forum löschen" + +#: lib/Messages.php:927 +msgid "Delete message" +msgstr "Beitrag löschen" + +#: lib/Messages.php:1507 +msgid "Delete the existing attachment?" +msgstr "Den aktuellen Anhang löschen?" + +#: lib/Comments.php:74 config/prefs.php.dist:93 config/prefs.php.dist:128 +#: config/prefs.php.dist:169 config/prefs.php.dist:257 +msgid "Descending" +msgstr "Absteigend" + +#: forums.php:55 +msgid "Description" +msgstr "Beschreibung" + +#: config/prefs.php.dist:18 config/prefs.php.dist:25 config/prefs.php.dist:32 +#: config/prefs.php.dist:40 config/prefs.php.dist:47 +msgid "Display Options" +msgstr "Anzeige-Einstellungen" + +#: config/prefs.php.dist:237 +msgid "Display full message bodies in the comments view?" +msgstr "Kompletten Beitragstext in der Kommentaransicht anzeigen?" + +#: config/prefs.php.dist:181 +msgid "Display full message bodies in the thread list view?" +msgstr "Kompletten Beitragstext in der Themenliste anzeigen?" + +#: config/prefs.php.dist:200 +msgid "Display graphical emoticons?" +msgstr "Emoticons anzeigen?" + +#: messages/index.php:115 lib/Messages.php:923 lib/Messages.php:1757 +msgid "Edit" +msgstr "Bearbeiten" + +#: editforum.php:25 lib/Messages.php:1452 +msgid "Edit Forum" +msgstr "Forum bearbeiten" + +#: lib/api.php:651 +msgid "Edit Message" +msgstr "Beitrag bearbeiten" + +#: messages/edit.php:70 +#, php-format +msgid "Edit Message in \"%s\"" +msgstr "Beitrag in \"%s\" bearbeiten" + +#: lib/api.php:852 +msgid "Edit a comment" +msgstr "Kommentar bearbeiten" + +#: lib/Messages.php:1757 +msgid "Edit forum" +msgstr "Forum bearbeiten" + +#: lib/Messages.php:923 +msgid "Edit message" +msgstr "Beitrag bearbeiten" + +#: lib/Forms/Forum.php:37 +msgid "Enter a brief description of this forum" +msgstr "Geben Sie eine kurze Beschreibung für dieses Forum ein" + +#: messages/index.php:163 lib/Comments.php:60 config/prefs.php.dist:235 +msgid "Flat" +msgstr "Flach" + +#: moderators.php:78 moderators.php:81 forums.php:55 moderate.php:62 +#: templates/moderators.html.php:8 messages/move.php:52 +#: lib/Block/threads.php:45 lib/Block/forums.php:86 config/prefs.php.dist:79 +msgid "Forum" +msgstr "Forum" + +#: lib/Messages.php:1675 lib/api.php:752 +#, php-format +msgid "Forum %s does not exist." +msgstr "Das Forum %s existiert nicht." + +#: editforum.php:47 +msgid "Forum Modified" +msgstr "Forum geändert" + +#: editforum.php:47 +msgid "Forum created." +msgstr "Forum erstellt." + +#: deleteforum.php:68 +msgid "Forum deleted." +msgstr "Forum gelöscht." + +#: deleteforum.php:49 templates/moderators.html.php:9 lib/Forms/Forum.php:29 +msgid "Forum name" +msgstr "Forumsname" + +#: deleteforum.php:71 +msgid "Forum not deleted." +msgstr "Forum nicht gelöscht." + +#: templates/forums.html.php:9 templates/common-header.inc:27 lib/api.php:165 +#: lib/Block/forums.php:3 lib/Block/forums.php:28 +msgid "Forums" +msgstr "Foren" + +#: config/prefs.php.dist:19 +msgid "Forums View" +msgstr "Forenansicht" + +#: rss/index.php:28 +#, php-format +msgid "Forums in %s" +msgstr "Foren in %s" + +#: lib/Messages.php:1489 +msgid "From" +msgstr "Von" + +#: templates/threads.html.php:44 +msgid "Goto page:" +msgstr "Zu Seite:" + +#: messages/index.php:153 messages/index.php:162 +msgid "Hide bodies" +msgstr "Beitragstexte ausblenden" + +#: lib/Messages.php:841 +msgid "Hot thread" +msgstr "\"Heißes\" Thema" + +#: lib/Forms/Forum.php:40 +msgid "If selected users will be able to attach files to their messages." +msgstr "Wenn markiert, können alle Benutzer Dateien an ihre Beiträge anhängen." + +#: messages/edit.php:112 +msgid "" +"Invalid parent message, you will be posting this message as a new thread." +msgstr "" +"Ungültiger Ursprungsbeitrag. Ihr Beitrag wird als neues Thema erstellt." + +#: lib/Forms/Forum.php:38 +msgid "Is this a moderated forum?" +msgstr "Ist dies ein moderiertes Forum?" + +#: lib/Forms/Search.php:43 +msgid "Keywords" +msgstr "Stichwörter" + +#: config/prefs.php.dist:81 +msgid "Last Message" +msgstr "Letzter Beitrag" + +#: forums.php:55 lib/Block/forums.php:86 +msgid "Last Post" +msgstr "Letzter Beitrag" + +#: threads.php:61 config/prefs.php.dist:118 +msgid "Last post" +msgstr "Letzter Beitrag" + +#: owner.php:35 +#, php-format +msgid "Last posts in forums owned by %s" +msgstr "Letzte Beiträge in Foren von %s" + +#: lib/Messages.php:931 +msgid "Lock" +msgstr "Sperren" + +#: messages/index.php:121 +msgid "Lock thread" +msgstr "Thema sperren" + +#: messages/lock.php:48 +#, php-format +msgid "Locking thread \"%s\"" +msgstr "Thema \"%s\" sperren" + +#: lib/Agora.php:347 +msgid "Malformed avatar." +msgstr "Ungültiger Avatar." + +#: lib/Agora.php:370 +msgid "Malformed database entry." +msgstr "Ungültiger Datenbankeintrag." + +#: scripts/phorum2agora.php:214 +msgid "" +"Mandatory arguments to long options are mandatory for short options too." +msgstr "" +"Pflichtwerte für lange Parameter sind auch für kurze Parameter verpflichtend." + +#: messages/merge.php:47 messages/merge.php:73 lib/Messages.php:942 +msgid "Merge" +msgstr "Zusammenfügen" + +#: messages/merge.php:46 +#, php-format +msgid "Merge \"%s\" with another thread" +msgstr "\"%s\" mit anderem Thema zusammenfügen" + +#: lib/Messages.php:1502 +msgid "Message" +msgstr "Beitrag" + +#: messages/abuse.php:79 +#, php-format +msgid "Message %s reported as abuse" +msgstr "Beitrag %s als Spam gemeldet" + +#: lib/Messages.php:503 +#, php-format +msgid "Message ID \"%d\" not found" +msgstr "Beitrags-ID \"%d\" nicht gefunden" + +#: config/prefs.php.dist:41 +msgid "Message View" +msgstr "Beitragsansicht" + +#: messages/delete.php:65 lib/api.php:785 +msgid "Message deleted." +msgstr "Beitrag gelöscht." + +#: messages/delete.php:55 lib/api.php:790 +msgid "Message not deleted." +msgstr "Der Beitrag wurde nicht gelöscht." + +#: messages/edit.php:85 lib/api.php:678 +msgid "Message posted." +msgstr "Beitrag gespeichert." + +#: templates/messages/index.html.php:1 config/prefs.php.dist:80 +msgid "Messages" +msgstr "Beiträge" + +#: moderate.php:82 templates/moderate.html.php:11 +msgid "Messages Awaiting Moderation" +msgstr "Zu moderierende Beiträge" + +#: lib/Messages.php:1782 +msgid "Moderate" +msgstr "Mäßig" + +#: moderators.php:76 templates/messages/flat_thread.html.php:10 +#: templates/messages/flat.html.php:26 templates/messages/message.html.php:21 +#: lib/Tree/flat.php:117 +msgid "Moderator" +msgstr "Moderator" + +#: moderators.php:70 templates/forums.html.php:39 +#: templates/moderators.html.php:4 templates/moderators.html.php:10 +msgid "Moderators" +msgstr "Moderatoren" + +#: messages/move.php:47 messages/move.php:59 lib/Messages.php:938 +msgid "Move" +msgstr "Verschieben" + +#: messages/move.php:46 +#, php-format +msgid "Move \"%s\" to another forum" +msgstr "\"%s\" in ein anderes Forum verschieben" + +#: config/prefs.php.dist:10 +msgid "My Information" +msgstr "Meine Informationen" + +#: editforum.php:25 +msgid "New Forum" +msgstr "Neues Forum" + +#: lib/Messages.php:1752 +msgid "New Post" +msgstr "Neuer Beitrag" + +#: lib/Agora.php:253 +msgid "New Thread" +msgstr "Neues Thema" + +#: lib/Messages.php:842 +msgid "New posts" +msgstr "Neue Beiträge" + +#: config/prefs.php.dist:178 +msgid "No" +msgstr "Nein" + +#: lib/Block/threads.php:118 +msgid "No available threads." +msgstr "Keine Themen verfügbar." + +#: lib/Block/threads.php:97 +msgid "No forum selected" +msgstr "Kein Forum ausgewählt." + +#: templates/forums.html.php:60 +msgid "No forums have been created." +msgstr "Es wurden keine Foren erstellt." + +#: config/prefs.php.dist:198 +msgid "No graphical emoticons" +msgstr "Emoticons nicht anzeigen" + +#: moderate.php:54 +msgid "No messages are waiting for moderation." +msgstr "Keine Beiträge zu moderieren." + +#: messages/abuse.php:39 +msgid "No moderators are associated with this forum." +msgstr "Diesem Forum sind keine Moderatoren zugeordnet." + +#: templates/moderators.html.php:27 +msgid "No moderators have been created." +msgstr "Es wurden keine Moderatoren angelegt." + +#: owner.php:48 templates/block/threads.html.php:32 +msgid "No threads" +msgstr "Keine Themen" + +#: messages/lock.php:51 +msgid "No, do not allow replies" +msgstr "Nein, Antworten nicht zulassen" + +#: config/prefs.php.dist:103 +msgid "Number of forums to display on each page" +msgstr "Anzahl der Foren pro Seite" + +#: config/prefs.php.dist:190 +msgid "Number of message to display on each page" +msgstr "Anzahl der Beiträge pro Seite" + +#: config/prefs.php.dist:146 config/prefs.php.dist:267 +msgid "Number of messages to display on each page" +msgstr "Anzahl der Beiträge pro Seite" + +#: config/prefs.php.dist:137 +msgid "Number of views in 24hrs to trigger a 'hot-thread':" +msgstr "" +"Anzahl der Seitenaufrufe innerhalb von 24 Stunden, um ein Thema als \"heiß\" " +"zu markieren:" + +#: lib/Block/forums.php:35 +msgid "Only display this many forums (0 to display all forums)" +msgstr "Maximal so viele Foren anzeigen (0 um alle Foren anzuzeigen)" + +#: lib/Block/threads.php:52 +msgid "Only display this many threads (0 to display all threads)" +msgstr "Maximal so viele Themen anzeigen (0 um alle Themen anzuzeigen)" + +#: templates/forums.html.php:34 +msgid "Options" +msgstr "Einstellungen" + +#: lib/Messages.php:889 +#, php-format +msgid "Page %d" +msgstr "Seite %d" + +#: lib/Forms/Forum.php:32 +msgid "Parent forum" +msgstr "Übergeordnetes Forum" + +#: lib/Messages.php:1471 +msgid "Post" +msgstr "Abschicken" + +#: lib/api.php:651 +msgid "Post a New Message" +msgstr "Neuen Beitrag erstellen" + +#: messages/edit.php:71 +#, php-format +msgid "Post a New Message to \"%s\"" +msgstr "Neuen Beitrag in \"%s\" erstellen" + +#: messages/edit.php:69 messages/index.php:208 +#, php-format +msgid "Post a Reply to \"%s\"" +msgstr "Antwort auf \"%s\" schreiben" + +#: lib/Messages.php:1447 lib/Messages.php:1752 +msgid "Post message" +msgstr "Neuer Beitrag" + +#: owner.php:63 forums.php:55 moderate.php:62 +#: templates/messages/flat_thread.html.php:7 +#: templates/messages/flat.html.php:22 messages/index.php:142 +#: lib/Comments.php:85 lib/api.php:471 lib/Block/threads.php:122 +#: lib/Block/forums.php:86 lib/Block/thread.php:82 lib/Tree/flat.php:112 +#: config/prefs.php.dist:82 config/prefs.php.dist:115 +#: config/prefs.php.dist:158 config/prefs.php.dist:246 +msgid "Posted by" +msgstr "Geschrieben von" + +#: messages/index.php:86 lib/Messages.php:548 +#, php-format +msgid "Posted by %s on %s" +msgstr "Geschrieben von %s am %s" + +#: threads.php:61 forums.php:55 lib/Block/forums.php:86 +#: config/prefs.php.dist:116 +msgid "Posts" +msgstr "Beiträge" + +#: lib/Messages.php:1494 +msgid "Quote" +msgstr "Zitieren" + +#: messages/index.php:109 lib/Messages.php:911 +msgid "Reply" +msgstr "Antworten" + +#: lib/Messages.php:911 +msgid "Reply to message" +msgstr "Beitrag beantworten" + +#: messages/abuse.php:47 messages/abuse.php:48 lib/Messages.php:917 +msgid "Report as abuse" +msgstr "Missbrauch melden" + +#: lib/Forms/Search.php:44 +msgid "Require all keywords?" +msgstr "Nach allen Wörtern suchen?" + +#: lib/Messages.php:1471 +msgid "Save" +msgstr "Speichern" + +#: lib/Forms/Search.php:57 +msgid "Search" +msgstr "Suche" + +#: search.php:70 lib/Forms/Search.php:33 +msgid "Search Forums" +msgstr "Foren durchsuchen" + +#: templates/search.html.php:5 +msgid "Search Results" +msgstr "Suchergebnisse" + +#: lib/Forms/Search.php:52 +msgid "Search in message contents?" +msgstr "In Beiträgen suchen?" + +#: lib/Forms/Search.php:48 +msgid "Search in subjects?" +msgstr "In Betreffs suchen?" + +#: lib/Forms/Search.php:37 +msgid "Search in these forums" +msgstr "Diese Foren durchsuchen" + +#: config/prefs.php.dist:12 +msgid "Set the avatar image that is shown with your posts." +msgstr "" +"Legen Sie das Avatarbild fest, das neben Ihren Beiträgen angezeigt wird." + +#: lib/Forms/Forum.php:38 +msgid "" +"Set this if you want all messages to be checked by a moderator before they " +"are posted." +msgstr "" +"Markieren Sie diese Einstellung, wenn alle Beiträge von einem Moderator " +"kontrolliert werden sollen, bevor sie erscheinen." + +#: config/prefs.php.dist:20 +msgid "Set your options for the forums view." +msgstr "Legen Sie Ihre Einstellungen für die Forenansicht fest." + +#: config/prefs.php.dist:42 +msgid "Set your options for the message view." +msgstr "Legen Sie Ihre Einstellungen für die Beitragsansicht fest." + +#: config/prefs.php.dist:34 config/prefs.php.dist:49 +msgid "Set your options for the single thread view." +msgstr "Legen Sie Ihre Einstellungen für die Ansicht einzelner Themen fest." + +#: config/prefs.php.dist:27 +msgid "Set your options for the threads view." +msgstr "Legen Sie Ihre Einstellungen für die Themenansicht fest." + +#: config/prefs.php.dist:199 +msgid "Show graphical emoticons" +msgstr "Emoticons anzeigen" + +#: lib/Block/thread.php:3 lib/Block/thread.php:52 +msgid "Single Thread" +msgstr "Einzelnes Thema" + +#: config/prefs.php.dist:33 +msgid "Single Thread View" +msgstr "Ansicht einzelner Themen" + +#: lib/Agora.php:192 +msgid "Sort Ascending" +msgstr "Aufsteigend sortieren" + +#: lib/Agora.php:192 +msgid "Sort Descending" +msgstr "Absteigend sortieren" + +#: lib/Comments.php:65 +msgid "Sort by" +msgstr "Sortieren nach" + +#: lib/Agora.php:200 lib/Agora.php:207 +#, php-format +msgid "Sort by %s" +msgstr "Sortieren nach %s" + +#: lib/Comments.php:71 +msgid "Sort direction" +msgstr "Sortierrichtung" + +#: lib/Messages.php:1516 lib/Forms/Message.php:24 +msgid "Spam protection" +msgstr "Spamschutz" + +#: messages/split.php:47 messages/split.php:55 lib/Messages.php:947 +msgid "Split" +msgstr "Teilen" + +#: messages/split.php:46 +#, php-format +msgid "Split \"%s\"" +msgstr "\"%s\" teilen" + +#: threads.php:61 +msgid "Started" +msgstr "Erster" + +#: deleteforum.php:57 +msgid "Subforums" +msgstr "Unterforen" + +#: threads.php:61 owner.php:63 moderate.php:62 messages/index.php:142 +#: lib/Comments.php:69 lib/Comments.php:83 lib/Messages.php:1496 +#: lib/Messages.php:1499 lib/api.php:469 lib/Block/threads.php:122 +#: lib/Block/thread.php:82 config/prefs.php.dist:114 config/prefs.php.dist:157 +#: config/prefs.php.dist:245 +msgid "Subject" +msgstr "Betreff" + +#: lib/Agora.php:229 +msgid "The VFS backend needs to be configured to enable attachment uploads." +msgstr "" +"Das VFS-Backend muss konfiguriert sein, um das Hochladen von Dateien zu " +"erlauben." + +#: config/prefs.php.dist:61 +msgid "The location of your avatar image." +msgstr "Der Ort Ihres Avatarbildes." + +#: lib/Block/forums.php:77 +msgid "There are no forums." +msgstr "Keine Foren gefunden." + +#: templates/threads.html.php:69 +msgid "There are no threads in this forum." +msgstr "In diesem Forum befinden sich noch keine Beiträge." + +#: lib/Messages.php:162 +msgid "This thread has been locked." +msgstr "Dieses Thema wurde geschlossen." + +#: deleteforum.php:48 +msgid "This will delete the forum, any subforums and all relative messages." +msgstr "" +"Damit wird das Forum, alle Unterforen und alle dazugehörigen Beiträge " +"gelöscht." + +#: messages/index.php:142 messages/index.php:154 lib/Comments.php:61 +#: lib/Block/thread.php:32 lib/Block/thread.php:82 config/prefs.php.dist:113 +#: config/prefs.php.dist:156 config/prefs.php.dist:236 +msgid "Thread" +msgstr "Thema" + +#: messages/merge.php:78 +#, php-format +msgid "Thread %s merged with thread %s after message %s." +msgstr "Thema %s mit Thema %s nach Beitrag %s zusammengefügt." + +#: messages/move.php:64 +#, php-format +msgid "Thread %s moved to from forum %s to %s." +msgstr "Thema %s von Forum %s nach %s verschoben." + +#: templates/messages/index.html.php:10 lib/Block/thread.php:89 +msgid "Thread List" +msgstr "Themenliste" + +#: templates/messages/message.html.php:34 +msgid "Thread Summary" +msgstr "Themenübersicht" + +#: messages/delete.php:70 +msgid "Thread deleted." +msgstr "Thema gelöscht." + +#: messages/index.php:200 messages/lock.php:63 +msgid "Thread locked." +msgstr "Thema gesperrt." + +#: messages/split.php:60 +#, php-format +msgid "Thread splitted by message %s." +msgstr "Thema ab Beitrag %s geteilt." + +#: messages/lock.php:65 +msgid "Thread unlocked." +msgstr "Thema freigegeben." + +#: forums.php:55 templates/threads.html.php:1 lib/Comments.php:77 +#: lib/Block/threads.php:3 lib/Block/threads.php:70 lib/Block/threads.php:76 +msgid "Threads" +msgstr "Themen" + +#: config/prefs.php.dist:26 +msgid "Threads View" +msgstr "Themenansicht" + +#: lib/Block/threads.php:80 +#, php-format +msgid "Threads in \"%s\"" +msgstr "Themen in \"%s\"" + +#: threads.php:68 threads.php:81 rss/threads.php:48 +#, php-format +msgid "Threads in %s" +msgstr "Themen in %s" + +#: lib/Block/thread.php:70 +msgid "Unable to fetch selected thread." +msgstr "Das ausgewählte Thema konnte nicht gelesen werden." + +#: lib/Block/threads.php:103 +msgid "Unable to fetch threads for selected forum." +msgstr "Die Themen für das ausgewählte Forum konnten nicht gelesen werden." + +#: lib/Messages.php:931 +msgid "Unlock" +msgstr "Freigeben" + +#: messages/index.php:121 +msgid "Unlock thread" +msgstr "Thema freigeben" + +#: messages/lock.php:49 lib/Forms/Forum.php:26 +msgid "Update" +msgstr "Aktualisierung" + +#: scripts/phorum2agora.php:212 +#, php-format +msgid "Usage: %s [OPTIONS]..." +msgstr "Aufruf: %s [OPTIONEN]..." + +#: ban.php:65 +msgid "User" +msgstr "Benutzer" + +#: lib/Comments.php:59 +msgid "View" +msgstr "Anzeigen" + +#: messages/index.php:179 +msgid "View bodies" +msgstr "Beitragstexte anzeigen" + +#: threads.php:61 +msgid "Views" +msgstr "Gelesen" + +#: messages/merge.php:57 +msgid "With Thread: " +msgstr "Mit Thema: " + +#: config/prefs.php.dist:179 +msgid "Yes" +msgstr "Ja" + +#: messages/lock.php:51 +msgid "Yes, allow replies" +msgstr "Ja, Antworten zulassen" + +#: config/prefs.php.dist:180 +msgid "Yes, and don't thread them" +msgstr "Ja, ohne einzurücken" + +#: owner.php:19 +msgid "You are not authorised for this action." +msgstr "Sie sind zu dieser Aktion nicht autorisiert." + +#: lib/Messages.php:1660 +#, php-format +msgid "You don't have permission to access messages in forum %s." +msgstr "Sie haben nicht genügend Rechte, um Beiträge im Forum %s anzuzeigen." + +#: messages/merge.php:38 messages/move.php:38 messages/lock.php:40 +#: messages/delete.php:40 messages/split.php:38 lib/Messages.php:569 +#: lib/Messages.php:738 lib/api.php:763 +#, php-format +msgid "You don't have permission to delete messages in forum %s." +msgstr "Sie haben nicht genügend Rechte, um Beiträge im Forum %s zu löschen." + +#: messages/edit.php:39 messages/index.php:194 lib/Messages.php:167 +#: lib/api.php:629 +#, php-format +msgid "You don't have permission to post messages in forum %s." +msgstr "Sie haben nicht genügend Rechte, um Beiträge im Forum %s zu erstellen." + +#: lib/Messages.php:813 +#, php-format +msgid "You don't have permission to read messages in forum %s." +msgstr "Sie haben nicht genügend Rechte, um Beiträge im Forum %s zu lesen." + +#: ban.php:30 +#, php-format +msgid "You don't have permissions to ban users from forum %s." +msgstr "" +"Sie haben nicht genügend Rechte, um Benutzer vom Forum %s zu verbannen." + +#: editforum.php:35 +#, php-format +msgid "You don't have permissions to create a new forum in %s" +msgstr "Sie haben nicht genügend Rechte, um ein neues Forum in %s zu erstellen" + +#: deleteforum.php:27 +#, php-format +msgid "You don't have permissions to delete forums in %s" +msgstr "Sie haben nicht genügend Rechte, um Foren in %s zu löschen" + +#: editforum.php:31 +#, php-format +msgid "You don't have permissions to edit forum %s" +msgstr "Sie haben nicht genügend Rechte, um Forum %s zu bearbeiten" + +#: lib/Agora.php:246 +msgid "_Forums" +msgstr "_Foren" + +#: lib/Agora.php:263 +msgid "_Moderate" +msgstr "_Moderieren" + +#: lib/Agora.php:267 +msgid "_Moderators" +msgstr "_Moderatoren" + +#: lib/Agora.php:258 +msgid "_New Forum" +msgstr "_Neues Forum" + +#: lib/Agora.php:271 +msgid "_Search" +msgstr "_Suche" + +#: lib/Agora.php:251 +msgid "_Threads" +msgstr "_Themen" + +#: templates/forums.html.php:51 templates/threads.html.php:60 +msgid "by" +msgstr "von" + +#: lib/Messages.php:1609 +msgid "download" +msgstr "Herunterladen" + +#: templates/messages/flat_thread.html.php:8 +#: templates/messages/flat.html.php:23 lib/Tree/flat.php:113 +msgid "on: " +msgstr "am: " + +#: lib/Messages.php:1610 +#, php-format +msgid "size: %s" +msgstr "Größe: %s" + +#: lib/Messages.php:1610 +#, php-format +msgid "type: %s" +msgstr "Typ: %s" diff --git a/agora/po/es_ES.po b/agora/po/es_ES.po new file mode 100644 index 000000000..0f2c83586 --- /dev/null +++ b/agora/po/es_ES.po @@ -0,0 +1,1028 @@ +# Spanish translations for agora package +# Traducciones al español para el paquete agora. +# Copyright 2008-2009 The Horde Project +# This file is distributed under the same license as the agora package. +# Automatically generated, 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: Agora 1.0-cvs\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2008-03-17 11:11+0100\n" +"PO-Revision-Date: 2008-03-17 11:11+0100\n" +"Last-Translator: Manuel P. Ayala \n" +"Language-Team: i18n@lists.horde.org\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: moderate.php:36 +#, php-format +msgid "%d messages was approved." +msgstr "Se aprobaron %d mensajes." + +#: moderate.php:42 +#, php-format +msgid "%d messages was deleted." +msgstr "Se eliminaron %d mensajes." + +#: scripts/phorum2agora.php:218 +msgid "-a, --agora_id[=aid] Agora forum id to save message to" +msgstr "" +"-a, --agora_id[=aid] if de foro de Agora en el que guardar el mensaje" + +#: scripts/phorum2agora.php:221 +msgid "-c, --count[=messages] Number of messages to move at once" +msgstr "-c, --count[=messages] Cantidad de mensajes a trasladar a la vez" + +#: scripts/phorum2agora.php:220 +msgid "" +"-f, --from[=offset] Offset from where to start to read messages" +msgstr "" +"-f, --from[=offset] Desplazamiento a partir del que empezar a leer " +"mensajes" + +#: scripts/phorum2agora.php:216 +msgid "-h, --help Show this help" +msgstr "-h, --help Muestra esta ayuda" + +#: scripts/phorum2agora.php:217 +msgid "-p, --phorum_id[=pid] Phorum forum id to read message from" +msgstr "" +"-p, --phorum_id[=pid] id de foro de Phorum del que leer los mensajes" + +#: scripts/phorum2agora.php:219 +msgid "-t, --phorum_table[=table] Phorum messages tablename" +msgstr "-t, --phorum_table[=table] nombre de tabla de mensajes de Phorum" + +#: lib/api.php:817 +msgid "Add a comment" +msgstr "Añadir comentario" + +#: lib/api.php:153 +msgid "Admin" +msgstr "Administrar" + +#: messages/merge.php:66 +msgid "After Message: " +msgstr "Mensaje posterior: " + +#: forums.php:72 +msgid "All Forums" +msgstr "Todos los foros" + +#: lib/Forms/Forum.php:40 +msgid "Allow attachments in this forum?" +msgstr "¿Permitir adjuntos en este foro?" + +#: messages/lock.php:51 +msgid "Allow replies in this thread" +msgstr "Permitir respuestas en esta conversación" + +#: moderate.php:33 moderate.php:69 +msgid "Approve" +msgstr "Aprobar" + +#: lib/Comments.php:73 config/.bak/prefs.php.dist:92 +#: config/.bak/prefs.php.dist:127 config/.bak/prefs.php.dist:168 +#: config/.bak/prefs.php.dist:256 +msgid "Ascending" +msgstr "Ascendente" + +#: lib/Messages.php:1512 +msgid "Attachment" +msgstr "Adjunto" + +#: lib/Comments.php:68 lib/Forms/Search.php:55 +msgid "Author" +msgstr "Autor" + +#: config/.bak/prefs.php.dist:11 +msgid "Avatar" +msgstr "Imagen personal" + +#: config/.bak/prefs.php.dist:64 +#, php-format +msgid "" +"Avatars must be smaller than %s by %s pixels and less than %sKb in size." +msgstr "" +"Las imágenes personales tienen que medir menos de %s por %s píxeles y tener " +"un tamaño menor de %sKb." + +#: ban.php:58 lib/Messages.php:1457 +msgid "Ban" +msgstr "Prohibir" + +#: templates/forums/ban.php:10 +msgid "Banned" +msgstr "Prohibido" + +#: moderate.php:62 +msgid "Body" +msgstr "Cuerpo" + +#: deleteforum.php:45 messages/delete.php:49 messages/move.php:47 +#: messages/merge.php:47 messages/split.php:47 messages/abuse.php:48 +#: messages/abuse.php:56 lib/api.php:738 +msgid "Cancel" +msgstr "Cancelar" + +#: lib/Messages.php:1870 +msgid "Cannot create a forum with an empty name." +msgstr "No se puede crear un foro con un nombre en blanco." + +#: templates/prefs/avatarselect.inc:8 +msgid "Choose from a gallery of avatars: " +msgstr "Elija de una galería de imágenes personales: " + +#: lib/api.php:446 lib/Comments.php:81 +msgid "Comments" +msgstr "Comentarios" + +#: rss/threads.php:54 +#, php-format +msgid "Comments on %s" +msgstr "Comentarios en %s" + +#: config/.bak/prefs.php.dist:48 +msgid "Comments view" +msgstr "Vista de comentarios" + +#: editforum.php:44 +#, php-format +msgid "Could not create the forum. %s" +msgstr "No se puede crear el foro. %s" + +#: deleteforum.php:66 +#, php-format +msgid "Could not delete the forum. %s" +msgstr "No se puede eliminar el foro. %s" + +#: messages/delete.php:63 lib/api.php:721 lib/api.php:732 lib/api.php:746 +#, php-format +msgid "Could not delete the message. %s" +msgstr "No se puede eliminar el mensaje. %s" + +#: threads.php:32 +#, php-format +msgid "Could not list threads. %s" +msgstr "No se pueden listar las conversaciones. %s" + +#: messages/lock.php:60 +#, php-format +msgid "Could not lock the thread. %s" +msgstr "No se puede bloquear la conversación. %s" + +#: messages/index.php:34 messages/delete.php:33 messages/move.php:31 +#: messages/merge.php:31 messages/split.php:31 messages/lock.php:33 +#: messages/abuse.php:31 +#, php-format +msgid "Could not open the message. %s" +msgstr "No se puede abrir el mensaje. %s" + +#: messages/edit.php:31 messages/edit.php:83 lib/api.php:586 lib/api.php:639 +msgid "Could not post the message: " +msgstr "No se pudo enviar el mensaje: " + +#: scripts/phorum2agora.php:65 +msgid "Couldn't read command-line options." +msgstr "No se pudieron lees las opciones de línea de comandos." + +#: lib/Forms/Forum.php:26 +msgid "Create" +msgstr "Crear" + +#: lib/Messages.php:1508 +msgid "Current attachment" +msgstr "Adjunto actual" + +#: forums.php:55 moderate.php:62 messages/index.php:146 lib/api.php:436 +#: lib/Comments.php:67 lib/Comments.php:87 lib/Block/forums.php:86 +#: lib/Block/threads.php:122 lib/Block/thread.php:82 +#: config/.bak/prefs.php.dist:83 config/.bak/prefs.php.dist:117 +#: config/.bak/prefs.php.dist:159 config/.bak/prefs.php.dist:247 +msgid "Date" +msgstr "Fecha" + +#: config/.bak/prefs.php.dist:248 +msgid "Default comments view sort:" +msgstr "Clasificación por omisión de la vista de comentarios:" + +#: config/.bak/prefs.php.dist:84 +msgid "Default forums view sort:" +msgstr "Clasificación por omisión de la vista de foros:" + +#: config/.bak/prefs.php.dist:94 config/.bak/prefs.php.dist:129 +#: config/.bak/prefs.php.dist:170 config/.bak/prefs.php.dist:258 +msgid "Default sorting direction:" +msgstr "Sentido de clasificación por omisión:" + +#: config/.bak/prefs.php.dist:160 +msgid "Default thread view sort:" +msgstr "Clasificación por omisión de la vista de conversaciones:" + +#: config/.bak/prefs.php.dist:119 +msgid "Default threads view sort:" +msgstr "Clasificación por omisión de la vista de conversaciones:" + +#: deleteforum.php:45 deleteforum.php:63 ban.php:55 moderators.php:66 +#: moderate.php:39 moderate.php:69 messages/index.php:122 +#: messages/delete.php:49 messages/delete.php:54 lib/api.php:738 +#: lib/api.php:743 lib/Messages.php:927 lib/Messages.php:1763 +msgid "Delete" +msgstr "Eliminar" + +#: messages/delete.php:48 lib/api.php:737 +#, php-format +msgid "Delete \"%s\" and all replies?" +msgstr "¿Eliminar \"%s\" y todas las respuestas?" + +#: deleteforum.php:43 lib/Messages.php:1455 +msgid "Delete Forum" +msgstr "Eliminar foro" + +#: lib/Messages.php:1763 +msgid "Delete forum" +msgstr "Eliminar foro" + +#: lib/Messages.php:927 +msgid "Delete message" +msgstr "Eliminar mensaje" + +#: lib/Messages.php:1507 +msgid "Delete the existing attachment?" +msgstr "¿Eliminar el adjunto existente?" + +#: lib/Comments.php:74 config/.bak/prefs.php.dist:93 +#: config/.bak/prefs.php.dist:128 config/.bak/prefs.php.dist:169 +#: config/.bak/prefs.php.dist:257 +msgid "Descending" +msgstr "Descendente" + +#: forums.php:55 +msgid "Description" +msgstr "Descripción" + +#: config/.bak/prefs.php.dist:18 config/.bak/prefs.php.dist:25 +#: config/.bak/prefs.php.dist:32 config/.bak/prefs.php.dist:40 +#: config/.bak/prefs.php.dist:47 +msgid "Display Options" +msgstr "Opciones de Visualización" + +#: config/.bak/prefs.php.dist:237 +msgid "Display full message bodies in the comments view?" +msgstr "¿Mostrar los mensajes completos en la vista de comentarios?" + +#: config/.bak/prefs.php.dist:181 +msgid "Display full message bodies in the thread list view?" +msgstr "¿Mostrar los mensajes completos en el listado de conversaciones?" + +#: config/.bak/prefs.php.dist:200 +msgid "Display graphical emoticons?" +msgstr "¿Mostrar emoticones gráficos?" + +#: messages/index.php:119 lib/Messages.php:923 lib/Messages.php:1757 +msgid "Edit" +msgstr "Modificar" + +#: editforum.php:25 lib/Messages.php:1452 +msgid "Edit Forum" +msgstr "Modificar foro" + +#: lib/api.php:614 +msgid "Edit Message" +msgstr "Modificar mensaje" + +#: messages/edit.php:70 +#, php-format +msgid "Edit Message in \"%s\"" +msgstr "Modificar mensaje en \"%s\"" + +#: lib/api.php:815 +msgid "Edit a comment" +msgstr "Modificar un comentario" + +#: lib/Messages.php:1757 +msgid "Edit forum" +msgstr "Modificar foro" + +#: lib/Messages.php:923 +msgid "Edit message" +msgstr "Modificar mensaje" + +#: lib/Forms/Forum.php:37 +msgid "Enter a brief description of this forum" +msgstr "Introduzca una descripción breve del foro" + +#: messages/index.php:168 lib/Comments.php:60 config/.bak/prefs.php.dist:235 +msgid "Flat" +msgstr "Vista plana" + +#: forums.php:55 moderators.php:78 moderators.php:81 moderate.php:62 +#: messages/move.php:52 templates/moderators/moderators.php:8 +#: lib/Block/forums.php:86 lib/Block/threads.php:45 +#: config/.bak/prefs.php.dist:79 +msgid "Forum" +msgstr "Foro" + +#: lib/api.php:715 lib/Messages.php:1675 +#, php-format +msgid "Forum %s does not exist." +msgstr "El foro %s no existe." + +#: editforum.php:47 +msgid "Forum Modified" +msgstr "Se ha modificado el foro" + +#: editforum.php:47 +msgid "Forum created." +msgstr "Se ha creado el foro." + +#: deleteforum.php:68 +msgid "Forum deleted." +msgstr "Se ha eliminado el foro." + +#: deleteforum.php:49 templates/moderators/moderators.php:9 +#: lib/Forms/Forum.php:29 +msgid "Forum name" +msgstr "Nombre del foro" + +#: deleteforum.php:71 +msgid "Forum not deleted." +msgstr "No se ha eliminado el foro." + +#: templates/common-header.inc:27 templates/forums/forums.php:9 +#: lib/api.php:154 lib/Block/forums.php:3 lib/Block/forums.php:28 +msgid "Forums" +msgstr "Foros" + +#: config/.bak/prefs.php.dist:19 +msgid "Forums View" +msgstr "Vista de foros" + +#: rss/index.php:28 +#, php-format +msgid "Forums in %s" +msgstr "Foros de %s" + +#: lib/Messages.php:1489 +msgid "From" +msgstr "De" + +#: templates/threads/threads.php:44 +msgid "Goto page:" +msgstr "Ir a la página:" + +#: messages/index.php:158 messages/index.php:167 +msgid "Hide bodies" +msgstr "Ocultar cuerpos" + +#: lib/Messages.php:841 +msgid "Hot thread" +msgstr "Conversación caliente" + +#: lib/Forms/Forum.php:40 +msgid "If selected users will be able to attach files to their messages." +msgstr "Si se selecciona los usuarios podrán adjuntar archivos a sus mensajes." + +#: messages/edit.php:112 +msgid "" +"Invalid parent message, you will be posting this message as a new thread." +msgstr "" +"Mensaje padre no válido, estará enviando este mensaje como una conversación " +"nueva." + +#: lib/Forms/Forum.php:38 +msgid "Is this a moderated forum?" +msgstr "¿El foro está moderado?" + +#: lib/Forms/Search.php:43 +msgid "Keywords" +msgstr "Palabras clave" + +#: config/.bak/prefs.php.dist:81 +msgid "Last Message" +msgstr "Último mensaje" + +#: forums.php:55 lib/Block/forums.php:86 +msgid "Last Post" +msgstr "Último envío" + +#: threads.php:61 config/.bak/prefs.php.dist:118 +msgid "Last post" +msgstr "Último envío" + +#: lib/Messages.php:931 +msgid "Lock" +msgstr "Bloquear" + +#: messages/index.php:125 +msgid "Lock thread" +msgstr "Bloquear conversación" + +#: messages/lock.php:48 +#, php-format +msgid "Locking thread \"%s\"" +msgstr "Bloqueando conversación \"%s\"" + +#: lib/Agora.php:347 +msgid "Malformed avatar." +msgstr "Imagen personal defectuosa." + +#: lib/Agora.php:370 +msgid "Malformed database entry." +msgstr "Entrada de base de datos defectuosa." + +#: scripts/phorum2agora.php:214 +msgid "" +"Mandatory arguments to long options are mandatory for short options too." +msgstr "" +"Los argumentos requeridos de las opciones extendidas también son requeridos " +"en las opciones abreviadas." + +#: messages/merge.php:47 messages/merge.php:73 lib/Messages.php:942 +msgid "Merge" +msgstr "Combinar" + +#: messages/merge.php:46 +#, php-format +msgid "Merge \"%s\" with another thread" +msgstr "Combinar \"%s\" con otra conversación" + +#: lib/Messages.php:1502 +msgid "Message" +msgstr "Mensaje" + +#: messages/abuse.php:79 +#, php-format +msgid "Message %s reported as abuse" +msgstr "Se ha considerado el mensaje %s como correo abusivo." + +#: lib/Messages.php:503 +#, php-format +msgid "Message ID \"%d\" not found" +msgstr "No se encontró el ID de mensaje \"%d\"" + +#: config/.bak/prefs.php.dist:41 +msgid "Message View" +msgstr "Vista de mensajes" + +#: messages/delete.php:65 lib/api.php:748 +msgid "Message deleted." +msgstr "Se ha eliminado el mensaje." + +#: messages/delete.php:55 lib/api.php:753 +msgid "Message not deleted." +msgstr "Mensaje no borrado." + +#: messages/edit.php:85 lib/api.php:641 +msgid "Message posted." +msgstr "Mensaje enviado." + +#: templates/messages/index.php:1 config/.bak/prefs.php.dist:80 +msgid "Messages" +msgstr "Mensajes" + +#: moderate.php:82 templates/moderate/moderate.php:11 +msgid "Messages Awaiting Moderation" +msgstr "Mensajes pendientes de moderación" + +#: lib/Messages.php:1782 +msgid "Moderate" +msgstr "Moderar" + +#: moderators.php:76 templates/messages/flat.php:26 +#: templates/messages/message.php:21 templates/messages/flat_thread.php:10 +#: lib/Tree/flat.php:117 +msgid "Moderator" +msgstr "Moderador" + +#: moderators.php:70 templates/forums/forums.php:39 +#: templates/moderators/moderators.php:4 +#: templates/moderators/moderators.php:10 +msgid "Moderators" +msgstr "Moderadores" + +#: messages/move.php:47 messages/move.php:59 lib/Messages.php:938 +msgid "Move" +msgstr "Trasladar" + +#: messages/move.php:46 +#, php-format +msgid "Move \"%s\" to another forum" +msgstr "Trasladar \"%s\" a otro foro" + +#: config/.bak/prefs.php.dist:10 +msgid "My Information" +msgstr "Mi información" + +#: editforum.php:25 +msgid "New Forum" +msgstr "Añadir foro" + +#: lib/Messages.php:1752 +msgid "New Post" +msgstr "Añadir envío" + +#: lib/Agora.php:253 +msgid "New Thread" +msgstr "Añadir conversación" + +#: lib/Messages.php:842 +msgid "New posts" +msgstr "Envíos nuevos" + +#: config/.bak/prefs.php.dist:178 +msgid "No" +msgstr "No" + +#: lib/Block/threads.php:118 +msgid "No available threads." +msgstr "No hay conversaciones." + +#: lib/Block/threads.php:97 +msgid "No forum selected" +msgstr "No se ha seleccionado un foro." + +#: templates/forums/forums.php:60 +msgid "No forums have been created." +msgstr "No se ha creado ningún foro." + +#: config/.bak/prefs.php.dist:198 +msgid "No graphical emoticons" +msgstr "No hay emoticones gráficos" + +#: moderate.php:54 +msgid "No messages are waiting for moderation." +msgstr "No hay mensajes pendientes de moderación." + +#: messages/abuse.php:39 +msgid "No moderators are associated with this forum." +msgstr "No se ha asociado ningún moderador a este foro." + +#: templates/moderators/moderators.php:27 +msgid "No moderators have been created." +msgstr "No se ha creado ningún moderador." + +#: templates/block/threads.php:32 +msgid "No threads" +msgstr "Sin conversaciones" + +#: messages/lock.php:51 +msgid "No, do not allow replies" +msgstr "No, no permitir respuestas" + +#: config/.bak/prefs.php.dist:103 +msgid "Number of forums to display on each page" +msgstr "Número de foros mostrado en cada página" + +#: config/.bak/prefs.php.dist:190 +msgid "Number of message to display on each page" +msgstr "Número de mensajes mostrados en cada página" + +#: config/.bak/prefs.php.dist:146 config/.bak/prefs.php.dist:267 +msgid "Number of messages to display on each page" +msgstr "Número de mensajes mostrados en cada página" + +#: config/.bak/prefs.php.dist:137 +msgid "Number of views in 24hrs to trigger a 'hot-thread':" +msgstr "" +"Número de opiniones en 24 horas que activen una 'conversación-caliente':" + +#: lib/Block/forums.php:35 +msgid "Only display this many forums (0 to display all forums)" +msgstr "Mostrar sólo este número de foros (0 para mostrar todos los foros)" + +#: lib/Block/threads.php:52 +msgid "Only display this many threads (0 to display all threads)" +msgstr "" +"Mostrar sólo este número de conversaciones (0 para mostrar todas las " +"conversaciones)" + +#: templates/forums/forums.php:34 +msgid "Options" +msgstr "Opciones" + +#: lib/Messages.php:889 +#, php-format +msgid "Page %d" +msgstr "Página %d" + +#: lib/Forms/Forum.php:32 +msgid "Parent forum" +msgstr "Foro anterior" + +#: lib/Messages.php:1471 +msgid "Post" +msgstr "Enviar" + +#: lib/api.php:614 +msgid "Post a New Message" +msgstr "Añadir un mensaje" + +#: messages/edit.php:71 +#, php-format +msgid "Post a New Message to \"%s\"" +msgstr "Añadir un mensaje a \"%s\"" + +#: messages/index.php:213 messages/edit.php:69 +#, php-format +msgid "Post a Reply to \"%s\"" +msgstr "Añadir una respuesta a \"%s\"" + +#: lib/Messages.php:1447 lib/Messages.php:1752 +msgid "Post message" +msgstr "Enviar mensaje" + +#: forums.php:55 moderate.php:62 messages/index.php:146 +#: templates/messages/flat.php:22 templates/messages/flat_thread.php:7 +#: lib/api.php:434 lib/Comments.php:85 lib/Tree/flat.php:112 +#: lib/Block/forums.php:86 lib/Block/threads.php:122 lib/Block/thread.php:82 +#: config/.bak/prefs.php.dist:82 config/.bak/prefs.php.dist:115 +#: config/.bak/prefs.php.dist:158 config/.bak/prefs.php.dist:246 +msgid "Posted by" +msgstr "Enviado por" + +#: messages/index.php:87 lib/Messages.php:548 +#, php-format +msgid "Posted by %s on %s" +msgstr "Enviado por %s de %s" + +#: forums.php:55 threads.php:61 lib/Block/forums.php:86 +#: config/.bak/prefs.php.dist:116 +msgid "Posts" +msgstr "Envíos" + +#: lib/Messages.php:1494 +msgid "Quote" +msgstr "Citar" + +#: messages/index.php:113 lib/Messages.php:911 +msgid "Reply" +msgstr "Responder" + +#: lib/Messages.php:911 +msgid "Reply to message" +msgstr "Responder al mensaje" + +#: messages/abuse.php:47 messages/abuse.php:48 lib/Messages.php:917 +msgid "Report as abuse" +msgstr "Considerar como correo abusivo" + +#: lib/Forms/Search.php:44 +msgid "Require all keywords?" +msgstr "¿Requerir todas las palabras claves?" + +#: lib/Messages.php:1471 +msgid "Save" +msgstr "Guardar" + +#: lib/Forms/Search.php:57 +msgid "Search" +msgstr "Buscar" + +#: search.php:70 lib/Forms/Search.php:33 +msgid "Search Forums" +msgstr "Buscar foros" + +#: templates/search/search.php:5 +msgid "Search Results" +msgstr "Resultados de la búsqueda" + +#: lib/Forms/Search.php:52 +msgid "Search in message contents?" +msgstr "¿Buscar en contenido de los mensajes?" + +#: lib/Forms/Search.php:48 +msgid "Search in subjects?" +msgstr "¿Buscar en los asuntos?" + +#: lib/Forms/Search.php:37 +msgid "Search in these forums" +msgstr "Buscar en estos foros" + +#: config/.bak/prefs.php.dist:12 +msgid "Set the avatar image that is shown with your posts." +msgstr "Define la imagen personal mostrada con sus envíos." + +#: lib/Forms/Forum.php:38 +msgid "" +"Set this if you want all messages to be checked by a moderator before they " +"are posted." +msgstr "" +"Active ésto si desea que un moderador examine todos los mensajes antes de " +"enviarlos." + +#: config/.bak/prefs.php.dist:20 +msgid "Set your options for the forums view." +msgstr "Define las opciones de la vista de foros." + +#: config/.bak/prefs.php.dist:42 +msgid "Set your options for the message view." +msgstr "Define las opciones de la vista de mensajes." + +#: config/.bak/prefs.php.dist:34 config/.bak/prefs.php.dist:49 +msgid "Set your options for the single thread view." +msgstr "Define las opciones de la vista de conversación." + +#: config/.bak/prefs.php.dist:27 +msgid "Set your options for the threads view." +msgstr "Define las opciones de la vista de conversaciones." + +#: config/.bak/prefs.php.dist:199 +msgid "Show graphical emoticons" +msgstr "Mostrar emoticones gráficos" + +#: lib/Block/thread.php:3 lib/Block/thread.php:52 +msgid "Single Thread" +msgstr "Conversación única" + +#: config/.bak/prefs.php.dist:33 +msgid "Single Thread View" +msgstr "Conversación única" + +#: lib/Agora.php:192 +msgid "Sort Ascending" +msgstr "Ascendente" + +#: lib/Agora.php:192 +msgid "Sort Descending" +msgstr "Descendente" + +#: lib/Comments.php:65 +msgid "Sort by" +msgstr "Ordenar por" + +#: lib/Agora.php:200 lib/Agora.php:207 +#, php-format +msgid "Sort by %s" +msgstr "Ordenar por %s" + +#: lib/Comments.php:71 +msgid "Sort direction" +msgstr "Sentido de clasificación" + +#: lib/Messages.php:1516 lib/Forms/Message.php:24 +msgid "Spam protection" +msgstr "Protección anti spam" + +#: messages/split.php:47 messages/split.php:55 lib/Messages.php:947 +msgid "Split" +msgstr "Dividir" + +#: messages/split.php:46 +#, php-format +msgid "Split \"%s\"" +msgstr "Dividir \"%s\"" + +#: threads.php:61 +msgid "Started" +msgstr "Iniciada" + +#: deleteforum.php:57 +msgid "Subforums" +msgstr "Foros secundarios" + +#: threads.php:61 moderate.php:62 messages/index.php:146 lib/api.php:432 +#: lib/Comments.php:69 lib/Comments.php:83 lib/Messages.php:1496 +#: lib/Messages.php:1499 lib/Block/threads.php:122 lib/Block/thread.php:82 +#: config/.bak/prefs.php.dist:114 config/.bak/prefs.php.dist:157 +#: config/.bak/prefs.php.dist:245 +msgid "Subject" +msgstr "Asunto" + +#: lib/Agora.php:229 +msgid "The VFS backend needs to be configured to enable attachment uploads." +msgstr "Para activar la carga de adjuntos hay que configurar el motor VFS." + +#: config/.bak/prefs.php.dist:61 +msgid "The location of your avatar image." +msgstr "Ubicación de su imagen personal." + +#: lib/Block/forums.php:77 +msgid "There are no forums." +msgstr "No hay foros." + +#: templates/threads/threads.php:69 +msgid "There are no threads in this forum." +msgstr "No hay conversaciones en este foro." + +#: lib/Messages.php:162 +msgid "This thread has been locked." +msgstr "Esta conversación se ha bloqueado." + +#: deleteforum.php:48 +msgid "This will delete the forum, any subforums and all relative messages." +msgstr "" +"Ésto eliminará el foro, cualquier foro secundario y todos los mensajes que " +"contengan." + +#: messages/index.php:146 messages/index.php:159 lib/Comments.php:61 +#: lib/Block/thread.php:32 lib/Block/thread.php:82 +#: config/.bak/prefs.php.dist:113 config/.bak/prefs.php.dist:156 +#: config/.bak/prefs.php.dist:236 +msgid "Thread" +msgstr "Conversación" + +#: messages/merge.php:78 +#, php-format +msgid "Thread %s merged with thread %s after message %s." +msgstr "" +"Se ha combinado la conversación %s con la conversación %s tras el mensaje %s." + +#: messages/move.php:64 +#, php-format +msgid "Thread %s moved to from forum %s to %s." +msgstr "Se ha trasladado la conversación %s al foro %s desde el foro %s." + +#: templates/messages/index.php:10 lib/Block/thread.php:89 +msgid "Thread List" +msgstr "Lista de conversaciones" + +#: templates/messages/message.php:34 +msgid "Thread Summary" +msgstr "Resumen de la conversación" + +#: messages/delete.php:70 +msgid "Thread deleted." +msgstr "Conversación eliminada." + +#: messages/index.php:205 messages/lock.php:63 +msgid "Thread locked." +msgstr "Conversación bloqueada." + +#: messages/split.php:60 +#, php-format +msgid "Thread splitted by message %s." +msgstr "Se ha dividido la conversación a partir del mensaje %s." + +#: messages/lock.php:65 +msgid "Thread unlocked." +msgstr "Conversación desbloqueada." + +#: forums.php:55 templates/threads/threads.php:1 lib/Comments.php:77 +#: lib/Block/threads.php:3 lib/Block/threads.php:70 lib/Block/threads.php:76 +msgid "Threads" +msgstr "Conversaciones" + +#: config/.bak/prefs.php.dist:26 +msgid "Threads View" +msgstr "Vista de conversaciones" + +#: lib/Block/threads.php:80 +#, php-format +msgid "Threads in \"%s\"" +msgstr "Conversaciones en \"%s\"" + +#: threads.php:68 threads.php:81 rss/threads.php:48 +#, php-format +msgid "Threads in %s" +msgstr "Conversaciones en %s" + +#: lib/Block/thread.php:70 +msgid "Unable to fetch selected thread." +msgstr "Incapaz de traer la conversación seleccionada." + +#: lib/Block/threads.php:103 +msgid "Unable to fetch threads for selected forum." +msgstr "Incapaz de traer las conversaciones del foro seleccionado." + +#: lib/Messages.php:931 +msgid "Unlock" +msgstr "Desbloquear" + +#: messages/index.php:125 +msgid "Unlock thread" +msgstr "Desbloquear conversación" + +#: messages/lock.php:49 lib/Forms/Forum.php:26 +msgid "Update" +msgstr "Actualizar" + +#: scripts/phorum2agora.php:212 +#, php-format +msgid "Usage: %s [OPTIONS]..." +msgstr "Uso: %s [OPCIONES]..." + +#: ban.php:65 +msgid "User" +msgstr "Usuario" + +#: lib/Comments.php:59 +msgid "View" +msgstr "Ver" + +#: messages/index.php:184 +msgid "View bodies" +msgstr "Ver cuerpos" + +#: threads.php:61 +msgid "Views" +msgstr "Vistas" + +#: messages/merge.php:57 +msgid "With Thread: " +msgstr "Con la conversación: " + +#: config/.bak/prefs.php.dist:179 +msgid "Yes" +msgstr "Sí" + +#: messages/lock.php:51 +msgid "Yes, allow replies" +msgstr "Sí, permitir respuestas" + +#: config/.bak/prefs.php.dist:180 +msgid "Yes, and don't thread them" +msgstr "Sí, y no mostrar las conversaciones" + +#: lib/Messages.php:1660 +#, php-format +msgid "You don't have permission to access messages in forum %s." +msgstr "Carece de permisos para acceder a los mensajes del foro %s." + +#: messages/delete.php:40 messages/move.php:38 messages/merge.php:38 +#: messages/split.php:38 messages/lock.php:40 lib/api.php:726 +#: lib/Messages.php:569 lib/Messages.php:738 +#, php-format +msgid "You don't have permission to delete messages in forum %s." +msgstr "Carece de permisos para eliminar los mensajes del foro %s." + +#: messages/index.php:199 messages/edit.php:39 lib/api.php:592 +#: lib/Messages.php:167 +#, php-format +msgid "You don't have permission to post messages in forum %s." +msgstr "Carece de permisos para enviar mensajes al foro %s." + +#: lib/Messages.php:813 +#, php-format +msgid "You don't have permission to read messages in forum %s." +msgstr "Carece de permisos para leer los mensajes del foro %s." + +#: ban.php:30 +#, php-format +msgid "You don't have permissions to ban users from forum %s." +msgstr "Carece de permisos para prohibir usuarios en el foro %s." + +#: editforum.php:35 +#, php-format +msgid "You don't have permissions to create a new forum in %s" +msgstr "Carece de permisos para crear un foro en %s" + +#: deleteforum.php:27 +#, php-format +msgid "You don't have permissions to delete forums in %s" +msgstr "Carece de permisos para eliminar foros en %s" + +#: editforum.php:31 +#, php-format +msgid "You don't have permissions to edit forum %s" +msgstr "Carece de permisos para modificar el foro %s" + +#: lib/Agora.php:246 +msgid "_Forums" +msgstr "_Foros" + +#: lib/Agora.php:263 +msgid "_Moderate" +msgstr "_Moderar" + +#: lib/Agora.php:267 +msgid "_Moderators" +msgstr "Mo_deradores" + +#: lib/Agora.php:258 +msgid "_New Forum" +msgstr "_Añadir foro" + +#: lib/Agora.php:271 +msgid "_Search" +msgstr "_Buscar" + +#: lib/Agora.php:251 +msgid "_Threads" +msgstr "_Conversaciones" + +#: templates/forums/forums.php:51 templates/threads/threads.php:60 +msgid "by" +msgstr "por" + +#: lib/Messages.php:1609 +msgid "download" +msgstr "descargar" + +#: templates/messages/flat.php:23 templates/messages/flat_thread.php:8 +#: lib/Tree/flat.php:113 +msgid "on: " +msgstr "en: " + +#: lib/Messages.php:1610 +#, php-format +msgid "size: %s" +msgstr "tamaño: %s" + +#: lib/Messages.php:1610 +#, php-format +msgid "type: %s" +msgstr "tipo: %s" diff --git a/agora/po/fi_FI.po b/agora/po/fi_FI.po new file mode 100644 index 000000000..049e3848d --- /dev/null +++ b/agora/po/fi_FI.po @@ -0,0 +1,623 @@ +# Finnish translation for Agora. +# Copyright +# Leena Heino , 2004. +# +msgid "" +msgstr "" +"Project-Id-Version: Agora 0.1-cvs\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2005-03-14 11:02+0200\n" +"PO-Revision-Date: 2004-12-10 12:59+0200\n" +"Last-Translator: Leena Heino \n" +"Language-Team: Finnish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8-bit\n" + +#: lib/Forums.php:170 +msgid "-- Top Level --" +msgstr "-- Ylin taso --" + +#: lib/api.php:82 +msgid "Admin" +msgstr "Ylläpitäjä" + +#: forums.php:58 +msgid "All Forums" +msgstr "Kaikki foorumit" + +#: editforum.php:46 +msgid "Allow attachments in this forum?" +msgstr "Salli liitteet tälle foorumille." + +#: messages/lock.php:64 +msgid "Allow replies in this thread" +msgstr "Salli vastauksia tähän säikeeseen" + +#: moderate.php:64 +msgid "Approve" +msgstr "Hyväksy" + +#: config/prefs.php.dist:55 config/prefs.php.dist:85 config/prefs.php.dist:131 +msgid "Ascending" +msgstr "Nouseva" + +#: lib/Messages.php:816 +msgid "Attachment" +msgstr "Liite" + +#: moderate.php:55 +msgid "Body" +msgstr "Sisältö" + +#: lib/Forums.php:74 +msgid "Can not create a forum with an empty name." +msgstr "Ei voi tehdä foorumia tyhjällä nimellä." + +#: lib/Messages.php:88 +msgid "Can not create a message without a message thread." +msgstr "Et voi kirjoittaa viestiä ilman säiettä." + +#: messages/delete.php:61 messages/delete.php:83 +msgid "Cancel" +msgstr "Peru" + +#: lib/api.php:235 +msgid "Comments" +msgstr "Kommentit" + +#: editforum.php:55 +#, php-format +msgid "Could not create the forum. %s" +msgstr "Ei voi luoda foorumia. %s" + +#: deleteforum.php:62 +#, php-format +msgid "Could not delete the forum. %s" +msgstr "Ei voi poistaa foorumia. %s" + +#: messages/delete.php:45 messages/delete.php:75 +#, php-format +msgid "Could not delete the message. %s" +msgstr "Ei voi poistaa viestiä. %s" + +#: threads.php:30 +#, php-format +msgid "Could not list threads. %s" +msgstr "Ei voi listata säikeitä. %s" + +#: messages/lock.php:45 messages/lock.php:73 +#, php-format +msgid "Could not lock the thread. %s" +msgstr "Ei voi lukita säiettä. %s" + +#: messages/index.php:26 messages/message.php:25 +#, php-format +msgid "Could not open the message. %s" +msgstr "Ei voi avata viestiä. %s" + +#: messages/edit.php:78 lib/api.php:355 +#, php-format +msgid "Could not post the message. %s" +msgstr "Ei voi lähettää viestiä. %s" + +#: messages/edit.php:30 lib/api.php:323 +#, php-format +msgid "Could not post the message: %s" +msgstr "Ei voi lähettää viestiä: %s" + +#: editforum.php:36 +msgid "Create" +msgstr "Luo" + +#: lib/Messages.php:812 +msgid "Current attachment" +msgstr "Nykyinen liite" + +#: forums.php:42 moderate.php:55 messages/index.php:47 messages/message.php:47 +#: lib/api.php:224 lib/Block/forums.php:70 lib/Block/thread.php:103 +#: lib/Block/threads.php:116 config/prefs.php.dist:46 config/prefs.php.dist:76 +#: config/prefs.php.dist:122 +msgid "Date" +msgstr "Päiväys" + +#: config/prefs.php.dist:47 +msgid "Default forums view sort:" +msgstr "Oletusjärjestys keskusteluryhmänäkymässä:" + +#: config/prefs.php.dist:57 config/prefs.php.dist:87 config/prefs.php.dist:133 +msgid "Default sorting direction:" +msgstr "Oletusjärjestyksen suunta:" + +#: config/prefs.php.dist:77 config/prefs.php.dist:123 +msgid "Default threads view sort:" +msgstr "Oletusjärjestys säienäkymässä:" + +#: deleteforum.php:42 deleteforum.php:55 moderate.php:65 +#: messages/delete.php:61 messages/delete.php:65 messages/message.php:76 +#: lib/Forums.php:243 lib/Messages.php:496 +msgid "Delete" +msgstr "Poista" + +#: messages/delete.php:58 +#, php-format +msgid "Delete '%s' and all replies?" +msgstr "Poista '%s' ja kaikki vastaukset?" + +#: deleteforum.php:39 lib/Messages.php:777 +msgid "Delete Forum" +msgstr "Poista foorumi" + +#: lib/Forums.php:243 +msgid "Delete forum" +msgstr "Poista foorumi" + +#: lib/Messages.php:496 +msgid "Delete message" +msgstr "Poista viesti" + +#: lib/Messages.php:811 +msgid "Delete the existing attachment?" +msgstr "Poista nykyinen liite?" + +#: config/prefs.php.dist:56 config/prefs.php.dist:86 config/prefs.php.dist:132 +msgid "Descending" +msgstr "Laskeva" + +#: forums.php:42 +msgid "Description" +msgstr "Kuvaus" + +#: config/prefs.php.dist:9 config/prefs.php.dist:16 config/prefs.php.dist:23 +#: config/prefs.php.dist:30 +msgid "Display Options" +msgstr "Näkymän asetukset" + +#: config/prefs.php.dist:103 +msgid "Display full message bodies in the thread list view?" +msgstr "Näytä koko viesti säielistanäkymässä." + +#: config/prefs.php.dist:143 +msgid "Display graphical emoticons?" +msgstr "Näytä graafiset hymiöt." + +#: deleteforum.php:42 deleteforum.php:70 +msgid "Do not delete" +msgstr "Ei saa poistaa" + +#: messages/message.php:73 lib/Forums.php:239 lib/Messages.php:492 +msgid "Edit" +msgstr "Muokkaa" + +#: editforum.php:30 lib/Messages.php:775 +msgid "Edit Forum" +msgstr "Muokkaa foorumia" + +#: lib/api.php:329 +msgid "Edit Message" +msgstr "Muokkaa viestiä" + +#: messages/edit.php:65 +#, php-format +msgid "Edit Message in \"%s\"" +msgstr "Muokkaa viestiä \"%s\":ssä" + +#: lib/Forums.php:239 +msgid "Edit forum" +msgstr "Muokkaa foorumia" + +#: lib/Messages.php:492 +msgid "Edit message" +msgstr "Muokkaa viestiä" + +#: editforum.php:43 +msgid "Enter a brief description of this forum" +msgstr "Anna lyhyt kuvaus tästä foorumista" + +#: forums.php:42 +msgid "Flat" +msgstr "Tasainen" + +#: forums.php:42 moderate.php:55 lib/Block/forums.php:70 +#: lib/Block/threads.php:48 config/prefs.php.dist:42 +msgid "Forum" +msgstr "Foorumi" + +#: editforum.php:57 +msgid "Forum Modified" +msgstr "Foorumia muokattu" + +#: editforum.php:57 +msgid "Forum created." +msgstr "Foorumi luotu" + +#: deleteforum.php:64 +msgid "Forum deleted." +msgstr "Foorumi poistettu." + +#: deleteforum.php:45 editforum.php:38 +msgid "Forum name" +msgstr "Foorumin nimi" + +#: deleteforum.php:71 +msgid "Forum not deleted." +msgstr "Foorumia ei poistettu." + +#: lib/Agora.php:234 lib/Block/forums.php:3 lib/Block/forums.php:27 +#: templates/forums/forums.html:7 +msgid "Forums" +msgstr "Foorumit" + +#: config/prefs.php.dist:10 +msgid "Forums View" +msgstr "Fooruminäkymä" + +#: lib/Messages.php:803 +msgid "From" +msgstr "Lähettäjä" + +#: lib/Messages.php:501 +msgid "Hot thread" +msgstr "Kuuma säie" + +#: editforum.php:46 +msgid "If selected users will be able to attach files to their messages." +msgstr "Voikovatko tietyt käyttäjät liittää tiedostoja viesteihinsä." + +#: messages/edit.php:107 +msgid "" +"Invalid parent message, you will be posting this message as a new thread." +msgstr "Juuriviesti on epäkelpo, tämä viesti aloittaa uuden säikeen." + +#: editforum.php:44 +msgid "Is this a moderated forum?" +msgstr "Onko tämä moderoitu foorumi" + +#: config/prefs.php.dist:44 +msgid "Last Message" +msgstr "Viimeinen viesti" + +#: forums.php:42 lib/Block/forums.php:70 +msgid "Last Post" +msgstr "Viimeksi lähetetty" + +#: threads.php:57 +msgid "Last post" +msgstr "Viimeksi lähetetty" + +#: messages/index.php:56 messages/message.php:79 +msgid "Lock thread" +msgstr "Lukitse säie" + +#: messages/lock.php:58 +#, php-format +msgid "Locking thread '%s'" +msgstr "Lukitse säie '%s'" + +#: lib/Messages.php:806 +msgid "Message" +msgstr "Viesti" + +#: config/prefs.php.dist:31 +msgid "Message View" +msgstr "Viestinäkymä" + +#: messages/delete.php:77 +msgid "Message deleted." +msgstr "Viesti poistettu." + +#: messages/index.php:30 messages/message.php:29 +msgid "Message does not exist." +msgstr "Viestiä ei ole olemassa." + +#: messages/delete.php:84 +msgid "Message not deleted." +msgstr "Viestiä ei poistettu." + +#: messages/edit.php:80 lib/api.php:357 +msgid "Message posted." +msgstr "Viesti lähetetty." + +#: config/prefs.php.dist:43 +msgid "Messages" +msgstr "Viestit" + +#: moderate.php:84 +msgid "Messages Awaiting Moderation" +msgstr "Viestejä odottamassa moderointia" + +#: lib/Agora.php:247 +msgid "Moderate" +msgstr "Moderoi" + +#: editforum.php:30 lib/Agora.php:246 +msgid "New Forum" +msgstr "Uusi foorumi" + +#: lib/Forums.php:234 +msgid "New Post" +msgstr "Uusi viesti" + +#: lib/Agora.php:241 +msgid "New Thread" +msgstr "Uusi säie" + +#: lib/Block/forums.php:61 +msgid "No available forums." +msgstr "Ei keskustelufoorumeja saatavilla." + +#: lib/Block/threads.php:112 +msgid "No available threads." +msgstr "Ei säikeitä saatavilla." + +#: forums.php:35 +msgid "No forums available." +msgstr "Keskustelufoorumeja ei ole saatavilla." + +#: config/prefs.php.dist:141 +msgid "No graphical emoticons" +msgstr "Ei graafisia hymiöitä" + +#: moderate.php:48 +msgid "No messages to moderate available." +msgstr "Ei viestejä odottamassa moderointia." + +#: templates/block/threads.html:26 +msgid "No threads" +msgstr "Ei säikeitä" + +#: threads.php:51 +msgid "No threads available." +msgstr "Ei säikeitä saatavilla." + +#: messages/lock.php:64 +msgid "No, do not allow replies" +msgstr "Ei, vastaukset eivät ole sallittuja" + +#: config/prefs.php.dist:65 +msgid "Number of forums to display on each page" +msgstr "Kuinka monta foorumia näytetään yhdellä sivulla" + +#: config/prefs.php.dist:111 +msgid "Number of threads to display on each page" +msgstr "Kuinka monta säiettä näytetään yhdellä sivulla" + +#: config/prefs.php.dist:95 +msgid "Number of views in 24hrs to trigger a 'hot-thread':" +msgstr "Lukijoiden määrä 24 tunnin aikana, joka muuttaa 'kuumaksi säikeeksi':" + +#: lib/Block/forums.php:34 +msgid "Only display this many forums (0 to display all forums)" +msgstr "Näytä näin monta foorumia (0 näyttää kaikki foorumit)" + +#: lib/Block/threads.php:59 +msgid "Only display this many threads (0 to display all threads)" +msgstr "Näytä näin monta säiettä (0 näyttää kaikki säikeet)" + +#: editforum.php:42 +msgid "Parent forum" +msgstr "Juurifoorumi" + +#: lib/Messages.php:789 +msgid "Post" +msgstr "Lähetä" + +#: lib/api.php:329 +msgid "Post a New Message" +msgstr "Lähetä uusi viesti" + +#: messages/edit.php:66 +#, php-format +msgid "Post a New Message to \"%s\"" +msgstr "Lähetä uusi viesti \"%s\"" + +#: messages/edit.php:64 +#, php-format +msgid "Post a Reply to \"%s\"" +msgstr "Lähetä vastaus \"%s\"" + +#: lib/Forums.php:234 lib/Messages.php:771 lib/Block/threads.php:82 +msgid "Post message" +msgstr "Lähetä viesti" + +#: forums.php:42 moderate.php:55 messages/index.php:47 messages/message.php:47 +#: lib/api.php:222 lib/Block/forums.php:70 lib/Block/thread.php:103 +#: lib/Block/threads.php:116 config/prefs.php.dist:45 config/prefs.php.dist:75 +#: config/prefs.php.dist:121 +msgid "Posted By" +msgstr "Lähettäjä" + +#: messages/message.php:54 lib/Messages.php:274 +#, php-format +msgid "Posted by %s on %s" +msgstr "Lähettäjä %s, %s" + +#: templates/messages/form.html:20 +msgid "Posted by on " +msgstr "Lähettäjä , " + +#: forums.php:42 threads.php:57 lib/Block/forums.php:70 +msgid "Posts" +msgstr "Lähettäjät" + +#: messages/message.php:68 lib/Messages.php:486 +msgid "Reply" +msgstr "Vastaa" + +#: lib/Messages.php:486 +msgid "Reply to message" +msgstr "Vastaa viestiin" + +#: lib/Messages.php:273 +#, php-format +msgid "Replying to \"%s\"" +msgstr "Vastataan \"%s\"" + +#: lib/Messages.php:789 +msgid "Save" +msgstr "Talleta" + +#: editforum.php:44 +msgid "" +"Set this if you want all messages to be checked by a moderator before they " +"are posted." +msgstr "" +"Aseta tämä, jos haluat että moderoija tarkastaa kaikki viestit ennen kuin ne " +"lähetetään." + +#: config/prefs.php.dist:11 +msgid "Set your options for the forums view." +msgstr "Voit muokata fooruminäkymän asetuksia." + +#: config/prefs.php.dist:32 +msgid "Set your options for the message view." +msgstr "Voit muokata viestinäkymän asetuksia." + +#: config/prefs.php.dist:25 +msgid "Set your options for the single thread view." +msgstr "Voit muokata säie kerrallaan näkymän asetuksia" + +#: config/prefs.php.dist:18 +msgid "Set your options for the threads view." +msgstr "Voit asettaa säienäkymän asetuksia." + +#: config/prefs.php.dist:142 +msgid "Show graphical emoticons" +msgstr "Näytä graafiset hymiöt" + +#: lib/Block/thread.php:3 lib/Block/thread.php:67 +msgid "Single Thread" +msgstr "Säie kerrallaan" + +#: config/prefs.php.dist:24 +msgid "Single Thread View" +msgstr "Säie kerrallaan näkymä" + +#: lib/Agora.php:184 +msgid "Sort Ascending" +msgstr "Järjestä nousevaan" + +#: lib/Agora.php:184 +msgid "Sort Descending" +msgstr "Järjestä laskevaan" + +#: lib/Agora.php:192 lib/Agora.php:198 +#, php-format +msgid "Sort by %s" +msgstr "Järjestä %s mukaan" + +#: threads.php:57 +msgid "Started" +msgstr "Aloitettu" + +#: deleteforum.php:51 +msgid "Subforums" +msgstr "alifoorumit" + +#: threads.php:57 moderate.php:55 messages/index.php:47 +#: messages/message.php:47 lib/Messages.php:805 lib/api.php:220 +#: lib/Block/thread.php:103 lib/Block/threads.php:116 config/prefs.php.dist:74 +#: config/prefs.php.dist:120 +msgid "Subject" +msgstr "Otsikko" + +#: lib/Agora.php:220 +msgid "The VFS backend needs to be configured to enable attachment uploads." +msgstr "" +"VFS-taustajärjestelmä pitää olla asennettu ennenkuin voi tuoda liitteitä." + +#: templates/moderate/moderate.html:9 +msgid "The following messages are waiting for approval" +msgstr "Seuraavat viestit odottavat hyväksyntääsi" + +#: deleteforum.php:44 +msgid "This will delete the forum, any subforums and all relative messages." +msgstr "Tämä poistaa foorumin, kaikki alifoorumit ja niihin liittyvät viestit" + +#: messages/index.php:47 messages/message.php:47 lib/Block/thread.php:46 +#: lib/Block/thread.php:70 lib/Block/thread.php:103 config/prefs.php.dist:73 +#: config/prefs.php.dist:119 +msgid "Thread" +msgstr "Säie" + +#: messages/index.php:71 lib/Block/thread.php:110 +#: templates/messages/index.html:9 +msgid "Thread List" +msgstr "Listä Säikeistä" + +#: templates/messages/message.html:28 +msgid "Thread Summary" +msgstr "Säikeen yhteenveto" + +#: messages/lock.php:76 +msgid "Thread locked." +msgstr "Säie lukittu." + +#: messages/lock.php:78 +msgid "Thread unlocked." +msgstr "Säie avattu." + +#: lib/Agora.php:239 lib/Block/threads.php:3 lib/Block/threads.php:73 +msgid "Threads" +msgstr "Säikeet" + +#: config/prefs.php.dist:17 +msgid "Threads View" +msgstr "Säienäkymä" + +#: lib/Block/threads.php:77 +#, php-format +msgid "Threads in \"%s\"" +msgstr "Säikeet \"%s\"" + +#: threads.php:79 +#, php-format +msgid "Threads in %s" +msgstr "Säikeet %s" + +#: templates/threads/threads.html:11 +msgid "Threads in " +msgstr "Säikeet " + +#: lib/Block/thread.php:92 +msgid "Unable to fetch selected thread." +msgstr "Ei voi hakea valittua säiettä." + +#: lib/Block/threads.php:102 +msgid "Unable to fetch threads for selected forum." +msgstr "Ei voi hakea säikeitä valitulle foorumille" + +#: messages/index.php:56 messages/message.php:79 +msgid "Unlock thread" +msgstr "Avaa säie" + +#: editforum.php:36 messages/lock.php:61 +msgid "Update" +msgstr "Päivitä" + +#: messages/lock.php:64 +msgid "Yes, allow replies" +msgstr "Kyllä, salli vastaukset" + +#: lib/Forums.php:39 lib/Messages.php:34 +msgid "You must configure a Horde Categories backend to use Agora." +msgstr "" +"Sinun pitää asentaa Horde Categories taustajärjestelmä käyttääksesi Agoraa." + +#: templates/javascript/moderate.js:15 +msgid "You must select at least one message first." +msgstr "Sinun pitää valita ainakin yksi viesti." + +#: lib/Messages.php:1009 +msgid "download" +msgstr "lataa" + +#: lib/Messages.php:1010 +#, php-format +msgid "size: %s" +msgstr "koko: %s" + +#: lib/Messages.php:1010 +#, php-format +msgid "type: %s" +msgstr "tyyppi: %s" diff --git a/agora/po/fr_FR.po b/agora/po/fr_FR.po new file mode 100644 index 000000000..e1f6db1d2 --- /dev/null +++ b/agora/po/fr_FR.po @@ -0,0 +1,281 @@ +# French Traduction for the Agora Module to the Horde Framework +# Copyright 2003-2009 The Horde Project +# This file is distributed under the same license as the hordecvs package. +# Florent AIDE , 2003 +# +msgid "" +msgstr "" +"Project-Id-Version: hordecvs 02\n" +"POT-Creation-Date: 2003-02-05 17:15+0100\n" +"PO-Revision-Date: 2003-02-05 17:15+0100\n" +"Last-Translator: Automatically generated\n" +"Language-Team: i18n@lists.horde.org\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: managemessage.php:96 +msgid "... as a reply to message" +msgstr "... en réponse au message" + +#: lib/Agora.php:154 lib/Menu.php:76 +msgid "Add Forum" +msgstr "Ajouter un Forum" + +#: lib/Menu.php:112 +msgid "Administration" +msgstr "Administration" + +#: templates/index/notconfigured.inc:4 +msgid "Agora is not properly configured" +msgstr "Agora n'est pas configuré correctement" + +#: lib/ManageMessage.php:46 forums.php:58 +msgid "Author" +msgstr "Auteur" + +#: lib/ManageForum.php:35 +msgid "Brief forum description" +msgstr "Déscription brève pour le Forum" + +#: lib/Agora.php:76 +msgid "Can not create a forum with an empty name." +msgstr "Impossible de créer un Forum sans nom" + +#: lib/Agora.php:85 +msgid "Can not create a message thread without message id." +msgstr "Ne peut pas créer un thread de message sans un identifiant de message" + +#: manageforum.php:83 +#, c-format +msgid "Could not create the forum. %s" +msgstr "Erreur lors de la création du Forum. %s" + +#: managemessage.php:79 +#, c-format +msgid "Could not submit the message. %s" +msgstr "N'a pas pu envoyer le message %s" + +#: manageforum.php:65 +msgid "Create a New Forum" +msgstr "Créer un nouveau Forum" + +#: lib/ManageForum.php:31 +#, c-format +msgid "Creating a subforum of %s." +msgstr "Création d'un sous Forum de %s." + +#: lib/ManageMessage.php:47 forums.php:58 +msgid "Date" +msgstr "Date" + +#: forums.php:52 +msgid "Forum" +msgstr "Forum" + +#: manageforum.php:87 +msgid "Forum Details" +msgstr "Détails du Forum" + +#: lib/Agora.php:147 lib/Menu.php:62 +msgid "Forum Home" +msgstr "Accueil du Forum" + +#: manageforum.php:85 +msgid "Forum created." +msgstr "Forum créé" + +#: lib/ManageForum.php:33 +msgid "Forum name" +msgstr "Nom du Forum" + +#: forums.php:51 +msgid "Forums" +msgstr "Forums" + +#: lib/api.php:54 +msgid "Forums Summary" +msgstr "Résumé pour le forum" + +#: lib/Menu.php:117 +msgid "Help" +msgstr "Aide" + +#: config/prefs.php.dist:6 +msgid "Language" +msgstr "Langue" + +#: forums.php:52 +msgid "Last Message" +msgstr "Dernier Message" + +#: lib/Menu.php:128 +msgid "Login" +msgstr "Identifiant" + +#: lib/Menu.php:125 +msgid "Logout" +msgstr "Déconnection" + +#: lib/Agora.php:222 +msgid "Main" +msgstr "Accueil" + +#: manageforum.php:38 +msgid "Manage Forums" +msgstr "Gèrer les Forums" + +#: managemessage.php:39 +msgid "Manage Messages" +msgstr "Gèrer les messages" + +#: lib/ManageMessage.php:28 lib/ManageMessage.php:48 managemessage.php:83 +msgid "Message" +msgstr "Message" + +#: lib/ManageMessage.php:27 +msgid "Message subject" +msgstr "Sujet du Message" + +#: managemessage.php:81 +msgid "Message submitted." +msgstr "Message envoyé" + +#: forums.php:52 +msgid "Messages" +msgstr "Messages" + +#: lib/Agora.php:150 +msgid "Moderated" +msgstr "Modéré" + +#: lib/ManageForum.php:34 +msgid "Moderated forum" +msgstr "Forum Modéré" + +#: lib/api.php:91 +msgid "New Campaign" +msgstr "Nouvelle Campagne" + +#: lib/api.php:91 lib/Block/summary.php:41 +msgid "New Forum" +msgstr "Nouveau Forum" + +#: lib/Agora.php:157 lib/Menu.php:84 +msgid "New Message" +msgstr "Nouveau Message" + +#: lib/Block/summary.php:57 +msgid "No forums available." +msgstr "Pas de Forum disponible" + +#: lib/Agora.php:152 lib/Menu.php:104 +msgid "Permissions" +msgstr "Permissions" + +#: managemessage.php:66 +msgid "Post a New Message" +msgstr "Envoyer un nouveau message" + +#: forums.php:52 +msgid "Posted By" +msgstr "Envoyé par" + +#: managemessage.php:99 +#, c-format +msgid "Re: %s" +msgstr "Re: %s" + +#: lib/Agora.php:160 lib/Menu.php:92 +msgid "Reply" +msgstr "Répondre" + +#: config/prefs.php.dist:16 +msgid "Select your preferred language:" +msgstr "Sélectionner votre langue préfèrée" + +#: lib/ManageForum.php:34 +msgid "" +"Set this if you want all messages to be checked by a moderator before they " +"are posted" +msgstr "" +"Cochez ceci pour faire modèrer tous les messages par un modérateur avant " +"qu'ils ne soient envoyés" + +#: config/prefs.php.dist:7 +msgid "Set your preferred display language." +msgstr "Choisissez votre langue d'affichage préfèrée" + +#: templates/index/notconfigured.inc:40 +msgid "Some of Agora's configuration files are missing:" +msgstr "Certains fichiers de configuration de Agora sont manquants" + +#: templates/index/notconfigured.inc:69 +msgid "" +"Some of the HTML templates in agora/config/templates/ are missing. These " +"files control the look and feel of Agora." +msgstr "" +"Certains des modèle HTML dans agora/config/templates sont manquants.Ces " +"fichiers gèrent l'apparence d'Agora" + +#: lib/ManageForum.php:36 +msgid "Store" +msgstr "Stoque" + +#: lib/ManageMessage.php:45 forums.php:58 +msgid "Subject" +msgstr "Sujet" + +#: lib/ManageMessage.php:29 +msgid "Submit" +msgstr "Soumettre" + +#: templates/index/notconfigured.inc:59 +msgid "" +"This file controls the default preferences for Agora, and also controls " +"which preferences users can alter." +msgstr "" +"Ce fichier contrôle les préférences de Agora, et aussi quellespréférences " +"les utilisateurs peuvent changer." + +#: templates/index/notconfigured.inc:52 +msgid "" +"This file controls the stylesheet that is used to set colors and fonts in " +"addition to or overriding Horde defaults." +msgstr "" +"Ce fichier contrôle les feuilles de style utilisées pour choisir les " +"couleurs et les polices de caractères" + +#: manageforum.php:58 managemessage.php:59 +msgid "This forum has been deleted." +msgstr "Ce Forum à été supprimé." + +#: manageforum.php:56 managemessage.php:57 +#, c-format +msgid "This forum has been deleted. %s" +msgstr "Ce Forum à été supprimé. %s" + +#: templates/index/notconfigured.inc:45 +msgid "" +"This is the main Agora configuration file. It contains options for all Agora " +"scripts." +msgstr "" +"Ceci est le fichier principal configuration de Agora. Il contient toutes les " +"options de configurationpour les divers scripts de Agora" + +#: lib/Menu.php:68 +msgid "Thread Home" +msgstr "Racine du fil de discussion" + +#: forums.php:57 +msgid "Threads" +msgstr "Fils de discussions" + +#: forums.php:46 +msgid "Welcome to this discussion!" +msgstr "Bienvenue dans cette discussion!" + +#: config/prefs.php.dist:5 +msgid "Your Information" +msgstr "Vos informations" diff --git a/agora/po/hu_HU.po b/agora/po/hu_HU.po new file mode 100644 index 000000000..8b043f6de --- /dev/null +++ b/agora/po/hu_HU.po @@ -0,0 +1,1016 @@ +# Hungarian translations for Agora. +# Copyright 2006-2009 The Horde Project +# This file is distributed under the same license as the Agora package. +# +# George Hron , 2007. +# Garami Gabor , 2008. +msgid "" +msgstr "" +"Project-Id-Version: hu_HU\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2008-01-02 12:27+0100\n" +"PO-Revision-Date: 2008-02-15 21:17+0100\n" +"Last-Translator: Garami Gabor \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: KBabel 1.11.4\n" + +#: moderate.php:36 +#, php-format +msgid "%d messages was approved." +msgstr "%d üzenet jóbváhagyva." + +#: moderate.php:42 +#, php-format +msgid "%d messages was deleted." +msgstr "%d üzenet törölve." + +#: scripts/phorum2agora.php:218 +msgid "-a, --agora_id[=aid] Agora forum id to save message to" +msgstr "" +"-a, --agora_id[=aid] Agora fórum id, ahova az üzeneteket mentsük" + +#: scripts/phorum2agora.php:221 +msgid "-c, --count[=messages] Number of messages to move at once" +msgstr "-c, --count[=messages] Az egyszerre mozgatandó üzenetek száma" + +#: scripts/phorum2agora.php:220 +msgid "" +"-f, --from[=offset] Offset from where to start to read messages" +msgstr "-f, --from[=offset] Ahonnan az üzenetek olvasását kezdjük" + +#: scripts/phorum2agora.php:216 +msgid "-h, --help Show this help" +msgstr "-h, --help Ez a szöveg" + +#: scripts/phorum2agora.php:217 +msgid "-p, --phorum_id[=pid] Phorum forum id to read message from" +msgstr "" +"-p, --phorum_id[=pid] Phorum fórum id, ahonnan az üzeneteket olvassuk" + +#: scripts/phorum2agora.php:219 +msgid "-t, --phorum_table[=table] Phorum messages tablename" +msgstr "-t, --phorum_table[=table] A Phorum üzenetek táblája" + +#: lib/api.php:816 +msgid "Add a comment" +msgstr "Megjegyzés küldése" + +#: lib/api.php:153 +msgid "Admin" +msgstr "Adminisztrálás" + +#: messages/merge.php:66 +msgid "After Message: " +msgstr "Ez után: " + +#: forums.php:73 +msgid "All Forums" +msgstr "Minden fórum" + +#: lib/Forms/Forum.php:40 +msgid "Allow attachments in this forum?" +msgstr "Engedélyezi a csatolásokat ebben a fórumban?" + +#: messages/lock.php:51 +msgid "Allow replies in this thread" +msgstr "Válaszok engedélyezése ebben a szálban" + +#: moderate.php:33 moderate.php:69 +msgid "Approve" +msgstr "Jóváhagy" + +#: lib/Comments.php:73 config/prefs.php.dist:103 config/prefs.php.dist:138 +#: config/prefs.php.dist:179 config/prefs.php.dist:267 +msgid "Ascending" +msgstr "Növekvõ" + +#: lib/Messages.php:1513 +msgid "Attachment" +msgstr "Csatolmány" + +#: lib/Comments.php:68 lib/Forms/Search.php:55 +msgid "Author" +msgstr "Szerzõ" + +#: config/prefs.php.dist:11 +msgid "Avatar" +msgstr "Avatár" + +#: config/prefs.php.dist:67 +#, php-format +msgid "" +"Avatars must be smaller than %s by %s pixels and less than %sKb in size." +msgstr "" +"Az avatár nem lehet nagyobb, mint %sx%s pixel, és kissebnek kell lennie, " +"mint %sKb." + +#: ban.php:58 lib/Messages.php:1458 +msgid "Ban" +msgstr "Tilt" + +#: templates/forums/ban.php:10 +msgid "Banned" +msgstr "Tiltva" + +#: moderate.php:62 +msgid "Body" +msgstr "Törzs" + +#: deleteforum.php:45 messages/abuse.php:48 messages/abuse.php:56 +#: messages/merge.php:47 messages/move.php:47 messages/delete.php:49 +#: messages/split.php:47 lib/api.php:737 +msgid "Cancel" +msgstr "Mégsem" + +#: lib/Messages.php:1871 +msgid "Cannot create a forum with an empty name." +msgstr "Névtelen fórum nem hozható létre" + +#: templates/prefs/avatarselect.inc:8 +msgid "Choose from a gallery of avatars: " +msgstr "Avatás kiválasztása galériából" + +#: lib/Comments.php:81 lib/api.php:445 +msgid "Comments" +msgstr "Megjegyzések" + +#: rss/threads.php:54 +#, php-format +msgid "Comments on %s" +msgstr "Megjegyzések itt: %s" + +#: config/prefs.php.dist:51 +msgid "Comments view" +msgstr "Megjegyzések" + +#: editforum.php:44 +#, php-format +msgid "Could not create the forum. %s" +msgstr "Nem lehet a fórumot létrehozni. %s" + +#: deleteforum.php:66 +#, php-format +msgid "Could not delete the forum. %s" +msgstr "Nem lehet a fórumot törölni. %s" + +#: messages/delete.php:63 lib/api.php:720 lib/api.php:731 lib/api.php:745 +#, php-format +msgid "Could not delete the message. %s" +msgstr "Nem lehet az üzenetet törölni. %s" + +#: threads.php:32 +#, php-format +msgid "Could not list threads. %s" +msgstr "Nem lehet listázni a szálat. %s" + +#: messages/lock.php:60 +#, php-format +msgid "Could not lock the thread. %s" +msgstr "Nem lehez zárolni a szálat. %s" + +#: messages/abuse.php:31 messages/merge.php:31 messages/move.php:31 +#: messages/index.php:34 messages/lock.php:33 messages/delete.php:33 +#: messages/split.php:31 +#, php-format +msgid "Could not open the message. %s" +msgstr "Nem lehet az üzenetet megnyitni:%s" + +#: messages/edit.php:31 messages/edit.php:83 lib/api.php:585 lib/api.php:638 +msgid "Could not post the message: " +msgstr "Nem lehet az üzenetet elküldeni:" + +#: scripts/phorum2agora.php:65 +msgid "Couldn't read command-line options." +msgstr "Nem lehet olvasni a paracssori opciókat." + +#: lib/Forms/Forum.php:26 +msgid "Create" +msgstr "Létrehoz" + +#: lib/Messages.php:1509 +msgid "Current attachment" +msgstr "Aktív csatolmány" + +#: forums.php:56 moderate.php:62 messages/index.php:146 lib/Comments.php:67 +#: lib/Comments.php:87 lib/api.php:435 lib/Block/threads.php:125 +#: lib/Block/forums.php:87 lib/Block/thread.php:84 config/prefs.php.dist:94 +#: config/prefs.php.dist:128 config/prefs.php.dist:170 +#: config/prefs.php.dist:258 +msgid "Date" +msgstr "Dátum" + +#: config/prefs.php.dist:259 +msgid "Default comments view sort:" +msgstr "Alapértelmezett fórumrendezési irány:" + +#: config/prefs.php.dist:95 +msgid "Default forums view sort:" +msgstr "Alapértelmezett fórumrendezési irány:" + +#: config/prefs.php.dist:105 config/prefs.php.dist:140 +#: config/prefs.php.dist:181 config/prefs.php.dist:269 +msgid "Default sorting direction:" +msgstr "Alapértelmezett rendezési irány:" + +#: config/prefs.php.dist:171 +msgid "Default thread view sort:" +msgstr "Alapértelmezett szálrendezési irány:" + +#: config/prefs.php.dist:130 +msgid "Default threads view sort:" +msgstr "Alapértelmezett szálrendezési:" + +#: deleteforum.php:45 deleteforum.php:63 ban.php:55 moderators.php:66 +#: moderate.php:39 moderate.php:69 messages/index.php:122 +#: messages/delete.php:49 messages/delete.php:54 lib/Messages.php:927 +#: lib/Messages.php:1764 lib/api.php:737 lib/api.php:742 +msgid "Delete" +msgstr "Törlés" + +#: messages/delete.php:48 lib/api.php:736 +#, php-format +msgid "Delete \"%s\" and all replies?" +msgstr "Törli \"%s\"-t és minden rá adott választ?" + +#: deleteforum.php:43 lib/Messages.php:1456 +msgid "Delete Forum" +msgstr "Fórum Törlése" + +#: lib/Messages.php:1764 +msgid "Delete forum" +msgstr "Fórum törlése" + +#: lib/Messages.php:927 +msgid "Delete message" +msgstr "Üzenet törlése" + +#: lib/Messages.php:1508 +msgid "Delete the existing attachment?" +msgstr "Törli a csatolmányokat is?" + +#: lib/Comments.php:74 config/prefs.php.dist:104 config/prefs.php.dist:139 +#: config/prefs.php.dist:180 config/prefs.php.dist:268 +msgid "Descending" +msgstr "Csökkenõ" + +#: forums.php:56 +msgid "Description" +msgstr "Leírás" + +#: config/prefs.php.dist:21 config/prefs.php.dist:28 config/prefs.php.dist:35 +#: config/prefs.php.dist:43 config/prefs.php.dist:50 +msgid "Display Options" +msgstr "Megjelenítés beállítása" + +#: config/prefs.php.dist:248 +msgid "Display full message bodies in the comments view?" +msgstr "Az üzenet törzsének teljes megjelenítése szál nézetben?" + +#: config/prefs.php.dist:192 +msgid "Display full message bodies in the thread list view?" +msgstr "Az üzenet törzsének teljes megjelenítése szál nézetben?" + +#: config/prefs.php.dist:211 +msgid "Display graphical emoticons?" +msgstr "Smiley-k megjelenítése?" + +#: messages/index.php:119 lib/Messages.php:923 lib/Messages.php:1758 +msgid "Edit" +msgstr "Szerkesztés" + +#: editforum.php:25 lib/Messages.php:1453 +msgid "Edit Forum" +msgstr "Fórum szerkesztése" + +#: lib/api.php:613 +msgid "Edit Message" +msgstr "Üzenet szerkesztése" + +#: messages/edit.php:70 +#, php-format +msgid "Edit Message in \"%s\"" +msgstr "Üzenet szerkesztése ebben: \"%s\"" + +#: lib/api.php:814 +msgid "Edit a comment" +msgstr "Megjegyzés szerkesztése" + +#: lib/Messages.php:1758 +msgid "Edit forum" +msgstr "Fórum szerkesztése" + +#: lib/Messages.php:923 +msgid "Edit message" +msgstr "Üzenet szerkesztése" + +#: lib/Forms/Forum.php:37 +msgid "Enter a brief description of this forum" +msgstr "Rövid leírás ehhez a fórumhoz" + +#: messages/index.php:168 lib/Comments.php:60 config/prefs.php.dist:246 +msgid "Flat" +msgstr "Lapos" + +#: moderators.php:78 moderators.php:81 forums.php:56 moderate.php:62 +#: templates/moderators/moderators.php:8 messages/move.php:52 +#: lib/Block/threads.php:46 lib/Block/forums.php:87 config/prefs.php.dist:90 +msgid "Forum" +msgstr "Fórum" + +#: lib/Messages.php:1676 lib/api.php:714 +#, php-format +msgid "Forum %s does not exist." +msgstr "A(z) %s fórum nem létezik" + +#: editforum.php:47 +msgid "Forum Modified" +msgstr "Fórum módosult" + +#: editforum.php:47 +msgid "Forum created." +msgstr "Fórum létrejött." + +#: deleteforum.php:68 +msgid "Forum deleted." +msgstr "Fórum törölve." + +#: deleteforum.php:49 templates/moderators/moderators.php:9 +#: lib/Forms/Forum.php:29 +msgid "Forum name" +msgstr "Fórum neve" + +#: deleteforum.php:71 +msgid "Forum not deleted." +msgstr "Fórum megtartva." + +#: templates/common-header.inc:27 templates/forums/forums.php:9 +#: lib/api.php:154 lib/Block/forums.php:3 lib/Block/forums.php:28 +msgid "Forums" +msgstr "Fórumok" + +#: config/prefs.php.dist:22 +msgid "Forums View" +msgstr "Fórum nézet" + +#: rss/index.php:28 +#, php-format +msgid "Forums in %s" +msgstr "Fórum nézet itt: %s" + +#: lib/Messages.php:1490 +msgid "From" +msgstr "Küldte: " + +#: templates/threads/threads.php:44 +msgid "Goto page:" +msgstr "Ugrás ide:" + +#: messages/index.php:158 messages/index.php:167 +msgid "Hide bodies" +msgstr "Szöveg elrejtése" + +#: lib/Messages.php:841 +msgid "Hot thread" +msgstr "Friss szál" + +#: lib/Forms/Forum.php:40 +msgid "If selected users will be able to attach files to their messages." +msgstr "A kiválasztott felhasználók csatolhatnak fájlokat az üzeneteikhez." + +#: messages/edit.php:112 +msgid "" +"Invalid parent message, you will be posting this message as a new thread." +msgstr "Érvénytelen eredeti üzenet. Új szálon indul az üzeneted." + +#: lib/Forms/Forum.php:38 +msgid "Is this a moderated forum?" +msgstr "Moderált fórum?" + +#: lib/Forms/Search.php:43 +msgid "Keywords" +msgstr "Kulcsszavak" + +#: config/prefs.php.dist:92 +msgid "Last Message" +msgstr "Legutolsó üzenet" + +#: forums.php:56 lib/Block/forums.php:87 +msgid "Last Post" +msgstr "Legutolsó Bejegyzés" + +#: threads.php:61 config/prefs.php.dist:129 +msgid "Last post" +msgstr "Legutolsó bejegyzés" + +#: lib/Messages.php:931 +msgid "Lock" +msgstr "Zárolás" + +#: messages/index.php:125 +msgid "Lock thread" +msgstr "Szál zárolása" + +#: messages/lock.php:48 +#, php-format +msgid "Locking thread \"%s\"" +msgstr "\"%s\" szál zárolása" + +#: lib/Agora.php:347 +msgid "Malformed avatar." +msgstr "Hibás avatár" + +#: lib/Agora.php:370 +msgid "Malformed database entry." +msgstr "Hibás adatbázis-bejegyzés" + +#: scripts/phorum2agora.php:214 +msgid "" +"Mandatory arguments to long options are mandatory for short options too." +msgstr "A kötelezõ hosszú opciók rövid alakja is kötelezõ." + +#: messages/merge.php:47 messages/merge.php:73 lib/Messages.php:942 +msgid "Merge" +msgstr "Összefésül" + +#: messages/merge.php:46 +#, php-format +msgid "Merge \"%s\" with another thread" +msgstr "A(z) \"%s\" szál összefûzése másik szállal" + +#: lib/Messages.php:1503 +msgid "Message" +msgstr "Üzenet" + +#: messages/abuse.php:79 +#, php-format +msgid "Message %s reported as abuse" +msgstr "A(z) %s üzenet megjelölve helytelennek." + +#: lib/Messages.php:503 +#, php-format +msgid "Message ID \"%d\" not found" +msgstr "\"%d\" azonosítójú üzenet nincs" + +#: config/prefs.php.dist:44 +msgid "Message View" +msgstr "Üzenet nézet" + +#: messages/delete.php:65 lib/api.php:747 +msgid "Message deleted." +msgstr "Üzenet törölve." + +#: messages/delete.php:55 lib/api.php:752 +msgid "Message not deleted." +msgstr "Üzenet nem törlõdött" + +#: messages/edit.php:85 lib/api.php:640 +msgid "Message posted." +msgstr "Üzenet elküldve" + +#: templates/messages/index.php:1 config/prefs.php.dist:91 +msgid "Messages" +msgstr "Üzenetek" + +#: moderate.php:82 templates/moderate/moderate.php:11 +msgid "Messages Awaiting Moderation" +msgstr "Üzenetek várnak moderálásra" + +#: lib/Messages.php:1783 +msgid "Moderate" +msgstr "Moderálás" + +#: moderators.php:76 templates/messages/message.php:21 +#: templates/messages/flat.php:26 templates/messages/flat_thread.php:10 +#: lib/Tree/flat.php:117 +msgid "Moderator" +msgstr "Moderátor" + +#: moderators.php:70 templates/moderators/moderators.php:4 +#: templates/moderators/moderators.php:10 templates/forums/forums.php:39 +msgid "Moderators" +msgstr "Moderátorok" + +#: messages/move.php:47 messages/move.php:59 lib/Messages.php:938 +msgid "Move" +msgstr "Mozgat" + +#: messages/move.php:46 +#, php-format +msgid "Move \"%s\" to another forum" +msgstr "A(z) \"%s\" mozgatása másik fórumba" + +#: config/prefs.php.dist:10 +msgid "My Information" +msgstr "Adataim" + +#: editforum.php:25 +msgid "New Forum" +msgstr "Új fórum" + +#: lib/Messages.php:1753 +msgid "New Post" +msgstr "Új bejegyzés" + +#: lib/Agora.php:253 +msgid "New Thread" +msgstr "Új szál" + +#: lib/Messages.php:842 +msgid "New posts" +msgstr "Új bejegyzések" + +#: config/prefs.php.dist:189 +msgid "No" +msgstr "Nem" + +#: lib/Block/threads.php:121 +msgid "No available threads." +msgstr "Nincs elérhetõ szál" + +#: lib/Block/threads.php:100 +msgid "No forum selected" +msgstr "Nincs fórum kiválasztva." + +#: templates/forums/forums.php:60 +msgid "No forums have been created." +msgstr "Nem készült el a fórum." + +#: config/prefs.php.dist:209 +msgid "No graphical emoticons" +msgstr "Nincsenek smiley-k" + +#: moderate.php:54 +msgid "No messages are waiting for moderation." +msgstr "Nem vár üzenet moderálásra" + +#: messages/abuse.php:39 +msgid "No moderators are associated with this forum." +msgstr "Nincs moderátor rendelve ehhez a fórumhoz." + +#: templates/moderators/moderators.php:27 +msgid "No moderators have been created." +msgstr "Nincsenek moderátorok." + +#: templates/block/threads.php:32 +msgid "No threads" +msgstr "Nincsenek szálak." + +#: messages/lock.php:51 +msgid "No, do not allow replies" +msgstr "Nem, nem engedélyezem a válaszokat" + +#: config/prefs.php.dist:114 +msgid "Number of forums to display on each page" +msgstr "Az egy lapon megjelenített fórumok száma:" + +#: config/prefs.php.dist:201 +msgid "Number of message to display on each page" +msgstr "Az egy lapon megjelenített üzenetek száma:" + +#: config/prefs.php.dist:157 config/prefs.php.dist:278 +msgid "Number of messages to display on each page" +msgstr "Az egy lapon megjelenített üzenetek száma:" + +#: config/prefs.php.dist:148 +msgid "Number of views in 24hrs to trigger a 'hot-thread':" +msgstr "24 órán belöli ránézések száma a 'forró szál' bekapcsolásához:" + +#: lib/Block/forums.php:35 +msgid "Only display this many forums (0 to display all forums)" +msgstr "Csak bizonyos fórumokon jelenjen meg (0 esetén minden fórumon látható)" + +#: lib/Block/threads.php:53 +msgid "Only display this many threads (0 to display all threads)" +msgstr "Csak bizonyos szálakban jelenjen meg (0 esetén minden szálban látható)" + +#: templates/forums/forums.php:34 +msgid "Options" +msgstr "Beállítások" + +#: lib/Messages.php:889 +#, php-format +msgid "Page %d" +msgstr "%d. oldal" + +#: lib/Forms/Forum.php:32 +msgid "Parent forum" +msgstr "Elõzõ fórum" + +#: lib/Messages.php:1472 +msgid "Post" +msgstr "Küld" + +#: lib/api.php:613 +msgid "Post a New Message" +msgstr "Új üzenet küldése" + +#: messages/edit.php:71 +#, php-format +msgid "Post a New Message to \"%s\"" +msgstr "Új üzenet %s részére" + +#: messages/edit.php:69 messages/index.php:213 +#, php-format +msgid "Post a Reply to \"%s\"" +msgstr "Válasz \"%s\"-nek" + +#: lib/Messages.php:1448 lib/Messages.php:1753 +msgid "Post message" +msgstr "Üzenet küldése" + +#: forums.php:56 moderate.php:62 templates/messages/flat.php:22 +#: templates/messages/flat_thread.php:7 messages/index.php:146 +#: lib/Comments.php:85 lib/api.php:433 lib/Block/threads.php:125 +#: lib/Block/forums.php:87 lib/Block/thread.php:84 lib/Tree/flat.php:112 +#: config/prefs.php.dist:93 config/prefs.php.dist:126 +#: config/prefs.php.dist:169 config/prefs.php.dist:257 +msgid "Posted by" +msgstr "Beküldte:" + +#: messages/index.php:87 lib/Messages.php:548 +#, php-format +msgid "Posted by %s on %s" +msgstr "Beküldte: %s, ekkor: %s" + +#: threads.php:61 forums.php:56 lib/Block/forums.php:87 +#: config/prefs.php.dist:127 +msgid "Posts" +msgstr "Bejegyzések" + +#: lib/Messages.php:1495 +msgid "Quote" +msgstr "Idéz" + +#: messages/index.php:113 lib/Messages.php:911 +msgid "Reply" +msgstr "Válasz" + +#: lib/Messages.php:911 +msgid "Reply to message" +msgstr "Válasz az üzenetre" + +#: messages/abuse.php:47 messages/abuse.php:48 lib/Messages.php:917 +msgid "Report as abuse" +msgstr "Helytelennek jelöl" + +#: lib/Forms/Search.php:44 +msgid "Require all keywords?" +msgstr "Mindegyik kulcsszó kell?" + +#: lib/Messages.php:1472 +msgid "Save" +msgstr "Mentés" + +#: lib/Forms/Search.php:57 +msgid "Search" +msgstr "Keresés" + +#: search.php:70 lib/Forms/Search.php:33 +msgid "Search Forums" +msgstr "Fórum keresése" + +#: templates/search/search.php:5 +msgid "Search Results" +msgstr "Keresés eredménye" + +#: lib/Forms/Search.php:52 +msgid "Search in message contents?" +msgstr "Keressen az üzenet tartalmában?" + +#: lib/Forms/Search.php:48 +msgid "Search in subjects?" +msgstr "Keresés a tárgyban is?" + +#: lib/Forms/Search.php:37 +msgid "Search in these forums" +msgstr "Keresés ezekben a fórumokban" + +#: config/prefs.php.dist:12 +msgid "Set the avatar image that is shown with your posts." +msgstr "Válasszon egy avatárt ami a bejegyzései mellett fog megjelenni." + +#: lib/Forms/Forum.php:38 +msgid "" +"Set this if you want all messages to be checked by a moderator before they " +"are posted." +msgstr "" +"Akkor állítsa ezt be, ha szeretné, hogy minden üzenet moderálva legyen " +"beküldés elõtt." + +#: config/prefs.php.dist:23 +msgid "Set your options for the forums view." +msgstr "Beállítások fórum nézethez" + +#: config/prefs.php.dist:45 +msgid "Set your options for the message view." +msgstr "Beállítások üzenet nézethez" + +#: config/prefs.php.dist:37 config/prefs.php.dist:52 +msgid "Set your options for the single thread view." +msgstr "Az egyszálas nézet beállítása." + +#: config/prefs.php.dist:30 +msgid "Set your options for the threads view." +msgstr "A szálak nézetének beállítása." + +#: config/prefs.php.dist:210 +msgid "Show graphical emoticons" +msgstr "Smiley-k megjelenítése" + +#: lib/Block/thread.php:3 lib/Block/thread.php:53 +msgid "Single Thread" +msgstr "Szimpla szál" + +#: config/prefs.php.dist:36 +msgid "Single Thread View" +msgstr "Szimpla szál nézet" + +#: lib/Agora.php:192 +msgid "Sort Ascending" +msgstr "Növekvõ sorrend" + +#: lib/Agora.php:192 +msgid "Sort Descending" +msgstr "Csökkenõ sorrend" + +#: lib/Comments.php:65 +msgid "Sort by" +msgstr "Rendezés eszerint:" + +#: lib/Agora.php:200 lib/Agora.php:207 +#, php-format +msgid "Sort by %s" +msgstr "Rendezés %s szerint" + +#: lib/Comments.php:71 +msgid "Sort direction" +msgstr "Alapértelmezett rendezési irány:" + +#: lib/Messages.php:1517 lib/Forms/Message.php:24 +msgid "Spam protection" +msgstr "Spam védelem" + +#: messages/split.php:47 messages/split.php:55 lib/Messages.php:947 +msgid "Split" +msgstr "Kettévág" + +#: messages/split.php:46 +#, php-format +msgid "Split \"%s\"" +msgstr "Vágd el: \"%s\"" + +#: threads.php:61 +msgid "Started" +msgstr "Elindítva" + +#: deleteforum.php:57 +msgid "Subforums" +msgstr "Alfórumok" + +#: threads.php:61 moderate.php:62 messages/index.php:146 lib/Comments.php:69 +#: lib/Comments.php:83 lib/Messages.php:1497 lib/Messages.php:1500 +#: lib/api.php:431 lib/Block/threads.php:125 lib/Block/thread.php:84 +#: config/prefs.php.dist:125 config/prefs.php.dist:168 +#: config/prefs.php.dist:256 +msgid "Subject" +msgstr "Tárgy" + +#: lib/Agora.php:229 +msgid "The VFS backend needs to be configured to enable attachment uploads." +msgstr "A VFS backendet konfigurálni kell a csatolások egedélyezéséhez." + +#: config/prefs.php.dist:64 +msgid "The location of your avatar image." +msgstr "Az ön avatárjának a helye" + +#: lib/Block/forums.php:78 +msgid "There are no forums." +msgstr "Nincsenek fórumok" + +#: templates/threads/threads.php:69 +msgid "There are no threads in this forum." +msgstr "Nincsenek szálak ebben a fórumban" + +#: lib/Messages.php:162 +msgid "This thread has been locked." +msgstr "Szál zárolva" + +#: deleteforum.php:48 +msgid "This will delete the forum, any subforums and all relative messages." +msgstr "" +"Ez törli a fórumot annak összes alfórumával és minden üzenetével együtt." + +#: messages/index.php:146 messages/index.php:159 lib/Comments.php:61 +#: lib/Block/thread.php:33 lib/Block/thread.php:84 config/prefs.php.dist:124 +#: config/prefs.php.dist:167 config/prefs.php.dist:247 +msgid "Thread" +msgstr "Szál" + +#: messages/merge.php:78 +#, php-format +msgid "Thread %s merged with thread %s after message %s." +msgstr "AZz) %s szál össze lett fésülve a(z) %s szállal a(z) %s. üzenet után" + +#: messages/move.php:64 +#, php-format +msgid "Thread %s moved to from forum %s to %s." +msgstr "A(z) %s szál átkerült a(z) %s fórumból a(z) %s fórumba." + +#: templates/messages/index.php:10 lib/Block/thread.php:91 +msgid "Thread List" +msgstr "Szálak listája" + +#: templates/messages/message.php:34 +msgid "Thread Summary" +msgstr "Szál összegzése" + +#: messages/delete.php:70 +msgid "Thread deleted." +msgstr "Szál zárolva." + +#: messages/index.php:205 messages/lock.php:63 +msgid "Thread locked." +msgstr "Szál zárolva." + +#: messages/split.php:60 +#, php-format +msgid "Thread splitted by message %s." +msgstr "A szál elvágva a(z) %s üzenet mentén." + +#: messages/lock.php:65 +msgid "Thread unlocked." +msgstr "Szál feloldva" + +#: forums.php:56 templates/threads/threads.php:1 lib/Comments.php:77 +#: lib/Block/threads.php:3 lib/Block/threads.php:72 lib/Block/threads.php:78 +msgid "Threads" +msgstr "Szálak" + +#: config/prefs.php.dist:29 +msgid "Threads View" +msgstr "Szál nézet" + +#: lib/Block/threads.php:82 +#, php-format +msgid "Threads in \"%s\"" +msgstr "Szálak \"%s\"-ban" + +#: threads.php:68 threads.php:81 rss/threads.php:48 +#, php-format +msgid "Threads in %s" +msgstr "Szálak %s-ban" + +#: lib/Block/thread.php:72 +msgid "Unable to fetch selected thread." +msgstr "Nem lehet a kért szálat megnyitni" + +#: lib/Block/threads.php:106 +msgid "Unable to fetch threads for selected forum." +msgstr "Nem lehet a kért fórumot megnyitni" + +#: lib/Messages.php:931 +msgid "Unlock" +msgstr "Szál feloldása" + +#: messages/index.php:125 +msgid "Unlock thread" +msgstr "Szál feloldása" + +#: messages/lock.php:49 lib/Forms/Forum.php:26 +msgid "Update" +msgstr "Frissít" + +#: config/prefs.php.dist:79 +msgid "Upload your own avatar image." +msgstr "Saját avatár feltöltése" + +#: scripts/phorum2agora.php:212 +#, php-format +msgid "Usage: %s [OPTIONS]..." +msgstr "Használat: %s [OPCIÓK]..." + +#: ban.php:65 +msgid "User" +msgstr "Felhasználó" + +#: lib/Comments.php:59 +msgid "View" +msgstr "Nézetek" + +#: messages/index.php:184 +msgid "View bodies" +msgstr "Szöveg megjelenítése" + +#: threads.php:61 +msgid "Views" +msgstr "Nézetek" + +#: messages/merge.php:57 +msgid "With Thread: " +msgstr "Ezzel a szállal: " + +#: config/prefs.php.dist:190 +msgid "Yes" +msgstr "Igen" + +#: messages/lock.php:51 +msgid "Yes, allow replies" +msgstr "Igen, engedélyezem a válaszokat" + +#: config/prefs.php.dist:191 +msgid "Yes, and don't thread them" +msgstr "Igen, de ne kerüljenek szálba." + +#: lib/Messages.php:1661 +#, php-format +msgid "You don't have permission to access messages in forum %s." +msgstr "Nincs jogod az üzenetek eléréséhez a(z) %s fórumban." + +#: messages/merge.php:38 messages/move.php:38 messages/lock.php:40 +#: messages/delete.php:40 messages/split.php:38 lib/Messages.php:569 +#: lib/Messages.php:738 lib/api.php:725 +#, php-format +msgid "You don't have permission to delete messages in forum %s." +msgstr "Nincs jogod az üzenetek törléséhez a(z) %s fórumban." + +#: messages/edit.php:39 messages/index.php:199 lib/Messages.php:167 +#: lib/api.php:591 +#, php-format +msgid "You don't have permission to post messages in forum %s." +msgstr "Nincs jogod az üzenetek küldéséhez a(z) %s fórumba." + +#: lib/Messages.php:813 +#, php-format +msgid "You don't have permission to read messages in forum %s." +msgstr "Nincs jogod az üzenetek olvasásához a(z) %s fórumban." + +#: ban.php:30 +#, php-format +msgid "You don't have permissions to ban users from forum %s." +msgstr "Nincs jogod a felhasználók tiltásához a(z) %s fórumban." + +#: editforum.php:35 +#, php-format +msgid "You don't have permissions to create a new forum in %s" +msgstr "Nincs jogod fórum kreálásához itt: %s." + +#: deleteforum.php:27 +#, php-format +msgid "You don't have permissions to delete forums in %s" +msgstr "Nincs jogod fórum törléséhez itt: %s." + +#: editforum.php:31 +#, php-format +msgid "You don't have permissions to edit forum %s" +msgstr "Nincs jogod a(z) %s fórum szerkesztéséhez." + +#: lib/Agora.php:246 +msgid "_Forums" +msgstr "_Fórumok" + +#: lib/Agora.php:263 +msgid "_Moderate" +msgstr "_Moderálás" + +#: lib/Agora.php:267 +msgid "_Moderators" +msgstr "_Moderátorok" + +#: lib/Agora.php:258 +msgid "_New Forum" +msgstr "Ú_J fórum" + +#: lib/Agora.php:271 +msgid "_Search" +msgstr "_Keresés" + +#: lib/Agora.php:251 +msgid "_Threads" +msgstr "_Szálak" + +#: templates/forums/forums.php:51 templates/threads/threads.php:60 +msgid "by" +msgstr "by" + +#: lib/Messages.php:1610 +msgid "download" +msgstr "letölt" + +#: templates/messages/flat.php:23 templates/messages/flat_thread.php:8 +#: lib/Tree/flat.php:113 +msgid "on: " +msgstr "itt: " + +#: lib/Messages.php:1611 +#, php-format +msgid "size: %s" +msgstr "méret: %s" + +#: lib/Messages.php:1611 +#, php-format +msgid "type: %s" +msgstr "típus: %s" diff --git a/agora/po/it_IT.po b/agora/po/it_IT.po new file mode 100644 index 000000000..f5c44aa91 --- /dev/null +++ b/agora/po/it_IT.po @@ -0,0 +1,617 @@ +# Italian translations for op package. +# Copyright 2003-2009 The Horde Project +# This file is distributed under the same license as the op package. +# Automatically generated, 2003. +# +msgid "" +msgstr "" +"Project-Id-Version: agora cvs-0.1\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2004-10-18 00:24+0200\n" +"PO-Revision-Date: 2004-09-07 09:59+0100\n" +"Last-Translator: jacopo \n" +"Language-Team: Horde i18n \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/Forums.php:170 +msgid "-- Top Level --" +msgstr "-- Primo Livello --" + +#: lib/api.php:73 +msgid "Admin" +msgstr "Admin" + +#: forums.php:58 +msgid "All Forums" +msgstr "Tutti i Forum" + +#: editforum.php:46 +msgid "Allow attachments in this forum?" +msgstr "Permiti gli allegati in questo forum?" + +#: messages/lock.php:64 +msgid "Allow replies in this thread" +msgstr "Permetti le risposte in questa discussione" + +#: moderate.php:64 +msgid "Approve" +msgstr "Approva" + +#: config/prefs.php.dist:55 config/prefs.php.dist:85 config/prefs.php.dist:131 +msgid "Ascending" +msgstr "Crescente" + +#: lib/Messages.php:775 +msgid "Attachment" +msgstr "Allegato" + +#: moderate.php:55 +msgid "Body" +msgstr "Corpo" + +#: lib/Forums.php:74 +msgid "Can not create a forum with an empty name." +msgstr "Non puoi creare un forum senza nome" + +#: lib/Messages.php:89 +msgid "Can not create a message without a message thread." +msgstr "Non era possibile creare un messaggio senza una discussione." + +#: messages/delete.php:61 messages/delete.php:83 +msgid "Cancel" +msgstr "Cancella" + +#: lib/api.php:207 +msgid "Comments" +msgstr "Commenti" + +#: editforum.php:55 +#, php-format +msgid "Could not create the forum. %s" +msgstr "Non puoi creare il forum. %s" + +#: deleteforum.php:62 +#, php-format +msgid "Could not delete the forum. %s" +msgstr "Non era possibile eliminare il forum. %s" + +#: messages/delete.php:45 messages/delete.php:75 +#, php-format +msgid "Could not delete the message. %s" +msgstr "Non era possibile eliminare il messaggio. %s" + +#: threads.php:30 +#, php-format +msgid "Could not list threads. %s" +msgstr "Non era possibile elencare le discussioni. %s" + +#: messages/lock.php:45 messages/lock.php:73 +#, php-format +msgid "Could not lock the thread. %s" +msgstr "Non era possibile chiudere la discussione. %s" + +#: messages/index.php:23 messages/message.php:25 +#, php-format +msgid "Could not open the message. %s" +msgstr "Non era possibile aprire il messaggio. %s" + +#: messages/edit.php:78 lib/api.php:327 +#, php-format +msgid "Could not post the message. %s" +msgstr "Non era possibile inviare il messaggio. %s" + +#: messages/edit.php:30 lib/api.php:295 +#, php-format +msgid "Could not post the message: %s" +msgstr "Non era possibile inviare il messaggio: %s" + +#: editforum.php:36 +msgid "Create" +msgstr "Crea" + +#: lib/Messages.php:771 +msgid "Current attachment" +msgstr "Allegato attuale" + +#: forums.php:42 threads.php:58 moderate.php:55 messages/index.php:44 +#: messages/message.php:47 lib/api.php:196 lib/Block/forums.php:71 +#: lib/Block/thread.php:101 lib/Block/threads.php:118 config/prefs.php.dist:46 +#: config/prefs.php.dist:76 config/prefs.php.dist:122 +msgid "Date" +msgstr "Data" + +#: config/prefs.php.dist:47 +msgid "Default forums view sort:" +msgstr "Criteri di ordinamento di default per i forum:" + +#: config/prefs.php.dist:57 config/prefs.php.dist:87 config/prefs.php.dist:133 +msgid "Default sorting direction:" +msgstr "Ordine di default:" + +#: config/prefs.php.dist:77 config/prefs.php.dist:123 +msgid "Default threads view sort:" +msgstr "Criteri di ordinamento di default per le discussioni:" + +#: deleteforum.php:42 deleteforum.php:55 moderate.php:65 +#: messages/delete.php:61 messages/delete.php:65 messages/message.php:77 +msgid "Delete" +msgstr "Elimina" + +#: messages/delete.php:58 +#, php-format +msgid "Delete '%s' and all replies?" +msgstr "Elimina '%s' e tutte le risposte?" + +#: deleteforum.php:39 lib/Messages.php:736 +msgid "Delete Forum" +msgstr "Elimina Forum" + +#: lib/Forums.php:243 +msgid "Delete forum" +msgstr "Elimina forum" + +#: lib/Messages.php:435 +msgid "Delete message" +msgstr "Elimina messaggio" + +#: lib/Messages.php:770 +msgid "Delete the existing attachment?" +msgstr "Elimina l'allegato attuale?" + +#: config/prefs.php.dist:56 config/prefs.php.dist:86 config/prefs.php.dist:132 +msgid "Descending" +msgstr "Discendente" + +#: forums.php:42 +msgid "Description" +msgstr "Descrizione" + +#: config/prefs.php.dist:9 config/prefs.php.dist:16 config/prefs.php.dist:23 +#: config/prefs.php.dist:30 +msgid "Display Options" +msgstr "Opzioni di Visualizzazione" + +#: config/prefs.php.dist:103 +msgid "Display full message bodies in the thread list view?" +msgstr "Mostra il corpo intero di messaggi nel elenco di discussioni?" + +#: config/prefs.php.dist:143 +msgid "Display graphical emoticons?" +msgstr "Visualizza le faccine grafiche?" + +#: deleteforum.php:42 deleteforum.php:70 +msgid "Do not delete" +msgstr "Non eliminare" + +#: messages/message.php:74 +msgid "Edit" +msgstr "Modifica" + +#: editforum.php:30 lib/Forums.php:239 lib/Messages.php:734 +msgid "Edit Forum" +msgstr "Modifica Forum" + +#: lib/api.php:301 +msgid "Edit Message" +msgstr "Modifica Messaggio" + +#: messages/edit.php:65 +#, php-format +msgid "Edit Message in \"%s\"" +msgstr "Modifica Messaggio in \"%s\"" + +#: lib/Forums.php:239 +msgid "Edit forum" +msgstr "Modifica forum" + +#: lib/Messages.php:431 +msgid "Edit message" +msgstr "Modifica messaggio" + +#: editforum.php:43 +msgid "Enter a brief description of this forum" +msgstr "Inserisci una descrizione breva di questo forum" + +#: forums.php:42 +msgid "Flat" +msgstr "Piatto" + +#: forums.php:42 moderate.php:55 lib/Block/forums.php:71 +#: lib/Block/threads.php:49 config/prefs.php.dist:42 +msgid "Forum" +msgstr "Forum" + +#: editforum.php:57 +msgid "Forum Modified" +msgstr "Forum Modificato" + +#: editforum.php:57 +msgid "Forum created." +msgstr "Forum creato." + +#: deleteforum.php:64 +msgid "Forum deleted." +msgstr "Forum eliminato." + +#: deleteforum.php:45 editforum.php:38 +msgid "Forum name" +msgstr "Nome forum" + +#: deleteforum.php:71 +msgid "Forum not deleted." +msgstr "Forum non eliminato." + +#: lib/Agora.php:228 lib/Block/forums.php:3 lib/Block/forums.php:28 +#: templates/forums/forums.html:24 +msgid "Forums" +msgstr "Forum" + +#: config/prefs.php.dist:10 +msgid "Forums View" +msgstr "Visualizza i Forum" + +#: lib/Messages.php:762 +msgid "From" +msgstr "Da" + +#: lib/Messages.php:440 +msgid "Hot thread" +msgstr "Discussione scottante" + +#: editforum.php:46 +msgid "If selected users will be able to attach files to their messages." +msgstr "Se selezionato, gli utente potranno allegare i file a loro messaggi." + +#: messages/edit.php:107 +msgid "" +"Invalid parent message, you will be posting this message as a new thread." +msgstr "" +"Messaggio originale invalido, questo messaggio sara' inviato come una nuova " +"discussione." + +#: editforum.php:44 +msgid "Is this a moderated forum?" +msgstr "Questo e' un forum moderato?" + +#: config/prefs.php.dist:44 +msgid "Last Message" +msgstr "Ultimo Messaggio" + +#: forums.php:42 lib/Block/forums.php:71 +msgid "Last Post" +msgstr "Ultimo Messaggio" + +#: messages/index.php:53 messages/message.php:80 +msgid "Lock thread" +msgstr "Chiudi la discussione" + +#: messages/lock.php:58 +#, php-format +msgid "Locking thread '%s'" +msgstr "Chiusura della discussione '%s'" + +#: lib/Messages.php:765 +msgid "Message" +msgstr "Messaggio" + +#: config/prefs.php.dist:31 +msgid "Message View" +msgstr "Visualizzazione Messaggio" + +#: messages/delete.php:77 +msgid "Message deleted." +msgstr "Messaggio eliminato." + +#: messages/index.php:27 messages/message.php:29 +msgid "Message does not exist." +msgstr "Messaggio inesistente." + +#: messages/delete.php:84 +msgid "Message not deleted." +msgstr "Messaggio non eliminato." + +#: messages/edit.php:80 lib/api.php:329 +msgid "Message posted." +msgstr "Messaggio inserito." + +#: config/prefs.php.dist:43 +msgid "Messages" +msgstr "Messaggi" + +#: moderate.php:84 +msgid "Messages Awaiting Moderation" +msgstr "Messaggi In Attesa di Moderazione" + +#: lib/Agora.php:242 +msgid "Moderate" +msgstr "Moderare" + +#: editforum.php:30 lib/Agora.php:240 +msgid "New Forum" +msgstr "Nuovo Forum" + +#: lib/Agora.php:234 +msgid "New Thread" +msgstr "Nuova Discussione" + +#: lib/Block/forums.php:62 +msgid "No available forums." +msgstr "Nessun forum disponibile." + +#: lib/Block/threads.php:109 +msgid "No available threads." +msgstr "Nessuna discussione disponibile." + +#: forums.php:35 +msgid "No forums available." +msgstr "Nessun forum disponibile." + +#: config/prefs.php.dist:141 +msgid "No graphical emoticons" +msgstr "Nessun emoticon grafico" + +#: moderate.php:48 +msgid "No messages to moderate available." +msgstr "Nessun messaggio da moderare è disponibile." + +#: templates/block/threads.html:26 +msgid "No threads" +msgstr "Nessuna discussione" + +#: threads.php:51 +msgid "No threads available." +msgstr "Nessuna discussione disponibile." + +#: messages/lock.php:64 +msgid "No, do not allow replies" +msgstr "No, non permettere le risposte" + +#: config/prefs.php.dist:65 +msgid "Number of forums to display on each page" +msgstr "Numero di forum da mostrare su ogni pagina" + +#: config/prefs.php.dist:111 +msgid "Number of threads to display on each page" +msgstr "Numero di discussioni da mostrare su ogni pagina" + +#: config/prefs.php.dist:95 +msgid "Number of views in 24hrs to trigger a 'hot-thread':" +msgstr "" +"Numero di visualizzazioni in 24 ore per segnalare una 'discussione scottante'" + +#: lib/Block/forums.php:35 +msgid "Only display this many forums (0 to display all forums)" +msgstr "Mostra solo questo numero di forum (0 per mostrare tutti i forum)" + +#: lib/Block/threads.php:57 +msgid "Only display this many threads (0 to display all threads)" +msgstr "" +"Mostra solo questo numero di discussioni (0 per mostrare tutti le " +"discussioni)" + +#: editforum.php:42 +msgid "Parent forum" +msgstr "Forum " + +#: lib/Messages.php:748 +msgid "Post" +msgstr "Inserisci" + +#: lib/api.php:301 +msgid "Post a New Message" +msgstr "Inserisci un Nuovo Messaggio" + +#: messages/edit.php:66 +#, php-format +msgid "Post a New Message to \"%s\"" +msgstr "Inserisci un Nuovo Messaggio in \"%s\"" + +#: messages/edit.php:64 +#, php-format +msgid "Post a Reply to \"%s\"" +msgstr "Inserisci una Risposta a \"%s\"" + +#: lib/Forums.php:234 lib/Messages.php:730 lib/Block/threads.php:80 +msgid "Post message" +msgstr "Inserisci Messagio" + +#: forums.php:42 threads.php:58 moderate.php:55 messages/index.php:44 +#: messages/message.php:47 lib/api.php:194 lib/Block/forums.php:71 +#: lib/Block/thread.php:101 lib/Block/threads.php:118 config/prefs.php.dist:45 +#: config/prefs.php.dist:75 config/prefs.php.dist:121 +msgid "Posted By" +msgstr "Inviato Da" + +#: messages/message.php:54 lib/Messages.php:265 +#, php-format +msgid "Posted by %s on %s" +msgstr "Inserito da %s il %s:" + +#: templates/messages/form.html:35 +msgid "Posted by on " +msgstr "Inserito da il " + +#: forums.php:42 lib/Block/forums.php:71 +msgid "Posts" +msgstr "Messaggi" + +#: messages/message.php:69 +msgid "Reply" +msgstr "Rispondi" + +#: lib/Messages.php:425 +msgid "Reply to message" +msgstr "Rispondi al messaggio" + +#: lib/Messages.php:264 +#, php-format +msgid "Replying to \"%s\"" +msgstr "Rispondi a \"%s\"" + +#: lib/Messages.php:748 +msgid "Save" +msgstr "Salva" + +#: editforum.php:44 +msgid "" +"Set this if you want all messages to be checked by a moderator before they " +"are posted." +msgstr "" +"Imposta questo se vuoi che tutti i messaggi vengano controllati da un " +"moderatore prima di essere inseriti." + +#: config/prefs.php.dist:11 +msgid "Set your options for the forums view." +msgstr "Imposta le tue opzioni per la visualizzazione di forum." + +#: config/prefs.php.dist:32 +msgid "Set your options for the message view." +msgstr "Imposta le tue opzioni per la visualizzazione del messaggio." + +#: config/prefs.php.dist:25 +msgid "Set your options for the single thread view." +msgstr "" +"Imposta le tue opzioni per la visualizzazione di una singola discussione." + +#: config/prefs.php.dist:18 +msgid "Set your options for the threads view." +msgstr "Imposta le tue opzioni per la visualizzazione di discussioni." + +#: config/prefs.php.dist:142 +msgid "Show graphical emoticons" +msgstr "Mostra emoticon grafici" + +#: lib/Block/thread.php:3 lib/Block/thread.php:65 +msgid "Single Thread" +msgstr "Discussione Singola" + +#: config/prefs.php.dist:24 +msgid "Single Thread View" +msgstr "Visualizzazione una Singola Discussione" + +#: lib/Agora.php:180 +msgid "Sort Ascending" +msgstr "Ordina Crescente" + +#: lib/Agora.php:180 +msgid "Sort Descending" +msgstr "Ordina Discendente" + +#: lib/Agora.php:188 lib/Agora.php:194 +#, php-format +msgid "Sort by %s" +msgstr "Ordina per %s" + +#: deleteforum.php:51 +msgid "Subforums" +msgstr "Sotto-forum" + +#: threads.php:58 moderate.php:55 messages/index.php:44 +#: messages/message.php:47 lib/Messages.php:764 lib/api.php:192 +#: lib/Block/thread.php:101 lib/Block/threads.php:118 config/prefs.php.dist:74 +#: config/prefs.php.dist:120 +msgid "Subject" +msgstr "Oggetto" + +#: lib/Agora.php:216 +msgid "The VFS backend needs to be configured to enable attachment uploads." +msgstr "" + +#: templates/moderate/moderate.html:24 +msgid "The following messages are waiting for approval" +msgstr "I seguenti messaggi sono in attesa di essere approvati" + +#: deleteforum.php:44 +msgid "This will delete the forum, any subforums and all relative messages." +msgstr "" +"Questo eliminerà il forum, qualsiasi sotto-forum e tutti i relativi " +"messaggi." + +#: messages/index.php:44 messages/message.php:47 lib/Block/thread.php:47 +#: lib/Block/thread.php:68 lib/Block/thread.php:101 config/prefs.php.dist:73 +#: config/prefs.php.dist:119 +msgid "Thread" +msgstr "Thread" + +#: messages/index.php:68 lib/Block/thread.php:108 +#: templates/messages/index.html:23 +msgid "Thread List" +msgstr "Elenco Discussioni" + +#: templates/messages/message.html:47 +msgid "Thread Summary" +msgstr "Riassunto Discussione" + +#: messages/lock.php:76 +msgid "Thread locked." +msgstr "Discussione chiusa." + +#: messages/lock.php:78 +msgid "Thread unlocked." +msgstr "Discussione aperta." + +#: lib/Agora.php:232 lib/Block/threads.php:3 lib/Block/threads.php:71 +msgid "Threads" +msgstr "Discussioni" + +#: config/prefs.php.dist:17 +msgid "Threads View" +msgstr "Visualizzazione Discussioni" + +#: lib/Block/threads.php:75 +#, php-format +msgid "Threads in \"%s\"" +msgstr "Discussioni in \"%s\"" + +#: threads.php:80 +#, php-format +msgid "Threads in %s" +msgstr "Discussioni in %s" + +#: templates/threads/threads.html:23 +msgid "Threads in " +msgstr "Discussioni in " + +#: lib/Block/thread.php:90 +msgid "Unable to fetch selected thread." +msgstr "Impossibile accedere alla discussione selezionata." + +#: lib/Block/threads.php:100 +msgid "Unable to fetch threads for selected forum." +msgstr "Impossibile accedere alle discussioni per il forum selezionato." + +#: messages/index.php:53 messages/message.php:80 +msgid "Unlock thread" +msgstr "Apri la discussione" + +#: editforum.php:36 messages/lock.php:61 +msgid "Update" +msgstr "Aggiorna" + +#: messages/lock.php:64 +msgid "Yes, allow replies" +msgstr "Si, permetti le risposte" + +#: lib/Forums.php:39 lib/Messages.php:35 +msgid "You must configure a Horde Categories backend to use Agora." +msgstr "" + +#: templates/javascript/moderate.js:15 +msgid "You must select at least one message first." +msgstr "Devi prima specificare almeno un messaggio." + +#: lib/Messages.php:946 +msgid "download" +msgstr "scarica" + +#: lib/Messages.php:947 +#, php-format +msgid "size: %s" +msgstr "grandezza: %s" + +#: lib/Messages.php:947 +#, php-format +msgid "type: %s" +msgstr "tipo: %s" diff --git a/agora/po/ja_JP.po b/agora/po/ja_JP.po new file mode 100644 index 000000000..9aa46e4b8 --- /dev/null +++ b/agora/po/ja_JP.po @@ -0,0 +1,1116 @@ +# Japanese translations for Agora package. +# Copyright 2008-2009 The Horde Project +# This file is distributed under the same license as the Agora package. +# Automatically generated, 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: Agora 1.0-cvs\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2008-02-07 11:24+0900\n" +"PO-Revision-Date: 2008-01-02 12:27+0100\n" +"Last-Translator: Takeshi Taguchi \n" +"Language-Team: i18n@lists.horde.org\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=SHIFT_JIS\n" +"Content-Transfer-Encoding: 8bit\n" + +#: moderate.php:51 +#, php-format +msgid "%d messages was approved." +msgstr "%d ’ʂ̃ƒbƒZ[ƒW‚ð³”F‚µ‚Ü‚µ‚½B" + +#: moderate.php:57 +#, php-format +msgid "%d messages was deleted." +msgstr "%d ’ʂ̃ƒbƒZ[ƒW‚ðíœ‚µ‚Ü‚µ‚½B" + +#: scripts/phorum2agora.php:218 +msgid "-a, --agora_id[=aid] Agora forum id to save message to" +msgstr "-a, --agora_id[=aid] ƒƒbƒZ[ƒW‚ð•Û‘¶‚·‚é agoraƒtƒH[ƒ‰ƒ€ID" + +#: scripts/phorum2agora.php:221 +msgid "-c, --count[=messages] Number of messages to move at once" +msgstr "-c, --count[=messages] ˆê“x‚Ɉړ®‚·‚郁ƒbƒZ[ƒW”" + +#: scripts/phorum2agora.php:220 +msgid "" +"-f, --from[=offset] Offset from where to start to read messages" +msgstr "-f, --from[=offset] ƒƒbƒZ[ƒW‚ð“ǂݎn‚߂鏊‚܂ł̃IƒtƒZƒbƒg" + +#: scripts/phorum2agora.php:216 +msgid "-h, --help Show this help" +msgstr "-h, --help ‚±‚̃wƒ‹ƒv‚ð•\ަ" + +#: scripts/phorum2agora.php:217 +msgid "-p, --phorum_id[=pid] Phorum forum id to read message from" +msgstr "-p, --phorum_id[=pid] ƒƒbƒZ[ƒW‚ð“Ç‚ÞPhorum ƒtƒH[ƒ‰ƒ€ID" + +#: scripts/phorum2agora.php:219 +msgid "-t, --phorum_table[=table] Phorum messages tablename" +msgstr "-t, --phorum_table[=table] Phorum ƒƒbƒZ[ƒW‚̃e[ƒuƒ‹–¼" + +# +#: lib/api.php:813 +msgid "Add a comment" +msgstr "ƒRƒƒ“ƒg‚ð’ljÁ" + +# +#: lib/api.php:148 +msgid "Admin" +msgstr "ŠÇ—" + +# +#: messages/merge.php:69 +msgid "After Message: " +msgstr "ˆ—ŒãƒƒbƒZ[ƒWF" + +# +#: forums.php:75 +msgid "All Forums" +msgstr "‘S‚ẴtƒH[ƒ‰ƒ€" + +# +#: lib/Forms/Forum.php:44 +msgid "Allow attachments in this forum?" +msgstr "“Y•t‚ð‚±‚ÌƒtƒH[ƒ‰ƒ€‚Å‹–‰Â‚µ‚Ü‚·‚©?" + +#: messages/lock.php:53 +msgid "Allow replies in this thread" +msgstr "‚±‚̃XƒŒƒbƒh‚ÅƒŠƒvƒ‰ƒC‚ð‹–‰Â" + +#: moderate.php:48 moderate.php:70 +msgid "Approve" +msgstr "³”F" + +#: lib/View.php:72 config/prefs.php.dist:103 config/prefs.php.dist:138 +#: config/prefs.php.dist:179 config/prefs.php.dist:267 +msgid "Ascending" +msgstr "¸‡" + +#: lib/Messages.php:1454 +msgid "Attachment" +msgstr "“Y•t" + +#: lib/View.php:67 lib/Forms/Search.php:58 +msgid "Author" +msgstr "ì¬ŽÒ" + +# +#: config/prefs.php.dist:11 +msgid "Avatar" +msgstr "‰»g" + +#: config/prefs.php.dist:67 +#, php-format +msgid "" +"Avatars must be smaller than %s by %s pixels and less than %sKb in size." +msgstr "‰»g‚Í %s ~ %sƒsƒNƒZƒ‹ˆÈ‰º‚Å‚ ‚èA%sKbˆÈ‰º‚Ì—e—ʂłȂ¯‚ê‚΂Ȃè‚Ü‚¹‚ñB" + +# +#: ban.php:58 lib/Messages.php:1399 +msgid "Ban" +msgstr "’Ç•ú" + +#: templates/forums/ban.html:10 +msgid "Banned" +msgstr "’Ç•úÏ‚Ý" + +#: moderate.php:62 +msgid "Body" +msgstr "–{•¶" + +# +#: deleteforum.php:47 messages/split.php:49 messages/delete.php:52 +#: messages/merge.php:50 messages/move.php:49 messages/abuse.php:50 +#: messages/abuse.php:58 lib/api.php:734 +msgid "Cancel" +msgstr "ƒLƒƒƒ“ƒZƒ‹" + +# +#: lib/Messages.php:1882 +msgid "Cannot create a forum with an empty name." +msgstr "–¼‘O‚ª‹ó‚̃tƒH[ƒ‰ƒ€‚͍쐬‚Å‚«‚Ü‚¹‚ñB" + +#: templates/prefs/avatarselect.inc:8 +msgid "Choose from a gallery of avatars: " +msgstr "‰»gˆê——‚©‚ç‘I‘ð:" + +# +#: lib/View.php:78 lib/api.php:440 +msgid "Comments" +msgstr "ƒRƒƒ“ƒg" + +# +#: config/prefs.php.dist:51 +msgid "Comments view" +msgstr "ƒRƒƒ“ƒg•\ަ" + +#: editforum.php:44 +#, php-format +msgid "Could not create the forum. %s" +msgstr "ƒtƒH[ƒ‰ƒ€‚ðì¬‚Å‚«‚Ü‚¹‚ñ:%s" + +#: deleteforum.php:68 +#, php-format +msgid "Could not delete the forum. %s" +msgstr "ƒtƒH[ƒ‰ƒ€‚ðíœ‚Å‚«‚Ü‚¹‚ñ:%s" + +#: messages/delete.php:66 lib/api.php:717 lib/api.php:728 lib/api.php:742 +#, php-format +msgid "Could not delete the message. %s" +msgstr "ƒƒbƒZ[ƒW‚ðíœ‚Å‚«‚Ü‚¹‚ñ:%s" + +#: threads.php:33 +#, php-format +msgid "Could not list threads. %s" +msgstr "ƒXƒŒƒbƒh•\ަ‚Å‚«‚Ü‚¹‚ñ:%s" + +#: messages/lock.php:62 +#, php-format +msgid "Could not lock the thread. %s" +msgstr "ƒXƒŒƒbƒh‚ðƒƒbƒN‚Å‚«‚Ü‚¹‚ñ:%s" + +#: messages/split.php:33 messages/delete.php:36 messages/index.php:36 +#: messages/lock.php:35 messages/merge.php:34 messages/move.php:33 +#: messages/abuse.php:33 +#, php-format +msgid "Could not open the message. %s" +msgstr "ƒƒbƒZ[ƒW‚ðŠJ‚¯‚Ü‚¹‚ñ:%s" + +# +#: messages/edit.php:33 messages/edit.php:83 lib/api.php:581 lib/api.php:634 +msgid "Could not post the message: " +msgstr "ƒƒbƒZ[ƒW‚𓊍e‚Å‚«‚Ü‚¹‚ñ:" + +#: lib/Template.php:234 +#, php-format +msgid "Could not save the compiled template file \"%s\"." +msgstr "ƒRƒ“ƒpƒCƒ‹‚µ‚½—Œ`ƒtƒ@ƒCƒ‹ '%s' ‚ð•Û‘¶‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B" + +# +#: scripts/phorum2agora.php:65 +msgid "Couldn't read command-line options." +msgstr "ƒRƒ}ƒ“ƒhƒ‰ƒCƒ“ƒIƒvƒVƒ‡ƒ“‚ð“ǂ߂܂¹‚ñB" + +#: lib/Forms/Forum.php:30 +msgid "Create" +msgstr "ì¬" + +# +#: lib/Messages.php:1450 +msgid "Current attachment" +msgstr "Œ»Ý‚Ì“Y•t" + +#: moderate.php:62 forums.php:57 messages/index.php:146 lib/View.php:66 +#: lib/View.php:85 lib/View.php:100 lib/api.php:429 lib/Block/forums.php:87 +#: lib/Block/thread.php:84 lib/Block/threads.php:125 config/prefs.php.dist:94 +#: config/prefs.php.dist:128 config/prefs.php.dist:170 +#: config/prefs.php.dist:258 +msgid "Date" +msgstr "“ú•t" + +# +#: config/prefs.php.dist:259 +msgid "Default comments view sort:" +msgstr "ƒfƒtƒHƒ‹ƒg‚̃Rƒƒ“ƒg•\ަ‡:" + +# +#: config/prefs.php.dist:95 +msgid "Default forums view sort:" +msgstr "ƒfƒtƒHƒ‹ƒg‚̃tƒH[ƒ‰ƒ€•\ަ‡:" + +# +#: config/prefs.php.dist:105 config/prefs.php.dist:140 +#: config/prefs.php.dist:181 config/prefs.php.dist:269 +msgid "Default sorting direction:" +msgstr "ƒfƒtƒHƒ‹ƒg‚Ì•À‚ёւ¦‡:" + +# +#: config/prefs.php.dist:171 +msgid "Default thread view sort:" +msgstr "ƒfƒtƒHƒ‹ƒg‚̃XƒŒƒbƒh•\ަ‡:" + +# +#: config/prefs.php.dist:130 +msgid "Default threads view sort:" +msgstr "ƒfƒtƒHƒ‹ƒg‚̃XƒŒƒbƒhŒQ•\ަ‡:" + +#: ban.php:55 moderators.php:67 moderate.php:54 moderate.php:70 +#: deleteforum.php:47 deleteforum.php:65 messages/delete.php:52 +#: messages/delete.php:57 messages/index.php:122 lib/api.php:734 +#: lib/api.php:739 lib/Messages.php:801 lib/Messages.php:1700 +msgid "Delete" +msgstr "íœ" + +#: messages/delete.php:51 lib/api.php:733 +#, php-format +msgid "Delete \"%s\" and all replies?" +msgstr " \"%s\"‚Æ‘S‚Ä‚ÌƒŠƒvƒ‰ƒC‚ðíœ‚µ‚Ü‚·‚©?" + +# +#: deleteforum.php:45 lib/Messages.php:1397 +msgid "Delete Forum" +msgstr "ƒtƒH[ƒ‰ƒ€‚ðíœ" + +# +#: lib/Messages.php:1700 +msgid "Delete forum" +msgstr "ƒtƒH[ƒ‰ƒ€‚ðíœ" + +# +#: lib/Messages.php:801 +msgid "Delete message" +msgstr "ƒƒbƒZ[ƒW‚ðíœ" + +# +#: lib/Messages.php:1449 +msgid "Delete the existing attachment?" +msgstr "Šù‘¶‚Ì“Y•t‚ðíœ‚µ‚Ü‚·‚©?" + +#: lib/View.php:73 config/prefs.php.dist:104 config/prefs.php.dist:139 +#: config/prefs.php.dist:180 config/prefs.php.dist:268 +msgid "Descending" +msgstr "~‡" + +#: forums.php:57 +msgid "Description" +msgstr "à–¾" + +#: config/prefs.php.dist:21 config/prefs.php.dist:28 config/prefs.php.dist:35 +#: config/prefs.php.dist:43 config/prefs.php.dist:50 +msgid "Display Options" +msgstr "•\ަƒIƒvƒVƒ‡ƒ“" + +#: config/prefs.php.dist:248 +msgid "Display full message bodies in the comments view?" +msgstr "ƒRƒƒ“ƒg•\ަ‚сƒbƒZ[ƒW–{•¶‚·‚ׂĂð•\ަ‚µ‚Ü‚·‚©?" + +#: config/prefs.php.dist:192 +msgid "Display full message bodies in the thread list view?" +msgstr "ƒXƒŒƒbƒh•\ަ‚сƒbƒZ[ƒW–{•¶‚·‚ׂĂð•\ަ‚µ‚Ü‚·‚©?" + +# +#: config/prefs.php.dist:211 +msgid "Display graphical emoticons?" +msgstr "ƒOƒ‰ƒtƒBƒJƒ‹Šç•¶Žš‚ð•\ަ‚µ‚Ü‚·‚©?" + +#: messages/index.php:119 lib/Messages.php:797 lib/Messages.php:1694 +msgid "Edit" +msgstr "•ҏW" + +# +#: editforum.php:25 lib/Messages.php:1394 +msgid "Edit Forum" +msgstr "ƒtƒH[ƒ‰ƒ€•ҏW" + +# +#: lib/api.php:609 +msgid "Edit Message" +msgstr "ƒƒbƒZ[ƒW•ҏW" + +#: messages/edit.php:70 +#, php-format +msgid "Edit Message in \"%s\"" +msgstr "\"%s\" ‚ւ̃ƒbƒZ[ƒW•ҏW" + +# +#: lib/api.php:811 +msgid "Edit a comment" +msgstr "ƒRƒƒ“ƒg•ҏW" + +# +#: lib/Messages.php:1694 +msgid "Edit forum" +msgstr "ƒtƒH[ƒ‰ƒ€•ҏW" + +# +#: lib/Messages.php:797 +msgid "Edit message" +msgstr "ƒƒbƒZ[ƒW•ҏW" + +# +#: lib/Forms/Forum.php:41 +msgid "Enter a brief description of this forum" +msgstr "‚±‚̃tƒH[ƒ‰ƒ€‚Ìà–¾‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢" + +#: messages/index.php:168 lib/View.php:59 config/prefs.php.dist:246 +msgid "Flat" +msgstr "ƒtƒ‰ƒbƒg" + +# +#: moderators.php:79 moderators.php:82 moderate.php:62 forums.php:57 +#: messages/move.php:54 lib/Block/forums.php:87 lib/Block/threads.php:46 +#: config/prefs.php.dist:90 templates/moderators/moderators.html:8 +msgid "Forum" +msgstr "ƒtƒH[ƒ‰ƒ€" + +#: lib/api.php:711 lib/Messages.php:1612 +#, php-format +msgid "Forum %s does not exist." +msgstr "ƒtƒH[ƒ‰ƒ€ %s ‚Í‘¶Ý‚µ‚Ü‚¹‚ñB" + +# +#: editforum.php:47 +msgid "Forum Modified" +msgstr "ƒtƒH[ƒ‰ƒ€•ύX“úŽž" + +#: editforum.php:47 +msgid "Forum created." +msgstr "ƒtƒH[ƒ‰ƒ€‚͐¶¬‚³‚ê‚Ü‚µ‚½B" + +# +#: deleteforum.php:70 +msgid "Forum deleted." +msgstr "ƒtƒH[ƒ‰ƒ€‚͍폜‚³‚ê‚Ü‚µ‚½B" + +# +#: deleteforum.php:51 lib/Forms/Forum.php:33 +#: templates/moderators/moderators.html:9 +msgid "Forum name" +msgstr "ƒtƒH[ƒ‰ƒ€–¼" + +# +#: deleteforum.php:73 +msgid "Forum not deleted." +msgstr "ƒtƒH[ƒ‰ƒ€‚͍폜‚³‚ê‚Ü‚¹‚ñ‚Å‚µ‚½B" + +#: lib/api.php:149 lib/Block/forums.php:3 lib/Block/forums.php:28 +#: templates/forums/forums.html:9 +msgid "Forums" +msgstr "ƒtƒH[ƒ‰ƒ€" + +# +#: config/prefs.php.dist:22 +msgid "Forums View" +msgstr "ƒtƒH[ƒ‰ƒ€•\ަ" + +#: lib/Messages.php:1431 +msgid "From" +msgstr "·ol" + +#: templates/threads/threads.html:43 +msgid "Goto page:" +msgstr "ƒy[ƒW‚ÖˆÚ“®:" + +# +#: messages/index.php:158 messages/index.php:167 +msgid "Hide bodies" +msgstr "–{•¶‚ð‰B‚·" + +# +#: lib/Messages.php:718 +msgid "Hot thread" +msgstr "”M‚¢ƒXƒŒƒbƒh" + +#: lib/Forms/Forum.php:44 +msgid "If selected users will be able to attach files to their messages." +msgstr "‘I‘ð‚³‚ê‚½ƒ†[ƒU‚ªƒƒbƒZ[ƒW‚Ƀtƒ@ƒCƒ‹“Y•t‚Å‚«‚é‚È‚ç‚΁B" + +#: messages/edit.php:113 +msgid "" +"Invalid parent message, you will be posting this message as a new thread." +msgstr "•s³‚ȐeƒƒbƒZ[ƒW‚Å‚·B‚ ‚È‚½‚Ì“Še‚͐V‹KƒXƒŒƒbƒh‚Æ‚µ‚Ĉµ‚í‚ê‚Ü‚·B" + +# +#: lib/Forms/Forum.php:42 +msgid "Is this a moderated forum?" +msgstr "‚±‚ê‚̓‚ƒfƒŒ[ƒ^ŠÇ—‰º‚É‚ ‚éƒtƒH[ƒ‰ƒ€‚Å‚·‚©H" + +#: lib/Forms/Search.php:46 +msgid "Keywords" +msgstr "ƒL[ƒ[ƒh" + +# +#: config/prefs.php.dist:92 +msgid "Last Message" +msgstr "ÅŒã‚̃ƒbƒZ[ƒW" + +# +#: forums.php:57 lib/Block/forums.php:87 +msgid "Last Post" +msgstr "ÅV‚Ì“Še" + +# +#: threads.php:62 config/prefs.php.dist:129 +msgid "Last post" +msgstr "ÅV‚Ì“Še" + +# +#: lib/Messages.php:805 +msgid "Lock" +msgstr "ƒƒbƒN" + +# +#: messages/index.php:125 +msgid "Lock thread" +msgstr "ƒXƒŒƒbƒh‚ðƒƒbƒN" + +#: messages/lock.php:50 +#, php-format +msgid "Locking thread \"%s\"" +msgstr "ƒƒbƒN‚³‚ꂽƒXƒŒƒbƒh \"%s\"" + +#: lib/Agora.php:361 +msgid "Malformed avatar." +msgstr "‰ó‚ꂽ‰»gB" + +#: lib/Agora.php:384 +msgid "Malformed database entry." +msgstr "‰ó‚ꂽƒf[ƒ^ƒx[ƒX€–ځB" + +#: scripts/phorum2agora.php:214 +msgid "" +"Mandatory arguments to long options are mandatory for short options too." +msgstr "" +"Mandatory arguments to long options are mandatory for short options too." + +#: messages/merge.php:50 messages/merge.php:76 lib/Messages.php:816 +msgid "Merge" +msgstr "ƒ}[ƒW" + +#: messages/merge.php:49 +#, php-format +msgid "Merge \"%s\" with another thread" +msgstr "•ʂ̃XƒŒƒbƒh‚Å\"%s\"‚ðƒ}[ƒW" + +# +#: lib/Messages.php:1444 +msgid "Message" +msgstr "ƒƒbƒZ[ƒW" + +#: messages/abuse.php:80 +#, php-format +msgid "Message %s reported as abuse" +msgstr "ƒƒbƒZ[ƒW %s ‚Í•s³‚È‚à‚̂Ƃµ‚Ä•ñ‚³‚ê‚Ü‚µ‚½B" + +#: lib/Messages.php:456 +#, php-format +msgid "Message ID \"%d\" not found" +msgstr "ƒƒbƒZ[ƒWID \"%d\" ‚ÍŒ©‚‚©‚è‚Ü‚¹‚ñB" + +# +#: config/prefs.php.dist:44 +msgid "Message View" +msgstr "ƒƒbƒZ[ƒW•\ަ" + +# +#: messages/delete.php:68 lib/api.php:744 +msgid "Message deleted." +msgstr "ƒƒbƒZ[ƒW‚͍폜‚³‚ê‚Ü‚µ‚½B" + +# +#: messages/delete.php:58 lib/api.php:749 +msgid "Message not deleted." +msgstr "ƒƒbƒZ[ƒW‚͍폜‚³‚ê‚Ü‚¹‚ñ‚Å‚µ‚½B" + +# +#: messages/edit.php:85 lib/api.php:636 +msgid "Message posted." +msgstr "ƒƒbƒZ[ƒW‚Í“Še‚³‚ê‚Ü‚µ‚½B" + +#: config/prefs.php.dist:91 +msgid "Messages" +msgstr "ƒƒbƒZ[ƒW" + +#: moderate.php:82 templates/moderate/moderate.html:9 +msgid "Messages Awaiting Moderation" +msgstr "ƒƒbƒZ[ƒW‚͏³”F‘Ò‚¿‚Å‚·" + +#: lib/Messages.php:1719 +msgid "Moderate" +msgstr "³”FŠÇ—" + +# +#: moderators.php:77 lib/Tree/flat.php:117 templates/messages/flat.html:25 +#: templates/messages/flat_thread.html:10 templates/messages/message.html:21 +msgid "Moderator" +msgstr "³”FŽÒ" + +# +#: moderators.php:71 templates/moderators/moderators.html:4 +#: templates/moderators/moderators.html:10 templates/forums/forums.html:40 +msgid "Moderators" +msgstr "³”FŽÒ" + +#: messages/move.php:49 messages/move.php:61 lib/Messages.php:812 +msgid "Move" +msgstr "ˆÚ“®" + +#: messages/move.php:48 +#, php-format +msgid "Move \"%s\" to another forum" +msgstr "\"%s\"‚ð•ʂ̃tƒH[ƒ‰ƒ€‚Ɉړ®" + +# +#: config/prefs.php.dist:10 +msgid "My Information" +msgstr "Ž„‚̏î•ñ" + +# +#: editforum.php:25 +msgid "New Forum" +msgstr "V‹KƒtƒH[ƒ‰ƒ€" + +# +#: lib/Messages.php:1689 +msgid "New Post" +msgstr "V‹K“Še" + +# +#: lib/Agora.php:267 +msgid "New Thread" +msgstr "V‹KƒXƒŒƒbƒh" + +# +#: lib/Messages.php:719 +msgid "New posts" +msgstr "V‹K“Še" + +# +#: config/prefs.php.dist:189 +msgid "No" +msgstr "‚¢‚¢‚¦" + +# +#: lib/Block/threads.php:121 +msgid "No available threads." +msgstr "ƒXƒŒƒbƒh‚ª‚ ‚è‚Ü‚¹‚ñB" + +# +#: lib/Block/threads.php:100 +msgid "No forum selected" +msgstr "ƒtƒH[ƒ‰ƒ€‚ª‘I‘ð‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB" + +# +#: templates/forums/forums.html:65 +msgid "No forums have been created." +msgstr "ƒtƒH[ƒ‰ƒ€‚͐¶¬‚³‚ê‚Ü‚¹‚ñ‚Å‚µ‚½B" + +#: config/prefs.php.dist:209 +msgid "No graphical emoticons" +msgstr "ƒOƒ‰ƒtƒBƒbƒNŠç•¶Žš”ñ•\ަ" + +#: moderate.php:40 +msgid "No messages are waiting for moderation." +msgstr "³”F‘Ò‚¿‚̃ƒbƒZ[ƒW‚Í‚ ‚è‚Ü‚¹‚ñB" + +#: messages/abuse.php:41 +msgid "No moderators are associated with this forum." +msgstr "‚±‚̃tƒH[ƒ‰ƒ€‚ɂ͏³”FŽÒ‚ª‹‚Ü‚¹‚ñB" + +# +#: templates/moderators/moderators.html:27 +msgid "No moderators have been created." +msgstr "³”FŽÒ‚͐¶¬‚³‚ê‚Ü‚¹‚ñ‚Å‚µ‚½B" + +# +#: templates/block/threads.html:32 +msgid "No threads" +msgstr "”ñƒXƒŒƒbƒh" + +#: messages/lock.php:53 +msgid "No, do not allow replies" +msgstr "ƒŠƒvƒ‰ƒC‚Í‹–‚³‚ê‚Ü‚¹‚ñ" + +# +#: config/prefs.php.dist:114 +msgid "Number of forums to display on each page" +msgstr "Šeƒy[ƒW‚É•\ަ‚·‚éƒtƒH[ƒ‰ƒ€”" + +# +#: config/prefs.php.dist:201 +msgid "Number of message to display on each page" +msgstr "Šeƒy[ƒW‚É•\ަ‚·‚郁ƒbƒZ[ƒW”" + +# +#: config/prefs.php.dist:157 config/prefs.php.dist:278 +msgid "Number of messages to display on each page" +msgstr "Šeƒy[ƒW‚É•\ަ‚·‚郁ƒbƒZ[ƒW”" + +#: config/prefs.php.dist:148 +msgid "Number of views in 24hrs to trigger a 'hot-thread':" +msgstr "u”M‚¢ƒXƒŒƒbƒhv‚Æ”F’è‚·‚é24ŽžŠÔ‚̃AƒNƒZƒX”:" + +#: lib/Block/forums.php:35 +msgid "Only display this many forums (0 to display all forums)" +msgstr "‚±‚̐”‚¾‚¯‚̃tƒH[ƒ‰ƒ€‚ð•\ަ(0‚Å‘SƒtƒH[ƒ‰ƒ€‚ð•\ަ)" + +#: lib/Block/threads.php:53 +msgid "Only display this many threads (0 to display all threads)" +msgstr "‚±‚̐”‚¾‚¯‚̃XƒŒƒbƒh‚ð•\ަ(0‚Å‘SƒXƒŒƒbƒh‚ð•\ަ)" + +#: templates/forums/forums.html:35 +msgid "Options" +msgstr "ƒIƒvƒVƒ‡ƒ“" + +#: lib/Messages.php:763 +#, php-format +msgid "Page %d" +msgstr "ƒy[ƒW %d" + +# +#: lib/Forms/Forum.php:36 +msgid "Parent forum" +msgstr "eƒtƒH[ƒ‰ƒ€" + +# +#: lib/Messages.php:1413 +msgid "Post" +msgstr "“Še" + +# +#: lib/api.php:609 +msgid "Post a New Message" +msgstr "V‹KƒƒbƒZ[ƒW‚𓊍e" + +#: messages/edit.php:71 +#, php-format +msgid "Post a New Message to \"%s\"" +msgstr "%s ‚ւ̐V‹KƒƒbƒZ[ƒW“Še" + +#: messages/edit.php:69 messages/index.php:213 +#, php-format +msgid "Post a Reply to \"%s\"" +msgstr "\"%s\"‚Ö‚ÌƒŠƒvƒ‰ƒC‚𓊍e" + +# +#: lib/Messages.php:1389 lib/Messages.php:1689 +msgid "Post message" +msgstr "ƒƒbƒZ[ƒW‚𓊍e" + +#: moderate.php:62 forums.php:57 messages/index.php:146 lib/View.php:83 +#: lib/View.php:99 lib/api.php:427 lib/Tree/flat.php:112 +#: lib/Block/forums.php:87 lib/Block/thread.php:84 lib/Block/threads.php:125 +#: config/prefs.php.dist:93 config/prefs.php.dist:126 +#: config/prefs.php.dist:169 config/prefs.php.dist:257 +#: templates/messages/flat.html:21 templates/messages/flat_thread.html:7 +msgid "Posted by" +msgstr "“ŠeŽÒ" + +#: messages/index.php:90 lib/Messages.php:501 +#, php-format +msgid "Posted by %s on %s" +msgstr "%s ‚Ì %s‚©‚ç‚Ì“Še" + +# +#: threads.php:62 forums.php:57 lib/Block/forums.php:87 +#: config/prefs.php.dist:127 +msgid "Posts" +msgstr "“Še" + +# +#: lib/Messages.php:1436 +msgid "Quote" +msgstr "—e—ʐ§ŒÀ" + +#: messages/index.php:113 lib/Messages.php:785 +msgid "Reply" +msgstr "ƒŠƒvƒ‰ƒC" + +# +#: lib/Messages.php:785 +msgid "Reply to message" +msgstr "‘—MŽÒ‚ÉƒŠƒvƒ‰ƒC" + +# +#: messages/abuse.php:49 messages/abuse.php:50 lib/Messages.php:791 +msgid "Report as abuse" +msgstr "•s³Žg—p‚Æ•ñ" + +#: lib/Forms/Search.php:47 +msgid "Require all keywords?" +msgstr "‘S‚ẴL[ƒ[ƒh‚ð‹‚ß‚Ü‚·‚©?" + +#: lib/Messages.php:1413 +msgid "Save" +msgstr "•Û‘¶" + +#: lib/Forms/Search.php:60 +msgid "Search" +msgstr "ŒŸõ" + +# +#: search.php:70 lib/Forms/Search.php:36 +msgid "Search Forums" +msgstr "ƒtƒH[ƒ‰ƒ€ŒŸõ" + +#: templates/search/search.html:5 +msgid "Search Results" +msgstr "ŒŸõŒ‹‰Ê" + +#: lib/Forms/Search.php:55 +msgid "Search in message contents?" +msgstr "ƒƒbƒZ[ƒW“àŒŸõ" + +# +#: lib/Forms/Search.php:51 +msgid "Search in subjects?" +msgstr "Œ–¼ŒŸõ" + +# +#: lib/Forms/Search.php:40 +msgid "Search in these forums" +msgstr "•¡”ƒtƒH[ƒ‰ƒ€ŠÔŒŸõ" + +#: config/prefs.php.dist:12 +msgid "Set the avatar image that is shown with your posts." +msgstr "‚ ‚È‚½‚ª“Še‚·‚鉿‘œ‚ʼn»g‚ðÝ’肵‚Ü‚·B" + +#: lib/Forms/Forum.php:42 +msgid "" +"Set this if you want all messages to be checked by a moderator before they " +"are posted." +msgstr "" +"“Še‚³‚ê‚é‘O‚ɏ³”FŽÒ‚É‚æ‚Á‚Ä‚·‚ׂẴƒbƒZ[ƒW‚ªƒ`ƒFƒbƒN‚³‚ê‚邿‚¤‚É‚·‚é‚È‚ç" +"‚ΐݒèB" + +#: config/prefs.php.dist:23 +msgid "Set your options for the forums view." +msgstr "ƒtƒH[ƒ‰ƒ€•\ަ‚̃IƒvƒVƒ‡ƒ“‚ðÝ’èB" + +#: config/prefs.php.dist:45 +msgid "Set your options for the message view." +msgstr "ƒƒbƒZ[ƒW•\ަ‚̃IƒvƒVƒ‡ƒ“‚ðÝ’èB" + +#: config/prefs.php.dist:37 config/prefs.php.dist:52 +msgid "Set your options for the single thread view." +msgstr "ƒXƒŒƒbƒh’P‘Ì•\ަ‚̃IƒvƒVƒ‡ƒ“‚ðÝ’èB" + +#: config/prefs.php.dist:30 +msgid "Set your options for the threads view." +msgstr "ƒXƒŒƒbƒh•\ަ‚̃IƒvƒVƒ‡ƒ“‚ðÝ’èB" + +#: config/prefs.php.dist:210 +msgid "Show graphical emoticons" +msgstr "ƒOƒ‰ƒtƒBƒJƒ‹Šç•¶Žš‚ð•\ަ" + +# +#: lib/Block/thread.php:3 lib/Block/thread.php:53 +msgid "Single Thread" +msgstr "’P‘̃XƒŒƒbƒh" + +# +#: config/prefs.php.dist:36 +msgid "Single Thread View" +msgstr "’P‘̃XƒŒƒbƒh•\ަ" + +# +#: lib/Agora.php:206 +msgid "Sort Ascending" +msgstr "¸‡•À‚ёւ¦" + +# +#: lib/Agora.php:206 +msgid "Sort Descending" +msgstr "~‡•À‚ёւ¦" + +# +#: lib/View.php:64 +msgid "Sort by" +msgstr "ˆÈ‰º‚Å•À‚בւ¦" + +#: lib/Agora.php:214 lib/Agora.php:221 +#, php-format +msgid "Sort by %s" +msgstr "%s ‚Å•À‚בւ¦" + +# +#: lib/View.php:70 +msgid "Sort direction" +msgstr "•À‚ёւ¦•ûŒüF" + +# +#: lib/Messages.php:1458 lib/Forms/Message.php:26 +msgid "Spam protection" +msgstr "SPAM–hŒä" + +#: messages/split.php:49 messages/split.php:57 lib/Messages.php:821 +msgid "Split" +msgstr "•ªŠ„" + +#: messages/split.php:48 +#, php-format +msgid "Split \"%s\"" +msgstr "•ªŠ„ \"%s\"" + +# +#: threads.php:62 +msgid "Started" +msgstr "ŠJŽn" + +# +#: deleteforum.php:59 +msgid "Subforums" +msgstr "ƒTƒuƒtƒH[ƒ‰ƒ€" + +#: threads.php:62 moderate.php:62 messages/index.php:146 lib/View.php:68 +#: lib/View.php:81 lib/View.php:98 lib/api.php:425 lib/Messages.php:1438 +#: lib/Messages.php:1441 lib/Block/thread.php:84 lib/Block/threads.php:125 +#: config/prefs.php.dist:125 config/prefs.php.dist:168 +#: config/prefs.php.dist:256 +msgid "Subject" +msgstr "Œ–¼" + +#: lib/Agora.php:243 +msgid "The VFS backend needs to be configured to enable attachment uploads." +msgstr "" +"VFS ƒoƒbƒNƒGƒ“ƒh‚Í“Y•t‚̃Aƒbƒvƒ[ƒh‚ð‹–‰Â‚·‚邿‚¤Ý’肳‚ê‚Ä‚¢‚È‚¯‚ê‚΂Ȃè‚Ü" +"‚¹‚ñB" + +#: config/prefs.php.dist:64 +msgid "The location of your avatar image." +msgstr "‚ ‚È‚½‚̉»g‰æ‘œ‚̏ꏊB" + +# +#: lib/Block/forums.php:78 +msgid "There are no forums." +msgstr "ƒtƒH[ƒ‰ƒ€‚Í‚ ‚è‚Ü‚¹‚ñB" + +# +#: templates/threads/threads.html:72 +msgid "There are no threads in this forum." +msgstr "‚±‚̃tƒH[ƒ‰ƒ€‚ɂ̓XƒŒƒbƒh‚Í‚ ‚è‚Ü‚¹‚ñB" + +# +#: lib/Messages.php:166 +msgid "This thread has been locked." +msgstr "‚±‚̃XƒŒƒbƒh‚̓ƒbƒN‚³‚ê‚Ü‚µ‚½B" + +#: deleteforum.php:50 +msgid "This will delete the forum, any subforums and all relative messages." +msgstr "" +"‚±‚̃tƒH[ƒ‰ƒ€‚͍폜‚³‚ê‚Ü‚·B‰½‚̃TƒuƒtƒH[ƒ‰ƒ€‚àƒƒbƒZ[ƒW‚à‘¶Ý‚µ‚Ü‚¹‚ñB" + +#: messages/index.php:146 messages/index.php:159 lib/View.php:60 +#: lib/View.php:97 lib/Block/thread.php:33 lib/Block/thread.php:84 +#: config/prefs.php.dist:124 config/prefs.php.dist:167 +#: config/prefs.php.dist:247 +msgid "Thread" +msgstr "ƒXƒŒƒbƒh" + +#: messages/merge.php:81 +#, php-format +msgid "Thread %s merged with thread %s after message %s." +msgstr "ƒƒbƒZ[ƒW %s ‚ÌŒã‚̃XƒŒƒbƒh%s‚ŁAƒXƒŒƒbƒh%s‚Í“‡‚³‚ê‚Ü‚µ‚½B" + +#: messages/move.php:66 +#, php-format +msgid "Thread %s moved to from forum %s to %s." +msgstr "ƒXƒŒƒbƒh%s‚́AƒtƒH[ƒ‰ƒ€%s‚©‚ç%s‚ÖˆÚ“®‚µ‚Ü‚µ‚½B" + +# +#: lib/Block/thread.php:91 templates/messages/index.html:9 +msgid "Thread List" +msgstr "ƒXƒŒƒbƒhˆê——" + +# +#: templates/messages/message.html:34 +msgid "Thread Summary" +msgstr "ƒXƒŒƒbƒhŠT—vF" + +# +#: messages/delete.php:73 +msgid "Thread deleted." +msgstr "ƒXƒŒƒbƒh‚͍폜‚³‚ê‚Ü‚µ‚½B" + +# +#: messages/index.php:205 messages/lock.php:65 +msgid "Thread locked." +msgstr "ƒXƒŒƒbƒh‚̓ƒbƒN‚³‚ê‚Ü‚µ‚½B" + +#: messages/split.php:62 +#, php-format +msgid "Thread splitted by message %s." +msgstr "ƒXƒŒƒbƒh‚̓ƒbƒZ[ƒW%s ‚Å•ªŠ„‚³‚ê‚Ü‚µ‚½B" + +# +#: messages/lock.php:67 +msgid "Thread unlocked." +msgstr "ƒXƒŒƒbƒhƒƒbƒN‰ðœ" + +# +#: forums.php:57 lib/Block/threads.php:3 lib/Block/threads.php:72 +#: lib/Block/threads.php:78 +msgid "Threads" +msgstr "ƒXƒŒƒbƒh" + +# +#: config/prefs.php.dist:29 +msgid "Threads View" +msgstr "ƒXƒŒƒbƒh•\ަ" + +#: lib/Block/threads.php:82 +#, php-format +msgid "Threads in \"%s\"" +msgstr "\"%s\"‚̃XƒŒƒbƒh" + +#: threads.php:70 threads.php:82 +#, php-format +msgid "Threads in %s" +msgstr "%s‚̃XƒŒƒbƒh" + +# +#: lib/Block/thread.php:72 +msgid "Unable to fetch selected thread." +msgstr "‘I‘ð‚³‚ê‚½ƒXƒŒƒbƒh‚ð“ǂݍž‚߂܂¹‚ñB" + +# +#: lib/Block/threads.php:106 +msgid "Unable to fetch threads for selected forum." +msgstr "‘I‘ð‚³‚ê‚½ƒtƒH[ƒ‰ƒ€‚̃XƒŒƒbƒh‚ð“ǂݍž‚߂܂¹‚ñB" + +# +#: lib/Messages.php:805 +msgid "Unlock" +msgstr "ƒƒbƒN‰ðœ" + +# +#: messages/index.php:125 +msgid "Unlock thread" +msgstr "ƒƒbƒN‰ðœ" + +#: messages/lock.php:51 lib/Forms/Forum.php:30 +msgid "Update" +msgstr "XV" + +#: config/prefs.php.dist:79 +msgid "Upload your own avatar image." +msgstr "‰»g‰æ‘œ‚ðXV" + +#: scripts/phorum2agora.php:212 +#, php-format +msgid "Usage: %s [OPTIONS]..." +msgstr "Žg—p–@: %s [OPTIONS]..." + +#: ban.php:65 +msgid "User" +msgstr "ƒ†[ƒU" + +#: lib/View.php:58 +msgid "View" +msgstr "•\ަ" + +# +#: messages/index.php:185 +msgid "View bodies" +msgstr "–{•¶•\ަ" + +# +#: threads.php:62 +msgid "Views" +msgstr "•\ަ" + +# +#: messages/merge.php:60 +msgid "With Thread: " +msgstr "ƒXƒŒƒbƒh•\ަ: " + +#: config/prefs.php.dist:190 +msgid "Yes" +msgstr "‚Í‚¢" + +# +#: messages/lock.php:53 +msgid "Yes, allow replies" +msgstr "‚Í‚¢AƒŠƒvƒ‰ƒC‚ð‹–‰Â‚µ‚Ü‚·B" + +#: config/prefs.php.dist:191 +msgid "Yes, and don't thread them" +msgstr "‚Í‚¢AƒXƒŒƒbƒh‰»‚µ‚Ü‚¹‚ñ" + +#: lib/Messages.php:1597 +#, php-format +msgid "You don't have permission to access messages in forum %s." +msgstr "‚ ‚È‚½‚ɂ̓tƒH[ƒ‰ƒ€%s‚̃ƒbƒZ[ƒW‚ɃAƒNƒZƒX‚·‚錠ŒÀ‚ª‚ ‚è‚Ü‚¹‚ñB" + +#: messages/split.php:40 messages/delete.php:43 messages/lock.php:42 +#: messages/merge.php:41 messages/move.php:40 lib/api.php:722 +#: lib/Messages.php:522 lib/Messages.php:619 +#, php-format +msgid "You don't have permission to delete messages in forum %s." +msgstr "‚ ‚È‚½‚ɂ̓tƒH[ƒ‰ƒ€%s‚̃ƒbƒZ[ƒW‚ðíœ‚·‚錠ŒÀ‚ª‚ ‚è‚Ü‚¹‚ñB" + +#: messages/edit.php:41 messages/index.php:199 lib/api.php:587 +#: lib/Messages.php:171 +#, php-format +msgid "You don't have permission to post messages in forum %s." +msgstr "‚ ‚È‚½‚ɂ̓tƒH[ƒ‰ƒ€%s‚É“Še‚·‚錠ŒÀ‚ª‚ ‚è‚Ü‚¹‚ñB" + +#: lib/Messages.php:690 +#, php-format +msgid "You don't have permission to read messages in forum %s." +msgstr "‚ ‚È‚½‚ɂ̓tƒH[ƒ‰ƒ€%s‚̃ƒbƒZ[ƒW‚ð“ǂތ ŒÀ‚ª‚ ‚è‚Ü‚¹‚ñB" + +#: ban.php:30 +#, php-format +msgid "You don't have permissions to ban users from forum %s." +msgstr "‚ ‚È‚½‚ɂ̓tƒH[ƒ‰ƒ€%s‚©‚烆[ƒU‚ð’Ç•ú‚·‚錠ŒÀ‚ª‚ ‚è‚Ü‚¹‚ñB" + +#: editforum.php:35 +#, php-format +msgid "You don't have permissions to create a new forum in %s" +msgstr "‚ ‚È‚½‚É‚Í%s‚ɐV‚µ‚¢ƒtƒH[ƒ‰ƒ€‚ðì¬‚·‚錠ŒÀ‚ª‚ ‚è‚Ü‚¹‚ñB" + +#: deleteforum.php:29 +#, php-format +msgid "You don't have permissions to delete forums in %s" +msgstr "‚ ‚È‚½‚É‚Í%s‚ŃtƒH[ƒ‰ƒ€‚ðíœ‚·‚錠ŒÀ‚ª‚ ‚è‚Ü‚¹‚ñB" + +#: editforum.php:31 +#, php-format +msgid "You don't have permissions to edit forum %s" +msgstr "‚ ‚È‚½‚ɂ̓tƒH[ƒ‰ƒ€%s‚ð•ҏW‚·‚錠ŒÀ‚ª‚ ‚è‚Ü‚¹‚ñB" + +# +#: lib/Agora.php:260 +msgid "_Forums" +msgstr "_FƒtƒH[ƒ‰ƒ€" + +# +#: lib/Agora.php:277 +msgid "_Moderate" +msgstr "_M³”F‹Æ–±" + +# +#: lib/Agora.php:281 +msgid "_Moderators" +msgstr "³”FŽÒŠÇ—" + +# +#: lib/Agora.php:272 +msgid "_New Forum" +msgstr "_NV‹KƒtƒH[ƒ‰ƒ€" + +#: lib/Agora.php:285 +msgid "_Search" +msgstr "_SŒŸõ" + +# +#: lib/Agora.php:265 +msgid "_Threads" +msgstr "_TƒXƒŒƒbƒh" + +#: templates/threads/threads.html:59 templates/forums/forums.html:52 +msgid "by" +msgstr "by" + +# +#: lib/Messages.php:1546 +msgid "download" +msgstr "ƒ_ƒEƒ“ƒ[ƒh" + +#: lib/Tree/flat.php:113 templates/messages/flat.html:22 +#: templates/messages/flat_thread.html:8 +msgid "on: " +msgstr "on: " + +#: lib/Messages.php:1547 +#, php-format +msgid "size: %s" +msgstr "—e—Ê: %s" + +#: lib/Messages.php:1547 +#, php-format +msgid "type: %s" +msgstr "Œ`Ž®: %s" diff --git a/agora/po/lt_LT.po b/agora/po/lt_LT.po new file mode 100644 index 000000000..7e8a1ff8f --- /dev/null +++ b/agora/po/lt_LT.po @@ -0,0 +1,966 @@ +# Lithuanian translations for Agora package. +# Copyright 2007-2009 The Horde Project +# This file is distributed under the same license as the Agora package. +# Vilius Sumskas , 2004, 2007. +# +msgid "" +msgstr "" +"Project-Id-Version: Agora 1.0-cvs\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2007-11-23 14:52+0200\n" +"PO-Revision-Date: 2007-11-23 14:56+0200\n" +"Last-Translator: Vilius Sumskas \n" +"Language-Team: Lithuanian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-13\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%" +"100<10 || n%100>=20) ? 1 : 2);\n" + +#: moderate.php:51 +#, php-format +msgid "%d messages was approved." +msgstr "Patvirtintos(a) %d þinutës(iø)." + +#: moderate.php:57 +#, php-format +msgid "%d messages was deleted." +msgstr "Iðtrintos(a) %d þinutës(iø)." + +#: lib/api.php:813 +msgid "Add a comment" +msgstr "Pridëti komentarà" + +#: lib/api.php:147 +msgid "Admin" +msgstr "Valdymas" + +#: messages/merge.php:69 +msgid "After Message: " +msgstr "Po þinutës: " + +#: forums.php:74 +msgid "All Forums" +msgstr "Visi forumai" + +#: lib/Forms/Forum.php:44 +msgid "Allow attachments in this forum?" +msgstr "Leisti prikabinti failus ðiame forume?" + +#: messages/lock.php:53 +msgid "Allow replies in this thread" +msgstr "Leiti atsakinëti ðioje temoje" + +#: moderate.php:48 moderate.php:69 +msgid "Approve" +msgstr "Patvirtinti" + +#: lib/Comments.php:71 config/prefs.php.dist:103 config/prefs.php.dist:138 +#: config/prefs.php.dist:179 config/prefs.php.dist:267 +msgid "Ascending" +msgstr "Didëjimo tvarka" + +#: lib/Messages.php:1552 +msgid "Attachment" +msgstr "Prikabintas failas" + +#: lib/Comments.php:66 lib/Forms/Search.php:58 +msgid "Author" +msgstr "Autorius" + +#: config/prefs.php.dist:11 +msgid "Avatar" +msgstr "Avataras" + +#: config/prefs.php.dist:67 +#, php-format +msgid "" +"Avatars must be smaller than %s by %s pixels and less than %sKb in size." +msgstr "Avatarai turi bûti maþesni nei %s ir %s pikseliø ir maþesni nei %sKb." + +#: ban.php:58 lib/Messages.php:1497 +msgid "Ban" +msgstr "Blokuoti" + +#: templates/forums/ban.php:10 +msgid "Banned" +msgstr "Blokuotas" + +#: moderate.php:62 +msgid "Body" +msgstr "Turinys" + +#: deleteforum.php:47 lib/api.php:734 messages/move.php:49 +#: messages/delete.php:52 messages/split.php:49 messages/merge.php:50 +#: messages/abuse.php:50 messages/abuse.php:58 +msgid "Cancel" +msgstr "Atðaukti" + +#: lib/Messages.php:1964 +msgid "Cannot create a forum with an empty name." +msgstr "Nepavyko sukurti forumo be pavadinimo." + +#: templates/prefs/avatarselect.inc:8 +msgid "Choose from a gallery of avatars: " +msgstr "Pasirinkite ið avatarø galerijos: " + +#: lib/Comments.php:77 lib/api.php:440 +msgid "Comments" +msgstr "Komentarai" + +#: config/prefs.php.dist:51 +msgid "Comments view" +msgstr "Komentarø vaizdavimas" + +#: editforum.php:44 +#, php-format +msgid "Could not create the forum. %s" +msgstr "Nepavyko sukurti forumo. %s" + +#: deleteforum.php:68 +#, php-format +msgid "Could not delete the forum. %s" +msgstr "Nepavyko iðtrinti forumo. %s" + +#: lib/api.php:717 lib/api.php:728 lib/api.php:742 messages/delete.php:66 +#, php-format +msgid "Could not delete the message. %s" +msgstr "Nepavyko iðtrinti þinutës. %s" + +#: threads.php:33 +#, php-format +msgid "Could not list threads. %s" +msgstr "Nepavyko parodyti temos. %s" + +#: messages/lock.php:62 +#, php-format +msgid "Could not lock the thread. %s" +msgstr "Nepavyko uþrakinti temos. %s" + +#: messages/move.php:33 messages/index.php:36 messages/delete.php:36 +#: messages/lock.php:35 messages/split.php:33 messages/merge.php:34 +#: messages/abuse.php:33 +#, php-format +msgid "Could not open the message. %s" +msgstr "Nepavyko parodyti þinutës. %s" + +#: lib/api.php:581 lib/api.php:634 messages/edit.php:33 messages/edit.php:85 +msgid "Could not post the message: " +msgstr "Nepavyko áraðyti þinutës: " + +#: lib/Forms/Forum.php:30 +msgid "Create" +msgstr "Sukurti" + +#: lib/Messages.php:1548 +msgid "Current attachment" +msgstr "Jau prikabinti failai" + +#: moderate.php:62 forums.php:57 lib/Comments.php:65 lib/Comments.php:84 +#: lib/Comments.php:99 lib/api.php:429 lib/Block/threads.php:125 +#: lib/Block/thread.php:84 lib/Block/forums.php:87 messages/index.php:148 +#: config/prefs.php.dist:94 config/prefs.php.dist:128 +#: config/prefs.php.dist:170 config/prefs.php.dist:258 +msgid "Date" +msgstr "Data" + +#: config/prefs.php.dist:259 +msgid "Default comments view sort:" +msgstr "Standartinis komentarø rûðiavimas:" + +#: config/prefs.php.dist:95 +msgid "Default forums view sort:" +msgstr "Standartinis forumø rûðiavimas:" + +#: config/prefs.php.dist:105 config/prefs.php.dist:140 +#: config/prefs.php.dist:181 config/prefs.php.dist:269 +msgid "Default sorting direction:" +msgstr "Standartinë rûðiavimo kryptis:" + +#: config/prefs.php.dist:171 +msgid "Default thread view sort:" +msgstr "Standartinis vienos temos rûðiavimas:" + +#: config/prefs.php.dist:130 +msgid "Default threads view sort:" +msgstr "Standartinis temø rûðiavimas:" + +#: ban.php:55 moderate.php:54 moderate.php:69 moderators.php:67 +#: deleteforum.php:47 deleteforum.php:65 lib/api.php:734 lib/api.php:739 +#: lib/Messages.php:918 lib/Messages.php:1799 messages/index.php:124 +#: messages/delete.php:52 messages/delete.php:57 +msgid "Delete" +msgstr "Iðtrinti" + +#: lib/api.php:733 messages/delete.php:51 +#, php-format +msgid "Delete \"%s\" and all replies?" +msgstr "Iðtrinti \"%s\" ir visus atsakymus?" + +#: deleteforum.php:45 lib/Messages.php:1495 +msgid "Delete Forum" +msgstr "Iðtrinti forumà" + +#: lib/Messages.php:1799 +msgid "Delete forum" +msgstr "Iðtrinti forumà" + +#: lib/Messages.php:918 +msgid "Delete message" +msgstr "Iðtrinti þinutæ" + +#: lib/Messages.php:1547 +msgid "Delete the existing attachment?" +msgstr "Iðtrinti egzistuojantá prikabintà failà?" + +#: lib/Comments.php:72 config/prefs.php.dist:104 config/prefs.php.dist:139 +#: config/prefs.php.dist:180 config/prefs.php.dist:268 +msgid "Descending" +msgstr "Maþëjimo tvarka" + +#: forums.php:57 +msgid "Description" +msgstr "Apraðymas" + +#: config/prefs.php.dist:21 config/prefs.php.dist:28 config/prefs.php.dist:35 +#: config/prefs.php.dist:43 config/prefs.php.dist:50 +msgid "Display Options" +msgstr "Vaizdavimo nustatymai" + +#: config/prefs.php.dist:248 +msgid "Display full message bodies in the comments view?" +msgstr "Rodyti pilnà þinutës tekstà komentarø sàraðe?" + +#: config/prefs.php.dist:192 +msgid "Display full message bodies in the thread list view?" +msgstr "Rodyti pilnà þinutæ temos þinuèiø sàraðe?" + +#: config/prefs.php.dist:211 +msgid "Display graphical emoticons?" +msgstr "Rodyti grafines ðypsenëles?" + +#: lib/Messages.php:914 lib/Messages.php:1793 messages/index.php:121 +msgid "Edit" +msgstr "Redaguoti" + +#: editforum.php:25 lib/Messages.php:1492 +msgid "Edit Forum" +msgstr "Forumo redagavimas" + +#: lib/api.php:609 +msgid "Edit Message" +msgstr "Þinutës redagavimas" + +#: messages/edit.php:72 +#, php-format +msgid "Edit Message in \"%s\"" +msgstr "Þinutës redagavimas forume \"%s\"" + +#: lib/api.php:811 +msgid "Edit a comment" +msgstr "Redaguoti komentarà" + +#: lib/Messages.php:1793 +msgid "Edit forum" +msgstr "Redaguoti forumà" + +#: lib/Messages.php:914 +msgid "Edit message" +msgstr "Redaguoti þinutæ" + +#: lib/Forms/Forum.php:41 +msgid "Enter a brief description of this forum" +msgstr "Áraðykite trumpà forumo apraðymà" + +#: lib/Comments.php:58 messages/index.php:170 config/prefs.php.dist:246 +msgid "Flat" +msgstr "Plokðèias" + +#: moderate.php:62 moderators.php:79 moderators.php:82 forums.php:57 +#: lib/Block/threads.php:46 lib/Block/forums.php:87 +#: templates/moderators/moderators.php:8 messages/move.php:54 +#: config/prefs.php.dist:90 +msgid "Forum" +msgstr "Forumas" + +#: lib/api.php:711 lib/Messages.php:1711 +#, php-format +msgid "Forum %s does not exist." +msgstr "Forumas %s neegzistuoja." + +#: editforum.php:47 +msgid "Forum Modified" +msgstr "Forumas keistas" + +#: editforum.php:47 +msgid "Forum created." +msgstr "Forumas sukurtas." + +#: deleteforum.php:70 +msgid "Forum deleted." +msgstr "Forumas iðtrintas." + +#: deleteforum.php:51 lib/Forms/Forum.php:33 +#: templates/moderators/moderators.php:9 +msgid "Forum name" +msgstr "Forumo pavadinimas" + +#: deleteforum.php:73 +msgid "Forum not deleted." +msgstr "Forumas neiðtrintas." + +#: lib/api.php:148 lib/Block/forums.php:3 lib/Block/forums.php:28 +#: templates/forums/forums.php:9 +msgid "Forums" +msgstr "Forumai" + +#: config/prefs.php.dist:22 +msgid "Forums View" +msgstr "Forumo rodymas" + +#: lib/Messages.php:1529 +msgid "From" +msgstr "Nuo" + +#: templates/threads/threads.php:43 +msgid "Goto page:" +msgstr "Eiti á puslapá:" + +#: messages/index.php:160 messages/index.php:169 +msgid "Hide bodies" +msgstr "Paslëpti þinuèiø tekstà" + +#: lib/Messages.php:832 +msgid "Hot thread" +msgstr "Daþna tema" + +#: lib/Forms/Forum.php:44 +msgid "If selected users will be able to attach files to their messages." +msgstr "" +"Jeigu pasirinksite, vartotojai galës prikabinti failus prie savo þinuèiø." + +#: messages/edit.php:114 +msgid "" +"Invalid parent message, you will be posting this message as a new thread." +msgstr "Neteisinga tëviðkoji þinutë, ði þinutë bus paskelbta kaip nauja tema." + +#: lib/Forms/Forum.php:42 +msgid "Is this a moderated forum?" +msgstr "Ar tai moderuojamas forumas?" + +#: lib/Forms/Search.php:46 +msgid "Keywords" +msgstr "Þodþiai" + +#: config/prefs.php.dist:92 +msgid "Last Message" +msgstr "Paskutinë þinutë" + +#: forums.php:57 lib/Block/forums.php:87 +msgid "Last Post" +msgstr "Paskutinë þinutë" + +#: threads.php:62 config/prefs.php.dist:129 +msgid "Last post" +msgstr "Paskutinë þinutë" + +#: lib/Messages.php:922 +msgid "Lock" +msgstr "Uþrakinti" + +#: messages/index.php:127 +msgid "Lock thread" +msgstr "Uþrakinti temà" + +#: messages/lock.php:50 +#, php-format +msgid "Locking thread \"%s\"" +msgstr "Temos \"%s\" rakinimas" + +#: lib/Agora.php:361 +msgid "Malformed avatar." +msgstr "Neteisingas avataras." + +#: lib/Agora.php:384 +msgid "Malformed database entry." +msgstr "Neteisingas duomenø bazës áraðas." + +#: lib/Messages.php:933 messages/merge.php:50 messages/merge.php:76 +msgid "Merge" +msgstr "Sujungti" + +#: messages/merge.php:49 +#, php-format +msgid "Merge \"%s\" with another thread" +msgstr "Sujungti \"%s\" su kita tema" + +#: lib/Messages.php:1542 +msgid "Message" +msgstr "Þinutë" + +#: messages/abuse.php:80 +#, php-format +msgid "Message %s reported as abuse" +msgstr "Þinutë %s paskelbta kaip nepageidaujama." + +#: lib/Messages.php:500 +#, php-format +msgid "Message ID \"%d\" not found" +msgstr "Þinutë, kurios ID \"%d\", nërasta" + +#: config/prefs.php.dist:44 +msgid "Message View" +msgstr "Þinutës rodymas" + +#: lib/api.php:744 messages/delete.php:68 +msgid "Message deleted." +msgstr "Þinutë iðtrinta." + +#: lib/api.php:749 messages/delete.php:58 +msgid "Message not deleted." +msgstr "Þinutë neiðtrinta." + +#: lib/api.php:636 messages/edit.php:87 +msgid "Message posted." +msgstr "Þinutë áraðyta." + +#: config/prefs.php.dist:91 +msgid "Messages" +msgstr "Þinutës" + +#: moderate.php:81 templates/moderate/moderate.php:9 +msgid "Messages Awaiting Moderation" +msgstr "Þinutës laukianèios patvirtinimo" + +#: lib/Messages.php:1818 +msgid "Moderate" +msgstr "Moderuoti" + +#: moderators.php:77 lib/Tree/flat.php:117 +#: templates/messages/flat_thread.php:10 templates/messages/flat.php:25 +#: templates/messages/message.php:21 +msgid "Moderator" +msgstr "Moderatorius" + +#: moderators.php:71 templates/moderators/moderators.php:4 +#: templates/moderators/moderators.php:10 templates/forums/forums.php:39 +msgid "Moderators" +msgstr "Moderatoriai" + +#: lib/Messages.php:929 messages/move.php:49 messages/move.php:61 +msgid "Move" +msgstr "Perkelti" + +#: messages/move.php:48 +#, php-format +msgid "Move \"%s\" to another forum" +msgstr "Perkelti \"%s\" á kità forumà" + +#: config/prefs.php.dist:10 +msgid "My Information" +msgstr "Mano informacija" + +#: editforum.php:25 +msgid "New Forum" +msgstr "Naujas forumas" + +#: lib/Messages.php:1788 +msgid "New Post" +msgstr "Nauja þinutë" + +#: lib/Agora.php:267 +msgid "New Thread" +msgstr "Nauja tema" + +#: lib/Messages.php:833 +msgid "New posts" +msgstr "Naujos þinutës" + +#: config/prefs.php.dist:189 +msgid "No" +msgstr "Ne" + +#: lib/Block/threads.php:121 +msgid "No available threads." +msgstr "Temø nëra." + +#: lib/Block/threads.php:100 +msgid "No forum selected" +msgstr "Nepasirinktas forumas" + +#: templates/forums/forums.php:64 +msgid "No forums have been created." +msgstr "Forumø nëra." + +#: config/prefs.php.dist:209 +msgid "No graphical emoticons" +msgstr "Nerodyti grafiniø ðypsenëliø" + +#: moderate.php:40 +msgid "No messages are waiting for moderation." +msgstr "Þinuèiø laukianèiø moderavimo nëra." + +#: messages/abuse.php:41 +msgid "No moderators are associated with this forum." +msgstr "Ðiam forumui nepaskirtas joks moderatorius." + +#: templates/moderators/moderators.php:27 +msgid "No moderators have been created." +msgstr "Moderatoriø nëra." + +#: templates/block/threads.php:32 +msgid "No threads" +msgstr "Temø nëra" + +#: messages/lock.php:53 +msgid "No, do not allow replies" +msgstr "Ne, neleisti atsakinëti" + +#: config/prefs.php.dist:114 +msgid "Number of forums to display on each page" +msgstr "Forumø skaièius viename puslapyje" + +#: config/prefs.php.dist:201 +msgid "Number of message to display on each page" +msgstr "Þinuèiø skaièius viename puslapyje" + +#: config/prefs.php.dist:157 config/prefs.php.dist:278 +msgid "Number of messages to display on each page" +msgstr "Þinuèiø skaièius viename puslapyje" + +#: config/prefs.php.dist:148 +msgid "Number of views in 24hrs to trigger a 'hot-thread':" +msgstr "Parodymø skaièius per 24 val., kad tema bûtø paskelbta kaip 'daþna':" + +#: lib/Block/forums.php:35 +msgid "Only display this many forums (0 to display all forums)" +msgstr "Rodyti tik tiek forumø (0 rodo visus)" + +#: lib/Block/threads.php:53 +msgid "Only display this many threads (0 to display all threads)" +msgstr "Rodyti tik tiek temø (0 rodo visas)" + +#: templates/forums/forums.php:34 +msgid "Options" +msgstr "Nustatymai" + +#: lib/Messages.php:880 +#, php-format +msgid "Page %d" +msgstr "%d puslapis" + +#: lib/Forms/Forum.php:36 +msgid "Parent forum" +msgstr "Tëviðkasis forumas" + +#: lib/Messages.php:1511 +msgid "Post" +msgstr "Áraðyti" + +#: lib/api.php:609 +msgid "Post a New Message" +msgstr "Sukurti naujà þinutæ" + +#: messages/edit.php:73 +#, php-format +msgid "Post a New Message to \"%s\"" +msgstr "Naujos þinutës raðymas forume \"%s\"" + +#: messages/index.php:215 messages/edit.php:71 +#, php-format +msgid "Post a Reply to \"%s\"" +msgstr "Atsakymo raðymas á \"%s\"" + +#: lib/Messages.php:1487 lib/Messages.php:1788 +msgid "Post message" +msgstr "Sukurti þinutæ" + +#: moderate.php:62 forums.php:57 lib/Comments.php:82 lib/Comments.php:98 +#: lib/api.php:427 lib/Block/threads.php:125 lib/Block/thread.php:84 +#: lib/Block/forums.php:87 lib/Tree/flat.php:112 +#: templates/messages/flat_thread.php:7 templates/messages/flat.php:21 +#: messages/index.php:148 config/prefs.php.dist:93 config/prefs.php.dist:126 +#: config/prefs.php.dist:169 config/prefs.php.dist:257 +msgid "Posted by" +msgstr "Autorius" + +#: lib/Messages.php:545 messages/index.php:89 +#, php-format +msgid "Posted by %s on %s" +msgstr "Autorius %s %s" + +#: threads.php:62 forums.php:57 lib/Block/forums.php:87 +#: config/prefs.php.dist:127 +msgid "Posts" +msgstr "Þinutës" + +#: lib/Messages.php:1534 +msgid "Quote" +msgstr "Cituoti" + +#: lib/Messages.php:902 messages/index.php:115 +msgid "Reply" +msgstr "Atsakyti" + +#: lib/Messages.php:902 +msgid "Reply to message" +msgstr "Atsakyti á þinutæ" + +#: lib/Messages.php:908 messages/abuse.php:49 messages/abuse.php:50 +msgid "Report as abuse" +msgstr "Paskelbti kaip nepageidaujamà" + +#: lib/Forms/Search.php:47 +msgid "Require all keywords?" +msgstr "Reikalauti visø raktiniø þodþiø?" + +#: lib/Messages.php:1511 +msgid "Save" +msgstr "Iðsaugoti" + +#: lib/Forms/Search.php:60 +msgid "Search" +msgstr "Ieðkoti" + +#: search.php:71 lib/Forms/Search.php:36 +msgid "Search Forums" +msgstr "Paieðka forumuose" + +#: templates/search/search.php:5 +msgid "Search Results" +msgstr "Paieðkos rezultatai" + +#: lib/Forms/Search.php:55 +msgid "Search in message contents?" +msgstr "Ieðkoti þinutës tekste?" + +#: lib/Forms/Search.php:51 +msgid "Search in subjects?" +msgstr "Ieðkoti pavadinimuose?" + +#: lib/Forms/Search.php:40 +msgid "Search in these forums" +msgstr "Ieðkoti ðiuose forumuose" + +#: config/prefs.php.dist:12 +msgid "Set the avatar image that is shown with your posts." +msgstr "Avataro paveiksliuko, kuris rodomas jûsø þinutëse, nustatymas." + +#: lib/Forms/Forum.php:42 +msgid "" +"Set this if you want all messages to be checked by a moderator before they " +"are posted." +msgstr "" +"Paþymëkite tai, jeigu norite, kad visos þinutës prieð patekdamos á forumà, " +"bûtø patikrinamos moderatoriø." + +#: config/prefs.php.dist:23 +msgid "Set your options for the forums view." +msgstr "Forumø vaizdavimo nustatymø keitimas." + +#: config/prefs.php.dist:45 +msgid "Set your options for the message view." +msgstr "Þinutës vaizdavimo nustatymø keitimas." + +#: config/prefs.php.dist:37 config/prefs.php.dist:52 +msgid "Set your options for the single thread view." +msgstr "Vienos temos vaizdavimo nustatymø keitimas." + +#: config/prefs.php.dist:30 +msgid "Set your options for the threads view." +msgstr "Temø vaizdavimo nustatymø keitimas." + +#: config/prefs.php.dist:210 +msgid "Show graphical emoticons" +msgstr "Rodyti grafines ðypsenëles" + +#: lib/Block/thread.php:3 lib/Block/thread.php:53 +msgid "Single Thread" +msgstr "Viena tema" + +#: config/prefs.php.dist:36 +msgid "Single Thread View" +msgstr "Vienos temos rodymas" + +#: lib/Agora.php:206 +msgid "Sort Ascending" +msgstr "Surûðiuoti didëjanèia tvarka" + +#: lib/Agora.php:206 +msgid "Sort Descending" +msgstr "Surûðiuoti maþëjanèia tvarka" + +#: lib/Comments.php:63 +msgid "Sort by" +msgstr "Rûðiuoti pagal" + +#: lib/Agora.php:214 lib/Agora.php:221 +#, php-format +msgid "Sort by %s" +msgstr "Rûðiuoti pagal %s" + +#: lib/Comments.php:69 +msgid "Sort direction" +msgstr "Rûðiavimo kryptis" + +#: lib/Messages.php:1556 lib/Forms/Message.php:26 +msgid "Spam protection" +msgstr "Apsauga nuo ðiukðliø" + +#: lib/Messages.php:938 messages/split.php:49 messages/split.php:57 +msgid "Split" +msgstr "Iðskirti" + +#: messages/split.php:48 +#, php-format +msgid "Split \"%s\"" +msgstr "Iðskirti \"%s\"" + +#: threads.php:62 +msgid "Started" +msgstr "Autorius" + +#: deleteforum.php:59 +msgid "Subforums" +msgstr "Subforumai" + +#: moderate.php:62 threads.php:62 lib/Comments.php:67 lib/Comments.php:80 +#: lib/Comments.php:97 lib/api.php:425 lib/Messages.php:1536 +#: lib/Messages.php:1539 lib/Block/threads.php:125 lib/Block/thread.php:84 +#: messages/index.php:148 config/prefs.php.dist:125 config/prefs.php.dist:168 +#: config/prefs.php.dist:256 +msgid "Subject" +msgstr "Tema" + +#: lib/Agora.php:243 +msgid "The VFS backend needs to be configured to enable attachment uploads." +msgstr "Prikabintø failø galimybei turi bûti ájungta VFS posistemë." + +#: config/prefs.php.dist:64 +msgid "The location of your avatar image." +msgstr "Jûsø avataro paveiksliuko vieta." + +#: lib/Block/forums.php:78 +msgid "There are no forums." +msgstr "Forumø nëra." + +#: templates/threads/threads.php:72 +msgid "There are no threads in this forum." +msgstr "Ðiame forume temø nëra." + +#: lib/Messages.php:166 +msgid "This thread has been locked." +msgstr "Ði tema yra uþrakinta." + +#: deleteforum.php:50 +msgid "This will delete the forum, any subforums and all relative messages." +msgstr "" +"Tai iðtrins ðá forumà, bet kokius gilesnius forumus ir visas susijusias " +"þinutes." + +#: lib/Comments.php:59 lib/Comments.php:96 lib/Block/thread.php:33 +#: lib/Block/thread.php:84 messages/index.php:148 messages/index.php:161 +#: config/prefs.php.dist:124 config/prefs.php.dist:167 +#: config/prefs.php.dist:247 +msgid "Thread" +msgstr "Temø grupës" + +#: messages/merge.php:81 +#, php-format +msgid "Thread %s merged with thread %s after message %s." +msgstr "Tema %s sujungta su tema %s po þinutës %s." + +#: messages/move.php:66 +#, php-format +msgid "Thread %s moved to from forum %s to %s." +msgstr "Tema %s perkelta ið forumo %s á %s." + +#: lib/Block/thread.php:91 templates/messages/index.php:9 +msgid "Thread List" +msgstr "Þinuèiø sàraðas" + +#: templates/messages/message.php:34 +msgid "Thread Summary" +msgstr "Temos santrumpa" + +#: messages/delete.php:73 +msgid "Thread deleted." +msgstr "Tema iðtrinta." + +#: messages/index.php:207 messages/lock.php:65 +msgid "Thread locked." +msgstr "Tema uþrakinta." + +#: messages/split.php:62 +#, php-format +msgid "Thread splitted by message %s." +msgstr "Tema iðskirta þinute %s." + +#: messages/lock.php:67 +msgid "Thread unlocked." +msgstr "Tema atrakinta." + +#: forums.php:57 lib/Block/threads.php:3 lib/Block/threads.php:72 +#: lib/Block/threads.php:78 +msgid "Threads" +msgstr "Temos" + +#: config/prefs.php.dist:29 +msgid "Threads View" +msgstr "Temø rodymas" + +#: lib/Block/threads.php:82 +#, php-format +msgid "Threads in \"%s\"" +msgstr "\"%s\" temos" + +#: threads.php:69 threads.php:81 +#, php-format +msgid "Threads in %s" +msgstr "%s temos" + +#: lib/Block/thread.php:72 +msgid "Unable to fetch selected thread." +msgstr "Nepavyko parodyti pasirinktos temos." + +#: lib/Block/threads.php:106 +msgid "Unable to fetch threads for selected forum." +msgstr "Nepavyko parodyti temø pasirinktame forume." + +#: lib/Messages.php:922 +msgid "Unlock" +msgstr "Atrakinti" + +#: messages/index.php:127 +msgid "Unlock thread" +msgstr "Atrakinti temà" + +#: lib/Forms/Forum.php:30 messages/lock.php:51 +msgid "Update" +msgstr "Atnaujinti" + +#: config/prefs.php.dist:79 +msgid "Upload your own avatar image." +msgstr "Ákelkite savo avataro paveiksliukà." + +#: ban.php:65 +msgid "User" +msgstr "Vartotojas" + +#: lib/Comments.php:57 +msgid "View" +msgstr "Rodyti" + +#: messages/index.php:187 +msgid "View bodies" +msgstr "Rodyti þinuèiø turiná" + +#: threads.php:62 +msgid "Views" +msgstr "Rodymas" + +#: messages/merge.php:60 +msgid "With Thread: " +msgstr "Su tema: " + +#: config/prefs.php.dist:190 +msgid "Yes" +msgstr "Taip" + +#: messages/lock.php:53 +msgid "Yes, allow replies" +msgstr "Taip, leisti atsakinëti" + +#: config/prefs.php.dist:191 +msgid "Yes, and don't thread them" +msgstr "Taip, ir nerodo sàryðiø" + +#: lib/Messages.php:1696 +#, php-format +msgid "You don't have permission to access messages in forum %s." +msgstr "Jûs neturite teisiø perþiûrëti þinutes forume %s." + +#: lib/api.php:722 lib/Messages.php:566 lib/Messages.php:730 +#: messages/move.php:40 messages/delete.php:43 messages/lock.php:42 +#: messages/split.php:40 messages/merge.php:41 +#, php-format +msgid "You don't have permission to delete messages in forum %s." +msgstr "Jûs neturite teisiø iðtrinti þinutes ið forumo %s." + +#: lib/api.php:587 lib/Messages.php:171 messages/index.php:201 +#: messages/edit.php:41 +#, php-format +msgid "You don't have permission to post messages in forum %s." +msgstr "Jûs neturite teisiø raðyti þinuèiø á forumà %s." + +#: lib/Messages.php:804 +#, php-format +msgid "You don't have permission to read messages in forum %s." +msgstr "Jûs neturite teisiø skaityti þinutes forume %s." + +#: ban.php:30 +#, php-format +msgid "You don't have permissions to ban users from forum %s." +msgstr "Jûs neturite teisiø blokuoti vartotojø forume %s." + +#: editforum.php:35 +#, php-format +msgid "You don't have permissions to create a new forum in %s" +msgstr "Jûs neturite teisiø kurti naujø forumø forume %s" + +#: deleteforum.php:29 +#, php-format +msgid "You don't have permissions to delete forums in %s" +msgstr "Jûs neturite teisiø trinti forumø ið forumo %s" + +#: editforum.php:31 +#, php-format +msgid "You don't have permissions to edit forum %s" +msgstr "Jûs neturite teisiø keisti forumo %s" + +#: lib/Agora.php:260 +msgid "_Forums" +msgstr "Forumai" + +#: lib/Agora.php:277 +msgid "_Moderate" +msgstr "Moderuoti" + +#: lib/Agora.php:281 +msgid "_Moderators" +msgstr "Moderatoriai" + +#: lib/Agora.php:272 +msgid "_New Forum" +msgstr "Naujas forumas" + +#: lib/Agora.php:285 +msgid "_Search" +msgstr "Ieðkoti" + +#: lib/Agora.php:265 +msgid "_Threads" +msgstr "Temos" + +#: templates/threads/threads.php:59 templates/forums/forums.php:51 +msgid "by" +msgstr " " + +#: lib/Messages.php:1645 +msgid "download" +msgstr "atsisiøsti" + +#: lib/Tree/flat.php:113 templates/messages/flat_thread.php:8 +#: templates/messages/flat.php:22 +msgid "on: " +msgstr ": " + +#: lib/Messages.php:1646 +#, php-format +msgid "size: %s" +msgstr "dydis: %s" + +#: lib/Messages.php:1646 +#, php-format +msgid "type: %s" +msgstr "tipas: %s" diff --git a/agora/po/ro_RO.po b/agora/po/ro_RO.po new file mode 100644 index 000000000..56ddba2c4 --- /dev/null +++ b/agora/po/ro_RO.po @@ -0,0 +1,263 @@ +# Romanian translations for Agora package. +# Copyright 2003-2009 The Horde Project +# This file is distributed under the same license as the Agora package. +# Eugen Hoanca , 2003. +# +msgid "" +msgstr "" +"Project-Id-Version: Agora 0.0.1\n" +"POT-Creation-Date: 2003-03-04 13:46+0100\n" +"PO-Revision-Date: 2003-03-24 15:16+0200\n" +"Last-Translator: Eugen Hoanca \n" +"Language-Team: Romanian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#: managemessage.php:96 +msgid "... as a reply to message" +msgstr "... ca raspuns la mesaj" + +#: lib/Agora.php:180 lib/Menu.php:76 +msgid "Add Forum" +msgstr "Adauga forum" + +#: templates/index/notconfigured.inc:4 +msgid "Agora is not properly configured" +msgstr "Agora nu este corect configurat" + +#: lib/ManageMessage.php:46 forums.php:58 +msgid "Author" +msgstr "Autor" + +#: lib/Agora.php:102 +msgid "Can not create a forum with an empty name." +msgstr "Nu se poate crea un forum fara nume." + +#: lib/Agora.php:111 +msgid "Can not create a message thread without message id." +msgstr "Nu se poate crea un fir fara identificator de mesaj." + +#: manageforum.php:82 +msgid "Could not create the forum. %s" +msgstr "Nu se poate crea forumul. %s" + +#: managemessage.php:79 +msgid "Could not submit the message. %s" +msgstr "Nu s-a putut trimite mesajul. %s" + +#: manageforum.php:64 +msgid "Create a New Forum" +msgstr "Creare forum nou" + +#: lib/ManageForum.php:31 +msgid "Creating a subforum of %s." +msgstr "Creare subforum al %s." + +#: lib/ManageMessage.php:47 forums.php:58 +msgid "Date" +msgstr "Data" + +#: lib/ManageForum.php:35 +msgid "Enter a brief description of this forum" +msgstr "Introduceti o scurta descriere a acestui forum" + +#: forums.php:52 +msgid "Forum" +msgstr "Forum" + +#: manageforum.php:86 +msgid "Forum Details" +msgstr "Detalii forum" + +#: lib/Agora.php:173 lib/Menu.php:62 +msgid "Forum Home" +msgstr "Pagina principala forum" + +#: manageforum.php:84 +msgid "Forum created." +msgstr "Forum creat." + +#: lib/ManageForum.php:33 +msgid "Forum name" +msgstr "Nume forum" + +#: forums.php:51 +msgid "Forums" +msgstr "Forumuri" + +#: lib/api.php:54 +msgid "Forums Summary" +msgstr "Cuprins forumuri" + +#: lib/ManageForum.php:34 +msgid "Is this a moderated forum?" +msgstr "Este forum moderat?" + +#: config/prefs.php.dist:6 +msgid "Language" +msgstr "Limba" + +#: forums.php:52 +msgid "Last Message" +msgstr "Ultimul mesaj" + +#: lib/Menu.php:102 +msgid "Login" +msgstr "Intrare" + +#: lib/Menu.php:99 +msgid "Logout" +msgstr "Iesire" + +#: lib/Agora.php:248 +msgid "Main" +msgstr "Principal" + +#: manageforum.php:37 +msgid "Manage Forums" +msgstr "Administrare forumuri" + +#: managemessage.php:39 +msgid "Manage Messages" +msgstr "Administrare mesaje" + +#: lib/ManageMessage.php:28 lib/ManageMessage.php:48 managemessage.php:83 +msgid "Message" +msgstr "Mesaj" + +#: lib/ManageMessage.php:27 +msgid "Message subject" +msgstr "Subiect mesaj" + +#: managemessage.php:81 +msgid "Message submitted." +msgstr "Mesaj trimis" + +#: forums.php:52 +msgid "Messages" +msgstr "Mesaje" + +#: lib/Agora.php:176 +msgid "Moderated" +msgstr "Moderat" + +#: lib/Block/summary.php:41 +msgid "New Forum" +msgstr "Forum nou" + +#: lib/Agora.php:183 lib/Menu.php:84 +msgid "New Message" +msgstr "Mesaj nou" + +#: lib/Block/summary.php:57 +msgid "No forums available." +msgstr "Nu exista forumuri disponibile." + +#: lib/Agora.php:178 +msgid "Permissions" +msgstr "Permisiuni" + +#: managemessage.php:66 +msgid "Post a New Message" +msgstr "Publicare mesaj nou" + +#: forums.php:52 +msgid "Posted By" +msgstr "Publicat de" + +#: managemessage.php:99 +msgid "Re: %s" +msgstr "Re: %s" + +#: lib/Agora.php:186 lib/Menu.php:92 +msgid "Reply" +msgstr "Raspuns" + +#: config/prefs.php.dist:16 +msgid "Select your preferred language:" +msgstr "Selecteaza limba favorita:" + +#: lib/ManageForum.php:34 +msgid "" +"Set this if you want all messages to be checked by a moderator before they " +"are posted" +msgstr "" +"Setare pentru ca toate mesajele sa fie verificate de un moderator inainte " +"de a fi publicate." + +#: config/prefs.php.dist:7 +msgid "Set your preferred display language." +msgstr "Setare limba favorita pentru afisare." + +#: templates/index/notconfigured.inc:40 +msgid "Some of Agora's configuration files are missing:" +msgstr "Anumite fisiere de configurare agora lipsesc:" + +#: templates/index/notconfigured.inc:69 +msgid "" +"Some of the HTML templates in agora/config/templates/ are missing. These " +"files control the look and feel of Agora." +msgstr "" +"Cateva din fisierele HTML predefinite din agora/config/templates lipsesc. " +"Aceste fisiere seteaza afisajul Agorei." + +#: lib/ManageForum.php:36 +msgid "Store" +msgstr "Stocare" + +#: lib/ManageMessage.php:45 forums.php:58 +msgid "Subject" +msgstr "Subiect" + +#: lib/ManageMessage.php:29 +msgid "Submit" +msgstr "Trimitere" + +#: templates/index/notconfigured.inc:59 +msgid "" +"This file controls the default preferences for Agora, and also controls " +"which preferences users can alter." +msgstr "" +"Acest fisier controleaza atat preferintele implicite pentru Agora, precum si " +"alte preferinte pentru utilizatori." + +#: templates/index/notconfigured.inc:52 +msgid "" +"This file controls the stylesheet that is used to set colors and fonts in " +"addition to or overriding Horde defaults." +msgstr "" +"Acest fisier controleaza schema de culori si fonturi diferite de cele " +"implicite Horde." + +#: managemessage.php:59 manageforum.php:57 +msgid "This forum has been deleted." +msgstr "Acest forum a fost sters." + +#: managemessage.php:57 manageforum.php:55 +msgid "This forum has been deleted. %s" +msgstr "Acest forum a fost sters. %s" + +#: templates/index/notconfigured.inc:45 +msgid "" +"This is the main Agora configuration file. It contains options for all Agora " +"scripts." +msgstr "" +"Acesta este principalul fisier de configurare Agora. Contine optiuni pentru " +"toate scripturile Agora." + +#: lib/Menu.php:68 +msgid "Thread Home" +msgstr "Pagina principala de fire" + +#: forums.php:57 +msgid "Threads" +msgstr "Fire" + +#: lib/Agora.php:67 +msgid "You must configure a Horde Categories backend to use Agora." +msgstr "Trebuie configurate Categoriile Horde pentru a utiliza Agora." + +#: config/prefs.php.dist:5 +msgid "Your Information" +msgstr "Detalii Personale" diff --git a/agora/po/sl_SI.po b/agora/po/sl_SI.po new file mode 100644 index 000000000..0a41f3f56 --- /dev/null +++ b/agora/po/sl_SI.po @@ -0,0 +1,1032 @@ +# translation of obala_agora_sl_SI.po to Slovene +# Automatically generated, 2006. +# Marko McLion , 2007. +# Slovenian translations for Agora packaga +# Slovenski prevod Agora paketa +# Copyright 2006-2009 The Horde Project +# This file is distributed under the same license as the horde package. +msgid "" +msgstr "" +"Project-Id-Version: obala_agora_sl_SI\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2008-10-28 19:25+0100\n" +"PO-Revision-Date: 2007-01-15 00:33+0100\n" +"Last-Translator: Marko McLion \n" +"Language-Team: Slovene \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: moderate.php:36 +#, php-format +msgid "%d messages was approved." +msgstr "Potrjeniih je bilo %d sporočil." + +#: moderate.php:42 +#, php-format +msgid "%d messages was deleted." +msgstr "Izbrisanji je bilo %d sporočil." + +#: scripts/phorum2agora.php:218 +msgid "-a, --agora_id[=aid] Agora forum id to save message to" +msgstr "" +"-a, --agora_id[=aid] Id Agora foruma v katerega shranimo sporočilo" + +#: scripts/phorum2agora.php:221 +msgid "-c, --count[=messages] Number of messages to move at once" +msgstr "" +"-c, --count[=messages] Å tevilo sporočil, ki jih premaknem naenkrat" + +#: scripts/phorum2agora.php:220 +msgid "" +"-f, --from[=offset] Offset from where to start to read messages" +msgstr "-f, --from[=offset] Zamik od katerega začnem branje sporočil" + +#: scripts/phorum2agora.php:216 +msgid "-h, --help Show this help" +msgstr "-h, --help Prikaži to pomoč" + +#: scripts/phorum2agora.php:217 +msgid "-p, --phorum_id[=pid] Phorum forum id to read message from" +msgstr "" +"-p, --phorum_id[=pid] Id Phorum foruma iz katerega preberem sporočila" + +#: scripts/phorum2agora.php:219 +msgid "-t, --phorum_table[=table] Phorum messages tablename" +msgstr "-t, --phorum_table[=table] Ime tabele Phorum sporočila" + +#: lib/api.php:854 +msgid "Add a comment" +msgstr "Dodaj komentar" + +#: lib/api.php:164 +msgid "Admin" +msgstr "Urednik" + +#: messages/merge.php:66 +msgid "After Message: " +msgstr "Po sporočilu: " + +#: forums.php:72 +msgid "All Forums" +msgstr "Vse table" + +#: lib/Forms/Forum.php:41 +msgid "Allow attachments in this forum?" +msgstr "Dovolim pripenjanje datotek v tej tabli?" + +#: messages/lock.php:51 +msgid "Allow replies in this thread" +msgstr "Dovoli ogovarjanje na to temo" + +#: moderate.php:33 moderate.php:69 +msgid "Approve" +msgstr "Potrdi" + +#: lib/Comments.php:73 config/prefs.php.dist:92 config/prefs.php.dist:127 +#: config/prefs.php.dist:168 config/prefs.php.dist:256 +msgid "Ascending" +msgstr "Naraščajoč" + +#: lib/Messages.php:1543 +msgid "Attachment" +msgstr "Priponka" + +#: lib/Comments.php:68 lib/Forms/Search.php:55 +msgid "Author" +msgstr "Avtor" + +#: config/prefs.php.dist:11 +msgid "Avatar" +msgstr "Avatar" + +#: config/prefs.php.dist:64 +#, php-format +msgid "" +"Avatars must be smaller than %s by %s pixels and less than %sKb in size." +msgstr "Avatar mora biti manjÅ¡i od %s x %s pik in manjÅ¡i od %sKb velikosti." + +#: ban.php:58 lib/Messages.php:1488 +msgid "Ban" +msgstr "Izobči" + +#: templates/ban.html.php:10 +msgid "Banned" +msgstr "Izobčeni" + +#: moderate.php:62 +msgid "Body" +msgstr "Vsebina" + +#: deleteforum.php:45 messages/abuse.php:48 messages/abuse.php:56 +#: messages/merge.php:47 messages/move.php:47 messages/delete.php:49 +#: messages/split.php:47 lib/api.php:775 +msgid "Cancel" +msgstr "Prekliči" + +#: lib/Messages.php:1919 +msgid "Cannot create a forum with an empty name." +msgstr "Ne morem ustvariti table brez imena." + +#: templates/prefs/avatarselect.inc:8 +msgid "Choose from a gallery of avatars: " +msgstr "Izberi avatar iz galerije: " + +#: lib/Comments.php:81 lib/api.php:483 +msgid "Comments" +msgstr "Komentarji" + +#: rss/threads.php:54 +msgid "Comments on %s" +msgstr "Komentarji na %s" + +#: config/prefs.php.dist:48 +msgid "Comments view" +msgstr "Pregled komentarjev" + +#: editforum.php:44 +#, php-format +msgid "Could not create the forum. %s" +msgstr "Ne morem ustvariti table. %s" + +#: deleteforum.php:66 +#, php-format +msgid "Could not delete the forum. %s" +msgstr "Ne morem izbrisati table. %s" + +#: messages/delete.php:63 lib/api.php:758 lib/api.php:769 lib/api.php:783 +#, php-format +msgid "Could not delete the message. %s" +msgstr "Ne morem izbrisati sporočila. %s" + +#: threads.php:32 +#, php-format +msgid "Could not list threads. %s" +msgstr "Ne morem izpisati tem. %s" + +#: messages/lock.php:60 +#, php-format +msgid "Could not lock the thread. %s" +msgstr "Ne morem zakleniti teme. %s" + +#: messages/abuse.php:31 messages/merge.php:31 messages/move.php:31 +#: messages/index.php:34 messages/lock.php:33 messages/delete.php:33 +#: messages/split.php:31 +#, php-format +msgid "Could not open the message. %s" +msgstr "Ne morem odpreti sporočila. %s" + +#: messages/edit.php:31 messages/edit.php:83 lib/api.php:623 lib/api.php:676 +msgid "Could not post the message: " +msgstr "Ne morem shraniti sporočila: " + +#: scripts/phorum2agora.php:65 +msgid "Couldn't read command-line options." +msgstr "Ni moč prebrati ukazov iz ukazne vrstice." + +#: lib/Forms/Forum.php:26 +msgid "Create" +msgstr "Ustvari" + +#: lib/Messages.php:1539 +msgid "Current attachment" +msgstr "Trenutna priponka" + +#: owner.php:63 forums.php:55 moderate.php:62 messages/index.php:142 +#: lib/Comments.php:67 lib/Comments.php:87 lib/api.php:473 +#: lib/Block/threads.php:122 lib/Block/forums.php:86 lib/Block/thread.php:82 +#: config/prefs.php.dist:83 config/prefs.php.dist:117 +#: config/prefs.php.dist:159 config/prefs.php.dist:247 +msgid "Date" +msgstr "Datum" + +#: config/prefs.php.dist:248 +msgid "Default comments view sort:" +msgstr "Privzeti vrsni red komentarjav:" + +#: config/prefs.php.dist:84 +msgid "Default forums view sort:" +msgstr "Privzeto razvrščanje tabel:" + +#: config/prefs.php.dist:94 config/prefs.php.dist:129 +#: config/prefs.php.dist:170 config/prefs.php.dist:258 +msgid "Default sorting direction:" +msgstr "Privzeta smer razvrščanja:" + +#: config/prefs.php.dist:160 +msgid "Default thread view sort:" +msgstr "Privzeta kolona za razvrščanje odgovorov:" + +#: config/prefs.php.dist:119 +msgid "Default threads view sort:" +msgstr "Privzeta kolona za razvrščanje tem:" + +#: deleteforum.php:45 deleteforum.php:63 ban.php:55 moderators.php:66 +#: moderate.php:39 moderate.php:69 messages/index.php:118 +#: messages/delete.php:49 messages/delete.php:54 lib/Messages.php:934 +#: lib/Messages.php:1812 lib/api.php:775 lib/api.php:780 +msgid "Delete" +msgstr "ZbriÅ¡i" + +#: messages/delete.php:48 lib/api.php:774 +#, php-format +msgid "Delete \"%s\" and all replies?" +msgstr "ZbriÅ¡em '%s' in vse njene odgovore?" + +#: deleteforum.php:43 lib/Messages.php:1486 +msgid "Delete Forum" +msgstr "ZbriÅ¡i tablo" + +#: lib/Messages.php:1812 +msgid "Delete forum" +msgstr "ZbriÅ¡i tablo" + +#: lib/Messages.php:934 +msgid "Delete message" +msgstr "ZbriÅ¡i sporočilo" + +#: lib/Messages.php:1538 +msgid "Delete the existing attachment?" +msgstr "ZbriÅ¡em obstoječe priponke?" + +#: lib/Comments.php:74 config/prefs.php.dist:93 config/prefs.php.dist:128 +#: config/prefs.php.dist:169 config/prefs.php.dist:257 +msgid "Descending" +msgstr "Padajoč" + +#: forums.php:55 +msgid "Description" +msgstr "Opis" + +#: config/prefs.php.dist:18 config/prefs.php.dist:25 config/prefs.php.dist:32 +#: config/prefs.php.dist:40 config/prefs.php.dist:47 +msgid "Display Options" +msgstr "Prikaži Možnosti" + +#: config/prefs.php.dist:237 +msgid "Display full message bodies in the comments view?" +msgstr "Prikažem telesa sporočil v komentarjih?" + +#: config/prefs.php.dist:181 +msgid "Display full message bodies in the thread list view?" +msgstr "Prikažem vsebino sporočil v drevesnem pregledu?" + +#: config/prefs.php.dist:200 +msgid "Display graphical emoticons?" +msgstr "Prikažem grafične smeÅ¡kote?" + +#: messages/index.php:115 lib/Messages.php:930 lib/Messages.php:1805 +msgid "Edit" +msgstr "Uredi" + +#: editforum.php:25 lib/Messages.php:1483 +msgid "Edit Forum" +msgstr "Uredi tablo" + +#: lib/api.php:651 +msgid "Edit Message" +msgstr "Uredi sporočilo" + +#: messages/edit.php:70 +#, php-format +msgid "Edit Message in \"%s\"" +msgstr "Uredi sporočilo v \"%s\"" + +#: lib/api.php:852 +msgid "Edit a comment" +msgstr "Uredi komentar" + +#: lib/Messages.php:1805 +msgid "Edit forum" +msgstr "Uredi tablo" + +#: lib/Messages.php:930 +msgid "Edit message" +msgstr "Uredi sporočilo" + +#: lib/Forms/Forum.php:37 +msgid "Enter a brief description of this forum" +msgstr "Vnesi kratek opis table" + +#: messages/index.php:163 lib/Comments.php:60 config/prefs.php.dist:235 +msgid "Flat" +msgstr "Spisek" + +#: moderators.php:78 moderators.php:81 forums.php:55 moderate.php:62 +#: templates/moderators.html.php:8 messages/move.php:52 +#: lib/Block/threads.php:45 lib/Block/forums.php:86 config/prefs.php.dist:79 +msgid "Forum" +msgstr "Tabla" + +#: lib/Messages.php:1710 lib/api.php:752 +#, php-format +msgid "Forum %s does not exist." +msgstr "Tabla %s ne obstaja." + +#: editforum.php:47 +msgid "Forum Modified" +msgstr "Tabla je bila spremenjena" + +#: editforum.php:47 +msgid "Forum created." +msgstr "Tabla ustvarjena." + +#: deleteforum.php:68 +msgid "Forum deleted." +msgstr "Tabla je bil izbrisana." + +#: deleteforum.php:49 templates/moderators.html.php:9 lib/Forms/Forum.php:29 +msgid "Forum name" +msgstr "Ime table" + +#: deleteforum.php:71 +msgid "Forum not deleted." +msgstr "Tabla ni bila izbrisana." + +#: templates/forums.html.php:9 templates/common-header.inc:27 lib/api.php:165 +#: lib/Block/forums.php:3 lib/Block/forums.php:28 +msgid "Forums" +msgstr "Table" + +#: config/prefs.php.dist:19 +msgid "Forums View" +msgstr "Pregled tabel" + +#: rss/index.php:28 +msgid "Forums in %s" +msgstr "Forumi v %s" + +#: lib/Messages.php:1520 +msgid "From" +msgstr "Od" + +#: templates/threads.html.php:44 templates/threads/threads.html.php:44 +msgid "Goto page:" +msgstr "Pojdi na stran:" + +#: messages/index.php:153 messages/index.php:162 +msgid "Hide bodies" +msgstr "Skrij telesa" + +#: lib/Messages.php:848 +msgid "Hot thread" +msgstr "Vroča tema" + +#: lib/Forms/Forum.php:41 +msgid "If selected users will be able to attach files to their messages." +msgstr "" +"Če je izbrano dovoljujeÅ¡ uporabnikom pripenjanje datotek k svojim sporočilom." + +#: messages/edit.php:116 +msgid "" +"Invalid parent message, you will be posting this message as a new thread." +msgstr "" +"Prvotno sporočilo ne obstaja, to sporočilo bo objavljeno kot nova tema." + +#: lib/Forms/Forum.php:38 +msgid "Is this a moderated forum?" +msgstr "Ali je to moderirana tabla?" + +#: lib/Forms/Search.php:43 +msgid "Keywords" +msgstr "Ključne besede" + +#: config/prefs.php.dist:81 +msgid "Last Message" +msgstr "Zadnje sporočilo" + +#: forums.php:55 lib/Block/forums.php:86 +msgid "Last Post" +msgstr "Zadnje sporočilo" + +#: threads.php:61 config/prefs.php.dist:118 +msgid "Last post" +msgstr "Zadnji vpis" + +#: owner.php:35 +#, php-format +msgid "Last posts in forums owned by %s" +msgstr "Zadnja sporočila v formih uporabnika %s" + +#: lib/Messages.php:938 +msgid "Lock" +msgstr "Zakleni" + +#: messages/index.php:121 +msgid "Lock thread" +msgstr "Zakleni temo" + +#: messages/lock.php:48 +#, php-format +msgid "Locking thread \"%s\"" +msgstr "Zaklepanje teme \"%s\"" + +#: lib/Agora.php:347 +msgid "Malformed avatar." +msgstr "Pokvarjen avatar." + +#: lib/Agora.php:370 +msgid "Malformed database entry." +msgstr "Pokvarjen vpis v bazi podatkov." + +#: scripts/phorum2agora.php:214 +msgid "" +"Mandatory arguments to long options are mandatory for short options too." +msgstr "" + +#: messages/merge.php:47 messages/merge.php:73 lib/Messages.php:949 +msgid "Merge" +msgstr "Združi" + +#: messages/merge.php:46 +#, php-format +msgid "Merge \"%s\" with another thread" +msgstr "Združi \"%s\" z drugo temo" + +#: lib/Messages.php:1533 +msgid "Message" +msgstr "Sporočilo" + +#: messages/abuse.php:79 +#, php-format +msgid "Message %s reported as abuse" +msgstr "Zloraba v sporočilu %s." + +#: lib/Messages.php:509 +#, php-format +msgid "Message ID \"%d\" not found" +msgstr "Spročilo Å¡t \"%d\" ne obstaja" + +#: config/prefs.php.dist:41 +msgid "Message View" +msgstr "Pregled sporočil" + +#: messages/delete.php:65 lib/api.php:785 +msgid "Message deleted." +msgstr "Sporočilo je zbrisano." + +#: messages/delete.php:55 lib/api.php:790 +msgid "Message not deleted." +msgstr "Sporočilo ni zbrisano." + +#: messages/edit.php:88 lib/api.php:678 +msgid "Message posted." +msgstr "Sporočilo je poslano." + +#: templates/messages/index.html.php:1 config/prefs.php.dist:80 +msgid "Messages" +msgstr "Sporočila" + +#: moderate.php:82 templates/moderate.html.php:11 +msgid "Messages Awaiting Moderation" +msgstr "Nepotrjena sporočila" + +#: lib/Messages.php:1831 +msgid "Moderate" +msgstr "Moderiraj" + +#: moderators.php:76 templates/messages/flat_thread.html.php:10 +#: templates/messages/flat.html.php:26 templates/messages/message.html.php:21 +#: lib/Tree/flat.php:117 +msgid "Moderator" +msgstr "Moderator" + +#: moderators.php:70 templates/forums.html.php:39 +#: templates/moderators.html.php:4 templates/moderators.html.php:10 +msgid "Moderators" +msgstr "Moderatorji" + +#: messages/move.php:47 messages/move.php:59 lib/Messages.php:945 +msgid "Move" +msgstr "Premakni" + +#: messages/move.php:46 +#, php-format +msgid "Move \"%s\" to another forum" +msgstr "Premakni \"%s\" v drugo tablo" + +#: config/prefs.php.dist:10 +msgid "My Information" +msgstr "Moji podatki" + +#: editforum.php:25 +msgid "New Forum" +msgstr "Nova tabla" + +#: lib/Messages.php:1800 +msgid "New Post" +msgstr "Nov vpis" + +#: lib/Agora.php:253 +msgid "New Thread" +msgstr "Nova tema" + +#: lib/Messages.php:849 +msgid "New posts" +msgstr "Nova sporočila" + +#: config/prefs.php.dist:178 +msgid "No" +msgstr "Ne" + +#: lib/Block/threads.php:118 +msgid "No available threads." +msgstr "Ni dostopnih tem." + +#: lib/Block/threads.php:97 +msgid "No forum selected" +msgstr "Tabla ni bila izbrana." + +#: templates/forums.html.php:60 +msgid "No forums have been created." +msgstr "Ni bila ustvarjen Å¡e nobena tabla." + +#: config/prefs.php.dist:198 +msgid "No graphical emoticons" +msgstr "Ni grafičnih smeÅ¡kotov" + +#: moderate.php:54 +msgid "No messages are waiting for moderation." +msgstr "Ni sporočil, ki bi čakala na moderiranje." + +#: messages/abuse.php:39 +msgid "No moderators are associated with this forum." +msgstr "Ni moderatorjev povezanih s to tablo." + +#: templates/moderators.html.php:27 +msgid "No moderators have been created." +msgstr "Moderator ni bil ustvarjen." + +#: owner.php:48 templates/block/threads.html.php:32 +msgid "No threads" +msgstr "Ni tem" + +#: messages/lock.php:51 +msgid "No, do not allow replies" +msgstr "Ne dovoli odgovarjanja" + +#: config/prefs.php.dist:103 +msgid "Number of forums to display on each page" +msgstr "Å tevilo tabel na vsaki strani" + +#: config/prefs.php.dist:190 +msgid "Number of message to display on each page" +msgstr "Å tevilo sporočil na vsaki strani" + +#: config/prefs.php.dist:146 config/prefs.php.dist:267 +msgid "Number of messages to display on each page" +msgstr "Å tevilo sporočil na vsaki strani" + +#: config/prefs.php.dist:137 +msgid "Number of views in 24hrs to trigger a 'hot-thread':" +msgstr "" +"Å tevilo branj v zadhnjih 24ih urah, ki so potrebna za označbo kot vroča tema." + +#: lib/Block/forums.php:35 +msgid "Only display this many forums (0 to display all forums)" +msgstr "Prikaži le toliko tabel (0 pomeni vse)" + +#: lib/Block/threads.php:52 +msgid "Only display this many threads (0 to display all threads)" +msgstr "Prikaži toliko tem (0 pomeni vse)" + +#: lib/Forms/Forum.php:39 +msgid "Optional email address to recieve a copy of each posted message" +msgstr "Poljuben email kamor naj javljamo da prihajajo nova sporočila" + +#: templates/forums.html.php:34 +msgid "Options" +msgstr "Možnosti" + +#: lib/Messages.php:896 +#, php-format +msgid "Page %d" +msgstr "Stran %d" + +#: lib/Forms/Forum.php:32 +msgid "Parent forum" +msgstr "Prvotna tabla" + +#: lib/Messages.php:1502 +msgid "Post" +msgstr "VpiÅ¡i" + +#: lib/api.php:651 +msgid "Post a New Message" +msgstr "Oddaj novo sporočilo" + +#: messages/edit.php:71 +#, php-format +msgid "Post a New Message to \"%s\"" +msgstr "Oddaj novo sporočilo v \"%s\"" + +#: messages/edit.php:69 messages/index.php:208 +#, php-format +msgid "Post a Reply to \"%s\"" +msgstr "Oddaj odgovor na '%s'" + +#: lib/Messages.php:1477 lib/Messages.php:1800 +msgid "Post message" +msgstr "Oddaj sporočilo" + +#: owner.php:63 forums.php:55 moderate.php:62 +#: templates/messages/flat_thread.html.php:7 +#: templates/messages/flat.html.php:22 messages/index.php:142 +#: lib/Comments.php:85 lib/api.php:471 lib/Block/threads.php:122 +#: lib/Block/forums.php:86 lib/Block/thread.php:82 lib/Tree/flat.php:112 +#: config/prefs.php.dist:82 config/prefs.php.dist:115 +#: config/prefs.php.dist:158 config/prefs.php.dist:246 +msgid "Posted by" +msgstr "Objavlil" + +#: messages/index.php:86 lib/Messages.php:554 +#, php-format +msgid "Posted by %s on %s" +msgstr "Objavil %s ob %s" + +#: threads.php:61 forums.php:55 lib/Block/forums.php:86 +#: config/prefs.php.dist:116 +msgid "Posts" +msgstr "Odgovorov" + +#: lib/Messages.php:1525 +msgid "Quote" +msgstr "Citiraj" + +#: messages/index.php:109 lib/Messages.php:918 +msgid "Reply" +msgstr "Odgovori" + +#: lib/Messages.php:918 +msgid "Reply to message" +msgstr "Odgovori na sporočilo" + +#: messages/abuse.php:47 messages/abuse.php:48 lib/Messages.php:924 +msgid "Report as abuse" +msgstr "Prijavi zlorabo" + +#: lib/Forms/Search.php:44 +msgid "Require all keywords?" +msgstr "Zahtevam vse ključne besede?" + +#: lib/Messages.php:1502 +msgid "Save" +msgstr "Shrani" + +#: lib/Forms/Search.php:57 +msgid "Search" +msgstr "Najdi" + +#: search.php:70 lib/Forms/Search.php:33 +msgid "Search Forums" +msgstr "Išči v tablah" + +#: templates/search.html.php:5 +msgid "Search Results" +msgstr "Rezultati iskanja" + +#: lib/Forms/Search.php:52 +msgid "Search in message contents?" +msgstr "Išči po vsebini sporočil?" + +#: lib/Forms/Search.php:48 +msgid "Search in subjects?" +msgstr "Išči po naslovih sporočil?" + +#: lib/Forms/Search.php:37 +msgid "Search in these forums" +msgstr "Išči v teh tablah" + +#: config/prefs.php.dist:12 +msgid "Set the avatar image that is shown with your posts." +msgstr "Nastavi avatar, ki se bo prikazal v tvojih objavah" + +#: lib/Forms/Forum.php:38 +msgid "" +"Set this if you want all messages to be checked by a moderator before they " +"are posted." +msgstr "" +"Izberi to, če želiÅ¡ da moderator potrdi vsako sporočilo preden je objavljeno." + +#: config/prefs.php.dist:20 +msgid "Set your options for the forums view." +msgstr "Nastavi svoje monosti za pregled tabel." + +#: config/prefs.php.dist:42 +msgid "Set your options for the message view." +msgstr "Nastavi svoje možnosti za pregled sporočil." + +#: config/prefs.php.dist:34 config/prefs.php.dist:49 +msgid "Set your options for the single thread view." +msgstr "Nastavi svoje nastavitve za enojen pregled tem." + +#: config/prefs.php.dist:27 +msgid "Set your options for the threads view." +msgstr "Nastavi svoje možnosti za pregled tem." + +#: config/prefs.php.dist:199 +msgid "Show graphical emoticons" +msgstr "Prikaži grafične smeÅ¡kote" + +#: lib/Block/thread.php:3 lib/Block/thread.php:52 +msgid "Single Thread" +msgstr "Ena tema" + +#: config/prefs.php.dist:33 +msgid "Single Thread View" +msgstr "Enoten pogled na temo" + +#: lib/Agora.php:192 +msgid "Sort Ascending" +msgstr "Razvrsti naraščajoče" + +#: lib/Agora.php:192 +msgid "Sort Descending" +msgstr "Razvrsti padajoče" + +#: lib/Comments.php:65 +msgid "Sort by" +msgstr "Razvrsti po" + +#: lib/Agora.php:200 lib/Agora.php:207 +#, php-format +msgid "Sort by %s" +msgstr "Razvrsti po %s" + +#: lib/Comments.php:71 +msgid "Sort direction" +msgstr "Vrstni red" + +#: lib/Messages.php:1547 lib/Forms/Message.php:24 +msgid "Spam protection" +msgstr "Zaščita pred reklamnimi sporočili" + +#: messages/split.php:47 messages/split.php:55 lib/Messages.php:954 +msgid "Split" +msgstr "Razbij" + +#: messages/split.php:46 +#, php-format +msgid "Split \"%s\"" +msgstr "Razbijem \"%s\"" + +#: threads.php:61 +msgid "Started" +msgstr "Začeto" + +#: deleteforum.php:57 +msgid "Subforums" +msgstr "Podtabla" + +#: threads.php:61 owner.php:63 moderate.php:62 messages/index.php:142 +#: lib/Comments.php:69 lib/Comments.php:83 lib/Messages.php:1527 +#: lib/Messages.php:1530 lib/api.php:469 lib/Block/threads.php:122 +#: lib/Block/thread.php:82 config/prefs.php.dist:114 config/prefs.php.dist:157 +#: config/prefs.php.dist:245 +msgid "Subject" +msgstr "Zadeva" + +#: lib/Agora.php:229 +msgid "The VFS backend needs to be configured to enable attachment uploads." +msgstr "Za upprabo pripetih datotek mora biti VFS nastavljen." + +#: config/prefs.php.dist:61 +msgid "The location of your avatar image." +msgstr "Lokacija tvoje slike za avatar." + +#: lib/Block/forums.php:77 +msgid "There are no forums." +msgstr "Ni tabel." + +#: templates/threads.html.php:69 templates/threads/threads.html.php:69 +msgid "There are no threads in this forum." +msgstr "Ni odprih tem v tej tabli." + +#: lib/Messages.php:162 +msgid "This thread has been locked." +msgstr "Tema je bila zaklenjena." + +#: deleteforum.php:48 +msgid "This will delete the forum, any subforums and all relative messages." +msgstr "Izbris table bo uničil tudi vse podtable in sporočila v njih." + +#: messages/index.php:142 messages/index.php:154 lib/Comments.php:61 +#: lib/Block/thread.php:32 lib/Block/thread.php:82 config/prefs.php.dist:113 +#: config/prefs.php.dist:156 config/prefs.php.dist:236 +msgid "Thread" +msgstr "Tema" + +#: messages/merge.php:78 +#, php-format +msgid "Thread %s merged with thread %s after message %s." +msgstr "Tema %s je bila družena s temo %s za sporočilom %s." + +#: messages/move.php:64 +#, php-format +msgid "Thread %s moved to from forum %s to %s." +msgstr "Tema %s je bila premaknjena iz table %s v %s." + +#: templates/messages/index.html.php:10 lib/Block/thread.php:89 +msgid "Thread List" +msgstr "Spisek tem" + +#: templates/messages/message.html.php:34 +msgid "Thread Summary" +msgstr "Povzetek teme" + +#: messages/delete.php:70 +msgid "Thread deleted." +msgstr "Tema je bila zbrisana." + +#: messages/index.php:200 messages/lock.php:63 +msgid "Thread locked." +msgstr "Tema je bila zaklenjena." + +#: messages/split.php:60 +#, php-format +msgid "Thread splitted by message %s." +msgstr "Tema je bila razbita pri sporočilu %s." + +#: messages/lock.php:65 +msgid "Thread unlocked." +msgstr "Tema je bila odklenjena." + +#: forums.php:55 templates/threads.html.php:1 +#: templates/threads/threads.html.php:1 lib/Comments.php:77 +#: lib/Block/threads.php:3 lib/Block/threads.php:70 lib/Block/threads.php:76 +msgid "Threads" +msgstr "Teme" + +#: config/prefs.php.dist:26 +msgid "Threads View" +msgstr "Razvejan pregled" + +#: lib/Block/threads.php:80 +#, php-format +msgid "Threads in \"%s\"" +msgstr "Teme v \"%s\"" + +#: threads.php:68 threads.php:81 rss/threads.php:48 +#, php-format +msgid "Threads in %s" +msgstr "Teme v %s" + +#: lib/Block/thread.php:70 +msgid "Unable to fetch selected thread." +msgstr "Ne morem dobiti izbrane teme." + +#: lib/Block/threads.php:103 +msgid "Unable to fetch threads for selected forum." +msgstr "Ne morem dobiti teme za izrano tablo." + +#: lib/Messages.php:938 +msgid "Unlock" +msgstr "Odkleni" + +#: messages/index.php:121 +msgid "Unlock thread" +msgstr "Odkleni temo" + +#: messages/lock.php:49 lib/Forms/Forum.php:26 +msgid "Update" +msgstr "Posodobi" + +#: scripts/phorum2agora.php:212 +#, php-format +msgid "Usage: %s [OPTIONS]..." +msgstr "Uporaba: %s [OPCIJE]..." + +#: ban.php:65 +msgid "User" +msgstr "Uporabnik" + +#: lib/Comments.php:59 +msgid "View" +msgstr "Prikaz" + +#: messages/index.php:179 +msgid "View bodies" +msgstr "Prikaži telesa sporočil" + +#: threads.php:61 +msgid "Views" +msgstr "Prikazi" + +#: messages/merge.php:57 +msgid "With Thread: " +msgstr "Z devato: " + +#: config/prefs.php.dist:179 +msgid "Yes" +msgstr "Da" + +#: messages/lock.php:51 +msgid "Yes, allow replies" +msgstr "Dovoli odgovarajanje" + +#: config/prefs.php.dist:180 +msgid "Yes, and don't thread them" +msgstr "Da, ne veži jih drevesno" + +#: owner.php:19 +msgid "You are not authorised for this action." +msgstr "Nimate pravic za ta ukaz" + +#: lib/Messages.php:1694 +#, php-format +msgid "You don't have permission to access messages in forum %s." +msgstr "Nimate dovoljenj za dostop do sporočil v tabli %s." + +#: messages/merge.php:38 messages/move.php:38 messages/lock.php:40 +#: messages/delete.php:40 messages/split.php:38 lib/Messages.php:575 +#: lib/Messages.php:745 lib/api.php:763 +#, php-format +msgid "You don't have permission to delete messages in forum %s." +msgstr "Nimate dovoljenj za brisanje sporočil v tabli %s." + +#: messages/edit.php:39 messages/index.php:194 lib/Messages.php:167 +#: lib/api.php:629 +#, php-format +msgid "You don't have permission to post messages in forum %s." +msgstr "Nimate dovoljenja za objavo sporočil v tabli %s." + +#: lib/Messages.php:820 +#, php-format +msgid "You don't have permission to read messages in forum %s." +msgstr "Nimate dovoljenja za prebiranje sporočil v tabli %s." + +#: ban.php:30 +#, php-format +msgid "You don't have permissions to ban users from forum %s." +msgstr "Nimate dovoljenja za izobčiti uporabnke s table %s." + +#: editforum.php:35 +#, php-format +msgid "You don't have permissions to create a new forum in %s" +msgstr "Nimate dovoljenj za ustvaritev novih tabel v %s." + +#: deleteforum.php:27 +#, php-format +msgid "You don't have permissions to delete forums in %s" +msgstr "Nimate dovoljenj za brisanje tabel v %s." + +#: editforum.php:31 +#, php-format +msgid "You don't have permissions to edit forum %s" +msgstr "Nimate dovoljenj za urejanje table %s." + +#: messages/edit.php:86 +msgid "" +"Your message has been enqueued and is awaiting moderation. It will become " +"visible after moderator approval." +msgstr "" +"VaÅ¡e sporočilo čaka na potridtev. Vidno bo takoj po potrditivi urednika." + +#: lib/Agora.php:246 +msgid "_Forums" +msgstr "_Table" + +#: lib/Agora.php:263 +msgid "_Moderate" +msgstr "_Moderiraj" + +#: lib/Agora.php:267 +msgid "_Moderators" +msgstr "Moderatorji" + +#: lib/Agora.php:258 +msgid "_New Forum" +msgstr "_Nova tabla" + +#: lib/Agora.php:271 +msgid "_Search" +msgstr "I_skanje" + +#: lib/Agora.php:251 +msgid "_Threads" +msgstr "_Teme" + +#: templates/forums.html.php:51 templates/threads.html.php:60 +#: templates/threads/threads.html.php:60 +msgid "by" +msgstr "od" + +#: lib/Messages.php:1640 +msgid "download" +msgstr "pretoči" + +#: templates/messages/flat_thread.html.php:8 +#: templates/messages/flat.html.php:23 lib/Tree/flat.php:113 +msgid "on: " +msgstr "dne: " + +#: lib/Messages.php:1641 +#, php-format +msgid "size: %s" +msgstr "velikost: %s" + +#: lib/Messages.php:1641 +#, php-format +msgid "type: %s" +msgstr "tip: %s" diff --git a/agora/po/zh_TW.po b/agora/po/zh_TW.po new file mode 100644 index 000000000..17993bebc --- /dev/null +++ b/agora/po/zh_TW.po @@ -0,0 +1,140 @@ +# AGORA Traditional Chinese Translation +# Copyright 2002 David Chang.±i¨}¤å,¥xÆW +# David Chang , 2002. +msgid "" +msgstr "" +"Project-Id-Version: agora \n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2004-01-19 13:52+0800\n" +"PO-Revision-Date: 2003-01-20 13:00+0800\n" +"Last-Translator: David Chang \n" +"Language-Team: Traditional Chinese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=BIG5\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/api.php:65 +#, php-format +msgid "%s not found." +msgstr "§ä¤£¨ì %s." + +#: lib/Forums.php:64 +msgid "Can not create a forum with an empty name." +msgstr "°Q½×°Ï¦WºÙ¤£±oªÅ¥Õ." + +#: deletemessage.php:61 deletemessage.php:83 +msgid "Cancel" +msgstr "¨ú®ø" + +#: editforum.php:55 +#, php-format +msgid "Could not create the forum. %s" +msgstr "µLªk«Ø¥ß¦¹°Q½×°Ï. %s" + +#: editforum.php:36 +msgid "Create" +msgstr "«Ø¥ß" + +#: forums.php:31 message.php:43 threads.php:47 lib/Block/forums.php:56 +#: lib/Block/threads.php:107 config/prefs.php.dist:35 config/prefs.php.dist:57 +msgid "Date" +msgstr "¤é´Á" + +#: config/prefs.php.dist:46 config/prefs.php.dist:68 +msgid "Default sorting direction:" +msgstr "¹w³]±Æ§Ç¤è¦V:" + +#: deleteforum.php:41 deleteforum.php:53 deletemessage.php:61 +#: deletemessage.php:65 message.php:71 +msgid "Delete" +msgstr "§R°£" + +#: config/prefs.php.dist:45 config/prefs.php.dist:67 +msgid "Descending" +msgstr "­°¾­" + +#: forums.php:31 +msgid "Description" +msgstr "´y­z" + +#: config/prefs.php.dist:9 config/prefs.php.dist:15 config/prefs.php.dist:21 +msgid "Display Options" +msgstr "Åã¥Ü¿ï¶µ" + +#: message.php:68 +msgid "Edit" +msgstr "½s¿è" + +#: forums.php:31 lib/Block/forums.php:56 lib/Block/threads.php:45 +#: config/prefs.php.dist:31 +msgid "Forum" +msgstr "°Q½×°Ï" + +#: editforum.php:57 +msgid "Forum created." +msgstr "°Q½×°Ï¤w«Ø¥ß." + +#: deleteforum.php:43 editforum.php:38 +msgid "Forum name" +msgstr "°Q½×°Ï¦WºÙ" + +#: lib/Agora.php:193 lib/api.php:71 lib/Block/forums.php:25 +msgid "Forums" +msgstr "°Q½×°Ï" + +#: config/prefs.php.dist:33 +msgid "Last Message" +msgstr "³Ì«áªº¤å³¹" + +#: editmessage.php:76 +msgid "Message" +msgstr "¤å³¹" + +#: config/prefs.php.dist:32 +msgid "Messages" +msgstr "¤å³¹" + +#: forums.php:31 message.php:43 threads.php:47 lib/Block/forums.php:56 +#: lib/Block/threads.php:107 config/prefs.php.dist:34 config/prefs.php.dist:56 +msgid "Posted By" +msgstr "µo°_¤H" + +#: editmessage.php:111 +#, php-format +msgid "Re: %s" +msgstr "¦^ÂÐ: %s" + +#: message.php:64 +msgid "Reply" +msgstr "¦^ÂÐ" + +#: editmessage.php:68 +msgid "Save" +msgstr "Àx¦s" + +#: editforum.php:43 +msgid "" +"Set this if you want all messages to be checked by a moderator before they " +"are posted" +msgstr "¦pªG§A§Æ±æ©Ò¦³ªº¤å³¹¦b¤½§G«e¥²¶·¥ý¸g¥Ñª©¥DÀˬd,½Ð¤Ä¿ï¦¹¶µ¥Ø" + +#: editmessage.php:75 message.php:43 threads.php:47 lib/Block/threads.php:107 +#: config/prefs.php.dist:55 +msgid "Subject" +msgstr "¥D¦®" + +#: message.php:43 threads.php:47 config/prefs.php.dist:54 +msgid "Thread" +msgstr "ÃöÁp" + +#: lib/Agora.php:197 lib/api.php:72 lib/Block/threads.php:61 +msgid "Threads" +msgstr "¥DÃD" + +#: editforum.php:36 +msgid "Update" +msgstr "Åܧó" + +#: prefs.php:24 +msgid "User Options" +msgstr "¨Ï¥ÎªÌ¿ï¶µ" diff --git a/agora/rss/index.php b/agora/rss/index.php new file mode 100644 index 000000000..f72558b18 --- /dev/null +++ b/agora/rss/index.php @@ -0,0 +1,59 @@ + + */ + +define('AUTH_HANDLER', true); +define('AGORA_BASE', dirname(__FILE__) . '/../'); +require_once AGORA_BASE . '/lib/base.php'; + +// Show a specific scope? +$scope = Horde_Util::getGet('scope', 'agora'); +$cache_key = 'agora_rss_' . $scope; + +/* Initialize the Cache object. */ +$cache = &Horde_Cache::singleton($GLOBALS['conf']['cache']['driver'], + Horde::getDriverConfig('cache', $GLOBALS['conf']['cache']['driver'])); + +$rss = $cache->get($cache_key, $conf['cache']['default_lifetime']); +if (!$rss) { + + $title = sprintf(_("Forums in %s"), $registry->get('name', $scope)); + $forums = Agora_Messages::singleton($scope); + $forums_list = $forums->getForums(0, true, 'forum_name', 0); + + $rss = ' + + + ' . htmlspecialchars($title) . ' + ' . str_replace('_', '-', strtolower(Horde_Nls::select())) . ' + ' . date('r') . ' + ' . htmlspecialchars($title) . ' + ' . Horde::applicationUrl('index.php', true, -1) . ' + ' . htmlspecialchars($registry->get('name')) . ''; + + foreach ($forums_list as $forum_id => $forum) { + $rss .= ' + + ' . htmlspecialchars($forum['forum_name']) . ' + ' . htmlspecialchars($forum['forum_description']) . ' + ' . Horde_Util::addParameter(Horde::applicationUrl('threads.php', true, -1), array('scope' => $scope, 'forum_id' => $forum_id)) . ' + '; + } + + $rss .= ' + + '; + + $cache->set($cache_key, $rss); +} + +header('Content-type: text/xml; charset=' . Horde_Nls::getCharset()); +echo $rss; diff --git a/agora/rss/messages.php b/agora/rss/messages.php new file mode 100644 index 000000000..82dbf6d1c --- /dev/null +++ b/agora/rss/messages.php @@ -0,0 +1,69 @@ + + */ + +define('AUTH_HANDLER', true); +define('AGORA_BASE', dirname(__FILE__) . '/../'); +require_once AGORA_BASE . '/lib/base.php'; + +// Show a specific scope? +list($forum_id, $message_id, $scope) = Agora::getAgoraId(); +$cache_key = 'agora_rss_' . $scope . '_' . $forum_id . '_' . $message_id; + +/* Initialize the Cache object. */ +$cache = &Horde_Cache::singleton($GLOBALS['conf']['cache']['driver'], + Horde::getDriverConfig('cache', $GLOBALS['conf']['cache']['driver'])); + +$rss = $cache->get($cache_key, $conf['cache']['default_lifetime']); + +if (!$rss) { + + $messages = Agora_Messages::singleton($scope, $forum_id); + $message = $messages->getMessage($message_id); + if ($message instanceof PEAR_Error) { + exit; + } + + $threads_list = $messages->getThreads($message['message_thread'], true, 'message_timestamp', 1, 1, '', null, 0, 10); + if ($threads_list instanceof PEAR_Error) { + exit; + } + + $rss = ' + + + ' . htmlspecialchars($message['message_subject']) . ' + ' . str_replace('_', '-', strtolower(Horde_Nls::select())) . ' + ' . date('r') . ' + ' . htmlspecialchars($message['message_subject']) . ' + ' . Horde::applicationUrl('index.php', true, -1) . ' + ' . htmlspecialchars($registry->get('name')) . ''; + + foreach ($threads_list as $thread_id => $thread) { + $url = Horde::applicationUrl('messages/index.php', true, -1); + $url = Agora::setAgoraId($forum_id, $thread_id, $url, $scope, true); + $rss .= ' + + ' . htmlspecialchars($thread['message_subject']) . ' + ' . htmlspecialchars(trim($thread['body'])) . ' + ' . $url . ' + '; + } + + $rss .= ' + + '; + + $cache->set($cache_key, $rss); +} + +header('Content-type: text/xml; charset=' . Horde_Nls::getCharset()); +echo $rss; diff --git a/agora/rss/threads.php b/agora/rss/threads.php new file mode 100644 index 000000000..678524aa8 --- /dev/null +++ b/agora/rss/threads.php @@ -0,0 +1,108 @@ + + */ + +define('AUTH_HANDLER', true); +define('AGORA_BASE', dirname(__FILE__) . '/../'); +require_once AGORA_BASE . '/lib/base.php'; + +// Detect forum id +$scope = Horde_Util::getGet('scope', 'agora'); +$forum_id = Horde_Util::getGet('forum_id'); +if ($scope != 'agora') { + if (($forum_name = Horde_Util::getGet('forum_name')) !== null) { + $threads = Agora_Messages::singleton($scope); + $forum_id = $threads->getForumId($forum_name); + if (($forum_id instanceof PEAR_Error) || empty($forum_id)) { + die($forum_id); + } + } elseif ($forum_id !== null) { + $threads = Agora_Messages::singleton($scope, $forum_id); + if ($threads instanceof PEAR_Error) { + die($threads); + } + $forum_array = $threads->getForum(); + $forum_name = $forum_array['forum_name']; + } +} + +$cache_key = 'agora_rss_' . $scope . '_' . $forum_id; + +/* Initialize the Cache object. */ +$cache = &Horde_Cache::singleton($GLOBALS['conf']['cache']['driver'], + Horde::getDriverConfig('cache', $GLOBALS['conf']['cache']['driver'])); + +$rss = $cache->get($cache_key, $conf['cache']['default_lifetime']); + +if (!$rss) { + + // Get forum title + $threads = Agora_Messages::singleton($scope, $forum_id); + if ($threads instanceof PEAR_Error) { + Horde::fatal($threads, __FILE__, __LINE__); + } + if ($scope == 'agora') { + $forum_array = $threads->getForum(); + if ($forum_array instanceof PEAR_Error) { + Horde::fatal($forum_array, __FILE__, __LINE__); + } + $title = sprintf(_("Threads in %s"), $forum_array['forum_name']); + } else { + $title = $registry->callByPackage($scope, 'commentCallback', array($forum_name, 'title')); + if ($title instanceof PEAR_Error) { + Horde::fatal($title, __FILE__, __LINE__); + } + $title = sprintf(_("Comments on %s"), $title); + } + + $threads_list = $threads->getThreads(0, false, 'message_modifystamp', 1, true, '', null, 0, 10); + + $rss = ' + + + ' . htmlspecialchars($title) . ' + ' . str_replace('_', '-', strtolower(Horde_Nls::select())) . ' + ' . date('r') . ' + ' . htmlspecialchars($title) . ' + ' . Horde::applicationUrl('index.php', true, -1) . ' + ' . htmlspecialchars($registry->get('name')) . ''; + + // Use commentCallback to get the return link + // show is not enought as we can have many parameters, like turba source etc + $url = Horde::applicationUrl('messages/index.php', true, -1); + if ($scope != 'agora' && $registry->hasMethod('commentCallback', $scope)) { + $try = $registry->callByPackage($scope, 'commentCallback', array($forum_name, 'link')); + if ($try instanceof PEAR_Error) { + die($try->getMessage()); + } + if (substr($url, 0, 4) == 'http') { + $url = $try; + } + } + + foreach ($threads_list as $thread_id => $thread) { + $rss .= ' + + ' . htmlspecialchars($thread['message_subject']) . ' + ' . htmlspecialchars(trim($thread['body'])) . ' + ' . Agora::setAgoraId($forum_id, $thread_id, $url, $scope, true) . ' + '; + } + + $rss .= ' + + '; + + $cache->set($cache_key, $rss); +} + +header('Content-type: text/xml; charset=' . Horde_Nls::getCharset()); +echo $rss; diff --git a/agora/scripts/phorum2agora.php b/agora/scripts/phorum2agora.php new file mode 100755 index 000000000..3c886b5e8 --- /dev/null +++ b/agora/scripts/phorum2agora.php @@ -0,0 +1,222 @@ +#!/usr/bin/php +fatal($error); +} + +// Show help and exit if no arguments were set. +list($opts, $args) = $ret; +if (!$opts) { + showHelp(); + exit; +} + +foreach ($opts as $opt) { + list($optName, $optValue) = $opt; + switch ($optName) { + case 'p': + case '--phorum_id': + $phorum_id = $optValue; + break; + + case 'a': + case '--agora_id': + $agora_id = $optValue; + break; + + case 't': + case '--phorum_table': + $phorum_table = $optValue; + break; + + case 'f': + case '--from': + $from = $optValue; + break; + + case 'c': + case '--count': + $count = $optValue; + break; + + case 'h': + case '--help': + showHelp(); + exit; + } +} + +/* Set up defaults */ +if (empty($phorum_table)) { + $phorum_table = 'p5_messages'; +} +if (empty($from)) { + $cfrom = 0; +} +if (empty($count)) { + $cfrom = 100; +} + +/* Get phorum messages data */ +$sql = 'SELECT message_id, thread, author, subject, body, ' + . ' datestamp, ip, viewcount, closed ' + . ' FROM ' . $phorum_table . ' WHERE forum_id = ? ORDER BY message_id ASC'; +$sql = $db_phorum->modifyLimitQuery($sql, $from * $count, $count); +$messages = $db_phorum->getAll($sql, array($phorum_id), DB_FETCHMODE_ASSOC); +if ($messages instanceof PEAR_Error) { + echo $messages->getMessage() . ': ' . $messages->getDebugInfo() . "\n"; + exit; +} + +/* Display some info of messages imported */ +$msgs = $db_phorum->getOne('SELECT COUNT(*) FROM ' . $phorum_table . ' WHERE forum_id = ? ', array($phorum_id)); +echo 'Agora forum ID: ' . $agora_id . "\n"; +echo 'Phorum forum ID: ' . $phorum_id . "\n"; +echo 'Processing ' . count($messages) . ' (' . ($from * $count) . '/' . $count . ') messages of ' . $msgs . ' in phorum' . "\n"; + +/* SQL mesage insert statement */ +$sql = 'INSERT INTO agora_messages ' + . '(message_id, forum_id, parents, message_thread, message_author, message_subject, body, ' + . 'message_timestamp, attachments, ip, view_count, locked)' + . ' VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) '; + +// Delete old messages * DO NOT USE THIS. IS ONLY FOR TESTING +// $b_agora->query('TRUNCATE TABLE agora_messages'); +// $db_agora->query('TRUNCATE TABLE agora_messages_seq'); + +/* Start inserting */ +foreach ($messages as $message) { + $params = array(); + $params[] = $message['message_id']; + $params[] = $agora_id; + $params[] = makeParents($message['thread'], $message['message_id']); + $params[] = ($message['thread'] == $message['message_id']) ? 0 : $message['thread']; + $params[] = $message['author']; + $params[] = Horde_String::convertCharset($message['subject'], $conf['sql']['charset']); + $params[] = Horde_String::convertCharset($message['body'], $conf['sql']['charset']); + $params[] = $message['datestamp']; + $params[] = 0; + $params[] = $message['ip']; + $params[] = $message['viewcount']; + $params[] = $message['closed']; + $result = $db_agora->query($sql, $params); + if ($result instanceof PEAR_Error) { + echo $result->getMessage() . ': ' . $result->getDebugInfo() . "\n"; + exit; + } +} + +/* Update message sql */ +$max = $db_agora->getOne('SELECT MAX(message_id) FROM agora_messages'); +$db_agora->query('UPDATE agora_messages_seq SET ID = ?' , array($max)); + +/* Clean cache */ +$forums = Agora_Messages::singleton('agora'); +@$forums->cleanCache($agora_id); + +echo "done\n"; + +/* Constuct message parents */ +function makeParents($thread_id, $message_id) +{ + if (intval($thread_id) < 1) { + return ''; + } + + $sql = 'SELECT message_id FROM ' . $GLOBALS['phorum_table'] + . ' WHERE thread = ? AND message_id < ? ORDER BY message_id ASC'; + + $mesages = $GLOBALS['db_phorum']->getCol($sql, 0, array($thread_id, $message_id)); + if ($mesages instanceof PEAR_Error) { + echo $mesages->getMessage() . ': ' . $mesages->getDebugInfo() . "\n"; + exit; + } + + if (empty($mesages)) { + return ''; + } else { + return ':' . implode(':', $mesages); + } +} + +/** + * Show the command line arguments that the script accepts. + */ +function showHelp() +{ + global $cli; + + $cli->writeln(sprintf(_("Usage: %s [OPTIONS]..."), basename(__FILE__))); + $cli->writeln(); + $cli->writeln(_("Mandatory arguments to long options are mandatory for short options too.")); + $cli->writeln(); + $cli->writeln(_("-h, --help Show this help")); + $cli->writeln(_("-p, --phorum_id[=pid] Phorum forum id to read message from")); + $cli->writeln(_("-a, --agora_id[=aid] Agora forum id to save message to")); + $cli->writeln(_("-t, --phorum_table[=table] Phorum messages tablename")); + $cli->writeln(_("-f, --from[=offset] Offset from where to start to read messages")); + $cli->writeln(_("-c, --count[=messages] Number of messages to move at once")); + $cli->writeln(); +} diff --git a/agora/scripts/sql/agora.mysql.sql b/agora/scripts/sql/agora.mysql.sql new file mode 100644 index 000000000..62df0afbb --- /dev/null +++ b/agora/scripts/sql/agora.mysql.sql @@ -0,0 +1,67 @@ +-- $Horde: agora/scripts/sql/agora.mysql.sql,v 1.16 2009/10/20 21:28:30 jan Exp $ + +CREATE TABLE agora_files ( + file_id INT(11) UNSIGNED NOT NULL, + file_name VARCHAR(255) NOT NULL, + file_size INT(11) UNSIGNED DEFAULT 0 NOT NULL, + file_type VARCHAR(32) NOT NULL, + message_id MEDIUMINT(9) UNSIGNED DEFAULT 0, +-- + PRIMARY KEY (file_id) +); +CREATE INDEX agora_file_message_idx ON agora_files (message_id); + +CREATE TABLE agora_forums ( + forum_id SMALLINT(6) UNSIGNED NOT NULL, + scope VARCHAR(10) NOT NULL, + forum_name VARCHAR(255) NOT NULL, + active SMALLINT(6) UNSIGNED NOT NULL, + forum_description TEXT, + forum_parent_id SMALLINT(11) UNSIGNED, + author VARCHAR(32) NOT NULL, + forum_moderated SMALLINT(6) UNSIGNED, + forum_attachments TINYINT(1) UNSIGNED DEFAULT 0, + forum_distribution_address VARCHAR(255) DEFAULT '' NOT NULL, + message_count SMALLINT(6) UNSIGNED DEFAULT 0, + thread_count SMALLINT(6) UNSIGNED DEFAULT 0, + count_views SMALLINT(6) UNSIGNED, + last_message_id MEDIUMINT(10) UNSIGNED DEFAULT 0, + last_message_author VARCHAR(50), + last_message_timestamp MEDIUMINT(10) UNSIGNED DEFAULT 0, +-- + PRIMARY KEY (forum_id) +); +CREATE INDEX agora_forum_scope_idx ON agora_forums (scope, active); + +CREATE TABLE agora_messages ( + message_id MEDIUMINT(9) UNSIGNED NOT NULL, + forum_id SMALLINT(6) UNSIGNED DEFAULT 0 NOT NULL, + message_thread MEDIUMINT(9) UNSIGNED DEFAULT 0 NOT NULL, + parents VARCHAR(255) DEFAULT NULL, + message_author VARCHAR(32) NOT NULL, + message_subject VARCHAR(85) NOT NULL, + body TEXT NOT NULL, + attachments TINYINT(1) UNSIGNED DEFAULT 0 NOT NULL, + ip VARCHAR(30) NOT NULL, + status TINYINT(1) UNSIGNED DEFAULT 2 NOT NULL, + message_seq INT(11) DEFAULT 0 NOT NULL, + approved TINYINT(1) UNSIGNED DEFAULT 0 NOT NULL, + message_timestamp INT(11) UNSIGNED DEFAULT 0 NOT NULL, + message_modifystamp INT(11) UNSIGNED DEFAULT 0 NOT NULL, + view_count INT(11) UNSIGNED DEFAULT 0 NOT NULL, + locked TINYINT(1) UNSIGNED DEFAULT 0 NOT NULL, + last_message_id INT(10) UNSIGNED DEFAULT 0 NOT NULL, + last_message_author VARCHAR(255), +-- + PRIMARY KEY (message_id) +); +CREATE INDEX agora_messages_forum_id ON agora_messages (forum_id); +CREATE INDEX agora_messages_message_thread ON agora_messages (message_thread); +CREATE INDEX agora_messages_parents ON agora_messages (parents); + +CREATE TABLE agora_moderators ( + forum_id SMALLINT(6) UNSIGNED NOT NULL, + horde_uid VARCHAR(32) NOT NULL, +-- + PRIMARY KEY (forum_id, horde_uid) +); diff --git a/agora/scripts/sql/agora.sql b/agora/scripts/sql/agora.sql new file mode 100644 index 000000000..e3c8f1c66 --- /dev/null +++ b/agora/scripts/sql/agora.sql @@ -0,0 +1,67 @@ +-- $Horde: agora/scripts/sql/agora.sql,v 1.16 2009/10/20 21:28:30 jan Exp $ + +CREATE TABLE agora_files ( + file_id INT NOT NULL, + file_name VARCHAR(255) NOT NULL, + file_size INT DEFAULT 0 NOT NULL, + file_type VARCHAR(32) NOT NULL, + message_id INT DEFAULT 0 NOT NULL, +-- + PRIMARY KEY (file_id) +); +CREATE INDEX agora_file_message_idx ON agora_files (message_id); + +CREATE TABLE agora_forums ( + forum_id INT NOT NULL, + scope VARCHAR(10) NOT NULL, + forum_name VARCHAR(255) NOT NULL, + active SMALLINT NOT NULL, + forum_description VARCHAR(255), + forum_parent_id INT, + author VARCHAR(32) NOT NULL, + forum_moderated SMALLINT, + forum_attachments SMALLINT DEFAULT 0 NOT NULL, + forum_distribution_address VARCHAR(255) DEFAULT '' NOT NULL, + message_count INT DEFAULT 0, + thread_count INT DEFAULT 0, + count_views SMALLINT, + last_message_id INT DEFAULT 0 NOT NULL, + last_message_author VARCHAR(32), + last_message_timestamp INT DEFAULT 0 NOT NULL, +-- + PRIMARY KEY (forum_id) +); +CREATE INDEX agora_forum_scope_idx ON agora_forums (scope, active); + +CREATE TABLE agora_messages ( + message_id INT NOT NULL, + forum_id INT DEFAULT 0 NOT NULL, + message_thread INT DEFAULT 0 NOT NULL, + parents VARCHAR(255), + message_author VARCHAR(32) NOT NULL, + message_subject VARCHAR(85) NOT NULL, + body text NOT NULL, + attachments SMALLINT DEFAULT 0 NOT NULL, + ip VARCHAR(30) NOT NULL, + status SMALLINT DEFAULT 2 NOT NULL, + message_seq INT DEFAULT 0 NOT NULL, + approved SMALLINT DEFAULT 0 NOT NULL, + message_timestamp INT DEFAULT 0 NOT NULL, + message_modifystamp INT DEFAULT 0 NOT NULL, + view_count INT DEFAULT 0 NOT NULL, + locked SMALLINT DEFAULT 0 NOT NULL, + last_message_id INT DEFAULT 0 NOT NULL, + last_message_author VARCHAR(32), +-- + PRIMARY KEY (message_id) +); +CREATE INDEX agora_messages_forum_id ON agora_messages (forum_id); +CREATE INDEX agora_messages_message_thread ON agora_messages (message_thread); +CREATE INDEX agora_messages_parents ON agora_messages (parents); + +CREATE TABLE agora_moderators ( + forum_id INT DEFAULT 0 NOT NULL, + horde_uid VARCHAR(32) NOT NULL, +-- + PRIMARY KEY (forum_id, horde_uid) +); diff --git a/agora/scripts/upgrades/2006-10-26_forums_table.php b/agora/scripts/upgrades/2006-10-26_forums_table.php new file mode 100755 index 000000000..4f9a0993d --- /dev/null +++ b/agora/scripts/upgrades/2006-10-26_forums_table.php @@ -0,0 +1,76 @@ +#!/usr/bin/php +setOption('portability', DB_PORTABILITY_LOWERCASE | DB_PORTABILITY_ERRORS); + +/* Copy forums. */ +$max_id = 0; +$forums = $db->getAll('SELECT * FROM horde_datatree WHERE group_uid LIKE \'agora.forums%\'', DB_FETCHMODE_ASSOC); +foreach ($forums as $forum) { + if ($forum['datatree_id'] > $max_id) { + $max_id = $forum['datatree_id']; + } + + $result = $db->getAll('SELECT * FROM horde_datatree_attributes WHERE datatree_id = ?', array($forum['datatree_id']), DB_FETCHMODE_ASSOC); + $attributes = array(); + foreach ($result as $attr) { + $attributes[$attr['attribute_name'] . '_' . $attr['attribute_key']] = $attr['attribute_value']; + } + + $sql = 'INSERT INTO agora_forums' . + ' (forum_id, scope, active, forum_name, forum_description, author, forum_moderated, message_count, forum_attachments, forum_parent_id, count_views, thread_count)' . + ' VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 0, 0, 0)'; + + $values = array($forum['datatree_id'], + ($forum['group_uid'] == 'agora.forums') ? 'agora' : substr($forum['group_uid'], 13), + 1, + $forum['datatree_name'], + $attributes['forum_description'], + $forum['user_uid'], + (int)$attributes['forum_moderated'], + $attributes['message_seq'], + (int)$attributes['forum_attachments']); + + $result = $db->query($sql, $values); + if ($result instanceof PEAR_Error) { + var_dump($result); + exit; + } +} + +// Update DB sequence. +while ($db->nextId('agora_forums') < $max_id); diff --git a/agora/scripts/upgrades/2006-10-26_messages_table.php b/agora/scripts/upgrades/2006-10-26_messages_table.php new file mode 100755 index 000000000..6b915bd4f --- /dev/null +++ b/agora/scripts/upgrades/2006-10-26_messages_table.php @@ -0,0 +1,80 @@ +#!/usr/bin/php +setOption('portability', DB_PORTABILITY_LOWERCASE | DB_PORTABILITY_ERRORS); + +/* Get messages. */ +$sql = 'SELECT DISTINCT d.datatree_id, d.datatree_parents FROM horde_datatree d, horde_datatree_attributes a ' + . ' WHERE d.group_uid = \'agora.threads\' AND d.datatree_id = a.datatree_id'; +$threads = $db->getAssoc($sql); +if ($threads instanceof PEAR_Error) { + var_dump($threads); + exit; +} + +/* SQL mesage insert statement */ +$sql = 'INSERT INTO agora_messages ' + . '(message_id, forum_id, parents, message_thread, message_author, message_subject, body, message_timestamp, attachments, ip)' + . ' VALUES (?, ?, ?, ?, ?, ?, ?, ?, 0, \'\') '; + +foreach ($threads as $id => $parents) { + $result = $db->getAll('SELECT * FROM horde_datatree_attributes WHERE datatree_id = ?', array($id), DB_FETCHMODE_ASSOC); + $attributes = array(); + foreach ($result as $attr) { + $attributes[$attr['attribute_key']] = $attr['attribute_value']; + } + + // Remove main thread + $thread = explode(':', $parents); + unset($thread[1]); + + $params = array($id); + $params[] = $attributes['forum_id']; + $params[] = implode(':', $thread); + $params[] = count($thread) > 1 ? $thread[2] : 0; + $params[] = $attributes['author']; + $params[] = $attributes['subject']; + $params[] = $attributes['body']; + $params[] = $attributes['timestamp']; + + $result = $db->query($sql, $params); + if ($result instanceof PEAR_Error) { + var_dump($result); + exit; + } +} diff --git a/agora/scripts/upgrades/2006-10-28_update_counts.php b/agora/scripts/upgrades/2006-10-28_update_counts.php new file mode 100755 index 000000000..a2c24c652 --- /dev/null +++ b/agora/scripts/upgrades/2006-10-28_update_counts.php @@ -0,0 +1,100 @@ +#!/usr/bin/php +setOption('portability', DB_PORTABILITY_LOWERCASE | DB_PORTABILITY_ERRORS); + +/* Get threads. */ +$sql = 'SELECT message_id, forum_id FROM agora_messages WHERE message_thread = ?'; +$threads = $db->getAssoc($sql, false, array(0)); +if ($threads instanceof PEAR_Error) { + var_dump($threads); + exit; +} + +/* Reset message count */ +$db->query('UPDATE agora_messages SET message_seq = 0'); +echo 'Processing ' . count($threads) . ' threads' . "\n"; + +$sql = 'SELECT message_thread, COUNT(*) FROM agora_messages WHERE message_thread > ? GROUP BY message_thread'; +$counts = $db->getAssoc($sql, false, array(0)); +if ($counts instanceof PEAR_Error) { + var_dump($counts); + exit; +} + +/* Update the number of messages in thread */ +$forums = array(); +foreach ($threads as $message_id => $forum_id) { + if (!isset($counts[$message_id])) { + continue; + } + $count = $counts[$message_id]; + $db->query('UPDATE agora_messages SET message_seq = ? WHERE message_id = ?', array($count, $message_id)); + + if (!isset($forums[$forum_id])) { + $forums[$forum_id] = array('threads' => 0, + 'messages' => 0, + 'forum_id' => $forum_id); + } + + $forums[$forum_id]['threads'] += 1; + $forums[$forum_id]['messages'] += ($count + 1); +} + +echo "Update forums \n"; + +/* Update thread and message count for forums */ +$db->query('UPDATE agora_forums SET thread_count = 0, message_count = 0'); +$sth = $db->prepare('UPDATE agora_forums SET thread_count = ?, message_count = ? WHERE forum_id = ?'); +$result = $db->executeMultiple($sth, $forums); +if ($result instanceof PEAR_Error) { + var_dump($result); + exit; +} + +echo "Clean cache \n"; + +/* Clean cache */ +$forums = Agora_Messages::singleton('agora'); +foreach ($forums->getForums(0, false) as $forum_id) { + @$forums->cleanCache($forum_id); +} + +echo "done\n"; diff --git a/agora/scripts/upgrades/2006-12-20_add_moderators_table.sql b/agora/scripts/upgrades/2006-12-20_add_moderators_table.sql new file mode 100644 index 000000000..dad0e6230 --- /dev/null +++ b/agora/scripts/upgrades/2006-12-20_add_moderators_table.sql @@ -0,0 +1,6 @@ +CREATE TABLE agora_moderators ( + forum_id INT DEFAULT 0 NOT NULL, + horde_uid VARCHAR(32) NOT NULL, +-- + PRIMARY KEY (forum_id, horde_uid) +); diff --git a/agora/scripts/upgrades/2007-02-04_modifystamp.sql b/agora/scripts/upgrades/2007-02-04_modifystamp.sql new file mode 100644 index 000000000..57c080a05 --- /dev/null +++ b/agora/scripts/upgrades/2007-02-04_modifystamp.sql @@ -0,0 +1,3 @@ +ALTER TABLE agora_messages ADD message_modifystamp INT DEFAULT 0 NOT NULL; + +UPDATE agora_messages SET message_modifystamp = message_timestamp; \ No newline at end of file diff --git a/agora/scripts/upgrades/2007-09-23_last_message.php b/agora/scripts/upgrades/2007-09-23_last_message.php new file mode 100644 index 000000000..8550c70bd --- /dev/null +++ b/agora/scripts/upgrades/2007-09-23_last_message.php @@ -0,0 +1,102 @@ +#!/usr/bin/php +loadModule('Extended'); + +/* Update last forum messages */ +$forums = $mdb->getCol('SELECT forum_id FROM agora_forums WHERE last_message_id = 0 ORDER BY forum_id'); +if ($forums instanceof PEAR_Error) { + var_dump($forums); + exit; +} + +foreach ($forums as $forum_id) { + $sql = 'SELECT message_id, message_author, message_timestamp FROM agora_messages' . + ' WHERE forum_id = ' . (int)$forum_id . ' ORDER BY message_id DESC'; + $mdb->setLimit(1, 0); + $last = $mdb->getRow($sql); + if (empty($last)) { + continue; + } + + list($message_id, $message_author, $message_timestamp) = $last; + + $sql = 'UPDATE agora_forums' . + ' SET last_message_id = ?, last_message_author = ?, last_message_timestamp = ? WHERE forum_id = ?'; + + $statement = $mdb->prepare($sql); + $statement->execute(array($message_id, $message_author, $message_timestamp, $forum_id)); + + echo "Forums: $forum_id \n"; + +} + +/* Update last messages in threads */ +$mdb->setLimit(500, 0); +$threads = $mdb->getCol('SELECT message_id FROM agora_messages WHERE message_thread = 0 AND last_message_id = 0 ORDER BY message_id'); +if ($threads instanceof PEAR_Error) { + var_dump($threads); + exit; +} + +foreach ($threads as $thread_id) { + $sql = 'SELECT message_id, message_author, message_timestamp FROM agora_messages' . + ' WHERE message_thread = ' . (int)$thread_id . ' ORDER BY message_id DESC'; + $mdb->setLimit(1, 0); + $last = $mdb->getRow($sql); + if (empty($last)) { + continue; + } + + list($message_id, $message_author, $message_timestamp) = $last; + + $sql = 'UPDATE agora_messages' . + ' SET last_message_id = ?, last_message_author = ?, message_modifystamp = ? WHERE message_id = ?'; + + $statement = $mdb->prepare($sql); + $statement->execute(array($message_id, $message_author, $message_timestamp, $thread_id)); + + echo "Thread: $thread_id \n"; +} + +echo "done\n"; diff --git a/agora/scripts/upgrades/2007-09-23_last_message.sql b/agora/scripts/upgrades/2007-09-23_last_message.sql new file mode 100644 index 000000000..f20a5d52e --- /dev/null +++ b/agora/scripts/upgrades/2007-09-23_last_message.sql @@ -0,0 +1,6 @@ +ALTER TABLE agora_messages ADD last_message_id INT DEFAULT 0 NOT NULL; +ALTER TABLE agora_messages ADD last_message_author VARCHAR(255); + +ALTER TABLE agora_forums ADD last_message_id INT DEFAULT 0 NOT NULL; +ALTER TABLE agora_forums ADD last_message_author VARCHAR(255) DEFAULT 0 NOT NULL; +ALTER TABLE agora_forums ADD last_message_timestamp INT DEFAULT 0 NOT NULL; diff --git a/agora/scripts/upgrades/2008-10-26_add_distribution_address.sql b/agora/scripts/upgrades/2008-10-26_add_distribution_address.sql new file mode 100644 index 000000000..4c6fd3ddb --- /dev/null +++ b/agora/scripts/upgrades/2008-10-26_add_distribution_address.sql @@ -0,0 +1,4 @@ +-- +-- $Horde: agora/scripts/upgrades/2008-10-26_add_distribution_address.sql,v 1.2 2009/10/20 21:28:31 jan Exp $ +-- +ALTER TABLE agora_forums ADD COLUMN forum_distribution_address VARCHAR(255) DEFAULT '' NOT NULL diff --git a/agora/search.php b/agora/search.php new file mode 100644 index 000000000..e8d352a4c --- /dev/null +++ b/agora/search.php @@ -0,0 +1,72 @@ + + */ + +define('AGORA_BASE', dirname(__FILE__)); +require_once AGORA_BASE . '/lib/base.php'; +require_once AGORA_BASE . '/lib/Forms/Search.php'; + +/* Set up the forums object. */ +$scope = Horde_Util::getGet('scope', 'agora'); +$messages = &Agora_Messages::singleton($scope); +$vars = Horde_Variables::getDefaultVariables(); +$form = new SearchForm($vars, $scope); +$thread_page = Horde_Util::getFormData('thread_page'); + +$view = new Agora_View(); + +if ($form->isSubmitted() || $thread_page != null) { + + $form->getInfo($vars, $info); + + if (!empty($info['keywords'])) { + $info['keywords'] = preg_split('/\s+/', $info['keywords']); + } + + $sort_by = Agora::getSortBy('thread'); + $sort_dir = Agora::getSortDir('thread'); + $thread_per_page = $prefs->getValue('thread_per_page'); + $thread_start = $thread_page * $thread_per_page; + + $searchResults = $messages->search($info, $sort_by, $sort_dir, $thread_start, $thread_per_page); + if ($searchResults instanceof PEAR_Error) { + $notification->push($searchResults->getMessage(), 'horde.error'); + header('Location:' . Horde::applicationUrl('search.php')); + exit; + } + + if ($searchResults['total'] > count($searchResults['results'])) { + $pager_ob = new Horde_Ui_Pager('thread_page', $vars, array('num' => $searchResults['total'], 'url' => 'search.php', 'perpage' => $thread_per_page)); + foreach ($info as $key => $val) { + if ($val) { + if ($key == 'keywords') { + $val = implode(' ', $val); + } + $pager_ob->preserve($key, $val); + } + } + $view->pager_link = $pager_ob->render(); + } + + $view->searchTotal = number_format($searchResults['total']); + $view->searchResults = $searchResults['results']; +} + +$view->menu = Agora::getMenu('string'); +$view->notify = Horde_Util::bufferOutput(array($notification, 'notify'), array('listeners' => 'status')); +$view->searchForm = Horde_Util::bufferOutput(array($form, 'renderActive'), null, $vars, 'search.php', 'get'); + +$title = _("Search Forums"); +require AGORA_TEMPLATES . '/common-header.inc'; +echo $view->render('search.html.php'); +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/agora/templates/.htaccess b/agora/templates/.htaccess new file mode 100755 index 000000000..3a4288278 --- /dev/null +++ b/agora/templates/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/agora/templates/ban.html.php b/agora/templates/ban.html.php new file mode 100755 index 000000000..fb98d0a94 --- /dev/null +++ b/agora/templates/ban.html.php @@ -0,0 +1,19 @@ + +notify; ?> + +

_arrays['forum']['forum_name']; ?>

+
_arrays['forum']['forum_description']; ?>
+ +
+ +banned)): ?> +

+
    +banned as $k1 => $v1): ?> +
  • banned)) { echo $this->banned; } ?>
  • + +
+
+ + +formbox; ?> \ No newline at end of file diff --git a/agora/templates/block/forums.html.php b/agora/templates/block/forums.html.php new file mode 100755 index 000000000..5db8f4d36 --- /dev/null +++ b/agora/templates/block/forums.html.php @@ -0,0 +1,49 @@ + + + + col_headers['forum_name_class']; ?>> + col_headers['forum_name']; ?> + + col_headers['message_count_class']; ?>> + col_headers['message_count']; ?> + + col_headers['message_subject_class']; ?>> + col_headers['message_subject']; ?> + + col_headers['message_author_class']; ?>> + col_headers['message_author']; ?> + + col_headers['message_timestamp_class']; ?>> + col_headers['message_timestamp']; ?> + + + + +forums_list as $k1 => $v1): ?> + + + + + + + + + +
+ + + + [ $v2): ?>] + + + + + + + + + + + + +
diff --git a/agora/templates/block/thread.html.php b/agora/templates/block/thread.html.php new file mode 100755 index 000000000..9e75fb0e6 --- /dev/null +++ b/agora/templates/block/thread.html.php @@ -0,0 +1,41 @@ +threads_list)): ?> + + + + + + + + +threads_list as $k1 => $v1): ?> + + + + + + + + +
col_headers['message_thread_class']; ?>> + col_headers['message_thread']; ?> + col_headers['message_author_class']; ?>> + col_headers['message_author']; ?> + col_headers['message_timestamp_class']; ?>> + col_headers['message_timestamp']; ?> +
+ + thread_view_bodies)): ?> + + + + +
+ +
+ +
+ + + +
+ diff --git a/agora/templates/block/threads.html.php b/agora/templates/block/threads.html.php new file mode 100755 index 000000000..18e65890e --- /dev/null +++ b/agora/templates/block/threads.html.php @@ -0,0 +1,37 @@ + + + + col_headers['message_subject_class']; ?>> + col_headers['message_subject']; ?> + + col_headers['message_author_class']; ?>> + col_headers['message_author']; ?> + + col_headers['message_timestamp_class']; ?>> + col_headers['message_timestamp']; ?> + + + +threads)): ?> +threads as $k1 => $v1): ?> + + + + + + + + + + + + +
+ + + + + +
+ +
diff --git a/agora/templates/common-header.inc b/agora/templates/common-header.inc new file mode 100644 index 000000000..0ed3d03be --- /dev/null +++ b/agora/templates/common-header.inc @@ -0,0 +1,30 @@ + + + + + +' : '' ?> + +get('name'); +if (!empty($title)) $page_title .= ' :: ' . $title; +if (!empty($refresh_time) && ($refresh_time > 0) && !empty($refresh_url)) { + echo "\n"; +} + +Horde::includeScriptFiles(); + +?> +<?php echo htmlspecialchars($page_title) ?> + + +" href="" type="application/rss+xml" /> + + +> diff --git a/agora/templates/forums.html.php b/agora/templates/forums.html.php new file mode 100755 index 000000000..7ffe4046e --- /dev/null +++ b/agora/templates/forums.html.php @@ -0,0 +1,61 @@ + +notify; ?> + +

+ actions)): ?> + + actions); foreach ($this->actions as $k1 => $v1): ?>actions)) { echo $this->actions; } ?> + + +

+forums_list) || !empty($this->forums_list)): ?> + + + + + + + + + forums_list as $k2 => $v2): ?> + + + + + + + +
col_headers['forum_name_class']; ?>> + col_headers['forum_name']; ?> + col_headers['message_count_class']; ?>> + col_headers['message_count']; ?> + col_headers['thread_count_class']; ?>> + col_headers['thread_count']; ?> + col_headers['message_timestamp_class']; ?>> + col_headers['message_timestamp']; ?> +
+ +

+ + : + $v3): ?> + + +
+ : + $v4): ?> +
+ + + + + +
+ + + +
+ pager_link;?> + +

+ diff --git a/agora/templates/main.html.php b/agora/templates/main.html.php new file mode 100755 index 000000000..9cc078851 --- /dev/null +++ b/agora/templates/main.html.php @@ -0,0 +1,3 @@ + +notify; ?> +main; ?> diff --git a/agora/templates/messages/edit.html.php b/agora/templates/messages/edit.html.php new file mode 100755 index 000000000..cd81b1498 --- /dev/null +++ b/agora/templates/messages/edit.html.php @@ -0,0 +1,28 @@ + +notify; ?> + +formbox; ?> + +replying)): ?> + +
+

+ message_subject; ?> +

+ + + + + + +
+ message_author_avatar)): ?> + <?php echo $this->message_author; ?> +
+ + message_author; ?> +
+ message_body; ?> +
+ + diff --git a/agora/templates/messages/flat.html.php b/agora/templates/messages/flat.html.php new file mode 100644 index 000000000..5e805f058 --- /dev/null +++ b/agora/templates/messages/flat.html.php @@ -0,0 +1,34 @@ +threads_list as $k1 => $v1): ?> + +
+ +
+ + + + + + + + [ + + $v2): ?> + + + + ] + +
+ +
+

+ +

+
+ +
+
+ + diff --git a/agora/templates/messages/flat_thread.html.php b/agora/templates/messages/flat_thread.html.php new file mode 100755 index 000000000..edd032f0b --- /dev/null +++ b/agora/templates/messages/flat_thread.html.php @@ -0,0 +1,29 @@ +threads_list as $k1 => $v1): ?> + +
+ +
+
+
+ + +
+ +
[ + + $v2): ?> + + ] + +
+ +
+

+ +

+
+ +
+
+ + diff --git a/agora/templates/messages/form.html.php b/agora/templates/messages/form.html.php new file mode 100755 index 000000000..f746ccb51 --- /dev/null +++ b/agora/templates/messages/form.html.php @@ -0,0 +1,24 @@ + +notify; ?> + +formbox; ?> + +
+

+ message_subject; ?> +

+ + + + + + +
+ message_author_avatar)): ?> + <?php echo $this->message_author; ?> +
+ + message_author; ?> +
+ message_body; ?> +
diff --git a/agora/templates/messages/index.html.php b/agora/templates/messages/index.html.php new file mode 100755 index 000000000..fa1ce730f --- /dev/null +++ b/agora/templates/messages/index.html.php @@ -0,0 +1,22 @@ +" href="rss ?>" type="application/rss+xml" /> + +notify; ?> + +
+ actions)): ?> + + actions); foreach ($this->actions as $k1 => $v1): ?>actions)) { echo $this->actions; } ?> + + +
+ +pager_link; ?> + +
+ threads;?> +
+ +pager_link; ?> + +
+form; ?> \ No newline at end of file diff --git a/agora/templates/messages/message.html.php b/agora/templates/messages/message.html.php new file mode 100755 index 000000000..261e94b5b --- /dev/null +++ b/agora/templates/messages/message.html.php @@ -0,0 +1,44 @@ + +notify; ?> + +
+ actions)): ?> + + actions); foreach ($this->actions as $k1 => $v1): ?>actions)) { echo $this->actions; } ?> + + + message_subject)): ?>message_subject; ?>  +
+ +
+
+ message_author_avatar)): ?> + <?php echo $this->message_author; ?> +
+ + message_author; ?> + message_author_moderator)): ?> +
+ +
+
+

+ message_body; ?> + message_attachment)): ?>
message_attachment; ?> +

+
+
+
+ +

+ +

+ +
+ threads; ?> +
+ + pager_link; ?> + +
+form; ?> diff --git a/agora/templates/messages/threads.html.php b/agora/templates/messages/threads.html.php new file mode 100755 index 000000000..91dfcb597 --- /dev/null +++ b/agora/templates/messages/threads.html.php @@ -0,0 +1,50 @@ + + + + + + + + threads_list as $k1 => $v1): ?> + thread_view_bodies)): ?> style="border-bottom:0;" > + + + + + thread_view_bodies)): ?> + + + + + + +
+ col_headers['message_thread']; ?> + + col_headers['message_author']; ?> + + col_headers['message_timestamp']; ?> +
+ + + [ ] + + + + + +
+ +
+ +
+
diff --git a/agora/templates/moderate.html.php b/agora/templates/moderate.html.php new file mode 100755 index 000000000..901591ce8 --- /dev/null +++ b/agora/templates/moderate.html.php @@ -0,0 +1,56 @@ +menu)): ?> + + +notify; ?> + +messages)): ?> + +
+session_tag; ?> + +

+ + + + + col_headers['forum_id_class']; ?>> + col_headers['forum_id']; ?> + + col_headers['message_subject_class']; ?>> + col_headers['message_subject']; ?> + + col_headers['message_author_class']; ?>> + col_headers['message_author']; ?> + + col_headers['message_body_class']; ?>> + col_headers['message_body']; ?> + + col_headers['message_timestamp_class']; ?>> + col_headers['message_timestamp']; ?> + + + + + messages as $k1 => $v1): ?> + + + + + + + + + + +
+
+

+ buttons as $k2 => $v2): ?> + + +

+
+ +pager; ?> + + diff --git a/agora/templates/moderators.html.php b/agora/templates/moderators.html.php new file mode 100755 index 000000000..3cca586b4 --- /dev/null +++ b/agora/templates/moderators.html.php @@ -0,0 +1,33 @@ + +notify; ?> + +

+forums)): ?> + + + + + + +forums as $k1 => $v1): ?> + + + + + + +
forums)) { echo $this->forums; } ?> + + $v2): ?> +
+ + +
+ +

+ + + +
+ +formbox; ?> \ No newline at end of file diff --git a/agora/templates/prefs/avatarselect.inc b/agora/templates/prefs/avatarselect.inc new file mode 100644 index 000000000..22157e061 --- /dev/null +++ b/agora/templates/prefs/avatarselect.inc @@ -0,0 +1,10 @@ +isFolder(Agora::AVATAR_PATH, 'gallery')): ?> +

+ +

+ diff --git a/agora/templates/search.html.php b/agora/templates/search.html.php new file mode 100755 index 000000000..808c2c2b8 --- /dev/null +++ b/agora/templates/search.html.php @@ -0,0 +1,36 @@ + +notify; ?> + +searchResults)): ?> +

(searchTotal; ?>)

+ +searchResults as $k1 => $v1): ?> + + + + $v2): ?> + + + + + + + + +
+ +
  + + + + + +
+ +pager_link; ?> + +
+ + + +searchForm; ?> diff --git a/agora/templates/threads.html.php b/agora/templates/threads.html.php new file mode 100755 index 000000000..9da20e63c --- /dev/null +++ b/agora/templates/threads.html.php @@ -0,0 +1,71 @@ +" href="rss ?>" type="application/rss+xml" /> + +notify; ?> + +
+ actions)): ?> + + actions); foreach ($this->actions as $k1 => $v1): ?> + + + forum_name; ?> +
+
+ forum_description; ?> +
+ +threads)): ?> + + + + + + + + + + threads as $k2 => $v2): ?> + + + + + + + + +
col_headers['message_subject_class']; ?>> + col_headers['message_subject']; ?> + col_headers['message_seq_class']; ?>> + col_headers['message_seq']; ?> + col_headers['view_count_class']; ?>> + col_headers['view_count']; ?> + col_headers['message_author_class']; ?>> + col_headers['message_author']; ?> + col_headers['message_modifystamp_class']; ?>> + col_headers['message_modifystamp']; ?> +
+ + + + +
[ $v3): ?> ] +
[ $v4): ?> ] +
+
+ + + + + + + +
+ + + +
+ pager_link; ?> + +

+ + diff --git a/agora/themes/bluewhite/graphics/comment_box.png b/agora/themes/bluewhite/graphics/comment_box.png new file mode 100755 index 0000000000000000000000000000000000000000..39c6e1a226a3cd26218c7de18597a8a618f63847 GIT binary patch literal 729 zcmWNPSx8iI7{$jlF~J%~P4l6eUJ514z%0TTYot+Rw0}V)7*1dtwh{zENG38uL@#Zk zX_?EUxu>S7jgI5BMN2XlDwjf2oc(TdXYM`S^YC%_otMMmE6vs)3k!`6RVWl;={hY@ zC<4l4zb_f162W^6<4(=MbU%^!k*9$nS;H-r6Iqc8isDPs! z_A=O>!uAA`0EqDYfu|cH4c`)&4{%h!5VY|MdAfsl@F6)8g)X4SB z;+^)f?&a-zoq5Nryl`UNOmxx27*422LMaKgnNTuR5o0vbMG>8xMiQNzMi65Zp=6>Y zIu+4H5K2Y(^IP3R6Tm9eJYJOOKH-tb+sQ=p4gvpuZNvgFWrB%{@b)7arCs*U`j}~?8>TIjK2Hju+eb2 zb6Z^Ol-hbwA3v~?5?idiV3ID`CISt4mCatu{)vt1#1p=Sm7kjo3s+y?PHqiSw`DW6 z7xPtvmXtHx>*|?}3pb8q@NKA}J-6^yVN%$_pV^$7nh=K597xh=wVAhr6J{2#sInI0 QXr|Gp#NAimP1JG~ZkpKVy literal 0 HcmV?d00001 diff --git a/agora/themes/bluewhite/screen.css b/agora/themes/bluewhite/screen.css new file mode 100755 index 000000000..d5f71740a --- /dev/null +++ b/agora/themes/bluewhite/screen.css @@ -0,0 +1,24 @@ +/** + * $Horde: agora/themes/bluewhite/screen.css,v 1.2 2006/10/29 18:18:46 chuck Exp $ + */ + +.messageContainer { + background: #fff; + width: auto; +} +.messageAuthor { + float: left; + width: 10em; + border: 1px solid #ccc; + padding: 1em; + margin: 1em; +} +.messageBody { + float: left; + width: 410px; + min-height: 50px; + border: none; + margin: 1em; + padding: 0 0 30px 0; + background: #ffc url("graphics/comment_box.png") no-repeat bottom center; +} diff --git a/agora/themes/graphics/agora.png b/agora/themes/graphics/agora.png new file mode 100755 index 0000000000000000000000000000000000000000..b25f15f43205b42e6855b6e3c9bbc45ca5c05ca3 GIT binary patch literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}V1Q4E>xbJDKR;T2WP8`OQ}f?k zoBZ*?vM*28eSWg}!up^m2cnu|+2$2+Oh{wj*Uq)Jn)Bimo?9zz_D;3ByTSM2-mL%s z|37{D^vRPa#>U2CVq!oefnbT`{@XxGx+KUi7^naTU{E*VHU%n+@pN$vskk-w+)J(o z1p$_Xw|b>}cOCm)e?jQ70>`4C#veAm(c|u~VO5Bk>&U#)NP;;>L7dTW-^N>+ul*UO zRl454w&tzopr E05PV7#Q*>R literal 0 HcmV?d00001 diff --git a/agora/themes/graphics/favicon.ico b/agora/themes/graphics/favicon.ico new file mode 100755 index 0000000000000000000000000000000000000000..3cb06ae7611cbcdbf9384375f3deb1ef0b6664ab GIT binary patch literal 1406 zcmZQzU<5(|0R|w+!H~hqz#zuJz@P!dKp_SNAO?xUfFL&m0|)~J!C>O;4-Cs6eP-y| zeuQEEscQ_Auf1Vd_TVGKx+h;4Hb42y5VZaRL)3vM3~aH@3>*dX7}(P$FmSc+W8kb_ z%fK_`B7@D!TMSlH_cHiyxXX~W_aVdo|Nj}DK7GpY07*%RDR7z_%#!4RiSq&lBqh1{fP4@`l7p9rkB^s|QxeD(6%mtUXJuw!V`O5K zfXWNA2=WW@3kt*Z3kXO`ic9hd!T9_T^Z8+XG@1lI0gEfH|NnC`|NjrE1hN@^{`AcK sQOLmXgE1+;fib0+fiWw&0a(EP0G5|O3WJh={$v1_aUdL$57d_r0GV@T(f|Me literal 0 HcmV?d00001 diff --git a/agora/themes/graphics/flagged.png b/agora/themes/graphics/flagged.png new file mode 100755 index 0000000000000000000000000000000000000000..63ac464d40d379ee483695ee1089b047f274f689 GIT binary patch literal 350 zcmV-k0iphhP)C zuN%1GdB0U%M*-Tl9LJ_uoKlhkIvq&K--$XHKm<=4?tYj>qyRWTzP=&3)fj3>Zigo% pKXwekdLLuddf3kl1LGgq4=$A;2(3Jeo@M|5002ovPDHLkV1mN)f(-xw literal 0 HcmV?d00001 diff --git a/agora/themes/graphics/hot.png b/agora/themes/graphics/hot.png new file mode 100755 index 0000000000000000000000000000000000000000..6d80d982e5782640852d00e2a9ed6e4e9d60bbe8 GIT binary patch literal 353 zcmV-n0iOPeP)Dd&5k*;$T(PH`^n4 d-ZeyjU|RcwxlsA!jx3<@44$rjF6*2UngA{INvZ$< literal 0 HcmV?d00001 diff --git a/agora/themes/graphics/newforum.png b/agora/themes/graphics/newforum.png new file mode 100755 index 0000000000000000000000000000000000000000..18cb781b3762e1477beb580e693f6e2b1e012302 GIT binary patch literal 380 zcmV-?0fYXDP)Os14lt(#Tys1?MrW5=>$&$wpKy@%Dph2Y3<=+ATQ)OG*Va{1nS z|Kx-J=8pd6mHFnR{O6wk=a&5EpZV#q|LLIr>ZkwhwEytK|M1rT`RD)t{{R30#j3Z+>|~tyjxM7>e*|n&tW7Sd>+zMR1k{t<|R@j^xfi)VHH7PS^8oE5g?W zmub5*u7%|NZr}jtBw{ZQhKM8(S#Z9OoO1v`B6=o?wYE>m7(*gZLa&8j_@rS1GH;l5 adHx1PJQY~-bJENJ0000P)#`R7$kE5E8=?bLP8xMu(Ar~l@T|M0_mZauA=RlBEL z$FgFaj7-yYd$Rxl00DGTPE!Ct=GbNc004SPL_t(|+Kr6c4ul{K1tp3K*=@YLCAt>_ z|No1Y1KIfKJTXJt;togT>OBkg`T7lYjlk2?Zrk|ytX=02qGP~0n@=(vO%7?Ev?&q7ci+7yLQqPI1+$h=ivO97fnN&z1g&`tE3&T{ Q_5c6?07*qoM6N<$f`iYK)&Kwi literal 0 HcmV?d00001 diff --git a/agora/themes/graphics/reply.png b/agora/themes/graphics/reply.png new file mode 100755 index 0000000000000000000000000000000000000000..9eb9e40924cef00c4250c58a8905cac0c7b13fba GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!cYsfb>;M1%(`KH@m~}RL?zx&( z*Jd7gvhl*J+i!k-{_*$G+aGP4ZvX!KZ`aLFhi<%GaP0Y-)6dtRd)c?+e%}1^EgNqA z`~Sao_4U91{%^ea254Sj<o;bq fw@=>e-^uvzHS^cMX*q>JQyDy6{an^LB{Ts5=bvru literal 0 HcmV?d00001 diff --git a/agora/themes/graphics/thread.png b/agora/themes/graphics/thread.png new file mode 100755 index 0000000000000000000000000000000000000000..872886359a4a55fba0fe04a7ff021bf1fa5d2d63 GIT binary patch literal 316 zcmV-C0mJ@@P)Zi!EWB=uedu~1d-h2P@%e$vs zs`)hg00001bW%=J06^y0W&i*Hen~_@RCwB*%h3*lAPj|JDX1uHvW~$JFvh+AJFa!c zEZN<@yYr`Q{v+A864NJy}KUSbH#GLi`>aH->+lu|NK;DX&NrD@9fMuEYp`SAwv<_5np3G!6{ O0000Zi!EWB=uedu~1d-h2P@%e$vs zs`)hg00001bW%=J06^y0W&i*Hen~_@RCwB*%h3*lAPj|JDX1uHvW~$JFvh+AJFa!c zEZN<@yYr`Q{v+A864NJy}KUSbH#GLi`>aH->+lu|NK;DX&NrD@9fMuEYp`SAwv<_5np3G!6{ O0000 + * @author Marko Djukic + */ + +define('AGORA_BASE', dirname(__FILE__)); +require_once AGORA_BASE . '/lib/base.php'; +require_once AGORA_BASE . '/lib/Messages.php'; + +/* Make sure we have a forum id. */ +list($forum_id, , $scope) = Agora::getAgoraId(); +if (empty($forum_id)) { + header('Location: ' . Horde::applicationUrl('forums.php', true)); + exit; +} + +/* Check if this is a valid thread, otherwise show the forum list. */ +$threads = &Agora_Messages::singleton($scope, $forum_id); +if ($threads instanceof PEAR_Error) { + $notification->push(sprintf(_("Could not list threads. %s"), $threads->getMessage()), 'horde.warning'); + header('Location: ' . Horde::applicationUrl('forums.php', true)); + exit; +} + +/* Which thread page are we on? Default to page 0. */ +$thread_page = Horde_Util::getFormData('thread_page', 0); +$threads_per_page = $prefs->getValue('threads_per_page'); +$thread_start = $thread_page * $threads_per_page; + +/* Get the forum data. */ +$forum_array = $threads->getForum(); + +/* Get the sorting. */ +$sort_by = Agora::getSortBy('threads'); +$sort_dir = Agora::getSortDir('threads'); + +/* Get a list of threads. */ +$threads_list = $threads->getThreads(0, false, $sort_by, $sort_dir, false, '', null, $thread_start, $threads_per_page); +if ($threads_list instanceof PEAR_Error) { + $notification->push($threads_list->getMessage(), 'horde.error'); + header('Location: ' . Horde::applicationUrl('forums.php', true)); + exit; +} elseif (empty($threads_list)) { + $threads_count = 0; +} else { + $threads_count = $threads->_forum['thread_count']; +} +/* Set up the column headers. */ +$col_headers = array('message_subject' => _("Subject"), 'message_seq' => _("Posts"), 'view_count' => _("Views"), 'message_author' => _("Started"), 'message_modifystamp' => _("Last post")); +$col_headers = Agora::formatColumnHeaders($col_headers, $sort_by, $sort_dir, 'threads'); + +/* Set up the template tags. */ +$view = new Agora_View(); +$view->col_headers = $col_headers; +$view->threads = $threads_list; +$view->forum_name = sprintf(_("Threads in %s"), $forum_array['forum_name']); +$view->forum_description = Agora_Messages::formatBody($forum_array['forum_description']); +$view->actions = $threads->getThreadActions(); +$view->menu = Agora::getMenu('string'); +$view->notify = Horde_Util::bufferOutput(array($notification, 'notify'), array('listeners' => 'status')); +$view->rss = Horde_Util::addParameter(Horde::applicationUrl('rss/threads.php', true, -1), array('scope' => $scope, 'forum_id' => $forum_id)); + +/* Set up pager. */ +$vars = Horde_Variables::getDefaultVariables(); +$pager_ob = new Horde_Ui_Pager('thread_page', $vars, array('num' => $threads_count, 'url' => 'threads.php', 'perpage' => $threads_per_page)); +$pager_ob->preserve('agora', Horde_Util::getFormData('agora')); +$view->pager_link = $pager_ob->render(); + +$title = sprintf(_("Threads in %s"), $forum_array['forum_name']); +require AGORA_TEMPLATES . '/common-header.inc'; +echo $view->render('threads.html.php'); +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/agora/view.php b/agora/view.php new file mode 100644 index 000000000..5bfade8e8 --- /dev/null +++ b/agora/view.php @@ -0,0 +1,34 @@ + + */ + +define('AGORA_BASE', dirname(__FILE__)); +require_once AGORA_BASE . '/lib/base.php'; + +$action_id = Horde_Util::getFormData('action_id', 'download'); +$file_id = Horde_Util::getFormData('file_id'); +$file_name = Horde_Util::getFormData('file_name'); +$vfs_path = Agora::VFS_PATH . Horde_Util::getFormData('forum_id') . '/' . Horde_Util::getFormData('message_id'); +$file_type = Horde_Util::getFormData('file_type'); + +/* Get VFS object. */ +$vfs = Agora::getVFS(); + +/* Run through action handlers. TODO: Do inline viewing. */ +switch ($action_id) { +case 'download': + $file_data = $vfs->read($vfs_path, $file_id); + $browser->downloadHeaders($file_name, $file_type, false, strlen($file_data)); + echo $file_data; + break; +} -- 2.11.0