From f9e857d2552a244a1a42d36eb85feed29eed6fe1 Mon Sep 17 00:00:00 2001 From: Neo <321592+Neo-Desktop@users.noreply.github.com> Date: Fri, 19 Dec 2025 00:44:43 -0800 Subject: [PATCH] Version 3.4.9 --- upload/admin/api/api_core.php | 2 +- upload/admin/api/forums/api_topic_view.php | 2 +- .../core/extensions/admin/group_form.php | 2 +- .../core/extensions/admin/member_form.php | 2 +- .../core/extensions/coreExtensions.php | 4 +- .../core/extensions/coreVariables.php | 2 +- .../extensions/dashboardNotifications.php | 2 +- .../core/extensions/editorSections.php | 2 +- .../core/extensions/enhancements/facebook.php | 2 +- .../enhancements/googleanalytics.php | 2 +- .../extensions/enhancements/ipsbackup.php | 2 +- .../core/extensions/enhancements/ipscdn.php | 4 +- .../core/extensions/enhancements/twitter.php | 2 +- .../core/extensions/enhancements/viglink.php | 4 +- .../extensions/enhancements/windowslive.php | 2 +- .../core/extensions/furlTemplates.php | 2 +- .../core/extensions/like/default.php | 2 +- .../core/extensions/navigation/generate.php | 2 +- .../core/extensions/notifications.php | 2 +- .../core/extensions/reportPlugins/default.php | 2 +- .../core/extensions/rssOutput.php | 2 +- .../core/extensions/search/config.php | 2 +- .../core/extensions/search/engines/sql.php | 2 +- .../core/extensions/search/form.php | 2 +- .../core/extensions/search/format.php | 2 +- .../sharedmedia/plugin_attachments.php | 2 +- .../core/extensions/sphinxTemplate.php | 2 +- .../core/extensions/usercpForms.php | 2 +- .../applications/core/extensions/warnings.php | 2 +- .../core/modules_admin/ajax/bookmarks.php | 2 +- .../core/modules_admin/ajax/compare.php | 2 +- .../core/modules_admin/ajax/css.php | 2 +- .../core/modules_admin/ajax/editor.php | 2 +- .../core/modules_admin/ajax/findnames.php | 2 +- .../core/modules_admin/ajax/hooks.php | 2 +- .../core/modules_admin/ajax/livesearch.php | 2 +- .../core/modules_admin/ajax/replacements.php | 2 +- .../core/modules_admin/ajax/skinsets.php | 2 +- .../core/modules_admin/ajax/tabs.php | 2 +- .../core/modules_admin/ajax/templatediff.php | 2 +- .../core/modules_admin/ajax/templates.php | 2 +- .../core/modules_admin/ajax/templatesandr.php | 2 +- .../core/modules_admin/ajax/uagents.php | 2 +- .../applications/applications.php | 2 +- .../core/modules_admin/applications/blog.php | 2 +- .../core/modules_admin/applications/ccs.php | 2 +- .../modules_admin/applications/copyright.php | 2 +- .../applications/defaultSection.php | 2 +- .../modules_admin/applications/downloads.php | 2 +- .../applications/enhancements.php | 2 +- .../modules_admin/applications/gallery.php | 2 +- .../core/modules_admin/applications/hooks.php | 2 +- .../core/modules_admin/applications/nexus.php | 2 +- .../core/modules_admin/applications/setup.php | 2 +- .../core/modules_admin/attach/attach.php | 2 +- .../diagnostics/defaultSection.php | 2 +- .../modules_admin/diagnostics/diagnostics.php | 2 +- .../modules_admin/help/defaultSection.php | 2 +- .../core/modules_admin/help/quickhelp.php | 2 +- .../languages/defaultSection.php | 2 +- .../languages/manage_languages.php | 2 +- .../modules_admin/login/manualResolver.php | 2 +- .../core/modules_admin/logs/adminlogs.php | 2 +- .../modules_admin/logs/defaultSection.php | 2 +- .../modules_admin/logs/emailerrorlogs.php | 2 +- .../core/modules_admin/logs/errorlogs.php | 2 +- .../core/modules_admin/logs/loginlog.php | 2 +- .../core/modules_admin/logs/logsSplash.php | 2 +- .../core/modules_admin/logs/mobilelogs.php | 2 +- .../core/modules_admin/logs/modlogs.php | 2 +- .../core/modules_admin/logs/spamlogs.php | 2 +- .../core/modules_admin/logs/spiderlogs.php | 2 +- .../core/modules_admin/logs/sqlerror.php | 2 +- .../core/modules_admin/logs/tasklogs.php | 2 +- .../core/modules_admin/logs/warnlogs.php | 2 +- .../core/modules_admin/logs/xmlrpclogs.php | 2 +- .../mobileapp/defaultSection.php | 2 +- .../core/modules_admin/mobileapp/images.php | 2 +- .../core/modules_admin/mycp/dashboard.php | 9 +- .../modules_admin/mycp/defaultSection.php | 2 +- .../core/modules_admin/mycp/details.php | 2 +- .../core/modules_admin/mycp/tabs.php | 2 +- .../core/modules_admin/posts/badwords.php | 2 +- .../core/modules_admin/posts/bbcode.php | 2 +- .../modules_admin/posts/defaultSection.php | 2 +- .../core/modules_admin/posts/emoticons.php | 2 +- .../core/modules_admin/posts/media.php | 2 +- .../modules_admin/report/defaultSection.php | 2 +- .../core/modules_admin/report/reports.php | 2 +- .../modules_admin/settings/defaultSection.php | 2 +- .../core/modules_admin/settings/settings.php | 2 +- .../core/modules_admin/sql/defaultSection.php | 2 +- .../core/modules_admin/sql/mysql.php | 2 +- .../core/modules_admin/sql/toolbox.php | 2 +- .../core/modules_admin/system/charts.php | 2 +- .../modules_admin/system/defaultSection.php | 2 +- .../core/modules_admin/system/security.php | 2 +- .../core/modules_admin/system/taskmanager.php | 2 +- .../templates/defaultSection.php | 2 +- .../core/modules_admin/templates/easylogo.php | 2 +- .../core/modules_admin/templates/external.php | 2 +- .../modules_admin/templates/importexport.php | 2 +- .../modules_admin/templates/replacements.php | 2 +- .../templates/searchandreplace.php | 2 +- .../core/modules_admin/templates/skindiff.php | 2 +- .../core/modules_admin/templates/skinsets.php | 2 +- .../templates/systemTemplates.php | 2 +- .../modules_admin/templates/templates.php | 2 +- .../core/modules_admin/templates/tools.php | 2 +- .../core/modules_admin/templates/urlmap.php | 2 +- .../modules_admin/templates/useragents.php | 2 +- .../core/modules_admin/tools/api.php | 2 +- .../core/modules_admin/tools/cache.php | 2 +- .../modules_admin/tools/defaultSection.php | 2 +- .../core/modules_admin/tools/help.php | 2 +- .../modules_admin/tools/incomingEmails.php | 2 +- .../core/modules_admin/tools/licensekey.php | 32 +- .../core/modules_admin/tools/login.php | 2 +- .../core/modules_admin/tools/logsSplash.php | 2 +- .../core/modules_admin/tools/performance.php | 2 +- .../core/modules_admin/tools/qanda.php | 2 +- .../core/modules_admin/tools/rebuild.php | 2 +- .../core/modules_admin/tools/sharelinks.php | 2 +- .../core/modules_admin/tools/uagents.php | 2 +- .../core/modules_public/ajax/attach.php | 2 +- .../core/modules_public/ajax/captcha.php | 2 +- .../core/modules_public/ajax/comments.php | 2 +- .../modules_public/ajax/defaultSection.php | 2 +- .../core/modules_public/ajax/editor.php | 2 +- .../core/modules_public/ajax/facebook.php | 2 +- .../core/modules_public/ajax/findnames.php | 2 +- .../core/modules_public/ajax/like.php | 2 +- .../core/modules_public/ajax/login.php | 2 +- .../core/modules_public/ajax/media.php | 2 +- .../core/modules_public/ajax/modcp.php | 2 +- .../core/modules_public/ajax/navigation.php | 2 +- .../modules_public/ajax/notifications.php | 2 +- .../core/modules_public/ajax/register.php | 2 +- .../core/modules_public/ajax/reports.php | 2 +- .../core/modules_public/ajax/reputation.php | 2 +- .../core/modules_public/ajax/search.php | 2 +- .../core/modules_public/ajax/sharelinks.php | 2 +- .../core/modules_public/ajax/skin.php | 2 +- .../core/modules_public/ajax/skingen.php | 2 +- .../core/modules_public/ajax/tags.php | 2 +- .../core/modules_public/ajax/templates.php | 2 +- .../core/modules_public/ajax/usercp.php | 2 +- .../core/modules_public/attach/attach.php | 2 +- .../modules_public/attach/defaultSection.php | 2 +- .../core/modules_public/global/captcha.php | 2 +- .../core/modules_public/global/comments.php | 2 +- .../modules_public/global/defaultSection.php | 2 +- .../core/modules_public/global/like.php | 2 +- .../core/modules_public/global/login.php | 2 +- .../core/modules_public/global/lostpass.php | 2 +- .../core/modules_public/global/navigation.php | 2 +- .../core/modules_public/global/privacy.php | 2 +- .../core/modules_public/global/register.php | 2 +- .../core/modules_public/global/reputation.php | 2 +- .../core/modules_public/global/rss.php | 2 +- .../core/modules_public/global/share.php | 2 +- .../core/modules_public/global/sitemap.php | 2 +- .../core/modules_public/global/skin.php | 2 +- .../modules_public/global/unsubscribe.php | 2 +- .../modules_public/help/defaultSection.php | 2 +- .../core/modules_public/help/help.php | 2 +- .../modules_public/modcp/defaultSection.php | 2 +- .../core/modules_public/modcp/modcp.php | 2 +- .../modules_public/reports/defaultSection.php | 2 +- .../core/modules_public/reports/reports.php | 2 +- .../modules_public/search/defaultSection.php | 2 +- .../core/modules_public/search/search.php | 2 +- .../modules_public/task/manualResolver.php | 2 +- .../modules_public/usercp/manualResolver.php | 2 +- .../upg_10002/version_upgrade_mysql.php | 2 +- .../upg_10004/version_upgrade_mysql.php | 2 +- .../versions/upg_20004/mysql_updates.php | 2 +- .../versions/upg_20005/mysql_updates.php | 2 +- .../versions/upg_20007/mysql_updates.php | 2 +- .../versions/upg_20009/mysql_updates.php | 2 +- .../versions/upg_20010/mysql_updates.php | 2 +- .../versions/upg_20012/mysql_updates.php | 2 +- .../versions/upg_21003/mysql_updates.php | 2 +- .../versions/upg_21003/mysql_updates_1.php | 2 +- .../versions/upg_21003/mysql_updates_2.php | 2 +- .../versions/upg_21003/mysql_updates_3.php | 2 +- .../versions/upg_21003/mysql_updates_4.php | 2 +- .../versions/upg_21003/version_upgrade.php | 2 +- .../versions/upg_21005/mysql_updates.php | 2 +- .../versions/upg_21007/mysql_updates.php | 2 +- .../versions/upg_21007/version_upgrade.php | 2 +- .../versions/upg_21008/mysql_updates.php | 2 +- .../versions/upg_21009/mysql_updates.php | 2 +- .../versions/upg_21010/mysql_updates.php | 2 +- .../versions/upg_21011/mysql_updates.php | 2 +- .../versions/upg_22005/mysql_updates.php | 2 +- .../versions/upg_22005/mysql_updates_1.php | 2 +- .../versions/upg_22005/mysql_updates_2.php | 2 +- .../versions/upg_22005/mysql_updates_3.php | 2 +- .../versions/upg_22005/version_upgrade.php | 2 +- .../versions/upg_22006/mysql_updates.php | 2 +- .../versions/upg_22007/mysql_updates.php | 2 +- .../versions/upg_22009/mysql_updates.php | 2 +- .../versions/upg_22010/mysql_updates.php | 2 +- .../versions/upg_22011/mysql_updates.php | 2 +- .../versions/upg_23000/mysql_updates.php | 2 +- .../versions/upg_23002/mysql_updates.php | 2 +- .../versions/upg_23003/mysql_updates.php | 2 +- .../versions/upg_23005/mysql_updates.php | 2 +- .../versions/upg_23008/mysql_updates.php | 2 +- .../versions/upg_23010/mysql_updates.php | 2 +- .../versions/upg_30001/mysql_updates.php | 2 +- .../versions/upg_30001/mysql_updates_1.php | 2 +- .../versions/upg_30001/mysql_updates_2.php | 2 +- .../versions/upg_30001/mysql_updates_3.php | 2 +- .../versions/upg_30001/mysql_updates_4.php | 2 +- .../versions/upg_30001/mysql_updates_5.php | 2 +- .../versions/upg_30001/mysql_updates_6.php | 2 +- .../upg_30001/mysql_version_upgrade.php | 2 +- .../versions/upg_30001/version_class.php | 2 +- .../versions/upg_30001/version_upgrade.php | 2 +- .../versions/upg_30003/mysql_updates.php | 2 +- .../versions/upg_30004/mysql_updates.php | 2 +- .../versions/upg_30005/mysql_updates.php | 2 +- .../versions/upg_30006/mysql_updates.php | 2 +- .../versions/upg_30007/mysql_updates.php | 2 +- .../versions/upg_30008/mysql_updates.php | 2 +- .../versions/upg_30008/version_upgrade.php | 2 +- .../versions/upg_30009/mysql_updates.php | 2 +- .../versions/upg_30010/mysql_updates.php | 2 +- .../versions/upg_30011/mysql_updates.php | 2 +- .../versions/upg_30012/mysql_updates.php | 2 +- .../versions/upg_31000/mysql_updates.php | 2 +- .../versions/upg_31003/mysql_updates.php | 2 +- .../versions/upg_31004/mysql_updates.php | 2 +- .../versions/upg_31005/mysql_updates.php | 2 +- .../versions/upg_31006/mysql_updates.php | 2 +- .../versions/upg_31007/mysql_updates.php | 2 +- .../versions/upg_32000/mysql_updates.php | 2 +- .../versions/upg_32000/mysql_updates_1.php | 2 +- .../versions/upg_32000/mysql_updates_2.php | 2 +- .../versions/upg_32000/mysql_updates_3.php | 2 +- .../versions/upg_32000/mysql_updates_4.php | 2 +- .../versions/upg_32000/mysql_updates_5.php | 2 +- .../versions/upg_32000/mysql_updates_6.php | 2 +- .../upg_32000/mysql_updates_logs_1.php | 2 +- .../upg_32000/mysql_updates_logs_10.php | 2 +- .../upg_32000/mysql_updates_logs_2.php | 2 +- .../upg_32000/mysql_updates_logs_3.php | 2 +- .../upg_32000/mysql_updates_logs_4.php | 2 +- .../upg_32000/mysql_updates_logs_5.php | 2 +- .../upg_32000/mysql_updates_logs_6.php | 2 +- .../upg_32000/mysql_updates_logs_7.php | 2 +- .../upg_32000/mysql_updates_logs_8.php | 2 +- .../upg_32000/mysql_updates_logs_9.php | 2 +- .../versions/upg_32000/version_class.php | 2 +- .../versions/upg_32000/version_upgrade.php | 2 +- .../versions/upg_32001/mysql_updates.php | 2 +- .../versions/upg_32001/version_upgrade.php | 2 +- .../versions/upg_32002/mysql_updates.php | 2 +- .../versions/upg_32003/mysql_updates.php | 2 +- .../versions/upg_32004/mysql_updates.php | 2 +- .../versions/upg_32005/mysql_updates.php | 2 +- .../versions/upg_32006/mysql_updates.php | 2 +- .../versions/upg_32007/mysql_updates.php | 2 +- .../versions/upg_33000/mysql_updates_1.php | 2 +- .../versions/upg_33000/mysql_updates_2.php | 2 +- .../versions/upg_33000/version_class.php | 2 +- .../versions/upg_33010/version_class.php | 2 +- .../versions/upg_34000/version_class.php | 2 +- .../core/skin_cp/cp_skin_adminlogs.php | 2 +- .../applications/core/skin_cp/cp_skin_api.php | 2 +- .../core/skin_cp/cp_skin_applications.php | 2 +- .../core/skin_cp/cp_skin_badwords.php | 2 +- .../core/skin_cp/cp_skin_bbcode.php | 2 +- .../core/skin_cp/cp_skin_diagnostics.php | 2 +- .../core/skin_cp/cp_skin_emailerrorlogs.php | 2 +- .../core/skin_cp/cp_skin_emoticons.php | 2 +- .../core/skin_cp/cp_skin_errorlogs.php | 2 +- .../core/skin_cp/cp_skin_group_core.php | 2 +- .../core/skin_cp/cp_skin_help_files.php | 2 +- .../core/skin_cp/cp_skin_hooks_export.php | 2 +- .../core/skin_cp/cp_skin_mobileapp.php | 2 +- .../core/skin_cp/cp_skin_mobilelogs.php | 2 +- .../core/skin_cp/cp_skin_modlogs.php | 2 +- .../core/skin_cp/cp_skin_mycp.php | 2 +- .../core/skin_cp/cp_skin_performance.php | 2 +- .../core/skin_cp/cp_skin_qanda.php | 2 +- .../core/skin_cp/cp_skin_rebuild.php | 2 +- .../core/skin_cp/cp_skin_reports.php | 2 +- .../core/skin_cp/cp_skin_security.php | 2 +- .../core/skin_cp/cp_skin_settings.php | 2 +- .../core/skin_cp/cp_skin_setup.php | 2 +- .../core/skin_cp/cp_skin_spamlogs.php | 2 +- .../core/skin_cp/cp_skin_spiderlogs.php | 2 +- .../applications/core/skin_cp/cp_skin_sql.php | 2 +- .../core/skin_cp/cp_skin_system.php | 2 +- .../core/skin_cp/cp_skin_templates.php | 2 +- .../core/skin_cp/cp_skin_tools.php | 2 +- .../core/skin_cp/cp_skin_warnlogs.php | 2 +- .../sources/classes/attach/class_attach.php | 2 +- .../sources/classes/attach/controller.php | 2 +- .../core/sources/classes/hooks/gateway.php | 2 +- .../core/sources/classes/hooksFunctions.php | 2 +- .../core/sources/classes/reportLibrary.php | 2 +- .../sources/classes/reportNotifications.php | 2 +- .../core/sql/mysql_report_queries.php | 2 +- .../core/sql/mysql_seo_queries.php | 2 +- .../core/sql/mysql_tag_queries.php | 2 +- .../admin/applications/core/tasks/archive.php | 2 +- .../admin/applications/core/tasks/backup.php | 2 +- .../applications/core/tasks/cleanout.php | 2 +- .../applications/core/tasks/contentcache.php | 2 +- .../applications/core/tasks/itemmarkers.php | 2 +- .../applications/core/tasks/logprune.php | 2 +- .../applications/core/tasks/minifycleanup.php | 2 +- .../applications/core/tasks/mysqlcleanup.php | 2 +- .../applications/core/tasks/optimize.php | 2 +- .../applications/core/tasks/pop3email.php | 2 +- .../applications/core/tasks/rebuildstats.php | 2 +- .../core/tasks/sitemapgenerator.php | 2 +- .../core/xml/admin_core_language_pack.xml | 4374 ++++++++--------- .../applications/core/xml/core_mobile_css.xml | 10 +- .../applications/core/xml/core_root_css.xml | 22 +- .../core/xml/core_root_templates.xml | 1 - .../core/xml/core_xmlskin_css.xml | 22 +- .../core/xml/public_core_language_pack.xml | 3050 ++++++------ .../admin/applications/core/xml/versions.xml | 4 + .../applications/forums/app_class_forums.php | 2 +- .../forums/extensions/admin/group_form.php | 2 +- .../forums/extensions/admin/member_form.php | 2 +- .../extensions/attachments/plugin_post.php | 2 +- .../forums/extensions/coreExtensions.php | 8 +- .../forums/extensions/coreVariables.php | 2 +- .../forums/extensions/dataHookLocations.php | 2 +- .../forums/extensions/editorSections.php | 2 +- .../forums/extensions/furlRedirect.php | 2 +- .../forums/extensions/furlTemplates.php | 2 +- .../forums/extensions/like/forums.php | 2 +- .../forums/extensions/like/topics.php | 2 +- .../forums/extensions/memberSync.rename.php | 2 +- .../extensions/modcp/plugin_announcements.php | 2 +- .../extensions/modcp/plugin_deletedposts.php | 2 +- .../extensions/modcp/plugin_deletedtopics.php | 2 +- .../modcp/plugin_unapprovedposts.php | 2 +- .../modcp/plugin_unapprovedtopics.php | 2 +- .../forums/extensions/navigation/generate.php | 2 +- .../forums/extensions/notifications.php | 2 +- .../extensions/profileTabs/posts.conf.php | 2 +- .../forums/extensions/profileTabs/posts.php | 2 +- .../extensions/profileTabs/topics.conf.php | 2 +- .../forums/extensions/profileTabs/topics.php | 2 +- .../forums/extensions/reportPlugins/post.php | 10 +- .../forums/extensions/reputation.php | 2 +- .../forums/extensions/rssOutput.php | 2 +- .../forums/extensions/search/config.php | 2 +- .../extensions/search/engines/sphinx.php | 2 +- .../forums/extensions/search/engines/sql.php | 364 +- .../forums/extensions/search/form.php | 2 +- .../forums/extensions/search/format.php | 2 +- .../forums/extensions/sphinxTemplate.php | 2 +- .../forums/extensions/tags/topics.php | 2 +- .../forums/extensions/warnings.php | 2 +- .../forums/modules_admin/ajax/archive.php | 2 +- .../modules_admin/ajax/member_editform.php | 2 +- .../forums/modules_admin/archive/archive.php | 2 +- .../modules_admin/archive/defaultSection.php | 2 +- .../attachments/defaultSection.php | 2 +- .../modules_admin/attachments/search.php | 2 +- .../modules_admin/attachments/stats.php | 2 +- .../modules_admin/attachments/types.php | 2 +- .../modules_admin/forums/defaultSection.php | 2 +- .../forums/modules_admin/forums/forums.php | 2 +- .../forums/modules_admin/forums/moderator.php | 2 +- .../forums/modules_admin/forums/multimods.php | 2 +- .../modules_admin/rss/defaultSection.php | 2 +- .../forums/modules_admin/rss/export.php | 2 +- .../forums/modules_admin/rss/import.php | 2 +- .../statistics/defaultSection.php | 2 +- .../forums/modules_admin/statistics/stats.php | 12 +- .../modules_admin/tools/defaultSection.php | 2 +- .../forums/modules_admin/tools/tools.php | 2 +- .../modules_public/ajax/attachments.php | 2 +- .../modules_public/ajax/defaultSection.php | 2 +- .../forums/modules_public/ajax/emoticons.php | 2 +- .../forums/modules_public/ajax/forums.php | 2 +- .../forums/modules_public/ajax/markasread.php | 2 +- .../forums/modules_public/ajax/stats.php | 2 +- .../forums/modules_public/ajax/topics.php | 2 +- .../forums/modules_public/extras/answer.php | 2 +- .../modules_public/extras/boardrules.php | 2 +- .../modules_public/extras/defaultSection.php | 2 +- .../forums/modules_public/extras/forward.php | 2 +- .../forums/modules_public/extras/legends.php | 2 +- .../forums/modules_public/extras/rating.php | 2 +- .../forums/modules_public/extras/stats.php | 2 +- .../forums/modules_public/extras/toggle.php | 2 +- .../forums/modules_public/extras/vote.php | 2 +- .../modules_public/forums/announcements.php | 2 +- .../forums/modules_public/forums/attach.php | 2 +- .../forums/modules_public/forums/boards.php | 2 +- .../modules_public/forums/defaultSection.php | 2 +- .../forums/modules_public/forums/findpost.php | 2 +- .../forums/modules_public/forums/forums.php | 2 +- .../modules_public/forums/markasread.php | 2 +- .../forums/modules_public/forums/rules.php | 2 +- .../forums/modules_public/forums/topics.php | 2 +- .../moderate/defaultSection.php | 2 +- .../modules_public/moderate/moderate.php | 2 +- .../modules_public/moderate/multimod.php | 2 +- .../modules_public/post/defaultSection.php | 2 +- .../forums/modules_public/post/post.php | 2 +- .../forums/skin_cp/cp_skin_archive.php | 2 +- .../forums/skin_cp/cp_skin_attachments.php | 2 +- .../forums/skin_cp/cp_skin_forums.php | 2 +- .../forums/skin_cp/cp_skin_group_form.php | 2 +- .../forums/skin_cp/cp_skin_member_form.php | 2 +- .../forums/skin_cp/cp_skin_multimods.php | 2 +- .../forums/skin_cp/cp_skin_rss.php | 2 +- .../forums/skin_cp/cp_skin_stats.php | 2 +- .../classes/forums/admin_forum_functions.php | 2 +- .../sources/classes/forums/class_forums.php | 2 +- .../forums/sources/classes/hooks/gateway.php | 2 +- .../forums/sources/classes/moderate.php | 2 +- .../forums/sources/classes/post/classPost.php | 2 +- .../sources/classes/post/classPostForms.php | 2 +- .../forums/sources/classes/topics.php | 2 +- .../forums/sql/mysql_topics_queries.php | 2 +- .../forums/tasks/announcements.php | 2 +- .../forums/tasks/dailycleanout.php | 2 +- .../applications/forums/tasks/dailydigest.php | 2 +- .../applications/forums/tasks/permadelete.php | 2 +- .../applications/forums/tasks/rssimport.php | 2 +- .../applications/forums/tasks/updateviews.php | 2 +- .../forums/tasks/weeklydigest.php | 2 +- .../forums/xml/admin_forums_language_pack.xml | 756 +-- .../xml/public_forums_language_pack.xml | 612 +-- .../applications/forums/xml/versions.xml | 4 + .../members/extensions/admin/member_form.php | 2 +- .../extensions/attachments/plugin_msg.php | 2 +- .../members/extensions/coreExtensions.php | 4 +- .../members/extensions/coreVariables.php | 2 +- .../extensions/dashboardNotifications.php | 2 +- .../members/extensions/dataHookLocations.php | 2 +- .../members/extensions/editorSections.php | 2 +- .../extensions/enhancements/mandrill.php | 26 +- .../enhancements/spammonitoring.php | 2 +- .../members/extensions/furlRedirect.php | 2 +- .../members/extensions/furlTemplates.php | 2 +- .../members/extensions/memberSync.php | 2 +- .../extensions/modcp/plugin_banned.php | 2 +- .../extensions/modcp/plugin_iplookup.php | 2 +- .../extensions/modcp/plugin_modposts.php | 2 +- .../extensions/modcp/plugin_restrictposts.php | 2 +- .../extensions/modcp/plugin_suspended.php | 2 +- .../members/extensions/modcp/plugin_warn.php | 2 +- .../extensions/notifications/config.php | 2 +- .../members/extensions/notifications/pm.php | 2 +- .../extensions/profileTabs/friends.conf.php | 2 +- .../extensions/profileTabs/friends.php | 2 +- .../profileTabs/reputation.conf.php | 2 +- .../extensions/profileTabs/reputation.php | 2 +- .../extensions/profileTabs/status.conf.php | 2 +- .../members/extensions/profileTabs/status.php | 2 +- .../extensions/reportPlugins/messages.php | 2 +- .../extensions/reportPlugins/profiles.php | 2 +- .../members/extensions/search/config.php | 2 +- .../members/extensions/search/engines/sql.php | 10 +- .../members/extensions/search/form.php | 2 +- .../members/extensions/search/format.php | 2 +- .../members/extensions/sphinxTemplate.php | 2 +- .../members/extensions/warnings.php | 2 +- .../members/modules_admin/ajax/bulkmail.php | 2 +- .../modules_admin/ajax/defaultSection.php | 2 +- .../members/modules_admin/ajax/editform.php | 2 +- .../members/modules_admin/ajax/members.php | 2 +- .../modules_admin/bulkmail/bulkmail.php | 11 +- .../modules_admin/bulkmail/defaultSection.php | 2 +- .../modules_admin/cfields/customfields.php | 2 +- .../modules_admin/cfields/defaultSection.php | 2 +- .../modules_admin/groups/defaultSection.php | 2 +- .../members/modules_admin/groups/groups.php | 2 +- .../modules_admin/groups/permissions.php | 2 +- .../modules_admin/members/banfilters.php | 2 +- .../modules_admin/members/defaultSection.php | 2 +- .../modules_admin/members/editform.php | 2 +- .../members/modules_admin/members/members.php | 2 +- .../modules_admin/members/notifications.php | 2 +- .../members/modules_admin/members/ranks.php | 2 +- .../modules_admin/members/reputation.php | 2 +- .../members/modules_admin/members/tools.php | 2 +- .../restrictions/defaultSection.php | 2 +- .../restrictions/restrictions.php | 2 +- .../modules_admin/warnings/actions.php | 2 +- .../modules_admin/warnings/defaultSection.php | 2 +- .../modules_admin/warnings/reasons.php | 2 +- .../members/modules_public/ajax/card.php | 2 +- .../members/modules_public/ajax/dname.php | 2 +- .../members/modules_public/ajax/dst.php | 2 +- .../members/modules_public/ajax/friends.php | 2 +- .../members/modules_public/ajax/ignore.php | 2 +- .../members/modules_public/ajax/load.php | 2 +- .../members/modules_public/ajax/messenger.php | 2 +- .../members/modules_public/ajax/photo.php | 2 +- .../members/modules_public/ajax/rate.php | 2 +- .../members/modules_public/ajax/status.php | 2 +- .../members/modules_public/ajax/warnings.php | 2 +- .../modules_public/list/defaultSection.php | 2 +- .../members/modules_public/list/view.php | 2 +- .../messaging/defaultSection.php | 2 +- .../modules_public/messaging/markasread.php | 2 +- .../modules_public/messaging/search.php | 2 +- .../members/modules_public/messaging/send.php | 2 +- .../members/modules_public/messaging/view.php | 2 +- .../modules_public/online/defaultSection.php | 2 +- .../members/modules_public/online/online.php | 2 +- .../modules_public/profile/defaultSection.php | 2 +- .../members/modules_public/profile/dname.php | 2 +- .../modules_public/profile/friends.php | 2 +- .../members/modules_public/profile/ignore.php | 2 +- .../members/modules_public/profile/photo.php | 2 +- .../members/modules_public/profile/status.php | 2 +- .../members/modules_public/profile/view.php | 2 +- .../modules_public/profile/warnings.php | 11 +- .../modules_public/reputation/most.php | 2 +- .../members/skin_cp/cp_skin_banfilters.php | 2 +- .../members/skin_cp/cp_skin_bulkmail.php | 2 +- .../members/skin_cp/cp_skin_groups.php | 2 +- .../members/skin_cp/cp_skin_member.php | 2 +- .../members/skin_cp/cp_skin_member_form.php | 2 +- .../members/skin_cp/cp_skin_notifications.php | 2 +- .../members/skin_cp/cp_skin_permissions.php | 2 +- .../members/skin_cp/cp_skin_profilefields.php | 2 +- .../members/skin_cp/cp_skin_ranks.php | 2 +- .../members/skin_cp/cp_skin_reputation.php | 2 +- .../members/skin_cp/cp_skin_restrictions.php | 2 +- .../members/skin_cp/cp_skin_tools.php | 2 +- .../skin_cp/cp_skin_warnings_actions.php | 2 +- .../skin_cp/cp_skin_warnings_reasons.php | 2 +- .../members/sources/adminManage.php | 2 +- .../members/sources/adminSearch.php | 2 +- .../members/sources/classes/hooks/gateway.php | 2 +- .../members/sources/classes/mandrill.php | 2 +- .../classes/messaging/messengerFunctions.php | 2 +- .../applications/members/sources/friends.php | 2 +- .../sources/tabs/pluginParentClass.php | 2 +- .../members/sql/messengerSearch_mysql.php | 2 +- .../applications/members/tasks/bulkmail.php | 2 +- .../members/tasks/mobile_notifications.php | 2 +- .../members/tasks/prunenotifications.php | 2 +- .../members/tasks/removelocked.php | 2 +- .../members/tasks/removevalidating.php | 2 +- .../members/tasks/twitfacesync.php | 2 +- .../members/tasks/update_profile_views.php | 2 +- .../applications/members/tasks/warnings.php | 2 +- .../xml/admin_members_language_pack.xml | 1416 +++--- .../members/xml/members_root_css.xml | 8 +- .../members/xml/members_root_templates.xml | 1 + .../members/xml/members_settings.xml | 4 +- .../members/xml/members_xmlskin_css.xml | 8 +- .../xml/public_members_language_pack.xml | 384 +- .../applications/members/xml/versions.xml | 4 + .../extensions/attachments/index.html | 10 + .../extensions/attachments/plugin_event.php | 474 ++ .../calendar/extensions/comments/events.php | 365 ++ .../calendar/extensions/comments/index.html | 10 + .../content/feed_blocks/calendar.php | 692 +++ .../extensions/content/feed_blocks/index.html | 10 + .../calendar/extensions/content/index.html | 10 + .../content/plugin_blocks/index.html | 10 + .../plugin_blocks/mini_calendar/index.html | 10 + .../plugin_blocks/mini_calendar/plugin.php | 201 + .../calendar/extensions/coreExtensions.php | 384 ++ .../ips/calendar/extensions/coreVariables.php | 72 + .../calendar/extensions/dataHookLocations.php | 30 + .../calendar/extensions/editorSections.php | 36 + .../ips/calendar/extensions/furlRedirect.php | 222 + .../ips/calendar/extensions/furlTemplates.php | 117 + .../ips/calendar/extensions/index.html | 10 + .../calendar/extensions/like/calendars.php | 189 + .../ips/calendar/extensions/like/events.php | 191 + .../ips/calendar/extensions/like/index.html | 10 + .../ips/calendar/extensions/memberSync.php | 103 + .../ips/calendar/extensions/modcp/index.html | 10 + .../modcp/plugin_unapprovedevents.php | 228 + .../ips/calendar/extensions/notifications.php | 48 + .../calendar/extensions/permissionsSync.php | 57 + .../extensions/reportPlugins/calendar.php | 442 ++ .../extensions/reportPlugins/index.html | 10 + .../ips/calendar/extensions/reputation.php | 239 + .../ips/calendar/extensions/rssOutput.php | 123 + .../ips/calendar/extensions/search/config.php | 37 + .../extensions/search/engines/index.html | 10 + .../extensions/search/engines/sql.php | 400 ++ .../ips/calendar/extensions/search/form.php | 48 + .../ips/calendar/extensions/search/format.php | 257 + .../ips/calendar/extensions/search/index.html | 10 + .../extensions/sharedmedia/index.html | 10 + .../extensions/sharedmedia/plugin_events.php | 297 ++ .../calendar/extensions/sphinxTemplate.php | 22 + .../extensions/upgradePostRebuild.php | 183 + .../ips/calendar/extensions/warnings.php | 52 + .../ips/calendar/index.html | 10 + .../modules_admin/calendar/calendars.php | 567 +++ .../modules_admin/calendar/defaultSection.php | 13 + .../modules_admin/calendar/index.html | 10 + .../modules_admin/calendar/xml/index.html | 10 + .../modules_admin/calendar/xml/menu.xml | 18 + .../calendar/xml/permissions.xml | 17 + .../icalendar/defaultSection.php | 13 + .../calendar/modules_admin/icalendar/ical.php | 571 +++ .../modules_admin/icalendar/index.html | 10 + .../modules_admin/icalendar/xml/index.html | 10 + .../modules_admin/icalendar/xml/menu.xml | 18 + .../icalendar/xml/permissions.xml | 13 + .../ips/calendar/modules_admin/index.html | 10 + .../modules_admin/settings/defaultSection.php | 13 + .../modules_admin/settings/index.html | 10 + .../modules_admin/settings/settings.php | 85 + .../modules_admin/settings/xml/index.html | 10 + .../modules_admin/settings/xml/menu.xml | 18 + .../modules_public/ajax/defaultSection.php | 13 + .../calendar/modules_public/ajax/index.html | 10 + .../calendar/modules_public/ajax/rating.php | 196 + .../ips/calendar/modules_public/ajax/rsvp.php | 146 + .../calendar/defaultSection.php | 13 + .../modules_public/calendar/index.html | 10 + .../modules_public/calendar/moderate.php | 322 ++ .../calendar/modules_public/calendar/post.php | 921 ++++ .../modules_public/calendar/rating.php | 194 + .../calendar/modules_public/calendar/view.php | 2031 ++++++++ .../modules_public/feed/defaultSection.php | 13 + .../calendar/modules_public/feed/index.html | 10 + .../calendar/modules_public/feed/output.php | 126 + .../ips/calendar/modules_public/index.html | 10 + .../ips/calendar/setup/index.html | 10 + .../ips/calendar/setup/upgradeCheck.php | 59 + .../ips/calendar/setup/versions/index.html | 10 + .../setup/versions/install/index.html | 10 + .../install/sql/calendar_mysql_fulltext.php | 8 + .../install/sql/calendar_mysql_inserts.php | 6 + .../install/sql/calendar_mysql_tables.php | 120 + .../setup/versions/install/sql/index.html | 10 + .../setup/versions/upg_32000/index.html | 10 + .../versions/upg_32000/mysql_updates.php | 142 + .../versions/upg_32000/version_upgrade.php | 137 + .../setup/versions/upg_32005/index.html | 10 + .../versions/upg_32005/mysql_updates.php | 17 + .../setup/versions/upg_33002/index.html | 10 + .../versions/upg_33002/version_upgrade.php | 127 + .../ips/calendar/skin_cp/appIcon.png | Bin 0 -> 626 bytes .../ips/calendar/skin_cp/cp_skin_calendar.php | 511 ++ .../ips/calendar/skin_cp/index.html | 10 + .../ips/calendar/sources/cache.php | 484 ++ .../ips/calendar/sources/functions.php | 293 ++ .../ips/calendar/sources/hooks.php | 384 ++ .../ips/calendar/sources/icalendar.php | 1620 ++++++ .../ips/calendar/sources/index.html | 10 + .../ips/calendar/tasks/calendarevents.php | 100 + .../ips/calendar/tasks/importfeeds.php | 146 + .../ips/calendar/tasks/index.html | 10 + .../xml/admin_calendar_language_pack.xml | 605 +++ .../ips/calendar/xml/calendar_help.xml | 41 + .../xml/calendar_mobile_templates.xml | 1224 +++++ .../ips/calendar/xml/calendar_modules.xml | 49 + .../ips/calendar/xml/calendar_root_css.xml | 190 + .../calendar/xml/calendar_root_templates.xml | 1326 +++++ .../ips/calendar/xml/calendar_settings.xml | 197 + .../ips/calendar/xml/calendar_tasks.xml | 41 + .../ips/calendar/xml/calendar_xmlskin_css.xml | 16 + .../xml/calendar_xmlskin_templates.xml | 425 ++ .../ips/calendar/xml/hooks.xml | 15 + .../xml/hooks/board_index_calendar.xml | 78 + .../ips/calendar/xml/hooks/index.html | 10 + .../xml/hooks/index_upcoming_birthdays.xml | 78 + .../xml/hooks/index_upcoming_events.xml | 79 + .../ips/calendar/xml/index.html | 10 + .../ips/calendar/xml/information.xml | 18 + .../xml/public_calendar_language_pack.xml | 1095 +++++ .../ips/calendar/xml/versions.xml | 51 + upload/admin/extensions/coreVariables.php | 2 +- upload/admin/extensions/sphinxTemplate.php | 2 +- upload/admin/extensions/userAgents.php | 2 +- upload/admin/index.php | 4 +- upload/admin/install/index.php | 4 +- .../applications/install/sections/address.php | 2 +- .../applications/install/sections/admin.php | 2 +- .../applications/install/sections/apps.php | 2 +- .../applications/install/sections/db.php | 2 +- .../applications/install/sections/done.php | 2 +- .../applications/install/sections/eula.php | 2 +- .../applications/install/sections/index.php | 2 +- .../applications/install/sections/install.php | 2 +- .../applications/install/sections/license.php | 54 +- .../applications/upgrade/sections/apps.php | 2 +- .../applications/upgrade/sections/done.php | 2 +- .../applications/upgrade/sections/index.php | 2 +- .../applications/upgrade/sections/license.php | 73 +- .../upgrade/sections/overview.php | 2 +- .../applications/upgrade/sections/upgrade.php | 2 +- upload/admin/setup/cli/install.php | 2 +- upload/admin/setup/cli/output.php | 2 +- upload/admin/setup/sources/base/install.php | 2 +- .../sources/base/ipsController_setup.php | 2 +- .../setup/sources/base/ipsRegistry_setup.php | 2 +- upload/admin/setup/sources/base/setup.php | 2 +- .../setup/sources/classes/output/output.php | 2 +- .../sources/classes/session/sessions.php | 2 +- upload/admin/setup/sources/legacy/1xx.php | 2 +- upload/admin/setup/sources/legacy/2xx.php | 2 +- upload/admin/setup/sources/legacy/3xx.php | 2 +- upload/admin/setup/sql/ipb3_mysql.php | 2 +- upload/admin/setup/sql/mysql_install.php | 2 +- upload/admin/setup/templates/skin_setup.php | 9 +- upload/admin/setup/xml/requiredextensions.php | 2 +- upload/admin/setup/xml/skins/setsData.xml | 18 +- upload/admin/skin_cp/cp_skin_global.php | 2 +- upload/admin/sources/base/core.php | 12 +- upload/admin/sources/base/darkLAE.php | 172 - upload/admin/sources/base/ipsController.php | 2 +- upload/admin/sources/base/ipsMember.php | 2 +- upload/admin/sources/base/ipsMobileApp.php | 2 +- upload/admin/sources/base/ipsRegistry.php | 7 +- .../admin/sources/classes/admin/bookmarks.php | 2 +- upload/admin/sources/classes/ads.php | 2 +- .../admin/sources/classes/archive/reader.php | 2 +- .../sources/classes/archive/reader/sql.php | 2 +- .../admin/sources/classes/archive/restore.php | 2 +- .../sources/classes/archive/restore/sql.php | 2 +- .../admin/sources/classes/archive/writer.php | 2 +- .../sources/classes/archive/writer/sql.php | 2 +- upload/admin/sources/classes/backup.php | 2 +- upload/admin/sources/classes/backup/db.php | 2 +- upload/admin/sources/classes/bbcode/core.php | 2 +- .../sources/classes/bbcode/custom/ccs.php | 2 +- .../classes/bbcode/custom/defaults.php | 4 +- .../admin/sources/classes/bbcode/legacy.php | 2 +- upload/admin/sources/classes/cache/simple.php | 2 +- .../sources/classes/class_admin_functions.php | 2 +- .../sources/classes/class_localization.php | 2 +- .../sources/classes/class_permissions.php | 2 +- .../classes/class_public_permissions.php | 2 +- .../classes/class_reputation_cache.php | 2 +- .../sources/classes/class_taskmanager.php | 2 +- .../sources/classes/editor/class_editor.php | 2 +- .../classes/editor/class_editor_rte.php | 2 +- .../classes/editor/class_editor_std.php | 2 +- .../sources/classes/editor/composite.php | 10 +- .../sources/classes/facebook/connect.php | 2 +- .../classes/incomingEmail/incomingEmail.php | 2 +- .../classes/itemmarking/classItemMarking.php | 2 +- .../admin/sources/classes/like/composite.php | 2 +- .../sources/classes/mapping/bootstrap.php | 2 +- .../sources/classes/mapping/engines/bing.php | 2 +- .../classes/mapping/engines/google.php | 2 +- .../classes/member/memberFunctions.php | 2 +- .../sources/classes/member/notifications.php | 2 +- upload/admin/sources/classes/member/photo.php | 7 +- .../sources/classes/mobile/iosImages.php | 2 +- .../sources/classes/navigation/build.php | 2 +- .../sources/classes/output/adminOutput.php | 2 +- .../classes/output/formats/coreOutput.php | 2 +- .../classes/output/formats/html/conf.php | 2 +- .../output/formats/html/htmlOutput.php | 6 +- .../classes/output/formats/xml/conf.php | 2 +- .../classes/output/formats/xml/xmlOutput.php | 2 +- .../sources/classes/output/publicOutput.php | 2 +- .../classes/output/systemTemplates.php | 2 +- upload/admin/sources/classes/rss/import.php | 2 +- .../classes/sabre/directory/groups.php | 2 +- .../classes/sabre/directory/templates.php | 2 +- .../sources/classes/sabre/files/templates.php | 2 +- .../sources/classes/sabre/lock/nolocks.php | 2 +- .../sources/classes/sabre/root/skins.php | 2 +- .../sources/classes/search/controller.php | 2 +- .../sources/classes/search/engines/sphinx.php | 2 +- .../sources/classes/search/engines/sql.php | 2 +- .../admin/sources/classes/search/format.php | 2 +- .../sources/classes/session/adminSessions.php | 2 +- upload/admin/sources/classes/session/api.php | 2 +- .../classes/session/publicSessions.php | 2 +- .../sources/classes/session/sso.rename.php | 2 +- .../session/ssoMobileAppLogIn.rename.php | 2 +- upload/admin/sources/classes/share/links.php | 2 +- .../classes/share/plugins/blogthis.php | 2 +- .../sources/classes/share/plugins/buzz.php | 2 +- .../classes/share/plugins/delicious.php | 2 +- .../sources/classes/share/plugins/digg.php | 2 +- .../classes/share/plugins/download.php | 2 +- .../sources/classes/share/plugins/email.php | 2 +- .../classes/share/plugins/facebook.php | 2 +- .../classes/share/plugins/googleplusone.php | 2 +- .../sources/classes/share/plugins/print.php | 2 +- .../sources/classes/share/plugins/reddit.php | 2 +- .../sources/classes/share/plugins/stumble.php | 2 +- .../sources/classes/share/plugins/twitter.php | 2 +- .../sources/classes/skins/skinCaching.php | 2 +- .../sources/classes/skins/skinDifferences.php | 2 +- .../sources/classes/skins/skinFunctions.php | 2 +- .../sources/classes/skins/skinGenerator.php | 8 +- .../classes/skins/skinImportExport.php | 2 +- .../admin/sources/classes/tags/abstract.php | 2 +- .../admin/sources/classes/tags/bootstrap.php | 2 +- upload/admin/sources/classes/tags/cloud.php | 2 +- .../classes/tags/extensions/default.php | 2 +- .../sources/classes/tags/search/bootstrap.php | 2 +- .../sources/classes/tags/search/sphinx.php | 2 +- .../admin/sources/classes/tags/search/sql.php | 2 +- upload/admin/sources/classes/text/parser.php | 11 +- .../sources/classes/text/parser/bbcode.php | 2 +- .../classes/text/parser/bbcode/ccs.php | 2 +- .../classes/text/parser/bbcode/defaults.php | 4 +- .../sources/classes/text/parser/html.php | 2 +- .../sources/classes/text/parser/legacy.php | 2 +- .../sources/classes/tiers/recursiveTiers.php | 2 +- .../admin/sources/classes/twitter/connect.php | 2 +- .../sources/classes/url/apis/bitly/api.php | 2 +- .../sources/classes/url/apis/bitly/conf.php | 2 +- upload/admin/sources/classes/url/shorten.php | 2 +- .../classes/useragents/userAgentFunctions.php | 2 +- .../classes/virusChecker/lib_known_names.php | 2 +- .../virusChecker/lib_writeable_dirs.php | 2 +- .../classes/virusChecker/plugins/example.php | 2 +- .../classes/virusChecker/virusChecker.php | 2 +- upload/admin/sources/handlers/han_email.php | 8 +- upload/admin/sources/handlers/han_login.php | 2 +- .../sources/handlers/han_parse_bbcode.php | 2 +- .../admin/download_category_form.php | 2 +- .../sources/interfaces/admin/forum_form.php | 2 +- .../sources/interfaces/admin/group_form.php | 2 +- .../sources/interfaces/admin/member_form.php | 2 +- .../sources/interfaces/interface_bbcode.php | 2 +- .../sources/interfaces/interface_output.php | 2 +- .../sources/interfaces/interface_usercp.php | 2 +- .../admin/sources/loginauth/convert/auth.php | 2 +- .../sources/loginauth/convert/auth_sha256.php | 2 +- .../sources/loginauth/convert/newauth.php | 81 +- .../admin/sources/loginauth/external/acp.php | 2 +- .../admin/sources/loginauth/external/auth.php | 2 +- .../admin/sources/loginauth/internal/auth.php | 2 +- upload/admin/sources/loginauth/ldap/acp.php | 2 +- upload/admin/sources/loginauth/ldap/auth.php | 2 +- upload/admin/sources/loginauth/live/acp.php | 2 +- upload/admin/sources/loginauth/live/auth.php | 2 +- upload/admin/sources/loginauth/login_core.php | 2 +- .../sources/loginauth/login_interface.php | 2 +- .../sources/template_plugins/tp_addtohead.php | 2 +- .../sources/template_plugins/tp_currency.php | 2 +- .../sources/template_plugins/tp_date.php | 2 +- .../sources/template_plugins/tp_editor.php | 2 +- .../template_plugins/tp_expression.php | 2 +- .../template_plugins/tp_format_number.php | 2 +- .../sources/template_plugins/tp_include.php | 2 +- .../sources/template_plugins/tp_ipcmedia.php | 2 +- .../sources/template_plugins/tp_js_module.php | 2 +- .../sources/template_plugins/tp_lang.php | 2 +- .../template_plugins/tp_replacement.php | 2 +- .../template_plugins/tp_resize_image.php | 2 +- .../sources/template_plugins/tp_striping.php | 2 +- .../sources/template_plugins/tp_template.php | 2 +- .../admin/sources/template_plugins/tp_url.php | 2 +- .../sources/template_plugins/tp_variable.php | 2 +- upload/admin/upgrade/index.php | 3 +- upload/cache/skin_cache/masterMap.php | 2 +- upload/dav.php | 2 +- upload/index.php | 2 +- upload/initdata.php | 28 +- upload/interface/board/index.php | 2 +- upload/interface/board/live.php | 2 +- upload/interface/board/modules/ipb/api.php | 2 +- upload/interface/board/modules/ipb/config.php | 2 +- .../interface/board/modules/ipb/methods.php | 2 +- upload/interface/facebook/channel.php | 2 +- upload/interface/facebook/index.php | 2 +- upload/interface/facebook/xd_receiver.php | 2 +- upload/interface/facebook/xd_receiver_ssl.php | 2 +- upload/interface/mobile/index.php | 2 +- upload/interface/task.php | 2 +- upload/interface/twitter/index.php | 2 +- .../HTMLPurifier/Injector/Linkify.php | 2 +- upload/ips_kernel/classAjax.php | 8 +- upload/ips_kernel/classApiServer.php | 2 +- upload/ips_kernel/classCacheApc.php | 2 +- upload/ips_kernel/classCacheDiskcache.php | 2 +- upload/ips_kernel/classCacheEaccelerator.php | 2 +- upload/ips_kernel/classCacheMemcache.php | 2 +- upload/ips_kernel/classCacheWincache.php | 2 +- upload/ips_kernel/classCacheXcache.php | 2 +- upload/ips_kernel/classCaptcha.php | 2 +- .../ips_kernel/classCaptchaPlugin/default.php | 2 +- .../classCaptchaPlugin/recaptcha.php | 2 +- upload/ips_kernel/classConvertCharset.php | 2 +- upload/ips_kernel/classCustomFields.php | 12 +- upload/ips_kernel/classDb.php | 2 +- upload/ips_kernel/classDbMysql.php | 2 +- upload/ips_kernel/classDbMysqlClient.php | 2 +- upload/ips_kernel/classDbMysqliClient.php | 2 +- upload/ips_kernel/classDifference.php | 2 +- upload/ips_kernel/classEmail.php | 435 +- upload/ips_kernel/classFileManagement.php | 2 +- upload/ips_kernel/classFtp.php | 2 +- upload/ips_kernel/classImage.php | 2 +- upload/ips_kernel/classImageGd.php | 2 +- upload/ips_kernel/classImageImagemagick.php | 2 +- upload/ips_kernel/classMerge.php | 2 +- upload/ips_kernel/classRss.php | 2 +- upload/ips_kernel/classTemplateEngine.php | 2 +- upload/ips_kernel/classUpload.php | 2 +- upload/ips_kernel/classXML.php | 2 +- upload/ips_kernel/classXMLArchive.php | 2 +- upload/ips_kernel/classXmlRpc.php | 2 +- upload/ips_kernel/class_xml.php | 2 +- upload/ips_kernel/db_lib/mysql_tools.php | 2 +- .../ips_kernel/interfaces/interfaceCache.php | 2 +- upload/lofiversion/index.php | 2 +- upload/public/js/ipb.js | 33 +- upload/public/js/ips.attach.js | 2 +- upload/public/js/ips.calendar.js | 396 ++ upload/public/js/ips.comments.js | 23 +- upload/public/js/ips.topic.js | 40 +- 920 files changed, 28189 insertions(+), 6840 deletions(-) create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/attachments/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/attachments/plugin_event.php create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/comments/events.php create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/comments/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/content/feed_blocks/calendar.php create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/content/feed_blocks/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/content/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/content/plugin_blocks/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/content/plugin_blocks/mini_calendar/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/content/plugin_blocks/mini_calendar/plugin.php create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/coreExtensions.php create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/coreVariables.php create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/dataHookLocations.php create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/editorSections.php create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/furlRedirect.php create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/furlTemplates.php create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/like/calendars.php create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/like/events.php create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/like/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/memberSync.php create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/modcp/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/modcp/plugin_unapprovedevents.php create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/notifications.php create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/permissionsSync.php create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/reportPlugins/calendar.php create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/reportPlugins/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/reputation.php create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/rssOutput.php create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/search/config.php create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/search/engines/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/search/engines/sql.php create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/search/form.php create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/search/format.php create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/search/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/sharedmedia/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/sharedmedia/plugin_events.php create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/sphinxTemplate.php create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/upgradePostRebuild.php create mode 100644 upload/admin/applications_addon/ips/calendar/extensions/warnings.php create mode 100644 upload/admin/applications_addon/ips/calendar/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/modules_admin/calendar/calendars.php create mode 100644 upload/admin/applications_addon/ips/calendar/modules_admin/calendar/defaultSection.php create mode 100644 upload/admin/applications_addon/ips/calendar/modules_admin/calendar/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/modules_admin/calendar/xml/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/modules_admin/calendar/xml/menu.xml create mode 100644 upload/admin/applications_addon/ips/calendar/modules_admin/calendar/xml/permissions.xml create mode 100644 upload/admin/applications_addon/ips/calendar/modules_admin/icalendar/defaultSection.php create mode 100644 upload/admin/applications_addon/ips/calendar/modules_admin/icalendar/ical.php create mode 100644 upload/admin/applications_addon/ips/calendar/modules_admin/icalendar/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/modules_admin/icalendar/xml/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/modules_admin/icalendar/xml/menu.xml create mode 100644 upload/admin/applications_addon/ips/calendar/modules_admin/icalendar/xml/permissions.xml create mode 100644 upload/admin/applications_addon/ips/calendar/modules_admin/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/modules_admin/settings/defaultSection.php create mode 100644 upload/admin/applications_addon/ips/calendar/modules_admin/settings/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/modules_admin/settings/settings.php create mode 100644 upload/admin/applications_addon/ips/calendar/modules_admin/settings/xml/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/modules_admin/settings/xml/menu.xml create mode 100644 upload/admin/applications_addon/ips/calendar/modules_public/ajax/defaultSection.php create mode 100644 upload/admin/applications_addon/ips/calendar/modules_public/ajax/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/modules_public/ajax/rating.php create mode 100644 upload/admin/applications_addon/ips/calendar/modules_public/ajax/rsvp.php create mode 100644 upload/admin/applications_addon/ips/calendar/modules_public/calendar/defaultSection.php create mode 100644 upload/admin/applications_addon/ips/calendar/modules_public/calendar/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/modules_public/calendar/moderate.php create mode 100644 upload/admin/applications_addon/ips/calendar/modules_public/calendar/post.php create mode 100644 upload/admin/applications_addon/ips/calendar/modules_public/calendar/rating.php create mode 100644 upload/admin/applications_addon/ips/calendar/modules_public/calendar/view.php create mode 100644 upload/admin/applications_addon/ips/calendar/modules_public/feed/defaultSection.php create mode 100644 upload/admin/applications_addon/ips/calendar/modules_public/feed/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/modules_public/feed/output.php create mode 100644 upload/admin/applications_addon/ips/calendar/modules_public/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/setup/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/setup/upgradeCheck.php create mode 100644 upload/admin/applications_addon/ips/calendar/setup/versions/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/setup/versions/install/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/setup/versions/install/sql/calendar_mysql_fulltext.php create mode 100644 upload/admin/applications_addon/ips/calendar/setup/versions/install/sql/calendar_mysql_inserts.php create mode 100644 upload/admin/applications_addon/ips/calendar/setup/versions/install/sql/calendar_mysql_tables.php create mode 100644 upload/admin/applications_addon/ips/calendar/setup/versions/install/sql/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/setup/versions/upg_32000/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/setup/versions/upg_32000/mysql_updates.php create mode 100644 upload/admin/applications_addon/ips/calendar/setup/versions/upg_32000/version_upgrade.php create mode 100644 upload/admin/applications_addon/ips/calendar/setup/versions/upg_32005/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/setup/versions/upg_32005/mysql_updates.php create mode 100644 upload/admin/applications_addon/ips/calendar/setup/versions/upg_33002/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/setup/versions/upg_33002/version_upgrade.php create mode 100644 upload/admin/applications_addon/ips/calendar/skin_cp/appIcon.png create mode 100644 upload/admin/applications_addon/ips/calendar/skin_cp/cp_skin_calendar.php create mode 100644 upload/admin/applications_addon/ips/calendar/skin_cp/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/sources/cache.php create mode 100644 upload/admin/applications_addon/ips/calendar/sources/functions.php create mode 100644 upload/admin/applications_addon/ips/calendar/sources/hooks.php create mode 100644 upload/admin/applications_addon/ips/calendar/sources/icalendar.php create mode 100644 upload/admin/applications_addon/ips/calendar/sources/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/tasks/calendarevents.php create mode 100644 upload/admin/applications_addon/ips/calendar/tasks/importfeeds.php create mode 100644 upload/admin/applications_addon/ips/calendar/tasks/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/xml/admin_calendar_language_pack.xml create mode 100644 upload/admin/applications_addon/ips/calendar/xml/calendar_help.xml create mode 100644 upload/admin/applications_addon/ips/calendar/xml/calendar_mobile_templates.xml create mode 100644 upload/admin/applications_addon/ips/calendar/xml/calendar_modules.xml create mode 100644 upload/admin/applications_addon/ips/calendar/xml/calendar_root_css.xml create mode 100644 upload/admin/applications_addon/ips/calendar/xml/calendar_root_templates.xml create mode 100644 upload/admin/applications_addon/ips/calendar/xml/calendar_settings.xml create mode 100644 upload/admin/applications_addon/ips/calendar/xml/calendar_tasks.xml create mode 100644 upload/admin/applications_addon/ips/calendar/xml/calendar_xmlskin_css.xml create mode 100644 upload/admin/applications_addon/ips/calendar/xml/calendar_xmlskin_templates.xml create mode 100644 upload/admin/applications_addon/ips/calendar/xml/hooks.xml create mode 100644 upload/admin/applications_addon/ips/calendar/xml/hooks/board_index_calendar.xml create mode 100644 upload/admin/applications_addon/ips/calendar/xml/hooks/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/xml/hooks/index_upcoming_birthdays.xml create mode 100644 upload/admin/applications_addon/ips/calendar/xml/hooks/index_upcoming_events.xml create mode 100644 upload/admin/applications_addon/ips/calendar/xml/index.html create mode 100644 upload/admin/applications_addon/ips/calendar/xml/information.xml create mode 100644 upload/admin/applications_addon/ips/calendar/xml/public_calendar_language_pack.xml create mode 100644 upload/admin/applications_addon/ips/calendar/xml/versions.xml delete mode 100644 upload/admin/sources/base/darkLAE.php create mode 100644 upload/public/js/ips.calendar.js diff --git a/upload/admin/api/api_core.php b/upload/admin/api/api_core.php index 19120185..d97e7463 100644 --- a/upload/admin/api/api_core.php +++ b/upload/admin/api/api_core.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since - * $LastChangedDate: 2011-03-18 17:34:15 -0400 (Fri, 18 Mar 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8129 $ */ diff --git a/upload/admin/api/forums/api_topic_view.php b/upload/admin/api/forums/api_topic_view.php index cc10c3a5..dbbc3f47 100644 --- a/upload/admin/api/forums/api_topic_view.php +++ b/upload/admin/api/forums/api_topic_view.php @@ -7,7 +7,7 @@ * $Author: AndyMillne $ * @since 2.2.0 * $LastChangedDate: 2013-03-21 17:38:09 -0400 (Thu, 21 Mar 2013) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 12109 $ */ diff --git a/upload/admin/applications/core/extensions/admin/group_form.php b/upload/admin/applications/core/extensions/admin/group_form.php index 621f1a18..0a8240eb 100644 --- a/upload/admin/applications/core/extensions/admin/group_form.php +++ b/upload/admin/applications/core/extensions/admin/group_form.php @@ -7,7 +7,7 @@ * $Author: bfarber $ * @since - * $LastChangedDate: 2011-07-20 20:19:22 -0400 (Wed, 20 Jul 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 9296 $ */ diff --git a/upload/admin/applications/core/extensions/admin/member_form.php b/upload/admin/applications/core/extensions/admin/member_form.php index 140728b2..cf35f7e2 100644 --- a/upload/admin/applications/core/extensions/admin/member_form.php +++ b/upload/admin/applications/core/extensions/admin/member_form.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Member property updater (AJAX)
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/extensions/coreExtensions.php b/upload/admin/applications/core/extensions/coreExtensions.php index 1adfa9ce..9e996b90 100644 --- a/upload/admin/applications/core/extensions/coreExtensions.php +++ b/upload/admin/applications/core/extensions/coreExtensions.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Core Sessions
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
@@ -28,7 +28,7 @@ if ( ! defined( 'IN_IPB' ) ) /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Item Marking
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/extensions/coreVariables.php b/upload/admin/applications/core/extensions/coreVariables.php index 4bc432cd..bb48daeb 100644 --- a/upload/admin/applications/core/extensions/coreVariables.php +++ b/upload/admin/applications/core/extensions/coreVariables.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Core registered caches, redirect resets and bitwise settings
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/extensions/dashboardNotifications.php b/upload/admin/applications/core/extensions/dashboardNotifications.php index a463eff6..a66c13a1 100644 --- a/upload/admin/applications/core/extensions/dashboardNotifications.php +++ b/upload/admin/applications/core/extensions/dashboardNotifications.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Dashboard Notifications
  * Last Updated: $Date
  *
diff --git a/upload/admin/applications/core/extensions/editorSections.php b/upload/admin/applications/core/extensions/editorSections.php
index b71eba1d..efc6d2e3 100644
--- a/upload/admin/applications/core/extensions/editorSections.php
+++ b/upload/admin/applications/core/extensions/editorSections.php
@@ -3,7 +3,7 @@
 /**
  * 
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * BBCode Management : Determines if bbcode can be used in this section
  * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/extensions/enhancements/facebook.php b/upload/admin/applications/core/extensions/enhancements/facebook.php index e21163d8..10adde02 100644 --- a/upload/admin/applications/core/extensions/enhancements/facebook.php +++ b/upload/admin/applications/core/extensions/enhancements/facebook.php @@ -7,7 +7,7 @@ * $Author: mark $ * @since 24 July 2012 * $LastChangedDate: 2012-06-20 10:50:23 +0100 (Wed, 20 Jun 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10952 $ */ diff --git a/upload/admin/applications/core/extensions/enhancements/googleanalytics.php b/upload/admin/applications/core/extensions/enhancements/googleanalytics.php index 5552786b..650973ff 100644 --- a/upload/admin/applications/core/extensions/enhancements/googleanalytics.php +++ b/upload/admin/applications/core/extensions/enhancements/googleanalytics.php @@ -7,7 +7,7 @@ * $Author: mark $ * @since 24 July 2012 * $LastChangedDate: 2012-06-20 10:50:23 +0100 (Wed, 20 Jun 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10952 $ */ diff --git a/upload/admin/applications/core/extensions/enhancements/ipsbackup.php b/upload/admin/applications/core/extensions/enhancements/ipsbackup.php index cb4b9331..dece599a 100644 --- a/upload/admin/applications/core/extensions/enhancements/ipsbackup.php +++ b/upload/admin/applications/core/extensions/enhancements/ipsbackup.php @@ -7,7 +7,7 @@ * $Author: mark $ * @since 24 July 2012 * $LastChangedDate: 2012-06-20 10:50:23 +0100 (Wed, 20 Jun 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10952 $ */ diff --git a/upload/admin/applications/core/extensions/enhancements/ipscdn.php b/upload/admin/applications/core/extensions/enhancements/ipscdn.php index 29f92722..29108590 100644 --- a/upload/admin/applications/core/extensions/enhancements/ipscdn.php +++ b/upload/admin/applications/core/extensions/enhancements/ipscdn.php @@ -7,7 +7,7 @@ * $Author: mark $ * @since 24 July 2012 * $LastChangedDate: 2012-06-20 10:50:23 +0100 (Wed, 20 Jun 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10952 $ */ @@ -92,7 +92,7 @@ class enhancements_core_ipscdn $classToLoad = IPSLib::loadLibrary( IPS_KERNEL_PATH . 'classFileManagement.php', 'classFileManagement' ); $file = new $classToLoad(); - $ping = NULL; + $ping = $file->getFileContents( "http://license.invisionpower.com/?a=cdn&key=" . ipsRegistry::$settings['ipb_reg_number'] ); if ( $json = @json_decode( $ping, TRUE ) ) { diff --git a/upload/admin/applications/core/extensions/enhancements/twitter.php b/upload/admin/applications/core/extensions/enhancements/twitter.php index 7dfd3d78..f0fe694c 100644 --- a/upload/admin/applications/core/extensions/enhancements/twitter.php +++ b/upload/admin/applications/core/extensions/enhancements/twitter.php @@ -7,7 +7,7 @@ * $Author: mark $ * @since 24 July 2012 * $LastChangedDate: 2012-06-20 10:50:23 +0100 (Wed, 20 Jun 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10952 $ */ diff --git a/upload/admin/applications/core/extensions/enhancements/viglink.php b/upload/admin/applications/core/extensions/enhancements/viglink.php index 2194e4c7..2c488252 100644 --- a/upload/admin/applications/core/extensions/enhancements/viglink.php +++ b/upload/admin/applications/core/extensions/enhancements/viglink.php @@ -7,7 +7,7 @@ * $Author: mark $ * @since 24 July 2012 * $LastChangedDate: 2012-06-20 10:50:23 +0100 (Wed, 20 Jun 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10952 $ */ @@ -101,7 +101,7 @@ class enhancements_core_viglink require_once IPS_KERNEL_PATH . 'classFileManagement.php'; $cfm = new classFileManagement(); - $return = NULL; + $return = $cfm->getFileContents( "http://license.invisionpower.com/viglink/?subId=" . urlencode( $subId ) ); if ( $return and $json = @json_decode( $return, TRUE ) and $json['SUCCESS'] == TRUE ) { return $json; diff --git a/upload/admin/applications/core/extensions/enhancements/windowslive.php b/upload/admin/applications/core/extensions/enhancements/windowslive.php index b6705f91..07986c53 100644 --- a/upload/admin/applications/core/extensions/enhancements/windowslive.php +++ b/upload/admin/applications/core/extensions/enhancements/windowslive.php @@ -7,7 +7,7 @@ * $Author: mark $ * @since 24 July 2012 * $LastChangedDate: 2012-06-20 10:50:23 +0100 (Wed, 20 Jun 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10952 $ */ diff --git a/upload/admin/applications/core/extensions/furlTemplates.php b/upload/admin/applications/core/extensions/furlTemplates.php index 0a7f7cf0..ed2c79b1 100644 --- a/upload/admin/applications/core/extensions/furlTemplates.php +++ b/upload/admin/applications/core/extensions/furlTemplates.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Sets up SEO templates
  * Last Updated: $Date: 2013-03-12 09:54:04 -0400 (Tue, 12 Mar 2013) $
  * 
diff --git a/upload/admin/applications/core/extensions/like/default.php b/upload/admin/applications/core/extensions/like/default.php index 5aed919d..80215adc 100644 --- a/upload/admin/applications/core/extensions/like/default.php +++ b/upload/admin/applications/core/extensions/like/default.php @@ -6,7 +6,7 @@ * $License: http://www.invisionpower.com/company/standards.php#license$ * $Author: mark $ * $LastChangedDate: 2011-12-08 16:43:34 +0000 (Thu, 08 Dec 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 9971 $ */ diff --git a/upload/admin/applications/core/extensions/navigation/generate.php b/upload/admin/applications/core/extensions/navigation/generate.php index 678eed17..5ff842bf 100644 --- a/upload/admin/applications/core/extensions/navigation/generate.php +++ b/upload/admin/applications/core/extensions/navigation/generate.php @@ -7,7 +7,7 @@ * $Author: AndyMillne $ * @since 3/8/2011 * $LastChangedDate: 2013-10-14 15:30:19 -0400 (Mon, 14 Oct 2013) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 12376 $ */ diff --git a/upload/admin/applications/core/extensions/notifications.php b/upload/admin/applications/core/extensions/notifications.php index dea7257e..51234cca 100644 --- a/upload/admin/applications/core/extensions/notifications.php +++ b/upload/admin/applications/core/extensions/notifications.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Define the core notification types
  * Last Updated: $Date: 2013-05-21 20:51:17 -0400 (Tue, 21 May 2013) $
  * 
diff --git a/upload/admin/applications/core/extensions/reportPlugins/default.php b/upload/admin/applications/core/extensions/reportPlugins/default.php index c86c9c27..56d456cc 100644 --- a/upload/admin/applications/core/extensions/reportPlugins/default.php +++ b/upload/admin/applications/core/extensions/reportPlugins/default.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Report Center :: Default plugin
  * Last Updated: $LastChangedDate: 2012-12-10 11:06:25 -0500 (Mon, 10 Dec 2012) $
  * 
diff --git a/upload/admin/applications/core/extensions/rssOutput.php b/upload/admin/applications/core/extensions/rssOutput.php index a4d3314f..5bbb47b4 100644 --- a/upload/admin/applications/core/extensions/rssOutput.php +++ b/upload/admin/applications/core/extensions/rssOutput.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * RSS output plugin :: report center
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/extensions/search/config.php b/upload/admin/applications/core/extensions/search/config.php index 8330d879..300df1bc 100644 --- a/upload/admin/applications/core/extensions/search/config.php +++ b/upload/admin/applications/core/extensions/search/config.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Config file
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/extensions/search/engines/sql.php b/upload/admin/applications/core/extensions/search/engines/sql.php index af125e15..a51495a8 100644 --- a/upload/admin/applications/core/extensions/search/engines/sql.php +++ b/upload/admin/applications/core/extensions/search/engines/sql.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Basic Forum Search
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/extensions/search/form.php b/upload/admin/applications/core/extensions/search/form.php index ca69f51f..7166a331 100644 --- a/upload/admin/applications/core/extensions/search/form.php +++ b/upload/admin/applications/core/extensions/search/form.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Returns HTML for the form (optional class, not required)
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/extensions/search/format.php b/upload/admin/applications/core/extensions/search/format.php index 442e2eb2..9f38de81 100644 --- a/upload/admin/applications/core/extensions/search/format.php +++ b/upload/admin/applications/core/extensions/search/format.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Formats forum search results
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/extensions/sharedmedia/plugin_attachments.php b/upload/admin/applications/core/extensions/sharedmedia/plugin_attachments.php index 88456286..5ec92d00 100644 --- a/upload/admin/applications/core/extensions/sharedmedia/plugin_attachments.php +++ b/upload/admin/applications/core/extensions/sharedmedia/plugin_attachments.php @@ -6,7 +6,7 @@ * $Author: mmecham $ * @since 3/8/2011 * $LastChangedDate: 2013-04-03 08:07:11 -0400 (Wed, 03 Apr 2013) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 12145 $ */ diff --git a/upload/admin/applications/core/extensions/sphinxTemplate.php b/upload/admin/applications/core/extensions/sphinxTemplate.php index d41e3f6c..119870ae 100644 --- a/upload/admin/applications/core/extensions/sphinxTemplate.php +++ b/upload/admin/applications/core/extensions/sphinxTemplate.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Sphinx template file
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/extensions/usercpForms.php b/upload/admin/applications/core/extensions/usercpForms.php index 7110b544..29f856ff 100644 --- a/upload/admin/applications/core/extensions/usercpForms.php +++ b/upload/admin/applications/core/extensions/usercpForms.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Core user control panel plugin
  * Last Updated: $Date: 2015-05-03 10:31:01 -0400 (Sun, 03 May 2015) $
  * 
diff --git a/upload/admin/applications/core/extensions/warnings.php b/upload/admin/applications/core/extensions/warnings.php index 474b4e9a..f94da4d0 100644 --- a/upload/admin/applications/core/extensions/warnings.php +++ b/upload/admin/applications/core/extensions/warnings.php @@ -7,7 +7,7 @@ * $Author: bfarber $ (Original: Mark) * @since - * $LastChangedDate: 2013-05-01 17:35:09 -0400 (Wed, 01 May 2013) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 12211 $ */ diff --git a/upload/admin/applications/core/modules_admin/ajax/bookmarks.php b/upload/admin/applications/core/modules_admin/ajax/bookmarks.php index 397badb0..1d3653a0 100644 --- a/upload/admin/applications/core/modules_admin/ajax/bookmarks.php +++ b/upload/admin/applications/core/modules_admin/ajax/bookmarks.php @@ -7,7 +7,7 @@ * $Author: bfarber $ * @since 7th August 2012 * $LastChangedDate: 2011-03-10 21:00:38 +0000 (Thu, 10 Mar 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8021 $ */ diff --git a/upload/admin/applications/core/modules_admin/ajax/compare.php b/upload/admin/applications/core/modules_admin/ajax/compare.php index 59468df4..5c1a6d23 100644 --- a/upload/admin/applications/core/modules_admin/ajax/compare.php +++ b/upload/admin/applications/core/modules_admin/ajax/compare.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Template comparison
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/ajax/css.php b/upload/admin/applications/core/modules_admin/ajax/css.php index a8018c8c..b986a1ef 100644 --- a/upload/admin/applications/core/modules_admin/ajax/css.php +++ b/upload/admin/applications/core/modules_admin/ajax/css.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * AJAX Functions For applications/core/js/ipb3CSS.js file
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/ajax/editor.php b/upload/admin/applications/core/modules_admin/ajax/editor.php index 09a84c07..5e0b792a 100644 --- a/upload/admin/applications/core/modules_admin/ajax/editor.php +++ b/upload/admin/applications/core/modules_admin/ajax/editor.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Handles Admin ajax functions for IP.Board Text Editor
  * Author: Matt "Matt Mecham" Mecham
  * Last Updated: $LastChangedDate: 2012-05-29 14:05:10 +0100 (Tue, 29 May 2012) $
diff --git a/upload/admin/applications/core/modules_admin/ajax/findnames.php b/upload/admin/applications/core/modules_admin/ajax/findnames.php
index 8a9c9524..dc01982f 100644
--- a/upload/admin/applications/core/modules_admin/ajax/findnames.php
+++ b/upload/admin/applications/core/modules_admin/ajax/findnames.php
@@ -3,7 +3,7 @@
 /**
  * 
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Login handler abstraction : AJAX Find Names functions
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/ajax/hooks.php b/upload/admin/applications/core/modules_admin/ajax/hooks.php index 9314bab2..943f83ea 100644 --- a/upload/admin/applications/core/modules_admin/ajax/hooks.php +++ b/upload/admin/applications/core/modules_admin/ajax/hooks.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Hooks (AJAX)
  * Last Updated: $Date: 2013-02-15 17:36:04 -0500 (Fri, 15 Feb 2013) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/ajax/livesearch.php b/upload/admin/applications/core/modules_admin/ajax/livesearch.php index 8d5a7dfe..080f3c4c 100644 --- a/upload/admin/applications/core/modules_admin/ajax/livesearch.php +++ b/upload/admin/applications/core/modules_admin/ajax/livesearch.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Live Search
  * Last Updated: $Date: 2012-12-06 10:19:49 -0500 (Thu, 06 Dec 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/ajax/replacements.php b/upload/admin/applications/core/modules_admin/ajax/replacements.php index 51a3b78e..34fa0ed5 100644 --- a/upload/admin/applications/core/modules_admin/ajax/replacements.php +++ b/upload/admin/applications/core/modules_admin/ajax/replacements.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * AJAX Functions For applications/core/js/ipb3CSS.js file
  * Last Updated: $Date: 2012-05-24 16:20:59 -0400 (Thu, 24 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/ajax/skinsets.php b/upload/admin/applications/core/modules_admin/ajax/skinsets.php index 4295ab8d..5c9293b2 100644 --- a/upload/admin/applications/core/modules_admin/ajax/skinsets.php +++ b/upload/admin/applications/core/modules_admin/ajax/skinsets.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * AJAX Functions For applications/core/js/ipb3CSS.js file
  * Last Updated: $Date: 2011-05-05 12:03:47 +0100 (Thu, 05 May 2011) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/ajax/tabs.php b/upload/admin/applications/core/modules_admin/ajax/tabs.php index 454235e9..2e035ca1 100644 --- a/upload/admin/applications/core/modules_admin/ajax/tabs.php +++ b/upload/admin/applications/core/modules_admin/ajax/tabs.php @@ -7,7 +7,7 @@ * $Author: bfarber $ * @since 8th Feb 2011 * $LastChangedDate: 2011-03-10 16:00:38 -0500 (Thu, 10 Mar 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8021 $ */ diff --git a/upload/admin/applications/core/modules_admin/ajax/templatediff.php b/upload/admin/applications/core/modules_admin/ajax/templatediff.php index 24a80d21..4f73e214 100644 --- a/upload/admin/applications/core/modules_admin/ajax/templatediff.php +++ b/upload/admin/applications/core/modules_admin/ajax/templatediff.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * AJAX Functions For applications/core/js/ipb3Templates.js file
  * Last Updated: $Date: 2012-11-30 10:02:12 -0500 (Fri, 30 Nov 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/ajax/templates.php b/upload/admin/applications/core/modules_admin/ajax/templates.php index e868eab7..4e4d6ec3 100644 --- a/upload/admin/applications/core/modules_admin/ajax/templates.php +++ b/upload/admin/applications/core/modules_admin/ajax/templates.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * AJAX Functions For applications/core/js/ipb3Templates.js file
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/ajax/templatesandr.php b/upload/admin/applications/core/modules_admin/ajax/templatesandr.php index f9eac070..44b85118 100644 --- a/upload/admin/applications/core/modules_admin/ajax/templatesandr.php +++ b/upload/admin/applications/core/modules_admin/ajax/templatesandr.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * AJAX Functions For applications/core/js/ipb3Templates.js file
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/ajax/uagents.php b/upload/admin/applications/core/modules_admin/ajax/uagents.php index 5700e92e..6105b7f2 100644 --- a/upload/admin/applications/core/modules_admin/ajax/uagents.php +++ b/upload/admin/applications/core/modules_admin/ajax/uagents.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * AJAX Functions For applications/core/js/ipb3CSS.js file
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/applications/applications.php b/upload/admin/applications/core/modules_admin/applications/applications.php index 02f7d0ad..c69aab2a 100644 --- a/upload/admin/applications/core/modules_admin/applications/applications.php +++ b/upload/admin/applications/core/modules_admin/applications/applications.php @@ -7,7 +7,7 @@ * $Author: bfarber $ * @since 15 January 2007 * $LastChangedDate: 2013-05-07 22:02:49 -0400 (Tue, 07 May 2013) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 12236 $ */ diff --git a/upload/admin/applications/core/modules_admin/applications/blog.php b/upload/admin/applications/core/modules_admin/applications/blog.php index 321f37cd..e06200fb 100644 --- a/upload/admin/applications/core/modules_admin/applications/blog.php +++ b/upload/admin/applications/core/modules_admin/applications/blog.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Blog Application
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/applications/ccs.php b/upload/admin/applications/core/modules_admin/applications/ccs.php index 91833e40..4c0be516 100644 --- a/upload/admin/applications/core/modules_admin/applications/ccs.php +++ b/upload/admin/applications/core/modules_admin/applications/ccs.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Blog Application
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/applications/copyright.php b/upload/admin/applications/core/modules_admin/applications/copyright.php index ae5a5ace..cf150cf9 100644 --- a/upload/admin/applications/core/modules_admin/applications/copyright.php +++ b/upload/admin/applications/core/modules_admin/applications/copyright.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Download Manager Application
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/applications/defaultSection.php b/upload/admin/applications/core/modules_admin/applications/defaultSection.php index 064438d4..5f920861 100644 --- a/upload/admin/applications/core/modules_admin/applications/defaultSection.php +++ b/upload/admin/applications/core/modules_admin/applications/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 20th February 2002 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/core/modules_admin/applications/downloads.php b/upload/admin/applications/core/modules_admin/applications/downloads.php index a47248db..100b1059 100644 --- a/upload/admin/applications/core/modules_admin/applications/downloads.php +++ b/upload/admin/applications/core/modules_admin/applications/downloads.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Download Manager Application
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/applications/enhancements.php b/upload/admin/applications/core/modules_admin/applications/enhancements.php index 92a0869c..8421bfe6 100644 --- a/upload/admin/applications/core/modules_admin/applications/enhancements.php +++ b/upload/admin/applications/core/modules_admin/applications/enhancements.php @@ -7,7 +7,7 @@ * $Author: mark $ * @since 24 July 2012 * $LastChangedDate: 2012-06-20 10:50:23 +0100 (Wed, 20 Jun 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10952 $ */ diff --git a/upload/admin/applications/core/modules_admin/applications/gallery.php b/upload/admin/applications/core/modules_admin/applications/gallery.php index 7ed2cecb..860073d2 100644 --- a/upload/admin/applications/core/modules_admin/applications/gallery.php +++ b/upload/admin/applications/core/modules_admin/applications/gallery.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Gallery Application
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/applications/hooks.php b/upload/admin/applications/core/modules_admin/applications/hooks.php index 63d9f488..a14fcce3 100644 --- a/upload/admin/applications/core/modules_admin/applications/hooks.php +++ b/upload/admin/applications/core/modules_admin/applications/hooks.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Hooks Management
  * Last Updated: $Date: 2014-09-25 13:57:23 -0400 (Thu, 25 Sep 2014) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/applications/nexus.php b/upload/admin/applications/core/modules_admin/applications/nexus.php index 62b1dc0c..9a13b104 100644 --- a/upload/admin/applications/core/modules_admin/applications/nexus.php +++ b/upload/admin/applications/core/modules_admin/applications/nexus.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Nexus Application
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/applications/setup.php b/upload/admin/applications/core/modules_admin/applications/setup.php index 0680724f..d1b5e409 100644 --- a/upload/admin/applications/core/modules_admin/applications/setup.php +++ b/upload/admin/applications/core/modules_admin/applications/setup.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Application Installation
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/attach/attach.php b/upload/admin/applications/core/modules_admin/attach/attach.php index 6b6d15cf..73dcb111 100644 --- a/upload/admin/applications/core/modules_admin/attach/attach.php +++ b/upload/admin/applications/core/modules_admin/attach/attach.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Attachment Poster
  * Last Updated: $Date: 2012-05-21 21:37:50 +0100 (Mon, 21 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/diagnostics/defaultSection.php b/upload/admin/applications/core/modules_admin/diagnostics/defaultSection.php index a707587b..7491647f 100644 --- a/upload/admin/applications/core/modules_admin/diagnostics/defaultSection.php +++ b/upload/admin/applications/core/modules_admin/diagnostics/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 20th February 2002 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/core/modules_admin/diagnostics/diagnostics.php b/upload/admin/applications/core/modules_admin/diagnostics/diagnostics.php index f2d8621e..8c9f11df 100644 --- a/upload/admin/applications/core/modules_admin/diagnostics/diagnostics.php +++ b/upload/admin/applications/core/modules_admin/diagnostics/diagnostics.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Diagnostic tools
  * Last Updated: $Date: 2013-04-15 17:26:30 -0400 (Mon, 15 Apr 2013) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/help/defaultSection.php b/upload/admin/applications/core/modules_admin/help/defaultSection.php index b523d26c..4ccce145 100644 --- a/upload/admin/applications/core/modules_admin/help/defaultSection.php +++ b/upload/admin/applications/core/modules_admin/help/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 20th February 2002 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/core/modules_admin/help/quickhelp.php b/upload/admin/applications/core/modules_admin/help/quickhelp.php index f3a78913..8075216d 100644 --- a/upload/admin/applications/core/modules_admin/help/quickhelp.php +++ b/upload/admin/applications/core/modules_admin/help/quickhelp.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Quick help - shows popups with help information
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/languages/defaultSection.php b/upload/admin/applications/core/modules_admin/languages/defaultSection.php index bfe02e51..6307008b 100644 --- a/upload/admin/applications/core/modules_admin/languages/defaultSection.php +++ b/upload/admin/applications/core/modules_admin/languages/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 20th February 2002 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/core/modules_admin/languages/manage_languages.php b/upload/admin/applications/core/modules_admin/languages/manage_languages.php index 226a616f..87ce8393 100644 --- a/upload/admin/applications/core/modules_admin/languages/manage_languages.php +++ b/upload/admin/applications/core/modules_admin/languages/manage_languages.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Language Pack Management
  * Last Updated: $LastChangedDate: 2013-10-14 17:55:18 -0400 (Mon, 14 Oct 2013) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/login/manualResolver.php b/upload/admin/applications/core/modules_admin/login/manualResolver.php index a3bded98..09e1dd26 100644 --- a/upload/admin/applications/core/modules_admin/login/manualResolver.php +++ b/upload/admin/applications/core/modules_admin/login/manualResolver.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * ACP Login/Logout Routines
  * Last Updated: $Date: 2013-03-20 10:14:51 -0400 (Wed, 20 Mar 2013) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/logs/adminlogs.php b/upload/admin/applications/core/modules_admin/logs/adminlogs.php index f83b308c..4411f39a 100644 --- a/upload/admin/applications/core/modules_admin/logs/adminlogs.php +++ b/upload/admin/applications/core/modules_admin/logs/adminlogs.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Admin logs
  * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/logs/defaultSection.php b/upload/admin/applications/core/modules_admin/logs/defaultSection.php index f0f7b291..5799dc1e 100644 --- a/upload/admin/applications/core/modules_admin/logs/defaultSection.php +++ b/upload/admin/applications/core/modules_admin/logs/defaultSection.php @@ -7,7 +7,7 @@ * $Author: mark $ * @since 20th February 2002 * $LastChangedDate: 2012-04-02 11:17:19 -0400 (Mon, 02 Apr 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10537 $ */ diff --git a/upload/admin/applications/core/modules_admin/logs/emailerrorlogs.php b/upload/admin/applications/core/modules_admin/logs/emailerrorlogs.php index 0461b120..1328c811 100644 --- a/upload/admin/applications/core/modules_admin/logs/emailerrorlogs.php +++ b/upload/admin/applications/core/modules_admin/logs/emailerrorlogs.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Email error logs
  * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/logs/errorlogs.php b/upload/admin/applications/core/modules_admin/logs/errorlogs.php index b77dba1d..510c5ad8 100644 --- a/upload/admin/applications/core/modules_admin/logs/errorlogs.php +++ b/upload/admin/applications/core/modules_admin/logs/errorlogs.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Error logs
  * Last Updated: $LastChangedDate: 2013-02-01 20:54:48 -0500 (Fri, 01 Feb 2013) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/logs/loginlog.php b/upload/admin/applications/core/modules_admin/logs/loginlog.php index 27260baf..62272513 100644 --- a/upload/admin/applications/core/modules_admin/logs/loginlog.php +++ b/upload/admin/applications/core/modules_admin/logs/loginlog.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Admin Login Logs
  * Last Updated: $LastChangedDate: 2013-03-19 11:50:13 -0400 (Tue, 19 Mar 2013) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/logs/logsSplash.php b/upload/admin/applications/core/modules_admin/logs/logsSplash.php index 5607e7ed..c374dcd3 100644 --- a/upload/admin/applications/core/modules_admin/logs/logsSplash.php +++ b/upload/admin/applications/core/modules_admin/logs/logsSplash.php @@ -7,7 +7,7 @@ * $Author: bfarber $ * @since 8th Feb 2011 * $LastChangedDate: 2011-09-12 20:59:05 -0400 (Mon, 12 Sep 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 9483 $ */ diff --git a/upload/admin/applications/core/modules_admin/logs/mobilelogs.php b/upload/admin/applications/core/modules_admin/logs/mobilelogs.php index 132e1678..b32b95a7 100644 --- a/upload/admin/applications/core/modules_admin/logs/mobilelogs.php +++ b/upload/admin/applications/core/modules_admin/logs/mobilelogs.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Mobile Notification logs
  * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/logs/modlogs.php b/upload/admin/applications/core/modules_admin/logs/modlogs.php index b9c59a22..a9c15110 100644 --- a/upload/admin/applications/core/modules_admin/logs/modlogs.php +++ b/upload/admin/applications/core/modules_admin/logs/modlogs.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Moderator logs
  * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/logs/spamlogs.php b/upload/admin/applications/core/modules_admin/logs/spamlogs.php index e07d8fab..6feb9a40 100644 --- a/upload/admin/applications/core/modules_admin/logs/spamlogs.php +++ b/upload/admin/applications/core/modules_admin/logs/spamlogs.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Admin logs
  * Last Updated: $LastChangedDate: 2013-05-01 17:35:09 -0400 (Wed, 01 May 2013) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/logs/spiderlogs.php b/upload/admin/applications/core/modules_admin/logs/spiderlogs.php index 0f02e0af..52ea31e5 100644 --- a/upload/admin/applications/core/modules_admin/logs/spiderlogs.php +++ b/upload/admin/applications/core/modules_admin/logs/spiderlogs.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Search Engine Spider logs
  * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/logs/sqlerror.php b/upload/admin/applications/core/modules_admin/logs/sqlerror.php index cee39c17..4efb80a6 100644 --- a/upload/admin/applications/core/modules_admin/logs/sqlerror.php +++ b/upload/admin/applications/core/modules_admin/logs/sqlerror.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * SQL error logs
  * Last Updated: $LastChangedDate: 2013-04-15 17:26:30 -0400 (Mon, 15 Apr 2013) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/logs/tasklogs.php b/upload/admin/applications/core/modules_admin/logs/tasklogs.php index 45316489..0a2147be 100644 --- a/upload/admin/applications/core/modules_admin/logs/tasklogs.php +++ b/upload/admin/applications/core/modules_admin/logs/tasklogs.php @@ -6,7 +6,7 @@ * $License: http://www.invisionpower.com/company/standards.php#license$ * $Author: AndyMillne $ * $LastChangedDate: 2013-10-16 12:57:41 -0400 (Wed, 16 Oct 2013) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 12380 $ */ diff --git a/upload/admin/applications/core/modules_admin/logs/warnlogs.php b/upload/admin/applications/core/modules_admin/logs/warnlogs.php index d79b99d3..82a14248 100644 --- a/upload/admin/applications/core/modules_admin/logs/warnlogs.php +++ b/upload/admin/applications/core/modules_admin/logs/warnlogs.php @@ -7,7 +7,7 @@ * $Author: bfarber $ * @since 27th January 2004 * $LastChangedDate: 2013-05-02 23:43:16 -0400 (Thu, 02 May 2013) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 12217 $ */ diff --git a/upload/admin/applications/core/modules_admin/logs/xmlrpclogs.php b/upload/admin/applications/core/modules_admin/logs/xmlrpclogs.php index 38f719a7..ec9e909f 100644 --- a/upload/admin/applications/core/modules_admin/logs/xmlrpclogs.php +++ b/upload/admin/applications/core/modules_admin/logs/xmlrpclogs.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * API Users
  * Last Updated: $Date: 2012-11-28 09:38:19 -0500 (Wed, 28 Nov 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/mobileapp/defaultSection.php b/upload/admin/applications/core/modules_admin/mobileapp/defaultSection.php index ae2e83aa..e48302bb 100644 --- a/upload/admin/applications/core/modules_admin/mobileapp/defaultSection.php +++ b/upload/admin/applications/core/modules_admin/mobileapp/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 20th February 2002 * $LastChangedDate: 2010-10-14 13:11:17 -0400 (Thu, 14 Oct 2010) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 477 $ */ diff --git a/upload/admin/applications/core/modules_admin/mobileapp/images.php b/upload/admin/applications/core/modules_admin/mobileapp/images.php index 2e774168..d9bf73c7 100644 --- a/upload/admin/applications/core/modules_admin/mobileapp/images.php +++ b/upload/admin/applications/core/modules_admin/mobileapp/images.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Manage mobile app images
  * Last Updated: $Date: 2012-03-30 16:23:27 +0100 (Fri, 30 Mar 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/mycp/dashboard.php b/upload/admin/applications/core/modules_admin/mycp/dashboard.php index c03ed019..3ae989ea 100644 --- a/upload/admin/applications/core/modules_admin/mycp/dashboard.php +++ b/upload/admin/applications/core/modules_admin/mycp/dashboard.php @@ -2,19 +2,19 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Dashboard
- * Last Updated: $Date: 2013-09-06 16:39:06 -0400 (Fri, 06 Sep 2013) $
+ * Last Updated: $Date: 2015-08-21 11:05:17 -0400 (Fri, 21 Aug 2015) $
  * 
* - * @author $Author: bfarber $ + * @author $Author: stuarts $ * @copyright (c) 2001 - 2009 Invision Power Services, Inc. * @license http://www.invisionpower.com/company/standards.php#license * @package IP.Board * @subpackage Core * @link http://www.invisionpower.com * @since 5th January 2005 - * @version $Revision: 12348 $ + * @version $Revision: 12667 $ */ if ( ! defined( 'IN_ACP' ) ) @@ -153,6 +153,7 @@ class admin_core_mycp_dashboard extends ipsCommand { $classToLoad = IPSLib::loadLibrary( IPS_KERNEL_PATH . 'classFileManagement.php', 'classFileManagement' ); $classFileManagement = new $classToLoad(); + $classFileManagement->timeout = 5; if( strpos( $this->settings['base_url'], 'https://' ) !== false ) { diff --git a/upload/admin/applications/core/modules_admin/mycp/defaultSection.php b/upload/admin/applications/core/modules_admin/mycp/defaultSection.php index 498e3451..33d5119b 100644 --- a/upload/admin/applications/core/modules_admin/mycp/defaultSection.php +++ b/upload/admin/applications/core/modules_admin/mycp/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 20th February 2002 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/core/modules_admin/mycp/details.php b/upload/admin/applications/core/modules_admin/mycp/details.php index 7f29be6e..03caf24e 100644 --- a/upload/admin/applications/core/modules_admin/mycp/details.php +++ b/upload/admin/applications/core/modules_admin/mycp/details.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Admin change email/password
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/mycp/tabs.php b/upload/admin/applications/core/modules_admin/mycp/tabs.php index ae3fb952..6b598a88 100644 --- a/upload/admin/applications/core/modules_admin/mycp/tabs.php +++ b/upload/admin/applications/core/modules_admin/mycp/tabs.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Dashboard
  * Last Updated: $Date: 2012-07-12 18:15:50 +0100 (Thu, 12 Jul 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/posts/badwords.php b/upload/admin/applications/core/modules_admin/posts/badwords.php index 9ba37f3a..7bc82609 100644 --- a/upload/admin/applications/core/modules_admin/posts/badwords.php +++ b/upload/admin/applications/core/modules_admin/posts/badwords.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Bad Word Filters
  * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/posts/bbcode.php b/upload/admin/applications/core/modules_admin/posts/bbcode.php index 5d52d8bf..6ab062ab 100644 --- a/upload/admin/applications/core/modules_admin/posts/bbcode.php +++ b/upload/admin/applications/core/modules_admin/posts/bbcode.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * BBCode Management
  * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/posts/defaultSection.php b/upload/admin/applications/core/modules_admin/posts/defaultSection.php index 1ba42da3..1d627acd 100644 --- a/upload/admin/applications/core/modules_admin/posts/defaultSection.php +++ b/upload/admin/applications/core/modules_admin/posts/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 20th February 2002 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/core/modules_admin/posts/emoticons.php b/upload/admin/applications/core/modules_admin/posts/emoticons.php index 1e073fd7..cd3cbd29 100644 --- a/upload/admin/applications/core/modules_admin/posts/emoticons.php +++ b/upload/admin/applications/core/modules_admin/posts/emoticons.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Emoticon Management
  * Last Updated: $LastChangedDate: 2012-05-24 16:20:59 -0400 (Thu, 24 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/posts/media.php b/upload/admin/applications/core/modules_admin/posts/media.php index 456081df..2bec0e14 100644 --- a/upload/admin/applications/core/modules_admin/posts/media.php +++ b/upload/admin/applications/core/modules_admin/posts/media.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * BBCode Media Tag Management
  * Last Updated: $LastChangedDate: 2012-05-22 13:10:11 -0400 (Tue, 22 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/report/defaultSection.php b/upload/admin/applications/core/modules_admin/report/defaultSection.php index eea260dd..9a5d6634 100644 --- a/upload/admin/applications/core/modules_admin/report/defaultSection.php +++ b/upload/admin/applications/core/modules_admin/report/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 20th February 2002 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/core/modules_admin/report/reports.php b/upload/admin/applications/core/modules_admin/report/reports.php index 91a28bb5..a1b26b27 100644 --- a/upload/admin/applications/core/modules_admin/report/reports.php +++ b/upload/admin/applications/core/modules_admin/report/reports.php @@ -8,7 +8,7 @@ * @author Based on original "Report Center" by Luke Scott * @since - * $LastChangedDate: 2013-02-14 19:17:38 -0500 (Thu, 14 Feb 2013) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 11992 $ */ diff --git a/upload/admin/applications/core/modules_admin/settings/defaultSection.php b/upload/admin/applications/core/modules_admin/settings/defaultSection.php index 1f266190..c015e69c 100644 --- a/upload/admin/applications/core/modules_admin/settings/defaultSection.php +++ b/upload/admin/applications/core/modules_admin/settings/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 20th February 2002 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/core/modules_admin/settings/settings.php b/upload/admin/applications/core/modules_admin/settings/settings.php index 54cd5a82..2ddb1a0c 100644 --- a/upload/admin/applications/core/modules_admin/settings/settings.php +++ b/upload/admin/applications/core/modules_admin/settings/settings.php @@ -1,7 +1,7 @@ * Invision Power Services - * IP.Board v3.4.8 + * IP.Board v3.4.9 * mySQL Admin * Last Updated: $Date: 2013-10-14 17:55:18 -0400 (Mon, 14 Oct 2013) $ *
diff --git a/upload/admin/applications/core/modules_admin/sql/toolbox.php b/upload/admin/applications/core/modules_admin/sql/toolbox.php index 92c35534..d880b14f 100644 --- a/upload/admin/applications/core/modules_admin/sql/toolbox.php +++ b/upload/admin/applications/core/modules_admin/sql/toolbox.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * SQL Admin
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/system/charts.php b/upload/admin/applications/core/modules_admin/system/charts.php index 02ec7272..49f7f897 100644 --- a/upload/admin/applications/core/modules_admin/system/charts.php +++ b/upload/admin/applications/core/modules_admin/system/charts.php @@ -7,7 +7,7 @@ * $Author: bfarber $ * @since - * $LastChangedDate: 2011-11-23 14:13:15 -0500 (Wed, 23 Nov 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 9873 $ */ diff --git a/upload/admin/applications/core/modules_admin/system/defaultSection.php b/upload/admin/applications/core/modules_admin/system/defaultSection.php index 6baf3aeb..d354516c 100644 --- a/upload/admin/applications/core/modules_admin/system/defaultSection.php +++ b/upload/admin/applications/core/modules_admin/system/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 20th February 2002 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/core/modules_admin/system/security.php b/upload/admin/applications/core/modules_admin/system/security.php index 6868a86c..37c432a5 100644 --- a/upload/admin/applications/core/modules_admin/system/security.php +++ b/upload/admin/applications/core/modules_admin/system/security.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Security center tools
  * Last Updated: $Date: 2014-09-09 09:01:47 -0400 (Tue, 09 Sep 2014) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/system/taskmanager.php b/upload/admin/applications/core/modules_admin/system/taskmanager.php index e148a70e..f35d8b6e 100644 --- a/upload/admin/applications/core/modules_admin/system/taskmanager.php +++ b/upload/admin/applications/core/modules_admin/system/taskmanager.php @@ -6,7 +6,7 @@ * $License: http://www.invisionpower.com/company/standards.php#license$ * $Author: ips_terabyte $ * $LastChangedDate: 2012-03-26 12:16:52 -0400 (Mon, 26 Mar 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10490 $ */ diff --git a/upload/admin/applications/core/modules_admin/templates/defaultSection.php b/upload/admin/applications/core/modules_admin/templates/defaultSection.php index 64cb0461..470e4fc7 100644 --- a/upload/admin/applications/core/modules_admin/templates/defaultSection.php +++ b/upload/admin/applications/core/modules_admin/templates/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 20th February 2002 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/core/modules_admin/templates/easylogo.php b/upload/admin/applications/core/modules_admin/templates/easylogo.php index 86ce6539..ab160138 100644 --- a/upload/admin/applications/core/modules_admin/templates/easylogo.php +++ b/upload/admin/applications/core/modules_admin/templates/easylogo.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Easy Logo Changer
  * Last Updated: $Date: 2013-10-15 10:55:14 -0400 (Tue, 15 Oct 2013) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/templates/external.php b/upload/admin/applications/core/modules_admin/templates/external.php index afa50477..56717d1b 100644 --- a/upload/admin/applications/core/modules_admin/templates/external.php +++ b/upload/admin/applications/core/modules_admin/templates/external.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Externally edit templates and css
  * Last Updated: $Date: 2011-05-05 12:03:47 +0100 (Thu, 05 May 2011) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/templates/importexport.php b/upload/admin/applications/core/modules_admin/templates/importexport.php index b19d2bf9..f95c1834 100644 --- a/upload/admin/applications/core/modules_admin/templates/importexport.php +++ b/upload/admin/applications/core/modules_admin/templates/importexport.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Import and export skin sets
  * Last Updated: $Date: 2012-05-11 06:56:52 -0400 (Fri, 11 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/templates/replacements.php b/upload/admin/applications/core/modules_admin/templates/replacements.php index a03ac734..7fb029f7 100644 --- a/upload/admin/applications/core/modules_admin/templates/replacements.php +++ b/upload/admin/applications/core/modules_admin/templates/replacements.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Macros/replacements
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/templates/searchandreplace.php b/upload/admin/applications/core/modules_admin/templates/searchandreplace.php index 1047a72c..17b04022 100644 --- a/upload/admin/applications/core/modules_admin/templates/searchandreplace.php +++ b/upload/admin/applications/core/modules_admin/templates/searchandreplace.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Skin search and replace tool
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/templates/skindiff.php b/upload/admin/applications/core/modules_admin/templates/skindiff.php index 5a05310e..b6388a42 100644 --- a/upload/admin/applications/core/modules_admin/templates/skindiff.php +++ b/upload/admin/applications/core/modules_admin/templates/skindiff.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Skin diff report tools
  * Last Updated: $Date: 2012-08-15 10:33:53 -0400 (Wed, 15 Aug 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/templates/skinsets.php b/upload/admin/applications/core/modules_admin/templates/skinsets.php index 55a6c6b8..eb9c3cfa 100644 --- a/upload/admin/applications/core/modules_admin/templates/skinsets.php +++ b/upload/admin/applications/core/modules_admin/templates/skinsets.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Skin set management
  * Last Updated: $Date: 2013-01-15 15:27:53 -0500 (Tue, 15 Jan 2013) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/templates/systemTemplates.php b/upload/admin/applications/core/modules_admin/templates/systemTemplates.php index 2528aecd..65b4db53 100644 --- a/upload/admin/applications/core/modules_admin/templates/systemTemplates.php +++ b/upload/admin/applications/core/modules_admin/templates/systemTemplates.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Manage System Templates
  * Last Updated: $Date: 2011-05-05 12:03:47 +0100 (Thu, 05 May 2011) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/templates/templates.php b/upload/admin/applications/core/modules_admin/templates/templates.php index 62ed5ac4..dfa3d31e 100644 --- a/upload/admin/applications/core/modules_admin/templates/templates.php +++ b/upload/admin/applications/core/modules_admin/templates/templates.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Template editing
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/templates/tools.php b/upload/admin/applications/core/modules_admin/templates/tools.php index c5f25ac1..b08b938b 100644 --- a/upload/admin/applications/core/modules_admin/templates/tools.php +++ b/upload/admin/applications/core/modules_admin/templates/tools.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Skin tools
  * Last Updated: $Date: 2012-08-15 10:33:53 -0400 (Wed, 15 Aug 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/templates/urlmap.php b/upload/admin/applications/core/modules_admin/templates/urlmap.php index b7e70c49..8d6a7189 100644 --- a/upload/admin/applications/core/modules_admin/templates/urlmap.php +++ b/upload/admin/applications/core/modules_admin/templates/urlmap.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Skin URL mapping
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/templates/useragents.php b/upload/admin/applications/core/modules_admin/templates/useragents.php index 7180a8c4..94962b55 100644 --- a/upload/admin/applications/core/modules_admin/templates/useragents.php +++ b/upload/admin/applications/core/modules_admin/templates/useragents.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Gallery Application
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/tools/api.php b/upload/admin/applications/core/modules_admin/tools/api.php index 59da8717..04438aeb 100644 --- a/upload/admin/applications/core/modules_admin/tools/api.php +++ b/upload/admin/applications/core/modules_admin/tools/api.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * API Users
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/tools/cache.php b/upload/admin/applications/core/modules_admin/tools/cache.php index 135b2928..8feb32bc 100644 --- a/upload/admin/applications/core/modules_admin/tools/cache.php +++ b/upload/admin/applications/core/modules_admin/tools/cache.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * ACP : Cache management
  * Last Updated: $Date: 2012-11-19 13:33:07 -0500 (Mon, 19 Nov 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/tools/defaultSection.php b/upload/admin/applications/core/modules_admin/tools/defaultSection.php index a9de6233..c52e160e 100644 --- a/upload/admin/applications/core/modules_admin/tools/defaultSection.php +++ b/upload/admin/applications/core/modules_admin/tools/defaultSection.php @@ -7,7 +7,7 @@ * $Author: bfarber $ * @since 20th February 2002 * $LastChangedDate: 2011-08-05 20:51:01 -0400 (Fri, 05 Aug 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 9373 $ */ diff --git a/upload/admin/applications/core/modules_admin/tools/help.php b/upload/admin/applications/core/modules_admin/tools/help.php index d956356c..10cabfa5 100644 --- a/upload/admin/applications/core/modules_admin/tools/help.php +++ b/upload/admin/applications/core/modules_admin/tools/help.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Help Files
  * Last Updated: $LastChangedDate: 2012-12-17 12:34:52 -0500 (Mon, 17 Dec 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/tools/incomingEmails.php b/upload/admin/applications/core/modules_admin/tools/incomingEmails.php index a9613712..b3c7938a 100644 --- a/upload/admin/applications/core/modules_admin/tools/incomingEmails.php +++ b/upload/admin/applications/core/modules_admin/tools/incomingEmails.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Incoming Email Routing
  * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/tools/licensekey.php b/upload/admin/applications/core/modules_admin/tools/licensekey.php index cee25852..7bfd5082 100644 --- a/upload/admin/applications/core/modules_admin/tools/licensekey.php +++ b/upload/admin/applications/core/modules_admin/tools/licensekey.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * License Manager
  * Last Updated: $LastChangedDate: 2013-11-15 13:16:48 -0500 (Fri, 15 Nov 2013) $
  * 
@@ -131,13 +131,41 @@ class admin_core_tools_licensekey extends ipsCommand */ public function recache() { + /* If we don't have a key, an empty array is fine */ + if ( !$this->settings['ipb_reg_number'] ) + { + $this->cache->setCache( 'licenseData', array(), array( 'array' => 1 ) ); + return; + } + + /* Query the api */ + $classToLoad = IPSLib::loadLibrary( IPS_KERNEL_PATH . 'classFileManagement.php', 'classFileManagement' ); + $classFileManagement = new $classToLoad(); + $response = $classFileManagement->getFileContents( "http://license.invisionpower.com/?a=info&key={$this->settings['ipb_reg_number']}&url={$this->settings['board_url']}" ); + + /* Is it valid? */ + if ( $response == 'NO_KEY' ) + { + //IPSLib::updateSettings( array( 'ipb_reg_number' => '' ) ); + //$this->cache->setCache( 'licenseData', array(), array( 'array' => 1 ) ); + return; + } /* Save */ - $licenseData = darkLAE::getLicenseData(); + $licenseData = json_decode( $response, true ); $licenseData['_cached_date'] = time(); $licenseData['key']['_expires'] = $licenseData['key']['_expires'] ? $licenseData['key']['_expires'] : 9999999999; $licenseData['key']['expires'] = $licenseData['key']['expires'] ? $licenseData['key']['expires'] : 9999999999; $this->cache->setCache( 'licenseData', $licenseData, array( 'array' => 1 ) ); + /* Copyright Removal? */ + if ( $licenseData['cr'] ) + { + IPSLib::updateSettings( array( 'ipb_copy_number' => $licenseData['cr'], 'ips_cp_purchase' => 1 ) ); + } + elseif ( $this->settings['ips_cp_purchase'] ) + { + IPSLib::updateSettings( array( 'ips_cp_purchase' => 0 ) ); + } } } \ No newline at end of file diff --git a/upload/admin/applications/core/modules_admin/tools/login.php b/upload/admin/applications/core/modules_admin/tools/login.php index 98714a95..7975066d 100644 --- a/upload/admin/applications/core/modules_admin/tools/login.php +++ b/upload/admin/applications/core/modules_admin/tools/login.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Login Manager Administration
  * Last Updated: $Date: 2013-05-03 23:09:37 -0400 (Fri, 03 May 2013) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/tools/logsSplash.php b/upload/admin/applications/core/modules_admin/tools/logsSplash.php index 7605b3bb..d5053a14 100644 --- a/upload/admin/applications/core/modules_admin/tools/logsSplash.php +++ b/upload/admin/applications/core/modules_admin/tools/logsSplash.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Log Splash Screen
  * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/tools/performance.php b/upload/admin/applications/core/modules_admin/tools/performance.php index fc89b6a6..80745d10 100644 --- a/upload/admin/applications/core/modules_admin/tools/performance.php +++ b/upload/admin/applications/core/modules_admin/tools/performance.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Toggle performance mode on/off
  * Last Updated: $LastChangedDate: 2012-05-22 13:10:11 -0400 (Tue, 22 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/tools/qanda.php b/upload/admin/applications/core/modules_admin/tools/qanda.php index b2230804..bb374818 100644 --- a/upload/admin/applications/core/modules_admin/tools/qanda.php +++ b/upload/admin/applications/core/modules_admin/tools/qanda.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Registration question and answer challenges
  * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/tools/rebuild.php b/upload/admin/applications/core/modules_admin/tools/rebuild.php index eee368bb..8c6accda 100644 --- a/upload/admin/applications/core/modules_admin/tools/rebuild.php +++ b/upload/admin/applications/core/modules_admin/tools/rebuild.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Rebuild & Other Tools
  * Last Updated: $LastChangedDate: 2014-10-01 13:50:54 -0400 (Wed, 01 Oct 2014) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/tools/sharelinks.php b/upload/admin/applications/core/modules_admin/tools/sharelinks.php index 06fd35e9..913c296a 100644 --- a/upload/admin/applications/core/modules_admin/tools/sharelinks.php +++ b/upload/admin/applications/core/modules_admin/tools/sharelinks.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Bookmarks
  * Last Updated: $LastChangedDate: 2013-01-07 12:09:37 -0500 (Mon, 07 Jan 2013) $
  * 
diff --git a/upload/admin/applications/core/modules_admin/tools/uagents.php b/upload/admin/applications/core/modules_admin/tools/uagents.php index c498b6c3..07d96331 100644 --- a/upload/admin/applications/core/modules_admin/tools/uagents.php +++ b/upload/admin/applications/core/modules_admin/tools/uagents.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * User agent management
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_public/ajax/attach.php b/upload/admin/applications/core/modules_public/ajax/attach.php index 5bdf50d4..8a30e845 100644 --- a/upload/admin/applications/core/modules_public/ajax/attach.php +++ b/upload/admin/applications/core/modules_public/ajax/attach.php @@ -7,7 +7,7 @@ * $Author: mmecham $ * @since - * $LastChangedDate: 2013-03-19 09:02:31 -0400 (Tue, 19 Mar 2013) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 12085 $ */ diff --git a/upload/admin/applications/core/modules_public/ajax/captcha.php b/upload/admin/applications/core/modules_public/ajax/captcha.php index 2550bf1d..776757ee 100644 --- a/upload/admin/applications/core/modules_public/ajax/captcha.php +++ b/upload/admin/applications/core/modules_public/ajax/captcha.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Update captcha image
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_public/ajax/comments.php b/upload/admin/applications/core/modules_public/ajax/comments.php index 82020712..901579a3 100644 --- a/upload/admin/applications/core/modules_public/ajax/comments.php +++ b/upload/admin/applications/core/modules_public/ajax/comments.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Image Ajax
  * Last Updated: $LastChangedDate: 2013-02-08 10:22:34 -0500 (Fri, 08 Feb 2013) $
  * 
diff --git a/upload/admin/applications/core/modules_public/ajax/defaultSection.php b/upload/admin/applications/core/modules_public/ajax/defaultSection.php index 6826e14b..567aa4bd 100644 --- a/upload/admin/applications/core/modules_public/ajax/defaultSection.php +++ b/upload/admin/applications/core/modules_public/ajax/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 20th February 2002 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/core/modules_public/ajax/editor.php b/upload/admin/applications/core/modules_public/ajax/editor.php index ec22e3ae..30b63dbc 100644 --- a/upload/admin/applications/core/modules_public/ajax/editor.php +++ b/upload/admin/applications/core/modules_public/ajax/editor.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Handles ajax functions for IP.Board Text Editor
  * Author: Matt "Matt Mecham" Mecham
  * Last Updated: $LastChangedDate: 2012-10-10 06:39:40 -0400 (Wed, 10 Oct 2012) $
diff --git a/upload/admin/applications/core/modules_public/ajax/facebook.php b/upload/admin/applications/core/modules_public/ajax/facebook.php
index 37b9539a..a4d56d36 100644
--- a/upload/admin/applications/core/modules_public/ajax/facebook.php
+++ b/upload/admin/applications/core/modules_public/ajax/facebook.php
@@ -3,7 +3,7 @@
 /**
  * 
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Login handler abstraction : AJAX login
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_public/ajax/findnames.php b/upload/admin/applications/core/modules_public/ajax/findnames.php index 25f4380c..c1afe35a 100644 --- a/upload/admin/applications/core/modules_public/ajax/findnames.php +++ b/upload/admin/applications/core/modules_public/ajax/findnames.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Login handler abstraction : AJAX Find Names functions
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_public/ajax/like.php b/upload/admin/applications/core/modules_public/ajax/like.php index 3633fecb..f1cb20c2 100644 --- a/upload/admin/applications/core/modules_public/ajax/like.php +++ b/upload/admin/applications/core/modules_public/ajax/like.php @@ -7,7 +7,7 @@ * $Author: bfarber $ * @since - * $LastChangedDate: 2011-08-05 20:51:01 -0400 (Fri, 05 Aug 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 9373 $ */ diff --git a/upload/admin/applications/core/modules_public/ajax/login.php b/upload/admin/applications/core/modules_public/ajax/login.php index 9e83f13b..b0288627 100644 --- a/upload/admin/applications/core/modules_public/ajax/login.php +++ b/upload/admin/applications/core/modules_public/ajax/login.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Login handler abstraction : AJAX login
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_public/ajax/media.php b/upload/admin/applications/core/modules_public/ajax/media.php index 35ead9b1..7ed88986 100644 --- a/upload/admin/applications/core/modules_public/ajax/media.php +++ b/upload/admin/applications/core/modules_public/ajax/media.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Handles ajax functions for IP.Board Text Editor
  * Author: Matt "Matt Mecham" Mecham
  * Last Updated: $LastChangedDate: 2012-06-07 06:21:09 -0400 (Thu, 07 Jun 2012) $
diff --git a/upload/admin/applications/core/modules_public/ajax/modcp.php b/upload/admin/applications/core/modules_public/ajax/modcp.php
index 26988f19..08df8eaa 100644
--- a/upload/admin/applications/core/modules_public/ajax/modcp.php
+++ b/upload/admin/applications/core/modules_public/ajax/modcp.php
@@ -6,7 +6,7 @@
  * $Author: mark $
  * @since		2/14/2011
  * $LastChangedDate: 2011-11-16 11:36:38 -0500 (Wed, 16 Nov 2011) $
- * @version		v3.4.8
+ * @version		v3.4.9
  * $Revision: 9829 $
  */
 
diff --git a/upload/admin/applications/core/modules_public/ajax/navigation.php b/upload/admin/applications/core/modules_public/ajax/navigation.php
index 6fb38413..f06dc959 100644
--- a/upload/admin/applications/core/modules_public/ajax/navigation.php
+++ b/upload/admin/applications/core/modules_public/ajax/navigation.php
@@ -6,7 +6,7 @@
  * $Author: bfarber $
  * @since		2/14/2011
  * $LastChangedDate: 2011-04-27 19:56:50 -0400 (Wed, 27 Apr 2011) $
- * @version		v3.4.8
+ * @version		v3.4.9
  * $Revision: 8514 $
  */
 
diff --git a/upload/admin/applications/core/modules_public/ajax/notifications.php b/upload/admin/applications/core/modules_public/ajax/notifications.php
index 1a3f7dbc..61e78146 100644
--- a/upload/admin/applications/core/modules_public/ajax/notifications.php
+++ b/upload/admin/applications/core/modules_public/ajax/notifications.php
@@ -3,7 +3,7 @@
 /**
  * 
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Notification AJAX methods
  * Last Updated: $Date: 2012-08-28 17:56:22 -0400 (Tue, 28 Aug 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_public/ajax/register.php b/upload/admin/applications/core/modules_public/ajax/register.php index e87f9886..5edec48b 100644 --- a/upload/admin/applications/core/modules_public/ajax/register.php +++ b/upload/admin/applications/core/modules_public/ajax/register.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Registration AJAX routines
  * Last Updated: $Date: 2012-07-19 11:49:35 -0400 (Thu, 19 Jul 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_public/ajax/reports.php b/upload/admin/applications/core/modules_public/ajax/reports.php index aaeb3ee0..203c52d3 100644 --- a/upload/admin/applications/core/modules_public/ajax/reports.php +++ b/upload/admin/applications/core/modules_public/ajax/reports.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Reports AJAX options
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_public/ajax/reputation.php b/upload/admin/applications/core/modules_public/ajax/reputation.php index d13dbcad..e0331445 100644 --- a/upload/admin/applications/core/modules_public/ajax/reputation.php +++ b/upload/admin/applications/core/modules_public/ajax/reputation.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Reputation
  * Last Updated: $Date: 2013-10-16 19:11:24 -0400 (Wed, 16 Oct 2013) $
  * 
diff --git a/upload/admin/applications/core/modules_public/ajax/search.php b/upload/admin/applications/core/modules_public/ajax/search.php index 570dff94..6b0cc123 100644 --- a/upload/admin/applications/core/modules_public/ajax/search.php +++ b/upload/admin/applications/core/modules_public/ajax/search.php @@ -6,7 +6,7 @@ * $Author: AndyMillne $ * @since 2/14/2011 * $LastChangedDate: 2013-03-22 17:35:37 -0400 (Fri, 22 Mar 2013) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 12112 $ */ diff --git a/upload/admin/applications/core/modules_public/ajax/sharelinks.php b/upload/admin/applications/core/modules_public/ajax/sharelinks.php index 70610ea1..214992d4 100644 --- a/upload/admin/applications/core/modules_public/ajax/sharelinks.php +++ b/upload/admin/applications/core/modules_public/ajax/sharelinks.php @@ -6,7 +6,7 @@ * $License: http://www.invisionpower.com/company/standards.php#license$ * $Author: mmecham $ * $LastChangedDate: 2012-09-19 10:57:30 -0400 (Wed, 19 Sep 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 11350 $ */ diff --git a/upload/admin/applications/core/modules_public/ajax/skin.php b/upload/admin/applications/core/modules_public/ajax/skin.php index 04cb3c7d..4b283ad1 100644 --- a/upload/admin/applications/core/modules_public/ajax/skin.php +++ b/upload/admin/applications/core/modules_public/ajax/skin.php @@ -7,7 +7,7 @@ * $Author: bfarber $ * @since - * $LastChangedDate: 2011-08-06 01:51:01 +0100 (Sat, 06 Aug 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 9373 $ */ diff --git a/upload/admin/applications/core/modules_public/ajax/skingen.php b/upload/admin/applications/core/modules_public/ajax/skingen.php index 54aa0f78..3e583133 100644 --- a/upload/admin/applications/core/modules_public/ajax/skingen.php +++ b/upload/admin/applications/core/modules_public/ajax/skingen.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Like Ajax
  * Last Updated: $LastChangedDate: 2011-05-05 12:03:47 +0100 (Thu, 05 May 2011) $
  * 
diff --git a/upload/admin/applications/core/modules_public/ajax/tags.php b/upload/admin/applications/core/modules_public/ajax/tags.php index daa86923..5a454972 100644 --- a/upload/admin/applications/core/modules_public/ajax/tags.php +++ b/upload/admin/applications/core/modules_public/ajax/tags.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Like Ajax
  * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_public/ajax/templates.php b/upload/admin/applications/core/modules_public/ajax/templates.php index fda17d3a..892d23a0 100644 --- a/upload/admin/applications/core/modules_public/ajax/templates.php +++ b/upload/admin/applications/core/modules_public/ajax/templates.php @@ -7,7 +7,7 @@ * $Author: mmecham $ * @since Friday 19th May 2006 17:33 * $LastChangedDate: 2011-05-03 04:53:04 -0400 (Tue, 03 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8588 $ */ diff --git a/upload/admin/applications/core/modules_public/ajax/usercp.php b/upload/admin/applications/core/modules_public/ajax/usercp.php index db6acbd0..73eee24e 100644 --- a/upload/admin/applications/core/modules_public/ajax/usercp.php +++ b/upload/admin/applications/core/modules_public/ajax/usercp.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Login handler abstraction : AJAX UserCP functions
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_public/attach/attach.php b/upload/admin/applications/core/modules_public/attach/attach.php index ff39be18..cde5db17 100644 --- a/upload/admin/applications/core/modules_public/attach/attach.php +++ b/upload/admin/applications/core/modules_public/attach/attach.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Attachment Poster
  * Last Updated: $Date: 2012-08-22 05:05:53 -0400 (Wed, 22 Aug 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_public/attach/defaultSection.php b/upload/admin/applications/core/modules_public/attach/defaultSection.php index 71bea3ea..556d7fdb 100644 --- a/upload/admin/applications/core/modules_public/attach/defaultSection.php +++ b/upload/admin/applications/core/modules_public/attach/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 20th February 2002 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/core/modules_public/global/captcha.php b/upload/admin/applications/core/modules_public/global/captcha.php index dfd738cd..ffd4fe5e 100644 --- a/upload/admin/applications/core/modules_public/global/captcha.php +++ b/upload/admin/applications/core/modules_public/global/captcha.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Captcha
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_public/global/comments.php b/upload/admin/applications/core/modules_public/global/comments.php index 63d865ab..2d14122e 100644 --- a/upload/admin/applications/core/modules_public/global/comments.php +++ b/upload/admin/applications/core/modules_public/global/comments.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Image Ajax
  * Last Updated: $LastChangedDate: 2012-10-03 17:32:06 -0400 (Wed, 03 Oct 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_public/global/defaultSection.php b/upload/admin/applications/core/modules_public/global/defaultSection.php index faea6f11..bb25ca48 100644 --- a/upload/admin/applications/core/modules_public/global/defaultSection.php +++ b/upload/admin/applications/core/modules_public/global/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 20th February 2002 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/core/modules_public/global/like.php b/upload/admin/applications/core/modules_public/global/like.php index 2f628b39..65b3f8cd 100644 --- a/upload/admin/applications/core/modules_public/global/like.php +++ b/upload/admin/applications/core/modules_public/global/like.php @@ -7,7 +7,7 @@ * $Author: AndyMillne $ * @since - * $LastChangedDate: 2013-02-06 16:33:34 -0500 (Wed, 06 Feb 2013) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 11947 $ */ diff --git a/upload/admin/applications/core/modules_public/global/login.php b/upload/admin/applications/core/modules_public/global/login.php index ce5592ad..3312afba 100644 --- a/upload/admin/applications/core/modules_public/global/login.php +++ b/upload/admin/applications/core/modules_public/global/login.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Login handler abstraction
  * Last Updated: $Date: 2014-12-31 17:46:06 -0500 (Wed, 31 Dec 2014) $
  * 
diff --git a/upload/admin/applications/core/modules_public/global/lostpass.php b/upload/admin/applications/core/modules_public/global/lostpass.php index 6802beb1..ff16873c 100644 --- a/upload/admin/applications/core/modules_public/global/lostpass.php +++ b/upload/admin/applications/core/modules_public/global/lostpass.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Recover Lost Password
  * Last Updated: $Date: 2012-11-28 04:54:58 -0500 (Wed, 28 Nov 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_public/global/navigation.php b/upload/admin/applications/core/modules_public/global/navigation.php index 230c9744..8b327e41 100644 --- a/upload/admin/applications/core/modules_public/global/navigation.php +++ b/upload/admin/applications/core/modules_public/global/navigation.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Captcha
  * Last Updated: $Date: 2013-04-16 15:13:53 -0400 (Tue, 16 Apr 2013) $
  * 
diff --git a/upload/admin/applications/core/modules_public/global/privacy.php b/upload/admin/applications/core/modules_public/global/privacy.php index 0066de6a..faedb378 100644 --- a/upload/admin/applications/core/modules_public/global/privacy.php +++ b/upload/admin/applications/core/modules_public/global/privacy.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Show forum rules
  * Last Updated: $Date: 2011-05-05 12:03:47 +0100 (Thu, 05 May 2011) $
  * 
diff --git a/upload/admin/applications/core/modules_public/global/register.php b/upload/admin/applications/core/modules_public/global/register.php index 45038c8b..8f9ca0b6 100644 --- a/upload/admin/applications/core/modules_public/global/register.php +++ b/upload/admin/applications/core/modules_public/global/register.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Register
  * Last Updated: $Date: 2014-11-05 17:53:33 -0500 (Wed, 05 Nov 2014) $
  * 
diff --git a/upload/admin/applications/core/modules_public/global/reputation.php b/upload/admin/applications/core/modules_public/global/reputation.php index f36ae2db..18540505 100644 --- a/upload/admin/applications/core/modules_public/global/reputation.php +++ b/upload/admin/applications/core/modules_public/global/reputation.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Reputation
  * Last Updated: $Date: 2013-04-16 15:13:53 -0400 (Tue, 16 Apr 2013) $
  * 
diff --git a/upload/admin/applications/core/modules_public/global/rss.php b/upload/admin/applications/core/modules_public/global/rss.php index 19ce155b..c42292fd 100644 --- a/upload/admin/applications/core/modules_public/global/rss.php +++ b/upload/admin/applications/core/modules_public/global/rss.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * RSS output functionality
  * Last Updated: $Date: 2013-10-16 12:57:41 -0400 (Wed, 16 Oct 2013) $
  * 
diff --git a/upload/admin/applications/core/modules_public/global/share.php b/upload/admin/applications/core/modules_public/global/share.php index 60705a6f..3d9d50dd 100644 --- a/upload/admin/applications/core/modules_public/global/share.php +++ b/upload/admin/applications/core/modules_public/global/share.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Captcha
  * Last Updated: $Date: 2014-03-03 12:40:37 -0500 (Mon, 03 Mar 2014) $
  * 
diff --git a/upload/admin/applications/core/modules_public/global/sitemap.php b/upload/admin/applications/core/modules_public/global/sitemap.php index 4c3e6598..9a43393b 100644 --- a/upload/admin/applications/core/modules_public/global/sitemap.php +++ b/upload/admin/applications/core/modules_public/global/sitemap.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Sitemap Forwarder
  * Last Updated: $Date: 2012-05-10 21:10:13 +0100 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_public/global/skin.php b/upload/admin/applications/core/modules_public/global/skin.php index ae94a7d5..38d200f8 100644 --- a/upload/admin/applications/core/modules_public/global/skin.php +++ b/upload/admin/applications/core/modules_public/global/skin.php @@ -7,7 +7,7 @@ * $Author: AndyMillne $ * @since 27 March 2012 * $LastChangedDate: 2012-09-17 12:07:56 -0400 (Mon, 17 Sep 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 11342 $ */ diff --git a/upload/admin/applications/core/modules_public/global/unsubscribe.php b/upload/admin/applications/core/modules_public/global/unsubscribe.php index 0b5a2857..cb68dae2 100644 --- a/upload/admin/applications/core/modules_public/global/unsubscribe.php +++ b/upload/admin/applications/core/modules_public/global/unsubscribe.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 23 August 2012 * $LastChangedDate: 2012-04-05 17:35:31 +0100 (Thu, 05 Apr 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10571 $ */ diff --git a/upload/admin/applications/core/modules_public/help/defaultSection.php b/upload/admin/applications/core/modules_public/help/defaultSection.php index 7a663d54..843a8f70 100644 --- a/upload/admin/applications/core/modules_public/help/defaultSection.php +++ b/upload/admin/applications/core/modules_public/help/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 20th February 2002 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/core/modules_public/help/help.php b/upload/admin/applications/core/modules_public/help/help.php index 56b8af25..f17494ba 100644 --- a/upload/admin/applications/core/modules_public/help/help.php +++ b/upload/admin/applications/core/modules_public/help/help.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Help File System
  * Last Updated: $Date: 2012-11-15 09:58:24 -0500 (Thu, 15 Nov 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_public/modcp/defaultSection.php b/upload/admin/applications/core/modules_public/modcp/defaultSection.php index 3280c435..e9298c7e 100644 --- a/upload/admin/applications/core/modules_public/modcp/defaultSection.php +++ b/upload/admin/applications/core/modules_public/modcp/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 2/14/2011 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/core/modules_public/modcp/modcp.php b/upload/admin/applications/core/modules_public/modcp/modcp.php index e0d259a8..b9c5cb69 100644 --- a/upload/admin/applications/core/modules_public/modcp/modcp.php +++ b/upload/admin/applications/core/modules_public/modcp/modcp.php @@ -6,7 +6,7 @@ * $Author: bfarber $ * @since 2/14/2011 * $LastChangedDate: 2014-09-23 10:47:50 -0400 (Tue, 23 Sep 2014) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 12510 $ */ diff --git a/upload/admin/applications/core/modules_public/reports/defaultSection.php b/upload/admin/applications/core/modules_public/reports/defaultSection.php index b223f4b9..3c52fab4 100644 --- a/upload/admin/applications/core/modules_public/reports/defaultSection.php +++ b/upload/admin/applications/core/modules_public/reports/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 20th February 2002 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/core/modules_public/reports/reports.php b/upload/admin/applications/core/modules_public/reports/reports.php index 222ce944..3bcc71cf 100644 --- a/upload/admin/applications/core/modules_public/reports/reports.php +++ b/upload/admin/applications/core/modules_public/reports/reports.php @@ -8,7 +8,7 @@ * @author Based on original "Report Center" by Luke Scott * @since - * $LastChangedDate: 2012-12-13 08:29:08 -0500 (Thu, 13 Dec 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 11713 $ */ diff --git a/upload/admin/applications/core/modules_public/search/defaultSection.php b/upload/admin/applications/core/modules_public/search/defaultSection.php index 23c8de42..addecc4f 100644 --- a/upload/admin/applications/core/modules_public/search/defaultSection.php +++ b/upload/admin/applications/core/modules_public/search/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 20th February 2002 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/core/modules_public/search/search.php b/upload/admin/applications/core/modules_public/search/search.php index 0506884b..ca9137a2 100644 --- a/upload/admin/applications/core/modules_public/search/search.php +++ b/upload/admin/applications/core/modules_public/search/search.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Global Search
  * Last Updated: $Date: 2013-10-28 09:05:10 -0400 (Mon, 28 Oct 2013) $
  * 
diff --git a/upload/admin/applications/core/modules_public/task/manualResolver.php b/upload/admin/applications/core/modules_public/task/manualResolver.php index 18c906df..30c38c95 100644 --- a/upload/admin/applications/core/modules_public/task/manualResolver.php +++ b/upload/admin/applications/core/modules_public/task/manualResolver.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Task Manager
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/modules_public/usercp/manualResolver.php b/upload/admin/applications/core/modules_public/usercp/manualResolver.php index f3960039..abcc960b 100644 --- a/upload/admin/applications/core/modules_public/usercp/manualResolver.php +++ b/upload/admin/applications/core/modules_public/usercp/manualResolver.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * User control panel resolver
  * Last Updated: $Date: 2013-05-06 14:16:05 -0400 (Mon, 06 May 2013) $
  * 
diff --git a/upload/admin/applications/core/setup/versions/upg_10002/version_upgrade_mysql.php b/upload/admin/applications/core/setup/versions/upg_10002/version_upgrade_mysql.php index 4b9690ad..92273b01 100644 --- a/upload/admin/applications/core/setup/versions/upg_10002/version_upgrade_mysql.php +++ b/upload/admin/applications/core/setup/versions/upg_10002/version_upgrade_mysql.php @@ -2,7 +2,7 @@ /* +-------------------------------------------------------------------------- -| IP.Board v3.4.8 +| IP.Board v3.4.9 | ======================================== | by Matthew Mecham | (c) 2001 - 2004 Invision Power Services diff --git a/upload/admin/applications/core/setup/versions/upg_10004/version_upgrade_mysql.php b/upload/admin/applications/core/setup/versions/upg_10004/version_upgrade_mysql.php index 55faea17..8a0e7dc6 100644 --- a/upload/admin/applications/core/setup/versions/upg_10004/version_upgrade_mysql.php +++ b/upload/admin/applications/core/setup/versions/upg_10004/version_upgrade_mysql.php @@ -2,7 +2,7 @@ /* +-------------------------------------------------------------------------- -| IP.Board v3.4.8 +| IP.Board v3.4.9 | ======================================== | by Matthew Mecham | (c) 2001 - 2004 Invision Power Services diff --git a/upload/admin/applications/core/setup/versions/upg_20004/mysql_updates.php b/upload/admin/applications/core/setup/versions/upg_20004/mysql_updates.php index d63dc94e..71642cc9 100644 --- a/upload/admin/applications/core/setup/versions/upg_20004/mysql_updates.php +++ b/upload/admin/applications/core/setup/versions/upg_20004/mysql_updates.php @@ -2,7 +2,7 @@ /* +-------------------------------------------------------------------------- -| IP.Board v3.4.8 +| IP.Board v3.4.9 | ======================================== | by Matthew Mecham | (c) 2001 - 2004 Invision Power Services diff --git a/upload/admin/applications/core/setup/versions/upg_20005/mysql_updates.php b/upload/admin/applications/core/setup/versions/upg_20005/mysql_updates.php index 4eb60690..0956e3b0 100644 --- a/upload/admin/applications/core/setup/versions/upg_20005/mysql_updates.php +++ b/upload/admin/applications/core/setup/versions/upg_20005/mysql_updates.php @@ -2,7 +2,7 @@ /* +-------------------------------------------------------------------------- -| IP.Board v3.4.8 +| IP.Board v3.4.9 | ======================================== | by Matthew Mecham | (c) 2001 - 2004 Invision Power Services diff --git a/upload/admin/applications/core/setup/versions/upg_20007/mysql_updates.php b/upload/admin/applications/core/setup/versions/upg_20007/mysql_updates.php index 5e874a2c..9eb8453c 100644 --- a/upload/admin/applications/core/setup/versions/upg_20007/mysql_updates.php +++ b/upload/admin/applications/core/setup/versions/upg_20007/mysql_updates.php @@ -2,7 +2,7 @@ /* +-------------------------------------------------------------------------- -| IP.Board v3.4.8 +| IP.Board v3.4.9 | ======================================== | by Matthew Mecham | (c) 2001 - 2004 Invision Power Services diff --git a/upload/admin/applications/core/setup/versions/upg_20009/mysql_updates.php b/upload/admin/applications/core/setup/versions/upg_20009/mysql_updates.php index 65636826..7b78824b 100644 --- a/upload/admin/applications/core/setup/versions/upg_20009/mysql_updates.php +++ b/upload/admin/applications/core/setup/versions/upg_20009/mysql_updates.php @@ -1,7 +1,7 @@ * Invision Power Services - * IP.Board v3.4.8 + * IP.Board v3.4.9 * Upgrade Class * * Class to add options and notices for IP.Board upgrade diff --git a/upload/admin/applications/core/setup/versions/upg_30001/version_upgrade.php b/upload/admin/applications/core/setup/versions/upg_30001/version_upgrade.php index 28a92582..7f9a78a5 100644 --- a/upload/admin/applications/core/setup/versions/upg_30001/version_upgrade.php +++ b/upload/admin/applications/core/setup/versions/upg_30001/version_upgrade.php @@ -1,7 +1,7 @@ * Invision Power Services - * IP.Board v3.4.8 + * IP.Board v3.4.9 * Upgrade Class * * Class to add options and notices for IP.Board upgrade diff --git a/upload/admin/applications/core/setup/versions/upg_32000/version_upgrade.php b/upload/admin/applications/core/setup/versions/upg_32000/version_upgrade.php index 2931bacf..5df1fcbd 100644 --- a/upload/admin/applications/core/setup/versions/upg_32000/version_upgrade.php +++ b/upload/admin/applications/core/setup/versions/upg_32000/version_upgrade.php @@ -1,7 +1,7 @@ * Invision Power Services - * IP.Board v3.4.8 + * IP.Board v3.4.9 * Upgrade Class * * Class to add options and notices for IP.Board upgrade diff --git a/upload/admin/applications/core/setup/versions/upg_33010/version_class.php b/upload/admin/applications/core/setup/versions/upg_33010/version_class.php index 7608eced..c014305f 100644 --- a/upload/admin/applications/core/setup/versions/upg_33010/version_class.php +++ b/upload/admin/applications/core/setup/versions/upg_33010/version_class.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Upgrade Class
  *
  * Class to add options and notices for IP.Board upgrade
diff --git a/upload/admin/applications/core/setup/versions/upg_34000/version_class.php b/upload/admin/applications/core/setup/versions/upg_34000/version_class.php
index 84b61c1b..2f0c4268 100644
--- a/upload/admin/applications/core/setup/versions/upg_34000/version_class.php
+++ b/upload/admin/applications/core/setup/versions/upg_34000/version_class.php
@@ -3,7 +3,7 @@
 /**
  * 
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Upgrade Class
  *
  * Class to add options and notices for IP.Board upgrade
diff --git a/upload/admin/applications/core/skin_cp/cp_skin_adminlogs.php b/upload/admin/applications/core/skin_cp/cp_skin_adminlogs.php
index 18fd2238..a2475443 100644
--- a/upload/admin/applications/core/skin_cp/cp_skin_adminlogs.php
+++ b/upload/admin/applications/core/skin_cp/cp_skin_adminlogs.php
@@ -2,7 +2,7 @@
 /**
  * 
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Admin log skin file
  * Last Updated: $Date: 2013-01-03 15:22:09 -0500 (Thu, 03 Jan 2013) $
  * 
diff --git a/upload/admin/applications/core/skin_cp/cp_skin_api.php b/upload/admin/applications/core/skin_cp/cp_skin_api.php index 933b3a48..853ca9ce 100644 --- a/upload/admin/applications/core/skin_cp/cp_skin_api.php +++ b/upload/admin/applications/core/skin_cp/cp_skin_api.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * API users skin file
  * Last Updated: $Date: 2013-10-16 12:57:41 -0400 (Wed, 16 Oct 2013) $
  * 
diff --git a/upload/admin/applications/core/skin_cp/cp_skin_applications.php b/upload/admin/applications/core/skin_cp/cp_skin_applications.php index b0f2c8b1..4f15935f 100644 --- a/upload/admin/applications/core/skin_cp/cp_skin_applications.php +++ b/upload/admin/applications/core/skin_cp/cp_skin_applications.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Applications skin file
  * Last Updated: $Date: 2013-05-28 10:00:25 -0400 (Tue, 28 May 2013) $
  * 
diff --git a/upload/admin/applications/core/skin_cp/cp_skin_badwords.php b/upload/admin/applications/core/skin_cp/cp_skin_badwords.php index 5feb77bc..f2623762 100644 --- a/upload/admin/applications/core/skin_cp/cp_skin_badwords.php +++ b/upload/admin/applications/core/skin_cp/cp_skin_badwords.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Badwords skin file
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/skin_cp/cp_skin_bbcode.php b/upload/admin/applications/core/skin_cp/cp_skin_bbcode.php index 0996d5a2..74eae6e5 100644 --- a/upload/admin/applications/core/skin_cp/cp_skin_bbcode.php +++ b/upload/admin/applications/core/skin_cp/cp_skin_bbcode.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * BBcode skin file
  * Last Updated: $Date: 2013-04-01 22:35:19 -0400 (Mon, 01 Apr 2013) $
  * 
diff --git a/upload/admin/applications/core/skin_cp/cp_skin_diagnostics.php b/upload/admin/applications/core/skin_cp/cp_skin_diagnostics.php index 24c415e1..195a9c1c 100644 --- a/upload/admin/applications/core/skin_cp/cp_skin_diagnostics.php +++ b/upload/admin/applications/core/skin_cp/cp_skin_diagnostics.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Diagnostics skin file
  * Last Updated: $Date: 2013-02-22 18:01:02 -0500 (Fri, 22 Feb 2013) $
  * 
diff --git a/upload/admin/applications/core/skin_cp/cp_skin_emailerrorlogs.php b/upload/admin/applications/core/skin_cp/cp_skin_emailerrorlogs.php index 950dccd8..13f123dc 100644 --- a/upload/admin/applications/core/skin_cp/cp_skin_emailerrorlogs.php +++ b/upload/admin/applications/core/skin_cp/cp_skin_emailerrorlogs.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Email error logs
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/skin_cp/cp_skin_emoticons.php b/upload/admin/applications/core/skin_cp/cp_skin_emoticons.php index 37c5311e..7746062a 100644 --- a/upload/admin/applications/core/skin_cp/cp_skin_emoticons.php +++ b/upload/admin/applications/core/skin_cp/cp_skin_emoticons.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Emoticon manager skin file
  * Last Updated: $Date: 2012-05-24 16:20:59 -0400 (Thu, 24 May 2012) $
  * 
diff --git a/upload/admin/applications/core/skin_cp/cp_skin_errorlogs.php b/upload/admin/applications/core/skin_cp/cp_skin_errorlogs.php index 335293ab..eee09690 100644 --- a/upload/admin/applications/core/skin_cp/cp_skin_errorlogs.php +++ b/upload/admin/applications/core/skin_cp/cp_skin_errorlogs.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Error log skin file
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/skin_cp/cp_skin_group_core.php b/upload/admin/applications/core/skin_cp/cp_skin_group_core.php index 456675fb..30e07509 100644 --- a/upload/admin/applications/core/skin_cp/cp_skin_group_core.php +++ b/upload/admin/applications/core/skin_cp/cp_skin_group_core.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Group plugin skin functions
  * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/skin_cp/cp_skin_help_files.php b/upload/admin/applications/core/skin_cp/cp_skin_help_files.php index ee85a251..f5553067 100644 --- a/upload/admin/applications/core/skin_cp/cp_skin_help_files.php +++ b/upload/admin/applications/core/skin_cp/cp_skin_help_files.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Manage help files skin file
  * Last Updated: $Date: 2012-12-17 12:34:52 -0500 (Mon, 17 Dec 2012) $
  * 
diff --git a/upload/admin/applications/core/skin_cp/cp_skin_hooks_export.php b/upload/admin/applications/core/skin_cp/cp_skin_hooks_export.php index 666ff4bb..a536c1ca 100644 --- a/upload/admin/applications/core/skin_cp/cp_skin_hooks_export.php +++ b/upload/admin/applications/core/skin_cp/cp_skin_hooks_export.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Hooks export skin file
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/skin_cp/cp_skin_mobileapp.php b/upload/admin/applications/core/skin_cp/cp_skin_mobileapp.php index 282a9637..0f813737 100644 --- a/upload/admin/applications/core/skin_cp/cp_skin_mobileapp.php +++ b/upload/admin/applications/core/skin_cp/cp_skin_mobileapp.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Look and feel skin file
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/skin_cp/cp_skin_mobilelogs.php b/upload/admin/applications/core/skin_cp/cp_skin_mobilelogs.php index 2f971b97..cc5f98de 100644 --- a/upload/admin/applications/core/skin_cp/cp_skin_mobilelogs.php +++ b/upload/admin/applications/core/skin_cp/cp_skin_mobilelogs.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Error log skin file
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/skin_cp/cp_skin_modlogs.php b/upload/admin/applications/core/skin_cp/cp_skin_modlogs.php index 93ce4cdc..25fc1bff 100644 --- a/upload/admin/applications/core/skin_cp/cp_skin_modlogs.php +++ b/upload/admin/applications/core/skin_cp/cp_skin_modlogs.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Moderator log skin file
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/skin_cp/cp_skin_mycp.php b/upload/admin/applications/core/skin_cp/cp_skin_mycp.php index 840d7cef..12f1fa7f 100644 --- a/upload/admin/applications/core/skin_cp/cp_skin_mycp.php +++ b/upload/admin/applications/core/skin_cp/cp_skin_mycp.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Dashboard skin file
  * Last Updated: $Date: 2013-01-30 20:50:13 -0500 (Wed, 30 Jan 2013) $
  * 
diff --git a/upload/admin/applications/core/skin_cp/cp_skin_performance.php b/upload/admin/applications/core/skin_cp/cp_skin_performance.php index b06be4a3..3a78ba51 100644 --- a/upload/admin/applications/core/skin_cp/cp_skin_performance.php +++ b/upload/admin/applications/core/skin_cp/cp_skin_performance.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Performance mode skin file
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/skin_cp/cp_skin_qanda.php b/upload/admin/applications/core/skin_cp/cp_skin_qanda.php index 2b503909..8eeca044 100644 --- a/upload/admin/applications/core/skin_cp/cp_skin_qanda.php +++ b/upload/admin/applications/core/skin_cp/cp_skin_qanda.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Question and answer skin file
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/skin_cp/cp_skin_rebuild.php b/upload/admin/applications/core/skin_cp/cp_skin_rebuild.php index 568fd0ae..341ca808 100644 --- a/upload/admin/applications/core/skin_cp/cp_skin_rebuild.php +++ b/upload/admin/applications/core/skin_cp/cp_skin_rebuild.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Cleanup and rebuild tools skin file
  * Last Updated: $Date: 2012-09-26 11:03:29 -0400 (Wed, 26 Sep 2012) $
  * 
diff --git a/upload/admin/applications/core/skin_cp/cp_skin_reports.php b/upload/admin/applications/core/skin_cp/cp_skin_reports.php index 5f37c125..f8bc9ccf 100644 --- a/upload/admin/applications/core/skin_cp/cp_skin_reports.php +++ b/upload/admin/applications/core/skin_cp/cp_skin_reports.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Report center skin file
  * Last Updated: $Date: 2013-02-14 19:17:38 -0500 (Thu, 14 Feb 2013) $
  * 
diff --git a/upload/admin/applications/core/skin_cp/cp_skin_security.php b/upload/admin/applications/core/skin_cp/cp_skin_security.php index d063f6e6..bbead557 100644 --- a/upload/admin/applications/core/skin_cp/cp_skin_security.php +++ b/upload/admin/applications/core/skin_cp/cp_skin_security.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Security skin file
  * Last Updated: $Date: 2013-04-02 20:05:02 -0400 (Tue, 02 Apr 2013) $
  * 
diff --git a/upload/admin/applications/core/skin_cp/cp_skin_settings.php b/upload/admin/applications/core/skin_cp/cp_skin_settings.php index d0acdb35..2d18c79e 100644 --- a/upload/admin/applications/core/skin_cp/cp_skin_settings.php +++ b/upload/admin/applications/core/skin_cp/cp_skin_settings.php @@ -1,7 +1,7 @@ * Invision Power Services - * IP.Board v3.4.8 + * IP.Board v3.4.9 * Setup skin file * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $ *
diff --git a/upload/admin/applications/core/skin_cp/cp_skin_spamlogs.php b/upload/admin/applications/core/skin_cp/cp_skin_spamlogs.php index e3e8dc4a..15ddfa5e 100644 --- a/upload/admin/applications/core/skin_cp/cp_skin_spamlogs.php +++ b/upload/admin/applications/core/skin_cp/cp_skin_spamlogs.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Error log skin file
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/skin_cp/cp_skin_spiderlogs.php b/upload/admin/applications/core/skin_cp/cp_skin_spiderlogs.php index e9d67c34..827d94ae 100644 --- a/upload/admin/applications/core/skin_cp/cp_skin_spiderlogs.php +++ b/upload/admin/applications/core/skin_cp/cp_skin_spiderlogs.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Spiderlogs skin file
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/skin_cp/cp_skin_sql.php b/upload/admin/applications/core/skin_cp/cp_skin_sql.php index 6c53e18f..b53b7545 100644 --- a/upload/admin/applications/core/skin_cp/cp_skin_sql.php +++ b/upload/admin/applications/core/skin_cp/cp_skin_sql.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * SQL Toolbox skin file
  * Last Updated: $Date: 2013-01-17 15:51:17 -0500 (Thu, 17 Jan 2013) $
  * 
diff --git a/upload/admin/applications/core/skin_cp/cp_skin_system.php b/upload/admin/applications/core/skin_cp/cp_skin_system.php index f1af2196..9973f07d 100644 --- a/upload/admin/applications/core/skin_cp/cp_skin_system.php +++ b/upload/admin/applications/core/skin_cp/cp_skin_system.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * System tools skin file
  * Last Updated: $Date: 2013-04-23 09:51:07 -0400 (Tue, 23 Apr 2013) $
  * 
diff --git a/upload/admin/applications/core/skin_cp/cp_skin_templates.php b/upload/admin/applications/core/skin_cp/cp_skin_templates.php index c5891839..1069aaf2 100644 --- a/upload/admin/applications/core/skin_cp/cp_skin_templates.php +++ b/upload/admin/applications/core/skin_cp/cp_skin_templates.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Look and feel skin file
  * Last Updated: $Date: 2013-04-12 20:11:40 -0400 (Fri, 12 Apr 2013) $
  * 
diff --git a/upload/admin/applications/core/skin_cp/cp_skin_tools.php b/upload/admin/applications/core/skin_cp/cp_skin_tools.php index 94fcca94..2ddb9619 100644 --- a/upload/admin/applications/core/skin_cp/cp_skin_tools.php +++ b/upload/admin/applications/core/skin_cp/cp_skin_tools.php @@ -1,7 +1,7 @@ * Invision Power Services - * IP.Board v3.4.8 + * IP.Board v3.4.9 * Warn log skin file * Last Updated: $Date: 2012-09-17 11:58:03 -0400 (Mon, 17 Sep 2012) $ *
diff --git a/upload/admin/applications/core/sources/classes/attach/class_attach.php b/upload/admin/applications/core/sources/classes/attach/class_attach.php index 747b920b..deff2295 100644 --- a/upload/admin/applications/core/sources/classes/attach/class_attach.php +++ b/upload/admin/applications/core/sources/classes/attach/class_attach.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Attachments
  * Last Updated: $Date: 2014-08-29 15:04:48 -0400 (Fri, 29 Aug 2014) $
  * 
diff --git a/upload/admin/applications/core/sources/classes/attach/controller.php b/upload/admin/applications/core/sources/classes/attach/controller.php index 2c195482..6bc091c6 100644 --- a/upload/admin/applications/core/sources/classes/attach/controller.php +++ b/upload/admin/applications/core/sources/classes/attach/controller.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Attachments Controller
  * Last Updated: $Date: 2012-06-29 15:12:14 +0100 (Fri, 29 Jun 2012) $
  * By: Matt Mecham
diff --git a/upload/admin/applications/core/sources/classes/hooks/gateway.php b/upload/admin/applications/core/sources/classes/hooks/gateway.php
index 89751cf7..cd5fe1ed 100644
--- a/upload/admin/applications/core/sources/classes/hooks/gateway.php
+++ b/upload/admin/applications/core/sources/classes/hooks/gateway.php
@@ -2,7 +2,7 @@
 /**
  * 
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Subscriptions Hooks Gateway "Handler"
  * Owner: Matt "Oh Lord, why did I get assigned this?" Mecham
  * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
diff --git a/upload/admin/applications/core/sources/classes/hooksFunctions.php b/upload/admin/applications/core/sources/classes/hooksFunctions.php
index 8c3ec618..9c13ebc2 100644
--- a/upload/admin/applications/core/sources/classes/hooksFunctions.php
+++ b/upload/admin/applications/core/sources/classes/hooksFunctions.php
@@ -2,7 +2,7 @@
 /**
  * 
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Library of shared methods for hooks installation/configuration
  * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
  * 
diff --git a/upload/admin/applications/core/sources/classes/reportLibrary.php b/upload/admin/applications/core/sources/classes/reportLibrary.php index 53c66892..67a705ef 100644 --- a/upload/admin/applications/core/sources/classes/reportLibrary.php +++ b/upload/admin/applications/core/sources/classes/reportLibrary.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Library for reported content
  * Last Updated: $LastChangedDate: 2012-11-14 18:17:25 -0500 (Wed, 14 Nov 2012) $
  * 
diff --git a/upload/admin/applications/core/sources/classes/reportNotifications.php b/upload/admin/applications/core/sources/classes/reportNotifications.php index 93cbe306..7c15c232 100644 --- a/upload/admin/applications/core/sources/classes/reportNotifications.php +++ b/upload/admin/applications/core/sources/classes/reportNotifications.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Notifications class for reported content
  * Last Updated: $LastChangedDate: 2013-02-19 15:55:32 -0500 (Tue, 19 Feb 2013) $
  * 
diff --git a/upload/admin/applications/core/sql/mysql_report_queries.php b/upload/admin/applications/core/sql/mysql_report_queries.php index 25407e87..a627e5ad 100644 --- a/upload/admin/applications/core/sql/mysql_report_queries.php +++ b/upload/admin/applications/core/sql/mysql_report_queries.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Reports content SQL query cache file
  * Last Updated: $LastChangedDate: 2012-10-18 11:56:36 -0400 (Thu, 18 Oct 2012) $
  * 
diff --git a/upload/admin/applications/core/sql/mysql_seo_queries.php b/upload/admin/applications/core/sql/mysql_seo_queries.php index 6ba61338..11531da6 100644 --- a/upload/admin/applications/core/sql/mysql_seo_queries.php +++ b/upload/admin/applications/core/sql/mysql_seo_queries.php @@ -3,7 +3,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Last Updated: $LastChangedDate: 2012-05-10 21:10:13 +0100 (Thu, 10 May 2012) $
  * 
* diff --git a/upload/admin/applications/core/sql/mysql_tag_queries.php b/upload/admin/applications/core/sql/mysql_tag_queries.php index 37caac2a..8bc28d75 100644 --- a/upload/admin/applications/core/sql/mysql_tag_queries.php +++ b/upload/admin/applications/core/sql/mysql_tag_queries.php @@ -2,7 +2,7 @@ /** *
  * Invision Power Services
- * IP.Board v3.4.8
+ * IP.Board v3.4.9
  * Tagging Queries
  * Last Updated: $LastChangedDate: 2013-02-18 19:33:52 -0500 (Mon, 18 Feb 2013) $
  * 
diff --git a/upload/admin/applications/core/tasks/archive.php b/upload/admin/applications/core/tasks/archive.php index 59f6e777..e18b9ce0 100644 --- a/upload/admin/applications/core/tasks/archive.php +++ b/upload/admin/applications/core/tasks/archive.php @@ -7,7 +7,7 @@ * $Author: bfarber $ * @since - * $LastChangedDate: 2011-05-13 03:28:10 +0100 (Fri, 13 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8754 $ */ diff --git a/upload/admin/applications/core/tasks/backup.php b/upload/admin/applications/core/tasks/backup.php index 8e479b98..44038318 100644 --- a/upload/admin/applications/core/tasks/backup.php +++ b/upload/admin/applications/core/tasks/backup.php @@ -7,7 +7,7 @@ * $Author: bfarber $ * @since - * $LastChangedDate: 2011-05-13 03:28:10 +0100 (Fri, 13 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8754 $ */ diff --git a/upload/admin/applications/core/tasks/cleanout.php b/upload/admin/applications/core/tasks/cleanout.php index b314ba58..8e793dd5 100644 --- a/upload/admin/applications/core/tasks/cleanout.php +++ b/upload/admin/applications/core/tasks/cleanout.php @@ -7,7 +7,7 @@ * $Author: mark $ * @since - * $LastChangedDate: 2012-06-28 06:20:34 -0400 (Thu, 28 Jun 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 11000 $ */ diff --git a/upload/admin/applications/core/tasks/contentcache.php b/upload/admin/applications/core/tasks/contentcache.php index f0893d97..8c442eb0 100644 --- a/upload/admin/applications/core/tasks/contentcache.php +++ b/upload/admin/applications/core/tasks/contentcache.php @@ -7,7 +7,7 @@ * $Author: bfarber $ * @since 27th January 2004 * $LastChangedDate: 2011-03-18 21:17:06 -0400 (Fri, 18 Mar 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8131 $ */ diff --git a/upload/admin/applications/core/tasks/itemmarkers.php b/upload/admin/applications/core/tasks/itemmarkers.php index 122fda2f..8183822f 100644 --- a/upload/admin/applications/core/tasks/itemmarkers.php +++ b/upload/admin/applications/core/tasks/itemmarkers.php @@ -7,7 +7,7 @@ * $Author: mmecham $ * @since 27th January 2004 * $LastChangedDate: 2011-12-16 06:13:08 -0500 (Fri, 16 Dec 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10009 $ */ diff --git a/upload/admin/applications/core/tasks/logprune.php b/upload/admin/applications/core/tasks/logprune.php index 042347db..9cdd3f78 100644 --- a/upload/admin/applications/core/tasks/logprune.php +++ b/upload/admin/applications/core/tasks/logprune.php @@ -7,7 +7,7 @@ * $Author: rashbrook $ * @since - * $LastChangedDate: 2013-10-16 19:11:24 -0400 (Wed, 16 Oct 2013) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 12381 $ */ diff --git a/upload/admin/applications/core/tasks/minifycleanup.php b/upload/admin/applications/core/tasks/minifycleanup.php index 1c7b80f2..b2b4e08d 100644 --- a/upload/admin/applications/core/tasks/minifycleanup.php +++ b/upload/admin/applications/core/tasks/minifycleanup.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since - * $LastChangedDate: 2012-04-02 16:01:35 -0400 (Mon, 02 Apr 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10543 $ */ diff --git a/upload/admin/applications/core/tasks/mysqlcleanup.php b/upload/admin/applications/core/tasks/mysqlcleanup.php index f10beab7..f8409698 100644 --- a/upload/admin/applications/core/tasks/mysqlcleanup.php +++ b/upload/admin/applications/core/tasks/mysqlcleanup.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since - * $LastChangedDate: 2011-02-08 17:20:18 -0500 (Tue, 08 Feb 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 7750 $ */ diff --git a/upload/admin/applications/core/tasks/optimize.php b/upload/admin/applications/core/tasks/optimize.php index 95c28737..cb183f34 100644 --- a/upload/admin/applications/core/tasks/optimize.php +++ b/upload/admin/applications/core/tasks/optimize.php @@ -7,7 +7,7 @@ * $Author: AndyMillne $ * @since - * $LastChangedDate: 2013-03-12 15:04:05 -0400 (Tue, 12 Mar 2013) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 12074 $ */ diff --git a/upload/admin/applications/core/tasks/pop3email.php b/upload/admin/applications/core/tasks/pop3email.php index 0bf1c23d..485ac01c 100644 --- a/upload/admin/applications/core/tasks/pop3email.php +++ b/upload/admin/applications/core/tasks/pop3email.php @@ -7,7 +7,7 @@ * $Author: mark $ * @since 25th June 2010 * $LastChangedDate: 2012-05-08 11:35:49 -0400 (Tue, 08 May 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10705 $ */ diff --git a/upload/admin/applications/core/tasks/rebuildstats.php b/upload/admin/applications/core/tasks/rebuildstats.php index be9a0543..8274892b 100644 --- a/upload/admin/applications/core/tasks/rebuildstats.php +++ b/upload/admin/applications/core/tasks/rebuildstats.php @@ -7,7 +7,7 @@ * $Author: mark $ * @since - * $LastChangedDate: 2012-02-22 12:07:55 -0500 (Wed, 22 Feb 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10349 $ */ diff --git a/upload/admin/applications/core/tasks/sitemapgenerator.php b/upload/admin/applications/core/tasks/sitemapgenerator.php index 5ce37e68..0492ab97 100644 --- a/upload/admin/applications/core/tasks/sitemapgenerator.php +++ b/upload/admin/applications/core/tasks/sitemapgenerator.php @@ -6,7 +6,7 @@ * $Author: mark $ * @since - * $LastChangedDate: 2012-02-22 17:07:55 +0000 (Wed, 22 Feb 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10349 $ */ diff --git a/upload/admin/applications/core/xml/admin_core_language_pack.xml b/upload/admin/applications/core/xml/admin_core_language_pack.xml index 007be044..cbb5cf1e 100644 --- a/upload/admin/applications/core/xml/admin_core_language_pack.xml +++ b/upload/admin/applications/core/xml/admin_core_language_pack.xml @@ -10,14 +10,14 @@ core admin_ajax - ls_view_more_groups - View more groups + ls_grouptitles + Groups core admin_ajax - ls_grouptitles - Groups + ls_view_more_groups + View more groups core @@ -103,12 +103,6 @@ ls_view_more_forums View more forums - - core - admin_applications - a_mod_info - You can include modules to be added to existing applications - core admin_applications @@ -130,14 +124,14 @@ core admin_applications - a_addsettings - Add Settings + a_exportlang + Export Language Strings core admin_applications - a_exportlang - Export Language Strings + a_addsettings + Add Settings core @@ -316,14 +310,14 @@ core admin_applications - a_wherehook - Where this hook shows + a_storedfile + Stored file name core admin_applications - a_storedfile - Stored file name + a_wherehook + Where this hook shows core @@ -370,14 +364,14 @@ core admin_applications - a_typeoftemp - Type of template hook + a_skinfunc + The skin function this hook is in core admin_applications - a_skinfunc - The skin function this hook is in + a_typeoftemp + Type of template hook core @@ -400,8 +394,8 @@ core admin_applications - a_templatehook - Template hook + a_libraryhook + Library hook core @@ -412,14 +406,14 @@ core admin_applications - a_libraryhook - Library hook + a_soverloader + Skin overloader core admin_applications - a_soverloader - Skin overloader + a_templatehook + Template hook core @@ -427,24 +421,30 @@ a_aoverloader Action overloader - - core - admin_applications - a_filehooktype - File hook type - core admin_applications a_selectone Select one + + core + admin_applications + a_filehooktype + File hook type + core admin_applications a_fileclassname + + core + admin_applications + a_hookfile + File + core admin_applications @@ -457,12 +457,6 @@ a_hookfiles Files - - core - admin_applications - a_hookfile - File - core admin_applications @@ -478,14 +472,14 @@ core admin_applications - a_max - Max + a_min + Min core admin_applications - a_min - Min + a_max + Max core @@ -529,24 +523,36 @@ a_hookemail_info (Optional) Enter your email address so the user can contact you - - core - admin_applications - a_hookauthor_info - Enter the author name to display for the user - core admin_applications a_hookemail Author Email + + core + admin_applications + a_hookauthor_info + Enter the author name to display for the user + core admin_applications a_hookauthor Hook Author + + core + admin_applications + a_hookversion_info + This is the version used to check for update available notifications + + + core + admin_applications + a_hookversion + Hook Version (long-version) + core admin_applications @@ -559,48 +565,36 @@ a_hookxml Select a hook XML file - - core - admin_applications - a_hookversion - Hook Version (long-version) - - - core - admin_applications - a_hookversion_info - This is the version used to check for update available notifications - core admin_applications a_nodishooks There are currently no disabled hooks - - core - admin_applications - a_enablehook - Enable Hook - - - core - admin_applications - a_uninstallhook - Uninstall Hook - core admin_applications a_setuphook Hook Setup + + core + admin_applications + a_uninstallhook + Uninstall Hook + core admin_applications a_checkhook Check Requirements + + core + admin_applications + a_enablehook + Enable Hook + core admin_applications @@ -610,14 +604,14 @@ core admin_applications - a_edithook - Edit Hook + a_deletehook + Delete Hook core admin_applications - a_deletehook - Delete Hook + a_edithook + Edit Hook core @@ -652,14 +646,14 @@ core admin_applications - a_installed - Installed + a_lastupdated + Last Updated core admin_applications - a_lastupdated - Last Updated + a_installed + Installed core @@ -724,14 +718,14 @@ core admin_applications - a_install - Install + a_cannotinstall + core admin_applications - a_cannotinstall - + a_install + Install core @@ -820,14 +814,14 @@ core admin_applications - a_appver - Application Version + a_appdir + Application Directory core admin_applications - a_appdir - Application Directory + a_appver + Application Version core @@ -874,8 +868,8 @@ core admin_applications - a_apptitle_info - A short descriptive title + a_import + Import core @@ -886,8 +880,8 @@ core admin_applications - a_import - Import + a_apptitle_info + A short descriptive title core @@ -982,14 +976,14 @@ core admin_applications - a_moden - Module Enabled + a_modpar_info + If you choose a parent module, it will appear under that main menu link. If you choose no parent, it will become a main menu link. core admin_applications - a_modpar_info - If you choose a parent module, it will appear under that main menu link. If you choose no parent, it will become a main menu link. + a_moden + Module Enabled core @@ -1006,8 +1000,8 @@ core admin_applications - a_modver - Module Version + a_modkey + Module Key core @@ -1018,8 +1012,8 @@ core admin_applications - a_modkey - Module Key + a_modver + Module Version core @@ -1030,14 +1024,14 @@ core admin_applications - a_moddesc - Module Description + a_modtitle_info + A short descriptive title. core admin_applications - a_modtitle_info - A short descriptive title. + a_moddesc + Module Description core @@ -1096,14 +1090,14 @@ core admin_applications - a_newapp - New Application Added + a_appadded + Application Added core admin_applications - a_appadded - Application Added + a_newapp + New Application Added core @@ -1132,8 +1126,8 @@ core admin_applications - a_mod_reposition - Module position change completed + a_admin + Admin core @@ -1144,8 +1138,8 @@ core admin_applications - a_admin - Admin + a_mod_reposition + Module position change completed core @@ -1156,14 +1150,14 @@ core admin_applications - a_edited - Module Edited + a_noparent + core admin_applications - a_noparent - + a_edited + Module Edited core @@ -1186,8 +1180,8 @@ core admin_applications - a_nofile - No upload file was found or no filename was specified. + a_insertupdated + %s items inserted, %s updated. core @@ -1198,8 +1192,8 @@ core admin_applications - a_insertupdated - %s items inserted, %s updated. + a_nofile + No upload file was found or no filename was specified. core @@ -1225,6 +1219,12 @@ purchase_additional Purchase Additional Applications + + core + admin_applications + add_new_mod_public + Add New Public Module + core admin_applications @@ -1237,12 +1237,6 @@ create_hook_link Create Hook - - core - admin_applications - add_new_mod_public - Add New Public Module - core admin_applications @@ -1258,14 +1252,14 @@ core admin_applications - seo_cannot_write - Could not write to the cache file, please check permissions on /cache and /cache/furlCache.php + seo_no_data + An error occurred; could not locate any data to write core admin_applications - seo_no_data - An error occurred; could not locate any data to write + seo_cannot_write + Could not write to the cache file, please check permissions on /cache and /cache/furlCache.php core @@ -1303,12 +1297,6 @@ remove_dead_caches Remove Dead Caches - - core - admin_applications - rebuild_app_hooks - Reimport Applications Hooks - core admin_applications @@ -1318,8 +1306,14 @@ core admin_applications - hook_h2_exporting - Exporting + rebuild_app_hooks + Reimport Applications Hooks + + + core + admin_applications + hook_update_available + Update Available core @@ -1330,8 +1324,8 @@ core admin_applications - hook_update_available - Update Available + hook_h2_exporting + Exporting core @@ -1348,14 +1342,14 @@ core admin_applications - addnewmodule_apps - Add New Module + hook_if_statement + if statement core admin_applications - hook_if_statement - if statement + addnewmodule_apps + Add New Module core @@ -1378,14 +1372,14 @@ core admin_applications - hook_remove_file - REMOVE FILE + hook_remove_requirement + REMOVE REQUIREMENT core admin_applications - hook_remove_requirement - REMOVE REQUIREMENT + hook_remove_file + REMOVE FILE core @@ -1444,14 +1438,14 @@ core admin_applications - hook_require_ok - OK + hook_require_max + Maximum version core admin_applications - hook_require_max - Maximum version + hook_require_ok + OK core @@ -1462,14 +1456,14 @@ core admin_applications - hook_require_toonew - Your version of the application is too new to support this hook. Maximum: %s + hook_require_current + Your version core admin_applications - hook_require_current - Your version + hook_require_toonew + Your version of the application is too new to support this hook. Maximum: %s core @@ -1486,20 +1480,8 @@ core admin_applications - hook_require_apptitle - Additional Application - - - core - admin_applications - hook_require_addanother - Add another application - - - core - admin_applications - hook_require_noreqs - This hook has no requirements + hook_require_appdisabled + %s application is disabled, please enable the application core @@ -1510,14 +1492,20 @@ core admin_applications - hook_require_appdisabled - %s application is disabled, please enable the application + hook_require_noreqs + This hook has no requirements core admin_applications - h_phpnew - Your PHP version is too new to support this hook. Maximum: %s + hook_require_addanother + Add another application + + + core + admin_applications + hook_require_apptitle + Additional Application core @@ -1525,6 +1513,12 @@ h_phpold Your PHP version is too old to support this hook. Minimum: %s + + core + admin_applications + h_phpnew + Your PHP version is too new to support this hook. Maximum: %s + core admin_applications @@ -1558,14 +1552,14 @@ core admin_applications - app_form_tabgroups - Hide for groups... + app_form_tabgroups_desc + core admin_applications - app_form_tabgroups_desc - + app_form_tabgroups + Hide for groups... core @@ -1579,12 +1573,6 @@ app_tab_info Application Information - - core - admin_applications - app_already_added - The specified application directory already exists, please use a different directory - core admin_applications @@ -1594,8 +1582,8 @@ core admin_applications - updates_string_single - There is 1 update available + app_already_added + The specified application directory already exists, please use a different directory core @@ -1603,6 +1591,12 @@ updates_string_more There are %s updates available + + core + admin_applications + updates_string_single + There is 1 update available + core admin_applications @@ -1615,12 +1609,6 @@ sphinx_cronjob_details If you have already added these cronjobs to your server previously, please be sure to edit the old ones instead of adding duplicates.]]> - - core - admin_applications - sphinx_cronjob_nofile - File not found - core admin_applications @@ -1630,8 +1618,8 @@ core admin_applications - sphinx_cronjob_path - Path to sphinx.conf + sphinx_cronjob_nofile + File not found core @@ -1642,8 +1630,8 @@ core admin_applications - sphinx_build_conf - Build sphinx.conf + sphinx_cronjob_path + Path to sphinx.conf core @@ -1651,6 +1639,12 @@ sphinx_cronjob_title Build Sphinx Cronjobs + + core + admin_applications + sphinx_build_conf + Build sphinx.conf + core admin_applications @@ -1669,12 +1663,6 @@ sphinx_menu_desc View Sphinx related tasks - - core - admin_applications - h_any_version - Any Version - core admin_applications @@ -1687,6 +1675,18 @@ h_edit_settings Edit settings + + core + admin_applications + h_any_version + Any Version + + + core + admin_applications + a_upgrade_history + Upgrade History + core admin_applications @@ -1702,8 +1702,8 @@ core admin_applications - a_upgrade_history - Upgrade History + a_other_details + Other Details core @@ -1714,8 +1714,8 @@ core admin_applications - a_other_details - Other Details + a_app_details + Application Details core @@ -1723,12 +1723,6 @@ a_edit_restrictions Edit Restrictions - - core - admin_applications - a_app_details - Application Details - core admin_applications @@ -1753,12 +1747,6 @@ a_apps_enabled Enabled - - core - admin_applications - a_enable_app - Enable Application - core admin_applications @@ -1768,8 +1756,14 @@ core admin_applications - wl_3b - XML Location + a_enable_app + Enable Application + + + core + admin_applications + wl_disable + Disable Windows Live core @@ -1780,8 +1774,8 @@ core admin_applications - wl_disable - Disable Windows Live + wl_3b + XML Location core @@ -1822,8 +1816,8 @@ core admin_applications - wl_1 -
1. Follow the onscreen instructions to add an application.

2. Once your application is set up, click the 'Application Settings', then navigate to 'API Settings'. In the 'Redirect Domain' box, enter the following value and save:
%s

3. On that page you will see a 'Client ID' and a 'Client Secret' - enter them below and click the 'Download XML' button.

Please note that Windows Live login integration requires the mhash and mcrypt_decrypt modules to be enabled on your server.]]>
+ cdn_recache + Purge CDN
core @@ -1834,8 +1828,8 @@ core admin_applications - cdn_recache - Purge CDN + wl_1 +
1. Follow the onscreen instructions to add an application.

2. Once your application is set up, click the 'Application Settings', then navigate to 'API Settings'. In the 'Redirect Domain' box, enter the following value and save:
%s

3. On that page you will see a 'Client ID' and a 'Client Secret' - enter them below and click the 'Download XML' button.

Please note that Windows Live login integration requires the mhash and mcrypt_decrypt modules to be enabled on your server.]]>
core @@ -1849,12 +1843,6 @@ cdn_disable Disable CDN - - core - admin_applications - cdn_active - %s of credit remaining.]]> - core admin_applications @@ -1864,26 +1852,14 @@ core admin_applications - cdn_activate - Activate IPS CDN + cdn_active + %s of credit remaining.]]> core admin_applications - cdn_blurb - The IPS CDN allows you to provide your community resources through our Content Delivery Network. - - - core - admin_applications - viglink_existing_save - Start Using VigLink - - - core - admin_applications - viglink_existing_title - VigLink API Key + viglink_signup + Create VigLink Account core @@ -1894,8 +1870,26 @@ core admin_applications - viglink_signup - Create VigLink Account + viglink_existing_title + VigLink API Key + + + core + admin_applications + viglink_existing_save + Start Using VigLink + + + core + admin_applications + cdn_blurb + The IPS CDN allows you to provide your community resources through our Content Delivery Network. + + + core + admin_applications + cdn_activate + Activate IPS CDN core @@ -1939,12 +1933,6 @@ enhancements_ipscdn_error_nokey enter your license key.]]> - - core - admin_applications - enhancements_ipscdn_desc - Provide your community resources through our Content Delivery Network. - core admin_applications @@ -1954,8 +1942,8 @@ core admin_applications - enhancements_viglink_error - We could not connect with VigLink. Please try again later or contact technical support for assistance. + enhancements_ipscdn_desc + Provide your community resources through our Content Delivery Network. core @@ -1966,8 +1954,8 @@ core admin_applications - enhancements_viglink - VigLink + enhancements_viglink_error + We could not connect with VigLink. Please try again later or contact technical support for assistance. core @@ -1975,6 +1963,12 @@ enhancements_windowslive_error2 The XML file could not be found at the path specified. Please check the path entered is correct. + + core + admin_applications + enhancements_viglink + VigLink + core admin_applications @@ -1984,14 +1978,14 @@ core admin_applications - enhancements_windowslive_desc - Allows users to sign into your community with their Windows Live account. + enhancements_windowslive + Windows Live core admin_applications - enhancements_windowslive - Windows Live + enhancements_windowslive_desc + Allows users to sign into your community with their Windows Live account. core @@ -2020,14 +2014,14 @@ core admin_applications - enhancements_spammonitoring_help - Click here for more information about the IPS Spam Monitoring service. + enhancements_spammonitoring_desc + Protects your community from spam account registrations. core admin_applications - enhancements_spammonitoring_desc - Protects your community from spam account registrations. + enhancements_spammonitoring_help + Click here for more information about the IPS Spam Monitoring service. core @@ -2041,12 +2035,6 @@ enhancements_googleanalytics_help Click here to visit the Google Analytics site where you can find out more and register an account. - - core - admin_applications - enhancements_googleanalytics_desc - Traffic measurement and interactive reporting for your community. - core admin_applications @@ -2056,8 +2044,8 @@ core admin_applications - enhancements_facebook_help - Click here for instructions on how to set up your Facebook application. + enhancements_googleanalytics_desc + Traffic measurement and interactive reporting for your community. core @@ -2065,6 +2053,12 @@ enhancements_facebook_desc Allows users to sign into your community with their Facebook account. + + core + admin_applications + enhancements_facebook_help + Click here for instructions on how to set up your Facebook application. + core admin_applications @@ -2101,6 +2095,12 @@ no_write_hooks Your system administrator has disabled the ability to import hooks. Please contact your system administrator for assistance. + + core + admin_applications + a_mod_info + You can include modules to be added to existing applications + core admin_applications @@ -2914,14 +2914,14 @@ core admin_global - gl_manageapps - Manage Applications + gl_pagejump + Jump To Page core admin_global - gl_pagejump - Jump To Page + gl_manageapps + Manage Applications core @@ -3202,14 +3202,14 @@ core admin_global - M_8 - August + M_9 + September core admin_global - M_9 - September + M_8 + August core @@ -3220,14 +3220,14 @@ core admin_global - M_5 - May + M_6 + June core admin_global - M_6 - June + M_5 + May core @@ -3241,12 +3241,6 @@ M_3 March - - core - admin_global - M_1 - January - core admin_global @@ -3256,8 +3250,8 @@ core admin_global - tpl_next - Next page + M_1 + January core @@ -3265,6 +3259,12 @@ tpl_prev Previous Page + + core + admin_global + tpl_next + Next page + core admin_global @@ -3484,14 +3484,14 @@ core admin_global - time_-7 - + time_-6 + core admin_global - time_-6 - + time_-7 + core @@ -3559,6 +3559,12 @@ invalid_id Invalid ID + + core + admin_global + revert + Revert + core admin_global @@ -3571,12 +3577,6 @@ delete Delete - - core - admin_global - revert - Revert - core admin_global @@ -3667,6 +3667,12 @@ gbl_view_site Community + + core + admin_global + gbl_no_info + No Information + core admin_global @@ -3676,8 +3682,8 @@ core admin_global - func_security_mismatch - Security Mismatch - please go back and reload the form before attempting to submit the form / press the button again + in + in core @@ -3694,14 +3700,8 @@ core admin_global - in - in - - - core - admin_global - gbl_no_info - No Information + func_security_mismatch + Security Mismatch - please go back and reload the form before attempting to submit the form / press the button again core @@ -3730,14 +3730,14 @@ core admin_global - close_help - Close Help + rebuild_sphinx +
You should now rebuild your sphinx.conf file and upload the new one to your server.]]>
core admin_global - rebuild_sphinx -
You should now rebuild your sphinx.conf file and upload the new one to your server.]]>
+ close_help + Close Help
core @@ -3754,14 +3754,14 @@ core admin_global - page_1_of_1 - Page 1 of 1 + get_help + Get Help With This Page core admin_global - get_help - Get Help With This Page + page_1_of_1 + Page 1 of 1 core @@ -3817,6 +3817,12 @@ redirect_halt_continue Continue Anyway... + + core + admin_global + session_timeout + You have been inactive for too long and your session has timed out + core admin_global @@ -3829,12 +3835,6 @@ session_mismatchip Your current IP address does not match the one in our records - - core - admin_global - session_timeout - You have been inactive for too long and your session has timed out - core admin_global @@ -3982,20 +3982,8 @@ core admin_global - license_missing_info - provide your license key]]> - - - core - admin_global - license_missing_header - License Key Missing - - - core - admin_global - livesearch_more - %d results... + livesearch_pages + Pages core @@ -4006,8 +3994,20 @@ core admin_global - livesearch_pages - Pages + livesearch_more + %d results... + + + core + admin_global + license_missing_header + License Key Missing + + + core + admin_global + license_missing_info + provide your license key]]> core @@ -4036,8 +4036,8 @@ core admin_global - other_applications - Other Apps + ipsmarketplace_is_best + The IPS Marketplace is the best place to find new skins, applications and hooks for your community. core @@ -4048,8 +4048,8 @@ core admin_global - ipsmarketplace_is_best - The IPS Marketplace is the best place to find new skins, applications and hooks for your community. + other_applications + Other Apps core @@ -4078,14 +4078,14 @@ core admin_global - version - Version: + server_status + Server Status: core admin_global - server_status - Server Status: + version + Version: core @@ -4120,8 +4120,8 @@ core admin_global - gz_not_available - To resolve this issue, you can extract the file on your computer and then upload the .xml file, or contact your hosting provider and ask for the zlib extension to be installed.]]> + make_root_category + Make Root (Category) core @@ -4132,8 +4132,8 @@ core admin_global - make_root_category - Make Root (Category) + gz_not_available + To resolve this issue, you can extract the file on your computer and then upload the .xml file, or contact your hosting provider and ask for the zlib extension to be installed.]]> core @@ -4738,14 +4738,14 @@ core admin_hooks - hook_db_insert - Insert Data + hook_db_update + Update Data core admin_hooks - hook_db_update - Update Data + hook_db_insert + Insert Data core @@ -4864,14 +4864,14 @@ core admin_hooks - addanotherchange - Add Another Change + hook_cannot_load + The hook could not be loaded core admin_hooks - hook_cannot_load - The hook could not be loaded + addanotherchange + Add Another Change core @@ -4888,8 +4888,8 @@ core admin_hooks - addtemplates - Add Templates + selectone + Select One core @@ -4900,8 +4900,8 @@ core admin_hooks - selectone - Select One + addtemplates + Add Templates core @@ -4918,14 +4918,14 @@ core admin_hooks - addlanguage - Add Language + hookssavebutton + Save core admin_hooks - hookssavebutton - Save + addlanguage + Add Language core @@ -4936,14 +4936,14 @@ core admin_hooks - addtasks - Add Tasks + oneormtasks + Select one or more tasks to export (do not forget to include the task PHP file for the user to upload) core admin_hooks - oneormtasks - Select one or more tasks to export (do not forget to include the task PHP file for the user to upload) + addtasks + Add Tasks core @@ -4960,14 +4960,14 @@ core admin_hooks - addcustomscript - Add Custom Script + pathcustomscript + core admin_hooks - pathcustomscript - + addcustomscript + Add Custom Script core @@ -4990,8 +4990,8 @@ core admin_hooks - exportonesettings - Select one or more setting groups to export (all settings in the group will be exported) + selectoneomorecss + Select one or more css files to export core @@ -5002,8 +5002,14 @@ core admin_hooks - selectoneomorecss - Select one or more css files to export + exportonesettings + Select one or more setting groups to export (all settings in the group will be exported) + + + core + admin_hooks + selectafile + Select a File core @@ -5017,12 +5023,6 @@ addreplacements Add Skin Replacements - - core - admin_hooks - selectafile - Select a File - core admin_hooks @@ -5137,15 +5137,15 @@ core admin_js - comparediff_diff - Difference + comparediff_cust + Customized 1 core admin_js - comparediff_cust - Customized + comparediff_diff + Difference 1 @@ -5263,15 +5263,15 @@ core admin_js - templates_blankcss - The css name cannot be blank + templates_loading + Loading... 1 core admin_js - templates_loading - Loading... + templates_blankcss + The css name cannot be blank 1 @@ -5305,15 +5305,15 @@ core admin_js - templates_error_add - There was an error adding this template bit + templates_adding + Adding... 1 core admin_js - templates_adding - Adding... + templates_error_add + There was an error adding this template bit 1 @@ -5361,15 +5361,15 @@ core admin_js - bit_skin_nexus_emails - (Nexus) Emails + bit_skin_nexus_clients + (Nexus) Clients 1 core admin_js - bit_skin_nexus_clients - (Nexus) Clients + bit_skin_nexus_emails + (Nexus) Emails 1 @@ -5606,15 +5606,15 @@ core admin_js - bit_skin_portal - Portal + bit_skin_poll + Polls 1 core admin_js - bit_skin_poll - Polls + bit_skin_portal + Portal 1 @@ -5624,13 +5624,6 @@ Online List 1 - - core - admin_js - bit_skin_mod - Moderation - 1 - core admin_js @@ -5641,8 +5634,8 @@ core admin_js - bit_skin_messaging - Messenger + bit_skin_mod + Moderation 1 @@ -5652,6 +5645,13 @@ Member List 1 + + core + admin_js + bit_skin_messaging + Messenger + 1 + core admin_js @@ -5753,15 +5753,15 @@ core admin_js - adduagenttitle - Adding User Agent + useragent_saved + The user agent has been saved 1 core admin_js - useragent_saved - The user agent has been saved + adduagenttitle + Adding User Agent 1 @@ -5795,15 +5795,15 @@ core admin_js - a_preendif - Before the end of the if statement + a_postendif + After the end of the if statement 1 core admin_js - a_postendif - After the end of the if statement + a_preendif + Before the end of the if statement 1 @@ -6324,14 +6324,14 @@ core admin_logs - mlog_remove - Remove + mlog_view + View core admin_logs - mlog_view - View + mlog_remove + Remove core @@ -6342,14 +6342,14 @@ core admin_logs - mlog_viewall - View All By Member + mlog_thelogs + Saved Moderator Logs core admin_logs - mlog_thelogs - Saved Moderator Logs + mlog_viewall + View All By Member core @@ -6366,14 +6366,14 @@ core admin_logs - mlog_forum - Forum + mlog_topictitle + Topic Title core admin_logs - mlog_topictitle - Topic Title + mlog_forum + Forum core @@ -6390,14 +6390,14 @@ core admin_logs - mlog_fid - Forum ID + mlog_last5 + Last 5 Moderator Actions core admin_logs - mlog_last5 - Last 5 Moderator Actions + mlog_fid + Forum ID core @@ -6447,12 +6447,6 @@ mlog_nostring You must enter a search string. Please try again. - - core - admin_logs - mlog_title - Moderator Logs Manager - core admin_logs @@ -6462,8 +6456,8 @@ core admin_logs - wlog_reason - Reason + mlog_title + Moderator Logs Manager core @@ -6471,6 +6465,12 @@ wlog_indef INDEF + + core + admin_logs + wlog_reason + Reason + core admin_logs @@ -6498,14 +6498,14 @@ core admin_logs - wlog_log_sent - Date + wlog_log_to + Member core admin_logs - wlog_log_to - Member + wlog_log_sent + Date core @@ -6582,14 +6582,14 @@ core admin_logs - wlog_viewall - View All By Member + wlog_removeall + Remove All By Member core admin_logs - wlog_removeall - Remove All By Member + wlog_viewall + View All By Member core @@ -6612,14 +6612,14 @@ core admin_logs - wlog_noresults - No Warn Logs Found]]> + wlog_warnedby + Warned By core admin_logs - wlog_warnedby - Warned By + wlog_noresults + No Warn Logs Found]]> core @@ -6636,14 +6636,14 @@ core admin_logs - wlog_warned - Warned Member + wlog_type + Type core admin_logs - wlog_type - Type + wlog_warned + Warned Member core @@ -6690,14 +6690,14 @@ core admin_logs - wlog_showmessage - Show message + wlog_contacted + View email core admin_logs - wlog_contacted - View email + wlog_showmessage + Show message core @@ -6768,14 +6768,14 @@ core admin_logs - slog_querystring - Query String + slog_time + Time of Action core admin_logs - slog_time - Time of Action + slog_querystring + Query String core @@ -6810,14 +6810,14 @@ core admin_logs - slog_view - View + slog_remove + Remove core admin_logs - slog_remove - Remove + slog_view + View core @@ -6870,14 +6870,8 @@ core admin_logs - error_log_noresults - No Error Logs Found]]> - - - core - admin_logs - slog_title - Search Engine Logs Manager + slog_lofi + (Lo-Fi) core @@ -6888,8 +6882,14 @@ core admin_logs - slog_lofi - (Lo-Fi) + slog_title + Search Engine Logs Manager + + + core + admin_logs + error_log_noresults + No Error Logs Found]]> core @@ -6918,14 +6918,14 @@ core admin_logs - error_log_date - Date + error_log_ip + IP Address core admin_logs - error_log_ip - IP Address + error_log_date + Date core @@ -6981,12 +6981,6 @@ sqllog_size File Size - - core - admin_logs - sqllog_date - File Date - core admin_logs @@ -6996,8 +6990,8 @@ core admin_logs - sqllog_title - SQL Error Logs + sqllog_date + File Date core @@ -7005,6 +6999,12 @@ mlog_sqlerrors SQL Error Logs + + core + admin_logs + sqllog_title + SQL Error Logs + core admin_logs @@ -7020,14 +7020,14 @@ core admin_logs - sqllog_removed - %s SQL error log file(s) removed + spamlog_sresults + We found %s records that matched your search term core admin_logs - spamlog_sresults - We found %s records that matched your search term + sqllog_removed + %s SQL error log file(s) removed core @@ -7482,20 +7482,8 @@ core admin_mobileapp - mi_error_no_export - The export failed - - - core - admin_mobileapp - mi_exportxml - Export as XMLArchive - - - core - admin_mobileapp - mi_upload - Upload + mi_import_title + Import Images XMLArchive core @@ -7506,8 +7494,20 @@ core admin_mobileapp - mi_import_title - Import Images XMLArchive + mi_upload + Upload + + + core + admin_mobileapp + mi_exportxml + Export as XMLArchive + + + core + admin_mobileapp + mi_error_no_export + The export failed core @@ -7575,12 +7575,6 @@ mi_error_refresh_failed Refresh Failed - - core - admin_mycp - cp_no_failed_logins - No failed logins to show - core admin_mycp @@ -7593,12 +7587,6 @@ cp_view View - - core - admin_mycp - cp_latestadminlogins - Failed Admin Logins - core admin_mycp @@ -7620,8 +7608,8 @@ core admin_mycp - cp_no - No + cp_more + MORE core @@ -7632,8 +7620,8 @@ core admin_mycp - cp_more - MORE + cp_no + No core @@ -7674,8 +7662,8 @@ core admin_mycp - cp_members - members + cp_edit + Edit core @@ -7686,26 +7674,14 @@ core admin_mycp - cp_edit - Edit + cp_members + members core admin_mycp - cp_find - Find - - - core - admin_mycp - cp_quicksearch - Quick Search - - - core - admin_mycp - cp_emoticonmanager - Emoticon Manager + cp_manageforums + Manage Forums core @@ -7716,8 +7692,20 @@ core admin_mycp - cp_manageforums - Manage Forums + cp_emoticonmanager + Emoticon Manager + + + core + admin_mycp + cp_quicksearch + Quick Search + + + core + admin_mycp + cp_find + Find core @@ -7740,14 +7728,14 @@ core admin_mycp - cp_managegroups - Manage User Groups + cp_editsettings + Edit System Settings core admin_mycp - cp_editsettings - Edit System Settings + cp_managegroups + Manage User Groups core @@ -7764,14 +7752,14 @@ core admin_mycp - cp_onlineusers - Online Users + cp_serverload + Server Load core admin_mycp - cp_serverload - Server Load + cp_onlineusers + Online Users core @@ -7782,14 +7770,14 @@ core admin_mycp - cp_bbcodeneedup - BBCodes Need Updating + cp_helpneedup + Help Files Need Updating core admin_mycp - cp_helpneedup - Help Files Need Updating + cp_bbcodeneedup + BBCodes Need Updating core @@ -7848,8 +7836,8 @@ core admin_mycp - cp_boardoffline - Community Offline + cp_boardoffline2 + Turn Community Online core @@ -7860,8 +7848,8 @@ core admin_mycp - cp_boardoffline2 - Turn Community Online + cp_boardoffline + Community Offline core @@ -7872,8 +7860,8 @@ core admin_mycp - cp_converterpresent - Converter Present + cp_unfinishedupgrade + Unfinished Upgrade core @@ -7884,8 +7872,8 @@ core admin_mycp - cp_unfinishedupgrade - Unfinished Upgrade + cp_converterpresent + Converter Present core @@ -7896,14 +7884,14 @@ core admin_mycp - cp_index - Index + cp_unlockedinstaller + Unlocked Installer core admin_mycp - cp_unlockedinstaller - Unlocked Installer + cp_index + Index core @@ -7983,12 +7971,6 @@ minifywrite_head Minify Disabled - - core - admin_mycp - details_updated - Your details have been updated successfully - core admin_mycp @@ -7998,8 +7980,8 @@ core admin_mycp - changed_email - Administrator updated their email address to %s + details_updated + Your details have been updated successfully core @@ -8022,14 +8004,14 @@ core admin_mycp - change_not_match - The email addresses supplied did not match + changed_email + Administrator updated their email address to %s core admin_mycp - change_email_already_used - The email address you supplied is already in use + change_not_match + The email addresses supplied did not match core @@ -8037,6 +8019,12 @@ already_using_email You are already using that email address + + core + admin_mycp + change_nothing_update + You did not specify to change your email or password + core admin_mycp @@ -8046,14 +8034,14 @@ core admin_mycp - change__pass_confirm - Confirm New Password + change_email_already_used + The email address you supplied is already in use core admin_mycp - change_nothing_update - You did not specify to change your email or password + change__pass_confirm + Confirm New Password core @@ -8097,6 +8085,12 @@ mycp_change_details Change Details + + core + admin_mycp + lc_msg_expired + Your support license has expired, to continue receiving support and other services, please renew your license. + core admin_mycp @@ -8106,8 +8100,8 @@ core admin_mycp - lc_msg_expired - Your support license has expired, to continue receiving support and other services, please renew your license. + lc_msg_notfound + %s' which is not found in our system, please remove your key and then readd it with the correct URL, you can do this via the License Key section of the ACP.]]> core @@ -8118,8 +8112,8 @@ core admin_mycp - lc_msg_notfound - %s' which is not found in our system, please remove your key and then readd it with the correct URL, you can do this via the License Key section of the ACP.]]> + lc_title_nokey + License Key Missing core @@ -8133,24 +8127,12 @@ cp_profilephotoerr_msg %s' and make sure that it is writable.]]> - - core - admin_mycp - lc_title_nokey - License Key Missing - core admin_mycp cp_profilephotoerr_title Your profile photo directory is not writable - - core - admin_mycp - cp_gdnotinstalled_title - GD is not installed - core admin_mycp @@ -8160,14 +8142,20 @@ core admin_mycp - cp_perfmodeon_msg - Some features, such as messenger, are disabled while performance mode is enabled. + cp_gdnotinstalled_title + GD is not installed core admin_mycp - ipboardlicenseerror - IP.Board License Message + cp_perfmodeon_title + Performance Mode Enabled + + + core + admin_mycp + cp_perfmodeon_msg + Some features, such as messenger, are disabled while performance mode is enabled. core @@ -8178,8 +8166,8 @@ core admin_mycp - cp_perfmodeon_title - Performance Mode Enabled + ipboardlicenseerror + IP.Board License Message core @@ -8229,12 +8217,6 @@ suhosin_badvalue1 Your host will need to change this in the php.ini file.]]> - - core - admin_mycp - cp_upgradefinishfolder - upgradeFinish Folder Detected - core admin_mycp @@ -8244,8 +8226,8 @@ core admin_mycp - sphinxconfig_outofdate_desc -
You should update your sphinx configuration file and cronjobs following any update:]]>
+ cp_upgradefinishfolder + upgradeFinish Folder Detected
core @@ -8253,6 +8235,12 @@ rebuild_sphinx_config Rebuild sphinx.conf file and cronjobs + + core + admin_mycp + sphinxconfig_outofdate_desc +
You should update your sphinx configuration file and cronjobs following any update:]]>
+
core admin_mycp @@ -8289,6 +8277,12 @@ spam_service_error_msg The last call to the Spam Monitoring Service resulted in an error (%s). If the problem persists, you may wish to contact technical support for assistance. + + core + admin_mycp + details__members + Members + core admin_mycp @@ -8304,14 +8298,8 @@ core admin_mycp - details__members - Members - - - core - admin_mycp - cp_missingemail1 - Your community incoming or outgoing email address is currently not specified. + reg_chart_stats + Registrations over past %s days core @@ -8322,14 +8310,8 @@ core admin_mycp - reg_chart_stats - Registrations over past %s days - - - core - admin_mycp - cp_missingemail - Email Address Missing + cp_missingemail1 + Your community incoming or outgoing email address is currently not specified. core @@ -8340,8 +8322,14 @@ core admin_mycp - spam_service_expired - here or renew your license here.]]> + cp_missingemail + Email Address Missing + + + core + admin_mycp + tp_tabs + Tabs core @@ -8352,8 +8340,8 @@ core admin_mycp - tp_tabs - Tabs + spam_service_expired + here or renew your license here.]]> core @@ -8391,6 +8379,18 @@ tp_main_tab_bar Main Tab Bar + + core + admin_mycp + cp_latestadminlogins + Failed Admin Logins + + + core + admin_mycp + cp_no_failed_logins + No failed logins to show + core admin_mycp @@ -8865,12 +8865,6 @@ pal_attach_attach_removal Removing Attachment... - - core - admin_posts - r_statcreated - Status Created - core admin_posts @@ -8892,14 +8886,14 @@ core admin_posts - r_invpar - Invalid Parameter + r_onenew + core admin_posts - r_onenew - + r_invpar + Invalid Parameter core @@ -8931,12 +8925,6 @@ r_changepoints There is an image under this status using the same number of points. Please change the number of points. - - core - admin_posts - r_imgdel - Image Deleted - core admin_posts @@ -8946,8 +8934,8 @@ core admin_posts - r_plugin_title - You can setup and manage your report center plugins in this section. + r_imgdel + Image Deleted core @@ -8958,8 +8946,8 @@ core admin_posts - r_deleteplug - Plugin Deleted + r_plugin_title + You can setup and manage your report center plugins in this section. core @@ -8967,6 +8955,12 @@ r_dellocked This plugin is locked. It cannot be deleted. + + core + admin_posts + r_deleteplug + Plugin Deleted + core admin_posts @@ -8994,14 +8988,14 @@ core admin_posts - r_plugnoexist - + r_finishplugin + Finish Plugin Settings core admin_posts - r_finishplugin - Finish Plugin Settings + r_plugnoexist + core @@ -9009,12 +9003,6 @@ r_plugincreate Plugin Created - - core - admin_posts - r_incchar - - core admin_posts @@ -9024,8 +9012,14 @@ core admin_posts - r_noid - No ID was passed. Please try again. + r_missingfield + Missing required fields. + + + core + admin_posts + r_incchar + core @@ -9036,8 +9030,8 @@ core admin_posts - r_missingfield - Missing required fields. + r_noid + No ID was passed. Please try again. core @@ -9141,6 +9135,18 @@ bwl_import_upload Upload XML Badword List]]> + + core + admin_posts + bwl_import + Import Badword List + + + core + admin_posts + bwl_export + Export Badword List + core admin_posts @@ -9165,18 +9171,6 @@ bwl_filter_add Add New Filter - - core - admin_posts - bwl_export - Export Badword List - - - core - admin_posts - bwl_import - Import Badword List - core admin_posts @@ -9228,14 +9222,14 @@ core admin_posts - bwl_loose - Loose + bwl_exact + Exact core admin_posts - bwl_exact - Exact + bwl_loose + Loose core @@ -9288,14 +9282,14 @@ core admin_posts - emote_deletefolder - Delete Folder... + emote_manageset + Manage this emoticon set core admin_posts - emote_manageset - Manage this emoticon set + emote_deletefolder + Delete Folder... core @@ -9324,8 +9318,8 @@ core admin_posts - emote_num_group - # in Emoticon Group + emote_upload + Upload? core @@ -9336,14 +9330,14 @@ core admin_posts - emote_emofolder - Emoticon Folder + emote_num_group + # in Emoticon Group core admin_posts - emote_upload - Upload? + emote_current + Current Emoticon Folders core @@ -9354,8 +9348,8 @@ core admin_posts - emote_current - Current Emoticon Folders + emote_emofolder + Emoticon Folder core @@ -9369,12 +9363,6 @@ emote_close Close - - core - admin_posts - emote_editfolder - Edit Folder Name... - core admin_posts @@ -9384,8 +9372,8 @@ core admin_posts - emote_addall_button - Add All Emoticons + emote_editfolder + Edit Folder Name... core @@ -9396,14 +9384,14 @@ core admin_posts - emote_add - Add? ]]> + emote_addall_button + Add All Emoticons core admin_posts - emote_unassigned_none - No unassigned emoticons + emote_add + Add? ]]> core @@ -9414,8 +9402,8 @@ core admin_posts - emote_clickable - Clickable? + emote_unassigned_none + No unassigned emoticons core @@ -9426,8 +9414,8 @@ core admin_posts - emote_delete_title - Remove this emoticon... + emote_clickable + Clickable? core @@ -9435,6 +9423,12 @@ emote_assigned Assigned Emoticons in set: + + core + admin_posts + emote_delete_title + Remove this emoticon... + core admin_posts @@ -9462,20 +9456,8 @@ core admin_posts - emote_import_over - Overwrite existing images and activation words? - - - core - admin_posts - emote_import_name - Enter the name of the new emoticon group. - - - core - admin_posts - emote_import_newgroup - OR Import into a new group named:]]> + emote_import + Import an Emoticon Pack core @@ -9486,8 +9468,20 @@ core admin_posts - emote_import - Import an Emoticon Pack + emote_import_newgroup + OR Import into a new group named:]]> + + + core + admin_posts + emote_import_name + Enter the name of the new emoticon group. + + + core + admin_posts + emote_import_over + Overwrite existing images and activation words? core @@ -9588,14 +9582,14 @@ core admin_posts - emo_folder_rem - Emoticon folder removed. + emo_a_to_z + No valid folder name was entered, please try again using only alphanumerics (A-Z, a-z, 0-9) core admin_posts - emo_a_to_z - No valid folder name was entered, please try again using only alphanumerics (A-Z, a-z, 0-9) + emo_folder_rem + Emoticon folder removed. core @@ -9654,14 +9648,14 @@ core admin_posts - emo_noid - No emoticon ID was passed + emo_nogid + No emoticon group ID was passed core admin_posts - emo_nogid - No emoticon group ID was passed + emo_noid + No emoticon ID was passed core @@ -9678,14 +9672,14 @@ core admin_posts - emo_specify_ex - You must specify which emoticon group you wish to export. + emo_xml_good + Emoticon XML archive import completed. core admin_posts - emo_xml_good - Emoticon XML archive import completed. + emo_specify_ex + You must specify which emoticon group you wish to export. core @@ -9693,12 +9687,6 @@ emo_ftp - - core - admin_posts - emo_specify - You must specify which emoticon group you wish to import into. - core admin_posts @@ -9708,8 +9696,8 @@ core admin_posts - emoticon_folder_name - Folder name: + emo_specify + You must specify which emoticon group you wish to import into. core @@ -9720,8 +9708,8 @@ core admin_posts - media_tag_title - Media Tag + emoticon_folder_name + Folder name: core @@ -9732,8 +9720,8 @@ core admin_posts - media_exports - Export Media Tags... + media_tag_title + Media Tag core @@ -9744,14 +9732,14 @@ core admin_posts - media_export - Export Media Tag... + media_exports + Export Media Tags... core admin_posts - media_upload_desc - Duplicate entries will not be imported + media_export + Export Media Tag... core @@ -9765,6 +9753,18 @@ media_upload Upload XML Media Tags + + core + admin_posts + media_upload_desc + Duplicate entries will not be imported + + + core + admin_posts + media_name + Media + core admin_posts @@ -9777,12 +9777,6 @@ media_current Current Media Tag Replacements - - core - admin_posts - media_name - Media - core admin_posts @@ -9810,14 +9804,14 @@ core admin_posts - media_title_info - Used as a reference for the tag + media_title + Media Replacement Title core admin_posts - media_title - Media Replacement Title + media_title_info + Used as a reference for the tag core @@ -9912,14 +9906,14 @@ core admin_posts - bbcode_assoc_app - BBCode Application + bbcode_whereused + Where can the BBCode be used? core admin_posts - bbcode_whereused - Where can the BBCode be used? + bbcode_assoc_app + BBCode Application core @@ -9954,14 +9948,14 @@ core admin_posts - bbcode_replace - Custom BBCode Replacement + bbcode_replace_info + <tag thing='{option}'>{content}</tag>]]> core admin_posts - bbcode_replace_info - <tag thing='{option}'>{content}</tag>]]> + bbcode_replace + Custom BBCode Replacement core @@ -10038,14 +10032,14 @@ core admin_posts - bbcode_example_info - + bbcode_tag_info + tag]]> core admin_posts - bbcode_tag_info - tag]]> + bbcode_example_info + core @@ -10083,12 +10077,6 @@ all_groups All current and future groups - - core - admin_posts - bbcache_desc - The content cache is enabled which means that any changes to this BBCode will not be automatically applied to previous posts unless you remove all cached content. - core admin_posts @@ -10098,8 +10086,8 @@ core admin_posts - bbcache_title - Content Cache Enabled + bbcache_desc + The content cache is enabled which means that any changes to this BBCode will not be automatically applied to previous posts unless you remove all cached content. core @@ -10107,6 +10095,12 @@ custom_bbcode_head Custom BBCode + + core + admin_posts + bbcache_title + Content Cache Enabled + core admin_posts @@ -10116,14 +10110,14 @@ core admin_posts - import_bbcode_all - Import (Apps) + bbcode_header + Custom BBCodes core admin_posts - bbcode_header - Custom BBCodes + import_bbcode_all + Import (Apps) core @@ -10164,14 +10158,14 @@ core admin_posts - import_new_bbcode - Import New BBCodes + bbcode_import + Import core admin_posts - bbcode_import - Import + import_new_bbcode + Import New BBCodes core @@ -10224,14 +10218,14 @@ core admin_posts - m_manager - Media Tag Manager + m_tag_added + core admin_posts - m_tag_added - + m_manager + Media Tag Manager core @@ -10344,14 +10338,14 @@ core admin_posts - bbcode_customregex_info - Use this field to define a regular expression to filter the option content through before outputting to the page. If option value does not match expression, tag will not be parsed. + bbcode_customregex + Option Regular Expression Filter core admin_posts - bbcode_customregex - Option Regular Expression Filter + bbcode_customregex_info + Use this field to define a regular expression to filter the option content through before outputting to the page. If option value does not match expression, tag will not be parsed. core @@ -10368,14 +10362,14 @@ core admin_posts - tag_already_alias - %s]]> + emote_impexpo + Import / Export core admin_posts - emote_impexpo - Import / Export + tag_already_alias + %s]]> core @@ -10389,6 +10383,12 @@ emodir_not_write All of your emoticon directories must be writable in order to import an emoticon pack. The following folder is not writable: %s + + core + admin_posts + r_statcreated + Status Created + core admin_posts @@ -10938,14 +10938,14 @@ core admin_security - sec_step_2 - Step 2: + sec_step_1 + Step 1: core admin_security - sec_step_1 - Step 1: + sec_step_2 + Step 2: core @@ -10974,14 +10974,14 @@ core admin_security - sec_ipboard_is_unable_to_write_int - IP.Board is unable to write into your admin directory + sec_cp_htaccess_protection + ACP .htaccess protection core admin_security - sec_cp_htaccess_protection - ACP .htaccess protection + sec_ipboard_is_unable_to_write_int + IP.Board is unable to write into your admin directory core @@ -11007,12 +11007,6 @@ sec_using_this_tool_will_overwrite Using this tool will overwrite any current protection in your admin directory. You will also be required to enter the username and password immediately after saving. - - core - admin_security - sec_please_note - Please note - core admin_security @@ -11022,8 +11016,8 @@ core admin_security - sec_information - information + sec_please_note + Please note core @@ -11031,6 +11025,12 @@ sec_acp_htaccess_protection ACP .htaccess protection + + core + admin_security + sec_information + information + core admin_security @@ -11046,14 +11046,14 @@ core admin_security - sec_ipboard_security_center - IP.Board Security Center + sec_last_modified + Last Modified core admin_security - sec_last_modified - Last Modified + sec_ipboard_security_center + IP.Board Security Center core @@ -11220,8 +11220,8 @@ core admin_seo - meta_tag_content - Content + meta_tag_title + Title core @@ -11232,8 +11232,8 @@ core admin_seo - meta_tag_title - Title + meta_tag_content + Content core @@ -11244,14 +11244,14 @@ core admin_seo - meta_page_desc -
You may use * as a wildcard, for example entering '/user/*' will allow you to specify meta tags to show on all user profiles.]]>
+ meta_page + Page URI
core admin_seo - meta_page - Page URI + meta_page_desc +
You may use * as a wildcard, for example entering '/user/*' will allow you to specify meta tags to show on all user profiles.]]>
core @@ -11274,14 +11274,14 @@ core admin_seo - meta_title - Meta Tags + meta_blurb + This page allows you to set up meta tags to display on certain areas of your community. core admin_seo - meta_blurb - This page allows you to set up meta tags to display on certain areas of your community. + meta_title + Meta Tags core @@ -11316,14 +11316,14 @@ core admin_seo - atn_ipseo_no_meta_desc - You have not defined any custom meta tags. + atn_sitemap_ping_title + Sitemap Ping Disabled core admin_seo - atn_sitemap_ping_title - Sitemap Ping Disabled + atn_ipseo_no_meta_desc + You have not defined any custom meta tags. core @@ -11358,8 +11358,8 @@ core admin_seo - atn_spider_visit_desc - We cannot generate spider visit charts and statistics without this enabled. + atn_seo_index_md_desc + You have not defined a meta description for your Board Index. core @@ -11370,8 +11370,8 @@ core admin_seo - atn_seo_index_md_desc - You have not defined a meta description for your Board Index. + atn_spider_visit_desc + We cannot generate spider visit charts and statistics without this enabled. core @@ -11424,8 +11424,8 @@ core admin_seo - atn_sitemap_path_title - Sitemap Not Writeable + attention_ignore + Ignore this problem core @@ -11436,8 +11436,8 @@ core admin_seo - attention_ignore - Ignore this problem + atn_sitemap_path_title + Sitemap Not Writeable core @@ -11448,14 +11448,14 @@ core admin_seo - attention_title - SEO Advice + attention_none + There are no items to display. core admin_seo - attention_none - There are no items to display. + attention_title + SEO Advice core @@ -11496,8 +11496,8 @@ core admin_seo - acronym_delete_confirm - Are you sure you want to delete this acronym? + err_acronym_toolong + Both the acronym and the long version cannot be longer than 255 characters. core @@ -11508,8 +11508,8 @@ core admin_seo - err_acronym_toolong - Both the acronym and the long version cannot be longer than 255 characters. + acronym_delete_confirm + Are you sure you want to delete this acronym? core @@ -11565,12 +11565,6 @@ acronyms_short_desc When the user uses this acronym in a post, it will be replaced with the long version you enter below. - - core - admin_seo - acronyms_edit - Edit Acronym - core admin_seo @@ -11580,14 +11574,14 @@ core admin_seo - acronyms - Acronym Expansion + acronyms_edit + Edit Acronym core admin_seo - smt_done - Finished. + acronyms + Acronym Expansion core @@ -11604,8 +11598,8 @@ core admin_seo - smt_ping_ok - - Successfully pinged %s + smt_done + Finished. core @@ -11616,26 +11610,14 @@ core admin_seo - smt_plugin - - Running plugin: %s + smt_pinging + Pinging search engines with updated sitemap. core admin_seo - smt_generated - - - Generated %d sitemaps - - - core - admin_seo - smt_file - - - - File %d, added %d URLs. - - - core - admin_seo - smt_no_plugins - No plugins to run for: %s + smt_ping_ok + - Successfully pinged %s core @@ -11646,8 +11628,26 @@ core admin_seo - smt_pinging - Pinging search engines with updated sitemap. + smt_no_plugins + No plugins to run for: %s + + + core + admin_seo + smt_file + - - - File %d, added %d URLs. + + + core + admin_seo + smt_generated + - - Generated %d sitemaps + + + core + admin_seo + smt_plugin + - Running plugin: %s core @@ -11670,8 +11670,8 @@ core admin_seo - smt_nowrite - Could not write to: + ipseo_upgrade_continue + Continue core @@ -11682,8 +11682,8 @@ core admin_seo - ipseo_upgrade_continue - Continue + smt_nowrite + Could not write to: core @@ -11982,14 +11982,14 @@ core admin_setup - type__text_finished - This %s is now complete + type__text + This %s is in progress... core admin_setup - type__text - This %s is in progress... + type__text_finished + This %s is now complete core @@ -12276,14 +12276,14 @@ core admin_sql - my_si_clickrebuild - to rebuild this applications search index.]]> + my_si_entries + Entries core admin_sql - my_si_entries - Entries + my_si_clickrebuild + to rebuild this applications search index.]]> core @@ -12318,14 +12318,14 @@ core admin_sql - manual_loginlogs - + manual_notallowed + Sorry, those queries are not allowed for your safety core admin_sql - manual_notallowed - Sorry, those queries are not allowed for your safety + manual_loginlogs + core @@ -12333,12 +12333,6 @@ manual_invalid This query appears to be invalid: - - core - admin_sql - manual_noquery - No queries were found to run - core admin_sql @@ -12348,20 +12342,8 @@ core admin_sql - my_sqlerror - MySQL Error - - - core - admin_sql - my_successfully - Executed Successfully
]]>
-
- - core - admin_sql - my_automatically - Fix Automatically]]> + manual_noquery + No queries were found to run core @@ -12369,6 +12351,24 @@ my_manually Fix Manually]]> + + core + admin_sql + my_automatically + Fix Automatically]]> + + + core + admin_sql + my_successfully + Executed Successfully
]]>
+
+ + core + admin_sql + my_sqlerror + MySQL Error + core admin_sql @@ -12378,14 +12378,14 @@ core admin_sql - my_runtime - MySQL Runtime Information + my_sysvar + MySQL System Variables core admin_sql - my_sysvar - MySQL System Variables + my_runtime + MySQL Runtime Information core @@ -12405,6 +12405,12 @@ my_backuptitle MySQL %s Backup + + core + admin_sql + my_cantdo + Sorry, we do not allow one or more of those queries. Please run them from a seperate database management tool outside of IP.Board. + core admin_sql @@ -12417,18 +12423,6 @@ my_backupnav MySQL Database Backup - - core - admin_sql - my_cantdo - Sorry, we do not allow one or more of those queries. Please run them from a seperate database management tool outside of IP.Board. - - - core - admin_sql - my_noloc - - core admin_sql @@ -12441,6 +12435,12 @@ my_noloc_class + + core + admin_sql + my_noloc + + core admin_sql @@ -12456,14 +12456,14 @@ core admin_sql - my_noapp - The application you selected does not appear to be installed. + my_si_progress + search index rebuild in progress core admin_sql - my_si_progress - search index rebuild in progress + my_noapp + The application you selected does not appear to be installed. core @@ -12492,14 +12492,14 @@ core admin_sql - backup_tool_warning_title - SQL Backup Warning + resultprefix + Result: core admin_sql - resultprefix - Result: + backup_tool_warning_title + SQL Backup Warning core @@ -12633,18 +12633,6 @@ my_manadvanced Manual Query
Advanced Users Only]]>
- - core - admin_system - s_completeform - You must complete the form. Please try again. - - - core - admin_system - s_rename_bad - The admin directory has not been renamed.]]> - core admin_system @@ -12690,14 +12678,14 @@ core admin_system - s_toggle - Toggle Now + s_phpcgi + IP.Board PHP/CGI .htaccess Protection core admin_system - s_phpcgi - IP.Board PHP/CGI .htaccess Protection + s_toggle + Toggle Now core @@ -12726,20 +12714,8 @@ core admin_system - q_nohelp - No help information is available for this function at present. - - - core - admin_system - s_deep - IP.Board Executables Deep Scan - - - core - admin_system - s_deep_bad - The scanner has not been run in over a month]]> + s_deep_good + The scanner was last run: ]]> core @@ -12750,14 +12726,20 @@ core admin_system - s_deep_good - The scanner was last run: ]]> + s_deep_bad + The scanner has not been run in over a month]]> core admin_system - q_components - Components Menu System + s_deep + IP.Board Executables Deep Scan + + + core + admin_system + q_nohelp + No help information is available for this function at present. core @@ -12768,20 +12750,8 @@ core admin_system - q_captcha - Registration CAPTCHA - - - core - admin_system - q_captcha_info -
When enabled, a random 6 digit numerical string is generated and shown in a graphical format (to prevent advanced bots from reading the source page). The user must enter this string exactly when registering or the account will not be created.]]>
-
- - core - admin_system - q_bulk - Bulk Emailing + q_components + Components Menu System core @@ -12792,20 +12762,20 @@ core admin_system - q_promote_info -
Many administrators use this feature to set up a 'Senior Members' group with more functionality (such as a longer edit time, larger post uploads) and even allow access to otherwise hidden forums - when your members have made enough posts, they are promoted to this group allowing you to intice more posting and allow for a more restrictive set of permissions for newcomers.

Warning!
Use this feature carefully and always check the information before proceeding.
It is possible to advance to an Admin group - you have been warned.]]>
+ q_bulk + Bulk Emailing
core admin_system - q_upload - Upload Permissions + q_captcha_info +
When enabled, a random 6 digit numerical string is generated and shown in a graphical format (to prevent advanced bots from reading the source page). The user must enter this string exactly when registering or the account will not be created.]]>
core admin_system - q_upload_info -
  • You have entered a reasonable numerical figure in the groups 'Max upload file size' field.
  • You have edited the forum permissions for this group and checked the 'Upload' checkbox. This allows you to control in which forums this group can upload to.

    Warning!
    If, when posting, no post is made and you are returned back to the community index, disable this groups upload by entering 0 into this field. This will turn off the mutli-part form the uploads use.]]> + q_captcha + Registration CAPTCHA core @@ -12816,8 +12786,20 @@ core admin_system - q_multi_info - For example, if one of your multi-moderation actions allowed the topic to be moved and you do not allow move permissions the moderator will still be able to use the topic multi-moderation and move the topic.]]> + q_promote_info +
    Many administrators use this feature to set up a 'Senior Members' group with more functionality (such as a longer edit time, larger post uploads) and even allow access to otherwise hidden forums - when your members have made enough posts, they are promoted to this group allowing you to intice more posting and allow for a more restrictive set of permissions for newcomers.

    Warning!
    Use this feature carefully and always check the information before proceeding.
    It is possible to advance to an Admin group - you have been warned.]]>
    +
    + + core + admin_system + q_upload_info +
  • You have entered a reasonable numerical figure in the groups 'Max upload file size' field.
  • You have edited the forum permissions for this group and checked the 'Upload' checkbox. This allows you to control in which forums this group can upload to.

    Warning!
    If, when posting, no post is made and you are returned back to the community index, disable this groups upload by entering 0 into this field. This will turn off the mutli-part form the uploads use.]]> + + + core + admin_system + q_upload + Upload Permissions core @@ -12840,14 +12822,14 @@ core admin_system - q_html_info -
    Warning!
    Allowing a member to post HTML is a very dangerous thing, you should not enable this functionality on any group that will use it maliciously. Although IPB tries to filter some of the more harmful content, it is NOT foolproof and this tag CAN be used to steal session cookies, redirect members and destroy the topic view layout.
    IP.Board and Invision Power Services will not be held responsible for any misfortune that occurs from the usage of this tag.

    Use it wisely!]]>
    + q_multi_info + For example, if one of your multi-moderation actions allowed the topic to be moved and you do not allow move permissions the moderator will still be able to use the topic multi-moderation and move the topic.]]>
    core admin_system - q_html - Posting HTML + q_html_info +
    Warning!
    Allowing a member to post HTML is a very dangerous thing, you should not enable this functionality on any group that will use it maliciously. Although IPB tries to filter some of the more harmful content, it is NOT foolproof and this tag CAN be used to steal session cookies, redirect members and destroy the topic view layout.
    IP.Board and Invision Power Services will not be held responsible for any misfortune that occurs from the usage of this tag.

    Use it wisely!]]>
    core @@ -12858,8 +12840,8 @@ core admin_system - ll_msg - The red cross indicates an error when logging in and a green tick indicates a successful log in.]]> + q_html + Posting HTML core @@ -12870,8 +12852,14 @@ core admin_system - ll_noid - No log for that ID found. + ll_msg + The red cross indicates an error when logging in and a green tick indicates a successful log in.]]> + + + core + admin_system + d_aoff + OFF core @@ -12882,8 +12870,8 @@ core admin_system - d_aoff - OFF + ll_noid + No log for that ID found. core @@ -12900,32 +12888,14 @@ core admin_system - d_aavail - Available Physical Memory + d_dtitle + IP.Board Diagnostics - Database Structure Checker core admin_system - d_aphpinfo - PHP INFO - - - core - admin_system - d_atotal - Total Physical Memory - - - core - admin_system - d_dfix - Fix - - - core - admin_system - d_atitle - IP.Board Diagnostics + d_dnav + Database Structure Results core @@ -12942,14 +12912,32 @@ core admin_system - d_dnav - Database Structure Results + d_dfix + Fix core admin_system - d_dtitle - IP.Board Diagnostics - Database Structure Checker + d_atitle + IP.Board Diagnostics + + + core + admin_system + d_aphpinfo + PHP INFO + + + core + admin_system + d_atotal + Total Physical Memory + + + core + admin_system + d_aavail + Available Physical Memory core @@ -12966,8 +12954,26 @@ core admin_system - d_iauto - Click here to fix this table]]> + d_ifixall_link + Would you like us to attempt to fix them for you? + + + core + admin_system + d_icongrats + There were no errors found with your database indexes. + + + core + admin_system + d_itable + Table + + + core + admin_system + d_iindex + Index Name core @@ -12984,26 +12990,8 @@ core admin_system - d_iindex - Index Name - - - core - admin_system - d_itable - Table - - - core - admin_system - d_icongrats - There were no errors found with your database indexes. - - - core - admin_system - d_ifixall_link - Would you like us to attempt to fix them for you? + d_iauto + Click here to fix this table]]> core @@ -13014,32 +13002,8 @@ core admin_system - d_inoerrors - No Errors Found - - - core - admin_system - d_inoprocess - There was an error and we could not process your %s_tables.php file. Please reupload it. - - - core - admin_system - d_iupload - You must upload: /install/sql/%s_tables.php from the IP.Board installation package for your current version to run this tool. - - - core - admin_system - d_iexecuted - Executed Successfully
    ]]>
    -
    - - core - admin_system - d_ierror - SQL Error: + d_isorry + Sorry, those queries are not allowed for your safety. core @@ -13050,8 +13014,32 @@ core admin_system - d_isorry - Sorry, those queries are not allowed for your safety. + d_ierror + SQL Error: + + + core + admin_system + d_iexecuted + Executed Successfully
    ]]>
    +
    + + core + admin_system + d_iupload + You must upload: /install/sql/%s_tables.php from the IP.Board installation package for your current version to run this tool. + + + core + admin_system + d_inoprocess + There was an error and we could not process your %s_tables.php file. Please reupload it. + + + core + admin_system + d_inoerrors + No Errors Found core @@ -13062,20 +13050,8 @@ core admin_system - d_ititle - IP.Board Diagnostics - Database Index Checker - - - core - admin_system - d_wclear - All files appear to be in good order - - - core - admin_system - d_wfound - has whitespace at the beginning or end of the file + d_wtitle + IP.Board Diagnostics - Whitespace Checker core @@ -13086,8 +13062,20 @@ core admin_system - d_wtitle - IP.Board Diagnostics - Whitespace Checker + d_wfound + has whitespace at the beginning or end of the file + + + core + admin_system + d_wclear + All files appear to be in good order + + + core + admin_system + d_ititle + IP.Board Diagnostics - Database Index Checker core @@ -13116,38 +13104,14 @@ core admin_system - d_ptitle - IP.Board Diagnostics - Permission Checker + sy_devcomponents + Components core admin_system - d_vinfo - Version Information - - - core - admin_system - d_vnav - Version Check Results - - - core - admin_system - d_vtitle - IP.Board Diagnostics - Version Checker - - - core - admin_system - chckr_fix - Fix - - - core - admin_system - chckr_status - Status + system_processes + System Processes core @@ -13164,14 +13128,38 @@ core admin_system - system_processes - System Processes + chckr_status + Status core admin_system - sy_devcomponents - Components + chckr_fix + Fix + + + core + admin_system + d_vtitle + IP.Board Diagnostics - Version Checker + + + core + admin_system + d_vnav + Version Check Results + + + core + admin_system + d_vinfo + Version Information + + + core + admin_system + d_ptitle + IP.Board Diagnostics - Permission Checker core @@ -13194,50 +13182,8 @@ core admin_system - sy_devpages - Pages - - - core - admin_system - sy_devfile - File Types - - - core - admin_system - sy_devskin - Skin Set - - - core - admin_system - sy_devcontent - Content Templates - - - core - admin_system - sy_devtemplate - Template HTML - - - core - admin_system - sy_devemail - Email Templates - - - core - admin_system - sy_devexport - Export Installer XML - - - core - admin_system - sy_go - Go + language_out_of_date_entries + Out of Date Entries core @@ -13254,14 +13200,50 @@ core admin_system - language_out_of_date_entries - Out of Date Entries + sy_go + Go core admin_system - language_default - Default Text + sy_devexport + Export Installer XML + + + core + admin_system + sy_devemail + Email Templates + + + core + admin_system + sy_devtemplate + Template HTML + + + core + admin_system + sy_devcontent + Content Templates + + + core + admin_system + sy_devskin + Skin Set + + + core + admin_system + sy_devfile + File Types + + + core + admin_system + sy_devpages + Pages core @@ -13269,6 +13251,12 @@ language_customized_entries Customized Entries + + core + admin_system + language_word_revert + Language customization has been reverted + core admin_system @@ -13284,38 +13272,20 @@ core admin_system - language_word_revert - Language customization has been reverted + language_default + Default Text core admin_system - language_pack_updated - Language pack information updated + language_form_new_button + Add this language core admin_system - language_locale_missing - Language locale can not be blank - - - core - admin_system - language_title_missing - Language title can not be blank - - - core - admin_system - language_form_default - Default Language? - - - core - admin_system - language_form_locale - Language Locale + language_form_new_info + Language Pack Information


    You can configure basic language pack settings here

    ]]>
    core @@ -13332,14 +13302,32 @@ core admin_system - language_form_new_info - Language Pack Information


    You can configure basic language pack settings here

    ]]>
    + language_form_locale + Language Locale
    core admin_system - language_form_new_button - Add this language + language_form_default + Default Language? + + + core + admin_system + language_title_missing + Language title can not be blank + + + core + admin_system + language_locale_missing + Language locale can not be blank + + + core + admin_system + language_pack_updated + Language pack information updated core @@ -13467,12 +13455,6 @@ indev_lang_export_done All language files exported to application directories - - core - admin_system - sys_indev_export_go - Export - core admin_system @@ -13482,8 +13464,8 @@ core admin_system - sys_select_the_application_languag - Select the application language files to import + sys_indev_export_go + Export core @@ -13494,8 +13476,8 @@ core admin_system - sys_import - Import + sys_select_the_application_languag + Select the application language files to import core @@ -13503,6 +13485,12 @@ sys_developers_language_cache_impo + + core + admin_system + sys_import + Import + core admin_system @@ -13515,12 +13503,6 @@ sys_the_file_must_be_uploaded_into - - core - admin_system - sys_duplicate_entries_will_not_be_ - Duplicate entries will not be overwritten but the default setting and other options will be updated. - core admin_system @@ -13530,8 +13512,8 @@ core admin_system - sys_import_language_xml - Import Language XML + sys_duplicate_entries_will_not_be_ + Duplicate entries will not be overwritten but the default setting and other options will be updated. core @@ -13539,6 +13521,12 @@ sys_upload_xml_language_file_from_ Upload language pack from your computer + + core + admin_system + sys_import_language_xml + Import Language XML + core admin_system @@ -13548,14 +13536,14 @@ core admin_system - tmdebug_on - ON + sys_sql_version + SQL Version core admin_system - sys_sql_version - SQL Version + tmdebug_on + ON core @@ -13620,14 +13608,14 @@ core admin_system - sys_system_overview - System Overview + sys_log + Log core admin_system - sys_log - Log + sys_system_overview + System Overview core @@ -13704,14 +13692,14 @@ core admin_system - sys_mday - MDay + sys_hour + Hour core admin_system - sys_hour - Hour + sys_mday + MDay core @@ -13791,12 +13779,6 @@ sys_task_time_month_day Task Time: Month Day - - core - admin_system - sys_choose_every_day_to_run_each_d - - core admin_system @@ -13806,8 +13788,8 @@ core admin_system - sys_choose_every_hour_to_run_each_ - + sys_choose_every_day_to_run_each_d + core @@ -13815,6 +13797,12 @@ sys_task_time_hours Task Time: Hours + + core + admin_system + sys_choose_every_hour_to_run_each_ + + core admin_system @@ -13830,8 +13818,8 @@ core admin_system - sys_task_php_file_to_run - Task PHP File To Run + sys_time_options + Time Options core @@ -13842,14 +13830,8 @@ core admin_system - sys_time_options - Time Options - - - core - admin_system - sys_task_short_description - Task Short Description + sys_task_php_file_to_run + Task PHP File To Run core @@ -13860,8 +13842,8 @@ core admin_system - sys_hours - hours + sys_task_short_description + Task Short Description core @@ -13872,14 +13854,8 @@ core admin_system - sys_every - Every - - - core - admin_system - sys_minutes - minutes + sys_hours + hours core @@ -13890,8 +13866,14 @@ core admin_system - sys_on_every_hour - On every hour + sys_minutes + minutes + + + core + admin_system + sys_every + Every core @@ -13908,14 +13890,14 @@ core admin_system - sys_friday - Friday + sys_on_every_hour + On every hour core admin_system - sys_saturday - Saturday + sys_on + On core @@ -13926,8 +13908,14 @@ core admin_system - sys_on - On + sys_saturday + Saturday + + + core + admin_system + sys_friday + Friday core @@ -13977,24 +13965,18 @@ sys_delete_logs_for_task Delete logs for task + + core + admin_system + sys_view_logs + View Logs + core admin_system sys_delete_task_manager_logs Delete Task Manager Logs - - core - admin_system - sys_view_task_manager_logs - View Task Manager Logs - - - core - admin_system - sys_view_logs_for_task - View logs for task - core admin_system @@ -14004,8 +13986,8 @@ core admin_system - sys_view_logs - View Logs + sys_view_logs_for_task + View logs for task core @@ -14016,14 +13998,8 @@ core admin_system - sys_log_info - Log Info - - - core - admin_system - sys_date_run - Date Run + sys_view_task_manager_logs + View Task Manager Logs core @@ -14034,8 +14010,20 @@ core admin_system - sys_task_manager_logs - Task Manager Logs + sys_date_run + Date Run + + + core + admin_system + sys_log_info + Log Info + + + core + admin_system + logindetail_get + GET Data (URL Data) core @@ -14046,8 +14034,8 @@ core admin_system - logindetail_get - GET Data (URL Data) + sys_task_manager_logs + Task Manager Logs core @@ -14064,8 +14052,8 @@ core admin_system - logindetail_time - Log in Time + logindetail_username + Username core @@ -14076,8 +14064,8 @@ core admin_system - logindetail_username - Username + logindetail_time + Log in Time core @@ -14112,14 +14100,14 @@ core admin_system - run_task_now - Run task now + rebuild_lang_from_xml + Rebuild From XML... core admin_system - rebuild_lang_from_xml - Rebuild From XML... + run_task_now + Run task now core @@ -14148,14 +14136,14 @@ core admin_system - sym_word_out_of_date_check - Outdated Strings + sym_add_new_language_entry + Add String core admin_system - sym_add_new_language_entry - Add String + sym_word_out_of_date_check + Outdated Strings core @@ -14172,14 +14160,14 @@ core admin_system - sym_import_tasksxml - Import tasks.xml + sym_manage_languages + Manage Languages core admin_system - sym_manage_languages - Manage Languages + sym_import_tasksxml + Import tasks.xml core @@ -14196,14 +14184,14 @@ core admin_system - language_recache_done - Recache complete + language_list_recache + Recache all... core admin_system - language_list_recache - Recache all... + language_recache_done + Recache complete core @@ -14211,12 +14199,6 @@ ext_all_killed Translation Session Removed - - core - admin_system - ext_tbl_submit - Import Selected Files - core admin_system @@ -14226,14 +14208,8 @@ core admin_system - ext_tbl_file - File - - - core - admin_system - ext_tbl_local - Last Local Edit + ext_tbl_submit + Import Selected Files core @@ -14244,8 +14220,20 @@ core admin_system - ext_button_unselect - Unselect All + ext_tbl_local + Last Local Edit + + + core + admin_system + ext_tbl_file + File + + + core + admin_system + ext_button_smodified + Select Modified core @@ -14256,8 +14244,8 @@ core admin_system - ext_button_smodified - Select Modified + ext_button_unselect + Unselect All core @@ -14277,12 +14265,6 @@ ext_top_title External File Translation - - core - admin_system - ext_title_for - External Translation For - core admin_system @@ -14292,8 +14274,8 @@ core admin_system - ext_no_selected_files - You did not select any files to import! + ext_title_for + External Translation For core @@ -14301,6 +14283,12 @@ ext_file_written Imported %s (%s added entries, %s updated) + + core + admin_system + ext_no_selected_files + You did not select any files to import! + core admin_system @@ -14316,14 +14304,14 @@ core admin_system - ext_no_translate_dir - root forum directory (the same directory that contains your 'initdata.php' file and 'admin' folder). Please make sure PHP has write permissions into this directory. CHMOD 0777 if in doubt.]]> + perm_check_results + Permissions Check Results core admin_system - perm_check_results - Permissions Check Results + ext_no_translate_dir + root forum directory (the same directory that contains your 'initdata.php' file and 'admin' folder). Please make sure PHP has write permissions into this directory. CHMOD 0777 if in doubt.]]> core @@ -14340,14 +14328,8 @@ core admin_system - langpackaddapp - Application - - - core - admin_system - nolangpacksgroup - There are no word packs for this application + ipaddyprefix + IP: core @@ -14358,14 +14340,20 @@ core admin_system - selectimeunitsabove - Select time units above + nolangpacksgroup + There are no word packs for this application core admin_system - ipaddyprefix - IP: + langpackaddapp + Application + + + core + admin_system + selectimeunitsabove + Select time units above core @@ -14412,14 +14400,8 @@ core admin_system - cp_posts - Posts - - - core - admin_system - cp_view - View + cp_manage + Manage core @@ -14433,30 +14415,24 @@ cp_awaitingmoderation Awaiting Moderation + + core + admin_system + cp_posts + Posts + + + core + admin_system + cp_view + View + core admin_system cp_onlinenow_info (Includes Members and Guests) - - core - admin_system - cp_manage - Manage - - - core - admin_system - cp_lockedaccounts - Locked Accounts - - - core - admin_system - cp_coppaaccounts - COPPA Accounts - core admin_system @@ -14469,6 +14445,18 @@ cp_awaitingvalidation Awaiting Validation + + core + admin_system + cp_lockedaccounts + Locked Accounts + + + core + admin_system + cp_coppaaccounts + COPPA Accounts + core admin_system @@ -14484,14 +14472,14 @@ core admin_system - sys_taskislocked - The task is currently locked + cp_systemstats + System Statistics core admin_system - cp_systemstats - System Statistics + sys_taskislocked + The task is currently locked core @@ -14514,14 +14502,14 @@ core admin_system - where_touser_lang_choice - Switch to... + where_touser_lang_choice_desc + Select the language you want to switch TO core admin_system - where_touser_lang_choice_desc - Select the language you want to switch TO + where_touser_lang_choice + Switch to... core @@ -14544,14 +14532,14 @@ core admin_system - indev_lang_import - Imported %s (%s added, %s updated)... + no_reg_x_days + No registrations in the last %s days core admin_system - no_reg_x_days - No registrations in the last %s days + indev_lang_import + Imported %s (%s added, %s updated)... core @@ -14568,14 +14556,14 @@ core admin_system - q_fail - Query failed + q_ok + Query ran sucessfully core admin_system - q_ok - Query ran sucessfully + q_fail + Query failed core @@ -14610,14 +14598,14 @@ core admin_system - task_cronmode_desc_10 - If you want all tasks to run by cron rather than just a number of individual tasks, you can set up one cron to run every minute which will run tasks as they are needed. + task_cronmode_desc_9 + To set up a cron for all tasks core admin_system - task_cronmode_desc_9 - To set up a cron for all tasks + task_cronmode_desc_10 + If you want all tasks to run by cron rather than just a number of individual tasks, you can set up one cron to run every minute which will run tasks as they are needed. core @@ -14667,12 +14655,6 @@ task_cronmode_desc_1 - - core - admin_system - task_cronmode_disable - Disable cron Mode - core admin_system @@ -14682,8 +14664,8 @@ core admin_system - task_interface_warn - The file interface/task.php is not chmod to 0777. This is necessary in order for running tasks by cron to work. + task_cronmode_disable + Disable cron Mode core @@ -14691,6 +14673,12 @@ task_cron_mode_toggled_0 Cron mode disabled + + core + admin_system + task_interface_warn + The file interface/task.php is not chmod to 0777. This is necessary in order for running tasks by cron to work. + core admin_system @@ -14712,14 +14700,14 @@ core admin_system - email_tester_ok - Email sent successfully + email_tester_go + Send Email core admin_system - email_tester_go - Send Email + email_tester_ok + Email sent successfully core @@ -14736,14 +14724,14 @@ core admin_system - email_tester_subject_default - IP.Board Email Test + email_tester_subject + Subject core admin_system - email_tester_subject - Subject + email_tester_subject_default + IP.Board Email Test core @@ -14775,6 +14763,18 @@ email_tester Email Tester + + core + admin_system + s_rename_bad + The admin directory has not been renamed.]]> + + + core + admin_system + s_completeform + You must complete the form. Please try again. + core admin_system @@ -15402,14 +15402,8 @@ core admin_templates - sk_resetto - Reset To: - - - core - admin_templates - sk_usedefault - Use Default + sk_members + Members core @@ -15420,14 +15414,8 @@ core admin_templates - sk_members - Members - - - core - admin_templates - sk_resetskinusage - Reset Skin Set Usage + sk_usedefault + Use Default core @@ -15435,6 +15423,12 @@ sk_allskinsets All Skin Sets + + core + admin_templates + sk_resetskinusage + Reset Skin Set Usage + core admin_templates @@ -15474,8 +15468,8 @@ core admin_templates - sk_useimgdir - Use image directory? + sk_useemoset + Use emoticons set? core @@ -15483,12 +15477,6 @@ sk_useimgdir_info The image directory will be used in place of {style_images_url} in CSS and replacements. - - core - admin_templates - sk_useemoset - Use emoticons set? - core admin_templates @@ -15498,8 +15486,8 @@ core admin_templates - sk_cachecss_info - Warning: Changing this value will re-cache any cached stylesheet information. Please make sure that you have synchronized any cache files with the database.]]> + sk_useimgdir + Use image directory? core @@ -15507,6 +15495,12 @@ sk_cachecss Cache CSS to text files? + + core + admin_templates + sk_cachecss_info + Warning: Changing this value will re-cache any cached stylesheet information. Please make sure that you have synchronized any cache files with the database.]]> + core admin_templates @@ -15522,14 +15516,14 @@ core admin_templates - sk_optional - Optional + sk_hideskin + Hide this skin from the drop down list? core admin_templates - sk_hideskin - Hide this skin from the drop down list? + sk_optional + Optional core @@ -15555,36 +15549,18 @@ sk_defaultalready Skin set as default already. + + core + admin_templates + sk_setasdefault + Set as default skin? + core admin_templates sk_setasdefault_info Make this the default skin? - - core - admin_templates - sk_setoutputformat - Set Output Format - - - core - admin_templates - sk_setperms - Set Permissions - - - core - admin_templates - sk_selectallgroups - Select ALL current and future groups or... - - - core - admin_templates - sk_selectwhichgroups - Select which groups have access to this skin. - core admin_templates @@ -15594,8 +15570,26 @@ core admin_templates - sk_setasdefault - Set as default skin? + sk_selectwhichgroups + Select which groups have access to this skin. + + + core + admin_templates + sk_selectallgroups + Select ALL current and future groups or... + + + core + admin_templates + sk_setperms + Set Permissions + + + core + admin_templates + sk_setoutputformat + Set Output Format core @@ -15648,14 +15642,14 @@ core admin_templates - sk_editmapping - Edit Mapping + sk_removemapping + REMOVE Mapping core admin_templates - sk_removemapping - REMOVE Mapping + sk_editmapping + Edit Mapping core @@ -15672,8 +15666,8 @@ core admin_templates - sk_url_info - Enter the string to match in the query string + sk_addnewurl + Add New URL core @@ -15684,8 +15678,8 @@ core admin_templates - sk_addnewurl - Add New URL + sk_url_info + Enter the string to match in the query string core @@ -15720,14 +15714,14 @@ core admin_templates - sk_urlmapfor - URL Map For + sk_generalsettings + General Settings core admin_templates - sk_generalsettings - General Settings + sk_urlmapfor + URL Map For core @@ -15744,14 +15738,14 @@ core admin_templates - sk_skipnewmiss_info - If you are comparing an old ipb_templates.xml file from an older IPB release, then you may wish to disable this. If you are comparing an XML file from a customized skin set, you should enable this. + sk_skipnewmiss + Skip all new/missing template bits? core admin_templates - sk_skipnewmiss - Skip all new/missing template bits? + sk_skipnewmiss_info + If you are comparing an old ipb_templates.xml file from an older IPB release, then you may wish to disable this. If you are comparing an XML file from a customized skin set, you should enable this. core @@ -15762,8 +15756,8 @@ core admin_templates - sk_createnewskindiff - Create New Skin Differences Report + sk_createhtmlexport + Create HTML Export core @@ -15774,8 +15768,8 @@ core admin_templates - sk_createhtmlexport - Create HTML Export + sk_createnewskindiff + Create New Skin Differences Report core @@ -15789,6 +15783,12 @@ sk_viewdiffresults View Merge Results + + core + admin_templates + sk_difftitle + Title + core admin_templates @@ -15801,12 +15801,6 @@ sk_skindiffreports Template Merge Reports - - core - admin_templates - sk_difftitle - Title - core admin_templates @@ -15822,14 +15816,14 @@ core admin_templates - sk_processing - Processing + sk_bitsof + template bits of %s processed core admin_templates - sk_bitsof - template bits of %s processed + sk_processing + Processing core @@ -15864,14 +15858,14 @@ core admin_templates - sk_howmanytemps - %s new template bits, %s changed template bits + sk_new + New core admin_templates - sk_new - New + sk_howmanytemps + %s new template bits, %s changed template bits core @@ -15882,8 +15876,8 @@ core admin_templates - sk_title_export - export + sk_replacewith_info + (Optional: Omitting will perform just a search) core @@ -15894,8 +15888,8 @@ core admin_templates - sk_replacewith_info - (Optional: Omitting will perform just a search) + sk_title_export + export core @@ -15903,12 +15897,6 @@ sk_replacewith Replace With - - core - admin_templates - sk_searchininfo - Search in selected set and all parents including the master set. - core admin_templates @@ -15918,8 +15906,8 @@ core admin_templates - sk_searchandreplace - Search and Replace + sk_searchininfo + Search in selected set and all parents including the master set. core @@ -15930,8 +15918,8 @@ core admin_templates - sk_run - Run + sk_searchandreplace + Search and Replace core @@ -15939,6 +15927,12 @@ sk_searchreplaceinfo + + core + admin_templates + sk_run + Run + core admin_templates @@ -16008,14 +16002,8 @@ core admin_templates - sk_addedhtml - Added HTML - - - core - admin_templates - sk_easylogochanger - Easy Logo Changer + sk_close + Close core @@ -16026,8 +16014,14 @@ core admin_templates - sk_close - Close + sk_addedhtml + Added HTML + + + core + admin_templates + sk_easylogochanger + Easy Logo Changer core @@ -16080,14 +16074,14 @@ core admin_templates - ua_nav2 - Manage User Agents in + ua_nav1 + core admin_templates - ua_nav1 - + ua_nav2 + Manage User Agents in core @@ -16110,20 +16104,14 @@ core admin_templates - um_savechanges - Save Changes + um_edited + Skin Remap Edited core admin_templates - um_editremap - Edit Remapping - - - core - admin_templates - um_noid - No ID was passed. Please try again. + um_contains + Contains core @@ -16140,20 +16128,20 @@ core admin_templates - um_contains - Contains + um_noid + No ID was passed. Please try again. core admin_templates - um_edited - Skin Remap Edited + um_editremap + Edit Remapping core admin_templates - um_added - Skin Remap Added + um_savechanges + Save Changes core @@ -16161,6 +16149,12 @@ um_entireform You must complete the entire form. Please try again. + + core + admin_templates + um_added + Skin Remap Added + core admin_templates @@ -16215,12 +16209,6 @@ to_membersupdated members updated - - core - admin_templates - to_masterskinrebuilt - Master rebuilt for set ID: - core admin_templates @@ -16233,6 +16221,12 @@ to_resultxmlimp Result of template XML importing... + + core + admin_templates + to_masterskinrebuilt + Master rebuilt for set ID: + core admin_templates @@ -16254,14 +16248,14 @@ core admin_templates - to_alldone - All Done! + to_xmltempsavedout + XML Templates Saved Out core admin_templates - to_xmltempsavedout - XML Templates Saved Out + to_alldone + All Done! core @@ -16296,8 +16290,8 @@ core admin_templates - ss_manageskinsets - Manage Skin Sets + te_nav2 + Manage Templates in core @@ -16308,8 +16302,8 @@ core admin_templates - te_nav2 - Manage Templates in + ss_manageskinsets + Manage Skin Sets core @@ -16332,14 +16326,14 @@ core admin_templates - ss_skinsetsaved - Skin Set Saved + ss_unavailable + Unavailable, IP.Board cannot write into your 'public/style_css' folder]]> core admin_templates - ss_unavailable - Unavailable, IP.Board cannot write into your 'public/style_css' folder]]> + ss_skinsetsaved + Skin Set Saved core @@ -16371,12 +16365,6 @@ ss_specifyname You must specify a set name. - - core - admin_templates - ss_setremoved - Set Removed - core admin_templates @@ -16398,14 +16386,8 @@ core admin_templates - ss_masterwritten - Master skin has been written - - - core - admin_templates - sd_entertitle - You must enter a title + ss_setremoved + Set Removed core @@ -16413,12 +16395,24 @@ sd_nocontent There was no content in the file to process + + core + admin_templates + ss_masterwritten + Master skin has been written + core admin_templates sd_title Comparison from skin set: + + core + admin_templates + sd_entertitle + You must enter a title + core admin_templates @@ -16434,14 +16428,14 @@ core admin_templates - sd_nosession - Could not get the current template compare session. + sr_nomatches + No Matches Found! core admin_templates - sr_nomatches - No Matches Found! + sd_nosession + Could not get the current template compare session. core @@ -16452,8 +16446,8 @@ core admin_templates - ie_ex_skin_p - Export customizations in this skin and any parent skins + re_nav2 + Manage Replacements in core @@ -16464,8 +16458,8 @@ core admin_templates - re_nav2 - Manage Replacements in + ie_ex_skin_p + Export customizations in this skin and any parent skins core @@ -16476,14 +16470,14 @@ core admin_templates - ie_none - - None - + ie_set_upgraded + %s template(s) edited, %s replacement(s) edited, %s CSS file(s) edited.]]> core admin_templates - ie_set_upgraded - %s template(s) edited, %s replacement(s) edited, %s CSS file(s) edited.]]> + ie_none + - None - core @@ -16524,14 +16518,14 @@ core admin_templates - ss_revertcomplete - Revert Complete + cs_nav1 + core admin_templates - cs_nav1 - + ss_revertcomplete + Revert Complete core @@ -16560,14 +16554,14 @@ core admin_templates - sk_revert_title - Reverting Customizations for: + sk_revert_desc + Please select which customizations to remove. The default template, CSS, and replacement items will be restored once the customizations have been removed. There is no undo. core admin_templates - sk_revert_desc - Please select which customizations to remove. The default template, CSS, and replacement items will be restored once the customizations have been removed. There is no undo. + sk_revert_title + Reverting Customizations for: core @@ -16812,8 +16806,8 @@ core admin_templates - rep_ctn_f_tpl - Replacement Content + add_repl_f_tpl + Add Replacement core @@ -16824,14 +16818,14 @@ core admin_templates - ajax_missing_data - Missing Data + rep_ctn_f_tpl + Replacement Content core admin_templates - add_repl_f_tpl - Add Replacement + ajax_missing_data + Missing Data core @@ -16890,14 +16884,14 @@ core admin_templates - basicnothingtowritepre - Error: No content to write for + basiccouldnotwrite + Error: Could not write core admin_templates - basiccouldnotwrite - Error: Could not write + basicnothingtowritepre + Error: No content to write for core @@ -16926,14 +16920,14 @@ core admin_templates - couldnotopenfile - Could not open %s for reading, skipping file... + basicimportedpre + Imported core admin_templates - basicimportedpre - Imported + couldnotopenfile + Could not open %s for reading, skipping file... core @@ -16944,8 +16938,8 @@ core admin_templates - templatescreatedmsg - Templates for %s - %s created + css_isnotwritable + is not writeable core @@ -16956,8 +16950,8 @@ core admin_templates - css_isnotwritable - is not writeable + templatescreatedmsg + Templates for %s - %s created core @@ -16974,8 +16968,8 @@ core admin_templates - nocsstoexport - No CSS to export for + nothingtoexportforapp + Nothing to export for %s: No groups set in information.xml core @@ -16986,26 +16980,8 @@ core admin_templates - nothingtoexportforapp - Nothing to export for %s: No groups set in information.xml - - - core - admin_templates - xmldirnotwrite - /xml/ is not writeable - - - core - admin_templates - importnothingtoimport - : Nothing to import - - - core - admin_templates - importaddupdate - %s: %s updated, %s added + nocsstoexport + No CSS to export for core @@ -17016,14 +16992,20 @@ core admin_templates - noinfoxml - The info.xml file is empty or was not included + importaddupdate + %s: %s updated, %s added core admin_templates - imagedirnotexists - Image directory %s does not exist + importnothingtoimport + : Nothing to import + + + core + admin_templates + xmldirnotwrite + /xml/ is not writeable core @@ -17034,8 +17016,8 @@ core admin_templates - imagedircannotcreate - Could not create public/style_images/%s. Please check file permissions and try again. + imagedirnotexists + Image directory %s does not exist core @@ -17046,8 +17028,14 @@ core admin_templates - emptyxmlarchivei - The XML Archive is empty + noinfoxml + The info.xml file is empty or was not included + + + core + admin_templates + imagedircannotcreate + Could not create public/style_images/%s. Please check file permissions and try again. core @@ -17055,6 +17043,12 @@ imagediralreadyexists The directory public/style_images/%s already exists + + core + admin_templates + emptyxmlarchivei + The XML Archive is empty + core admin_templates @@ -17085,12 +17079,6 @@ templatesrecached_for PHP Templates Recached for %s - - core - admin_templates - aborted_suffix - ABORTED - core admin_templates @@ -17100,8 +17088,14 @@ core admin_templates - cssrebuilt_for - CSS Rebuilt for %s + aborted_suffix + ABORTED + + + core + admin_templates + reprebuilt_for + Replacements Rebuilt for %s core @@ -17112,8 +17106,8 @@ core admin_templates - reprebuilt_for - Replacements Rebuilt for %s + cssrebuilt_for + CSS Rebuilt for %s core @@ -17148,14 +17142,14 @@ core admin_templates - ajax_cssdlll - Checking for CSS file differences + ajax_cssdprocess + %s of %s CSS files processed... core admin_templates - ajax_cssdprocess - %s of %s CSS files processed... + ajax_cssdlll + Checking for CSS file differences core @@ -17172,8 +17166,8 @@ core admin_templates - ajax_noconflicts - no conflicts + ajax_invalidsession + Could not locate a valid differences session core @@ -17184,8 +17178,8 @@ core admin_templates - ajax_invalidsession - Could not locate a valid differences session + ajax_noconflicts + no conflicts core @@ -17232,14 +17226,8 @@ core admin_templates - resolveallcommit - Save Changes To Skin - - - core - admin_templates - resolvealluncommit - Revert Changes + minutepatience + Each step can take a few minutes, please be patient core @@ -17250,8 +17238,14 @@ core admin_templates - minutepatience - Each step can take a few minutes, please be patient + resolvealluncommit + Revert Changes + + + core + admin_templates + resolveallcommit + Save Changes To Skin core @@ -17298,14 +17292,14 @@ core admin_templates - menu__vieworigdef - View original default item + menu__viewcustomized + View customized item core admin_templates - menu__viewcustomized - View customized item + menu__vieworigdef + View original default item core @@ -17316,14 +17310,14 @@ core admin_templates - mergeconflicts - merge conflicts + noconflicts + no conflicts core admin_templates - noconflicts - no conflicts + mergeconflicts + merge conflicts core @@ -17334,8 +17328,8 @@ core admin_templates - mergereportnoconflict - No conflicts + mergereportdiffs + %s differences core @@ -17346,8 +17340,8 @@ core admin_templates - mergereportdiffs - %s differences + mergereportnoconflict + No conflicts core @@ -17355,12 +17349,6 @@ mergereportconflicts %s conflicts - - core - admin_templates - mergereportdifferences - %s differences - core admin_templates @@ -17370,8 +17358,8 @@ core admin_templates - resolve__custom - Resolve: Custom Wins + mergereportdifferences + %s differences core @@ -17379,6 +17367,12 @@ resolve__new Resolve: New Wins + + core + admin_templates + resolve__custom + Resolve: Custom Wins + core admin_templates @@ -17442,14 +17436,14 @@ core admin_templates - importmastertempl - + exportmastercss + core admin_templates - exportmastercss - + importmastertempl + core @@ -17487,12 +17481,6 @@ ie_importfail_old_version IP.Board %s. You are currently running IP.Board %s.
    You can continue but the skin may have errors or missing functionality.

    Continue and import skin]]>
    - - core - admin_templates - in - in - core admin_templates @@ -17508,20 +17496,8 @@ core admin_templates - skin_gen_new_vis_skin_title - New Visual Editor Skin - - - core - admin_templates - skin_gen_next - Next - - - core - admin_templates - skin_gen_manual_title - Manual Mode + in + in core @@ -17529,6 +17505,18 @@ skin_gen_manual_desc This gives you full control over the HTML and CSS code which is all fully editable for advanced layout changes. + + core + admin_templates + skin_gen_next + Next + + + core + admin_templates + skin_gen_new_vis_skin_title + New Visual Editor Skin + core admin_templates @@ -17538,8 +17526,14 @@ core admin_templates - skin_gen_new_visual_desc - The visual editor allows you to change color and board width using a visual editor with instant preview. Please be aware that the visual editor should be considered a beta feature, and that additional improvements and features are expected yet. + skin_gen_manual_title + Manual Mode + + + core + admin_templates + skin_gen_new_title + Create New Skin core @@ -17550,8 +17544,8 @@ core admin_templates - skin_gen_new_title - Create New Skin + skin_gen_new_visual_desc + The visual editor allows you to change color and board width using a visual editor with instant preview. Please be aware that the visual editor should be considered a beta feature, and that additional improvements and features are expected yet. core @@ -17586,8 +17580,8 @@ core admin_templates - skin_gen_convert_desc - This action cannot be undone.]]> + skin_gen_convert_done + The skin has been converted core @@ -17598,8 +17592,8 @@ core admin_templates - skin_gen_convert_done - The skin has been converted + skin_gen_convert_desc + This action cannot be undone.]]> core @@ -17628,14 +17622,8 @@ core admin_templates - sk_ee_webdav_password - Password - - - core - admin_templates - sk_ee_webdav_ur_password - (Your Admin CP Password) + sk_ee_webdav_path + Path core @@ -17646,8 +17634,14 @@ core admin_templates - sk_ee_webdav_path - Path + sk_ee_webdav_ur_password + (Your Admin CP Password) + + + core + admin_templates + sk_ee_webdav_password + Password core @@ -17673,6 +17667,12 @@ vse_disabled Visual Editor Disabled + + core + admin_templates + sk_ee_webdav_fgci_title + FCGI Detected + core admin_templates @@ -17688,8 +17688,8 @@ core admin_templates - sk_ee_webdav_fgci_title - FCGI Detected + skin_hidden + Hidden core @@ -17697,12 +17697,6 @@ skin_default Default - - core - admin_templates - skin_hidden - Hidden - core admin_templates @@ -17766,14 +17760,14 @@ core admin_templates - st_ipsDriverError_desc - + st_ipsDriverError + Driver Error core admin_templates - st_ipsDriverError - Driver Error + st_ipsDriverError_desc + core @@ -17793,6 +17787,12 @@ vse_close_linktext Close Editor + + core + admin_templates + close_vse_title + Close Visual Editor + core admin_templates @@ -17808,8 +17808,8 @@ core admin_templates - close_vse_title - Close Visual Editor + vse_cancel_vse + Cancel Visual Editor core @@ -17820,8 +17820,8 @@ core admin_templates - vse_cancel_vse - Cancel Visual Editor + sk_resetto + Reset To: core @@ -18624,14 +18624,14 @@ core admin_tools - a_whatuser - Could not determine the user to remove. + a_user404 + The API user could not be found. core admin_tools - a_user404 - The API user could not be found. + a_whatuser + Could not determine the user to remove. core @@ -18645,12 +18645,6 @@ a_title XML-RPC API Logs - - core - admin_tools - xmlrpc_status - XML-RPC Status - core admin_tools @@ -18660,8 +18654,8 @@ core admin_tools - login_exists - EXISTS + xmlrpc_status + XML-RPC Status core @@ -18669,6 +18663,12 @@ login_notexists MISSING + + core + admin_tools + login_exists + EXISTS + core admin_tools @@ -18702,8 +18702,8 @@ core admin_tools - l_enabled - enabled + l_uninstalled + Log In method was successfully uninstalled core @@ -18714,8 +18714,8 @@ core admin_tools - l_uninstalled - Log In method was successfully uninstalled + l_enabled + enabled core @@ -18756,14 +18756,14 @@ core admin_tools - l_email - Email Address + l_username_or_email + Username or Email Address core admin_tools - l_username_or_email - Username or Email Address + l_email + Email Address core @@ -18774,14 +18774,14 @@ core admin_tools - l_edited - Log In Method Edited + l_registernew + Register New Log In Method core admin_tools - l_registernew - Register New Log In Method + l_edited + Log In Method Edited core @@ -18822,14 +18822,14 @@ core admin_tools - re_msgcount_info - This will recount members total messages and folder counts + l_404 + We could not find the login method you were attempting to configure, check, enable, uninstall, or edit. Please try again. core admin_tools - l_404 - We could not find the login method you were attempting to configure, check, enable, uninstall, or edit. Please try again. + re_msgcount_info + This will recount members total messages and folder counts core @@ -18852,8 +18852,8 @@ core admin_tools - remenu_announce - Announcements + remenu_aboutme + About Me Content core @@ -18864,8 +18864,8 @@ core admin_tools - remenu_aboutme - About Me Content + remenu_announce + Announcements core @@ -18876,14 +18876,14 @@ core admin_tools - remenu_posts - Post Content + remenu_pms + Private Messages core admin_tools - remenu_pms - Private Messages + remenu_posts + Post Content core @@ -18894,8 +18894,8 @@ core admin_tools - re_orph - Remove Orphaned Attachments + re_uphoto + Remove Orphaned Uploaded Photos core @@ -18906,14 +18906,8 @@ core admin_tools - re_uphoto - Remove Orphaned Uploaded Photos - - - core - admin_tools - re_data - Rebuild Attachment Data + re_orph + Remove Orphaned Attachments core @@ -18924,8 +18918,8 @@ core admin_tools - re_thumb - Rebuild Attachment Thumbnails + re_data + Rebuild Attachment Data core @@ -18936,8 +18930,8 @@ core admin_tools - re_pphoto - Rebuild Profile Photo Thumbnails + re_thumb + Rebuild Attachment Thumbnails core @@ -18948,8 +18942,8 @@ core admin_tools - re_count_info - THERE IS NO UNDO!]]> + re_pphoto + Rebuild Profile Photo Thumbnails core @@ -18960,8 +18954,8 @@ core admin_tools - re_seouser_info - This will reset the SEO display name for all members + re_count_info + THERE IS NO UNDO!]]> core @@ -18978,14 +18972,8 @@ core admin_tools - re_rebuild_info - This will rebuild the submitted content including BBCode, custom bbcode, HTML (where allowed) and emoticons. This is only necessary upon upgrading to IP.Board 3.0, and does not need to be run more than once. - - - core - admin_tools - re_rebuildbutton - Rebuild Content + re_seouser_info + This will reset the SEO display name for all members core @@ -18996,8 +18984,14 @@ core admin_tools - re_topics_info - This will rebuild tag caches, recount replies, attachment count and the topic starter and last poster for all your topics. + re_rebuildbutton + Rebuild Content + + + core + admin_tools + re_rebuild_info + This will rebuild the submitted content including BBCode, custom bbcode, HTML (where allowed) and emoticons. This is only necessary upon upgrading to IP.Board 3.0, and does not need to be run more than once. core @@ -19005,6 +18999,12 @@ re_rebuild + + core + admin_tools + re_topics_info + This will rebuild tag caches, recount replies, attachment count and the topic starter and last poster for all your topics. + core admin_tools @@ -19017,6 +19017,12 @@ re_forums_info This will recount replies, views, and the topic starter and last poster for all your forums. + + core + admin_tools + re_s_most + + core admin_tools @@ -19026,14 +19032,8 @@ core admin_tools - re_s_last - Reset last registered member - - - core - admin_tools - re_s_most - + re_s_total + Recount total topics and posts core @@ -19044,8 +19044,8 @@ core admin_tools - re_percycle - Per Cycle + re_s_last + Reset last registered member core @@ -19056,8 +19056,8 @@ core admin_tools - re_s_total - Recount total topics and posts + re_percycle + Per Cycle core @@ -19098,14 +19098,14 @@ core admin_tools - re_polls - Convert 2.0.x Polls to 2.1.x Format + re_polls_info + core admin_tools - re_polls_info - + re_polls + Convert 2.0.x Polls to 2.1.x Format core @@ -19140,14 +19140,14 @@ core admin_tools - re_20to21_info - These tools will clean up and rebuild content from an upgrade from the IP.Board 2.0.x series + re_21to22_info + These tools will clean up and rebuild content from an upgrade from the IP.Board 2.1.x series core admin_tools - re_21to22_info - These tools will clean up and rebuild content from an upgrade from the IP.Board 2.1.x series + re_20to21_info + These tools will clean up and rebuild content from an upgrade from the IP.Board 2.0.x series core @@ -19218,14 +19218,14 @@ core admin_tools - re_320photos - Convert 3.1 avatars/photos to 3.2 photos + re_title + core admin_tools - re_title - + re_320photos + Convert 3.1 avatars/photos to 3.2 photos core @@ -19239,12 +19239,6 @@ re_noresizefound Could not find file to resize: - - core - admin_tools - re_resized - Resized: - core admin_tools @@ -19254,8 +19248,8 @@ core admin_tools - re_thisgoeshere - Up to %s processed so far, continuing...]]> + re_resized + Resized: core @@ -19263,24 +19257,18 @@ re_rebuildcomp Rebuild completed]]> + + core + admin_tools + re_thisgoeshere + Up to %s processed so far, continuing...]]> + core admin_tools re_attachedok Attached file OK: - - core - admin_tools - re_removedorph - Removed orphan: - - - core - admin_tools - re_statscenter - Recount Statistics Section - core admin_tools @@ -19290,8 +19278,14 @@ core admin_tools - re_nothing - Nothing to recount! + re_statscenter + Recount Statistics Section + + + core + admin_tools + re_removedorph + Removed orphan: core @@ -19302,8 +19296,8 @@ core admin_tools - re_calconverted - Calendar events converted]]> + re_nothing + Nothing to recount! core @@ -19314,8 +19308,8 @@ core admin_tools - re_calstartto - Calendar events: %s to %s completed...]]> + re_calconverted + Calendar events converted]]> core @@ -19326,14 +19320,14 @@ core admin_tools - re_calremoved - You cannot run this tool as the old calendar_events table has been removed. + re_calstartto + Calendar events: %s to %s completed...]]> core admin_tools - re_duplicatetitle - %s]]> + re_deletingid + Deleting: %s ID %s core @@ -19344,8 +19338,14 @@ core admin_tools - re_deletingid - Deleting: %s ID %s + re_duplicatetitle + %s]]> + + + core + admin_tools + re_calremoved + You cannot run this tool as the old calendar_events table has been removed. core @@ -19362,8 +19362,8 @@ core admin_tools - re_bansimport - %s IP address(es) imported, %s email address(es) imported, %s name(s) imported. + h_remove + Remove core @@ -19374,8 +19374,8 @@ core admin_tools - h_remove - Remove + re_bansimport + %s IP address(es) imported, %s email address(es) imported, %s name(s) imported. core @@ -19386,14 +19386,14 @@ core admin_tools - h_ftitle - Title + h_current + Current Help Files core admin_tools - h_current - Current Help Files + h_ftitle + Title core @@ -19422,8 +19422,20 @@ core admin_tools - h_title - Help File Management + h_filetitle + Help File Title + + + core + admin_tools + h_exported + Help Files Exported as XML + + + core + admin_tools + h_import_added + App: %s - %s added, %s updated help files inserted core @@ -19443,24 +19455,6 @@ h_imported XML Files Imported - - core - admin_tools - h_import_added - App: %s - %s added, %s updated help files inserted - - - core - admin_tools - h_exported - Help Files Exported as XML - - - core - admin_tools - h_filetitle - Help File Title - core admin_tools @@ -19473,30 +19467,18 @@ h_addbutton Add this Help File + + core + admin_tools + h_title + Help File Management + core admin_tools h_404 We could not find that help file in the database. Please try again. - - core - admin_tools - h_edited - Edited help files - - - core - admin_tools - h_added - Added a help file - - - core - admin_tools - h_entertitle - You must enter a title. Please try again. - core admin_tools @@ -19506,14 +19488,26 @@ core admin_tools - h_noid - You must pass a valid ID. Please try again. + h_entertitle + You must enter a title. Please try again. core admin_tools - t_l_configdetails - Configure Details... + h_added + Added a help file + + + core + admin_tools + h_edited + Edited help files + + + core + admin_tools + h_noid + You must pass a valid ID. Please try again. core @@ -19545,12 +19539,6 @@ ua_rebuild_master Rebuild Default User Agents - - core - admin_tools - t_l_disable - Disable - core admin_tools @@ -19560,8 +19548,14 @@ core admin_tools - t_l_nomethods - There are no %s login methods available + t_l_disable + Disable + + + core + admin_tools + t_l_configdetails + Configure Details... core @@ -19569,6 +19563,12 @@ t_l_html3_info + + core + admin_tools + t_l_nomethods + There are no %s login methods available + core admin_tools @@ -19578,14 +19578,14 @@ core admin_tools - t_l_html2_info - Enter the HTML to add or replace the ACP log in form. + t_l_html2 + ACP Log In Form HTML]]> core admin_tools - t_l_html2 - ACP Log In Form HTML]]> + t_l_html2_info + Enter the HTML to add or replace the ACP log in form. core @@ -19611,12 +19611,6 @@ t_configdetails Configuration Details for - - core - admin_tools - t_uacapture - Regex Capture Version Number? - core admin_tools @@ -19629,6 +19623,12 @@ t_uaregex Regex: + + core + admin_tools + t_uacapture + Regex Capture Version Number? + core admin_tools @@ -19647,12 +19647,6 @@ t_uasearchengine Search Engine - - core - admin_tools - t_uabrowser - Web Browser - core admin_tools @@ -19662,8 +19656,8 @@ core admin_tools - t_uakey_desc - (Alphanumerics and underscore only; Example: firefox) + t_uabrowser + Web Browser core @@ -19674,14 +19668,14 @@ core admin_tools - t_uaname_desc - (Example: Firefox) + t_uakey_desc + (Alphanumerics and underscore only; Example: firefox) core admin_tools - t_ua_editing - Editing: + t_uaname_desc + (Example: Firefox) core @@ -19695,6 +19689,12 @@ t_uaposition Position: + + core + admin_tools + t_ua_editing + Editing: + core admin_tools @@ -19740,14 +19740,14 @@ core admin_tools - t_ua_editg - Edit Group... + t_ua_groups + User Agent Groups core admin_tools - t_ua_groups - User Agent Groups + t_ua_editg + Edit Group... core @@ -19758,14 +19758,14 @@ core admin_tools - t_uaclose - Close + t_uamanagegroup + Manage User Agent Groups core admin_tools - t_uamanagegroup - Manage User Agent Groups + t_uaclose + Close core @@ -19779,12 +19779,6 @@ t_ua_info Leave it blank to match all versions of this user-agent.]]> - - core - admin_tools - t_uaconfigure - Configure - core admin_tools @@ -19794,8 +19788,8 @@ core admin_tools - t_uaversions - Versions + t_uaconfigure + Configure core @@ -19806,8 +19800,8 @@ core admin_tools - t_uaedit - Edit + t_uaversions + Versions core @@ -19818,8 +19812,8 @@ core admin_tools - t_uagroups - + t_uaedit + Edit core @@ -19827,6 +19821,12 @@ t_uaallavail All Available Agents (Click to add to group) + + core + admin_tools + t_uagroups + + core admin_tools @@ -19935,6 +19935,36 @@ tol_update_settings Update Settings + + core + admin_tools + tol_hide_from_main_settings_list + Hide from main settings list? + + + core + admin_tools + tol_used_to_pull_this_from_the_db_ + Used to pull this from the DB without relying on an ID + + + core + admin_tools + tol_settings_groups + Settings Groups + + + core + admin_tools + tol_setting_group_title + Group Title + + + core + admin_tools + tol_setting_group_application + Group Application + core admin_tools @@ -19956,32 +19986,8 @@ core admin_tools - tol_used_to_pull_this_from_the_db_ - Used to pull this from the DB without relying on an ID - - - core - admin_tools - tol_hide_from_main_settings_list - Hide from main settings list? - - - core - admin_tools - tol_setting_group_application - Group Application - - - core - admin_tools - tol_setting_group_title - Group Title - - - core - admin_tools - tol_settings_groups - Settings Groups + tol_search_settings + Search Settings... core @@ -19989,12 +19995,6 @@ tol_go Go - - core - admin_tools - tol_search_settings - Search Settings... - core admin_tools @@ -20016,14 +20016,8 @@ core admin_tools - tol_upload_xml_settings_file_from_ - Upload XML settings file from your computer - - - core - admin_tools - tol_import_xml_settings - Import XML Settings + tol_delete_settings_group + Delete Settings Group... core @@ -20034,14 +20028,20 @@ core admin_tools - tol_edit_settings_group - Edit Settings Group... + tol_import_xml_settings + Import XML Settings core admin_tools - tol_delete_settings_group - Delete Settings Group... + tol_upload_xml_settings_file_from_ + Upload XML settings file from your computer + + + core + admin_tools + tol_edit_settings_group + Edit Settings Group... core @@ -20058,8 +20058,8 @@ core admin_tools - tol_view_cache - View Cache + tol_recache_all + Recache All core @@ -20070,8 +20070,8 @@ core admin_tools - tol_recache_all - Recache All + tol_view_cache + View Cache core @@ -20106,14 +20106,14 @@ core admin_tools - tol_size - Size + tol_caches + Caches core admin_tools - tol_caches - Caches + tol_size + Size core @@ -20220,14 +20220,14 @@ core admin_tools - tol_log_in_files_folder_name - Log In Files Folder Name + tol_a_short_description_for_this_l + A short description for this log in method core admin_tools - tol_a_short_description_for_this_l - A short description for this log in method + tol_log_in_files_folder_name + Log In Files Folder Name core @@ -20244,8 +20244,8 @@ core admin_tools - tol_auth_exists - Auth file exists? + tol_writeable + Writeable core @@ -20256,8 +20256,8 @@ core admin_tools - tol_writeable - Writeable + tol_auth_exists + Auth file exists? core @@ -20325,24 +20325,6 @@ tol_settings Settings - - core - admin_tools - cc_header - Cached Content - - - core - admin_tools - cc_posts - Cached Posts - - - core - admin_tools - cc_sigs - Cached Signatures - core admin_tools @@ -20355,12 +20337,36 @@ perf_help_information + + core + admin_tools + cc_sigs + Cached Signatures + + + core + admin_tools + cc_posts + Cached Posts + + + core + admin_tools + cc_header + Cached Content + core admin_tools cc_remove_seven Remove items older than %s days + + core + admin_tools + login_manage_enabled + Enabled? + core admin_tools @@ -20373,30 +20379,24 @@ setting_staff_tag ( STAFF ) - - core - admin_tools - login_manage_enabled - Enabled? - core admin_tools add_setting_button Add New Setting - - core - admin_tools - settings_h_prefix - Settings: - core admin_tools noneed_rebuild_again You do not need to rebuild this content again. + + core + admin_tools + settings_h_prefix + Settings: + core admin_tools @@ -20406,26 +20406,8 @@ core admin_tools - sl_services - Services - - - core - admin_tools - sl_m_title - Share Link Services - - - core - admin_tools - sl_title - Title - - - core - admin_tools - sl_editbook - Edit... + tools300pms + Checked %s PMs so far. This cycle: %s Private Messages converted into conversations.. core @@ -20436,8 +20418,26 @@ core admin_tools - tools300pms - Checked %s PMs so far. This cycle: %s Private Messages converted into conversations.. + sl_editbook + Edit... + + + core + admin_tools + sl_title + Title + + + core + admin_tools + sl_m_title + Share Link Services + + + core + admin_tools + sl_services + Services core @@ -20487,12 +20487,6 @@ sl_url URL - - core - admin_tools - license_key_bad - Your license key could not be activated. Please contact technical support. - core admin_tools @@ -20502,8 +20496,8 @@ core admin_tools - license_cache - click here to refresh the data.]]> + license_key_bad + Your license key could not be activated. Please contact technical support. core @@ -20514,8 +20508,8 @@ core admin_tools - license_activate - Activate Your License + license_cache + click here to refresh the data.]]> core @@ -20526,8 +20520,8 @@ core admin_tools - license_addons - License Addons + license_activate + Activate Your License core @@ -20535,6 +20529,12 @@ license_services License Services + + core + admin_tools + license_addons + License Addons + core admin_tools @@ -20577,24 +20577,30 @@ ie_test_pop3 Test POP3 - - core - admin_tools - ie_delete_done - Rule Deleted - core admin_tools ie_deleted Deleted Incoming Email Rule %s + + core + admin_tools + ie_delete_done + Rule Deleted + core admin_tools ie_sendto Send to: + + core + admin_tools + ie_updated + Altered Incoming Email Rule %s + core admin_tools @@ -20607,24 +20613,18 @@ ie_saved Rule Saved + + core + admin_tools + ie_ignore + Ignore Message + core admin_tools ie_save Save Rule - - core - admin_tools - ie_updated - Altered Incoming Email Rule %s - - - core - admin_tools - ie_ct_regx - Matches Regular Expression - core admin_tools @@ -20634,8 +20634,8 @@ core admin_tools - ie_ignore - Ignore Message + ie_ct_regx + Matches Regular Expression core @@ -20694,14 +20694,14 @@ core admin_tools - ie_edit - Edit Rule + ie_criteria + Criteria core admin_tools - ie_criteria - Criteria + ie_edit + Edit Rule core @@ -20826,8 +20826,8 @@ core admin_tools - sl_form_edit_title - Edit Share Link Service + sl_form_new_title + Add New Share Link Service core @@ -20838,8 +20838,14 @@ core admin_tools - sl_form_new_title - Add New Share Link Service + sl_form_edit_title + Edit Share Link Service + + + core + admin_tools + removelicensekey + Remove License Key core @@ -20853,12 +20859,6 @@ editloginmethod Edit Log In Method - - core - admin_tools - removelicensekey - Remove License Key - core admin_tools @@ -20898,14 +20898,14 @@ core admin_tools - qa_createonenow - Create one now + qastatus + core admin_tools - qastatus - + qa_createonenow + Create one now core @@ -20916,8 +20916,8 @@ core admin_tools - qa_form_answers_extra - + expires_prefix + Expires: core @@ -20934,8 +20934,8 @@ core admin_tools - expires_prefix - Expires: + qa_form_answers_extra + core @@ -20958,8 +20958,8 @@ core admin_tools - re_cp_avatars - Avatars + license_lifetime + Never]]> core @@ -20970,14 +20970,8 @@ core admin_tools - license_lifetime - Never]]> - - - core - admin_tools - rep_count - Rebuild User Reputation + re_cp_avatars + Avatars core @@ -20988,8 +20982,8 @@ core admin_tools - uagent_reverted - The user agent has been reverted. + rep_count + Rebuild User Reputation core @@ -21000,8 +20994,8 @@ core admin_tools - ipsconnect_details - URL: %s
    Key: %s

    Note: You can use an IP.Board installation as either a master or a slave in an IPS Connect network, but not both. If this installation is the master, do not enable the IPS Connect login method.]]>
    + uagent_reverted + The user agent has been reverted.
    core @@ -21009,6 +21003,12 @@ windowslive_help For assistance setting up Windows Live, visit the Community Enhancements page. + + core + admin_tools + ipsconnect_details + URL: %s
    Key: %s

    Note: You can use an IP.Board installation as either a master or a slave in an IPS Connect network, but not both. If this installation is the master, do not enable the IPS Connect login method.]]>
    +
    core admin_tools diff --git a/upload/admin/applications/core/xml/core_mobile_css.xml b/upload/admin/applications/core/xml/core_mobile_css.xml index bde65bd8..4c867f23 100644 --- a/upload/admin/applications/core/xml/core_mobile_css.xml +++ b/upload/admin/applications/core/xml/core_mobile_css.xml @@ -2,7 +2,7 @@ 0 - 1431336812 + 1451405327 calendar_select 1 @@ -15,7 +15,7 @@ 0 - 1431336812 + 1451405327 ipb_editor 1 @@ -28,7 +28,7 @@ 0 - 1431336812 + 1451405327 ipb_ie #search { position: absolute !important; @@ -105,7 +105,7 @@ 0 - 1431336812 + 1451405327 ipb_print 0 - 1431336812 + 1451405327 ipb_styles 0 - 1431336808 + 1451405325 calendar_select .calendar_date_select { color:white; @@ -149,7 +149,7 @@ iframe.ie6_blocker { 0 - 1431336808 + 1451405325 ipb_ckeditor 0 - 1431336808 + 1451405325 ipb_common 0 - 1431336808 + 1451405325 ipb_editor 0 - 1431336808 + 1451405325 ipb_help 0 - 1431336808 + 1451405325 ipb_ie 0 - 1431336808 + 1451405325 ipb_login_register 0 - 1431336808 + 1451405325 ipb_print 0 - 1431336808 + 1451405325 ipb_search 0 - 1431336808 + 1451405325 ipb_styles 0 - 1431336808 + 1451405325 ipb_ucp /************************************************************************/ /* IP.Board 3 CSS - By Rikki Tissier - (c)2008 Invision Power Services */ diff --git a/upload/admin/applications/core/xml/core_root_templates.xml b/upload/admin/applications/core/xml/core_root_templates.xml index ac62ca43..bb3915d0 100644 --- a/upload/admin/applications/core/xml/core_root_templates.xml +++ b/upload/admin/applications/core/xml/core_root_templates.xml @@ -751,7 +751,6 @@ window.fbAsyncInit = function() {
  • {$this->lang->words['sj_help']}
  • -
  • Форум поддержки IPS Community Suite
  • {$footer_items['copyright']} diff --git a/upload/admin/applications/core/xml/core_xmlskin_css.xml b/upload/admin/applications/core/xml/core_xmlskin_css.xml index 4bdce6f9..5a467afc 100644 --- a/upload/admin/applications/core/xml/core_xmlskin_css.xml +++ b/upload/admin/applications/core/xml/core_xmlskin_css.xml @@ -2,7 +2,7 @@ 0 - 1413434566 + 1451405327 calendar_select 1 @@ -15,7 +15,7 @@ 0 - 1413434566 + 1451405327 ipb_ckeditor 1 @@ -28,7 +28,7 @@ 0 - 1413434566 + 1451405327 ipb_common 1 @@ -41,7 +41,7 @@ 0 - 1413434566 + 1451405327 ipb_editor 1 @@ -54,7 +54,7 @@ 0 - 1413434566 + 1451405327 ipb_help 0 @@ -67,7 +67,7 @@ 0 - 1413434566 + 1451405327 ipb_ie 0 - 1413434566 + 1451405327 ipb_login_register 1 @@ -158,7 +158,7 @@ table.ipb_table h4 { display: inline; zoom: 1 } 0 - 1413434566 + 1451405327 ipb_print 1 @@ -171,7 +171,7 @@ table.ipb_table h4 { display: inline; zoom: 1 } 0 - 1413434566 + 1451405327 ipb_search 2 @@ -184,7 +184,7 @@ table.ipb_table h4 { display: inline; zoom: 1 } 0 - 1413434566 + 1451405327 ipb_styles 1 @@ -197,7 +197,7 @@ table.ipb_table h4 { display: inline; zoom: 1 } 0 - 1413434566 + 1451405327 ipb_ucp 1 diff --git a/upload/admin/applications/core/xml/public_core_language_pack.xml b/upload/admin/applications/core/xml/public_core_language_pack.xml index 895084af..c70a89c3 100644 --- a/upload/admin/applications/core/xml/public_core_language_pack.xml +++ b/upload/admin/applications/core/xml/public_core_language_pack.xml @@ -4,8 +4,8 @@ core public_comments - view_comment - View comment + view_it_anyway + View it anyway? core @@ -13,6 +13,12 @@ ignored_comments_not This comment is hidden because you have chosen to ignore posts by + + core + public_comments + view_comment + View comment + core public_comments @@ -61,12 +67,6 @@ comment_save Save - - core - public_comments - comments_act_go - Go - core public_comments @@ -76,8 +76,8 @@ core public_comments - hide_x_comments - Hide + comments_act_go + Go core @@ -85,6 +85,12 @@ unhide_x_comments Unhide + + core + public_comments + hide_x_comments + Hide + core public_comments @@ -112,14 +118,14 @@ core public_comments - comm_confirm_hide_desc - This option hides the comment, but moderators may still be able to view it. + comm_confirm_hide + Hide Comment core public_comments - comm_confirm_hide - Hide Comment + comm_confirm_hide_desc + This option hides the comment, but moderators may still be able to view it. core @@ -154,14 +160,14 @@ core public_comments - click here to login - click here to log in + comments_header + Comments core public_comments - comments_header - Comments + click here to login + click here to log in core @@ -184,8 +190,8 @@ core public_comments - comment_hidden_content - Toggle Content + post_deleted_by + Comment Hidden By core @@ -196,14 +202,8 @@ core public_comments - post_deleted_by - Comment Hidden By - - - core - public_comments - view_it_anyway - View it anyway? + comment_hidden_content + Toggle Content core @@ -461,8 +461,8 @@ You can review the new comment here: core public_editors - js_template_insert_img - Insert Image + js_template_email_me + Email me core @@ -473,8 +473,8 @@ You can review the new comment here: core public_editors - js_template_email_me - Email me + js_template_insert_img + Insert Image core @@ -509,14 +509,14 @@ You can review the new comment here: core public_editors - shareable_media_warn - Content you share will be visible by all members who can view this topic.

    Select a media type to choose what to share.]]>
    + sharedmedia_h4title + Media Types
    core public_editors - sharedmedia_h4title - Media Types + shareable_media_warn + Content you share will be visible by all members who can view this topic.

    Select a media type to choose what to share.]]>
    core @@ -722,6 +722,222 @@ You can review the new comment here: show_all_emotes Show All + + core + public_emails + show_address_text + + + + core + public_emails + send_email_to + Send an email to + + + core + public_emails + title + Send a page to a friend + + + core + public_emails + subject + Subject + + + core + public_emails + redirect + The email has been sent + + + core + public_emails + message + Message + + + core + public_emails + submit_send + Send Email + + + core + public_emails + send_lang + Send this email in + + + core + public_emails + to_name + + + + core + public_emails + to_email + Send to (Email Address) + + + core + public_emails + gen_error + You are not logged in or able to send emails + + + core + public_emails + no_subject + You must enter a subject for the email + + + core + public_emails + no_message + You must enter some content for the email + + + core + public_emails + exceeded_flood + The mail could not be sent because you have already sent an email within the last %s minutes + + + core + public_emails + exceeded_quota + The mail could not be sent because you have exceeded your allotted quota of %s emails a day + + + core + public_emails + email_member + Email Member + + + core + public_emails + emailing_prefix + Emailing + + + core + public_emails + imp_text + IMPORTANT: To prevent malicious use, all emails sent via this form are logged and the contents recorded and available to the administrators. DO NOT email user names, passwords or any personal details. + + + core + public_emails + tweet_ok + Your tweet was successful! + + + core + public_emails + twitter_share + Share + + + core + public_emails + twitter_chrs_left + chars left. Shortened URL will be auto-added + + + core + public_emails + share_via_twitter + Share Via Twitter + + + core + public_emails + facebook_share + Share + + + core + public_emails + share_via_facebook + Share Via Facebook + + + core + public_emails + fbc_comment_desc + You can optionally leave a comment below + + + core + public_emails + facebook_post_ok + The link was posted successfully + + + core + public_emails + err_reg_code + The Captcha input was incorrect. Please try again. + + + core + public_emails + fb_share_default + Share link with your own comment... + + + core + public_emails + share_fb_name + Logged into Facebook as + + + core + public_emails + member_address_title + Members Email Address + + + core + public_emails + msg_txt + Note: By using this form, the recipient will be able to view your email address + + + core + public_emails + email_sent_txt + Thanks, the email has been successfully sent to + + + core + public_emails + email_sent + The email has been sent + + + core + public_emails + email_friend + Use this feature to let a friend know about this topic! + + + core + public_emails + email_recepient + Recipient + + + core + public_emails + email_details + Enter the email details + core public_email_content @@ -749,18 +965,6 @@ This is to limit the amount of mail that is sent to your inbox.
    ]]>
    - - core - public_email_content - subject__subs_with_post - '><#POSTER#> replied to <#TITLE#>]]> - - - core - public_email_content - subject__subs_with_post.emailOnly - New reply to %s - core public_email_content @@ -777,6 +981,18 @@ contents of this message. --------------------------------------------------- ]]> + + core + public_email_content + subject__subs_with_post + '><#POSTER#> replied to <#TITLE#>]]> + + + core + public_email_content + subject__subs_with_post.emailOnly + New reply to %s + core public_email_content @@ -930,6 +1146,28 @@ If the error persists, please contact an administrator to rectify the problem. IP address of sender: <#IP_ADDRESS#> +]]> + + + core + public_email_content + admin_newuser + +Display name: <#DISPLAY_NAME#> +Email: <#EMAIL#> +IP Address: <#IP#> +Date: <#DATE#> +------------------------------------------------ + +You can turn off user notification in the Admin Control Panel + +Have a super day! ]]> @@ -955,23 +1193,12 @@ Have a super day! core public_email_content - admin_newuser - send_text + -You have received this email because a new user has completed their registration! +From, ------------------------------------------------- -Log in name: <#LOG_IN_NAME#> -Display name: <#DISPLAY_NAME#> -Email: <#EMAIL#> -IP Address: <#IP#> -Date: <#DATE#> ------------------------------------------------- - -You can turn off user notification in the Admin Control Panel - -Have a super day! +<#USER NAME#> ]]> @@ -1030,27 +1257,16 @@ Thank you for registering and enjoy your stay! core public_email_content - send_text - - -From, - -<#USER NAME#> -]]> + subject__digest_forum_daily + Your daily new topics digest core public_email_content - subject__digest_topic_daily - Your daily new posts digest - - - core - public_email_content - digest_topic_daily + digest_forum_daily , -This is the digest of posts in topic "<#TITLE#>" for today. +This is your daily new topics digest for forum <#FORUM_NAME#>! ---------------------------------------------------------------------- @@ -1058,7 +1274,7 @@ This is the digest of posts in topic "<#TITLE#>" for today. ---------------------------------------------------------------------- -The topic can be found here: +The forum can be found here: <#URL#> Unsubscribing: @@ -1099,16 +1315,16 @@ You can unsubscribe at any time here: <#UNSUBCRIBE_URL#> core public_email_content - subject__digest_forum_daily - Your daily new topics digest + subject__digest_topic_daily + Your daily new posts digest core public_email_content - digest_forum_daily + digest_topic_daily , -This is your daily new topics digest for forum <#FORUM_NAME#>! +This is the digest of posts in topic "<#TITLE#>" for today. ---------------------------------------------------------------------- @@ -1116,7 +1332,7 @@ This is your daily new topics digest for forum <#FORUM_NAME#>! ---------------------------------------------------------------------- -The forum can be found here: +The topic can be found here: <#URL#> Unsubscribing: @@ -1220,12 +1436,6 @@ removing your email address from the forum settings options. ]]> - - core - public_email_content - subject__post_was_quoted - %s quoted a post you made]]> - core public_email_content @@ -1253,6 +1463,12 @@ community by clicking My Settings, and then choosing Notification Options. ]]> + + core + public_email_content + subject__new_comment_added + New comment from %s]]> + core public_email_content @@ -1267,8 +1483,8 @@ Manage your comments: <#LINK#> core public_email_content - subject__new_comment_added - New comment from %s]]> + subject__post_was_quoted + %s quoted a post you made]]> core @@ -1284,12 +1500,6 @@ profile until it's been approved. Log in and then manage your comments: <#LINK#> ]]> - - core - public_email_content - subject__new_comment_request - New comment from %s pending approval]]> - core public_email_content @@ -1304,14 +1514,14 @@ Manage your friends: <#LINK#> core public_email_content - subject__new_friend_added - %s added you as a friend]]> + subject__new_comment_request + New comment from %s pending approval]]> core public_email_content - subject__new_friend_request - %s sent you a friend request]]> + subject__new_friend_added + %s added you as a friend]]> core @@ -1328,6 +1538,12 @@ friends list and approve them. Log in and then manage your friends: <#LINK#> ]]> + + core + public_email_content + subject__new_friend_request + %s sent you a friend request]]> + core public_email_content @@ -1345,12 +1561,6 @@ Log in and then manage your friends: <#LINK#> Log in and then manage your friends: <#LINK#> ]]> - - core - public_email_content - subject__account_created - Your account has been created - core public_email_content @@ -1377,8 +1587,8 @@ Visit this link to join into our discussions! core public_email_content - subject__error_log_notification - An error has been generated on your site + subject__account_created + Your account has been created core @@ -1401,8 +1611,8 @@ Please login to your Admin Control Panel to use the error log viewer tool for fu core public_email_content - subject__personal_convo_invite - %s has added you to a personal conversation]]> + subject__error_log_notification + An error has been generated on your site core @@ -1417,6 +1627,18 @@ You can read this personal conversation by following the link below: <#BOARD_ADDRESS#><#LINK#> ]]> + + core + public_email_content + subject__personal_convo_invite + %s has added you to a personal conversation]]> + + + core + public_email_content + subject__personal_convo_new_reply + %s has replied to a personal conversation]]> + core public_email_content @@ -1436,12 +1658,6 @@ You can reply to this personal conversation by following the link below: <#BOARD_ADDRESS#><#LINK#> ]]> - - core - public_email_content - subject__personal_convo_new_reply - %s has replied to a personal conversation]]> - core public_email_content @@ -1487,8 +1703,8 @@ You can turn off status notification by visiting <#URL#> core public_email_content - subject__status_reply - %s has replied to your status]]> + subject__their_status_reply + %s has made a reply to their status]]> core @@ -1496,6 +1712,12 @@ You can turn off status notification by visiting <#URL#> subject__other_status_reply %s has replied to %s's status]]> + + core + public_email_content + subject__status_reply + %s has replied to your status]]> + core public_email_content @@ -1518,12 +1740,6 @@ You can turn off status notification by visiting <#URL#> You can turn off status notification by visiting <#URL#> ]]> - - core - public_email_content - subject__their_status_reply - %s has made a reply to their status]]> - core public_email_content @@ -1619,219 +1835,9 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core - public_emails - show_address_text - - - - core - public_emails - send_email_to - Send an email to - - - core - public_emails - title - Send a page to a friend - - - core - public_emails - redirect - The email has been sent - - - core - public_emails - subject - Subject - - - core - public_emails - message - Message - - - core - public_emails - submit_send - Send Email - - - core - public_emails - to_email - Send to (Email Address) - - - core - public_emails - to_name - - - - core - public_emails - send_lang - Send this email in - - - core - public_emails - no_subject - You must enter a subject for the email - - - core - public_emails - gen_error - You are not logged in or able to send emails - - - core - public_emails - no_message - You must enter some content for the email - - - core - public_emails - exceeded_quota - The mail could not be sent because you have exceeded your allotted quota of %s emails a day - - - core - public_emails - exceeded_flood - The mail could not be sent because you have already sent an email within the last %s minutes - - - core - public_emails - imp_text - IMPORTANT: To prevent malicious use, all emails sent via this form are logged and the contents recorded and available to the administrators. DO NOT email user names, passwords or any personal details. - - - core - public_emails - emailing_prefix - Emailing - - - core - public_emails - email_member - Email Member - - - core - public_emails - tweet_ok - Your tweet was successful! - - - core - public_emails - twitter_chrs_left - chars left. Shortened URL will be auto-added - - - core - public_emails - twitter_share - Share - - - core - public_emails - share_via_twitter - Share Via Twitter - - - core - public_emails - facebook_share - Share - - - core - public_emails - share_via_facebook - Share Via Facebook - - - core - public_emails - fbc_comment_desc - You can optionally leave a comment below - - - core - public_emails - facebook_post_ok - The link was posted successfully - - - core - public_emails - err_reg_code - The Captcha input was incorrect. Please try again. - - - core - public_emails - fb_share_default - Share link with your own comment... - - - core - public_emails - share_fb_name - Logged into Facebook as - - - core - public_emails - member_address_title - Members Email Address - - - core - public_emails - msg_txt - Note: By using this form, the recipient will be able to view your email address - - - core - public_emails - email_sent_txt - Thanks, the email has been successfully sent to - - - core - public_emails - email_sent - The email has been sent - - - core - public_emails - email_friend - Use this feature to let a friend know about this topic! - - - core - public_emails - email_recepient - Recipient - - - core - public_emails - email_details - Enter the email details + public_error + warned_already + This member has been warned once already within the allotted time allowed. core @@ -1839,12 +1845,6 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> cal_no_perm You do not have permission to view this calendar or this calendar does not exist. - - core - public_error - warned_already - This member has been warned once already within the allotted time allowed. - core public_error @@ -1902,13 +1902,13 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_error - profiles_off + settings_profiles_off You are not permitted to view member profiles. core public_error - settings_profiles_off + profiles_off You are not permitted to view member profiles. @@ -1947,12 +1947,6 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> onlinelist_disabled You are not permitted to view our online list. - - core - public_error - messenger_you_be_banned_yo - You have been banned from this personal conversation. - core public_error @@ -1962,8 +1956,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_error - messenger_bad_key - Your secure key, used to verify your identity, did not match the one submitted. Please go back, reload the form, and try again. + messenger_you_be_banned_yo + You have been banned from this personal conversation. core @@ -1971,6 +1965,12 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> messenger_no_guests You must be logged in to use the private messaging system. + + core + public_error + messenger_bad_key + Your secure key, used to verify your identity, did not match the one submitted. Please go back, reload the form, and try again. + core public_error @@ -2037,12 +2037,6 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> members_tool_supmod You do not have permission to access this moderator tool. - - core - public_error - post_too_long - Your post was too long. Please go back and shorten it a little. - core public_error @@ -2058,8 +2052,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_error - forums_no_guests - You must be logged in to see this forum. + post_too_long + Your post was too long. Please go back and shorten it a little. core @@ -2067,6 +2061,12 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> posting_not_enough_posts You do not have enough posts to post in this forum. + + core + public_error + forums_no_guests + You must be logged in to see this forum. + core public_error @@ -2142,14 +2142,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_error - mod_bad_pid - You appear to have submitted an invalid post. + mod_bad_tid + You appear to have submitted an invalid topic. core public_error - mod_bad_tid - You appear to have submitted an invalid topic. + mod_bad_pid + You appear to have submitted an invalid post. core @@ -2286,14 +2286,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_error - mod_only_one_pid - You must select more than one post for moderation. + mod_no_pids + You did not select any posts for moderation. core public_error - mod_no_pids - You did not select any posts for moderation. + mod_only_one_pid + You must select more than one post for moderation. core @@ -2346,14 +2346,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_error - mod_topic_pinned - The topic you are attempting to pin is already pinned. + mod_admin_edit + You are not permitted to edit an administrator. core public_error - mod_admin_edit - You are not permitted to edit an administrator. + mod_topic_pinned + The topic you are attempting to pin is already pinned. core @@ -2430,14 +2430,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_error - topic_rate_no_perm - You do not have permission to rate this topic. + topic_rate_locked + You are not allowed to rate topics that are locked. core public_error - topic_rate_locked - You are not allowed to rate topics that are locked. + topic_rate_no_perm + You do not have permission to rate this topic. core @@ -2607,6 +2607,12 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> reports_input_not_match The data you submitted does not match the expected format. + + core + public_error + reports_cannot_view_entry + You do not have permission to report this blog entry. + core public_error @@ -2616,8 +2622,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_error - reports_cannot_view_entry - You do not have permission to report this blog entry. + reports_must_be_member + You must be a registered member and logged in to our site in order to report this content. core @@ -2628,8 +2634,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_error - reports_must_be_member - You must be a registered member and logged in to our site in order to report this content. + search_no_term + You must specify a search term. core @@ -2643,12 +2649,6 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> sphinx_api_missing Search is not available as the Sphinx API is not available, please contact an administrator about this issue - - core - public_error - search_no_term - You must specify a search term. - core public_error @@ -2694,14 +2694,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_error - reports_what_now - We could not determine what type of content you are attempting to report. + reports_cant_report + You do not have permission to report the item you are attempting to report. core public_error - reports_cant_report - You do not have permission to report the item you are attempting to report. + reports_what_now + We could not determine what type of content you are attempting to report. core @@ -2874,13 +2874,13 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_error - no_view_board + you_are_banned You are not allowed to visit this community. core public_error - you_are_banned + no_view_board You are not allowed to visit this community. @@ -2898,14 +2898,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_error - no_permission_to_search - You do not have permission to use the search system. + search_off + Search is not enabled on the community at this time. core public_error - search_off - Search is not enabled on the community at this time. + no_permission_to_search + You do not have permission to use the search system. core @@ -3006,14 +3006,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_error - twit_not_on - Twitter connect is not enabled + twit_not_remote + You cannot log in with your Twitter credentials for this member. You must log in with your community credentials using the normal log in form core public_error - twit_not_remote - You cannot log in with your Twitter credentials for this member. You must log in with your community credentials using the normal log in form + twit_not_on + Twitter connect is not enabled core @@ -3051,12 +3051,6 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> no_remote_reg The administrator has disabled all registrations and as such, you are not able to complete your log in at this time. - - core - public_error - fb_not_remote - You cannot log in with your Facebook credentials for this member. You must log in with your community credentials using the normal log in form - core public_error @@ -3066,8 +3060,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_error - fb_ohnoes - An error occurred while trying to authorize this Facebook connection + fb_not_remote + You cannot log in with your Facebook credentials for this member. You must log in with your community credentials using the normal log in form core @@ -3075,6 +3069,12 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> forward_turned_off Sorry, this feature has been disabled + + core + public_error + fb_ohnoes + An error occurred while trying to authorize this Facebook connection + core public_error @@ -3087,12 +3087,6 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> nocomment_found We could not find the comment you were looking for. - - core - public_error - noappcomments - There was a problem with the request. Please go back and try again. - core public_error @@ -3102,14 +3096,20 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_error - error_title - Oops! Something went wrong! + board_error_title + Error core public_error - board_error_title - Error + noappcomments + There was a problem with the request. Please go back and try again. + + + core + public_error + error_title + Oops! Something went wrong! core @@ -3141,12 +3141,6 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> page_doesnt_exist - - core - public_error - spam_denied_account - You are not permitted to register a user account with this community. - core public_error @@ -3156,8 +3150,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_error - invalid_search_term - Invalid search term + spam_denied_account + You are not permitted to register a user account with this community. core @@ -3165,6 +3159,12 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> invalid_search_key Invalid search key + + core + public_error + invalid_search_term + Invalid search term + core public_error @@ -3459,12 +3459,6 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> pass_blank Your password field was not complete - - core - public_global - glb_captcha_enter - Confirm security code - core public_global @@ -3474,14 +3468,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - glb_captcha_image - Security Check + gbl_captcha_title + Security Code core public_global - gbl_captcha_title - Security Code + glb_captcha_image + Security Check core @@ -3606,14 +3600,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - task_announcements - Announcements updated + task_calendars + Calendar recached core public_global - task_calendars - Calendar recached + task_announcements + Announcements updated core @@ -3642,8 +3636,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - attach_notallowed - Uploading is not allowed + board_offline_title + Community Message core @@ -3654,8 +3648,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - board_offline_title - Community Message + attach_notallowed + Uploading is not allowed core @@ -3840,14 +3834,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - back_to_top - Top + mark_all_as_read + Mark all as read core public_global - mark_all_as_read - Mark all as read + back_to_top + Top core @@ -3924,8 +3918,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - ignore_conversation - Ignore This Notification + pc_replies + Replies: core @@ -3936,14 +3930,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - pc_replies - Replies: - - - core - public_global - replied_convo - replied to a conversation + ignore_conversation + Ignore This Notification core @@ -3951,6 +3939,12 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> pc_subject Subject: + + core + public_global + replied_convo + replied to a conversation + core public_global @@ -3969,12 +3963,6 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> home Home - - core - public_global - homepage_title - Homepage - core public_global @@ -3984,8 +3972,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - add - Add + homepage_title + Homepage core @@ -3993,6 +3981,12 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> captcha_string_enter Enter the characters you see + + core + public_global + add + Add + core public_global @@ -4002,14 +3996,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - not_signed_in - You are not signed in + click_login + Click here to log in core public_global - click_login - Click here to log in + not_signed_in + You are not signed in core @@ -4032,14 +4026,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - click_toggle - Click to Toggle + check_all + Check all core public_global - check_all - Check all + click_toggle + Click to Toggle core @@ -4053,12 +4047,6 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> warn_status %d warning points - - core - public_global - warn_view_history - View warn history - core public_global @@ -4068,8 +4056,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - view_blog - View blog + warn_view_history + View warn history core @@ -4077,6 +4065,12 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> view_gallery View gallery + + core + public_global + view_blog + View blog + core public_global @@ -4098,14 +4092,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - icon - Icon + their_profile + core public_global - their_profile - + icon + Icon core @@ -4164,14 +4158,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - quick_message - Message + quick_subject + Subject core public_global - quick_subject - Subject + quick_message + Message core @@ -4194,14 +4188,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - macro__useroffline - User is offline + macro__useronline + User is online core public_global - macro__useronline - User is online + macro__useroffline + User is offline core @@ -4218,14 +4212,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - macro__user - User + macro__useredit + Edit core public_global - macro__useredit - Edit + macro__user + User core @@ -4368,14 +4362,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - context_search_forum - This forum + advanced_search + Advanced Search core public_global - advanced_search - Advanced Search + context_search_forum + This forum core @@ -4428,14 +4422,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - _rarr - + _larr + core public_global - _larr - + _rarr + core @@ -4470,8 +4464,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - acp_sessiontimeout - Your ACP session has expired. Please refresh the page to log back in. + ap_error + Notice core @@ -4482,8 +4476,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - ap_error - Notice + acp_sessiontimeout + Your ACP session has expired. Please refresh the page to log back in. core @@ -4584,14 +4578,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - like_follow - follow + like_ucfirst_follow + Follow core public_global - like_ucfirst_follow - Follow + like_follow + follow core @@ -4608,14 +4602,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - like_ucfirst_like - Follow + like_like + follow core public_global - like_like - follow + like_ucfirst_like + Follow core @@ -4698,14 +4692,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - your_likes - Content I Follow + fave_formatted_one + %s follows this core public_global - fave_formatted_one - %s follows this + your_likes + Content I Follow core @@ -4716,14 +4710,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - followed_anonymously - (Anonymously) + follow_anon_count_s + 1 anonymous user core public_global - follow_anon_count_s - 1 anonymous user + followed_by + Followed By core @@ -4734,8 +4728,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - followed_by - Followed By + followed_anonymously + (Anonymously) core @@ -4764,14 +4758,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - post_like_moi - You + post_like_formatted_me + You like this core public_global - post_like_formatted_me - You like this + post_like_moi + You core @@ -4902,14 +4896,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - navigation_title - Quick Navigation + online_user_link + Users Online core public_global - online_user_link - Users Online + navigation_title + Quick Navigation core @@ -4929,12 +4923,6 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> gbl_notify_pm message - - core - public_global - gbl_notify_item - item - core public_global @@ -4944,14 +4932,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - notifications_at_the_top - Notifications + gbl_notify_item + item core public_global - inbox_list_view - View All Messages + notifications_at_the_top + Notifications core @@ -4965,6 +4953,12 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> inbox_list_none There are no messages to show + + core + public_global + inbox_list_view + View All Messages + core public_global @@ -4998,8 +4992,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - f_deleted_badge - Hidden + pre_moved + Moved core @@ -5010,8 +5004,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - pre_moved - Moved + f_deleted_badge + Hidden core @@ -5022,8 +5016,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - like_this - Like This + liked_by + Liked by core @@ -5034,8 +5028,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - liked_by - Liked by + like_this + Like This core @@ -5070,14 +5064,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - launch_quicknav - Open Quick Navigation + by_ucfirst + By core public_global - by_ucfirst - By + launch_quicknav + Open Quick Navigation core @@ -5190,14 +5184,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - task_archiveprocess - %s items archived + task_unarchiveprocess + %s items unarchived core public_global - task_unarchiveprocess - %s items unarchived + task_archiveprocess + %s items archived core @@ -5208,14 +5202,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - anon_name - + form_invisible + Sign in anonymously core public_global - form_invisible - Sign in anonymously + anon_name + core @@ -5232,8 +5226,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - notrecommended - This is not recommended for shared computers + enter_pass + Password core @@ -5244,8 +5238,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - enter_username - Username + notrecommended + This is not recommended for shared computers core @@ -5262,8 +5256,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - enter_pass - Password + enter_username + Username core @@ -5418,14 +5412,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - email_unsubscribed - You have been sucessfully unsubscribed. + email_unsubscribe + Unsubscribe core public_global - email_unsubscribe - Unsubscribe + email_unsubscribed + You have been sucessfully unsubscribed. core @@ -5436,14 +5430,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_global - spoiler_show - Show + spoiler_hide + Hide core public_global - spoiler_hide - Hide + spoiler_show + Show core @@ -5469,6 +5463,12 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> admin_validation_msg Your account is currently awaiting administrator validation. You will need to wait for an administrator to validate your account before you will be able to login on this site. + + core + public_global + glb_captcha_enter + Confirm security code + core public_global @@ -6550,22 +6550,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - ckeditor__inc_indent - Increase Indent - 1 - - - core - public_js - ckeditor__insdelbullist - Insert/Remove Bulleted List - 1 - - - core - public_js - ckeditor__insdelnumlist - Insert/Remove Numbered List + ckeditor__elementspath + Elements path 1 @@ -6578,8 +6564,22 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - ckeditor__elementspath - Elements path + ckeditor__insdelnumlist + Insert/Remove Numbered List + 1 + + + core + public_js + ckeditor__insdelbullist + Insert/Remove Bulleted List + 1 + + + core + public_js + ckeditor__inc_indent + Increase Indent 1 @@ -6949,15 +6949,15 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - ckeditor__typeanchor - Please type the anchor name + ckeditor__anchorname + Anchor Name 1 core public_js - ckeditor__anchorname - Anchor Name + ckeditor__typeanchor + Please type the anchor name 1 @@ -6977,15 +6977,15 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - ckeditor__anchor - Anchor + ckeditor__type_email + Please type the e-mail address 1 core public_js - ckeditor__type_email - Please type the e-mail address + ckeditor__anchor + Anchor 1 @@ -6998,8 +6998,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - ckeditor__noanchorsa - (No anchors available in the document) + ckeditor__emailsubject + Message Subject 1 @@ -7012,15 +7012,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - ckeditor__emailsubject - Message Subject - 1 - - - core - public_js - ckeditor__byemailaddy - E-Mail Address + ckeditor__noanchorsa + (No anchors available in the document) 1 @@ -7033,8 +7026,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - ckeditor__byanchorname - By Anchor Name + ckeditor__byemailaddy + E-Mail Address 1 @@ -7044,6 +7037,13 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> Select an Anchor 1 + + core + public_js + ckeditor__byanchorname + By Anchor Name + 1 + core public_js @@ -7159,15 +7159,15 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - ckeditor__targframename - Target Frame Name + ckeditor__popuplink + ]]> 1 core public_js - ckeditor__popuplink - ]]> + ckeditor__targframename + Target Frame Name 1 @@ -7180,15 +7180,15 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - ckeditor__anchorlink - Link to anchor in the text + ckeditor__emaillink + E-mail 1 core public_js - ckeditor__emaillink - E-mail + ckeditor__anchorlink + Link to anchor in the text 1 @@ -7534,13 +7534,6 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> Button 1 - - core - public_js - ckeditor__textarea - Textarea - 1 - core public_js @@ -7551,8 +7544,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - ckeditor__radiobutton - Radio Button + ckeditor__textarea + Textarea 1 @@ -7562,6 +7555,13 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> Text Field 1 + + core + public_js + ckeditor__radiobutton + Radio Button + 1 + core public_js @@ -7579,15 +7579,15 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - ckeditor__image - Image + ckeditor__flash + Flash 1 core public_js - ckeditor__flash - Flash + ckeditor__image + Image 1 @@ -7607,15 +7607,15 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - ckeditor__url - URL + ckeditor__protocol + Protocol 1 core public_js - ckeditor__protocol - Protocol + ckeditor__url + URL 1 @@ -7712,15 +7712,15 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - ckeditor__hr - Insert Horizontal Line + ckeditor__pb + Insert Page Break for Printing 1 core public_js - ckeditor__pb - Insert Page Break for Printing + ckeditor__hr + Insert Horizontal Line 1 @@ -7747,15 +7747,15 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - ckeditor__selectall - Select All + ckeditor__removeformat + Remove Format 1 core public_js - ckeditor__removeformat - Remove Format + ckeditor__selectall + Select All 1 @@ -7768,15 +7768,15 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - ckeditor__bold - Bold + ckeditor__underline + Underline 1 core public_js - ckeditor__underline - Underline + ckeditor__bold + Bold 1 @@ -7789,15 +7789,15 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - ckeditor__paste - Paste + ckeditor__copy + Copy 1 core public_js - ckeditor__copy - Copy + ckeditor__paste + Paste 1 @@ -7817,15 +7817,15 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - ckeditor__newpage - New Page + ckeditor__save + Save 1 core public_js - ckeditor__save - Save + ckeditor__newpage + New Page 1 @@ -7950,15 +7950,15 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - blog_disable - Disable + blog_pin + Pin 1 core public_js - blog_pin - Pin + blog_disable + Disable 1 @@ -8048,15 +8048,15 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - prof_update_button - Update + prof_update_default + 1 core public_js - prof_update_default - + prof_update_button + Update 1 @@ -8083,15 +8083,15 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - folder_emptied - Folder emptied successfully + messenger_edit + Edit 1 core public_js - messenger_edit - Edit + folder_emptied + Folder emptied successfully 1 @@ -8209,15 +8209,15 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - out_of_diskspace - You have run out of space for uploads + album_full + You are not permitted to upload any more items into this album 1 core public_js - album_full - You are not permitted to upload any more items into this album + out_of_diskspace + You have run out of space for uploads 1 @@ -8244,15 +8244,15 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - uploading - Uploading... + upload_done + 1 core public_js - upload_done - + uploading + Uploading... 1 @@ -8311,13 +8311,6 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> Try our advanced uploader which supports multiple file uploading (modern browser required) 1 - - core - public_js - click_to_attach - Choose Files... - 1 - core public_js @@ -8328,8 +8321,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - att_select_files - Select files + click_to_attach + Choose Files... 1 @@ -8339,6 +8332,13 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> Your post is too short 1 + + core + public_js + att_select_files + Select files + 1 + core public_js @@ -8356,15 +8356,15 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - poll_stats - + no_more_topics + No more topics 1 core public_js - no_more_topics - No more topics + poll_stats + 1 @@ -8398,15 +8398,15 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - poll_no_more_q - You cannot add any more questions to this poll! + approve + Approve 1 core public_js - approve - Approve + poll_no_more_q + You cannot add any more questions to this poll! 1 @@ -8552,15 +8552,15 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - is_required - + available + 1 core public_js - available - + is_required + 1 @@ -8570,13 +8570,6 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> 1 - - core - public_js - rtg_awesome - Awesome! - 1 - core public_js @@ -8587,8 +8580,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - rtg_good - Good + rtg_awesome + Awesome! 1 @@ -8601,8 +8594,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - rtg_ok - Okay + rtg_good + Good 1 @@ -8612,6 +8605,13 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> Poor 1 + + core + public_js + rtg_ok + Okay + 1 + core public_js @@ -8713,15 +8713,15 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - unhide - ... + hide + 1 core public_js - hide - + unhide + ... 1 @@ -8734,15 +8734,15 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - signin_nopassword - No password entered + signin_nosigninname + No sign in name entered 1 core public_js - signin_nosigninname - No sign in name entered + signin_nopassword + No password entered 1 @@ -8825,15 +8825,15 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - from - From + loading + Loading... 1 core public_js - loading - Loading... + from + From 1 @@ -8857,6 +8857,13 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> Reply to #{num} quoted post(s) 1 + + core + public_js + ck_saved_title + About Saved Content + 1 + core public_js @@ -8864,20 +8871,6 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> Saving post... 1 - - core - public_js - ck_saved - Saved Content - 1 - - - core - public_js - ck_restore - Restore Content - 1 - core public_js @@ -8888,15 +8881,15 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - ck_saved_title - About Saved Content + ck_restore + Restore Content 1 core public_js - ck_view_saved - View Auto Saved Content (#{updatedDate}) + ck_saved + Saved Content 1 @@ -8906,6 +8899,13 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> Last auto saved: #{time} 1 + + core + public_js + ck_view_saved + View Auto Saved Content (#{updatedDate}) + 1 + core public_js @@ -8972,15 +8972,15 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_js - cpt_split - Split + cpt_delete + Delete 1 core public_js - cpt_delete - Delete + cpt_split + Split 1 @@ -10168,14 +10168,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_login - enter_useremail - Email address: + enter_name_and_email + Username or email: core public_login - enter_name_and_email - Username or email: + enter_useremail + Email address: core @@ -10234,14 +10234,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_login - reg_log_in - You are now registered and signed in, returning you to the community index + reg_not_log_in + You are now registered, taking you to the sign in form core public_login - reg_not_log_in - You are now registered, taking you to the sign in form + reg_log_in + You are now registered and signed in, returning you to the community index core @@ -10273,6 +10273,12 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> bruteforce_account_lock Your account is currently locked due to consecutive failed login attempts and will remain locked until an administrator unlocks it. + + core + public_login + complete_form + You must complete both fields + core public_login @@ -10285,12 +10291,6 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> register_now Register Now - - core - public_login - complete_form - You must complete both fields - core public_login @@ -10303,12 +10303,6 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> validating_remote - - core - public_login - macro__liveicon - Live Icon - core public_login @@ -10318,8 +10312,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_login - macro__signin - Sign in icon + macro__liveicon + Live Icon core @@ -10330,14 +10324,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_login - macro__help - Help + macro__signin + Sign in icon core public_login - login_w_twitter_desc - click here]]> + macro__help + Help core @@ -10345,6 +10339,12 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> login_w_twitter Sign in with your Twitter account + + core + public_login + login_w_twitter_desc + click here]]> + core public_login @@ -10354,8 +10354,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_login - twitter_connect_account_desc - this page to connect your forum account with your Twitter account]]> + register_prompt_2 + Register now! core @@ -10366,8 +10366,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_login - register_prompt_2 - Register now! + twitter_connect_account_desc + this page to connect your forum account with your Twitter account]]> core @@ -10576,14 +10576,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_modcp - warn_details - Warn Details + warn_rep + Reputation: core public_modcp - warn_rep - Reputation: + warn_details + Warn Details core @@ -10696,14 +10696,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_modcp - announce_form_title - Announcement Title + announce_form_announce + Announcement Post core public_modcp - announce_form_announce - Announcement Post + announce_form_title + Announcement Title core @@ -10780,8 +10780,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_modcp - announce_page_disabled - (Not Active) + announce_del2 + Ok, no action taken! core @@ -10792,8 +10792,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_modcp - announce_del2 - Ok, no action taken! + announce_page_disabled + (Not Active) core @@ -10804,26 +10804,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_modcp - ipm_group - Group - - - core - public_modcp - ipm_edit - Edit Member - - - core - public_modcp - menu_ipsearch - IP Address Look-up Tool - - - core - public_modcp - menu_memsearch - Member Look-up Tool + modip_viewposts + View post core @@ -10834,8 +10816,26 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_modcp - modip_viewposts - View post + menu_memsearch + Member Look-up Tool + + + core + public_modcp + menu_ipsearch + IP Address Look-up Tool + + + core + public_modcp + ipm_edit + Edit Member + + + core + public_modcp + ipm_group + Group core @@ -10864,26 +10864,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_modcp - cp_no_matches - There was no data returned from your search input, please try again - - - core - public_modcp - ip_resolve - Resolve - - - core - public_modcp - ip_posts - Find Posts - - - core - public_modcp - ip_members - Find Members + ipm_name + Name core @@ -10894,8 +10876,26 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_modcp - ipm_name - Name + ip_members + Find Members + + + core + public_modcp + ip_posts + Find Posts + + + core + public_modcp + ip_resolve + Resolve + + + core + public_modcp + cp_no_matches + There was no data returned from your search input, please try again core @@ -10924,20 +10924,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_modcp - ip_desc_text - Resolve IP Address: This option will allow you to look up an IP address for more information (note, you must enter all parts of the IP address to use this tool)
    Find Posts with this IP: This option will run a search for all posts associated with this IP address (limited to 500 results)
    Find members who registered with this IP: This tool will run a seach for all members who registered with the entered IP address]]>
    -
    - - core - public_modcp - ipp_found - Your search returned (at least) the following number of matching posts: - - - core - public_modcp - cp_find_submit - Find user + cp_edit_user + Member Look-up core @@ -10948,8 +10936,20 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_modcp - cp_edit_user - Member Look-up + cp_find_submit + Find user + + + core + public_modcp + ipp_found + Your search returned (at least) the following number of matching posts: + + + core + public_modcp + ip_desc_text + Resolve IP Address: This option will allow you to look up an IP address for more information (note, you must enter all parts of the IP address to use this tool)
    Find Posts with this IP: This option will run a search for all posts associated with this IP address (limited to 500 results)
    Find members who registered with this IP: This tool will run a seach for all members who registered with the entered IP address]]>
    core @@ -10984,8 +10984,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_modcp - modcp_modq_indef - Indefinitely + addnote_tab + Add Note core @@ -10996,8 +10996,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_modcp - addnote_tab - Add Note + modcp_modq_indef + Indefinitely core @@ -11032,20 +11032,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_modcp - memberlookup_title - Member Lookup - - - core - public_modcp - plugin_not_found - We could not find the tab you requested. - - - core - public_modcp - flag_spam_done - User Flagged As Spam Account + edit_user_status + Member Status core @@ -11056,8 +11044,20 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_modcp - edit_user_status - Member Status + flag_spam_done + User Flagged As Spam Account + + + core + public_modcp + plugin_not_found + We could not find the tab you requested. + + + core + public_modcp + memberlookup_title + Member Lookup core @@ -11158,8 +11158,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_modcp - w_v_reason - Reason + w_v_custom + Custom Warning core @@ -11170,8 +11170,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_modcp - w_v_custom - Custom Warning + w_v_reason + Reason core @@ -11218,14 +11218,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_modcp - w_v_none - There are no saved notes for this member + w_v_add + Added to warn level core public_modcp - w_v_add - Added to warn level + w_v_none + There are no saved notes for this member core @@ -11302,14 +11302,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_modcp - restore_topic - Restore + restore_topic_desc + Restore this topic to its original forum core public_modcp - restore_topic_desc - Restore this topic to its original forum + restore_topic + Restore core @@ -11320,14 +11320,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_modcp - go_to_topic - Go to this topic + perm_delete_topic + Permanently delete core public_modcp - perm_delete_topic - Permanently delete + go_to_topic + Go to this topic core @@ -11338,14 +11338,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_modcp - deleted_post_date - Deleted + delete_from_topic + From topic core public_modcp - delete_from_topic - From topic + deleted_post_date + Deleted core @@ -11416,14 +11416,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_modcp - moved_topic_link - Moved topic link: + go_back_modcp + Go back to ModCP core public_modcp - go_back_modcp - Go back to ModCP + moved_topic_link + Moved topic link: core @@ -11458,14 +11458,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_modcp - hard_delete_warn_post - This post has been removed from the topic and will be automatically deleted soon + cp_can_post_status_updates + Can post status updates? core public_modcp - cp_can_post_status_updates - Can post status updates? + hard_delete_warn_post + This post has been removed from the topic and will be automatically deleted soon core @@ -11902,14 +11902,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_register - coppa_form_text - to the administrator of the community before a child under the age of 13 can complete the registration process.
    For further information, please contact the forum administrator]]>
    + coppa_link + Please select your birthday
    core public_register - coppa_link - Please select your birthday + coppa_form_text + to the administrator of the community before a child under the age of 13 can complete the registration process.
    For further information, please contact the forum administrator]]>
    core @@ -11923,6 +11923,12 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> confirm_over_thirteen Please supply your birthday to continue + + core + public_register + ne_subject + Email change request at %s + core public_register @@ -11941,12 +11947,6 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> email_reg_subj New Registration at %s - - core - public_register - ne_subject - Email change request at %s - core public_register @@ -11968,14 +11968,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_register - err_no_username - You must enter a valid username between 3 and 32 characters + errors_found + The Following Errors Were Found core public_register - errors_found - The Following Errors Were Found + err_no_username + You must enter a valid username between 3 and 32 characters core @@ -11992,32 +11992,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_register - err_complete_form - This field is required and must be completed - - - core - public_register - lpf_pass22 - It must match exactly - - - core - public_register - lpf_pass2 - Re-enter your new password - - - core - public_register - lpf_pass1 - Enter a new password - - - core - public_register - lpf_pass11 - It must be no more than 32 characters and no less than 3 characters + lpass_text + An email containing further activation instructions has been sent. This email should be received within the next 10 minutes (usually instantly). core @@ -12034,8 +12010,32 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_register - lpass_text - An email containing further activation instructions has been sent. This email should be received within the next 10 minutes (usually instantly). + lpf_pass1 + Enter a new password + + + core + public_register + lpf_pass11 + It must be no more than 32 characters and no less than 3 characters + + + core + public_register + lpf_pass2 + Re-enter your new password + + + core + public_register + lpf_pass22 + It must match exactly + + + core + public_register + err_complete_form + This field is required and must be completed core @@ -12043,12 +12043,6 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> rv_name Sign in name - - core - public_register - rv_ins_both - Please enter your sign in name or email below to search for any pending validation requests. If any are found, the email will be resent to the email address you registered with. - core public_register @@ -12058,8 +12052,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_register - rv_ins_email - Please enter your sign in email below to search for any pending validation requests. If any are found, the email will be resent to the email address you registered with. + rv_ins_both + Please enter your sign in name or email below to search for any pending validation requests. If any are found, the email will be resent to the email address you registered with. core @@ -12070,8 +12064,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_register - rv_done - Your revalidation request was successful
    A revalidation email has been sent to the registered address for that member. Please check your email within the next few minutes - including any 'junk mail' or 'spam' folders you may have.]]>
    + rv_ins_email + Please enter your sign in email below to search for any pending validation requests. If any are found, the email will be resent to the email address you registered with.
    core @@ -12079,6 +12073,12 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> rv_process Revalidation Process + + core + public_register + rv_done + Your revalidation request was successful
    A revalidation email has been sent to the registered address for that member. Please check your email within the next few minutes - including any 'junk mail' or 'spam' folders you may have.]]>
    +
    core public_register @@ -12103,12 +12103,6 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> email_address_confirm Confirm Email Address - - core - public_register - tc_regbut - Continue Registration - core public_register @@ -12118,8 +12112,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_register - tc_text - In order to proceed, you must agree to the following: + tc_regbut + Continue Registration core @@ -12127,6 +12121,12 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> tc_title + + core + public_register + tc_text + In order to proceed, you must agree to the following: + core public_register @@ -12142,14 +12142,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_register - reg_error_email_nm - The email addresses do not match + reg_error_email_taken + The email address is already in use core public_register - reg_error_email_taken - The email address is already in use + reg_error_email_nm + The email addresses do not match core @@ -12157,36 +12157,24 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> reg_error_username_taken That username is already taken - - core - public_register - reg_error_chars - - core public_register dname_name Display name + + core + public_register + reg_error_chars + + core public_register clogin_text - - core - public_register - coppa_bounce - You must either cancel your registration or have your parent complete the COPPA registration form and send it to us - - - core - public_register - clogin_submit - Continue... - core public_register @@ -12202,14 +12190,20 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_register - new_registration_email_spammer - Possible Spammer Registered at %s + coppa_bounce + You must either cancel your registration or have your parent complete the COPPA registration form and send it to us core public_register - new_registration_email1 - New Registration at %s + clogin_submit + Continue... + + + core + public_register + new_registration_email_spammer + Possible Spammer Registered at %s core @@ -12220,8 +12214,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_register - lpass_text_random - An email has been sent to your registered email address containing your new password. + new_registration_email1 + New Registration at %s core @@ -12235,6 +12229,12 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> lp_random_pass Click the proceed button below to have a new password emailed to the email address registered to your account. + + core + public_register + lpass_text_random + An email has been sent to your registered email address containing your new password. + core public_register @@ -12313,6 +12313,12 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> coppa_continue_button Continue + + core + public_register + select_day + Day + core public_register @@ -12325,30 +12331,24 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> select_month Month - - core - public_register - select_day - Day - core public_register validation_complete Validation Complete - - core - public_register - err_q_and_a - Your answer to the challenge question was not valid. Please try again. - core public_register qa_question_desc This helps to protect us against spammers. + + core + public_register + err_q_and_a + Your answer to the challenge question was not valid. Please try again. + core public_register @@ -12358,14 +12358,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_register - qa_title - Challenge Question + fb_complete_reg + Complete Registration Now core public_register - fb_complete_reg - Complete Registration Now + qa_title + Challenge Question core @@ -12385,12 +12385,6 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> reg_step3 Additional Information - - core - public_register - auto_dst_detection - Enable automatic DST detection? - core public_register @@ -12400,14 +12394,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_register - receive_admin_emails - Send me news and information + auto_dst_detection + Enable automatic DST detection? core public_register - reg_step2 - Community Options + reg_choose_password_desc + Between 3 and 32 characters core @@ -12418,14 +12412,20 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_register - reg_choose_password - Password + reg_step2 + Community Options core public_register - reg_choose_password_desc - Between 3 and 32 characters + receive_admin_emails + Send me news and information + + + core + public_register + reg_choose_password + Password core @@ -12442,14 +12442,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_register - reg_choose_dname - Username + reg_enter_email + E-mail Address core public_register - reg_enter_email - E-mail Address + reg_choose_dname + Username core @@ -12457,12 +12457,6 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> char_cant_use [ ] | ; , $ \ < > "]]> - - core - public_register - reg_step1 - Account Information - core public_register @@ -12472,8 +12466,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_register - goto_signin - Go to sign in + reg_step1 + Account Information core @@ -12481,6 +12475,12 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> reg_errors_found Errors were found with your registration. Please correct the highlighted fields below. + + core + public_register + goto_signin + Go to sign in + core public_register @@ -12529,12 +12529,6 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> reg_with_facebook Register Using Facebook - - core - public_register - forum_terms - - core public_register @@ -12544,8 +12538,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_register - complete_form - Please complete the form fully + forum_terms + core @@ -12556,8 +12550,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_register - lost_your_password - + complete_form + Please complete the form fully core @@ -12568,14 +12562,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_register - reg_step4_spam - Verify you are a human - - - core - public_register - reg_step3_spam - Verify you are a human + lost_your_password + core @@ -12583,6 +12571,18 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> register Create Account + + core + public_register + reg_step3_spam + Verify you are a human + + + core + public_register + reg_step4_spam + Verify you are a human + core public_register @@ -12592,14 +12592,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_register - connect_incorrect_details - Incorrect email address or password + connect_already_linked + The forum account %s is already connected to a %s user core public_register - connect_already_linked - The forum account %s is already connected to a %s user + connect_incorrect_details + Incorrect email address or password core @@ -12631,12 +12631,6 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> connect_password_desc currently use to log in to this community]]> - - core - public_register - connect_password - Password - core public_register @@ -12646,8 +12640,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_register - connect_username - Email Address + connect_password + Password core @@ -12655,6 +12649,12 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> connect_account_desc do already have forum account, complete this section:]]> + + core + public_register + connect_username + Email Address + core public_register @@ -12664,38 +12664,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_register - use_an_existing_acc - EXISTING forum account]]> - - - core - public_register - fb_login_title - Facebook Sign In - - - core - public_register - login_w_facebook - Sign in with your Facebook account - - - core - public_register - twitter_login_title - Twitter Sign In - - - core - public_register - login_w_twitter - Sign in with your Twitter account - - - core - public_register - new_account_title - Create a new forum account + connect_account_submit + Connect Accounts core @@ -12712,8 +12682,38 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_register - connect_account_submit - Connect Accounts + new_account_title + Create a new forum account + + + core + public_register + login_w_twitter + Sign in with your Twitter account + + + core + public_register + twitter_login_title + Twitter Sign In + + + core + public_register + login_w_facebook + Sign in with your Facebook account + + + core + public_register + fb_login_title + Facebook Sign In + + + core + public_register + use_an_existing_acc + EXISTING forum account]]> core @@ -12730,14 +12730,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_register - mobile_agree_to_tos - I AGREE + want_to_save_time + Want to save time? core public_register - want_to_save_time - Want to save time? + mobile_agree_to_tos + I AGREE core @@ -12760,8 +12760,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_register - regstep_your_account - Your Account + must_agree_to_terms + You must agree to the terms. core @@ -12772,8 +12772,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_register - must_agree_to_terms - You must agree to the terms. + regstep + Step %s core @@ -12784,8 +12784,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_register - regstep - Step %s + regstep_your_account + Your Account core @@ -12796,8 +12796,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_register - required_field - Required Information + mobile_cant_register + Unfortunately we cannot offer mobile registration at this time. Please create an account on another device, then you will be able to sign in here. core @@ -12808,14 +12808,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_register - mobile_cant_register - Unfortunately we cannot offer mobile registration at this time. Please create an account on another device, then you will be able to sign in here. - - - core - public_register - validate_instructions_2 - If you have not received an email, %s to resend it. + required_field + Required Information core @@ -12823,6 +12817,12 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> validate_instructions_click click here + + core + public_register + validate_instructions_2 + If you have not received an email, %s to resend it. + core public_register @@ -13040,6 +13040,12 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> user_id User ID: + + core + public_reports + reports_methods_saved + Your notification preferences have been saved + core public_reports @@ -13055,14 +13061,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_reports - active_users_title - %s user(s) are viewing - - - core - public_reports - redirect_delete_report - Deleting Reports... + report_option_prune + Prune Reports... core @@ -13073,26 +13073,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_reports - report_option_prune - Prune Reports... + redirect_delete_report + Deleting Reports... core public_reports - report_option_delete - Delete Reports - - - core - public_reports - report_page_title_unknown - Unknown Title - - - core - public_reports - report_sending - Sending Report... + active_users_title + %s user(s) are viewing core @@ -13100,6 +13088,24 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> report_basic_submit Submit Report + + core + public_reports + report_sending + Sending Report... + + + core + public_reports + report_page_title_unknown + Unknown Title + + + core + public_reports + report_option_delete + Delete Reports + core public_reports @@ -13109,14 +13115,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_reports - report_post_title - Report this post to a moderator + report_post_url_title + Topic Title core public_reports - report_post_url_title - Topic Title + report_post_title + Report this post to a moderator core @@ -13217,14 +13223,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_reports - report_actions_mark_optgroup - Mark Report As - - - core - public_reports - report_actions - Report Options + report_mem_msg + Enter your report]]> core @@ -13235,8 +13235,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_reports - report_mem_msg - Enter your report]]> + report_actions + Report Options + + + core + public_reports + report_actions_mark_optgroup + Mark Report As core @@ -13337,14 +13343,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_reports - reports_h2 - Reports + posted_prefix + Posted core public_reports - posted_prefix - Posted + reports_h2 + Reports core @@ -13361,14 +13367,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_reports - current_status - Current Status: + change_current_status + Change Current Status core public_reports - change_current_status - Change Current Status + current_status + Current Status: core @@ -13457,14 +13463,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_reports - click_here_link - Click here - - - core - public_reports - to_view_allrep - to view all reports. + reports_no_comment_text + You did not submit a comment to save. core @@ -13475,8 +13475,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_reports - reports_no_comment_text - You did not submit a comment to save. + to_view_allrep + to view all reports. + + + core + public_reports + click_here_link + Click here core @@ -13487,14 +13493,8 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_reports - invalid_option - Invalid Option Selected - - - core - public_reports - report_no_title - No report title + report_prune_2 + days old core @@ -13505,14 +13505,14 @@ your chosen details and access your full user account at <#BOARD_ADDRESS#> core public_reports - report_prune_2 - days old + report_no_title + No report title core public_reports - reports_methods_saved - Your notification preferences have been saved + invalid_option + Invalid Option Selected core @@ -13630,6 +13630,12 @@ Comment: ------------------------------------------------ ]]> + + core + public_search + search_invalid_date_future + One or both of the dates in your search are in the future, please check your date range and try again + core public_search @@ -13645,8 +13651,8 @@ Comment: core public_search - quick_search - Quick Search + search_term_short + core @@ -13657,8 +13663,8 @@ Comment: core public_search - search_term_short - + quick_search + Quick Search core @@ -13675,14 +13681,14 @@ Comment: core public_search - user_posts_have_been - There have been + on + on core public_search - on - on + user_posts_have_been + There have been core @@ -13780,12 +13786,6 @@ Comment: active_content Active content in the last %s - - core - public_search - no_results_found_for - for - core public_search @@ -13795,8 +13795,8 @@ Comment: core public_search - sort_by_date - Sort by Date + no_results_found_for + for core @@ -13807,8 +13807,8 @@ Comment: core public_search - your_search_results - results + sort_by_date + Sort by Date core @@ -13819,8 +13819,8 @@ Comment: core public_search - your_search_returned - returned + your_search_results + results core @@ -13828,6 +13828,12 @@ Comment: your_search Your search for the term + + core + public_search + your_search_returned + returned + core public_search @@ -13843,8 +13849,8 @@ Comment: core public_search - gallery_posted_by - Posted by + gallery_image + Image core @@ -13855,8 +13861,8 @@ Comment: core public_search - gallery_image - Image + gallery_posted_by + Posted by core @@ -13867,14 +13873,8 @@ Comment: core public_search - core_help - Help - - - core - public_search - member_joined - Joined on + calendar_event + Event core @@ -13885,8 +13885,14 @@ Comment: core public_search - calendar_event - Event + member_joined + Joined on + + + core + public_search + core_help + Help core @@ -13900,12 +13906,6 @@ Comment: forum_replies replies - - core - public_search - forum_topic - Topic - core public_search @@ -13915,8 +13915,8 @@ Comment: core public_search - search_by - by + forum_topic + Topic core @@ -13924,6 +13924,12 @@ Comment: view_result View result + + core + public_search + search_by + by + core public_search @@ -13942,6 +13948,12 @@ Comment: to to + + core + public_search + find_author + Find author + core public_search @@ -13954,12 +13966,6 @@ Comment: show_as_titles Show results as titles - - core - public_search - find_author - Find author - core public_search @@ -14035,14 +14041,14 @@ Comment: core public_search - s_search_type_o_1 - Ascending + s_search_type_o_0 + Descending core public_search - s_search_type_o_0 - Descending + s_search_type_o_1 + Ascending core @@ -14053,14 +14059,14 @@ Comment: core public_search - s_search_type - Result sorting + s_search_type_0 + Last Update Time core public_search - s_search_type_0 - Last Update Time + s_search_type + Result sorting core @@ -14245,14 +14251,14 @@ Comment: core public_search - s_msin_members - Members + s_msin_comments + Profile Feed core public_search - s_msin_comments - Profile Feed + s_msin_members + Members core @@ -14470,12 +14476,6 @@ Comment: find_by_tags_desc Separate multiple tags with commas - - core - public_search - member_posts - posts - core public_search @@ -14485,8 +14485,8 @@ Comment: core public_search - sort_by - Sort by + member_posts + posts core @@ -14494,6 +14494,12 @@ Comment: order Order + + core + public_search + sort_by + Sort by + core public_search @@ -14635,14 +14641,14 @@ Comment: core public_search - search_aft_in - in + aft_started_by + Started by core public_search - aft_started_by - Started by + search_aft_in + in core @@ -14653,14 +14659,14 @@ Comment: core public_search - search_all - All + n_posted + Posted core public_search - n_posted - Posted + search_all + All core @@ -14692,12 +14698,6 @@ Comment: followed_changeopts Change - - core - public_search - search_invalid_date_future - One or both of the dates in your search are in the future, please check your date range and try again - core public_search @@ -15019,8 +15019,8 @@ Comment: core public_usercp - attach_topicmoved - Unavailable]]> + m_attach + Manage Attachments core @@ -15031,8 +15031,8 @@ Comment: core public_usercp - m_attach - Manage Attachments + attach_topicmoved + Unavailable]]> core @@ -15067,14 +15067,14 @@ Comment: core public_usercp - ucp_title_posting - Posting Settings + enable_rte + Enable visual (RTE) editor? core public_usercp - enable_rte - Enable visual (RTE) editor? + ucp_title_posting + Posting Settings core @@ -15115,14 +15115,14 @@ Comment: core public_usercp - dname_title - Change Display Name + dname_string + %s of %s display name changes since %s. You are permitted to make %s changes in a %s day period.
    ]]>
    core public_usercp - dname_string - %s of %s display name changes since %s. You are permitted to make %s changes in a %s day period.
    ]]>
    + dname_title + Change Display Name
    core @@ -15151,14 +15151,14 @@ Comment: core public_usercp - dname_change_ok - Display name changed successfully + m_choose_fmod_type + Choose the type of moderation for when new friends are added core public_usercp - m_choose_fmod_type - Choose the type of moderation for when new friends are added + dname_change_ok + Display name changed successfully core @@ -15193,14 +15193,14 @@ Comment: core public_usercp - noignoreuser_noid - We could not find the member you were attempting to remove from your ignore list, or you are not ignoring that user + cp_edit_aboutme + core public_usercp - cp_edit_aboutme - + noignoreuser_noid + We could not find the member you were attempting to remove from your ignore list, or you are not ignoring that user core @@ -15235,8 +15235,8 @@ Comment: core public_usercp - ignoreuser_nomem - We could not find a member that matches that name + cp_aboutme_desc + About Me page is a good place to provide a little additional information about yourself. This information is shown in your profile for other members to read.]]> core @@ -15247,14 +15247,14 @@ Comment: core public_usercp - cp_aboutme_desc - About Me page is a good place to provide a little additional information about yourself. This information is shown in your profile for other members to read.]]> + ignoreuser_nomem + We could not find a member that matches that name core public_usercp - change_aboutme - About Me Page + captcha_email_invalid + That CAPTCHA input did not match the CAPTCHA image. core @@ -15265,8 +15265,8 @@ Comment: core public_usercp - captcha_email_invalid - That CAPTCHA input did not match the CAPTCHA image. + change_aboutme + About Me Page core @@ -15313,14 +15313,14 @@ Comment: core public_usercp - name_change_noperm - That name is already in use, please choose another. + name_change_noload + We could not load the member core public_usercp - name_change_noload - We could not load the member + name_change_noperm + That name is already in use, please choose another. core @@ -15385,14 +15385,14 @@ Comment: core public_usercp - ucp_dst_now - My timezone is currently in DST + ucp_dst_effect + Is DST currently in effect? core public_usercp - ucp_dst_effect - Is DST currently in effect? + ucp_dst_now + My timezone is currently in DST core @@ -15406,12 +15406,6 @@ Comment: ucp_other_info Other Information - - core - public_usercp - ucp_required_info - Required Information - core public_usercp @@ -15421,14 +15415,14 @@ Comment: core public_usercp - ucp_friend_notify - Friend Notification Type + ucp_required_info + Required Information core public_usercp - ucp_friend_approve - + ucp_birthday_select + My Birthday core @@ -15439,8 +15433,14 @@ Comment: core public_usercp - ucp_birthday_select - My Birthday + ucp_friend_approve + + + + core + public_usercp + ucp_friend_notify + Friend Notification Type core @@ -15487,14 +15487,8 @@ Comment: core public_usercp - ucp_members_name - - - - core - public_usercp - ucp_ignore_msgs - Messenger + ucp_ignored_users + Ignore Preferences core @@ -15505,14 +15499,14 @@ Comment: core public_usercp - ucp_ignored_users - Ignore Preferences + ucp_ignore_msgs + Messenger core public_usercp - ucp_reply_since - topic(s) have new replies since your last visit + ucp_members_name + core @@ -15520,24 +15514,18 @@ Comment: ucp_watched_forums Watched Forums + + core + public_usercp + ucp_reply_since + topic(s) have new replies since your last visit + core public_usercp ucp_select_category Select a Category - - core - public_usercp - ucp_full - full - - - core - public_usercp - ucp_user_attach - User Attachments - core public_usercp @@ -15550,12 +15538,30 @@ Comment: ucp_gravatar_enter_email Gravatar e-mail address]]> + + core + public_usercp + ucp_user_attach + User Attachments + + + core + public_usercp + ucp_full + full + core public_usercp ucp_attach_allowance Your attachment allowance is + + core + public_usercp + settings_for_coretab + General Settings + core public_usercp @@ -15568,12 +15574,6 @@ Comment: settings_for_ucp Settings for %s - - core - public_usercp - settings_for_coretab - General Settings - core public_usercp @@ -15607,14 +15607,14 @@ Comment: core public_usercp - sig_toomanyimages - You may only use up to %s images in your signature. + m_facebook + Manage Facebook core public_usercp - m_facebook - Manage Facebook + sig_toomanyimages + You may only use up to %s images in your signature. core @@ -15628,60 +15628,54 @@ Comment: sig_max_lines Up to %s lines - - core - public_usercp - sig_max_urls - Up to %s URLs - core public_usercp sig_max_urls_nl Any number of URLs - - core - public_usercp - sig_max_imagesr_nl - Any number images - - - core - public_usercp - sig_max_imgsize - Images up to %s x %s pixels - core public_usercp sig_max_imgsize_nl Images of any size + + core + public_usercp + sig_max_urls + Up to %s URLs + + + core + public_usercp + sig_max_imgsize + Images up to %s x %s pixels + + + core + public_usercp + sig_max_imagesr_nl + Any number images + core public_usercp sig_max_imagesr Up to %s images - - core - public_usercp - sig_restrictions - Signature Restrictions - - - core - public_usercp - sig_restrictions_contain - Your signature may contain: - core public_usercp topic_title Topic title + + core + public_usercp + sig_restrictions_contain + Your signature may contain: + core public_usercp @@ -15691,8 +15685,8 @@ Comment: core public_usercp - fb_permissions - Facebook Permissions + sig_restrictions + Signature Restrictions core @@ -15700,6 +15694,12 @@ Comment: fb_permissions_desc We have detected that one or more permissions have not been granted. Granting the site permission to read and publish to your Facebook Timeline will allow you to synchronize your status updates between your profiles on both sites. Click the button below to review your permissions. + + core + public_usercp + fb_permissions + Facebook Permissions + core public_usercp @@ -15847,8 +15847,8 @@ Comment: core public_usercp - cannot_get_email_2 - Until you allow emails from this forum, you will not receive topic subscription notifications, new personal message notifications, etc. + h_replies + Replies core @@ -15865,14 +15865,8 @@ Comment: core public_usercp - h_replies - Replies - - - core - public_usercp - h_topic_starter - Topic Starter + cannot_get_email_2 + Until you allow emails from this forum, you will not receive topic subscription notifications, new personal message notifications, etc. core @@ -15880,6 +15874,12 @@ Comment: h_last_action Last Action + + core + public_usercp + h_topic_starter + Topic Starter + core public_usercp @@ -15931,14 +15931,14 @@ Comment: core public_usercp - op_dd_none - No Notification + pp_cannot_find_member + Please reload the page and try again. If you continue to experience problems, please contact an administrator. core public_usercp - pp_cannot_find_member - Please reload the page and try again. If you continue to experience problems, please contact an administrator. + op_dd_none + No Notification core @@ -15964,6 +15964,12 @@ Comment: pp_no_photo_upload_permission You do not have permission to upload a personal photo. + + core + public_usercp + tab__core + Settings + core public_usercp @@ -15979,8 +15985,8 @@ Comment: core public_usercp - tab__core - Settings + ucp_forum_search_display_1 + Show results as a list core @@ -15988,12 +15994,6 @@ Comment: admin_val_no_email_chg You cannot change your email address until the administrator validates your account. - - core - public_usercp - ucp_forum_search_display_1 - Show results as a list - core public_usercp @@ -16012,12 +16012,6 @@ Comment: ucp_vnc_type_1 Show me all content that I have not read - - core - public_usercp - ucp_vnc_type_0 - Show me all new content since my last visit - core public_usercp @@ -16033,8 +16027,14 @@ Comment: core public_usercp - ucp_status_notify_all - Notify me by e-mail when a reply is made to any status I have replied to + ucp_vnc_type_0 + Show me all new content since my last visit + + + core + public_usercp + ucp_status_email + Status Update Settings core @@ -16045,8 +16045,8 @@ Comment: core public_usercp - ucp_status_email - Status Update Settings + ucp_status_notify_all + Notify me by e-mail when a reply is made to any status I have replied to core @@ -16063,14 +16063,14 @@ Comment: core public_usercp - notify_type_mobile - Push Notifications + notify_type_inline + Notification List core public_usercp - notify_type_inline - Notification List + notify_type_mobile + Push Notifications core @@ -16177,14 +16177,14 @@ Comment: core public_usercp - notify__short__new_topic_queue - Topic pending approval + notify__short__profile_comment + Profile comments core public_usercp - notify__short__profile_comment - Profile comments + notify__short__new_topic_queue + Topic pending approval core @@ -16207,14 +16207,14 @@ Comment: core public_usercp - notify__short__reputation_received - Received reputation points + notify__short__report_center + Reported content core public_usercp - notify__short__report_center - Reported content + notify__short__reputation_received + Received reputation points core @@ -16243,14 +16243,14 @@ Comment: core public_usercp - notify__reply_your_status - Notify me of replies to my status updates + notify__reply_any_status + Notify me of replies to status updates I have replied to core public_usercp - notify__reply_any_status - Notify me of replies to status updates I have replied to + notify__reply_your_status + Notify me of replies to my status updates core @@ -16372,12 +16372,6 @@ Comment: notifications_info_acp Not all notification methods may be available for all notification events. - - core - public_usercp - admin_no_notify_config - The administrator does not allow you to override this configuration - core public_usercp @@ -16387,8 +16381,8 @@ Comment: core public_usercp - notopt__email - Email + admin_no_notify_config + The administrator does not allow you to override this configuration core @@ -16396,6 +16390,12 @@ Comment: notopt__inline Inline Notifications + + core + public_usercp + notopt__email + Email + core public_usercp @@ -16411,8 +16411,8 @@ Comment: core public_usercp - ndel_selected - Delete Selected + notifications_table_head + Inline notifications for this user core @@ -16423,8 +16423,8 @@ Comment: core public_usercp - notifications_table_head - Inline notifications for this user + ndel_selected + Delete Selected core @@ -16432,6 +16432,12 @@ Comment: notifications_none You have no saved notifications + + core + public_usercp + m_arch_notify + My Notifications + core public_usercp @@ -16444,12 +16450,6 @@ Comment: notifyview_date Sent: - - core - public_usercp - m_arch_notify - My Notifications - core public_usercp @@ -16543,14 +16543,14 @@ Comment: core public_usercp - tc_logged_in_as - You are logged into Twitter as + tc_sync_options + Twitter to Community Account Synchronization Options core public_usercp - tc_sync_options - Twitter to Community Account Synchronization Options + tc_logged_in_as + You are logged into Twitter as core @@ -16585,14 +16585,14 @@ Comment: core public_usercp - fbp_read_stream - Read Stream + fbp_publish_stream + Publish Stream core public_usercp - fbp_publish_stream - Publish Stream + fbp_read_stream + Read Stream core @@ -16609,14 +16609,14 @@ Comment: core public_usercp - fbp_title - Facebook Connect Permission Check + fbp_request + Request Permission core public_usercp - fbp_request - Request Permission + fbp_title + Facebook Connect Permission Check core @@ -16624,12 +16624,6 @@ Comment: ucp_cust_remove_imgs Remove background image - - core - public_usercp - ucp_cust_remove - Remove my customizations - core public_usercp @@ -16639,8 +16633,8 @@ Comment: core public_usercp - pp_view_profile - + ucp_cust_remove + Remove my customizations core @@ -16648,6 +16642,12 @@ Comment: pp_bgimg_ext_bad You can only upload png, jpg, or gif images + + core + public_usercp + pp_view_profile + + core public_usercp @@ -16702,24 +16702,18 @@ Comment: ucp_cust_bg_image_upl Upload a file + + core + public_usercp + ucp_cust_bg_image_img + Enter a URL to an image + core public_usercp ucp_cust_bg_image_img_d The URL must start with http://. Only png, jpg and gifs are accepted - - core - public_usercp - ucp_cust_bg - Profile Background - - - core - public_usercp - ucp_cust_bg_title - Choose Background - core public_usercp @@ -16729,14 +16723,14 @@ Comment: core public_usercp - ucp_cust_bg_image_img - Enter a URL to an image + ucp_cust_bg_title + Choose Background core public_usercp - m_customize - Profile Customization + ucp_cust_bg + Profile Background core @@ -16744,6 +16738,12 @@ Comment: ucp_customize_msg This page allows you to customize your profile background. These customizations will be shown to all members visiting your profile page. + + core + public_usercp + m_customize + Profile Customization + core public_usercp @@ -16768,12 +16768,6 @@ Comment: fb_sync_status_in Community Status with my Facebook status (Import a status)]]> - - core - public_usercp - pf__unlimited - Unlimited - core public_usercp @@ -16783,8 +16777,8 @@ Comment: core public_usercp - view_notification_logcontent - View content + pf__unlimited + Unlimited core @@ -16792,6 +16786,12 @@ Comment: view_notification_logentry View notification + + core + public_usercp + view_notification_logcontent + View content + core public_usercp @@ -16810,12 +16810,6 @@ Comment: remote_no_password Set a local password - - core - public_usercp - remote_pass_set - You can set a local password here. This will allow you to log in directly to the community and browse from your mobile device. This is optional and will not change how you currently log in - core public_usercp @@ -16825,8 +16819,14 @@ Comment: core public_usercp - enter_pass_remote1 - Enter a local password + remote_pass_set + You can set a local password here. This will allow you to log in directly to the community and browse from your mobile device. This is optional and will not change how you currently log in + + + core + public_usercp + notificationlog_mar + Mark All Read core @@ -16837,8 +16837,8 @@ Comment: core public_usercp - notificationlog_mar - Mark All Read + enter_pass_remote1 + Enter a local password core @@ -16927,14 +16927,14 @@ Comment: core public_usercp - ucp_ignore_sigs_glb - Hide + ucp_ignore_sigs + Signature core public_usercp - ucp_ignore_sigs - Signature + ucp_ignore_sigs_glb + Hide core @@ -16948,12 +16948,6 @@ Comment: ucp_global_prefs_desc Ignore all signatures when reading topics and personal messages - - core - public_usercp - ucp_global_prefs - Global Preferences - core public_usercp @@ -16963,14 +16957,8 @@ Comment: core public_usercp - m_email_pass_change_desc - - - - core - public_usercp - ucp_photo_change - Change my photo... + ucp_global_prefs + Global Preferences core @@ -16981,8 +16969,14 @@ Comment: core public_usercp - auto_but_no_email - You are automatically following all topics you reply to with no notification frequency selected. This will cause the topics to show in your followed content area, but you will not receive notifications for these topics. + ucp_photo_change + Change my photo... + + + core + public_usercp + m_email_pass_change_desc + core @@ -16993,8 +16987,14 @@ Comment: core public_usercp - general_account_settings - General Account Settings + auto_but_no_email + You are automatically following all topics you reply to with no notification frequency selected. This will cause the topics to show in your followed content area, but you will not receive notifications for these topics. + + + core + public_usercp + nots_pm_whatthef + Message notifications appear in the message list (the icon next to the notificatons icon at the top of the screen) core @@ -17005,8 +17005,8 @@ Comment: core public_usercp - nots_pm_whatthef - Message notifications appear in the message list (the icon next to the notificatons icon at the top of the screen) + general_account_settings + General Account Settings core diff --git a/upload/admin/applications/core/xml/versions.xml b/upload/admin/applications/core/xml/versions.xml index bf534558..969de713 100644 --- a/upload/admin/applications/core/xml/versions.xml +++ b/upload/admin/applications/core/xml/versions.xml @@ -400,4 +400,8 @@ 3.4.8 34014 + + 3.4.9 + 34015 + \ No newline at end of file diff --git a/upload/admin/applications/forums/app_class_forums.php b/upload/admin/applications/forums/app_class_forums.php index 419833b9..439feb72 100644 --- a/upload/admin/applications/forums/app_class_forums.php +++ b/upload/admin/applications/forums/app_class_forums.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Forums application initialization
      * Last Updated: $LastChangedDate: 2012-10-11 15:18:51 -0400 (Thu, 11 Oct 2012) $
      * 
    diff --git a/upload/admin/applications/forums/extensions/admin/group_form.php b/upload/admin/applications/forums/extensions/admin/group_form.php index 7cc40865..226ec099 100644 --- a/upload/admin/applications/forums/extensions/admin/group_form.php +++ b/upload/admin/applications/forums/extensions/admin/group_form.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since - * $LastChangedDate: 2011-03-03 13:09:09 -0500 (Thu, 03 Mar 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 7948 $ */ diff --git a/upload/admin/applications/forums/extensions/admin/member_form.php b/upload/admin/applications/forums/extensions/admin/member_form.php index 3f60eac5..8732915f 100644 --- a/upload/admin/applications/forums/extensions/admin/member_form.php +++ b/upload/admin/applications/forums/extensions/admin/member_form.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Member property updater (AJAX)
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/extensions/attachments/plugin_post.php b/upload/admin/applications/forums/extensions/attachments/plugin_post.php index 93708522..e5baee7c 100644 --- a/upload/admin/applications/forums/extensions/attachments/plugin_post.php +++ b/upload/admin/applications/forums/extensions/attachments/plugin_post.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * IP.Board post attachments plugin
      * Last Updated: $Date: 2012-12-06 17:57:19 -0500 (Thu, 06 Dec 2012) $
      * 
    diff --git a/upload/admin/applications/forums/extensions/coreExtensions.php b/upload/admin/applications/forums/extensions/coreExtensions.php index f705c603..da283d24 100644 --- a/upload/admin/applications/forums/extensions/coreExtensions.php +++ b/upload/admin/applications/forums/extensions/coreExtensions.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Forum permissions mappings
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    @@ -346,7 +346,7 @@ class forumsPermMappingForum /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Item Marking
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    @@ -493,7 +493,7 @@ class itemMarking__forums /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Fetch Skin
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    @@ -597,7 +597,7 @@ class fetchSkin__forums /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Library: Handle public session data
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/extensions/coreVariables.php b/upload/admin/applications/forums/extensions/coreVariables.php index b4826ac3..64524ce5 100644 --- a/upload/admin/applications/forums/extensions/coreVariables.php +++ b/upload/admin/applications/forums/extensions/coreVariables.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Core variables extensions
      * Defines the reset array, which caches to load, how to recache those caches, and the bitwise array
      * Last Updated: $Date: 2012-09-12 11:58:11 -0400 (Wed, 12 Sep 2012) $
    diff --git a/upload/admin/applications/forums/extensions/dataHookLocations.php b/upload/admin/applications/forums/extensions/dataHookLocations.php
    index 5f8740c1..2dc4b5af 100644
    --- a/upload/admin/applications/forums/extensions/dataHookLocations.php
    +++ b/upload/admin/applications/forums/extensions/dataHookLocations.php
    @@ -2,7 +2,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Define data hook locations (Forums)
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/extensions/editorSections.php b/upload/admin/applications/forums/extensions/editorSections.php index de10ec54..2b6f60c3 100644 --- a/upload/admin/applications/forums/extensions/editorSections.php +++ b/upload/admin/applications/forums/extensions/editorSections.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * BBCode Management : Determines if bbcode can be used in this section
      * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/extensions/furlRedirect.php b/upload/admin/applications/forums/extensions/furlRedirect.php index 8f7e1791..4fa23039 100644 --- a/upload/admin/applications/forums/extensions/furlRedirect.php +++ b/upload/admin/applications/forums/extensions/furlRedirect.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * RSS output plugin :: posts
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/extensions/furlTemplates.php b/upload/admin/applications/forums/extensions/furlTemplates.php index 424e8f7d..ee9c0f79 100644 --- a/upload/admin/applications/forums/extensions/furlTemplates.php +++ b/upload/admin/applications/forums/extensions/furlTemplates.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Sets up SEO templates
      * Last Updated: $Date: 2012-07-31 09:39:50 -0400 (Tue, 31 Jul 2012) $
      * 
    diff --git a/upload/admin/applications/forums/extensions/like/forums.php b/upload/admin/applications/forums/extensions/like/forums.php index 95c11696..52491437 100644 --- a/upload/admin/applications/forums/extensions/like/forums.php +++ b/upload/admin/applications/forums/extensions/like/forums.php @@ -7,7 +7,7 @@ * $Author: mmecham $ * @since 15th Feb 2011 * $LastChangedDate: 2013-03-26 11:49:49 -0400 (Tue, 26 Mar 2013) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 12124 $ */ diff --git a/upload/admin/applications/forums/extensions/like/topics.php b/upload/admin/applications/forums/extensions/like/topics.php index 24846fec..e7ee4443 100644 --- a/upload/admin/applications/forums/extensions/like/topics.php +++ b/upload/admin/applications/forums/extensions/like/topics.php @@ -6,7 +6,7 @@ * $License: http://www.invisionpower.com/company/standards.php#license$ * $Author: rashbrook $ * $LastChangedDate: 2014-10-30 14:22:29 -0400 (Thu, 30 Oct 2014) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 12558 $ */ diff --git a/upload/admin/applications/forums/extensions/memberSync.rename.php b/upload/admin/applications/forums/extensions/memberSync.rename.php index 8538be62..d507128f 100644 --- a/upload/admin/applications/forums/extensions/memberSync.rename.php +++ b/upload/admin/applications/forums/extensions/memberSync.rename.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Forum permissions mappings
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/extensions/modcp/plugin_announcements.php b/upload/admin/applications/forums/extensions/modcp/plugin_announcements.php index 68650c51..c40f3bbb 100644 --- a/upload/admin/applications/forums/extensions/modcp/plugin_announcements.php +++ b/upload/admin/applications/forums/extensions/modcp/plugin_announcements.php @@ -7,7 +7,7 @@ * $Author: bfarber $ * @since 2/18/2011 * $LastChangedDate: 2013-04-26 17:18:56 -0400 (Fri, 26 Apr 2013) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 12203 $ */ diff --git a/upload/admin/applications/forums/extensions/modcp/plugin_deletedposts.php b/upload/admin/applications/forums/extensions/modcp/plugin_deletedposts.php index e32c1604..e561be7d 100644 --- a/upload/admin/applications/forums/extensions/modcp/plugin_deletedposts.php +++ b/upload/admin/applications/forums/extensions/modcp/plugin_deletedposts.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 2/15/2011 * $LastChangedDate: 2012-05-22 13:10:11 -0400 (Tue, 22 May 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10783 $ */ diff --git a/upload/admin/applications/forums/extensions/modcp/plugin_deletedtopics.php b/upload/admin/applications/forums/extensions/modcp/plugin_deletedtopics.php index 0271b85b..aab506dc 100644 --- a/upload/admin/applications/forums/extensions/modcp/plugin_deletedtopics.php +++ b/upload/admin/applications/forums/extensions/modcp/plugin_deletedtopics.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 2/15/2011 * $LastChangedDate: 2012-05-22 13:10:11 -0400 (Tue, 22 May 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10783 $ */ diff --git a/upload/admin/applications/forums/extensions/modcp/plugin_unapprovedposts.php b/upload/admin/applications/forums/extensions/modcp/plugin_unapprovedposts.php index 16a88227..d2694862 100644 --- a/upload/admin/applications/forums/extensions/modcp/plugin_unapprovedposts.php +++ b/upload/admin/applications/forums/extensions/modcp/plugin_unapprovedposts.php @@ -7,7 +7,7 @@ * $Author: mark $ * @since 2/15/2011 * $LastChangedDate: 2012-09-21 10:15:19 -0400 (Fri, 21 Sep 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 11360 $ */ diff --git a/upload/admin/applications/forums/extensions/modcp/plugin_unapprovedtopics.php b/upload/admin/applications/forums/extensions/modcp/plugin_unapprovedtopics.php index da6b6a54..179fc998 100644 --- a/upload/admin/applications/forums/extensions/modcp/plugin_unapprovedtopics.php +++ b/upload/admin/applications/forums/extensions/modcp/plugin_unapprovedtopics.php @@ -7,7 +7,7 @@ * $Author: mark $ * @since 2/15/2011 * $LastChangedDate: 2012-09-21 10:15:19 -0400 (Fri, 21 Sep 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 11360 $ */ diff --git a/upload/admin/applications/forums/extensions/navigation/generate.php b/upload/admin/applications/forums/extensions/navigation/generate.php index a33345b7..5fd179e2 100644 --- a/upload/admin/applications/forums/extensions/navigation/generate.php +++ b/upload/admin/applications/forums/extensions/navigation/generate.php @@ -6,7 +6,7 @@ * $Author: ips_terabyte $ * @since 3/8/2011 * $LastChangedDate: 2011-03-31 06:17:44 -0400 (Thu, 31 Mar 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8229 $ */ diff --git a/upload/admin/applications/forums/extensions/notifications.php b/upload/admin/applications/forums/extensions/notifications.php index 046e5de5..701ba1ee 100644 --- a/upload/admin/applications/forums/extensions/notifications.php +++ b/upload/admin/applications/forums/extensions/notifications.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Define the core notification types
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/extensions/profileTabs/posts.conf.php b/upload/admin/applications/forums/extensions/profileTabs/posts.conf.php index 6f8f5abf..e64eea28 100644 --- a/upload/admin/applications/forums/extensions/profileTabs/posts.conf.php +++ b/upload/admin/applications/forums/extensions/profileTabs/posts.conf.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Config for posts plugin
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/extensions/profileTabs/posts.php b/upload/admin/applications/forums/extensions/profileTabs/posts.php index 38ffd9ef..86cf62ae 100644 --- a/upload/admin/applications/forums/extensions/profileTabs/posts.php +++ b/upload/admin/applications/forums/extensions/profileTabs/posts.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Profile Plugin Library
      * Last Updated: $Date: 2012-10-08 13:24:39 -0400 (Mon, 08 Oct 2012) $
      * 
    diff --git a/upload/admin/applications/forums/extensions/profileTabs/topics.conf.php b/upload/admin/applications/forums/extensions/profileTabs/topics.conf.php index d5f577fe..36675a6d 100644 --- a/upload/admin/applications/forums/extensions/profileTabs/topics.conf.php +++ b/upload/admin/applications/forums/extensions/profileTabs/topics.conf.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Config for topics plugin
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/extensions/profileTabs/topics.php b/upload/admin/applications/forums/extensions/profileTabs/topics.php index e8a782d5..353ea58e 100644 --- a/upload/admin/applications/forums/extensions/profileTabs/topics.php +++ b/upload/admin/applications/forums/extensions/profileTabs/topics.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Profile Plugin Library
      * Last Updated: $Date: 2012-10-08 13:24:39 -0400 (Mon, 08 Oct 2012) $
      * 
    diff --git a/upload/admin/applications/forums/extensions/reportPlugins/post.php b/upload/admin/applications/forums/extensions/reportPlugins/post.php index 7930f8bd..88db7ef3 100644 --- a/upload/admin/applications/forums/extensions/reportPlugins/post.php +++ b/upload/admin/applications/forums/extensions/reportPlugins/post.php @@ -2,19 +2,19 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Report Center :: Posts plugin
    - * Last Updated: $LastChangedDate: 2013-12-13 13:41:34 -0500 (Fri, 13 Dec 2013) $
    + * Last Updated: $LastChangedDate: 2015-06-15 20:02:43 -0400 (Mon, 15 Jun 2015) $
      * 
    * - * @author $Author: rashbrook $ + * @author $Author: stuarts $ * @author Based on original "Report Center" by Luke Scott * @copyright (c) 2001 - 2009 Invision Power Services, Inc. * @license http://www.invisionpower.com/company/standards.php#license * @package IP.Board * @subpackage Forums * @link http://www.invisionpower.com - * @version $Rev: 12428 $ + * @version $Rev: 12647 $ */ if ( ! defined( 'IN_IPB' ) ) @@ -354,7 +354,7 @@ class post_plugin { $the_report = $this->DB->fetch(); $rid = $the_report['id']; - $this->DB->update( 'rc_reports_index', array( 'date_updated' => time(), 'status' => $status['new'], 'seoname' => $data['title_seo'], 'seotemplate' => 'showtopic', 'updated_by' => $this->memberData['member_id'] ), "id='{$rid}'" ); + $this->DB->update( 'rc_reports_index', array( 'date_updated' => time(), 'status' => $status['new'], 'seoname' => $data['title_seo'], 'seotemplate' => '', 'updated_by' => $this->memberData['member_id'] ), "id='{$rid}'" ); } /* Load editor stuff */ diff --git a/upload/admin/applications/forums/extensions/reputation.php b/upload/admin/applications/forums/extensions/reputation.php index 5c9e4edd..90673dfb 100644 --- a/upload/admin/applications/forums/extensions/reputation.php +++ b/upload/admin/applications/forums/extensions/reputation.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Reputation configuration for application
      * Last Updated: $Date: 2014-10-16 12:59:33 -0400 (Thu, 16 Oct 2014) $
      * 
    diff --git a/upload/admin/applications/forums/extensions/rssOutput.php b/upload/admin/applications/forums/extensions/rssOutput.php index 11f81ffb..a6edf359 100644 --- a/upload/admin/applications/forums/extensions/rssOutput.php +++ b/upload/admin/applications/forums/extensions/rssOutput.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * RSS output plugin :: posts
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/extensions/search/config.php b/upload/admin/applications/forums/extensions/search/config.php index 00058e0c..0433827a 100644 --- a/upload/admin/applications/forums/extensions/search/config.php +++ b/upload/admin/applications/forums/extensions/search/config.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Config file
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/extensions/search/engines/sphinx.php b/upload/admin/applications/forums/extensions/search/engines/sphinx.php index 7ad59477..624503fc 100644 --- a/upload/admin/applications/forums/extensions/search/engines/sphinx.php +++ b/upload/admin/applications/forums/extensions/search/engines/sphinx.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Basic Forum Search
      * Last Updated: $Date: 2014-10-30 14:22:29 -0400 (Thu, 30 Oct 2014) $
      * 
    diff --git a/upload/admin/applications/forums/extensions/search/engines/sql.php b/upload/admin/applications/forums/extensions/search/engines/sql.php index 56f4e7ea..1a25467a 100644 --- a/upload/admin/applications/forums/extensions/search/engines/sql.php +++ b/upload/admin/applications/forums/extensions/search/engines/sql.php @@ -2,18 +2,18 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Basic Forum Search
    - * Last Updated: $Date: 2014-11-11 15:53:26 -0500 (Tue, 11 Nov 2014) $
    + * Last Updated: $Date: 2015-06-09 10:59:52 -0400 (Tue, 09 Jun 2015) $
      * 
    * - * @author $Author: rashbrook $ + * @author $Author: stuarts $ * @copyright (c) 2001 - 2009 Invision Power Services, Inc. * @license http://www.invisionpower.com/company/standards.php#license * @package IP.Board * @subpackage Forums * @link http://www.invisionpower.com - * @version $Rev: 12568 $ + * @version $Rev: 12646 $ */ if ( ! defined( 'IN_IPB' ) ) @@ -31,7 +31,7 @@ class search_engine_forums extends search_engine { /* Hard limit */ IPSSearchRegistry::set('set.hardLimit', ( ipsRegistry::$settings['search_hardlimit'] ) ? ipsRegistry::$settings['search_hardlimit'] : 200 ); - + /* Get class forums, used for displaying forum names on results */ if ( ipsRegistry::isClassLoaded('class_forums') !== TRUE ) { @@ -40,28 +40,28 @@ class search_engine_forums extends search_engine ipsRegistry::getClass('class_forums')->strip_invisible = 1; ipsRegistry::getClass('class_forums')->forumsInit(); } - + /* Load tagging stuff */ if ( ! $registry->isClassLoaded('tags') ) { - + } - + /* Get live or archive */ $this->searchArchives = ( isset(ipsRegistry::$request['search_app_filters']['forums']['liveOrArchive']) && ipsRegistry::$request['search_app_filters']['forums']['liveOrArchive'] == 'archive' ) ? true : false; - + if ( $this->searchArchives ) { /* Load up archive class */ $classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/archive/reader.php', 'classes_archive_reader' ); $this->archiveReader = new $classToLoad(); - + $this->archiveReader->setApp('forums'); - + $this->table = $this->archiveReader->getFields(); $this->table['_table_'] = 'forums_archive_posts'; $this->table['_prefix_'] = 'p.archive_'; - + /* disable max days search */ $this->settings['search_ucontent_days'] = 0; } @@ -88,10 +88,10 @@ class search_engine_forums extends search_engine 'edit_name' => 'edit_name', 'post_edit_reason' => 'post_edit_reason' ); } - + parent::__construct( $registry ); } - + /** * Perform a search. * Returns an array of a total count (total number of matches) @@ -103,7 +103,7 @@ class search_engine_forums extends search_engine */ public function search() { - /* INIT */ + /* INIT */ $sort_by = IPSSearchRegistry::get('in.search_sort_by'); $sort_order = IPSSearchRegistry::get('in.search_sort_order'); $search_term = IPSSearchRegistry::get('in.clean_search_term'); @@ -116,7 +116,7 @@ class search_engine_forums extends search_engine $cType = IPSSearchRegistry::get('contextual.type'); $cId = IPSSearchRegistry::get('contextual.id' ); $topicIds = array(); - + /* Contextual search */ if ( $cType == 'topic' ) { @@ -124,20 +124,20 @@ class search_engine_forums extends search_engine IPSSearchRegistry::set('opt.noPostPreview', false); IPSSearchRegistry::set('set.returnType', 'pids' ); } - + /* If searching tags, we don't show a preview */ if( $search_tags ) { IPSSearchRegistry::set('opt.noPostPreview', true); IPSSearchRegistry::set('set.returnType', 'tids' ); } - + /* Set up the flag for displaying results for posts and topics */ if ( IPSSearchRegistry::get('opt.searchType') == 'both' || ( IPSSearchRegistry::get('opt.searchType') == 'content' && IPSSearchRegistry::get('opt.noPostPreview') ) ) { IPSSearchRegistry::set('set.searchResultType', 'both' ); } - + /* Sorting */ switch( $sort_by ) { @@ -167,7 +167,7 @@ class search_engine_forums extends search_engine if ( ! IPSSearchRegistry::searchTitleOnly() ) { /* Do the search */ - $o = $this->DB->build( array( + $o = $this->DB->build( array( 'select' => "p.{$this->table['pid']} as id, p.{$this->table['post_date']}, p.{$this->table['topic_id']}", 'from' => array( $this->table['_table_'] => 'p' ), 'where' => $this->_buildWhereStatement( $search_term, IPSSearchRegistry::searchTitleOnly(), '', null, ( IPSSearchRegistry::get('opt.searchType') == 'content' || IPSSearchRegistry::get('in.search_author') ) ? false : true ), @@ -182,23 +182,23 @@ class search_engine_forums extends search_engine else { IPSSearchRegistry::set('set.returnType', 'tids' ); - + /* Do the search */ - $o = $this->DB->build( array( + $o = $this->DB->build( array( 'select' => "t.tid as id, t.tid as topic_id, t.title, t.posts, t.views, t.last_post", 'from' => 'topics t', 'where' => str_replace( 'p.' . $this->table['author_id'], 't.starter_id', $this->_buildWhereStatement( $search_term, IPSSearchRegistry::searchTitleOnly() ) ), 'limit' => array(0, IPSSearchRegistry::get('set.hardLimit') + 1), 'order' => 't.'.$sortKey . ' ' . $sort_order ) ); } - + $DB = $this->DB->execute( $o ); - + /* Fetch all to sort */ while( $r = $this->DB->fetch( $DB ) ) { $topicIds[] = $r['topic_id']; - + if ( IPSSearchRegistry::get('opt.noPostPreview') ) { $_rows[ $r['topic_id'] ] = $r; @@ -209,7 +209,7 @@ class search_engine_forums extends search_engine } } } - + /* Check tags */ if ( $search_tags && $this->settings['tags_enabled'] ) { @@ -219,18 +219,18 @@ class search_engine_forums extends search_engine 'meta_id' => $topicIds, 'sortOrder' => $sort_order, 'isViewable' => true ) ); - + /* Do the search */ if ( is_array( $tags) && count( $tags ) ) { $_tagIds = array(); $_rows = array(); - + foreach( $tags as $id => $data ) { $_tagIds[] = $data['tag_meta_id']; } - + $this->DB->build( array('select' => "t.tid as id, t.tid as topic_id, t.title, t.posts, t.views, t.last_post, t.topic_firstpost", 'from' => array( 'topics' => 't' ), 'where' => 't.tid IN (' . implode( ",", $_tagIds ) . ') AND ' . $this->_buildWhereStatement( $search_term, IPSSearchRegistry::searchTitleOnly() ), @@ -240,15 +240,15 @@ class search_engine_forums extends search_engine 'from' => array( $this->table['_table_'] => 'p' ), 'where' => 'p.'.$this->table['pid'].'=t.topic_firstpost', 'type' => 'left' ) ) ) ); - - + + $DB = $this->DB->execute(); - + /* Fetch all to merge and sort */ while( $r = $this->DB->fetch( $DB ) ) - { + { if ( IPSSearchRegistry::get('set.returnType') != 'pids' ) - { + { $_rows[ $r['topic_id'] ] = $r; } else @@ -259,14 +259,14 @@ class search_engine_forums extends search_engine } } } - + /* Fetch count */ - $count = count( $_rows ); - + $count = count( $_rows ); + if ( $count > IPSSearchRegistry::get('set.hardLimit') ) { $count = IPSSearchRegistry::get('set.hardLimit'); - + IPSSearchRegistry::set('set.resultsCutToLimit', true ); } @@ -274,26 +274,26 @@ class search_engine_forums extends search_engine IPSSearch::$ask = ( IPSSearchRegistry::get('set.returnType') == 'tids' ) ? 'last_post' : $this->table['post_date']; IPSSearch::$aso = strtolower( $sort_order ); IPSSearch::$ast = $sortType; - + /* Sort */ if ( count( $_rows ) ) { //usort( $_rows, array("IPSSearch", "usort") ); See http://community.invisionpower.com/resources/bugs.html/_/ip-board/incorrect-search-order-of-topic-list-r40835 - + /* Build result array */ foreach( $_rows as $r ) { $c++; - + if ( IPSSearchRegistry::get('in.start') AND IPSSearchRegistry::get('in.start') >= $c ) { continue; } - + $rows[ $got ] = $r['id']; - + $got++; - + /* Done? */ if ( IPSSearchRegistry::get('opt.search_per_page') AND $got >= IPSSearchRegistry::get('opt.search_per_page') ) { @@ -301,11 +301,11 @@ class search_engine_forums extends search_engine } } } - + /* Return it */ return array( 'count' => $count, 'resultSet' => $rows ); } - + /** * Perform the search * Populates $this->_count and $this->_results @@ -313,7 +313,7 @@ class search_engine_forums extends search_engine * @return nothin' */ public function viewUserContent( $member ) - { + { $sort_by = IPSSearchRegistry::get('in.search_sort_by'); $sort_order = IPSSearchRegistry::get('in.search_sort_order'); $followedOnly = $this->memberData['member_id'] ? IPSSearchRegistry::get('in.vncFollowFilterOn' ) : false; @@ -321,21 +321,21 @@ class search_engine_forums extends search_engine switch( IPSSearchRegistry::get('in.userMode') ) { default: - case 'all': + case 'all': IPSSearchRegistry::set('opt.searchType', 'both' ); IPSSearchRegistry::set('opt.noPostPreview' , true ); IPSSearchRegistry::set('set.returnType', 'tids' ); break; - case 'title': + case 'title': IPSSearchRegistry::set('opt.searchType', 'titles' ); IPSSearchRegistry::set('opt.noPostPreview' , true ); IPSSearchRegistry::set('set.returnType', 'tids' ); - break; - case 'content': + break; + case 'content': IPSSearchRegistry::set('opt.searchType', 'content' ); IPSSearchRegistry::set('opt.noPostPreview' , false ); IPSSearchRegistry::set('set.returnType', 'pids' ); - break; + break; } /* Sorting */ @@ -359,24 +359,25 @@ class search_engine_forums extends search_engine $sortType = 'numerical'; break; } - + /* Init */ $start = IPSSearchRegistry::get('in.start'); $perPage = IPSSearchRegistry::get('opt.search_per_page'); /* Get list of good forum IDs */ $forumIdsOk = array(); - + + /* Surely we want to limit searchable forums for every viewer? #916826 if( $this->memberData['member_id'] != $member['member_id'] ) - { + { */ $forumIdsOk = $this->registry->class_forums->fetchSearchableForumIds( $this->memberData['member_id'] ); - } - + /* } */ + /* Only show VNC results from specified forums? */ if( is_array(IPSSearchRegistry::get('forums.vncForumFilters')) AND count(IPSSearchRegistry::get('forums.vncForumFilters')) ) { $_newIdsOk = array(); - + foreach( IPSSearchRegistry::get('forums.vncForumFilters') as $forumId ) { if( in_array( $forumId, $forumIdsOk ) ) @@ -384,25 +385,25 @@ class search_engine_forums extends search_engine $_newIdsOk[] = $forumId; } } - + $forumIdsOk = $_newIdsOk; } - + /* Fetch forum rel ids */ if ( $followedOnly ) { require_once( IPS_ROOT_PATH . 'sources/classes/like/composite.php' );/*noLibHook*/ $like = classes_like::bootstrap( 'forums', 'topics' ); - + $followedTopics = $like->getDataByMemberIdAndArea( $this->memberData['member_id'] ); $followedTopics = ( $followedTopics === null ) ? array() : array_keys( $followedTopics ); - + if ( ! count( $followedTopics ) ) { /* Return it */ return array( 'count' => 0, 'resultSet' => array() ); } - + $topic_where[] = ( "t.tid IN (" . implode( ',', $followedTopics ) . ")" ); } @@ -410,33 +411,34 @@ class search_engine_forums extends search_engine // No forums? //----------------------------------------- + /* Surely we want to limit searchable forums for every viewer? #916826 if( $this->memberData['member_id'] != $member['member_id'] ) - { + { */ if( !count( $forumIdsOk ) ) { return array( 'count' => 0, 'resultSet' => array() ); } - + $topic_where[] = "t.forum_id IN (" . implode( ",", $forumIdsOk ) . ")"; - } - + /* } */ + if ( IPSSearchRegistry::get('in.userMode') != 'title' ) { $where[] = "p.author_id=" . intval( $member['member_id'] ); } - + if ( $this->settings['search_ucontent_days'] ) { if ( IPSSearchRegistry::get('in.userMode') != 'title' ) { $where[] = "p.post_date > " . ( ( $member['last_post'] ? $member['last_post'] : time() ) - ( 86400 * intval( $this->settings['search_ucontent_days'] ) ) ); } - + $topic_where[] = "t.last_post > " . ( ( $member['last_post'] ? $member['last_post'] : time() ) - ( 86400 * intval( $this->settings['search_ucontent_days'] ) ) ); } - + $where[] = "state != 'link'"; - + /* Set up perms */ $permissions = array(); $permissions['TopicSoftDeleteSee'] = $this->registry->getClass('class_forums')->canSeeSoftDeletedTopics( 0 ); @@ -444,7 +446,7 @@ class search_engine_forums extends search_engine $permissions['PostSoftDeleteSee'] = $this->registry->getClass('class_forums')->canSeeSoftDeletedPosts( 0 ); $permissions['SoftDeleteReason'] = $this->registry->getClass('class_forums')->canSeeSoftDeleteReason( 0 ); $permissions['SoftDeleteContent'] = $this->registry->getClass('class_forums')->canSeeSoftDeleteContent( 0 ); - + /* Exclude some items */ if ( IPSSearchRegistry::get('in.userMode') != 'title' ) { @@ -465,7 +467,7 @@ class search_engine_forums extends search_engine $where[] = $this->registry->class_forums->fetchPostHiddenQuery(array('visible' ), 'p.' ); } } - + if ( $permissions['TopicSoftDeleteSee'] AND $permissions['canQueue'] ) { $topic_where[] = $this->registry->class_forums->fetchTopicHiddenQuery(array('visible', 'hidden', 'sdeleted'), 't.' ); @@ -482,37 +484,37 @@ class search_engine_forums extends search_engine { $topic_where[] = $this->registry->class_forums->fetchTopicHiddenQuery(array('visible' ), 't.' ); } - + /* Not archives */ $topic_where[] = $this->registry->class_forums->fetchTopicArchiveQuery( array('not', 'exclude' ), 't.' ); - + /* Searching by time period */ if ( IPSSearchRegistry::get('in.period_in_seconds') ) { $topic_where[] = "t.last_post > " . ( IPS_UNIX_TIME_NOW - IPSSearchRegistry::get('in.period_in_seconds') ); } - + /* Manual fetch if user content all */ if ( IPSSearchRegistry::get('in.userMode') == 'all' ) { /* init */ $pids = array(); - + $this->DB->build( array( 'select' => 't.tid, t.last_post, t.topic_firstpost', 'from' => 'topics t', 'where' => implode( ' AND ', $topic_where ) . " AND t.starter_id=" . intval( $member['member_id'] ), 'order' => $sortKey . ' ' . $sort_order, 'limit' => array(0, 1000 ) ) ); $this->DB->execute(); - + while( $t = $this->DB->fetch() ) { $pids[ $t['tid'] ] = $t['last_post']; } - + $where = ( array_merge( (array) $where, (array) $topic_where ) ); $where = implode( " AND ", $where ); - + /* Now for posts */ $this->DB->build( array( 'select' => 'p.pid', 'from' => array('posts' => 'p' ), @@ -523,28 +525,28 @@ class search_engine_forums extends search_engine 'type' => 'left' ) ), 'order' => 'p.post_date DESC', 'limit' => array( 0, 5000 ) ) ); - - + + $this->DB->execute(); - + while( $t = $this->DB->fetch() ) { - $pids[ $t['tid'] ] = $t['last_post']; + $pids[ $t['tid'] ] = $t['last_post']; $tidsForFilter[ $t['tid'] ] = array( 'tid' => $t['tid'], 'forum_id' => $t['forum_id'], 'last_post' => $t['last_post'] ); } - + $count = array( 'count' => count( $pids ) ); - + if ( $count['count'] ) { arsort( $pids, SORT_NUMERIC ); $tids = array_slice( array_keys( $pids ), $start, $perPage, true ); - } + } } else if ( IPSSearchRegistry::get('in.userMode') == 'title' ) { $topic_where[] = "t.starter_id=" . intval( $member['member_id'] ); - + $where = ( array_merge( (array) $where, (array) $topic_where ) ); $where = implode( " AND ", $where ); @@ -552,7 +554,7 @@ class search_engine_forums extends search_engine $count = $this->DB->buildAndFetch( array( 'select' => 'COUNT(tid) as count', 'from' => 'topics t', 'where' => $where ) ); - + /* Fetch the count */ if ( $count['count'] ) { @@ -561,9 +563,9 @@ class search_engine_forums extends search_engine 'where' => $where, 'order' => $sortKey . ' ' . $sort_order, 'limit' => array( $start, $perPage ) ) ); - + $inner = $this->DB->execute(); - + while( $row = $this->DB->fetch( $inner ) ) { $tids[ $row['tid'] ] = $row['tid']; @@ -575,7 +577,7 @@ class search_engine_forums extends search_engine { $where = ( array_merge( (array) $where, (array) $topic_where ) ); $where = implode( " AND ", $where ); - + /* Fetch the count */ $count = $this->DB->buildAndFetch( array( 'select' => 'COUNT(tid) as count', 'from' => array('topics' => 't' ), @@ -596,9 +598,9 @@ class search_engine_forums extends search_engine 'type' => 'left' ) ), 'order' => $sortKey . ' ' . $sort_order, 'limit' => array( $start, $perPage ) ) ); - + $inner = $this->DB->execute(); - + while( $row = $this->DB->fetch( $inner ) ) { $tids[ $row['pid'] ] = $row['pid']; @@ -606,22 +608,22 @@ class search_engine_forums extends search_engine } } } - + /* Unread only? */ if( IPSSearchRegistry::get('in.period') == 'unread' ) - { + { $filter = $this->registry->class_forums->postProcessVncTids( $tidsForFilter ); $count['count'] = $filter['count']; $tids = $filter['tids']; } - + /* Fix to 1000 results max */ $count['count'] = ( $count['count'] > 1000 ) ? 1000 : $count['count']; - + /* Return it */ return array( 'count' => $count['count'], 'resultSet' => $tids ); } - + /** * Perform the viewNewContent search * Forum Version @@ -638,22 +640,22 @@ class search_engine_forums extends search_engine $where = array(); $_tidsOnly = array(); $noLimit = FALSE; - + /* Loop through the forums and build a list of forums we're allowed access to */ $bvnp = explode( ',', $this->settings['vnp_block_forums'] ); $start = IPSSearchRegistry::get('in.start'); $perPage = IPSSearchRegistry::get('opt.search_per_page'); $seconds = IPSSearchRegistry::get('in.period_in_seconds'); $followedOnly = $this->memberData['member_id'] ? IPSSearchRegistry::get('in.vncFollowFilterOn' ) : false; - + $followedForums = array(); $followedTopics = array(); - + IPSSearchRegistry::set('in.search_sort_by' , 'date' ); IPSSearchRegistry::set('in.search_sort_order' , 'desc' ); IPSSearchRegistry::set('opt.searchType' , 'titles' ); IPSSearchRegistry::set('opt.noPostPreview' , true ); - + //----------------------------------------- // Only content we have participated in? //----------------------------------------- @@ -661,7 +663,7 @@ class search_engine_forums extends search_engine if( IPSSearchRegistry::get('in.userMode') ) { $_tempResults = $this->viewUserContent( $this->memberData ); - + if( $_tempResults['count'] ) { $_tidsOnly = array_merge( $_tidsOnly, $_tempResults['resultSet'] ); @@ -679,32 +681,32 @@ class search_engine_forums extends search_engine IPSSearchRegistry::set('opt.searchType', 'both' ); IPSSearchRegistry::set('opt.noPostPreview' , true ); break; - case 'title': + case 'title': IPSSearchRegistry::set('opt.searchType', 'titles' ); IPSSearchRegistry::set('opt.noPostPreview' , false ); break; } } - + /* Set return type */ IPSSearchRegistry::set('set.returnType', 'tids' ); - + /* Get list of good forum IDs */ $_forumIdsOk = $this->registry->class_forums->fetchSearchableForumIds( $this->memberData['member_id'], ( $followedOnly ) ? array() : $bvnp ); - + /* Fetch forum rel ids */ if ( $followedOnly ) { require_once( IPS_ROOT_PATH . 'sources/classes/like/composite.php' );/*noLibHook*/ - + /* @link http://community.invisionpower.com/tracker/issue-33284-view-new-content-just-items-i-follow */ //$like = classes_like::bootstrap( 'forums', 'forums' ); - + //$followedForums = $like->getDataByMemberIdAndArea( $this->memberData['member_id'] ); $followedForums = array(); //( $followedForums === null ) ? array() : array_keys( $followedForums ); - + $like = classes_like::bootstrap( 'forums', 'topics' ); - + $followedTopics = $like->getDataByMemberIdAndArea( $this->memberData['member_id'], 5000 ); $followedTopics = ( $followedTopics === null ) ? array() : array_keys( $followedTopics ); } @@ -728,13 +730,13 @@ class search_engine_forums extends search_engine { $oldStamp = intval( $this->memberData['last_visit'] ); } - + /* Older than 3 months.. then limit */ if ( $oldStamp < $check ) { $oldStamp = $check; } - + foreach( $_forumIdsOk as $id ) { /*if ( $followedOnly && ! in_array( $id, $followedForums ) ) @@ -742,34 +744,34 @@ class search_engine_forums extends search_engine // We don't want to skip followed topics just because we don't follow the forum continue; }*/ - + $lMarked = $this->registry->getClass('classItemMarking')->fetchTimeLastMarked( array( 'forumID' => $id ), 'forums' ); $fData = $this->registry->getClass('class_forums')->forumsFetchData( $id ); - + if ( $fData['last_post'] > $lMarked ) { $forumIdsOk[ $id ] = $id; } } - + /* If no forums, we're done */ if ( ! count( $forumIdsOk ) ) { /* Return it */ return array( 'count' => 0, 'resultSet' => array() ); } - + /* Based on oldest timestamp */ $where[] = "last_post > " . $oldStamp; } $forumIdsOk = ( count( $forumIdsOk ) ) ? $forumIdsOk : array( 0 => 0 ); - + /* Only show VNC results from specified forums? */ if( is_array(IPSSearchRegistry::get('forums.vncForumFilters')) AND count(IPSSearchRegistry::get('forums.vncForumFilters')) ) { $_newIdsOk = array(); - + foreach( IPSSearchRegistry::get('forums.vncForumFilters') as $forumId ) { if( in_array( $forumId, $forumIdsOk ) ) @@ -777,28 +779,28 @@ class search_engine_forums extends search_engine $_newIdsOk[] = $forumId; } } - + $forumIdsOk = $_newIdsOk; } //----------------------------------------- // No forums? //----------------------------------------- - + if( !count( $forumIdsOk ) ) { return array( 'count' => 0, 'resultSet' => array() ); } $where[] = "forum_id IN (" . implode( ",", $forumIdsOk ) . ")"; - + /* Add in last bits */ $where[] = "state != 'link'"; - + /* Set up perms */ $permissions['TopicSoftDeleteSee'] = $this->registry->getClass('class_forums')->canSeeSoftDeletedTopics( 0 ); $permissions['canQueue'] = $this->registry->getClass('class_forums')->canQueuePosts( 0 ); - + if ( $permissions['TopicSoftDeleteSee'] AND $permissions['canQueue'] ) { $permWhere = $this->registry->class_forums->fetchTopicHiddenQuery(array('visible', 'hidden', 'sdeleted') ); @@ -815,13 +817,13 @@ class search_engine_forums extends search_engine { $permWhere = $this->registry->class_forums->fetchTopicHiddenQuery(array('visible' ) ); } - + $where[] = $this->registry->class_forums->fetchTopicArchiveQuery( array('not', 'exclude' ) ); - + /* add perm */ $where[] = $permWhere; $_ffWhere = ''; - + /* Followed topics only? */ if ( $followedOnly ) { @@ -831,7 +833,7 @@ class search_engine_forums extends search_engine } $_tidsOnly = array_merge( $_tidsOnly, $followedTopics ); - + if ( count( $followedForums ) ) { $_ffWhere = ' OR forum_id IN (' . implode( ',', $followedForums ) . ') '; @@ -843,7 +845,7 @@ class search_engine_forums extends search_engine { /* Only look for tids in both arrays */ $_both = array_intersect( $_tidsOnly, $followedTopics ); - + if( count($_both) ) { $where[] = "( tid IN(" . implode( ',', $_both ) . ')' . $_ffWhere . ' )'; @@ -858,36 +860,36 @@ class search_engine_forums extends search_engine { $where[] = "( tid IN(" . implode( ',', $followedTopics ) . ')' . $_ffWhere . ' )'; } - + $where = implode( " AND ", $where ); /* Fetch the count */ $count = $this->DB->buildAndFetch( array( 'select' => 'count(*) as count', 'from' => 'topics', 'where' => $where ) ); - + /* Fetch the count */ if ( $count['count'] ) { $limit = $noLimit ? NULL : ( IPSSearchRegistry::get('in.period') != 'unread' ) ? array( $start, $perPage ) : array( 0, 1200 ); - + $this->DB->build( array( 'select' => 'tid, forum_id, last_post', 'from' => 'topics', 'where' => $where, 'order' => 'last_post DESC', 'limit' => $limit ) ); - + $inner = $this->DB->execute(); - + while( $row = $this->DB->fetch( $inner ) ) { $rtids[ $row['tid'] ] = $row; } } - + /* Set up some vars */ IPSSearchRegistry::set('set.resultCutToDate', $oldStamp ); - + if( IPSSearchRegistry::get('in.period') == 'unread' ) { $filter = $this->registry->class_forums->postProcessVncTids( $rtids, array( $start, $perPage ) ); @@ -898,7 +900,7 @@ class search_engine_forums extends search_engine { $data = array( 'count' => ( ( isset( $_tempResults['count'] ) and $_tempResults['count'] > $count['count'] ) ? $_tempResults['count'] : $count['count'] ), 'resultSet' => array_keys( $rtids) ); // For explaination of why we check $_tempResults, see bug report 38178 } - + /* Return it */ return $data; } @@ -914,7 +916,7 @@ class search_engine_forums extends search_engine * @return string */ protected function _buildWhereStatement( $search_term, $content_title_only=false, $order='', $onlyPosts=null, $noForums=false ) - { + { /* INI */ $where_clause = array(); $onlyPosts = ( $onlyPosts !== null ) ? $onlyPosts : ( IPSSearchRegistry::get('opt.searchType') == 'content' ); @@ -925,11 +927,11 @@ class search_engine_forums extends search_engine $cType = IPSSearchRegistry::get('contextual.type'); $cId = intval( IPSSearchRegistry::get('contextual.id' ) ); $search_tags = IPSSearchRegistry::get('in.raw_search_tags'); - + /* Loop through the forums and build a list of forums we're allowed access to */ $forumIdsOk = array(); $forumIdsBad = array(); - + if ( ! empty( ipsRegistry::$request['search_app_filters']['forums']['forums'] ) AND count( ipsRegistry::$request['search_app_filters']['forums']['forums'] ) ) { foreach( ipsRegistry::$request['search_app_filters']['forums']['forums'] as $forum_id ) @@ -937,10 +939,10 @@ class search_engine_forums extends search_engine if( $forum_id ) { $data = $this->registry->class_forums->forum_by_id[ $forum_id ]; - + /* Check for sub forums */ $children = ipsRegistry::getClass( 'class_forums' )->forumsGetChildren( $forum_id ); - + foreach( $children as $kid ) { if( ! in_array( $kid, ipsRegistry::$request['search_app_filters']['forums']['forums'] ) ) @@ -950,7 +952,7 @@ class search_engine_forums extends search_engine $forumIdsBad[] = $kid; continue; } - + /* Can read, but is it password protected, etc? */ if ( ! $this->registry->class_forums->forumsCheckAccess( $kid, 0, 'forum', array(), true ) ) { @@ -963,7 +965,7 @@ class search_engine_forums extends search_engine $forumIdsBad[] = $kid; continue; } - + $forumIdsOk[] = $kid; } } @@ -987,12 +989,12 @@ class search_engine_forums extends search_engine $forumIdsBad[] = $forum_id; continue; } - + $forumIdsOk[] = $forum_id; } } } - + if ( ! count($forumIdsOk) ) { /* Get list of good forum IDs */ @@ -1003,7 +1005,7 @@ class search_engine_forums extends search_engine if ( $noForums !== true ) { $forumIdsOk = ( count( $forumIdsOk ) ) ? $forumIdsOk : array( 0 => 0 ); - + /* Contextual */ if ( $cType == 'forum' AND $cId AND in_array( $cId, $forumIdsOk ) ) { @@ -1014,13 +1016,13 @@ class search_engine_forums extends search_engine $where_clause[] = "t.forum_id IN (" . implode( ",", $forumIdsOk ) . ")"; } } - + /* Topic contextual */ if ( $cType == 'topic' AND $cId ) { $where_clause[] = "t.tid=" . $cId; } - + /* Exclude some items */ $permissions = array(); $permissions['TopicSoftDeleteSee'] = $this->registry->getClass('class_forums')->canSeeSoftDeletedTopics( 0 ); @@ -1065,7 +1067,7 @@ class search_engine_forums extends search_engine { $where_clause[] = $this->registry->class_forums->fetchTopicHiddenQuery(array('visible' ), 't.' ); } - + /* Live or archived? */ if ( $this->searchArchives ) { @@ -1079,9 +1081,9 @@ class search_engine_forums extends search_engine if( $search_term ) { $search_term = str_replace( '"', '"', $search_term ); - + if( $content_title_only ) - { + { $where_clause[] = $this->DB->buildSearchStatement( 't.title', $search_term, true, false, ipsRegistry::$settings['use_fulltext'], ipsRegistry::$settings['s_andor_type'] ); IPSSearchRegistry::set('set.returnType', 'tids' ); @@ -1096,7 +1098,7 @@ class search_engine_forums extends search_engine else { IPSSearchRegistry::set('set.returnType', 'pids' ); - + /* Sorting */ switch( $sort_by ) { @@ -1123,57 +1125,57 @@ class search_engine_forums extends search_engine IPSSearch::$ask = $sortKey; IPSSearch::$aso = strtolower( $sort_order ); IPSSearch::$ast = $sortType; - + /* Find topic ids that match */ $tids = array( 0 => 0 ); $pids = array( 0 => 0 ); - + $this->DB->build( array('select' => "t.tid, t.last_post, t.forum_id", 'from' => 'topics t', 'where' => str_replace( 'p.' . $this->table['author_id'], 't.starter_id', $this->_buildWhereStatement( $search_term, true, $order, null ) ), 'order' => 't.' . $sortKey . ' ' . $sort_order, 'limit' => array(0, IPSSearchRegistry::get('set.hardLimit')) ) ); - + $i = $this->DB->execute(); - + /* Grab the results */ while( $row = $this->DB->fetch( $i ) ) { $_rows[ $row['tid'] ] = $row; } - + /* Sort */ if ( count( $_rows ) ) { usort( $_rows, array("IPSSearch", "usort") ); - + foreach( $_rows as $id => $row ) { $tids[] = $row['tid']; } } - + /* Now get the Pids */ if ( count( $tids ) > 1 ) { $this->DB->build( array('select' => $this->table['pid'], 'from' => $this->table['_table_'], 'where' => $this->table['topic_id'] . ' IN ('. implode( ',', $tids ) . ') AND ' . $this->table['new_topic'] . '=1' ) ); - + $i = $this->DB->execute(); - + while( $row = $this->DB->fetch() ) { $pids[ $row[ $this->table['pid'] ] ] = $row[ $this->table['pid'] ]; } } - + /* Set vars */ IPSSearch::$ask = ( $sortKey == 'last_post' ) ? $this->table['post_date'] : $sortKey; IPSSearch::$aso = strtolower( $sort_order ); IPSSearch::$ast = $sortType; - - $this->DB->build( array( + + $this->DB->build( array( 'select' => "p.{$this->table['pid']}, p.{$this->table['queued']}", 'from' => array( $this->table['_table_'] => 'p' ), 'where' => $this->_buildWhereStatement( $search_term, false, $order, true ), @@ -1183,37 +1185,37 @@ class search_engine_forums extends search_engine 'from' => array( 'topics' => 't' ), 'where' => 'p.'.$this->table['topic_id'].'=t.tid', 'type' => 'left' ) ) ) ); - + $i = $this->DB->execute(); - + /* Grab the results */ while( $row = $this->DB->fetch( $i ) ) { $_prows[ $row[ $this->table['pid'] ] ] = $row; } - + /* Sort */ if ( count( $_prows ) ) { usort( $_prows, array("IPSSearch", "usort") ); - + foreach( $_prows as $id => $row ) { $pids[ $row[ $this->table['pid'] ] ] = $row[ $this->table['pid'] ]; } } - + $where_clause[] = '( p.' . $this->table['pid'] .' IN (' . implode( ',', $pids ) .') )'; } } } - + /* No moved topic links */ $where_clause[] = "t.state != 'link'"; - + /* Date Restrict */ if( $this->search_begin_timestamp && $this->search_end_timestamp ) - { + { $where_clause[] = $this->DB->buildBetween( $content_title_only ? "t.last_post" : "p.".$this->table['post_date'], $this->search_begin_timestamp, $this->search_end_timestamp ); } else @@ -1222,19 +1224,19 @@ class search_engine_forums extends search_engine { $where_clause[] = $content_title_only ? "t.last_post > {$this->search_begin_timestamp}" : "p.".$this->table['post_date'] . " > {$this->search_begin_timestamp}"; } - + if( $this->search_end_timestamp ) { $where_clause[] = $content_title_only ? "t.last_post < {$this->search_end_timestamp}" : "p.".$this->table['post_date'] . " < {$this->search_end_timestamp}"; } } - + /* Add in AND where conditions */ if( isset( $this->whereConditions['AND'] ) && count( $this->whereConditions['AND'] ) ) { $where_clause = array_merge( $where_clause, $this->whereConditions['AND'] ); } - + /* ADD in OR where conditions */ if( isset( $this->whereConditions['OR'] ) && count( $this->whereConditions['OR'] ) ) { @@ -1257,10 +1259,10 @@ class search_engine_forums extends search_engine $column = $column == 'member_id' ? ( IPSSearchRegistry::get('opt.searchTitleOnly') ? 't.starter_id' : 'p.' . $this->table['author_id'] ) : $column; $column = $column == 'content_title' ? 't.title' : $column; $column = $column == 'type_id' ? 't.forum_id' : $column; - + return $column; } - + /** * Returns an array used in the searchplugin's setCondition method * @@ -1271,11 +1273,11 @@ class search_engine_forums extends search_engine { /* INIT */ $return = array(); - + /* Set up some defaults */ IPSSearchRegistry::set( 'opt.noPostPreview' , true ); //IPSSearchRegistry::set( 'opt.searchType', 'both' ); - + /* Make default search type topics */ if( isset( $data ) && is_array( $data ) && count( $data ) ) { diff --git a/upload/admin/applications/forums/extensions/search/form.php b/upload/admin/applications/forums/extensions/search/form.php index de127731..fcf237a6 100644 --- a/upload/admin/applications/forums/extensions/search/form.php +++ b/upload/admin/applications/forums/extensions/search/form.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Returns HTML for the form (optional class, not required)
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/extensions/search/format.php b/upload/admin/applications/forums/extensions/search/format.php index b7b1a9ae..c355ae69 100644 --- a/upload/admin/applications/forums/extensions/search/format.php +++ b/upload/admin/applications/forums/extensions/search/format.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Formats forum search results
      * Last Updated: $Date: 2015-03-16 17:25:51 -0400 (Mon, 16 Mar 2015) $
      * 
    diff --git a/upload/admin/applications/forums/extensions/sphinxTemplate.php b/upload/admin/applications/forums/extensions/sphinxTemplate.php index 0b154001..cbfe8a1c 100644 --- a/upload/admin/applications/forums/extensions/sphinxTemplate.php +++ b/upload/admin/applications/forums/extensions/sphinxTemplate.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Sphinx template file
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/extensions/tags/topics.php b/upload/admin/applications/forums/extensions/tags/topics.php index 236c934e..37823d84 100644 --- a/upload/admin/applications/forums/extensions/tags/topics.php +++ b/upload/admin/applications/forums/extensions/tags/topics.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Tagging: Forums/Topics Class
      * Matt Mecham
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
    diff --git a/upload/admin/applications/forums/extensions/warnings.php b/upload/admin/applications/forums/extensions/warnings.php
    index 31c0e56a..577c6177 100644
    --- a/upload/admin/applications/forums/extensions/warnings.php
    +++ b/upload/admin/applications/forums/extensions/warnings.php
    @@ -7,7 +7,7 @@
      * $Author: ips_terabyte $ (Original: Mark)
      * @since		-
      * $LastChangedDate: 2012-04-05 12:35:31 -0400 (Thu, 05 Apr 2012) $
    - * @version		v3.4.8
    + * @version		v3.4.9
      * $Revision: 10571 $
      */
     
    diff --git a/upload/admin/applications/forums/modules_admin/ajax/archive.php b/upload/admin/applications/forums/modules_admin/ajax/archive.php
    index 78f22d65..9c70af67 100644
    --- a/upload/admin/applications/forums/modules_admin/ajax/archive.php
    +++ b/upload/admin/applications/forums/modules_admin/ajax/archive.php
    @@ -2,7 +2,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Archive stuff (AJAX) - Matt Mecham
      * Last Updated: $Date: 2011-05-05 12:03:47 +0100 (Thu, 05 May 2011) $
      * 
    diff --git a/upload/admin/applications/forums/modules_admin/ajax/member_editform.php b/upload/admin/applications/forums/modules_admin/ajax/member_editform.php index 67286b3f..dcf054f4 100644 --- a/upload/admin/applications/forums/modules_admin/ajax/member_editform.php +++ b/upload/admin/applications/forums/modules_admin/ajax/member_editform.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Member property updater (AJAX)
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/modules_admin/archive/archive.php b/upload/admin/applications/forums/modules_admin/archive/archive.php index 3adf0698..f66779d5 100644 --- a/upload/admin/applications/forums/modules_admin/archive/archive.php +++ b/upload/admin/applications/forums/modules_admin/archive/archive.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ (Original: Matt) * @since 11 Nov 2011 * $LastChangedDate: 2010-10-14 13:11:17 -0400 (Thu, 14 Oct 2010) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 477 $ */ diff --git a/upload/admin/applications/forums/modules_admin/archive/defaultSection.php b/upload/admin/applications/forums/modules_admin/archive/defaultSection.php index 9608e2f5..63ba742b 100644 --- a/upload/admin/applications/forums/modules_admin/archive/defaultSection.php +++ b/upload/admin/applications/forums/modules_admin/archive/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since Tuesday 17th August 2004 * $LastChangedDate: 2010-10-14 13:11:17 -0400 (Thu, 14 Oct 2010) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 477 $ */ diff --git a/upload/admin/applications/forums/modules_admin/attachments/defaultSection.php b/upload/admin/applications/forums/modules_admin/attachments/defaultSection.php index d440113e..9a6d3048 100644 --- a/upload/admin/applications/forums/modules_admin/attachments/defaultSection.php +++ b/upload/admin/applications/forums/modules_admin/attachments/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 14th May 2003 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/forums/modules_admin/attachments/search.php b/upload/admin/applications/forums/modules_admin/attachments/search.php index 5df43bde..38021c84 100644 --- a/upload/admin/applications/forums/modules_admin/attachments/search.php +++ b/upload/admin/applications/forums/modules_admin/attachments/search.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Attachments: Search
      * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/modules_admin/attachments/stats.php b/upload/admin/applications/forums/modules_admin/attachments/stats.php index d8bf4c6b..4aa84652 100644 --- a/upload/admin/applications/forums/modules_admin/attachments/stats.php +++ b/upload/admin/applications/forums/modules_admin/attachments/stats.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Attachments: Stats
      * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/modules_admin/attachments/types.php b/upload/admin/applications/forums/modules_admin/attachments/types.php index 65786a7a..1bfc3435 100644 --- a/upload/admin/applications/forums/modules_admin/attachments/types.php +++ b/upload/admin/applications/forums/modules_admin/attachments/types.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Attachments: Manage
      * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/modules_admin/forums/defaultSection.php b/upload/admin/applications/forums/modules_admin/forums/defaultSection.php index 2929c378..960401c2 100644 --- a/upload/admin/applications/forums/modules_admin/forums/defaultSection.php +++ b/upload/admin/applications/forums/modules_admin/forums/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since Tuesday 17th August 2004 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/forums/modules_admin/forums/forums.php b/upload/admin/applications/forums/modules_admin/forums/forums.php index f38709ae..5db2351d 100644 --- a/upload/admin/applications/forums/modules_admin/forums/forums.php +++ b/upload/admin/applications/forums/modules_admin/forums/forums.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Forum management
      * Last Updated: $Date: 2013-03-21 11:03:13 -0400 (Thu, 21 Mar 2013) $
      * 
    diff --git a/upload/admin/applications/forums/modules_admin/forums/moderator.php b/upload/admin/applications/forums/modules_admin/forums/moderator.php index de1a651c..f135ffd8 100644 --- a/upload/admin/applications/forums/modules_admin/forums/moderator.php +++ b/upload/admin/applications/forums/modules_admin/forums/moderator.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Forum moderator management
      * Last Updated: $Date: 2012-09-12 11:58:11 -0400 (Wed, 12 Sep 2012) $
      * 
    diff --git a/upload/admin/applications/forums/modules_admin/forums/multimods.php b/upload/admin/applications/forums/modules_admin/forums/multimods.php index dcf3c799..ed9a7305 100644 --- a/upload/admin/applications/forums/modules_admin/forums/multimods.php +++ b/upload/admin/applications/forums/modules_admin/forums/multimods.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Topic Multi-Moderation
      * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/modules_admin/rss/defaultSection.php b/upload/admin/applications/forums/modules_admin/rss/defaultSection.php index 555e9352..7ac8a0f8 100644 --- a/upload/admin/applications/forums/modules_admin/rss/defaultSection.php +++ b/upload/admin/applications/forums/modules_admin/rss/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 14th May 2003 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/forums/modules_admin/rss/export.php b/upload/admin/applications/forums/modules_admin/rss/export.php index 8581ed17..a299789f 100644 --- a/upload/admin/applications/forums/modules_admin/rss/export.php +++ b/upload/admin/applications/forums/modules_admin/rss/export.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Forum RSS Export
      * Last Updated: $Date: 2013-02-21 08:36:30 -0500 (Thu, 21 Feb 2013) $
      * 
    diff --git a/upload/admin/applications/forums/modules_admin/rss/import.php b/upload/admin/applications/forums/modules_admin/rss/import.php index b7e87c9e..f34088bc 100644 --- a/upload/admin/applications/forums/modules_admin/rss/import.php +++ b/upload/admin/applications/forums/modules_admin/rss/import.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Forum RSS Import
      * Last Updated: $Date: 2013-01-30 03:11:29 -0500 (Wed, 30 Jan 2013) $
      * 
    diff --git a/upload/admin/applications/forums/modules_admin/statistics/defaultSection.php b/upload/admin/applications/forums/modules_admin/statistics/defaultSection.php index 4abe9b4c..8447acc0 100644 --- a/upload/admin/applications/forums/modules_admin/statistics/defaultSection.php +++ b/upload/admin/applications/forums/modules_admin/statistics/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 14th May 2003 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/forums/modules_admin/statistics/stats.php b/upload/admin/applications/forums/modules_admin/statistics/stats.php index c4ed7d36..0c07a3e0 100644 --- a/upload/admin/applications/forums/modules_admin/statistics/stats.php +++ b/upload/admin/applications/forums/modules_admin/statistics/stats.php @@ -2,18 +2,18 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Forum Statistics
    - * Last Updated: $Date: 2013-04-19 19:48:56 -0400 (Fri, 19 Apr 2013) $
    + * Last Updated: $Date: 2015-05-22 08:11:59 -0400 (Fri, 22 May 2015) $
      * 
    * - * @author $Author: bfarber $ + * @author $Author: stuarts $ * @copyright (c) 2001 - 2009 Invision Power Services, Inc. * @license http://www.invisionpower.com/company/standards.php#license * @package IP.Board * @subpackage Forums * @link http://www.invisionpower.com - * @version $Rev: 12191 $ + * @version $Rev: 12643 $ */ @@ -462,8 +462,8 @@ class admin_forums_statistics_stats extends ipsCommand } /* Create time stamps */ - $to_time = mktime(12 ,0 ,0 ,$this->request['to_month'] ,$this->request['to_day'] ,$this->request['to_year'] ); - $from_time = mktime(12 ,0 ,0 ,$this->request['from_month'] ,$this->request['from_day'] ,$this->request['from_year']); + $to_time = mktime( 0, 0, 0 ,$this->request['to_month'], $this->request['to_day'], $this->request['to_year'] ); + $from_time = mktime( 0, 0, 0 ,$this->request['from_month'], $this->request['from_day'], $this->request['from_year'] ); /* Get Human Dates */ $human_to_date = getdate( $to_time ); diff --git a/upload/admin/applications/forums/modules_admin/tools/defaultSection.php b/upload/admin/applications/forums/modules_admin/tools/defaultSection.php index f15756d0..83641572 100644 --- a/upload/admin/applications/forums/modules_admin/tools/defaultSection.php +++ b/upload/admin/applications/forums/modules_admin/tools/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 14th May 2003 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/forums/modules_admin/tools/tools.php b/upload/admin/applications/forums/modules_admin/tools/tools.php index 717550af..f3a33305 100644 --- a/upload/admin/applications/forums/modules_admin/tools/tools.php +++ b/upload/admin/applications/forums/modules_admin/tools/tools.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Member management
      * Last Updated: $Date: 2014-04-02 16:45:48 -0400 (Wed, 02 Apr 2014) $
      * 
    diff --git a/upload/admin/applications/forums/modules_public/ajax/attachments.php b/upload/admin/applications/forums/modules_public/ajax/attachments.php index 6c0d7b69..db26c43a 100644 --- a/upload/admin/applications/forums/modules_public/ajax/attachments.php +++ b/upload/admin/applications/forums/modules_public/ajax/attachments.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Grab attachments and return via AJAX (AJAX)
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/modules_public/ajax/defaultSection.php b/upload/admin/applications/forums/modules_public/ajax/defaultSection.php index a42be50d..e26ed59d 100644 --- a/upload/admin/applications/forums/modules_public/ajax/defaultSection.php +++ b/upload/admin/applications/forums/modules_public/ajax/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 14th May 2003 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/forums/modules_public/ajax/emoticons.php b/upload/admin/applications/forums/modules_public/ajax/emoticons.php index 9065f4fc..775c58a6 100644 --- a/upload/admin/applications/forums/modules_public/ajax/emoticons.php +++ b/upload/admin/applications/forums/modules_public/ajax/emoticons.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Ourputs emoticon list via AJAX (AJAX)
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/modules_public/ajax/forums.php b/upload/admin/applications/forums/modules_public/ajax/forums.php index 3568cb66..a53f1018 100644 --- a/upload/admin/applications/forums/modules_public/ajax/forums.php +++ b/upload/admin/applications/forums/modules_public/ajax/forums.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Fetch topics and other data from the forum
      * Last Updated: $Date: 2012-08-28 17:56:22 -0400 (Tue, 28 Aug 2012) $
      * 
    diff --git a/upload/admin/applications/forums/modules_public/ajax/markasread.php b/upload/admin/applications/forums/modules_public/ajax/markasread.php index 7a03272f..099e4075 100644 --- a/upload/admin/applications/forums/modules_public/ajax/markasread.php +++ b/upload/admin/applications/forums/modules_public/ajax/markasread.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Ajax Functions For Topics
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/modules_public/ajax/stats.php b/upload/admin/applications/forums/modules_public/ajax/stats.php index 80197473..69f0cfbe 100644 --- a/upload/admin/applications/forums/modules_public/ajax/stats.php +++ b/upload/admin/applications/forums/modules_public/ajax/stats.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Retrieve who posted stats
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/modules_public/ajax/topics.php b/upload/admin/applications/forums/modules_public/ajax/topics.php index f0f4d97b..81f05a95 100644 --- a/upload/admin/applications/forums/modules_public/ajax/topics.php +++ b/upload/admin/applications/forums/modules_public/ajax/topics.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Ajax Functions For Topics
      * Last Updated: $Date: 2013-10-16 19:11:24 -0400 (Wed, 16 Oct 2013) $
      * 
    diff --git a/upload/admin/applications/forums/modules_public/extras/answer.php b/upload/admin/applications/forums/modules_public/extras/answer.php index cded39ae..2d517079 100644 --- a/upload/admin/applications/forums/modules_public/extras/answer.php +++ b/upload/admin/applications/forums/modules_public/extras/answer.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * QA system methods (Matt mecham)
      * Last Updated: $Date: 2012-08-28 22:56:22 +0100 (Tue, 28 Aug 2012) $
      * 
    diff --git a/upload/admin/applications/forums/modules_public/extras/boardrules.php b/upload/admin/applications/forums/modules_public/extras/boardrules.php index e7565ccb..d9a1d550 100644 --- a/upload/admin/applications/forums/modules_public/extras/boardrules.php +++ b/upload/admin/applications/forums/modules_public/extras/boardrules.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Board Rules
      * Last Updated: $Date: 2012-10-10 17:49:08 -0400 (Wed, 10 Oct 2012) $
      * 
    diff --git a/upload/admin/applications/forums/modules_public/extras/defaultSection.php b/upload/admin/applications/forums/modules_public/extras/defaultSection.php index a964cc07..61718acd 100644 --- a/upload/admin/applications/forums/modules_public/extras/defaultSection.php +++ b/upload/admin/applications/forums/modules_public/extras/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 20th February 2002 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/forums/modules_public/extras/forward.php b/upload/admin/applications/forums/modules_public/extras/forward.php index 1b371917..f6e6a2fe 100644 --- a/upload/admin/applications/forums/modules_public/extras/forward.php +++ b/upload/admin/applications/forums/modules_public/extras/forward.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Forward a topic to someone
      * Last Updated: $Date: 2014-09-05 12:52:36 -0400 (Fri, 05 Sep 2014) $
      * 
    diff --git a/upload/admin/applications/forums/modules_public/extras/legends.php b/upload/admin/applications/forums/modules_public/extras/legends.php index e674f1bb..a24bce1b 100644 --- a/upload/admin/applications/forums/modules_public/extras/legends.php +++ b/upload/admin/applications/forums/modules_public/extras/legends.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Emoticon and BBCode Legends
      * Last Updated: $Date: 2013-03-26 09:06:10 -0400 (Tue, 26 Mar 2013) $
      * 
    diff --git a/upload/admin/applications/forums/modules_public/extras/rating.php b/upload/admin/applications/forums/modules_public/extras/rating.php index 402aa9f8..c7a018ca 100644 --- a/upload/admin/applications/forums/modules_public/extras/rating.php +++ b/upload/admin/applications/forums/modules_public/extras/rating.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Add rating fallback
      * Last Updated: $Date: 2013-03-19 10:12:37 -0400 (Tue, 19 Mar 2013) $
      * 
    diff --git a/upload/admin/applications/forums/modules_public/extras/stats.php b/upload/admin/applications/forums/modules_public/extras/stats.php index 83bc24c4..5192ab1c 100644 --- a/upload/admin/applications/forums/modules_public/extras/stats.php +++ b/upload/admin/applications/forums/modules_public/extras/stats.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Member stats functions
      * Last Updated: $Date: 2013-11-15 13:16:48 -0500 (Fri, 15 Nov 2013) $
      * 
    diff --git a/upload/admin/applications/forums/modules_public/extras/toggle.php b/upload/admin/applications/forums/modules_public/extras/toggle.php index 53095209..8e001c85 100644 --- a/upload/admin/applications/forums/modules_public/extras/toggle.php +++ b/upload/admin/applications/forums/modules_public/extras/toggle.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Silly toggle function(?s{0,})
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/modules_public/extras/vote.php b/upload/admin/applications/forums/modules_public/extras/vote.php index dc42255a..1443116b 100644 --- a/upload/admin/applications/forums/modules_public/extras/vote.php +++ b/upload/admin/applications/forums/modules_public/extras/vote.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Poll voting
      * Last Updated: $Date: 2014-12-04 21:54:57 -0500 (Thu, 04 Dec 2014) $
      * 
    diff --git a/upload/admin/applications/forums/modules_public/forums/announcements.php b/upload/admin/applications/forums/modules_public/forums/announcements.php index 58c4a421..029033a5 100644 --- a/upload/admin/applications/forums/modules_public/forums/announcements.php +++ b/upload/admin/applications/forums/modules_public/forums/announcements.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Announcement View
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/modules_public/forums/attach.php b/upload/admin/applications/forums/modules_public/forums/attach.php index 14471974..c4c9559f 100644 --- a/upload/admin/applications/forums/modules_public/forums/attach.php +++ b/upload/admin/applications/forums/modules_public/forums/attach.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * View Topic Attachments
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/modules_public/forums/boards.php b/upload/admin/applications/forums/modules_public/forums/boards.php index a9df817b..966b4439 100644 --- a/upload/admin/applications/forums/modules_public/forums/boards.php +++ b/upload/admin/applications/forums/modules_public/forums/boards.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Board Index View
      * Last Updated: $Date: 2013-05-15 22:23:38 -0400 (Wed, 15 May 2013) $
      * 
    diff --git a/upload/admin/applications/forums/modules_public/forums/defaultSection.php b/upload/admin/applications/forums/modules_public/forums/defaultSection.php index 2bcf770e..44f0c6d5 100644 --- a/upload/admin/applications/forums/modules_public/forums/defaultSection.php +++ b/upload/admin/applications/forums/modules_public/forums/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 14th May 2003 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/forums/modules_public/forums/findpost.php b/upload/admin/applications/forums/modules_public/forums/findpost.php index 4a96adb9..788020af 100644 --- a/upload/admin/applications/forums/modules_public/forums/findpost.php +++ b/upload/admin/applications/forums/modules_public/forums/findpost.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Bounces a user to the right post
      * Last Updated: $Date: 2013-06-14 11:15:45 -0400 (Fri, 14 Jun 2013) $
      * 
    diff --git a/upload/admin/applications/forums/modules_public/forums/forums.php b/upload/admin/applications/forums/modules_public/forums/forums.php index 2198f391..0eab6a76 100644 --- a/upload/admin/applications/forums/modules_public/forums/forums.php +++ b/upload/admin/applications/forums/modules_public/forums/forums.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Forum Viewing
      * Last Updated: $Date: 2015-03-16 17:25:51 -0400 (Mon, 16 Mar 2015) $
      * 
    diff --git a/upload/admin/applications/forums/modules_public/forums/markasread.php b/upload/admin/applications/forums/modules_public/forums/markasread.php index 374f7726..fe63085b 100644 --- a/upload/admin/applications/forums/modules_public/forums/markasread.php +++ b/upload/admin/applications/forums/modules_public/forums/markasread.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Forums -> Mark As Read command class
      * Last Updated: $Date: 2014-10-01 13:50:54 -0400 (Wed, 01 Oct 2014) $
      * 
    diff --git a/upload/admin/applications/forums/modules_public/forums/rules.php b/upload/admin/applications/forums/modules_public/forums/rules.php index 07123757..05898324 100644 --- a/upload/admin/applications/forums/modules_public/forums/rules.php +++ b/upload/admin/applications/forums/modules_public/forums/rules.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Show forum rules
      * Last Updated: $Date: 2012-12-13 08:29:08 -0500 (Thu, 13 Dec 2012) $
      * 
    diff --git a/upload/admin/applications/forums/modules_public/forums/topics.php b/upload/admin/applications/forums/modules_public/forums/topics.php index 671af4b6..7f0a510b 100644 --- a/upload/admin/applications/forums/modules_public/forums/topics.php +++ b/upload/admin/applications/forums/modules_public/forums/topics.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Topic View
      * Last Updated: $Date: 2014-11-18 19:28:54 -0500 (Tue, 18 Nov 2014) $
      * 
    diff --git a/upload/admin/applications/forums/modules_public/moderate/defaultSection.php b/upload/admin/applications/forums/modules_public/moderate/defaultSection.php index 4a839912..8fc3282c 100644 --- a/upload/admin/applications/forums/modules_public/moderate/defaultSection.php +++ b/upload/admin/applications/forums/modules_public/moderate/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 14th May 2003 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/forums/modules_public/moderate/moderate.php b/upload/admin/applications/forums/modules_public/moderate/moderate.php index a0d585ba..38fd4f60 100644 --- a/upload/admin/applications/forums/modules_public/moderate/moderate.php +++ b/upload/admin/applications/forums/modules_public/moderate/moderate.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Moderator actions
      * Last Updated: $Date: 2014-11-11 15:53:26 -0500 (Tue, 11 Nov 2014) $
      * 
    diff --git a/upload/admin/applications/forums/modules_public/moderate/multimod.php b/upload/admin/applications/forums/modules_public/moderate/multimod.php index ebc03466..869acfa2 100644 --- a/upload/admin/applications/forums/modules_public/moderate/multimod.php +++ b/upload/admin/applications/forums/modules_public/moderate/multimod.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Moderator actions
      * Last Updated: $Date: 2013-01-17 15:51:17 -0500 (Thu, 17 Jan 2013) $
      * 
    diff --git a/upload/admin/applications/forums/modules_public/post/defaultSection.php b/upload/admin/applications/forums/modules_public/post/defaultSection.php index 57abe828..aad7b626 100644 --- a/upload/admin/applications/forums/modules_public/post/defaultSection.php +++ b/upload/admin/applications/forums/modules_public/post/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 14th May 2003 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/forums/modules_public/post/post.php b/upload/admin/applications/forums/modules_public/post/post.php index a23c177c..3f7c9497 100644 --- a/upload/admin/applications/forums/modules_public/post/post.php +++ b/upload/admin/applications/forums/modules_public/post/post.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Posting
      * Last Updated: $Date: 2013-01-29 18:38:34 -0500 (Tue, 29 Jan 2013) $
      * 
    diff --git a/upload/admin/applications/forums/skin_cp/cp_skin_archive.php b/upload/admin/applications/forums/skin_cp/cp_skin_archive.php index 2be3996f..b89b4217 100644 --- a/upload/admin/applications/forums/skin_cp/cp_skin_archive.php +++ b/upload/admin/applications/forums/skin_cp/cp_skin_archive.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Stats skin functions
      * Last Updated: $LastChangedDate: 2011-05-05 12:03:47 +0100 (Thu, 05 May 2011) $
      * 
    diff --git a/upload/admin/applications/forums/skin_cp/cp_skin_attachments.php b/upload/admin/applications/forums/skin_cp/cp_skin_attachments.php index 4c60ee1f..e92e681f 100644 --- a/upload/admin/applications/forums/skin_cp/cp_skin_attachments.php +++ b/upload/admin/applications/forums/skin_cp/cp_skin_attachments.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Attachments skin functions
      * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/skin_cp/cp_skin_forums.php b/upload/admin/applications/forums/skin_cp/cp_skin_forums.php index c8721584..29136112 100644 --- a/upload/admin/applications/forums/skin_cp/cp_skin_forums.php +++ b/upload/admin/applications/forums/skin_cp/cp_skin_forums.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Forums skin functions
      * Last Updated: $LastChangedDate: 2013-03-21 11:03:13 -0400 (Thu, 21 Mar 2013) $
      * 
    diff --git a/upload/admin/applications/forums/skin_cp/cp_skin_group_form.php b/upload/admin/applications/forums/skin_cp/cp_skin_group_form.php index bb4fd0ab..c330c61b 100644 --- a/upload/admin/applications/forums/skin_cp/cp_skin_group_form.php +++ b/upload/admin/applications/forums/skin_cp/cp_skin_group_form.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Group plugin skin functions
      * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/skin_cp/cp_skin_member_form.php b/upload/admin/applications/forums/skin_cp/cp_skin_member_form.php index 7311f5f6..69c2e56a 100644 --- a/upload/admin/applications/forums/skin_cp/cp_skin_member_form.php +++ b/upload/admin/applications/forums/skin_cp/cp_skin_member_form.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Forum member form plugin
      * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/skin_cp/cp_skin_multimods.php b/upload/admin/applications/forums/skin_cp/cp_skin_multimods.php index 1fd9754b..219023a3 100644 --- a/upload/admin/applications/forums/skin_cp/cp_skin_multimods.php +++ b/upload/admin/applications/forums/skin_cp/cp_skin_multimods.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Multimods skin functions
      * Last Updated: $LastChangedDate: 2012-05-25 13:17:47 -0400 (Fri, 25 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/skin_cp/cp_skin_rss.php b/upload/admin/applications/forums/skin_cp/cp_skin_rss.php index 7786b113..322cca16 100644 --- a/upload/admin/applications/forums/skin_cp/cp_skin_rss.php +++ b/upload/admin/applications/forums/skin_cp/cp_skin_rss.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * RSS skin functions
      * Last Updated: $LastChangedDate: 2013-04-23 22:13:24 -0400 (Tue, 23 Apr 2013) $
      * 
    diff --git a/upload/admin/applications/forums/skin_cp/cp_skin_stats.php b/upload/admin/applications/forums/skin_cp/cp_skin_stats.php index a04c9ad8..1dcb0f2a 100644 --- a/upload/admin/applications/forums/skin_cp/cp_skin_stats.php +++ b/upload/admin/applications/forums/skin_cp/cp_skin_stats.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Stats skin functions
      * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/forums/sources/classes/forums/admin_forum_functions.php b/upload/admin/applications/forums/sources/classes/forums/admin_forum_functions.php index 575d643b..f7dec0a6 100644 --- a/upload/admin/applications/forums/sources/classes/forums/admin_forum_functions.php +++ b/upload/admin/applications/forums/sources/classes/forums/admin_forum_functions.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Admin forum functions library
      * Last Updated: $Date: 2014-12-31 17:46:06 -0500 (Wed, 31 Dec 2014) $
      * 
    diff --git a/upload/admin/applications/forums/sources/classes/forums/class_forums.php b/upload/admin/applications/forums/sources/classes/forums/class_forums.php index 6bbbde27..0c3e5012 100644 --- a/upload/admin/applications/forums/sources/classes/forums/class_forums.php +++ b/upload/admin/applications/forums/sources/classes/forums/class_forums.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Forums Class
      * Last Updated: $Date: 2013-03-27 20:18:32 -0400 (Wed, 27 Mar 2013) $
      * 
    diff --git a/upload/admin/applications/forums/sources/classes/hooks/gateway.php b/upload/admin/applications/forums/sources/classes/hooks/gateway.php index d884ef03..465b2b86 100644 --- a/upload/admin/applications/forums/sources/classes/hooks/gateway.php +++ b/upload/admin/applications/forums/sources/classes/hooks/gateway.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Forum hook gateway
      * Owner: Matt "Oh Lord, why did I get assigned this?" Mecham
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
    diff --git a/upload/admin/applications/forums/sources/classes/moderate.php b/upload/admin/applications/forums/sources/classes/moderate.php
    index e6aec8c9..049399e9 100644
    --- a/upload/admin/applications/forums/sources/classes/moderate.php
    +++ b/upload/admin/applications/forums/sources/classes/moderate.php
    @@ -2,7 +2,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Moderator actions
      * Last Updated: $Date: 2015-01-26 16:07:28 -0500 (Mon, 26 Jan 2015) $
      * 
    diff --git a/upload/admin/applications/forums/sources/classes/post/classPost.php b/upload/admin/applications/forums/sources/classes/post/classPost.php index f8659f96..bbb6d91c 100644 --- a/upload/admin/applications/forums/sources/classes/post/classPost.php +++ b/upload/admin/applications/forums/sources/classes/post/classPost.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Moderator actions
      * Last Updated: $Date: 2015-02-23 06:21:10 -0500 (Mon, 23 Feb 2015) $
      * 
    diff --git a/upload/admin/applications/forums/sources/classes/post/classPostForms.php b/upload/admin/applications/forums/sources/classes/post/classPostForms.php index 19704c31..f1e4d6be 100644 --- a/upload/admin/applications/forums/sources/classes/post/classPostForms.php +++ b/upload/admin/applications/forums/sources/classes/post/classPostForms.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Posting display formatting methods
      * Last Updated: $Date: 2015-01-22 15:41:59 -0500 (Thu, 22 Jan 2015) $
      * 
    diff --git a/upload/admin/applications/forums/sources/classes/topics.php b/upload/admin/applications/forums/sources/classes/topics.php index d71df173..abc88438 100644 --- a/upload/admin/applications/forums/sources/classes/topics.php +++ b/upload/admin/applications/forums/sources/classes/topics.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Moderator actions
      * Last Updated: $Date: 2014-12-31 17:46:06 -0500 (Wed, 31 Dec 2014) $
      * 
    diff --git a/upload/admin/applications/forums/sql/mysql_topics_queries.php b/upload/admin/applications/forums/sql/mysql_topics_queries.php index c563a2c1..2c4d7e94 100644 --- a/upload/admin/applications/forums/sql/mysql_topics_queries.php +++ b/upload/admin/applications/forums/sql/mysql_topics_queries.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 13 Gen 2012 * $LastChangedDate: 2012-01-23 05:10:45 -0500 (Mon, 23 Jan 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10165 $ */ diff --git a/upload/admin/applications/forums/tasks/announcements.php b/upload/admin/applications/forums/tasks/announcements.php index 3ea42e43..38938390 100644 --- a/upload/admin/applications/forums/tasks/announcements.php +++ b/upload/admin/applications/forums/tasks/announcements.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since - * $LastChangedDate: 2011-02-08 17:20:18 -0500 (Tue, 08 Feb 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 7750 $ */ diff --git a/upload/admin/applications/forums/tasks/dailycleanout.php b/upload/admin/applications/forums/tasks/dailycleanout.php index 1c2dab1d..8e887bfa 100644 --- a/upload/admin/applications/forums/tasks/dailycleanout.php +++ b/upload/admin/applications/forums/tasks/dailycleanout.php @@ -7,7 +7,7 @@ * $Author: rashbrook $ * @since - * $LastChangedDate: 2014-08-29 15:04:48 -0400 (Fri, 29 Aug 2014) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 12492 $ */ diff --git a/upload/admin/applications/forums/tasks/dailydigest.php b/upload/admin/applications/forums/tasks/dailydigest.php index a4de618d..cd639aad 100644 --- a/upload/admin/applications/forums/tasks/dailydigest.php +++ b/upload/admin/applications/forums/tasks/dailydigest.php @@ -7,7 +7,7 @@ * $Author: mark $ * @since - * $LastChangedDate: 2012-09-18 10:15:15 -0400 (Tue, 18 Sep 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 11344 $ */ diff --git a/upload/admin/applications/forums/tasks/permadelete.php b/upload/admin/applications/forums/tasks/permadelete.php index 0551ff50..6ce30ae3 100644 --- a/upload/admin/applications/forums/tasks/permadelete.php +++ b/upload/admin/applications/forums/tasks/permadelete.php @@ -7,7 +7,7 @@ * $Author: stuarts $ * @since - * $LastChangedDate: 2014-09-26 09:22:53 -0400 (Fri, 26 Sep 2014) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 12514 $ */ diff --git a/upload/admin/applications/forums/tasks/rssimport.php b/upload/admin/applications/forums/tasks/rssimport.php index 222677e2..211a446d 100644 --- a/upload/admin/applications/forums/tasks/rssimport.php +++ b/upload/admin/applications/forums/tasks/rssimport.php @@ -7,7 +7,7 @@ * $Author: bfarber $ * @since - * $LastChangedDate: 2011-05-20 00:17:42 -0400 (Fri, 20 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8847 $ */ diff --git a/upload/admin/applications/forums/tasks/updateviews.php b/upload/admin/applications/forums/tasks/updateviews.php index 5edc1be1..cd5b7f33 100644 --- a/upload/admin/applications/forums/tasks/updateviews.php +++ b/upload/admin/applications/forums/tasks/updateviews.php @@ -7,7 +7,7 @@ * $Author: bfarber $ * @since - * $LastChangedDate: 2011-05-12 22:28:10 -0400 (Thu, 12 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8754 $ */ diff --git a/upload/admin/applications/forums/tasks/weeklydigest.php b/upload/admin/applications/forums/tasks/weeklydigest.php index 9e803927..eb3aa341 100644 --- a/upload/admin/applications/forums/tasks/weeklydigest.php +++ b/upload/admin/applications/forums/tasks/weeklydigest.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since - * $LastChangedDate: 2012-03-19 16:54:21 -0400 (Mon, 19 Mar 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10447 $ */ diff --git a/upload/admin/applications/forums/xml/admin_forums_language_pack.xml b/upload/admin/applications/forums/xml/admin_forums_language_pack.xml index f9811f8d..468078d9 100644 --- a/upload/admin/applications/forums/xml/admin_forums_language_pack.xml +++ b/upload/admin/applications/forums/xml/admin_forums_language_pack.xml @@ -1,6 +1,12 @@ + + forums + admin_archive + rules_does_not_include + does not include + forums admin_archive @@ -22,14 +28,14 @@ forums admin_archive - rules_is_in_forum - is in forum(s) + rules_oo_five + out of five forums admin_archive - rules_oo_five - out of five + rules_is_in_forum + is in forum(s) forums @@ -160,14 +166,14 @@ forums admin_archive - rules_save - Save + rules_topic_is + Topic is forums admin_archive - rules_topic_is - Topic is + rules_save + Save forums @@ -214,14 +220,14 @@ forums admin_archive - tbl_title - Title + tbl_last_post + Last Post forums admin_archive - tbl_last_post - Last Post + tbl_title + Title forums @@ -283,12 +289,6 @@ connex_error_NO_CONNECTION Could not get a remote DB connection - - forums - admin_archive - rules_does_not_include - does not include - forums admin_archive @@ -394,14 +394,14 @@ forums admin_attachments - atc_deletebutton - Delete Checked Attachments + atc_viewed + Viewed forums admin_attachments - atc_viewed - Viewed + atc_deletebutton + Delete Checked Attachments forums @@ -469,12 +469,6 @@ atc_overview Attachments: Overview - - forums - admin_attachments - attach_stats_head - Attachment Statistics - forums admin_attachments @@ -484,8 +478,8 @@ forums admin_attachments - add_attachment_type_head - Add Attachment Type + attach_stats_head + Attachment Statistics forums @@ -496,8 +490,8 @@ forums admin_attachments - ty_baseon - Base on: + add_attachment_type_head + Add Attachment Type forums @@ -505,6 +499,12 @@ ty_edit Edit Attachment Type + + forums + admin_attachments + ty_baseon + Base on: + forums admin_attachments @@ -640,14 +640,14 @@ forums admin_attachments - se_oname - Attach File Name + se_osize + Attach File Size forums admin_attachments - se_osize - Attach File Size + se_oname + Attach File Name forums @@ -694,14 +694,14 @@ forums admin_attachments - se_mname_desc - Leave blank to omit + se_mname + Match File Name forums admin_attachments - se_mname - Match File Name + se_mname_desc + Leave blank to omit forums @@ -724,14 +724,14 @@ forums admin_attachments - se_msize_desc - Leave blank to omit + se_mposted + n Days]]> forums admin_attachments - se_mposted - n Days]]> + se_msize_desc + Leave blank to omit forums @@ -808,14 +808,14 @@ forums admin_attachments - se_title - Attachment Manager + se_attachment + Attachment forums admin_attachments - se_attachment - Attachment + se_title + Attachment Manager forums @@ -937,12 +937,36 @@ atc_importbutton Import + + forums + admin_forums + per_updated + Forum Access Permissions Updated! + + + forums + admin_forums + per_editedlog + + + + forums + admin_forums + per_groupid + Could not resolve that group ID. Please try again. + forums admin_forums per_upload_m Upload To Forum + + forums + admin_forums + per_download_m + Download From Forum + forums admin_forums @@ -1000,14 +1024,14 @@ forums admin_forums - per_start - Start Topics in this forum]]> + per_also + Also using: forums admin_forums - per_also - Also using: + per_start + Start Topics in this forum]]> forums @@ -1282,8 +1306,8 @@ forums admin_forums - mm_approve - Unhide + mm_allforums + -- ALL FORUMS -- forums @@ -1294,14 +1318,8 @@ forums admin_forums - mm_allforums - -- ALL FORUMS -- - - - forums - admin_forums - mm_pin - Pin + mm_approve + Unhide forums @@ -1309,6 +1327,12 @@ mm_unpin Unpin + + forums + admin_forums + mm_pin + Pin + forums admin_forums @@ -1318,14 +1342,14 @@ forums admin_forums - mm_open - Open + mm_leave + Leave forums admin_forums - mm_leave - Leave + mm_open + Open forums @@ -1354,14 +1378,14 @@ forums admin_forums - mm_valid - You must enter a valid ID. Please try again. + mm_update + Update topic multi-moderation entries %s forums admin_forums - mm_update - Update topic multi-moderation entries %s + mm_valid + You must enter a valid ID. Please try again. forums @@ -1474,14 +1498,14 @@ forums admin_forums - frm_m_closetime - Can set topic close time? + frm_m_msettings + Moderator Control Panel Settings forums admin_forums - frm_m_msettings - Moderator Control Panel Settings + frm_m_closetime + Can set topic close time? forums @@ -1498,14 +1522,14 @@ forums admin_forums - frm_m_pin - Can pin topics? + frm_m_unpin + Can unpin topics? forums admin_forums - frm_m_unpin - Can unpin topics? + frm_m_pin + Can pin topics? forums @@ -1516,14 +1540,14 @@ forums admin_forums - frm_m_open - Can open locked topics? + frm_m_close + Can close open topics? forums admin_forums - frm_m_close - Can close open topics? + frm_m_open + Can open locked topics? forums @@ -1561,12 +1585,6 @@ frm_m_genset General Settings - - forums - admin_forums - frm_m_choosebutton - Choose Member - forums admin_forums @@ -1576,14 +1594,14 @@ forums admin_forums - frm_m_search - Search for a member + frm_m_choosebutton + Choose Member forums admin_forums - frm_f_sort_order - Default sort order + frm_m_search + Search for a member forums @@ -1597,6 +1615,12 @@ frm_f_sort_key Default sort key + + forums + admin_forums + frm_f_sort_order + Default sort order + forums admin_forums @@ -1618,14 +1642,14 @@ forums admin_forums - frm_f_mod_pass_info - Leave this box empty if you do not wish to require this. + frm_f_mod_exempt + Exempt Groups forums admin_forums - frm_f_mod_exempt - Exempt Groups + frm_f_mod_pass_info + Leave this box empty if you do not wish to require this. forums @@ -1648,14 +1672,14 @@ forums admin_forums - frm_f_mod_en - Enable Posting Moderation + frm_f_mod_en_info + Requires a moderator to manually add posts/topics to the forum. forums admin_forums - frm_f_mod_en_info - Requires a moderator to manually add posts/topics to the forum. + frm_f_mod_en + Enable Posting Moderation forums @@ -1666,14 +1690,14 @@ forums admin_forums - frm_f_min_posts_view - Minimum posts to view + frm_f_min_posts_view_info + This is the minium number of posts a user must have before they can view the forum and any posts in it. forums admin_forums - frm_f_min_posts_view_info - This is the minium number of posts a user must have before they can view the forum and any posts in it. + frm_f_min_posts_view + Minimum posts to view forums @@ -1684,8 +1708,8 @@ forums admin_forums - frm_f_post_inc - Enable Post Count Incrementation + frm_f_min_posts_post + Minimum posts to post forums @@ -1696,8 +1720,8 @@ forums admin_forums - frm_f_min_posts_post - Minimum posts to post + frm_f_post_inc + Enable Post Count Incrementation forums @@ -1726,14 +1750,14 @@ forums admin_forums - frm_f_post_bb - Enable BBCode Posting + frm_f_post_html_info + This will allow HTML to be posted and executed for allowed groups. forums admin_forums - frm_f_post_html_info - This will allow HTML to be posted and executed for allowed groups. + frm_f_post_bb + Enable BBCode Posting forums @@ -1750,14 +1774,14 @@ forums admin_forums - frm_f_perm_hide_info - Useful if you have settings that prohibit some members from seeing posts in this forum while allowing them to see the forum itself + frm_f_perm_hide + Hide Last Post Info forums admin_forums - frm_f_perm_hide - Hide Last Post Info + frm_f_perm_hide_info + Useful if you have settings that prohibit some members from seeing posts in this forum while allowing them to see the forum itself forums @@ -1780,14 +1804,14 @@ forums admin_forums - frm_f_perm_list - Allow members who can see the forum but cannot read topics to see the topic list + from_f_postable_settings + Postable Settings forums admin_forums - from_f_postable_settings - Postable Settings + frm_f_perm_list + Allow members who can see the forum but cannot read topics to see the topic list forums @@ -1810,14 +1834,14 @@ forums admin_forums - frm_f_redirect_url - Redirect URL + frm_f_redirect_en + Enable URL redirection forums admin_forums - frm_f_redirect_en - Enable URL redirection + frm_f_redirect_url + Redirect URL forums @@ -1906,14 +1930,14 @@ forums admin_forums - frm_deletetitle - Removing Forum: + frm_emptybutton + Empty This Forum (No Undo) forums admin_forums - frm_emptybutton - Empty This Forum (No Undo) + frm_deletetitle + Removing Forum: forums @@ -1930,14 +1954,14 @@ forums admin_forums - frm_emptytitle - Empty Forum + frm_skinbutton + Edit Forum Skin Options forums admin_forums - frm_skinbutton - Edit Forum Skin Options + frm_emptytitle + Empty Forum forums @@ -1948,14 +1972,14 @@ forums admin_forums - frm_skinapply - Apply which skin to this forum? + frm_skinchoice + Skin choices for forum: forums admin_forums - frm_skinchoice - Skin choices for forum: + frm_skinapply + Apply which skin to this forum? forums @@ -1972,14 +1996,14 @@ forums admin_forums - frm_rulestitle - Rules Title + frm_rulesdisplay + Display Method forums admin_forums - frm_rulesdisplay - Display Method + frm_rulestitle + Rules Title forums @@ -2041,12 +2065,6 @@ frm_resync Resynchronize... - - forums - admin_forums - frm_forumrules - Forum Rules... - forums admin_forums @@ -2056,8 +2074,8 @@ forums admin_forums - frm_emptyforum - Empty Forum... + frm_forumrules + Forum Rules... forums @@ -2068,8 +2086,8 @@ forums admin_forums - frm_modcheck - Check this box to include this forum in the list of forums to add a moderator to + frm_emptyforum + Empty Forum... forums @@ -2080,14 +2098,14 @@ forums admin_forums - frm_modaddtxt - Add moderator to checked forum(s) + frm_modcheck + Check this box to include this forum in the list of forums to add a moderator to forums admin_forums - frm_modorgroup - OR Group ]]> + frm_modaddtxt + Add moderator to checked forum(s) forums @@ -2095,6 +2113,12 @@ frm_modname Name + + forums + admin_forums + frm_modorgroup + OR Group ]]> + forums admin_forums @@ -2104,14 +2128,14 @@ forums admin_forums - frm_reordcat - Reorder Categories + frm_addnewcat + Add New Category forums admin_forums - frm_addnewcat - Add New Category + frm_reordcat + Reorder Categories forums @@ -2152,8 +2176,8 @@ forums admin_forums - frm_modshow - Show Moderator Options + frm_deletecat + Delete Category... forums @@ -2164,8 +2188,8 @@ forums admin_forums - frm_deletecat - Delete Category... + frm_modshow + Show Moderator Options forums @@ -2188,14 +2212,14 @@ forums admin_forums - frm_or - or...]]> + frm_id + ID: forums admin_forums - frm_id - ID: + frm_or + or...]]> forums @@ -2242,14 +2266,14 @@ forums admin_forums - frm_type_stand - Standard forum + frm_type_stand_d + A normal forum that accepts posts forums admin_forums - frm_type_stand_d - A normal forum that accepts posts + frm_type_stand + Standard forum forums @@ -2314,14 +2338,14 @@ forums admin_forums - for_entertitle - You must enter a %s title. Please try again. + for_addfor + Add Forum forums admin_forums - for_addfor - Add Forum + for_entertitle + You must enter a %s title. Please try again. forums @@ -2350,14 +2374,14 @@ forums admin_forums - for_changecat - Change to Category + for_editfor_button + Edit Forum forums admin_forums - for_editfor_button - Edit Forum + for_changecat + Change to Category forums @@ -2440,14 +2464,14 @@ forums admin_forums - for_s_poster - Name of last poster + for_asc + Ascending (A - Z, 0 - 9) forums admin_forums - for_asc - Ascending (A - Z, 0 - 9) + for_s_poster + Name of last poster forums @@ -2461,6 +2485,12 @@ for_s_view Topic Views + + forums + admin_forums + for_s_name + + forums admin_forums @@ -2476,8 +2506,8 @@ forums admin_forums - for_s_name - + for_s_last + Date of last post forums @@ -2488,8 +2518,8 @@ forums admin_forums - for_s_last - Date of last post + for_last90 + Last 90 Days forums @@ -2497,24 +2527,12 @@ for_last60 Last 60 Days - - forums - admin_forums - for_last90 - Last 90 Days - forums admin_forums for_last30 Last 30 Days - - forums - admin_forums - for_last20 - Last 20 Days - forums admin_forums @@ -2527,6 +2545,12 @@ for_last15 Last 15 Days + + forums + admin_forums + for_last20 + Last 20 Days + forums admin_forums @@ -2566,8 +2590,8 @@ forums admin_forums - for_modall - Moderate all new topics and all replies + for_readonly + Read Only forums @@ -2578,8 +2602,8 @@ forums admin_forums - for_readonly - Read Only + for_modall + Moderate all new topics and all replies forums @@ -2614,14 +2638,14 @@ forums admin_forums - for_removing - + for_child_no_parent + You cannot move children forums to the forum you are removing. Please try again. forums admin_forums - for_child_no_parent - You cannot move children forums to the forum you are removing. Please try again. + for_removing + forums @@ -2650,14 +2674,14 @@ forums admin_forums - for_emptiedlog - + for_emptied + Forum emptied. forums admin_forums - for_emptied - Forum emptied. + for_emptiedlog + forums @@ -2665,12 +2689,6 @@ for_nodetails Could not get the forum details for the forum to empty. Please try again. - - forums - admin_forums - for_empty_title - Empty forum: %s - forums admin_forums @@ -2680,8 +2698,8 @@ forums admin_forums - for_recountedlog - + for_empty_title + Empty forum: %s forums @@ -2689,6 +2707,12 @@ for_resynched Forum Resynchronized + + forums + admin_forums + for_recountedlog + + forums admin_forums @@ -2710,8 +2734,8 @@ forums admin_forums - for_noneall - --None / Remove All-- + for_rulesdont + forums @@ -2722,8 +2746,14 @@ forums admin_forums - for_rulesdont - + for_noneall + --None / Remove All-- + + + forums + admin_forums + forums_context_add_category + Add New Category forums @@ -2737,24 +2767,12 @@ forums_context_add_forum Add New Forum - - forums - admin_forums - forums_context_add_category - Add New Category - forums admin_forums gf_t_restrictions Restrictions - - forums - admin_forums - gf_t_polling - Polling - forums admin_forums @@ -2767,6 +2785,12 @@ gf_t_openclose Open/Closed Topics + + forums + admin_forums + gf_t_polling + Polling + forums admin_forums @@ -2776,14 +2800,14 @@ forums admin_forums - gf_t_editing - Editing + gf_t_posting + Posting forums admin_forums - gf_t_posting - Posting + gf_t_editing + Editing forums @@ -2800,14 +2824,14 @@ forums admin_forums - g_max - Max. + g_dd_days + days since joining forums admin_forums - g_dd_days - days since joining + g_max + Max. forums @@ -2986,14 +3010,14 @@ forums admin_forums - frm_rule_raw_html_title - Use raw HTML + from_f_perms + Permissions forums admin_forums - from_f_perms - Permissions + frm_rule_raw_html_title + Use raw HTML forums @@ -3064,14 +3088,14 @@ forums admin_forums - forum_delete_none_selected - You must select a forum to move posts to. + forum_delete_select + --Select a Forum-- forums admin_forums - forum_delete_select - --Select a Forum-- + forum_delete_none_selected + You must select a forum to move posts to. forums @@ -3118,8 +3142,8 @@ forums admin_forums - mod_member_is - %s is + mod_and + and forums @@ -3130,8 +3154,8 @@ forums admin_forums - mod_and - and + mod_member_is + %s is forums @@ -3148,8 +3172,8 @@ forums admin_forums - gf_mod_remove_desc - Note, this setting will not remove individual member moderators who happen to be members of this group from the page.]]> + gf_mod_title + Forum Moderator forums @@ -3160,8 +3184,8 @@ forums admin_forums - gf_mod_title - Forum Moderator + gf_mod_remove_desc + Note, this setting will not remove individual member moderators who happen to be members of this group from the page.]]> forums @@ -3184,14 +3208,14 @@ forums admin_forums - sitemap_forum_priority_desc - This will set the priority given in the site map for the forum itself. If you have set to calculate topic scores automatically, this will also influence the topic priority for topics inside this forum. + sitemap_forum_priority + Sitemap Priority forums admin_forums - sitemap_forum_priority - Sitemap Priority + sitemap_forum_priority_desc + This will set the priority given in the site map for the forum itself. If you have set to calculate topic scores automatically, this will also influence the topic priority for topics inside this forum. forums @@ -3217,12 +3241,6 @@ enable_answers_desc - - forums - admin_forums - bw_enable_answers_member - Enable topic starter to toggle best answer? - forums admin_forums @@ -3232,26 +3250,8 @@ forums admin_forums - per_download_m - Download From Forum - - - forums - admin_forums - per_groupid - Could not resolve that group ID. Please try again. - - - forums - admin_forums - per_editedlog - - - - forums - admin_forums - per_updated - Forum Access Permissions Updated! + bw_enable_answers_member + Enable topic starter to toggle best answer? forums @@ -4036,14 +4036,14 @@ forums admin_rss - rss_im_htaccess - RSS Import htaccess Authentication + rss_im_enabled + RSS Import Enabled forums admin_rss - rss_im_enabled - RSS Import Enabled + rss_im_htaccess + RSS Import htaccess Authentication forums @@ -4072,14 +4072,14 @@ forums admin_rss - rss_im_blankremove - Leave blank to remove them all + rss_im_removenoconf + Remove (No more confirmation screens!) forums admin_rss - rss_im_removenoconf - Remove (No more confirmation screens!) + rss_im_blankremove + Leave blank to remove them all forums @@ -4087,30 +4087,30 @@ rss_im_removelast n imported topics]]> - - forums - admin_rss - rss_im_removetopics - Remove Posted Topics From Stream: - forums admin_rss rss_im_articlecount %s topic(s).]]> - - forums - admin_rss - rss_ex_cache_info - n minutes]]> - forums admin_rss rss_ex_cache RSS Export Cache Frequency + + forums + admin_rss + rss_ex_cache_info + n minutes]]> + + + forums + admin_rss + rss_im_removetopics + Remove Posted Topics From Stream: + forums admin_rss @@ -4120,14 +4120,14 @@ forums admin_rss - rss_ex_forums - Export Topics From Forum(s) + rss_ex_sort + RSS Export Sort By forums admin_rss - rss_ex_sort - RSS Export Sort By + rss_ex_forums + Export Topics From Forum(s) forums @@ -4156,14 +4156,14 @@ forums admin_rss - rss_ex_enabled - RSS Export Enabled + rss_optional + * Optional forums admin_rss - rss_optional - * Optional + rss_ex_enabled + RSS Export Enabled forums @@ -4183,12 +4183,6 @@ rss_ex_desc RSS Export Stream (Channel) Description - - forums - admin_rss - rss_ex_update - Update All RSS Export Caches - forums admin_rss @@ -4198,20 +4192,8 @@ forums admin_rss - rss_ex_create - Create New RSS Export Stream - - - forums - admin_rss - rss_ex_edit - Edit RSS Export Stream - - - forums - admin_rss - rss_ex_delete - Delete RSS Export Stream + rss_ex_update + Update All RSS Export Caches forums @@ -4219,12 +4201,36 @@ rss_ex_recache Recache RSS Export Stream + + forums + admin_rss + rss_ex_create + Create New RSS Export Stream + + + forums + admin_rss + rss_ex_delete + Delete RSS Export Stream + + + forums + admin_rss + rss_ex_edit + Edit RSS Export Stream + forums admin_rss rss_options Options + + forums + admin_rss + rss_desc + RSS Description + forums admin_rss @@ -4240,8 +4246,8 @@ forums admin_rss - rss_desc - RSS Description + rss_title + RSS Title forums @@ -4249,12 +4255,6 @@ rss_ex_streams RSS Export Streams - - forums - admin_rss - rss_title - RSS Title - forums admin_rss @@ -4306,14 +4306,14 @@ forums admin_rss - im_nochannels - We could not find any changes in the RSS feed (nothing to import). If you believe you received this in error, please contacting the site that serves the feed. + im_charset + %s.]]> forums admin_rss - im_charset - %s.]]> + im_nochannels + We could not find any changes in the RSS feed (nothing to import). If you believe you received this in error, please contacting the site that serves the feed. forums @@ -4324,14 +4324,14 @@ forums admin_rss - im_http - HTTP Status Code: + im_doc_type + %s, but you entered %s.]]> forums admin_rss - im_doc_type - %s, but you entered %s.]]> + im_http + HTTP Status Code: forums @@ -4348,14 +4348,14 @@ forums admin_rss - im_noitems - No RSS items to import. + im_notitle + forums admin_rss - im_notitle - + im_noitems + No RSS items to import. forums @@ -4372,14 +4372,14 @@ forums admin_rss - im_edit - Edit RSS Import Stream + im_full + forums admin_rss - im_full - + im_edit + Edit RSS Import Stream forums @@ -4462,14 +4462,14 @@ forums admin_rss - im_topicsremoved - topics removed. + im_findtopics + We could not locate any topics to delete. forums admin_rss - im_findtopics - We could not locate any topics to delete. + im_topicsremoved + topics removed. forums @@ -4546,14 +4546,14 @@ forums admin_rss - ex_removed - RSS Export stream has been removed. + ex_noid + No ID was passed. Please try again. forums admin_rss - ex_noid - No ID was passed. Please try again. + ex_removed + RSS Export stream has been removed. forums @@ -5026,14 +5026,8 @@ forums admin_stats - statisnotspam - Not Spam - - - forums - admin_stats - spam_ok - Ok + spam_graph_title + Recent Registrations forums @@ -5044,8 +5038,14 @@ forums admin_stats - spam_graph_title - Recent Registrations + spam_ok + Ok + + + forums + admin_stats + statisnotspam + Not Spam forums diff --git a/upload/admin/applications/forums/xml/public_forums_language_pack.xml b/upload/admin/applications/forums/xml/public_forums_language_pack.xml index 831a5eff..16a81066 100644 --- a/upload/admin/applications/forums/xml/public_forums_language_pack.xml +++ b/upload/admin/applications/forums/xml/public_forums_language_pack.xml @@ -106,8 +106,8 @@ forums public_boards - oul_click - Last Click + sub_forum_title + Subforums forums @@ -118,8 +118,8 @@ forums public_boards - sub_forum_title - Subforums + oul_click + Last Click forums @@ -388,14 +388,14 @@ forums public_boards - slh_mostly - Most + slh_recently + Latest forums public_boards - slh_recently - Latest + slh_mostly + Most forums @@ -607,6 +607,18 @@ watched_forums Forums + + forums + public_forums + pm_moved + This topic has been moved + + + forums + public_forums + pm_locked + This topic is locked + forums public_forums @@ -640,8 +652,8 @@ forums public_forums - pm_open_new - New Replies + active_users_titlef + %s user(s) are browsing this forum forums @@ -652,8 +664,8 @@ forums public_forums - active_users_titlef - %s user(s) are browsing this forum + pm_open_new + New Replies forums @@ -1021,12 +1033,6 @@ view_announcement View announcement - - forums - public_forums - topic_start - Start New Topic - forums public_forums @@ -1036,14 +1042,14 @@ forums public_forums - in_last_topic - In: + topic_start + Start New Topic forums public_forums - goto_forum - Go to forum + in_last_topic + In: forums @@ -1060,8 +1066,8 @@ forums public_forums - forum_rules - Forum Rules + goto_forum + Go to forum forums @@ -1069,6 +1075,12 @@ view_forum_rules View forum rules + + forums + public_forums + forum_rules + Forum Rules + forums public_forums @@ -1087,12 +1099,6 @@ filter_direction Sort direction - - forums - public_forums - filter_type - Show topic type - forums public_forums @@ -1102,8 +1108,8 @@ forums public_forums - rename_topic_update - Update + filter_type + Show topic type forums @@ -1111,6 +1117,12 @@ view_reported_posts View reported posts + + forums + public_forums + rename_topic_update + Update + forums public_forums @@ -1168,14 +1180,14 @@ forums public_forums - dlt_delete_from_topic - Delete From Forum + dlt_remove + Remove forums public_forums - dlt_remove - Remove + dlt_delete_from_topic + Delete From Forum forums @@ -1195,24 +1207,30 @@ dltt_remove_from_view_desc hides the topic, but leaves it in the forum.]]> - - forums - public_forums - dlt_remove_from_view_desc - hides the post, but leaves it in the topic.]]> - forums public_forums dlt_remove_from_view Remove From View + + forums + public_forums + dlt_remove_from_view_desc + hides the post, but leaves it in the topic.]]> + forums public_forums dlt_title Delete Topic + + forums + public_forums + dlt_restore_topic + Unhide + forums public_forums @@ -1225,12 +1243,6 @@ tdb__noreasongi No reason given - - forums - public_forums - dlt_restore_topic - Unhide - forums public_forums @@ -1252,14 +1264,14 @@ forums public_forums - like_totalcount_follow_f - %s member(s) follow this forum + like_unfollow_f + unfollow this forum forums public_forums - like_unfollow_f - unfollow this forum + like_totalcount_follow_f + %s member(s) follow this forum forums @@ -1420,8 +1432,8 @@ forums public_forums - perm_delete_post - Permanently delete + topic_approve + Approve forums @@ -1432,8 +1444,8 @@ forums public_forums - topic_approve - Approve + perm_delete_post + Permanently delete forums @@ -1477,18 +1489,6 @@ topic_solved Answered - - forums - public_forums - pm_locked - This topic is locked - - - forums - public_forums - pm_moved - This topic has been moved - forums public_forums @@ -1774,14 +1774,14 @@ forums public_legends - bbc_intro - It is used in a similar format to HTML tags which you may already be familiar with.
    Below is a quick guide to the most common BB Code uses.]]>
    + bbc_title + BB Code
    forums public_legends - bbc_title - BB Code + bbc_intro + It is used in a similar format to HTML tags which you may already be familiar with.
    Below is a quick guide to the most common BB Code uses.]]>
    forums @@ -1864,14 +1864,14 @@ forums public_mod - th_topic - Topic Title + th_title + Topic History Report forums public_mod - th_title - Topic History Report + th_topic + Topic Title forums @@ -1888,14 +1888,8 @@ forums public_mod - st_submit - Split the selected posts - - - forums - public_mod - st_post - Post Review + st_top_bit + %s on %s]]> forums @@ -1906,8 +1900,14 @@ forums public_mod - st_top_bit - %s on %s]]> + st_post + Post Review + + + forums + public_mod + st_submit + Split the selected posts forums @@ -1924,14 +1924,14 @@ forums public_mod - st_top - Split Topic + mm_applied + Topic multi-moderation %s applied forums public_mod - mm_applied - Topic multi-moderation %s applied + st_top + Split Topic forums @@ -1945,12 +1945,6 @@ mpt_confirm Prune Confirm - - forums - public_mod - mpt_help - Prune Help - forums public_mod @@ -1960,8 +1954,8 @@ forums public_mod - cp_resync - Forum Resynchronized + mpt_help + Prune Help forums @@ -1972,8 +1966,14 @@ forums public_mod - cp_tmove_end - Move selected topics + cp_resync + Forum Resynchronized + + + forums + public_mod + cp_tmove_start + Moving topics forums @@ -1984,14 +1984,14 @@ forums public_mod - cp_redirect_topics - Topics updated + cp_tmove_end + Move selected topics forums public_mod - cp_tmove_start - Moving topics + cp_redirect_topics + Topics updated forums @@ -2035,12 +2035,6 @@ cmp_submit Move Posts - - forums - public_mod - cmp_topic - Enter topic ID - forums public_mod @@ -2050,8 +2044,8 @@ forums public_mod - cmp_title - Move Posts + cm_attach_title + Download attachment forums @@ -2062,14 +2056,14 @@ forums public_mod - cm_attach2 - Select which attachments you wish to keep + cmp_title + Move Posts forums public_mod - cm_keep - Keep + cmp_topic + Enter topic ID forums @@ -2080,8 +2074,14 @@ forums public_mod - cm_attach_title - Download attachment + cm_keep + Keep + + + forums + public_mod + cm_attach2 + Select which attachments you wish to keep forums @@ -2152,8 +2152,8 @@ forums public_mod - cp_ac_prune - + cp_prune_sub1 + Check Form Submission forums @@ -2164,8 +2164,8 @@ forums public_mod - cp_prune_sub1 - Check Form Submission + cp_ac_prune + forums @@ -2206,8 +2206,8 @@ forums public_mod - cp_prune_type - Matches the topic state + cp_prune_replies + n replies]]> forums @@ -2218,8 +2218,8 @@ forums public_mod - cp_prune_replies - n replies]]> + cp_prune_type + Matches the topic state forums @@ -2242,14 +2242,8 @@ forums public_mod - cp_prune_domove - Move the topics! - - - forums - public_mod - cp_per_go - n topics per cycle]]> + cp_prune_days2 + n days]]> forums @@ -2260,8 +2254,14 @@ forums public_mod - cp_prune_days2 - n days]]> + cp_per_go + n topics per cycle]]> + + + forums + public_mod + cp_prune_domove + Move the topics! forums @@ -2326,14 +2326,14 @@ forums public_mod - acp_merged_posts - Merged post ids: %s + acp_moved_a_topic + Moved a topic from %s to %s forums public_mod - acp_moved_a_topic - Moved a topic from %s to %s + acp_merged_posts + Merged post ids: %s forums @@ -2410,8 +2410,8 @@ forums public_mod - multi_topic_merge_mod_log - Merged %s topics + acp_unapprove_topic + Un-Approved a topic (tid: %s) forums @@ -2422,8 +2422,8 @@ forums public_mod - acp_unapprove_topic - Un-Approved a topic (tid: %s) + multi_topic_merge_mod_log + Merged %s topics forums @@ -2440,14 +2440,14 @@ forums public_mod - merge_topic_options - Merge Topic Options + move_topic_options + Move Topic Options forums public_mod - move_topic_options - Move Topic Options + merge_topic_options + Merge Topic Options forums @@ -2455,12 +2455,6 @@ mod_logs_topic_summary Moderator logs for the topic - - forums - public_mod - summary_th_title - Title - forums public_mod @@ -2470,8 +2464,8 @@ forums public_mod - post_content - Post Content + summary_th_title + Title forums @@ -2479,6 +2473,12 @@ topic_history_summary Report data for the topic + + forums + public_mod + post_content + Post Content + forums public_mod @@ -2536,14 +2536,14 @@ forums public_mod - acp_unsoftdeleted_posts - Un-Hidden posts (number of posts: %s) + p_topic_restored + Topic Restored forums public_mod - p_topic_restored - Topic Restored + acp_unsoftdeleted_posts + Un-Hidden posts (number of posts: %s) forums @@ -2833,6 +2833,12 @@ p_unpinned Topic Unpinned + + forums + public_post + top_txt_new + Posting a New Topic in + forums public_post @@ -2842,14 +2848,14 @@ forums public_post - submit_reply - Add Reply + no_topic_title + You must enter a topic title longer than 2 characters forums public_post - no_topic_title - You must enter a topic title longer than 2 characters + submit_reply + Add Reply forums @@ -2872,14 +2878,14 @@ forums public_post - submit_new - Post New Topic + mod_nowt + ( Do Nothing ) forums public_post - mod_nowt - ( Do Nothing ) + submit_new + Post New Topic forums @@ -2896,14 +2902,14 @@ forums public_post - mod_close - Close this topic + after_posting_pf + After Posting forums public_post - after_posting_pf - After Posting + mod_close + Close this topic forums @@ -2962,8 +2968,8 @@ forums public_post - poll_manager - Poll Manager + poll_add_link + Add A Poll forums @@ -2974,8 +2980,8 @@ forums public_post - poll_add_link - Add A Poll + poll_manager + Poll Manager forums @@ -3052,14 +3058,14 @@ forums public_post - err_reg_code - The security code you supplied did not match the one displayed, a new code has been generated, please try again + guest_captcha + Confirm Code forums public_post - guest_captcha - Confirm Code + err_reg_code + The security code you supplied did not match the one displayed, a new code has been generated, please try again forums @@ -3094,14 +3100,14 @@ forums public_post - mod_unpinclose - + preason_for_edit + Reason for edit: forums public_post - preason_for_edit - Reason for edit: + mod_unpinclose + forums @@ -3112,14 +3118,14 @@ forums public_post - mod_open - Open this topic + mod_pinopen + forums public_post - mod_pinopen - + mod_open + Open this topic forums @@ -3136,14 +3142,14 @@ forums public_post - trouble_uploading - Trouble uploading? + switch_to_basic + Try our basic uploader forums public_post - switch_to_basic - Try our basic uploader + trouble_uploading + Trouble uploading? forums @@ -3289,12 +3295,6 @@ NO_AUTHOR_SET We could not determine who was posting this topic. - - forums - public_post - clear_selection - Clear Selection - forums public_post @@ -3310,8 +3310,8 @@ forums public_post - attach_selected - Attach This File + clear_selection + Clear Selection forums @@ -3322,8 +3322,8 @@ forums public_post - topic_summary - Topic Summary + attach_selected + Attach This File forums @@ -3331,6 +3331,12 @@ edit_options Edit Options + + forums + public_post + topic_summary + Topic Summary + forums public_post @@ -3367,12 +3373,6 @@ topic_information Topic Information - - forums - public_post - close_poll_form - Finished - forums public_post @@ -3382,8 +3382,8 @@ forums public_post - add_another_question - Add Another Question + close_poll_form + Finished forums @@ -3394,8 +3394,8 @@ forums public_post - remove_choice - Remove Choice + add_another_question + Add Another Question forums @@ -3403,6 +3403,12 @@ remove_question Remove question + + forums + public_post + remove_choice + Remove Choice + forums public_post @@ -3505,12 +3511,6 @@ remember_share_prefs Set as my default sharing choice - - forums - public_post - top_txt_new - Posting a New Topic in - forums public_post @@ -3679,12 +3679,6 @@ added_poll - - forums - public_stats - leader_all_forums - All Forums - forums public_stats @@ -3694,14 +3688,14 @@ forums public_stats - leader_last_seen - Last Active + leader_group + Group forums public_stats - leader_group - Group + leader_last_seen + Last Active forums @@ -3799,6 +3793,12 @@ who_replied_title Who posted in this topic + + forums + public_stats + go_button + Go + forums public_stats @@ -3808,8 +3808,8 @@ forums public_stats - go_button - Go + leader_all_forums + All Forums forums @@ -4000,14 +4000,14 @@ forums public_topic - poll_edit - Edit this poll + rep_f_currently + Currently forums public_topic - rep_f_currently - Currently + poll_edit + Edit this poll forums @@ -4159,12 +4159,6 @@ post_unapprove Unapprove - - forums - public_topic - post_approve - Approve - forums public_topic @@ -4174,8 +4168,8 @@ forums public_topic - post_delete_title - Delete this post + post_approve + Approve forums @@ -4183,6 +4177,12 @@ post_edit Edit + + forums + public_topic + post_delete_title + Delete this post + forums public_topic @@ -4210,14 +4210,14 @@ forums public_topic - reputation_down - Vote this post down + report + Report forums public_topic - report - Report + reputation_down + Vote this post down forums @@ -4228,14 +4228,14 @@ forums public_topic - mod_select_post - Select this post for moderation + reputation + Reputation forums public_topic - reputation - Reputation + mod_select_post + Select this post for moderation forums @@ -4282,14 +4282,14 @@ forums public_topic - poll_vote_deleted - Your vote has been deleted from this poll + topic_add_reply + Reply to this topic forums public_topic - topic_add_reply - Reply to this topic + poll_vote_deleted + Your vote has been deleted from this poll forums @@ -4354,14 +4354,14 @@ forums public_topic - search_topic - Search Topic + search_topic_go + Go forums public_topic - search_topic_go - Go + search_topic + Search Topic forums @@ -4414,14 +4414,14 @@ forums public_topic - dlp_delete_from_topic - Delete From Topic + dlp_remove + Remove forums public_topic - dlp_remove - Remove + dlp_delete_from_topic + Delete From Topic forums @@ -4438,14 +4438,14 @@ forums public_topic - dlp_remove_from_view_desc - hides the post, but leaves it in the topic]]> + dlp_remove_from_view + Remove From View forums public_topic - dlp_remove_from_view - Remove From View + dlp_remove_from_view_desc + hides the post, but leaves it in the topic]]> forums @@ -4456,14 +4456,14 @@ forums public_topic - dl_ths_delete - Delete Topic + dl_ths_restore + Unhide Topic forums public_topic - dl_ths_restore - Unhide Topic + dl_ths_delete + Delete Topic forums @@ -4483,12 +4483,6 @@ nmo_p_delete_softed Delete %s hidden posts - - forums - public_topic - nmo_p_restore - Restore %s hidden posts - forums public_topic @@ -4498,8 +4492,8 @@ forums public_topic - cpt_undelete - Unhide + nmo_p_restore + Restore %s hidden posts forums @@ -4507,6 +4501,12 @@ nmo_p_approve Approve %s un-approved posts + + forums + public_topic + cpt_undelete + Unhide + forums public_topic @@ -4516,14 +4516,14 @@ forums public_topic - tg_madethe - made the + tg_gototopic + Go to this topic forums public_topic - tg_gototopic - Go to this topic + tg_madethe + made the forums @@ -4540,14 +4540,14 @@ forums public_topic - tg_unread - first unread post + tg_first + first post forums public_topic - tg_first - first post + tg_unread + first unread post forums @@ -4582,14 +4582,14 @@ forums public_topic - sdpost_remove - Remove + top_poll_only + This is a poll-only topic forums public_topic - top_poll_only - This is a poll-only topic + sdpost_remove + Remove forums @@ -4618,8 +4618,8 @@ forums public_topic - x_replies_to_topic - %s replies to this topic + no_replies_to_topic + No replies to this topic forums @@ -4630,8 +4630,8 @@ forums public_topic - no_replies_to_topic - No replies to this topic + x_replies_to_topic + %s replies to this topic forums @@ -4666,14 +4666,14 @@ forums public_topic - follow_notify_topics - topics + like_ucfirst_follow_t + Follow this topic forums public_topic - like_ucfirst_follow_t - Follow this topic + follow_notify_topics + topics forums @@ -4690,14 +4690,14 @@ forums public_topic - posted_by - Posted by + started_by + Started by forums public_topic - started_by - Started by + posted_by + Posted by forums @@ -4846,14 +4846,14 @@ forums public_topic - top_archived_topic_restore - This topic will be unarchived shortly. + post_hide_reason_default + Enter a reason... forums public_topic - post_hide_reason_default - Enter a reason... + top_archived_topic_restore + This topic will be unarchived shortly. forums diff --git a/upload/admin/applications/forums/xml/versions.xml b/upload/admin/applications/forums/xml/versions.xml index eeebaca4..0c30ee96 100644 --- a/upload/admin/applications/forums/xml/versions.xml +++ b/upload/admin/applications/forums/xml/versions.xml @@ -364,4 +364,8 @@ 3.4.8 34014 + + 3.4.9 + 34015 + \ No newline at end of file diff --git a/upload/admin/applications/members/extensions/admin/member_form.php b/upload/admin/applications/members/extensions/admin/member_form.php index f57beeeb..b16e63e2 100644 --- a/upload/admin/applications/members/extensions/admin/member_form.php +++ b/upload/admin/applications/members/extensions/admin/member_form.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Member form manipulation
      * Last Updated: $Date: 2012-08-22 10:47:20 -0400 (Wed, 22 Aug 2012) $
      * 
    diff --git a/upload/admin/applications/members/extensions/attachments/plugin_msg.php b/upload/admin/applications/members/extensions/attachments/plugin_msg.php index 83755097..6d236934 100644 --- a/upload/admin/applications/members/extensions/attachments/plugin_msg.php +++ b/upload/admin/applications/members/extensions/attachments/plugin_msg.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * IP.Board messenger attachments plugin
      * Last Updated: $Date: 2013-04-25 15:26:40 -0400 (Thu, 25 Apr 2013) $
      * 
    diff --git a/upload/admin/applications/members/extensions/coreExtensions.php b/upload/admin/applications/members/extensions/coreExtensions.php index 40dfc6a6..10bb1a67 100644 --- a/upload/admin/applications/members/extensions/coreExtensions.php +++ b/upload/admin/applications/members/extensions/coreExtensions.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Core extensions
      * Last Updated: $Date: 2012-05-21 09:09:36 -0400 (Mon, 21 May 2012) $
      * 
    @@ -149,7 +149,7 @@ class publicSessions__members /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Item Marking
      * Last Updated: $Date: 2012-05-21 09:09:36 -0400 (Mon, 21 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/extensions/coreVariables.php b/upload/admin/applications/members/extensions/coreVariables.php index 67780bc9..1982a967 100644 --- a/upload/admin/applications/members/extensions/coreVariables.php +++ b/upload/admin/applications/members/extensions/coreVariables.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Core variables extension file
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/extensions/dashboardNotifications.php b/upload/admin/applications/members/extensions/dashboardNotifications.php index 0d108b8a..470a9b3b 100644 --- a/upload/admin/applications/members/extensions/dashboardNotifications.php +++ b/upload/admin/applications/members/extensions/dashboardNotifications.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Dashboard Notifications
      * Last Updated: $Date
      *
    diff --git a/upload/admin/applications/members/extensions/dataHookLocations.php b/upload/admin/applications/members/extensions/dataHookLocations.php
    index 2d0470e5..64799700 100644
    --- a/upload/admin/applications/members/extensions/dataHookLocations.php
    +++ b/upload/admin/applications/members/extensions/dataHookLocations.php
    @@ -2,7 +2,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Define data hook locations (Members)
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/extensions/editorSections.php b/upload/admin/applications/members/extensions/editorSections.php index aa433d54..482206f4 100644 --- a/upload/admin/applications/members/extensions/editorSections.php +++ b/upload/admin/applications/members/extensions/editorSections.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * BBCode Management : Determines if bbcode can be used in this section
      * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/extensions/enhancements/mandrill.php b/upload/admin/applications/members/extensions/enhancements/mandrill.php index 96ba8ae6..b29ba502 100644 --- a/upload/admin/applications/members/extensions/enhancements/mandrill.php +++ b/upload/admin/applications/members/extensions/enhancements/mandrill.php @@ -7,7 +7,7 @@ * $Author: mark $ * @since 24 July 2012 * $LastChangedDate: 2012-06-20 10:50:23 +0100 (Wed, 20 Jun 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10952 $ */ @@ -99,24 +99,16 @@ class enhancements_members_mandrill $update = array( 'mandrill_username' => ipsRegistry::$request['username'], 'mandrill_api_key' => ipsRegistry::$request['api_key'] ); } - /* Fire that off to IPS so Mandrill knows it's one of ours */ - $classToLoad = IPSLib::loadLibrary( IPS_KERNEL_PATH . 'classFileManagement.php', 'classFileManagement' ); - $file = new $classToLoad(); - $json = NULL; - - /* If they want to use Mandrill for SMTP too, that call will contain the SMTP info, - so set it if we got it, or if the call failed, throw an error */ + /* If they want to use Mandrill for SMTP too, update those settings */ if ( ipsRegistry::$request['smtp'] ) { - if ( $json ) - { - $json = json_decode( $json, TRUE ); - $update = array_merge( $update, $json ); - } - else - { - return $this->editSettings( 'mandrill_error' ); - } + $update['smtp_host'] = 'smtp.mandrillapp.com'; + $update['mail_method'] = 'smtp'; + $update['smtp_port'] = 587; + $update['mail_wrap_brackets'] = 0; + $update['smtp_user'] = ipsRegistry::$request['username']; + $update['smtp_pass'] = ipsRegistry::$request['api_key']; + $update['smtp_helo'] = 'HELO'; } /* Update the settings */ diff --git a/upload/admin/applications/members/extensions/enhancements/spammonitoring.php b/upload/admin/applications/members/extensions/enhancements/spammonitoring.php index ac0ccc13..023cbbc7 100644 --- a/upload/admin/applications/members/extensions/enhancements/spammonitoring.php +++ b/upload/admin/applications/members/extensions/enhancements/spammonitoring.php @@ -7,7 +7,7 @@ * $Author: mark $ * @since 24 July 2012 * $LastChangedDate: 2012-06-20 10:50:23 +0100 (Wed, 20 Jun 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10952 $ */ diff --git a/upload/admin/applications/members/extensions/furlRedirect.php b/upload/admin/applications/members/extensions/furlRedirect.php index 64adb674..0e3b7421 100644 --- a/upload/admin/applications/members/extensions/furlRedirect.php +++ b/upload/admin/applications/members/extensions/furlRedirect.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * RSS output plugin :: posts
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/extensions/furlTemplates.php b/upload/admin/applications/members/extensions/furlTemplates.php index bc6a8a3b..3329c454 100644 --- a/upload/admin/applications/members/extensions/furlTemplates.php +++ b/upload/admin/applications/members/extensions/furlTemplates.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Sets up SEO templates
      * Last Updated: $Date: 2013-02-04 18:48:34 -0500 (Mon, 04 Feb 2013) $
      * 
    diff --git a/upload/admin/applications/members/extensions/memberSync.php b/upload/admin/applications/members/extensions/memberSync.php index e344cd75..39ed0b9a 100644 --- a/upload/admin/applications/members/extensions/memberSync.php +++ b/upload/admin/applications/members/extensions/memberSync.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Forum permissions mappings
      * Last Updated: $Date: 2012-08-22 10:11:25 -0400 (Wed, 22 Aug 2012) $
      * 
    diff --git a/upload/admin/applications/members/extensions/modcp/plugin_banned.php b/upload/admin/applications/members/extensions/modcp/plugin_banned.php index aa72d981..9ee0856b 100644 --- a/upload/admin/applications/members/extensions/modcp/plugin_banned.php +++ b/upload/admin/applications/members/extensions/modcp/plugin_banned.php @@ -7,7 +7,7 @@ * $Author: mmecham $ * @since 2/17/2011 * $LastChangedDate: 2012-01-24 11:56:40 -0500 (Tue, 24 Jan 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10180 $ */ diff --git a/upload/admin/applications/members/extensions/modcp/plugin_iplookup.php b/upload/admin/applications/members/extensions/modcp/plugin_iplookup.php index 1e494d26..137f46f8 100644 --- a/upload/admin/applications/members/extensions/modcp/plugin_iplookup.php +++ b/upload/admin/applications/members/extensions/modcp/plugin_iplookup.php @@ -7,7 +7,7 @@ * $Author: mark $ * @since 2/18/2011 * $LastChangedDate: 2012-03-23 08:34:13 -0400 (Fri, 23 Mar 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10474 $ */ diff --git a/upload/admin/applications/members/extensions/modcp/plugin_modposts.php b/upload/admin/applications/members/extensions/modcp/plugin_modposts.php index 6ae2e76e..9dd8dbd0 100644 --- a/upload/admin/applications/members/extensions/modcp/plugin_modposts.php +++ b/upload/admin/applications/members/extensions/modcp/plugin_modposts.php @@ -7,7 +7,7 @@ * $Author: mark $ * @since 2/17/2011 * $LastChangedDate: 2011-11-16 11:36:38 -0500 (Wed, 16 Nov 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 9829 $ */ diff --git a/upload/admin/applications/members/extensions/modcp/plugin_restrictposts.php b/upload/admin/applications/members/extensions/modcp/plugin_restrictposts.php index 94c2b66c..5ac4cdaf 100644 --- a/upload/admin/applications/members/extensions/modcp/plugin_restrictposts.php +++ b/upload/admin/applications/members/extensions/modcp/plugin_restrictposts.php @@ -7,7 +7,7 @@ * $Author: mark $ * @since 2/17/2011 * $LastChangedDate: 2011-11-16 11:36:38 -0500 (Wed, 16 Nov 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 9829 $ */ diff --git a/upload/admin/applications/members/extensions/modcp/plugin_suspended.php b/upload/admin/applications/members/extensions/modcp/plugin_suspended.php index 378c5043..080cbc0e 100644 --- a/upload/admin/applications/members/extensions/modcp/plugin_suspended.php +++ b/upload/admin/applications/members/extensions/modcp/plugin_suspended.php @@ -7,7 +7,7 @@ * $Author: mark $ * @since 2/17/2011 * $LastChangedDate: 2011-11-16 11:36:38 -0500 (Wed, 16 Nov 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 9829 $ */ diff --git a/upload/admin/applications/members/extensions/modcp/plugin_warn.php b/upload/admin/applications/members/extensions/modcp/plugin_warn.php index dfba91e7..51162e12 100644 --- a/upload/admin/applications/members/extensions/modcp/plugin_warn.php +++ b/upload/admin/applications/members/extensions/modcp/plugin_warn.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 2/14/2011 * $LastChangedDate: 2011-12-14 12:27:41 -0500 (Wed, 14 Dec 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10000 $ */ diff --git a/upload/admin/applications/members/extensions/notifications/config.php b/upload/admin/applications/members/extensions/notifications/config.php index 79b978ed..a3db8641 100644 --- a/upload/admin/applications/members/extensions/notifications/config.php +++ b/upload/admin/applications/members/extensions/notifications/config.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Define the core notification types
      * Last Updated: $Date: 2013-05-21 20:51:17 -0400 (Tue, 21 May 2013) $
      * 
    diff --git a/upload/admin/applications/members/extensions/notifications/pm.php b/upload/admin/applications/members/extensions/notifications/pm.php index 5f7249fe..9f4b61bc 100644 --- a/upload/admin/applications/members/extensions/notifications/pm.php +++ b/upload/admin/applications/members/extensions/notifications/pm.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Fetches meta data for notifications
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/extensions/profileTabs/friends.conf.php b/upload/admin/applications/members/extensions/profileTabs/friends.conf.php index e9f910ad..d827d9b0 100644 --- a/upload/admin/applications/members/extensions/profileTabs/friends.conf.php +++ b/upload/admin/applications/members/extensions/profileTabs/friends.conf.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Config for about me tab
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/extensions/profileTabs/friends.php b/upload/admin/applications/members/extensions/profileTabs/friends.php index 3f7f706f..a73a8249 100644 --- a/upload/admin/applications/members/extensions/profileTabs/friends.php +++ b/upload/admin/applications/members/extensions/profileTabs/friends.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Profile Plugin Library
      * Last Updated: $Date: 2012-09-14 10:11:40 -0400 (Fri, 14 Sep 2012) $
      * 
    diff --git a/upload/admin/applications/members/extensions/profileTabs/reputation.conf.php b/upload/admin/applications/members/extensions/profileTabs/reputation.conf.php index f984f0fb..abf78d1a 100644 --- a/upload/admin/applications/members/extensions/profileTabs/reputation.conf.php +++ b/upload/admin/applications/members/extensions/profileTabs/reputation.conf.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Config for reputation tab
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/extensions/profileTabs/reputation.php b/upload/admin/applications/members/extensions/profileTabs/reputation.php index a042b006..9e828832 100644 --- a/upload/admin/applications/members/extensions/profileTabs/reputation.php +++ b/upload/admin/applications/members/extensions/profileTabs/reputation.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Reputation Profile Tab
      * Last Updated: $Date: 2012-09-27 11:58:26 -0400 (Thu, 27 Sep 2012) $
      * 
    diff --git a/upload/admin/applications/members/extensions/profileTabs/status.conf.php b/upload/admin/applications/members/extensions/profileTabs/status.conf.php index 6fdcd3ad..ed214114 100644 --- a/upload/admin/applications/members/extensions/profileTabs/status.conf.php +++ b/upload/admin/applications/members/extensions/profileTabs/status.conf.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Config for about me tab
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/extensions/profileTabs/status.php b/upload/admin/applications/members/extensions/profileTabs/status.php index a96b4d39..83c112f5 100644 --- a/upload/admin/applications/members/extensions/profileTabs/status.php +++ b/upload/admin/applications/members/extensions/profileTabs/status.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Profile Plugin Library
      * Last Updated: $Date: 2012-08-28 17:56:22 -0400 (Tue, 28 Aug 2012) $
      * 
    diff --git a/upload/admin/applications/members/extensions/reportPlugins/messages.php b/upload/admin/applications/members/extensions/reportPlugins/messages.php index b03508e5..c09e3b19 100644 --- a/upload/admin/applications/members/extensions/reportPlugins/messages.php +++ b/upload/admin/applications/members/extensions/reportPlugins/messages.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Report Center :: Private Messages plugin
      * Last Updated: $LastChangedDate: 2013-05-08 17:43:20 -0400 (Wed, 08 May 2013) $
      * 
    diff --git a/upload/admin/applications/members/extensions/reportPlugins/profiles.php b/upload/admin/applications/members/extensions/reportPlugins/profiles.php index da155f8f..b5d3f050 100644 --- a/upload/admin/applications/members/extensions/reportPlugins/profiles.php +++ b/upload/admin/applications/members/extensions/reportPlugins/profiles.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Report Center :: Profiles plugin
      * Last Updated: $LastChangedDate: 2013-04-12 20:11:40 -0400 (Fri, 12 Apr 2013) $
      * 
    diff --git a/upload/admin/applications/members/extensions/search/config.php b/upload/admin/applications/members/extensions/search/config.php index 3f5f273c..fd00e291 100644 --- a/upload/admin/applications/members/extensions/search/config.php +++ b/upload/admin/applications/members/extensions/search/config.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Config file
      * Last Updated: $Date: 2013-04-15 17:26:30 -0400 (Mon, 15 Apr 2013) $
      * 
    diff --git a/upload/admin/applications/members/extensions/search/engines/sql.php b/upload/admin/applications/members/extensions/search/engines/sql.php index 2fb4c6b6..93a92560 100644 --- a/upload/admin/applications/members/extensions/search/engines/sql.php +++ b/upload/admin/applications/members/extensions/search/engines/sql.php @@ -2,18 +2,18 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Basic Forum Search
    - * Last Updated: $Date: 2014-11-11 15:53:26 -0500 (Tue, 11 Nov 2014) $
    + * Last Updated: $Date: 2015-07-03 11:59:59 -0400 (Fri, 03 Jul 2015) $
      * 
    * - * @author $Author: rashbrook $ + * @author $Author: stuarts $ * @copyright (c) 2001 - 2009 Invision Power Services, Inc. * @license http://www.invisionpower.com/company/standards.php#license * @package IP.Board * @subpackage Forums * @link http://www.invisionpower.com - * @version $Rev: 12568 $ + * @version $Rev: 12656 $ */ if ( ! defined( 'IN_IPB' ) ) @@ -250,7 +250,7 @@ class search_engine_members extends search_engine /* Fetch data */ - $this->DB->build( array('select' => 'm.*', + $this->DB->build( array('select' => 'm.*, p.*', 'from' => array( 'members' => 'm' ), 'where' => $this->_buildWhereStatement( $search_term ), 'order' => $sortKey . ' ' . $sort_order, diff --git a/upload/admin/applications/members/extensions/search/form.php b/upload/admin/applications/members/extensions/search/form.php index 9c535ef0..6124e710 100644 --- a/upload/admin/applications/members/extensions/search/form.php +++ b/upload/admin/applications/members/extensions/search/form.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Returns HTML for the form (optional class, not required)
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/extensions/search/format.php b/upload/admin/applications/members/extensions/search/format.php index 770cd26f..6d03aac1 100644 --- a/upload/admin/applications/members/extensions/search/format.php +++ b/upload/admin/applications/members/extensions/search/format.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Formats forum search results
      * Last Updated: $Date: 2012-05-25 13:17:47 -0400 (Fri, 25 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/extensions/sphinxTemplate.php b/upload/admin/applications/members/extensions/sphinxTemplate.php index de7b02d7..bd206d66 100644 --- a/upload/admin/applications/members/extensions/sphinxTemplate.php +++ b/upload/admin/applications/members/extensions/sphinxTemplate.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Sphinx template file
      * Last Updated: $Date: 2011-06-02 17:57:20 -0400 (Thu, 02 Jun 2011) $
      * 
    diff --git a/upload/admin/applications/members/extensions/warnings.php b/upload/admin/applications/members/extensions/warnings.php index 4231d308..69048fed 100644 --- a/upload/admin/applications/members/extensions/warnings.php +++ b/upload/admin/applications/members/extensions/warnings.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ (Original: Mark) * @since - * $LastChangedDate: 2010-10-14 13:11:17 -0400 (Thu, 14 Oct 2010) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 477 $ */ diff --git a/upload/admin/applications/members/modules_admin/ajax/bulkmail.php b/upload/admin/applications/members/modules_admin/ajax/bulkmail.php index 8814fa96..0ac3eec2 100644 --- a/upload/admin/applications/members/modules_admin/ajax/bulkmail.php +++ b/upload/admin/applications/members/modules_admin/ajax/bulkmail.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Bulk Mail Recipients List Generator (AJAX)
      * Last Updated: $Date: 2012-07-12 18:15:50 +0100 (Thu, 12 Jul 2012) $
      * 
    diff --git a/upload/admin/applications/members/modules_admin/ajax/defaultSection.php b/upload/admin/applications/members/modules_admin/ajax/defaultSection.php index dc1b1c97..bc8cdab5 100644 --- a/upload/admin/applications/members/modules_admin/ajax/defaultSection.php +++ b/upload/admin/applications/members/modules_admin/ajax/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 20th February 2002 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/members/modules_admin/ajax/editform.php b/upload/admin/applications/members/modules_admin/ajax/editform.php index 098e3308..e3e8b6c7 100644 --- a/upload/admin/applications/members/modules_admin/ajax/editform.php +++ b/upload/admin/applications/members/modules_admin/ajax/editform.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Member property updater (AJAX)
      * Last Updated: $Date: 2012-07-12 13:15:50 -0400 (Thu, 12 Jul 2012) $
      * 
    diff --git a/upload/admin/applications/members/modules_admin/ajax/members.php b/upload/admin/applications/members/modules_admin/ajax/members.php index a2520b8b..449bf738 100644 --- a/upload/admin/applications/members/modules_admin/ajax/members.php +++ b/upload/admin/applications/members/modules_admin/ajax/members.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Member list AJAX handler
      * Last Updated: $Date: 2012-10-26 11:50:52 -0400 (Fri, 26 Oct 2012) $
      * 
    diff --git a/upload/admin/applications/members/modules_admin/bulkmail/bulkmail.php b/upload/admin/applications/members/modules_admin/bulkmail/bulkmail.php index 511e41b8..5967a76c 100644 --- a/upload/admin/applications/members/modules_admin/bulkmail/bulkmail.php +++ b/upload/admin/applications/members/modules_admin/bulkmail/bulkmail.php @@ -2,9 +2,9 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Bulk mail management
    - * Last Updated: $Date: 2015-01-06 07:55:43 -0500 (Tue, 06 Jan 2015) $
    + * Last Updated: $Date: 2015-09-10 11:22:19 -0400 (Thu, 10 Sep 2015) $
      * 
    * * @author $Author: stuarts $ @@ -13,7 +13,7 @@ * @package IP.Board * @subpackage Members * @link http://www.invisionpower.com - * @version $Revision: 12583 $ + * @version $Revision: 12674 $ */ if ( ! defined( 'IN_ACP' ) ) @@ -388,8 +388,9 @@ class admin_members_bulkmail_bulkmail extends ipsCommand { continue; } - - $recipientsTo[] = array( 'email' => $r['email'], 'name' => $r['members_display_name'] ); + + /* Make sure the name is UTF8 encoded, otherwise it will break JSON */ + $recipientsTo[] = array( 'email' => $r['email'], 'name' => utf8_encode( $r['members_display_name'] ) ); $vars = array(); foreach ( $this->_getVariableInformation( $r, 1 ) as $k => $v ) diff --git a/upload/admin/applications/members/modules_admin/bulkmail/defaultSection.php b/upload/admin/applications/members/modules_admin/bulkmail/defaultSection.php index 8e000872..10f43c7d 100644 --- a/upload/admin/applications/members/modules_admin/bulkmail/defaultSection.php +++ b/upload/admin/applications/members/modules_admin/bulkmail/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 20th February 2002 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/members/modules_admin/cfields/customfields.php b/upload/admin/applications/members/modules_admin/cfields/customfields.php index 69d6730c..3c6e3e58 100644 --- a/upload/admin/applications/members/modules_admin/cfields/customfields.php +++ b/upload/admin/applications/members/modules_admin/cfields/customfields.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Custom field management
      * Last Updated: $Date: 2012-08-28 17:56:22 -0400 (Tue, 28 Aug 2012) $
      * 
    diff --git a/upload/admin/applications/members/modules_admin/cfields/defaultSection.php b/upload/admin/applications/members/modules_admin/cfields/defaultSection.php index b807e5e0..6c111ef9 100644 --- a/upload/admin/applications/members/modules_admin/cfields/defaultSection.php +++ b/upload/admin/applications/members/modules_admin/cfields/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 20th February 2002 * $LastChangedDate: 2010-10-14 13:11:17 -0400 (Thu, 14 Oct 2010) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 477 $ */ diff --git a/upload/admin/applications/members/modules_admin/groups/defaultSection.php b/upload/admin/applications/members/modules_admin/groups/defaultSection.php index af87898e..1002c21f 100644 --- a/upload/admin/applications/members/modules_admin/groups/defaultSection.php +++ b/upload/admin/applications/members/modules_admin/groups/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 20th February 2002 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/members/modules_admin/groups/groups.php b/upload/admin/applications/members/modules_admin/groups/groups.php index adabdac4..89c1d6d6 100644 --- a/upload/admin/applications/members/modules_admin/groups/groups.php +++ b/upload/admin/applications/members/modules_admin/groups/groups.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Group management
      * Last Updated: $Date: 2013-04-03 17:54:22 -0400 (Wed, 03 Apr 2013) $
      * 
    diff --git a/upload/admin/applications/members/modules_admin/groups/permissions.php b/upload/admin/applications/members/modules_admin/groups/permissions.php index dcebd8b8..8c48b658 100644 --- a/upload/admin/applications/members/modules_admin/groups/permissions.php +++ b/upload/admin/applications/members/modules_admin/groups/permissions.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Permissions management
      * Last Updated: $Date: 2012-12-21 13:31:16 -0500 (Fri, 21 Dec 2012) $
      * 
    diff --git a/upload/admin/applications/members/modules_admin/members/banfilters.php b/upload/admin/applications/members/modules_admin/members/banfilters.php index 39383b58..e9917141 100644 --- a/upload/admin/applications/members/modules_admin/members/banfilters.php +++ b/upload/admin/applications/members/modules_admin/members/banfilters.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since - * $LastChangedDate: 2011-03-22 12:48:06 -0400 (Tue, 22 Mar 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8149 $ */ diff --git a/upload/admin/applications/members/modules_admin/members/defaultSection.php b/upload/admin/applications/members/modules_admin/members/defaultSection.php index 222a2645..45c769c5 100644 --- a/upload/admin/applications/members/modules_admin/members/defaultSection.php +++ b/upload/admin/applications/members/modules_admin/members/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 20th February 2002 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/members/modules_admin/members/editform.php b/upload/admin/applications/members/modules_admin/members/editform.php index 5c866ecc..7b718145 100644 --- a/upload/admin/applications/members/modules_admin/members/editform.php +++ b/upload/admin/applications/members/modules_admin/members/editform.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Member property updater (AJAX)
      * Last Updated: $Date: 2014-08-29 15:04:48 -0400 (Fri, 29 Aug 2014) $
      * 
    diff --git a/upload/admin/applications/members/modules_admin/members/members.php b/upload/admin/applications/members/modules_admin/members/members.php index 01fe7279..3ba31f6b 100644 --- a/upload/admin/applications/members/modules_admin/members/members.php +++ b/upload/admin/applications/members/modules_admin/members/members.php @@ -7,7 +7,7 @@ * $Author: rashbrook $ * @since 1st March 2002 * $LastChangedDate: 2015-01-27 23:17:46 -0500 (Tue, 27 Jan 2015) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 12592 $ */ diff --git a/upload/admin/applications/members/modules_admin/members/notifications.php b/upload/admin/applications/members/modules_admin/members/notifications.php index fbcb341b..280e1b89 100644 --- a/upload/admin/applications/members/modules_admin/members/notifications.php +++ b/upload/admin/applications/members/modules_admin/members/notifications.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Configure default notification options
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/modules_admin/members/ranks.php b/upload/admin/applications/members/modules_admin/members/ranks.php index 3d7df7ae..f88da343 100644 --- a/upload/admin/applications/members/modules_admin/members/ranks.php +++ b/upload/admin/applications/members/modules_admin/members/ranks.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Member management
      * Last Updated: $Date: 2012-08-28 17:56:22 -0400 (Tue, 28 Aug 2012) $
      * 
    diff --git a/upload/admin/applications/members/modules_admin/members/reputation.php b/upload/admin/applications/members/modules_admin/members/reputation.php index 7297cd87..bc150f86 100644 --- a/upload/admin/applications/members/modules_admin/members/reputation.php +++ b/upload/admin/applications/members/modules_admin/members/reputation.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Reputation System
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/modules_admin/members/tools.php b/upload/admin/applications/members/modules_admin/members/tools.php index b68be3c2..bb063097 100644 --- a/upload/admin/applications/members/modules_admin/members/tools.php +++ b/upload/admin/applications/members/modules_admin/members/tools.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Member validation, locked and banned queues
      * Last Updated: $Date: 2013-11-15 13:16:48 -0500 (Fri, 15 Nov 2013) $
      * 
    diff --git a/upload/admin/applications/members/modules_admin/restrictions/defaultSection.php b/upload/admin/applications/members/modules_admin/restrictions/defaultSection.php index 1387039d..0c5647b7 100644 --- a/upload/admin/applications/members/modules_admin/restrictions/defaultSection.php +++ b/upload/admin/applications/members/modules_admin/restrictions/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 20th February 2002 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/members/modules_admin/restrictions/restrictions.php b/upload/admin/applications/members/modules_admin/restrictions/restrictions.php index 7274b984..d0ea43ec 100644 --- a/upload/admin/applications/members/modules_admin/restrictions/restrictions.php +++ b/upload/admin/applications/members/modules_admin/restrictions/restrictions.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * ACP Restrictions
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/modules_admin/warnings/actions.php b/upload/admin/applications/members/modules_admin/warnings/actions.php index debf1fba..237e965a 100644 --- a/upload/admin/applications/members/modules_admin/warnings/actions.php +++ b/upload/admin/applications/members/modules_admin/warnings/actions.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Warning Actions
      * Last Updated: $Date: 2012-10-01 11:12:40 -0400 (Mon, 01 Oct 2012) $
      * 
    diff --git a/upload/admin/applications/members/modules_admin/warnings/defaultSection.php b/upload/admin/applications/members/modules_admin/warnings/defaultSection.php index 4e01ffad..d511f13c 100644 --- a/upload/admin/applications/members/modules_admin/warnings/defaultSection.php +++ b/upload/admin/applications/members/modules_admin/warnings/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 07th May 2012 * $LastChangedDate: 2012-05-07 11:22:43 -0400 (Mon, 07 May 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10695 $ */ diff --git a/upload/admin/applications/members/modules_admin/warnings/reasons.php b/upload/admin/applications/members/modules_admin/warnings/reasons.php index 33bf489d..3c05f55d 100644 --- a/upload/admin/applications/members/modules_admin/warnings/reasons.php +++ b/upload/admin/applications/members/modules_admin/warnings/reasons.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Warning Reasons
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/modules_public/ajax/card.php b/upload/admin/applications/members/modules_public/ajax/card.php index ade69b86..bdf8dae6 100644 --- a/upload/admin/applications/members/modules_public/ajax/card.php +++ b/upload/admin/applications/members/modules_public/ajax/card.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Profile AJAX hCard
      * Last Updated: $Date: 2012-05-30 13:28:08 -0400 (Wed, 30 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/modules_public/ajax/dname.php b/upload/admin/applications/members/modules_public/ajax/dname.php index 2af3205c..fa10e939 100644 --- a/upload/admin/applications/members/modules_public/ajax/dname.php +++ b/upload/admin/applications/members/modules_public/ajax/dname.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Profile display name history
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/modules_public/ajax/dst.php b/upload/admin/applications/members/modules_public/ajax/dst.php index 36eada9c..35de1a03 100644 --- a/upload/admin/applications/members/modules_public/ajax/dst.php +++ b/upload/admin/applications/members/modules_public/ajax/dst.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Member AJAX DST switcher
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/modules_public/ajax/friends.php b/upload/admin/applications/members/modules_public/ajax/friends.php index 07f56134..5e4dcbed 100644 --- a/upload/admin/applications/members/modules_public/ajax/friends.php +++ b/upload/admin/applications/members/modules_public/ajax/friends.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Profile AJAX Comment Handler
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/modules_public/ajax/ignore.php b/upload/admin/applications/members/modules_public/ajax/ignore.php index ef231ed3..56993be9 100644 --- a/upload/admin/applications/members/modules_public/ajax/ignore.php +++ b/upload/admin/applications/members/modules_public/ajax/ignore.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Profile AJAX Ignore User
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/modules_public/ajax/load.php b/upload/admin/applications/members/modules_public/ajax/load.php index b2f9747a..e258cbd1 100644 --- a/upload/admin/applications/members/modules_public/ajax/load.php +++ b/upload/admin/applications/members/modules_public/ajax/load.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Profile AJAX Tab Loader
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/modules_public/ajax/messenger.php b/upload/admin/applications/members/modules_public/ajax/messenger.php index a567a49d..ee66ae34 100644 --- a/upload/admin/applications/members/modules_public/ajax/messenger.php +++ b/upload/admin/applications/members/modules_public/ajax/messenger.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Profile AJAX Ignored User methods
      * Last Updated: $Date: 2015-04-24 13:07:02 -0400 (Fri, 24 Apr 2015) $
      * 
    diff --git a/upload/admin/applications/members/modules_public/ajax/photo.php b/upload/admin/applications/members/modules_public/ajax/photo.php index 02752430..213bde27 100644 --- a/upload/admin/applications/members/modules_public/ajax/photo.php +++ b/upload/admin/applications/members/modules_public/ajax/photo.php @@ -7,7 +7,7 @@ * $Author: mmecham $ * @since 7th Feb 2011 * $LastChangedDate: 2012-05-11 11:17:52 -0400 (Fri, 11 May 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10727 $ */ diff --git a/upload/admin/applications/members/modules_public/ajax/rate.php b/upload/admin/applications/members/modules_public/ajax/rate.php index 3b500132..613ed03f 100644 --- a/upload/admin/applications/members/modules_public/ajax/rate.php +++ b/upload/admin/applications/members/modules_public/ajax/rate.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Profile AJAX Tab Loader
      * Last Updated: $Date: 2013-03-19 10:12:37 -0400 (Tue, 19 Mar 2013) $
      * 
    diff --git a/upload/admin/applications/members/modules_public/ajax/status.php b/upload/admin/applications/members/modules_public/ajax/status.php index 288e573d..c2e57c66 100644 --- a/upload/admin/applications/members/modules_public/ajax/status.php +++ b/upload/admin/applications/members/modules_public/ajax/status.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Allow user to change their status
      * Last Updated: $Date: 2012-11-05 09:03:19 -0500 (Mon, 05 Nov 2012) $
      * 
    diff --git a/upload/admin/applications/members/modules_public/ajax/warnings.php b/upload/admin/applications/members/modules_public/ajax/warnings.php index a9bf0ac5..fd5854a2 100644 --- a/upload/admin/applications/members/modules_public/ajax/warnings.php +++ b/upload/admin/applications/members/modules_public/ajax/warnings.php @@ -7,7 +7,7 @@ * $Author: bfarber $ (Original: Mark) * @since 9 Nov 2011 * $LastChangedDate: 2012-06-29 10:12:14 -0400 (Fri, 29 Jun 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 11007 $ */ diff --git a/upload/admin/applications/members/modules_public/list/defaultSection.php b/upload/admin/applications/members/modules_public/list/defaultSection.php index 418a88fb..a49b316e 100644 --- a/upload/admin/applications/members/modules_public/list/defaultSection.php +++ b/upload/admin/applications/members/modules_public/list/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 20th February 2002 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/members/modules_public/list/view.php b/upload/admin/applications/members/modules_public/list/view.php index c3d8d989..d4b6bfc8 100644 --- a/upload/admin/applications/members/modules_public/list/view.php +++ b/upload/admin/applications/members/modules_public/list/view.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Member list
      * Last Updated: $Date: 2015-05-08 05:55:54 -0400 (Fri, 08 May 2015) $
      * 
    diff --git a/upload/admin/applications/members/modules_public/messaging/defaultSection.php b/upload/admin/applications/members/modules_public/messaging/defaultSection.php index 6a250312..06229f88 100644 --- a/upload/admin/applications/members/modules_public/messaging/defaultSection.php +++ b/upload/admin/applications/members/modules_public/messaging/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 20th February 2002 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/members/modules_public/messaging/markasread.php b/upload/admin/applications/members/modules_public/messaging/markasread.php index a8780c24..0eab383e 100644 --- a/upload/admin/applications/members/modules_public/messaging/markasread.php +++ b/upload/admin/applications/members/modules_public/messaging/markasread.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Mark a private message as read
      * Last Updated: $Date: 2015-02-18 10:39:15 -0500 (Wed, 18 Feb 2015) $
      * 
    diff --git a/upload/admin/applications/members/modules_public/messaging/search.php b/upload/admin/applications/members/modules_public/messaging/search.php index fa0d0636..5ac03b62 100644 --- a/upload/admin/applications/members/modules_public/messaging/search.php +++ b/upload/admin/applications/members/modules_public/messaging/search.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Online list
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/modules_public/messaging/send.php b/upload/admin/applications/members/modules_public/messaging/send.php index 7028cfa0..4ed9f80a 100644 --- a/upload/admin/applications/members/modules_public/messaging/send.php +++ b/upload/admin/applications/members/modules_public/messaging/send.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Online list
      * Last Updated: $Date: 2015-04-24 13:16:25 -0400 (Fri, 24 Apr 2015) $
      * 
    diff --git a/upload/admin/applications/members/modules_public/messaging/view.php b/upload/admin/applications/members/modules_public/messaging/view.php index e64c108d..ab88b0d0 100644 --- a/upload/admin/applications/members/modules_public/messaging/view.php +++ b/upload/admin/applications/members/modules_public/messaging/view.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Online list
      * Last Updated: $Date: 2012-05-21 11:56:33 -0400 (Mon, 21 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/modules_public/online/defaultSection.php b/upload/admin/applications/members/modules_public/online/defaultSection.php index 4cac9d2e..f4d32d1d 100644 --- a/upload/admin/applications/members/modules_public/online/defaultSection.php +++ b/upload/admin/applications/members/modules_public/online/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 20th February 2002 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/members/modules_public/online/online.php b/upload/admin/applications/members/modules_public/online/online.php index 35543b40..fa3247c9 100644 --- a/upload/admin/applications/members/modules_public/online/online.php +++ b/upload/admin/applications/members/modules_public/online/online.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Online list
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/modules_public/profile/defaultSection.php b/upload/admin/applications/members/modules_public/profile/defaultSection.php index 127c7693..8c98055e 100644 --- a/upload/admin/applications/members/modules_public/profile/defaultSection.php +++ b/upload/admin/applications/members/modules_public/profile/defaultSection.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 20th February 2002 * $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8655 $ */ diff --git a/upload/admin/applications/members/modules_public/profile/dname.php b/upload/admin/applications/members/modules_public/profile/dname.php index fea316d3..feb3b711 100644 --- a/upload/admin/applications/members/modules_public/profile/dname.php +++ b/upload/admin/applications/members/modules_public/profile/dname.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Profile View
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/modules_public/profile/friends.php b/upload/admin/applications/members/modules_public/profile/friends.php index ab64a196..ae99a338 100644 --- a/upload/admin/applications/members/modules_public/profile/friends.php +++ b/upload/admin/applications/members/modules_public/profile/friends.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Profile View
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/modules_public/profile/ignore.php b/upload/admin/applications/members/modules_public/profile/ignore.php index cfd8bcc2..7c513064 100644 --- a/upload/admin/applications/members/modules_public/profile/ignore.php +++ b/upload/admin/applications/members/modules_public/profile/ignore.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Ignore a user
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/modules_public/profile/photo.php b/upload/admin/applications/members/modules_public/profile/photo.php index e4e3aab8..6bd9fbd5 100644 --- a/upload/admin/applications/members/modules_public/profile/photo.php +++ b/upload/admin/applications/members/modules_public/profile/photo.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Profile Photo
      * Last Updated: $Date: 2015-02-18 08:20:59 -0500 (Wed, 18 Feb 2015) $
      * 
    diff --git a/upload/admin/applications/members/modules_public/profile/status.php b/upload/admin/applications/members/modules_public/profile/status.php index 8a4a6dcb..bd335447 100644 --- a/upload/admin/applications/members/modules_public/profile/status.php +++ b/upload/admin/applications/members/modules_public/profile/status.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Allow user to change their status
      * Last Updated: $Date: 2013-05-02 11:20:01 -0400 (Thu, 02 May 2013) $
      * 
    diff --git a/upload/admin/applications/members/modules_public/profile/view.php b/upload/admin/applications/members/modules_public/profile/view.php index 6e493e26..764179c7 100644 --- a/upload/admin/applications/members/modules_public/profile/view.php +++ b/upload/admin/applications/members/modules_public/profile/view.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Profile View
      * Last Updated: $Date: 2013-10-14 15:30:19 -0400 (Mon, 14 Oct 2013) $
      * 
    diff --git a/upload/admin/applications/members/modules_public/profile/warnings.php b/upload/admin/applications/members/modules_public/profile/warnings.php index 8d11dede..b1b11e2c 100644 --- a/upload/admin/applications/members/modules_public/profile/warnings.php +++ b/upload/admin/applications/members/modules_public/profile/warnings.php @@ -3,9 +3,9 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Warnings Management
    - * Last Updated: $Date: 2014-08-14 09:13:37 -0400 (Thu, 14 Aug 2014) $
    + * Last Updated: $Date: 2015-12-28 09:53:36 -0500 (Mon, 28 Dec 2015) $
      * 
    * * @author $Author: bfarber $ (Original: Mark) @@ -15,7 +15,7 @@ * @subpackage Members * @link http://www.invisionpower.com * @since 9th November 2011 - * @version $Revision: 12485 $ + * @version $Revision: 12687 $ * */ @@ -303,6 +303,11 @@ class public_members_profile_warnings extends ipsCommand */ public function save() { + if ( $this->request['secure_key'] != $this->member->form_hash ) + { + $this->registry->output->showError( 'no_permission', 10264.1, null, null, 403 ); + } + //----------------------------------------- // Init //----------------------------------------- diff --git a/upload/admin/applications/members/modules_public/reputation/most.php b/upload/admin/applications/members/modules_public/reputation/most.php index fbede419..d024c8d2 100644 --- a/upload/admin/applications/members/modules_public/reputation/most.php +++ b/upload/admin/applications/members/modules_public/reputation/most.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Most Liked Content
      * Last Updated: $Date: 2013-10-21 09:41:15 -0400 (Mon, 21 Oct 2013) $
      * 
    diff --git a/upload/admin/applications/members/skin_cp/cp_skin_banfilters.php b/upload/admin/applications/members/skin_cp/cp_skin_banfilters.php index df3c8939..0ec8892e 100644 --- a/upload/admin/applications/members/skin_cp/cp_skin_banfilters.php +++ b/upload/admin/applications/members/skin_cp/cp_skin_banfilters.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * ACP ban filters skin file
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/skin_cp/cp_skin_bulkmail.php b/upload/admin/applications/members/skin_cp/cp_skin_bulkmail.php index 3014d4e9..6ef65f7b 100644 --- a/upload/admin/applications/members/skin_cp/cp_skin_bulkmail.php +++ b/upload/admin/applications/members/skin_cp/cp_skin_bulkmail.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * ACP bulk mail skin file
      * Last Updated: $Date: 2013-02-07 11:03:55 -0500 (Thu, 07 Feb 2013) $
      * 
    diff --git a/upload/admin/applications/members/skin_cp/cp_skin_groups.php b/upload/admin/applications/members/skin_cp/cp_skin_groups.php index a64f4f04..6efe6895 100644 --- a/upload/admin/applications/members/skin_cp/cp_skin_groups.php +++ b/upload/admin/applications/members/skin_cp/cp_skin_groups.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * ACP groups skin file
      * Last Updated: $Date: 2013-04-15 17:26:30 -0400 (Mon, 15 Apr 2013) $
      * 
    diff --git a/upload/admin/applications/members/skin_cp/cp_skin_member.php b/upload/admin/applications/members/skin_cp/cp_skin_member.php index c680cf4d..2df3321c 100644 --- a/upload/admin/applications/members/skin_cp/cp_skin_member.php +++ b/upload/admin/applications/members/skin_cp/cp_skin_member.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * ACP members skin file
      * Last Updated: $Date: 2013-04-16 15:13:53 -0400 (Tue, 16 Apr 2013) $
      * 
    diff --git a/upload/admin/applications/members/skin_cp/cp_skin_member_form.php b/upload/admin/applications/members/skin_cp/cp_skin_member_form.php index 26b922cf..1a58e94b 100644 --- a/upload/admin/applications/members/skin_cp/cp_skin_member_form.php +++ b/upload/admin/applications/members/skin_cp/cp_skin_member_form.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * ACP member forms skin file
      * Last Updated: $Date: 2013-11-15 13:16:48 -0500 (Fri, 15 Nov 2013) $
      * 
    diff --git a/upload/admin/applications/members/skin_cp/cp_skin_notifications.php b/upload/admin/applications/members/skin_cp/cp_skin_notifications.php index 6d329dac..e5ee2c61 100644 --- a/upload/admin/applications/members/skin_cp/cp_skin_notifications.php +++ b/upload/admin/applications/members/skin_cp/cp_skin_notifications.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * ACP notification config skin file
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/skin_cp/cp_skin_permissions.php b/upload/admin/applications/members/skin_cp/cp_skin_permissions.php index 1658dda6..bdf14c36 100644 --- a/upload/admin/applications/members/skin_cp/cp_skin_permissions.php +++ b/upload/admin/applications/members/skin_cp/cp_skin_permissions.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * ACP permissions skin file
      * Last Updated: $Date: 2012-06-29 10:12:14 -0400 (Fri, 29 Jun 2012) $
      * 
    diff --git a/upload/admin/applications/members/skin_cp/cp_skin_profilefields.php b/upload/admin/applications/members/skin_cp/cp_skin_profilefields.php index 860df76f..2e231153 100644 --- a/upload/admin/applications/members/skin_cp/cp_skin_profilefields.php +++ b/upload/admin/applications/members/skin_cp/cp_skin_profilefields.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * ACP profile fields skin file
      * Last Updated: $Date: 2012-08-28 17:56:22 -0400 (Tue, 28 Aug 2012) $
      * 
    diff --git a/upload/admin/applications/members/skin_cp/cp_skin_ranks.php b/upload/admin/applications/members/skin_cp/cp_skin_ranks.php index c0ed729e..e46b3d6f 100644 --- a/upload/admin/applications/members/skin_cp/cp_skin_ranks.php +++ b/upload/admin/applications/members/skin_cp/cp_skin_ranks.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * ACP ranks skin file
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/skin_cp/cp_skin_reputation.php b/upload/admin/applications/members/skin_cp/cp_skin_reputation.php index 001908a6..13a8bf00 100644 --- a/upload/admin/applications/members/skin_cp/cp_skin_reputation.php +++ b/upload/admin/applications/members/skin_cp/cp_skin_reputation.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * ACP reputation skin file
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/skin_cp/cp_skin_restrictions.php b/upload/admin/applications/members/skin_cp/cp_skin_restrictions.php index 5cbccced..2fd9086f 100644 --- a/upload/admin/applications/members/skin_cp/cp_skin_restrictions.php +++ b/upload/admin/applications/members/skin_cp/cp_skin_restrictions.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * ACP restrictions skin file
      * Last Updated: $Date: 2013-04-10 10:22:38 -0400 (Wed, 10 Apr 2013) $
      * 
    diff --git a/upload/admin/applications/members/skin_cp/cp_skin_tools.php b/upload/admin/applications/members/skin_cp/cp_skin_tools.php index 456e64ce..fa53a711 100644 --- a/upload/admin/applications/members/skin_cp/cp_skin_tools.php +++ b/upload/admin/applications/members/skin_cp/cp_skin_tools.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * ACP tools skin file
      * Last Updated: $Date: 2013-02-27 13:31:18 -0500 (Wed, 27 Feb 2013) $
      * 
    diff --git a/upload/admin/applications/members/skin_cp/cp_skin_warnings_actions.php b/upload/admin/applications/members/skin_cp/cp_skin_warnings_actions.php index 1e339f70..a570c2da 100644 --- a/upload/admin/applications/members/skin_cp/cp_skin_warnings_actions.php +++ b/upload/admin/applications/members/skin_cp/cp_skin_warnings_actions.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * ACP Manage Warnings Reasons Skin
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/skin_cp/cp_skin_warnings_reasons.php b/upload/admin/applications/members/skin_cp/cp_skin_warnings_reasons.php index 9419cc82..4722c8fe 100644 --- a/upload/admin/applications/members/skin_cp/cp_skin_warnings_reasons.php +++ b/upload/admin/applications/members/skin_cp/cp_skin_warnings_reasons.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * ACP Manage Warnings Reasons Skin
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/sources/adminManage.php b/upload/admin/applications/members/sources/adminManage.php index 3e1f60e6..543b0aba 100644 --- a/upload/admin/applications/members/sources/adminManage.php +++ b/upload/admin/applications/members/sources/adminManage.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Library to facilitate ACP member management
      * Last Updated: $Date: 2013-02-19 06:02:12 -0500 (Tue, 19 Feb 2013) $
      * 
    diff --git a/upload/admin/applications/members/sources/adminSearch.php b/upload/admin/applications/members/sources/adminSearch.php index 02c7de9c..1c44d7d5 100644 --- a/upload/admin/applications/members/sources/adminSearch.php +++ b/upload/admin/applications/members/sources/adminSearch.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Library to facilitate ACP member searches
      * Last Updated: $Date: 2013-05-28 21:40:33 -0400 (Tue, 28 May 2013) $
      * 
    diff --git a/upload/admin/applications/members/sources/classes/hooks/gateway.php b/upload/admin/applications/members/sources/classes/hooks/gateway.php index 6e6a6fab..b6fdf4de 100644 --- a/upload/admin/applications/members/sources/classes/hooks/gateway.php +++ b/upload/admin/applications/members/sources/classes/hooks/gateway.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Subscriptions Hooks Gateway "Handler"
      * Owner: Matt "Oh Lord, why did I get assigned this?" Mecham
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
    diff --git a/upload/admin/applications/members/sources/classes/mandrill.php b/upload/admin/applications/members/sources/classes/mandrill.php
    index c8007a26..02ff61e6 100644
    --- a/upload/admin/applications/members/sources/classes/mandrill.php
    +++ b/upload/admin/applications/members/sources/classes/mandrill.php
    @@ -7,7 +7,7 @@
      * $Author: mark $
      * @since		10 October 2012
      * $LastChangedDate: 2012-06-20 10:50:23 +0100 (Wed, 20 Jun 2012) $
    - * @version		v3.4.8
    + * @version		v3.4.9
      * $Revision: 10952 $
      */
     
    diff --git a/upload/admin/applications/members/sources/classes/messaging/messengerFunctions.php b/upload/admin/applications/members/sources/classes/messaging/messengerFunctions.php
    index e29bb774..b9938bc9 100644
    --- a/upload/admin/applications/members/sources/classes/messaging/messengerFunctions.php
    +++ b/upload/admin/applications/members/sources/classes/messaging/messengerFunctions.php
    @@ -2,7 +2,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Comments library
      * Last Updated: $Date: 2014-09-26 16:32:50 -0400 (Fri, 26 Sep 2014) $
      * 
    diff --git a/upload/admin/applications/members/sources/friends.php b/upload/admin/applications/members/sources/friends.php index f36f7a4f..a2413dfd 100644 --- a/upload/admin/applications/members/sources/friends.php +++ b/upload/admin/applications/members/sources/friends.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Friends library
      * Last Updated: $Date: 2013-10-15 10:08:51 -0400 (Tue, 15 Oct 2013) $
      * 
    diff --git a/upload/admin/applications/members/sources/tabs/pluginParentClass.php b/upload/admin/applications/members/sources/tabs/pluginParentClass.php index 0fc2281b..667a744d 100644 --- a/upload/admin/applications/members/sources/tabs/pluginParentClass.php +++ b/upload/admin/applications/members/sources/tabs/pluginParentClass.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Profile Plugin Library
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/sql/messengerSearch_mysql.php b/upload/admin/applications/members/sql/messengerSearch_mysql.php index 431d9fb2..fdf45f79 100644 --- a/upload/admin/applications/members/sql/messengerSearch_mysql.php +++ b/upload/admin/applications/members/sql/messengerSearch_mysql.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Generates a search and returns the results [ MySQL ]
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/applications/members/tasks/bulkmail.php b/upload/admin/applications/members/tasks/bulkmail.php index 72ab547f..8c07a1c4 100644 --- a/upload/admin/applications/members/tasks/bulkmail.php +++ b/upload/admin/applications/members/tasks/bulkmail.php @@ -7,7 +7,7 @@ * $Author: AndyMillne $ * @since - * $LastChangedDate: 2012-10-31 14:08:48 -0400 (Wed, 31 Oct 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 11536 $ */ diff --git a/upload/admin/applications/members/tasks/mobile_notifications.php b/upload/admin/applications/members/tasks/mobile_notifications.php index ff8ca0fe..deb985e1 100644 --- a/upload/admin/applications/members/tasks/mobile_notifications.php +++ b/upload/admin/applications/members/tasks/mobile_notifications.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since - * $LastChangedDate: 2012-05-12 18:45:30 -0400 (Sat, 12 May 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10739 $ */ diff --git a/upload/admin/applications/members/tasks/prunenotifications.php b/upload/admin/applications/members/tasks/prunenotifications.php index 4baedfc5..1be07db7 100644 --- a/upload/admin/applications/members/tasks/prunenotifications.php +++ b/upload/admin/applications/members/tasks/prunenotifications.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ - Matt Mecham * @since - * $LastChangedDate: 2011-02-08 22:20:18 +0000 (Tue, 08 Feb 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 7750 $ */ diff --git a/upload/admin/applications/members/tasks/removelocked.php b/upload/admin/applications/members/tasks/removelocked.php index e0d7beb6..e2f016d0 100644 --- a/upload/admin/applications/members/tasks/removelocked.php +++ b/upload/admin/applications/members/tasks/removelocked.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since - * $LastChangedDate: 2011-02-08 17:20:18 -0500 (Tue, 08 Feb 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 7750 $ */ diff --git a/upload/admin/applications/members/tasks/removevalidating.php b/upload/admin/applications/members/tasks/removevalidating.php index 5621f921..fefd7380 100644 --- a/upload/admin/applications/members/tasks/removevalidating.php +++ b/upload/admin/applications/members/tasks/removevalidating.php @@ -7,7 +7,7 @@ * $Author: rashbrook $ * @since - * $LastChangedDate: 2014-08-08 11:56:36 -0400 (Fri, 08 Aug 2014) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 12482 $ */ diff --git a/upload/admin/applications/members/tasks/twitfacesync.php b/upload/admin/applications/members/tasks/twitfacesync.php index a40c6b60..8fd8b929 100644 --- a/upload/admin/applications/members/tasks/twitfacesync.php +++ b/upload/admin/applications/members/tasks/twitfacesync.php @@ -7,7 +7,7 @@ * $Author: bfarber $ * @since - * $LastChangedDate: 2013-06-03 12:47:38 -0400 (Mon, 03 Jun 2013) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 12296 $ */ diff --git a/upload/admin/applications/members/tasks/update_profile_views.php b/upload/admin/applications/members/tasks/update_profile_views.php index 018d54a2..e9e5a257 100644 --- a/upload/admin/applications/members/tasks/update_profile_views.php +++ b/upload/admin/applications/members/tasks/update_profile_views.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since - * $LastChangedDate: 2011-02-08 17:20:18 -0500 (Tue, 08 Feb 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 7750 $ */ diff --git a/upload/admin/applications/members/tasks/warnings.php b/upload/admin/applications/members/tasks/warnings.php index a95f884b..19fbac0b 100644 --- a/upload/admin/applications/members/tasks/warnings.php +++ b/upload/admin/applications/members/tasks/warnings.php @@ -6,7 +6,7 @@ * $Author: mark $ * @since - * $LastChangedDate: 2012-09-17 11:58:03 -0400 (Mon, 17 Sep 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 11341 $ */ diff --git a/upload/admin/applications/members/xml/admin_members_language_pack.xml b/upload/admin/applications/members/xml/admin_members_language_pack.xml index 42577682..6789ac28 100644 --- a/upload/admin/applications/members/xml/admin_members_language_pack.xml +++ b/upload/admin/applications/members/xml/admin_members_language_pack.xml @@ -70,14 +70,14 @@ members admin_bulkmail - b_subject - Mail Subject]]> + b_edit + Edit Mail members admin_bulkmail - b_edit - Edit Mail + b_subject + Mail Subject]]> members @@ -100,20 +100,8 @@ members admin_bulkmail - b_percycle - Number sent per cycle]]> - - - members - admin_bulkmail - b_mailbutton - Start Sending The Mail - - - members - admin_bulkmail - b_morethan - more than + b_step1 + Step 1: Start New Bulk Mail members @@ -124,8 +112,20 @@ members admin_bulkmail - b_step1 - Step 1: Start New Bulk Mail + b_morethan + more than + + + members + admin_bulkmail + b_mailbutton + Start Sending The Mail + + + members + admin_bulkmail + b_percycle + Number sent per cycle]]> members @@ -142,14 +142,14 @@ members admin_bulkmail - b_maildetails - Mail Details]]> + b_editmail + Edit This Mail members admin_bulkmail - b_editmail - Edit This Mail + b_maildetails + Mail Details]]> members @@ -193,6 +193,30 @@ b_entercont You must enter a mail subject and mail content before submitting. Please try again. + + members + admin_bulkmail + b_canceled + Bulk mail canceled! + + + members + admin_bulkmail + b_norecord + Could not find the bulk mail record you requested. Please try again. + + + members + admin_bulkmail + b_nosend + + + + members + admin_bulkmail + b_initiated + Bulk mail initiated! + members admin_bulkmail @@ -208,26 +232,8 @@ members admin_bulkmail - b_initiated - Bulk mail initiated! - - - members - admin_bulkmail - b_nosend - - - - members - admin_bulkmail - b_norecord - Could not find the bulk mail record you requested. Please try again. - - - members - admin_bulkmail - b_canceled - Bulk mail canceled! + b_deleted + Bulk mail deleted! members @@ -235,12 +241,6 @@ b_title Bulk Mail - - members - admin_bulkmail - b_deleted - Bulk mail deleted! - members admin_bulkmail @@ -280,14 +280,14 @@ members admin_bulkmail - bulkMailFilter_members_group_desc - Leave blank for all groups + bulkMailFilter_members_joined_error + members admin_bulkmail - bulkMailFilter_members_joined_error - + bulkMailFilter_members_group_desc + Leave blank for all groups members @@ -310,14 +310,14 @@ members admin_bulkmail - bmf_exactly - Exactly + bulkMailFilter_members_joined + Member Joined members admin_bulkmail - bulkMailFilter_members_joined - Member Joined + bmf_exactly + Exactly members @@ -352,14 +352,14 @@ members admin_bulkmail - bulkmail_list - Recipient List + b_preview_desc + This preview shows the email as it would be sent to you. For each member, the variable tags will be replaced appropriately. members admin_bulkmail - b_preview_desc - This preview shows the email as it would be sent to you. For each member, the variable tags will be replaced appropriately. + bulkmail_list + Recipient List members @@ -376,14 +376,14 @@ members admin_bulkmail - mandrill_tags - Mandrill Tags + mandrill_send + Send members admin_bulkmail - mandrill_send - Send + mandrill_tags + Mandrill Tags members @@ -394,14 +394,14 @@ members admin_bulkmail - mandrill_all_change - Edit Email Settings + mandrill_all_off + You are currently sending all emails from your community via your own mail server. members admin_bulkmail - mandrill_all_off - You are currently sending all emails from your community via your own mail server. + mandrill_all_change + Edit Email Settings members @@ -418,14 +418,14 @@ members admin_bulkmail - mandrill_bad_credentials - The information provided was not accepted by Mandrill. Please check the values provided and try again. + mandrill_setup_noinfo + You must provide your username and API key members admin_bulkmail - mandrill_setup_noinfo - You must provide your username and API key + mandrill_bad_credentials + The information provided was not accepted by Mandrill. Please check the values provided and try again. members @@ -466,14 +466,14 @@ members admin_bulkmail - mandrill_username - Your Mandrill Account Username + mandrill_signup + Sign up for a Mandrill account members admin_bulkmail - mandrill_signup - Sign up for a Mandrill account + mandrill_username + Your Mandrill Account Username members @@ -706,14 +706,14 @@ members admin_groups - gf_sbadword - Can bypass badword filters? + gf_shtml + Can post HTML? members admin_groups - gf_shtml - Can post HTML? + gf_sbadword + Can bypass badword filters? members @@ -763,12 +763,6 @@ g_upersonalpho_w Max Width (px): - - members - admin_groups - g_ucurrently - currently: - members admin_groups @@ -778,8 +772,8 @@ members admin_groups - gf_upost_info - Enter 0 to disable a per post limit. This number must be less than the Global Upload limit.]]> + g_ucurrently + currently: members @@ -787,6 +781,12 @@ g_inkb (in kB) + + members + admin_groups + gf_upost_info + Enter 0 to disable a per post limit. This number must be less than the Global Upload limit.]]> + members admin_groups @@ -826,8 +826,8 @@ members admin_groups - gf_gformsuf - Group Formatting Suffix + gf_hide + Hide this group from member list? members @@ -838,8 +838,8 @@ members admin_groups - gf_hide - Hide this group from member list? + gf_gformsuf + Group Formatting Suffix members @@ -856,14 +856,14 @@ members admin_groups - gf_gicon_info - Upload to: /public/style_extra/team_icons/{image} (replace {image} with the image name).
    Can be a relative link, i.e. public/style_extra/team_icons/admin.gif ... or it can a full URL starting with 'http://']]>
    + gf_gicon + Group Icon Image
    members admin_groups - gf_gicon - Group Icon Image + gf_gicon_info + Upload to: /public/style_extra/team_icons/{image} (replace {image} with the image name).
    Can be a relative link, i.e. public/style_extra/team_icons/admin.gif ... or it can a full URL starting with 'http://']]>
    members @@ -880,8 +880,8 @@ members admin_groups - g_permset_info - CTRL + Click to select multiple ones. + gf_gtitle + Group Title members @@ -892,8 +892,8 @@ members admin_groups - gf_gtitle - Group Title + g_permset_info + CTRL + Click to select multiple ones. members @@ -913,12 +913,6 @@ g_globalperm Global - - members - admin_groups - g_cannotobt - cannot obtain]]> - members admin_groups @@ -928,8 +922,8 @@ members admin_groups - g_addgroup - Add Group + g_cannotobt + cannot obtain]]> members @@ -940,14 +934,14 @@ members admin_groups - gf_disabled - disabled]]> + g_addgroup + Add Group members admin_groups - per_saved - Permission configuration page + gf_disabled + disabled]]> members @@ -958,32 +952,8 @@ members admin_groups - g_adding - Adding New User Group - - - members - admin_groups - g_editing - Editing User Group - - - members - admin_groups - g_added - Group Added! - - - members - admin_groups - g_addedlog - - - - members - admin_groups - g_editedlog - + per_saved + Permission configuration page members @@ -991,6 +961,36 @@ g_edited Group Edited! + + members + admin_groups + g_addedlog + + + + members + admin_groups + g_added + Group Added! + + + members + admin_groups + g_editing + Editing User Group + + + members + admin_groups + g_adding + Adding New User Group + + + members + admin_groups + g_editedlog + + members admin_groups @@ -1000,14 +1000,14 @@ members admin_groups - g_oneperm - You must choose at least one permission set for this group. Please try again. + g_title_error + You must enter a group title. members admin_groups - g_title_error - You must enter a group title. + g_oneperm + You must choose at least one permission set for this group. Please try again. members @@ -1075,12 +1075,6 @@ sm_setrestrict Would you like to configure ACP restrictions for this group? - - members - admin_groups - sm_configrest - Configure Admin Restrictions? - members admin_groups @@ -1090,8 +1084,8 @@ members admin_groups - gf_t_sigs - Signatures + sm_configrest + Configure Admin Restrictions? members @@ -1102,8 +1096,8 @@ members admin_groups - gf_t_uploads - Uploading + gf_t_sigs + Signatures members @@ -1117,6 +1111,12 @@ gf_t_pms Personal Messages + + members + admin_groups + gf_t_uploads + Uploading + members admin_groups @@ -1135,24 +1135,18 @@ gf_t_promotion Group Promotion - - members - admin_groups - gf_t_access_control - Access Control - - - members - admin_groups - gf_t_permissions - Permissions - members admin_groups gf_t_display_name Display Name + + members + admin_groups + gf_t_access_control + Access Control + members admin_groups @@ -1162,8 +1156,14 @@ members admin_groups - gf_no_status - Remove Status Update ability + gf_t_permissions + Permissions + + + members + admin_groups + gf_pm_flood + ...and only 1 PM topic every %s minutes members @@ -1174,8 +1174,8 @@ members admin_groups - gf_pm_flood - ...and only 1 PM topic every %s minutes + gf_no_status + Remove Status Update ability members @@ -1198,14 +1198,14 @@ members admin_groups - gf_maxnotify - Maximum Stored Notifications + gf_maxnotify_desc + Once limit is reached, oldest notifications are automatically removed. Use 0 for no limit. members admin_groups - gf_maxnotify_desc - Once limit is reached, oldest notifications are automatically removed. Use 0 for no limit. + gf_maxnotify + Maximum Stored Notifications members @@ -1240,14 +1240,14 @@ members admin_groups - gf_bw_allow_url_bgimage - Background Image: Allow URL + gf_bw_allow_upload_bgimage + Background Image: Allow uploads members admin_groups - gf_bw_allow_upload_bgimage - Background Image: Allow uploads + gf_bw_allow_url_bgimage + Background Image: Allow URL members @@ -1276,14 +1276,14 @@ members admin_groups - gf_view_board_warning - settings.]]> + gf_rc_perms_for + Report Center permissions for: members admin_groups - gf_rc_perms_for - Report Center permissions for: + gf_view_board_warning + settings.]]> members @@ -1294,8 +1294,8 @@ members admin_groups - gf_can_send_report - Can submit reports? + gbw_disable_tagging_desc + If yes, members in this group will be unable to use the tagging system members @@ -1306,14 +1306,8 @@ members admin_groups - gbw_disable_tagging_desc - If yes, members in this group will be unable to use the tagging system - - - members - admin_groups - gf_t_tagging - Tagging + gf_can_send_report + Can submit reports? members @@ -1321,6 +1315,12 @@ gbw_disable_tagging Disable Tagging Ability + + members + admin_groups + gf_t_tagging + Tagging + members admin_groups @@ -1579,12 +1579,6 @@ gf_editprofile Allow members in this group to edit their profile information - - members - admin_member - cf_f_type - Field Type]]> - members admin_member @@ -1642,14 +1636,8 @@ members admin_member - cf_nonefound - None Found - - - members - admin_member - cf_delete - Delete + cf_adminonly + Admin/Super Mod Only? members @@ -1660,8 +1648,14 @@ members admin_member - cf_adminonly - Admin/Super Mod Only? + cf_delete + Delete + + + members + admin_member + cf_nonefound + None Found members @@ -1690,14 +1684,8 @@ members admin_member - cf_title - Field Title - - - members - admin_member - cf_management - Custom Profile Field Management + cf_search_loose + Loose members @@ -1708,8 +1696,14 @@ members admin_member - cf_search_loose - Loose + cf_management + Custom Profile Field Management + + + members + admin_member + cf_title + Field Title members @@ -1954,14 +1948,14 @@ members admin_member - rnk_editlink - Edit + rnk_deletelink + Delete members admin_member - rnk_deletelink - Delete + rnk_editlink + Edit members @@ -1981,12 +1975,6 @@ rnk_minpostsneeded Minimum number of posts needed]]> - - members - admin_member - rnk_addarank - Add a Member Rank - members admin_member @@ -1996,8 +1984,8 @@ members admin_member - rnk_options - Options + rnk_addarank + Add a Member Rank members @@ -2008,8 +1996,14 @@ members admin_member - rnk_titles - Member Titles/Ranks + rnk_options + Options + + + members + admin_member + rnk_minposts + Minimum Posts members @@ -2020,8 +2014,8 @@ members admin_member - rnk_minposts - Minimum Posts + rnk_titles + Member Titles/Ranks members @@ -2056,8 +2050,8 @@ members admin_member - rnk_edited - Rank Edited + rnk_notfounddel + We could not find the rank you were attempting to delete. members @@ -2068,8 +2062,8 @@ members admin_member - rnk_notfounddel - We could not find the rank you were attempting to delete. + rnk_edited + Rank Edited members @@ -2122,14 +2116,14 @@ members admin_member - sm_movemem - Move Members + sm_movemem_info + THERE IS NO UNDOING THIS ACTION!]]> members admin_member - sm_movemem_info - THERE IS NO UNDOING THIS ACTION!]]> + sm_movemem + Move Members members @@ -2176,14 +2170,14 @@ members admin_member - sm_coppauser - COPPA User? + sm_sendconf + Send confirmation email? members admin_member - sm_sendconf - Send confirmation email? + sm_coppauser + COPPA User? members @@ -2227,6 +2221,24 @@ sm_thisgroup %s restricted]]> + + members + admin_member + sm_configrest + Configure Admin Restrictions? + + + members + admin_member + sm_detectacp + We have detected that you have promoted %s to an administrative role and this member does not have any ACP restrictions + + + members + admin_member + sm_belongsto + This member belongs to the following group(s): + members admin_member @@ -2239,24 +2251,6 @@ sm_isnot IS NOT - - members - admin_member - sm_belongsto - This member belongs to the following group(s): - - - members - admin_member - sm_detectacp - We have detected that you have promoted %s to an administrative role and this member does not have any ACP restrictions - - - members - admin_member - sm_configrest - Configure Admin Restrictions? - members admin_member @@ -2266,14 +2260,14 @@ members admin_member - sm_suspemailcont - Email contents
    (Tags: {membername} = member's name, {date_end} = ban end)]]>
    + sm_suspnotify + Email notification to this member?
    (If so, you may edit the email below)]]>
    members admin_member - sm_suspnotify - Email notification to this member?
    (If so, you may edit the email below)]]>
    + sm_suspemailcont + Email contents
    (Tags: {membername} = member's name, {date_end} = ban end)]]>
    members @@ -2290,14 +2284,14 @@ members admin_member - sm_acctsusp - Member Account Suspension + sm_memoptions + Member Options members admin_member - sm_memoptions - Member Options + sm_acctsusp + Member Account Suspension members @@ -2308,14 +2302,14 @@ members admin_member - sm_typeof - Type of Search]]> + sm_nomemfound + No members found members admin_member - sm_nomemfound - No members found + sm_typeof + Type of Search]]> members @@ -2326,14 +2320,14 @@ members admin_member - sm_members - Members + sm_savebutton + Save Member members admin_member - sm_savebutton - Save Member + sm_members + Members members @@ -2362,14 +2356,14 @@ members admin_member - sm_friends_profile - Show friends in profile + sm_latest_visitors + Show last 5 visitors in profile members admin_member - sm_latest_visitors - Show last 5 visitors in profile + sm_friends_profile + Show friends in profile members @@ -2404,20 +2398,8 @@ members admin_member - sm_rep_view_r - View Reputation Received - - - members - admin_member - sm_reputation - Reputation Points - - - members - admin_member - sm_bday - Birthday + sm_signature + Member's Signature]]> members @@ -2428,8 +2410,20 @@ members admin_member - sm_signature - Member's Signature]]> + sm_bday + Birthday + + + members + admin_member + sm_reputation + Reputation Points + + + members + admin_member + sm_rep_view_r + View Reputation Received members @@ -2440,14 +2434,8 @@ members admin_member - sm_profile - Profile Information]]> - - - members - admin_member - sm_viewsig - View signatures? + sm_allowadmin + Receive bulk mails? members @@ -2458,14 +2446,14 @@ members admin_member - sm_allowadmin - Receive bulk mails? + sm_viewsig + View signatures? members admin_member - sm_hideemail - Hide email address? + sm_profile + Profile Information]]> members @@ -2473,6 +2461,12 @@ sm_skinnone -- None / Use Community Default -- + + members + admin_member + sm_hideemail + Hide email address? + members admin_member @@ -2494,14 +2488,14 @@ members admin_member - sm_dst_auto - + sm_timeoffset + Time Zone Offset members admin_member - sm_timeoffset - Time Zone Offset + sm_dst_auto + members @@ -2665,12 +2659,6 @@ rep_received Reputation received for - - members - admin_member - rep_post - Content - members admin_member @@ -2680,14 +2668,14 @@ members admin_member - rep_on - On + rep_post + Content members admin_member - rep_by - By + rep_on + On members @@ -2701,6 +2689,12 @@ rep_for For + + members + admin_member + rep_by + By + members admin_member @@ -2743,12 +2737,6 @@ mf_clickhere Click here - - members - admin_member - mf_viewnotes - View Notes - members admin_member @@ -2758,8 +2746,8 @@ members admin_member - mf_addnote - Add a Note? + mf_viewnotes + View Notes members @@ -2767,6 +2755,12 @@ mf_banip Ban IP Address + + members + admin_member + mf_addnote + Add a Note? + members admin_member @@ -2812,14 +2806,14 @@ members admin_member - m_morethan3 - The name must be more than 3 characters and less than %s characters. + m_illegal + The name contains illegal characters. members admin_member - m_illegal - The name contains illegal characters. + m_morethan3 + The name must be more than 3 characters and less than %s characters. members @@ -2863,42 +2857,24 @@ m_emailchangelog Member email address changed from %s to %s ( Member ID: %s ) - - members - admin_member - m_imgremlog - - members admin_member m_f_sec Secondary Group: + + members + admin_member + m_imgremlog + + members admin_member m_f_prim Primary Group: - - members - admin_member - m_f_primany - Any group - - - members - admin_member - pc_lt - Less than - - - members - admin_member - pc_gt - More than - members admin_member @@ -2914,8 +2890,20 @@ members admin_member - m_f_tomove - Search To Move + pc_gt + More than + + + members + admin_member + pc_lt + Less than + + + members + admin_member + m_f_primany + Any group members @@ -2923,6 +2911,12 @@ m_f_todelete Search To Delete + + members + admin_member + m_f_tomove + Search To Move + members admin_member @@ -2938,8 +2932,8 @@ members admin_member - m_f_showspam - Spam User + m_f_showbanned + Banned members @@ -2950,8 +2944,8 @@ members admin_member - m_f_showbanned - Banned + m_f_showspam + Spam User members @@ -2965,6 +2959,12 @@ m_f_showsusp Suspended + + members + admin_member + m_f_showall + Everyone + members admin_member @@ -2974,8 +2974,8 @@ members admin_member - m_f_showall - Everyone + m_f_orderaz + Ascending members @@ -2986,8 +2986,8 @@ members admin_member - m_f_orderaz - Ascending + m_f_slogin + Log In Name members @@ -3001,24 +3001,6 @@ m_f_joined Joined - - members - admin_member - m_f_slogin - Log In Name - - - members - admin_member - m_f_contains - Contains - - - members - admin_member - m_f_equals - Equals - members admin_member @@ -3031,6 +3013,18 @@ m_f_ends Ends With + + members + admin_member + m_f_equals + Equals + + + members + admin_member + m_f_contains + Contains + members admin_member @@ -3040,14 +3034,14 @@ members admin_member - m_f_posts - Post Count + m_f_ip + IP Address members admin_member - m_f_ip - IP Address + m_f_posts + Post Count members @@ -3061,12 +3055,6 @@ m_f_display Display Name - - members - admin_member - m_f_login - Log In Name - members admin_member @@ -3076,8 +3064,8 @@ members admin_member - m_edited - Member Edited + m_f_login + Log In Name members @@ -3085,6 +3073,12 @@ m_edited_restricted Member Edited - Restrictions Applied + + members + admin_member + m_edited + Member Edited + members admin_member @@ -3094,8 +3088,8 @@ members admin_member - m_editadmin - You are not permitted to edit administrators + m_admindemote + You are not permitted to change the groups an administrator belongs to (including both primary and secondary) members @@ -3106,8 +3100,8 @@ members admin_member - m_admindemote - You are not permitted to change the groups an administrator belongs to (including both primary and secondary) + m_editadmin + You are not permitted to edit administrators members @@ -3405,14 +3399,14 @@ Community Address: members admin_member - m_specify - You must specify a valid member ID. Please try again. + mem_update_member_list + Update members admin_member - mem_update_member_list - Update + m_specify + You must specify a valid member ID. Please try again. members @@ -3525,14 +3519,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - mem_ajfo_name - Sign In Name + mem_edit_login_name + Edit Sign In Name members admin_member - mem_edit_login_name - Edit Sign In Name + mem_ajfo_name + Sign In Name members @@ -3591,14 +3585,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - mem_warn_level - Warning Points + mem_post_count + Post Count members admin_member - mem_post_count - Post Count + mem_warn_level + Warning Points members @@ -3615,14 +3609,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - mem_form_title - Member Title + mem_email + Email Address members admin_member - mem_email - Email Address + mem_form_title + Member Title members @@ -3651,14 +3645,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - mem_joined - Joined + mem_ip_address_f + IP Address members admin_member - mem_ip_address_f - IP Address + mem_joined + Joined members @@ -3747,14 +3741,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - rep_form_image - Image + rep_form_points + Points members admin_member - rep_form_points - Points + rep_lvl_manage + Member Reputation Levels members @@ -3765,8 +3759,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - rep_lvl_manage - Member Reputation Levels + rep_form_image + Image members @@ -3795,8 +3789,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - rep_level_removed - Reputation Level Removed + rep_level_edited + Reputation Level Edited members @@ -3807,8 +3801,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - rep_level_edited - Reputation Level Edited + rep_level_removed + Reputation Level Removed + + + members + admin_member + editing_member + Editing members @@ -3822,12 +3822,6 @@ Community Address: <#BOARD_ADDRESS#>]]> about_to_move - - members - admin_member - editing_member - Editing - members admin_member @@ -3837,14 +3831,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - dunit_days - Days + dunit_hours + Hours members admin_member - dunit_hours - Hours + dunit_days + Days members @@ -3861,8 +3855,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - use_simple_search - Use Simple Search + search_sort_by + Sort by members @@ -3873,8 +3867,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - search_sort_by - Sort by + use_simple_search + Use Simple Search members @@ -3885,14 +3879,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - post_count_is - Post count is + last_visit_between + Last visited between members admin_member - last_visit_between - Last visited between + post_count_is + Post count is members @@ -3957,8 +3951,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - add_cf_admin - Admin Only Field + merged_accounts_log + members @@ -3969,8 +3963,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - merged_accounts_log - + add_cf_admin + Admin Only Field members @@ -4029,14 +4023,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - notopt__inline - Inline Notification + notopt__mobile + Mobile Notifications members admin_member - notopt__mobile - Mobile Notifications + notopt__inline + Inline Notification members @@ -4239,14 +4233,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - mem__auto_weekly - Weekly Digest + notificationtype_h + Notification Type members admin_member - notificationtype_h - Notification Type + mem__auto_weekly + Weekly Digest members @@ -4263,14 +4257,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - mem__auto_none - No Notification + mem__auto_immediate + Immediate Notification members admin_member - mem__auto_immediate - Immediate Notification + mem__auto_none + No Notification members @@ -4326,12 +4320,6 @@ Community Address: <#BOARD_ADDRESS#>]]> notifytitle_status_updates Status Updates - - members - admin_member - notify_type_inline - Inline Notification - members admin_member @@ -4344,6 +4332,12 @@ Community Address: <#BOARD_ADDRESS#>]]> notify_type_pm Personal Conversation + + members + admin_member + notify_type_inline + Inline Notification + members admin_member @@ -4359,14 +4353,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - memt_privacysettings - Privacy Settings + mem_tab_notifications + Notifications members admin_member - mem__defuploader - Default Uploader + memt_privacysettings + Privacy Settings members @@ -4377,8 +4371,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - mem_tab_notifications - Notifications + mem__defuploader + Default Uploader members @@ -4395,14 +4389,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - mem__rteeditor - RTE (WYSIWYG) Editor + mem__stdeditor + STD (Standard) Editor members admin_member - mem__stdeditor - STD (Standard) Editor + mem__rteeditor + RTE (WYSIWYG) Editor members @@ -4419,14 +4413,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - pw_updated_success - The password has been successfully updated. + ipaddresses + IP Addresses members admin_member - ipaddresses - IP Addresses + pw_updated_success + The password has been successfully updated. members @@ -4458,12 +4452,6 @@ Community Address: <#BOARD_ADDRESS#>]]> inc_m_name Username - - members - admin_member - t_inc_removed - %s partially registered members removed - members admin_member @@ -4473,8 +4461,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - nogroup_other - Other + t_inc_removed + %s partially registered members removed + + + members + admin_member + rusure_tools_memform + Are you sure you want to delete these members? There is no undoing this action. members @@ -4485,8 +4479,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - rusure_tools_memform - Are you sure you want to delete these members? There is no undoing this action. + nogroup_other + Other members @@ -4503,8 +4497,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - m_f_simpcomplete - Incomplete + search_type_member + Member Status Filter members @@ -4515,8 +4509,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - search_type_member - Member Status Filter + m_f_simpcomplete + Incomplete members @@ -4524,12 +4518,6 @@ Community Address: <#BOARD_ADDRESS#>]]> m_f_svalidating Validating - - members - admin_member - m_f_sbanned - Banned - members admin_member @@ -4539,8 +4527,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - m_but_no - No + m_f_sbanned + Banned members @@ -4551,14 +4539,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - m_but_yes - Yes + m_but_no + No members admin_member - m_but_approve - APPROVE + m_but_yes + Yes members @@ -4569,14 +4557,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - m_but_unlock - UNLOCK + m_but_approve + APPROVE members admin_member - m_but_unflag - UNFLAG + m_but_unlock + UNLOCK members @@ -4587,8 +4575,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - m_but_resend - RESEND + m_but_unflag + UNFLAG members @@ -4599,8 +4587,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - m_but_finalize - FINALIZE + m_but_resend + RESEND members @@ -4611,14 +4599,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - m_but_mas_all - MARK AS SPAM - - - members - admin_member - m_but_unlock_all - UNLOCK ALL + m_but_finalize + FINALIZE members @@ -4626,36 +4608,24 @@ Community Address: <#BOARD_ADDRESS#>]]> m_but_finalize_all FINALIZE ALL + + members + admin_member + m_but_unlock_all + UNLOCK ALL + + + members + admin_member + m_but_mas_all + MARK AS SPAM + members admin_member m_but_approve_all APPROVE ALL - - members - admin_member - m_blacklist - Blacklist IP/email addresses of these members? - - - members - admin_member - m_but_delete_all - DELETE ALL - - - members - admin_member - m_but_unban_all - UNBAN ALL - - - members - admin_member - m_but_resend_all - RESEND EMAILS - members admin_member @@ -4671,14 +4641,32 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - m_approve - Approve all posts by these members? + m_but_resend_all + RESEND EMAILS members admin_member - m_with_checked - With checked members: + m_but_unban_all + UNBAN ALL + + + members + admin_member + m_but_delete_all + DELETE ALL + + + members + admin_member + m_blacklist + Blacklist IP/email addresses of these members? + + + members + admin_member + list__joined + Joined members @@ -4689,8 +4677,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - list__joined - Joined + m_with_checked + With checked members: + + + members + admin_member + m_approve + Approve all posts by these members? members @@ -4797,14 +4791,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - m_type_all - Members + m_type_all_desc + Ordinary users in your community members admin_member - m_type_all_desc - Ordinary users in your community + m_type_all + Members members @@ -4842,12 +4836,6 @@ Community Address: <#BOARD_ADDRESS#>]]> bw_disable_prefixes Disable Prefix Ability - - members - admin_member - sameasloginname - Same as log in name - members admin_member @@ -4857,8 +4845,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - email_updated_success - The email has been successfully updated + sameasloginname + Same as log in name members @@ -4869,8 +4857,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - memclearsearch - Clear Search + email_updated_success + The email has been successfully updated members @@ -4881,8 +4869,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - ban_form_reason_desc - (Optional) Enter a reason for the ban visible to all admins + memclearsearch + Clear Search members @@ -4890,6 +4878,12 @@ Community Address: <#BOARD_ADDRESS#>]]> ban_form_reason Ban Reason + + members + admin_member + ban_form_reason_desc + (Optional) Enter a reason for the ban visible to all admins + members admin_member @@ -4917,14 +4911,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - notify__warning - Notify me if I am warned by a moderator + warn_actions_suspend_short + Suspend members admin_member - warn_actions_suspend_short - Suspend + notify__warning + Notify me if I am warned by a moderator members @@ -5043,14 +5037,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - warn_actions_add - Add Action + warn_actions + Warning Actions members admin_member - warn_actions - Warning Actions + warn_actions_add + Add Action members @@ -5139,14 +5133,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - warn_reasons_edit - Edit Reason + warn_reasons_add + Add Reason members admin_member - warn_reasons_add - Add Reason + warn_reasons_edit + Edit Reason members @@ -5199,8 +5193,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - merge_find_id - ID Number + m_all_fields_opt + All fields are optional members @@ -5211,14 +5205,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - m_all_fields_opt - All fields are optional - - - members - admin_member - merge_any_details - You may enter any of the following details... + merge_find_id + ID Number members @@ -5232,6 +5220,12 @@ Community Address: <#BOARD_ADDRESS#>]]> merge_find_email Email Address + + members + admin_member + merge_any_details + You may enter any of the following details... + members admin_member @@ -5241,14 +5235,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_member - t_guestname_desc - Note that one person may use several guest names and multiple people may use the same guest name. This tool will delete all posts by guests that have used the name provided. + t_guestname + Guest Name members admin_member - t_guestname - Guest Name + t_guestname_desc + Note that one person may use several guest names and multiple people may use the same guest name. This tool will delete all posts by guests that have used the name provided. members @@ -5298,6 +5292,12 @@ Community Address: <#BOARD_ADDRESS#>]]> sig_is_html HTML Signature + + members + admin_member + cf_f_type + Field Type]]> + members admin_member @@ -6447,14 +6447,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_permissions - per_removeall - Remove All Custom Permission Sets + per_preview + Preview members admin_permissions - per_preview - Preview + per_removeall + Remove All Custom Permission Sets members @@ -6513,14 +6513,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_permissions - per_result - Result + per_none + Set not assigned to any group...]]> members admin_permissions - per_none - Set not assigned to any group...]]> + per_result + Result members @@ -6621,14 +6621,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_permissions - per_start_m - Start Topics + per_reply_m + Reply To Topics members admin_permissions - per_reply_m - Reply To Topics + per_start_m + Start Topics members @@ -6786,18 +6786,6 @@ Community Address: <#BOARD_ADDRESS#>]]> per_saved Changes Saved - - members - admin_restrictions - r__groups_add - Can add groups? - - - members - admin_restrictions - r__members_groups - Managing Groups - members admin_restrictions @@ -7323,14 +7311,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_restrictions - r__task_remove - Can remove scheduled tasks? + r__task_run_lock + Can unlock and/or run scheduled tasks manually? members admin_restrictions - r__task_run_lock - Can unlock and/or run scheduled tasks manually? + r__task_remove + Can remove scheduled tasks? members @@ -7671,14 +7659,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_restrictions - r__core_badwords - Manage Badwords + r__badword_manage + Can manage badwords? members admin_restrictions - r__badword_manage - Can manage badwords? + r__core_badwords + Manage Badwords members @@ -7827,8 +7815,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_restrictions - r__modlogs_view - Can view moderator logs? + r__core_emaillogs + Email Logs members @@ -7839,8 +7827,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_restrictions - r__core_emaillogs - Email Logs + r__modlogs_view + Can view moderator logs? members @@ -7857,14 +7845,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_restrictions - r__lang_packs - Can add/edit language packs? - - - members - admin_restrictions - r__lang_pack_info - Can alter the language pack properties and information? + r__adminlogs_view + Can view admin logs? members @@ -7875,8 +7857,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_restrictions - r__adminlogs_view - Can view admin logs? + r__lang_pack_info + Can alter the language pack properties and information? + + + members + admin_restrictions + r__lang_packs + Can add/edit language packs? members @@ -7887,8 +7875,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_restrictions - r__permission_checker - Can use the permissions checker? + r__core_languages + Manage Languages members @@ -7899,8 +7887,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_restrictions - r__core_languages - Manage Languages + r__permission_checker + Can use the permissions checker? members @@ -7929,14 +7917,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_restrictions - r__hooks_delete - Can remove hooks? + r__core_diag_tools + Diagnostic Tools members admin_restrictions - r__core_diag_tools - Diagnostic Tools + r__hooks_delete + Can remove hooks? members @@ -7947,14 +7935,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_restrictions - r__purchase_app - Can view pages to purchase additional applications? + r__hooks_manage + Can manage hooks? members admin_restrictions - r__hooks_manage - Can manage hooks? + r__purchase_app + Can view pages to purchase additional applications? members @@ -8031,14 +8019,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_restrictions - r__core_seo - SEO + r__seo_advice + Can view SEO advice? members admin_restrictions - r__seo_advice - Can view SEO advice? + r__core_seo + SEO members @@ -8061,14 +8049,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_restrictions - r__archive_overview - Can overview archiving? + r__archive_rules + Can manage archiving rules? members admin_restrictions - r__archive_rules - Can manage archiving rules? + r__archive_overview + Can overview archiving? members @@ -8109,14 +8097,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_restrictions - r_save - Save + r_undo + UNDO members admin_restrictions - r_undo - UNDO + r_save + Save members @@ -8133,14 +8121,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_restrictions - r_acpxmlwelcome - %s

    Simply click on one of the tabs above to set the access level for all functions in this tab. If you want to choose access on a per-function level, click on the relevant link to be shown this function's options.]]>
    -
    - - members - admin_restrictions - r_savebutton - Save Restrictions + r_globalaccess + Global Access members @@ -8151,8 +8133,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_restrictions - r_globalaccess - Global Access + r_savebutton + Save Restrictions + + + members + admin_restrictions + r_acpxmlwelcome + %s

    Simply click on one of the tabs above to set the access level for all functions in this tab. If you want to choose access on a per-function level, click on the relevant link to be shown this function's options.]]>
    members @@ -8172,12 +8160,6 @@ Community Address: <#BOARD_ADDRESS#>]]> r_managerestrict - - members - admin_restrictions - r_removeall - - members admin_restrictions @@ -8187,8 +8169,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_restrictions - r_xmlbutton - Import XML Settings + r_removeall + members @@ -8196,6 +8178,12 @@ Community Address: <#BOARD_ADDRESS#>]]> r_filexml_info + + members + admin_restrictions + r_xmlbutton + Import XML Settings + members admin_restrictions @@ -8205,8 +8193,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_restrictions - r_uploadxml_info - + r_importxml + Import an XML Permissions file members @@ -8217,8 +8205,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_restrictions - r_importxml - Import an XML Permissions file + r_uploadxml_info + members @@ -8253,14 +8241,14 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_restrictions - r_primary - Primary Group + r_member + Member members admin_restrictions - r_member - Member + r_primary + Primary Group members @@ -8394,12 +8382,6 @@ Community Address: <#BOARD_ADDRESS#>]]> r_namealready %s already has restrictions in place. You can edit the restrictions to alter them. - - members - admin_restrictions - r_noname - %s cannot be found. Please try again. - members admin_restrictions @@ -8409,8 +8391,8 @@ Community Address: <#BOARD_ADDRESS#>]]> members admin_restrictions - r_nav - Add an administrator + r_noname + %s cannot be found. Please try again. members @@ -8418,6 +8400,12 @@ Community Address: <#BOARD_ADDRESS#>]]> r_lifted The restrictions have been lifted! + + members + admin_restrictions + r_nav + Add an administrator + members admin_restrictions @@ -8442,6 +8430,18 @@ Community Address: <#BOARD_ADDRESS#>]]> r_whichmodify We could not determine the restrictions you were attempting to modify. Please try again. + + members + admin_restrictions + r__members_groups + Managing Groups + + + members + admin_restrictions + r__groups_add + Can add groups? + members admin_restrictions diff --git a/upload/admin/applications/members/xml/members_root_css.xml b/upload/admin/applications/members/xml/members_root_css.xml index 6a957929..1aac8321 100644 --- a/upload/admin/applications/members/xml/members_root_css.xml +++ b/upload/admin/applications/members/xml/members_root_css.xml @@ -2,7 +2,7 @@ 0 - 1431336808 + 1451405325 ipb_messenger /************************************************************************/ /* IP.Board 3 CSS - By Rikki Tissier - (c)2008 Invision Power Services */ @@ -100,7 +100,7 @@ li.new_folder { 0 - 1431336808 + 1451405325 ipb_mlist 0 - 1431336808 + 1451405325 ipb_photo_editor /************************************************************************/ /* IP.Board 3 CSS - By Matt Mecham - (c)2011 Invision Power Services */ @@ -270,7 +270,7 @@ li.ips_option { 0 - 1431336808 + 1451405325 ipb_profile request['from_app']}' /> +
      diff --git a/upload/admin/applications/members/xml/members_settings.xml b/upload/admin/applications/members/xml/members_settings.xml index 4555fb47..2da08a3e 100644 --- a/upload/admin/applications/members/xml/members_settings.xml +++ b/upload/admin/applications/members/xml/members_settings.xml @@ -269,7 +269,7 @@ like=Like System (Positive rep only, visible names) yes_no spam_service_enabled - 0 + 1 1 @@ -712,7 +712,7 @@ blackglass=Blackglass Click here for more information on Gravatars]]> yes_no allow_gravatars - 0 + 1 1 diff --git a/upload/admin/applications/members/xml/members_xmlskin_css.xml b/upload/admin/applications/members/xml/members_xmlskin_css.xml index 7e48a65c..5562135a 100644 --- a/upload/admin/applications/members/xml/members_xmlskin_css.xml +++ b/upload/admin/applications/members/xml/members_xmlskin_css.xml @@ -2,7 +2,7 @@ 0 - 1413434566 + 1451405327 ipb_messenger 1 @@ -15,7 +15,7 @@ 0 - 1413434566 + 1451405327 ipb_mlist 1 @@ -28,7 +28,7 @@ 0 - 1413434566 + 1451405327 ipb_photo_editor 1 @@ -41,7 +41,7 @@ 0 - 1413434566 + 1451405327 ipb_profile 1 diff --git a/upload/admin/applications/members/xml/public_members_language_pack.xml b/upload/admin/applications/members/xml/public_members_language_pack.xml index b7b07c21..fe1ed527 100644 --- a/upload/admin/applications/members/xml/public_members_language_pack.xml +++ b/upload/admin/applications/members/xml/public_members_language_pack.xml @@ -307,12 +307,6 @@ sort_by Sort by: - - members - public_messaging - err_FROM_USER_BLOCKED - The member #TONAME# has chosen to not receive any new messages from you - members public_messaging @@ -328,14 +322,14 @@ members public_messaging - err_FROM_USER_DOES_NOT_EXIST - The member #FROMNAME# does not exist + err_TO_USER_DOES_NOT_EXIST + The member #TONAME# does not exist members public_messaging - err_TO_USER_DOES_NOT_EXIST - The member #TONAME# does not exist + err_FROM_USER_DOES_NOT_EXIST + The member #FROMNAME# does not exist members @@ -376,8 +370,8 @@ members public_messaging - err_auth - Authorization Error + err_NO_IDS_SELECTED + You did not select any messages to perform this action on members @@ -388,8 +382,8 @@ members public_messaging - err_NO_IDS_SELECTED - You did not select any messages to perform this action on + err_auth + Authorization Error members @@ -421,12 +415,6 @@ copy__desc will send a separate conversation to each member - - members - public_messaging - invite__desc - allows all invited members to participate in a single conversation - members public_messaging @@ -436,8 +424,8 @@ members public_messaging - send__invite - Invitation + invite__desc + allows all invited members to participate in a single conversation members @@ -445,6 +433,12 @@ send_to_as Send to others as + + members + public_messaging + send__invite + Invitation + members public_messaging @@ -466,14 +460,14 @@ members public_messaging - editing_message - Editing Message + compose_reply + Compose Reply members public_messaging - compose_reply - Compose Reply + editing_message + Editing Message members @@ -487,12 +481,6 @@ pc_post_button Post - - members - public_messaging - pc_fast_reply - Fast Reply - members public_messaging @@ -502,8 +490,8 @@ members public_messaging - delete_this_post - Delete this post + pc_fast_reply + Fast Reply members @@ -511,6 +499,12 @@ pc_edit Edit + + members + public_messaging + delete_this_post + Delete this post + members public_messaging @@ -523,12 +517,6 @@ pc_reply Reply - - members - public_messaging - pc_report - Report - members public_messaging @@ -538,8 +526,8 @@ members public_messaging - find_info_about_ip - Find information about this IP + pc_report + Report members @@ -547,6 +535,12 @@ you_cannot_reply You cannot reply + + members + public_messaging + find_info_about_ip + Find information about this IP + members public_messaging @@ -616,8 +610,8 @@ members public_messaging - option__delete - Delete + folder_no_messages_row + There are no messages to view in this folder members @@ -628,8 +622,8 @@ members public_messaging - folder_no_messages_row - There are no messages to view in this folder + option__delete + Delete members @@ -706,14 +700,14 @@ members public_messaging - col_to - To + col_last_message + Last Message members public_messaging - col_last_message - Last Message + col_to + To members @@ -892,14 +886,14 @@ members public_messaging - unblock - Unblock + is_unable_part + Is unable to participate members public_messaging - is_unable_part - Is unable to participate + unblock + Unblock members @@ -979,12 +973,6 @@ pm_flood_stop You cannot start another PM topic until %s - - members - public_messaging - msgFolder_myconvo - My Conversations - members public_messaging @@ -994,8 +982,8 @@ members public_messaging - folder_prefix - Folder: + msgFolder_myconvo + My Conversations members @@ -1006,8 +994,8 @@ members public_messaging - macro__notifyon - Notifications On + folder_prefix + Folder: members @@ -1018,14 +1006,14 @@ members public_messaging - macro__notifyoff - Notifications Off + macro__notifyon + Notifications On members public_messaging - macro__newmsg - New Messages + macro__notifyoff + Notifications Off members @@ -1036,8 +1024,8 @@ members public_messaging - macro__folder - Folder + macro__newmsg + New Messages members @@ -1045,6 +1033,12 @@ macro__nonewmsg No new messages + + members + public_messaging + macro__folder + Folder + members public_messaging @@ -1060,14 +1054,14 @@ members public_messaging - save_message_button - Save Message + macro__new + New members public_messaging - macro__new - New + save_message_button + Save Message members @@ -1150,14 +1144,14 @@ members public_messaging - msg_xreplies - %s replies + msg_sentto + sent to members public_messaging - msg_sentto - sent to + msg_xreplies + %s replies members @@ -1195,6 +1189,12 @@ msg_view_conversation View this conversation + + members + public_messaging + err_TOPIC_HAS_BEEN_DELETED + This personal message has been deleted by the recipient. + members public_messaging @@ -1204,8 +1204,8 @@ members public_messaging - err_TOPIC_HAS_BEEN_DELETED - This personal message has been deleted by the recipient. + err_FROM_USER_BLOCKED + The member #TONAME# has chosen to not receive any new messages from you members @@ -1669,42 +1669,6 @@ WHERE_reports Viewing Reports - - members - public_profile - click_to_email - Click here to e-mail me - - - members - public_profile - m_email - E-mail - - - members - public_profile - contact_info - Contact Information - - - members - public_profile - m_member_title - Member Title - - - members - public_profile - my_info - My Information - - - members - public_profile - view - View - members public_profile @@ -1978,14 +1942,14 @@ members public_profile - status_lock_link - Lock + status_delete_link + Delete members public_profile - status_delete_link - Delete + status_lock_link + Lock members @@ -2134,14 +2098,14 @@ members public_profile - status__viewall - + status_approved + Status Approved members public_profile - status_approved - Status Approved + status__viewall + members @@ -2158,14 +2122,14 @@ members public_profile - status__singleupdate - Single Update + status__locked + Locked Status members public_profile - status__locked - Locked Status + status__singleupdate + Single Update members @@ -2230,14 +2194,14 @@ members public_profile - pp_tab_idm - Files + allfriendstab + All Friends members public_profile - allfriendstab - All Friends + pp_tab_idm + Files members @@ -2380,14 +2344,14 @@ members public_profile - pe_cancel - Cancel + pe_ok + Ok members public_profile - pe_ok - Ok + pe_cancel + Cancel members @@ -2401,12 +2365,6 @@ pp_upload_to_big The file selected is too large. Max %skB - - members - public_profile - pp_invalid_file_extension - Incorrect image format - members public_profile @@ -2416,8 +2374,8 @@ members public_profile - pp_err_not_contact_server - The server could not be contacted + pp_invalid_file_extension + Incorrect image format members @@ -2425,6 +2383,12 @@ pp_err_not_save_urlphoto Could not save the URL image specified + + members + public_profile + pp_err_not_contact_server + The server could not be contacted + members public_profile @@ -2446,8 +2410,8 @@ members public_profile - ps_updated - Updated + member_posts + posts members @@ -2458,8 +2422,8 @@ members public_profile - member_posts - posts + ps_updated + Updated members @@ -2482,8 +2446,8 @@ members public_profile - pe_import_from_url - Import a photo from a URL + err_not_allowed_url_photo + You are not permitted to use URLs as photos members @@ -2494,8 +2458,8 @@ members public_profile - err_not_allowed_url_photo - You are not permitted to use URLs as photos + pe_import_from_url + Import a photo from a URL members @@ -2512,14 +2476,14 @@ members public_profile - warnings_already_suspend_perm - %s is already banned + warnings_already_change + . This setting will override this unless it is set to 0. members public_profile - warnings_already_change - . This setting will override this unless it is set to 0. + warnings_already_suspend_perm + %s is already banned members @@ -2566,14 +2530,14 @@ members public_profile - warnings_profile_badge_ban - Banned + warnings_profile_badge_suspend + Suspended members public_profile - warnings_profile_badge_suspend - Suspended + warnings_profile_badge_ban + Banned members @@ -2713,14 +2677,14 @@ Reason: %s members public_profile - warnings_points_explain_1 - Points are used to automatically give a member an appropriate punishment. The more severe the behaviour, the more points should be issued. The administrator has defined the following guidelines for issuing points: + warnings_details + Warning Details members public_profile - warnings_details - Warning Details + warnings_points_explain_1 + Points are used to automatically give a member an appropriate punishment. The more severe the behaviour, the more points should be issued. The administrator has defined the following guidelines for issuing points: members @@ -2737,14 +2701,14 @@ Reason: %s members public_profile - warnings_remove_points - Remove points + warnings_ban_group + Also move to members public_profile - warnings_ban_group - Also move to + warnings_remove_points + Remove points members @@ -2782,12 +2746,6 @@ Reason: %s warnings_punishment_select Select a reason to determine punishment. - - members - public_profile - warnings_note_mods_desc - This note will only be shown to other moderators and administrators. The member being warned will not be able to see it. - members public_profile @@ -2797,14 +2755,8 @@ Reason: %s members public_profile - warnings_points_explain - More Information - - - members - public_profile - warnings_reason_select - --Select a Reason-- + warnings_note_mods_desc + This note will only be shown to other moderators and administrators. The member being warned will not be able to see it. members @@ -2815,14 +2767,20 @@ Reason: %s members public_profile - warnings_punishment - Punishment + warnings_reason_select + --Select a Reason-- members public_profile - warnings_no_note - No Note + warnings_points_explain + More Information + + + members + public_profile + warnings_punishment + Punishment members @@ -2833,8 +2791,8 @@ Reason: %s members public_profile - warnings_note_mods - Note for moderators + warnings_no_note + No Note members @@ -2842,6 +2800,12 @@ Reason: %s warnings_note Note + + members + public_profile + warnings_note_mods + Note for moderators + members public_profile @@ -3031,14 +2995,14 @@ Reason: %s members public_profile - pp_tab_rep_rep - Reputation + profiles_not_active + This member is no longer active. members public_profile - profiles_not_active - This member is no longer active. + pp_tab_rep_rep + Reputation members @@ -3052,6 +3016,42 @@ Reason: %s profile_no_remove_perm You do not have permission to remove the profile customizations for this user + + members + public_profile + view + View + + + members + public_profile + my_info + My Information + + + members + public_profile + m_member_title + Member Title + + + members + public_profile + contact_info + Contact Information + + + members + public_profile + m_email + E-mail + + + members + public_profile + click_to_email + Click here to e-mail me + members public_profile diff --git a/upload/admin/applications/members/xml/versions.xml b/upload/admin/applications/members/xml/versions.xml index 8a6a87eb..dab02673 100644 --- a/upload/admin/applications/members/xml/versions.xml +++ b/upload/admin/applications/members/xml/versions.xml @@ -364,4 +364,8 @@ 3.4.8 34014 + + 3.4.9 + 34015 + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/attachments/index.html b/upload/admin/applications_addon/ips/calendar/extensions/attachments/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/attachments/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

      403: IP.Board -> Forbidden

      +
      +You have reached this page in error, please use your back button to return to the forum. +
      +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/attachments/plugin_event.php b/upload/admin/applications_addon/ips/calendar/extensions/attachments/plugin_event.php new file mode 100644 index 00000000..418e6e54 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/attachments/plugin_event.php @@ -0,0 +1,474 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * IP.Board calendar attachments plugin + * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $ + *
    + * + * @author $Author: bfarber $ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Calendar + * @link http://www.invisionpower.com + * @since 6/24/2008 + * @version $Revision: 10721 $ + */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +class plugin_event extends class_attach +{ + /** + * Module type + * + * @access public + * @var string + */ + public $module = 'event'; + + /** + * Checks the attachment and checks for download / show perms + * + * @access public + * @param integer Attachment id + * @return mixed Attachment data, or false if no permission + */ + public function getAttachmentData( $attach_id ) + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $_ok = 0; + + //----------------------------------------- + // Grab 'em + //----------------------------------------- + + $attach = $this->DB->buildAndFetch( array( 'select' => 'a.*', + 'from' => array( 'attachments' => 'a' ), + 'where' => "a.attach_rel_module='" . $this->module . "' AND a.attach_id=" . $attach_id, + 'add_join' => array( 0 => array( 'select' => 'e.*', + 'from' => array( 'cal_events' => 'e' ), + 'where' => "e.event_id=a.attach_rel_id", + 'type' => 'left' ), + 1 => array( 'select' => 'c.*', + 'from' => array( 'cal_calendars' => 'c' ), + 'where' => "c.cal_id=e.event_calendar_id", + 'type' => 'left' ), + ) + ) ); + + //----------------------------------------- + // Check.. + //----------------------------------------- + + if ( empty( $attach['event_id'] ) ) + { + if( !$this->memberData['g_is_supmod'] AND $attach['attach_member_id'] != $this->memberData['member_id'] ) + { + return FALSE; + } + } + + //----------------------------------------- + // For previews + //----------------------------------------- + + if ( $attach['attach_rel_id'] == 0 AND $attach['attach_member_id'] == $this->memberData['member_id'] ) + { + return $attach; + } + else if( $attach['event_id'] ) + { + return $attach; + } + + return FALSE; + } + + /** + * Check the attachment and make sure its OK to display + * + * @access public + * @param array Array of ids + * @param array Array of relationship ids + * @param string Post key + * @return array Attachment data + */ + public function renderAttachment( $attach_ids, $rel_ids=array(), $attach_post_key=0 ) + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $rows = array(); + $query_bits = array(); + $query = ''; + $match = 0; + + //----------------------------------------- + // Check + //----------------------------------------- + + if ( is_array( $attach_ids ) AND count( $attach_ids ) ) + { + $query_bits[] = "attach_id IN (" . implode( ",", $attach_ids ) .")"; + } + + if ( is_array( $rel_ids ) and count( $rel_ids ) ) + { + $rel_ids = array_map( 'intval', $rel_ids ); + // We need to reset the array - this query bit will return everything we need, but + // if we "OR" join the above query bit with this one, it causes bigger mysql loads + $query_bits = array(); + $query_bits[] = "attach_rel_id IN (" . implode( ",", $rel_ids ) . ")"; + $match = 1; + } + + if ( $attach_post_key ) + { + $query_bits[] = "attach_post_key='" . $this->DB->addSlashes( $attach_post_key ) . "'"; + $match = 2; + } + + //----------------------------------------- + // Grab 'em + //----------------------------------------- + + if( count($query_bits) ) + { + $this->DB->build( array( 'select' => '*', 'from' => 'attachments', 'where' => "attach_rel_module='{$this->module}' AND ( " . implode( ' OR ', $query_bits ) . " )" ) ); + $attach_sql = $this->DB->execute(); + + //----------------------------------------- + // Loop through and filter off naughty ids + //----------------------------------------- + + while( $row = $this->DB->fetch( $attach_sql ) ) + { + $_ok = 1; + + if ( $match == 1 ) + { + if ( ! in_array( $row['attach_rel_id'], $rel_ids ) ) + { + $_ok = 0; + } + } + else if ( $match == 2 ) + { + if ( $row['attach_post_key'] != $attach_post_key ) + { + $_ok = 0; + } + } + + //----------------------------------------- + // Ok? + //----------------------------------------- + + if ( $_ok ) + { + $rows[ $row['attach_id'] ] = $row; + } + } + } + + //----------------------------------------- + // Return + //----------------------------------------- + + return $rows; + } + + /** + * Recounts number of attachments for the event + * + * @access public + * @param string Post key + * @param integer Related ID + * @param array Arguments for query + * @return array Returns count of items found + */ + public function postUploadProcess( $post_key, $rel_id, $args=array() ) + { + //----------------------------------------- + // Check.. + //----------------------------------------- + + if ( ! $post_key ) + { + return array( 'count' => 0 ); + } + + $cnt = $this->DB->buildAndFetch( array( "select" => 'COUNT(*) as cnt', + 'from' => 'attachments', + 'where' => "attach_post_key='{$post_key}'" ) ); + + $this->DB->update( 'cal_events', array( 'event_attachments' => $cnt['cnt'] ), 'event_id=' . intval( $rel_id ) ); + + return array( 'count' => $cnt['cnt'] ); + } + + /** + * Recounts number of attachments for the articles row + * + * @access public + * @param array Attachment data + * @return boolean + */ + public function attachmentRemovalCleanup( $attachment ) + { + //----------------------------------------- + // Check + //----------------------------------------- + + if ( ! $attachment['attach_id'] ) + { + return FALSE; + } + + //----------------------------------------- + // Update count + //----------------------------------------- + + $this->DB->update( 'cal_events', 'event_attachments=event_attachments-1', 'event_id=' . intval( $attachment['attach_rel_id'] ), false, true ); + + return TRUE; + } + + /** + * Determines if you have permission for bulk attachment removal + * Returns TRUE or FALSE + * + * @access public + * @param array Ids to check against + * @return boolean + */ + public function canBulkRemove( $attach_rel_ids=array() ) + { + return $this->memberData['g_is_supmod'] ? true : false; + } + + /** + * Determines if you can remove this attachment + * Returns TRUE or FALSE + * IT really does + * + * @access public + * @param array Attachment data + * @return boolean + */ + public function canRemove( $attachment ) + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $ok_to_remove = FALSE; + + //----------------------------------------- + // Check + //----------------------------------------- + + if ( ! $attachment['attach_id'] ) + { + return FALSE; + } + + //----------------------------------------- + // Allowed to remove? + //----------------------------------------- + + if ( $this->memberData['member_id'] == $attachment['attach_member_id'] ) + { + $ok_to_remove = TRUE; + } + else if ( $this->memberData['g_is_supmod'] ) + { + $ok_to_remove = TRUE; + } + else + { + $event = $this->DB->buildAndFetch( array( 'select' => '*', + 'from' => 'cal_events', + 'where' => 'event_id=' . intval( $attachment['attach_rel_id'] ) ) ); + + if ( $this->memberData['member_id'] == $event['event_member_id'] ) + { + $ok_to_remove = TRUE; + } + } + + return $ok_to_remove; + } + + /** + * Returns an array of the allowed upload sizes in bytes. + * Return 'space_allowed' as -1 to not allow uploads. + * Return 'space_allowed' as 0 to allow unlimited uploads + * Return 'max_single_upload' as 0 to not set a limit + * + * @access public + * @param string MD5 post key + * @param id Member ID + * @return array [ 'space_used', 'space_left', 'space_allowed', 'max_single_upload' ] + */ + public function getSpaceAllowance( $post_key='', $member_id='' ) + { + $max_php_size = IPSLib::getMaxPostSize(); + $member_id = intval( $member_id ? $member_id : $this->memberData['member_id'] ); + $space_left = 0; + $space_used = 0; + $space_allowed = 0; + $max_single_upload = 0; + $total_space_allowed = 0; + + //----------------------------------------- + // Allowed to attach? + //----------------------------------------- + + if ( ! $member_id ) + { + $space_allowed = -1; + } + else + { + //----------------------------------------- + // Generate total space allowed + //----------------------------------------- + + $total_space_allowed = ( $this->memberData['g_attach_per_post'] ? $this->memberData['g_attach_per_post'] : $this->memberData['g_attach_max'] ) * 1024; + + //----------------------------------------- + // Generate space used figure + //----------------------------------------- + + if ( $this->memberData['g_attach_per_post'] ) + { + //----------------------------------------- + // Per post limit... + //----------------------------------------- + + $_space_used = $this->DB->buildAndFetch( array( 'select' => 'SUM(attach_filesize) as figure', 'from' => 'attachments', 'where' => "attach_post_key='" . $post_key . "'" ) ); + + $space_used = $_space_used['figure'] ? $_space_used['figure'] : 0; + } + else + { + //----------------------------------------- + // Global limit... + //----------------------------------------- + + $_space_used = $this->DB->buildAndFetch( array( 'select' => 'SUM(attach_filesize) as figure', 'from' => 'attachments', 'where' => 'attach_member_id=' . $member_id . " AND attach_rel_module IN( 'post', 'msg', 'event' )" ) ); + + $space_used = $_space_used['figure'] ? $_space_used['figure'] : 0; + } + + //----------------------------------------- + // Generate space allowed figure + //----------------------------------------- + + if ( $this->memberData['g_attach_max'] > 0 ) + { + if ( $this->memberData['g_attach_per_post'] ) + { + $_g_space_used = $this->DB->buildAndFetch( array( 'select' => 'SUM(attach_filesize) as figure', 'from' => 'attachments', 'where' => 'attach_member_id=' . $member_id . " AND attach_rel_module IN( 'post', 'msg', 'event' )" ) ); + + $g_space_used = $_g_space_used['figure'] ? $_g_space_used['figure'] : 0; + + if( ( $this->memberData['g_attach_max'] * 1024 ) - $g_space_used < 0 ) + { + $space_used = $g_space_used; + $total_space_allowed = $this->memberData['g_attach_max'] * 1024; + + $space_allowed = ( $this->memberData['g_attach_max'] * 1024 ) - $space_used; + $space_allowed = $space_allowed < 0 ? -1 : $space_allowed; + } + else + { + $space_allowed = ( $this->memberData['g_attach_per_post'] * 1024 ) - $space_used; + $space_allowed = $space_allowed < 0 ? -1 : $space_allowed; + } + } + else + { + $space_allowed = ( $this->memberData['g_attach_max'] * 1024 ) - $space_used; + $space_allowed = $space_allowed < 0 ? -1 : $space_allowed; + } + } + else + { + if ( $this->memberData['g_attach_per_post'] ) + { + $space_allowed = ( $this->memberData['g_attach_per_post'] * 1024 ) - $space_used; + $space_allowed = $space_allowed < 0 ? -1 : $space_allowed; + } + else + { + $space_allowed = 0; + } + } + + //----------------------------------------- + // Generate space left figure + //----------------------------------------- + + $space_left = $space_allowed ? $space_allowed : 0; + $space_left = ( $space_left < 0 ) ? -1 : $space_left; + + //----------------------------------------- + // Generate max upload size + //----------------------------------------- + + if ( ! $max_single_upload ) + { + if ( $space_left > 0 AND $space_left < $max_php_size ) + { + $max_single_upload = $space_left; + } + else if ( $max_php_size ) + { + $max_single_upload = $max_php_size; + } + } + } + + IPSDebug::fireBug( 'info', array( 'Space left: ' . $space_left ) ); + IPSDebug::fireBug( 'info', array( 'Max PHP size: ' . $max_php_size ) ); + IPSDebug::fireBug( 'info', array( 'Max single file size: ' . $max_single_upload ) ); + + $return = array( 'space_used' => $space_used, 'space_left' => $space_left, 'space_allowed' => $space_allowed, 'max_single_upload' => $max_single_upload, 'total_space_allowed' => $total_space_allowed ); + + return $return; + } + + /** + * Returns an array of settings: + * 'siu_thumb' = Allow thumbnail creation? + * 'siu_height' = Height of the generated thumbnail in pixels + * 'siu_width' = Width of the generated thumbnail in pixels + * 'upload_dir' = Base upload directory (must be a full path) + * + * You can omit any of these settings and IPB will use the default + * settings (which are the ones entered into the ACP for post thumbnails) + * + * @access public + * @return boolean + */ + public function getSettings() + { + $this->mysettings = array(); + + return true; + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/comments/events.php b/upload/admin/applications_addon/ips/calendar/extensions/comments/events.php new file mode 100644 index 00000000..4943fb95 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/comments/events.php @@ -0,0 +1,365 @@ +Incorrect accessYou cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +class comments_calendar_events extends classes_comments_renderer +{ + /** + * Internal remap array + * + * @param array + */ + protected $_remap = array( 'comment_id' => 'comment_id', + 'comment_author_id' => 'comment_mid', + 'comment_author_name' => 'comment_author', + 'comment_text' => 'comment_text', + 'comment_ip_address' => 'ip_address', + 'comment_edit_date' => 'comment_edit_time', + 'comment_date' => 'comment_date', + 'comment_approved' => 'comment_approved', + 'comment_parent_id' => 'comment_eid' ); + + /** + * Internal parent remap array + * + * @param array + */ + protected $_parentRemap = array( 'parent_id' => 'event_id', + 'parent_owner_id' => 'event_member_id', + 'parent_parent_id' => 'event_calendar_id', + 'parent_title' => 'event_title', + 'parent_seo_title' => 'event_title_seo', + 'parent_date' => 'event_saved' ); + + /** + * Parent SEO template + * + * @return string + */ + public function seoTemplate() + { + return 'cal_event'; + } + + /** + * Who am I? + * + * @return string + */ + public function whoAmI() + { + return 'calendar-events'; + } + + /** + * Comment table + * + * @return string + */ + public function table() + { + return 'cal_event_comments'; + } + + /** + * Fetch parent + * + * @return array + */ + public function fetchParent( $id ) + { + static $cachedEvents = array(); + + if( !isset($cachedEvents[ $id ]) ) + { + $_event = $this->DB->buildAndFetch( array( + 'select' => 'e.*', + 'from' => array( 'cal_events' => 'e' ), + 'where' => 'e.event_id=' . intval($id), + 'add_join' => array( + array( + 'select' => 'c.*', + 'from' => array( 'cal_calendars' => 'c' ), + 'where' => 'c.cal_id=e.event_calendar_id', + 'type' => 'left', + ), + array( + 'select' => 'p.*', + 'from' => array( 'permission_index' => 'p' ), + 'where' => "p.perm_type='calendar' AND p.perm_type_id=c.cal_id", + 'type' => 'left', + ), + ), + ) ); + $cachedEvents[ $id ] = $_event; + } + + return $cachedEvents[ $id ]; + } + + /** + * Fetch settings + * + * @return array + */ + public function settings() + { + return array( 'urls-showParent' => "app=calendar&module=calendar§ion=view&do=showevent&event_id=%s", + 'urls-report' => $this->getReportLibrary()->canReport( 'calendar' ) ? "app=core&module=reports&rcom=calendar&comment_id=%s&event_id=%s" : '' ); + } + + /** + * Number of items per page + * + * @return int + */ + public function perPage() + { + return 25; + } + + /** + * Pre save + * Accepts an array of GENERIC data and allows manipulation before it's added to DB + * + * @param string Type of save (edit/add) + * @param array Array of GENERIC data (comment_xxxx) + * @param int Comment id (if available) + * @param int Parent id + * @return array Array of GENERIC data + */ + public function preSave( $type, array $array, $commentId=0, $parentId=0 ) + { + if ( $type == 'add' ) + { + $event = $this->fetchParent( $array['comment_parent_id'] ); + + /* Test approval */ + if ( $array['comment_approved'] ) + { + $array['comment_approved'] = $this->memberData['g_is_supmod'] ? 1 : ( $event['cal_comment_moderate'] ? 0 : 1 ); + } + + /* Data Hook Location */ + IPSLib::doDataHooks( $array, 'calendarAddComment' ); + } + else + { + /* Data Hook Location */ + IPSLib::doDataHooks( $array, 'calendarEditComment' ); + } + + return $array; + } + + /** + * Post save + * Accepts an array of GENERIC data and allows manipulation after it's added to DB + * + * @param string Type of action (edit/add) + * @param array Array of GENERIC data (comment_xxxx) + * @param int Comment id (if available) + * @param int Parent id + * @return array Array of GENERIC data + */ + public function postSave( $type, array $array, $commentId=0, $parentId=0 ) + { + $this->_rebuildCommentCount( $parentId ); + + IPSLib::doDataHooks( $array, 'calendarComment' . ucfirst( $type ) . 'PostSave' ); + + return $array; + } + + /** + * Post delete. Can do stuff and that + * + * @param array Array of comment IDs to be deleted + * @param int Parent ID + * @return void + */ + public function postDelete( $commentIds, $parentId ) + { + $this->_rebuildCommentCount( $parentId ); + + $_dataHook = array( 'commentIds' => $commentIds, + 'parentId' => $parentId ); + + /* Data Hook Location */ + IPSLib::doDataHooks( $_dataHook, 'calendarCommentPostDelete' ); + } + + /** + * Toggles visibility + * + * @param string on/off + * @param array Array of comment IDs to be deleted + * @param int Parent ID + * @return void + */ + public function postVisibility( $toggle, $commentIds, $parentId ) + { + $this->_rebuildCommentCount( $parentId ); + + $_dataHook = array( 'toggle' => $toggle, + 'commentIds' => $commentIds, + 'parentId' => $parentId ); + + /* Data Hook Location */ + IPSLib::doDataHooks( $_dataHook, 'calendarCommentToggleVisibility' ); + } + + /** + * Rebuild comment counts for an event + * + * @param int Event ID + * @return @e void + */ + protected function _rebuildCommentCount( $parentId ) + { + $approved = $this->DB->buildAndFetch( array( 'select' => 'COUNT(*) as total', 'from' => 'cal_event_comments', 'where' => 'comment_approved=1 AND comment_eid=' . $parentId ) ); + $unapproved = $this->DB->buildAndFetch( array( 'select' => 'COUNT(*) as total', 'from' => 'cal_event_comments', 'where' => 'comment_approved=0 AND comment_eid=' . $parentId ) ); + + $this->DB->update( 'cal_events', array( 'event_comments' => $approved['total'], 'event_comments_pending' => $unapproved['total'] ), 'event_id=' . $parentId ); + } + + /** + * Fetch a total count of comments we can see + * + * @param mixed parent Id or parent array + * @return int + */ + public function count( $parent ) + { + /* Get parent */ + if ( is_numeric( $parent ) ) + { + $parent = $this->fetchParent( $parent ); + } + + if( $this->memberData['g_is_supmod'] ) + { + return ( intval($parent['event_comments']) + intval($parent['event_comments_pending']) ); + } + + return intval($parent['event_comments']); + } + + /** + * Perform a permission check + * + * @param string Type of check (add/edit/delete/editall/deleteall/approve all) + * @param array Array of GENERIC data + * @return true or string to be used in exception + */ + public function can( $type, array $array ) + { + /* Init */ + $comment = array(); + + /* Got data? */ + if ( empty( $array['comment_parent_id'] ) ) + { + trigger_error( "No parent ID passed to " . __FILE__, E_USER_WARNING ); + } + + /* Get the file */ + $event = $this->fetchParent( $array['comment_parent_id'] ); + + /* Fetch comment */ + if ( $array['comment_id'] ) + { + $comment = $this->fetchById( $array['comment_id'] ); + } + + /* Check permissions */ + switch( $type ) + { + case 'view': + if( !$this->registry->permissions->check( 'view', $event ) ) + { + return 'NO_PERMISSION'; + } + + if( $event['event_private'] AND ( !$this->memberData['member_id'] OR $this->memberData['member_id'] != $event['event_member_id'] ) ) + { + return 'NO_PERMISSION'; + } + + if( $event['event_perms'] != '*' ) + { + $permissionGroups = explode( ',', IPSText::cleanPermString( $event['event_perms'] ) ); + + if( !IPSMember::isInGroup( $this->memberData, $permissionGroups ) ) + { + return 'NO_PERMISSION'; + } + } + + return true; + break; + + case 'edit': + if( !$this->registry->permissions->check( 'comment', $event ) ) + { + return 'NO_PERMISSION'; + } + + if( !$this->memberData['g_is_supmod'] AND ( $this->memberData['member_id'] != $comment['comment_author_id'] OR !$comment['comment_author_id'] ) ) + { + return 'NO_PERMISSION'; + } + + return true; + break; + + case 'add': + if( !$this->registry->permissions->check( 'comment', $event ) ) + { + return 'NO_PERMISSION'; + } + + return true; + break; + + case 'delete': + return $this->memberData['g_is_supmod'] ? true : 'NO_PERMISSION'; + break; + + case 'visibility': + case 'moderate': + return $this->memberData['g_is_supmod'] ? true : 'NO_PERMISSION'; + break; + case 'hide': + return IPSMember::canModerateContent( $this->memberData, IPSMember::CONTENT_HIDE, $comment['comment_author_id'] ) ? TRUE : 'NO_PERMISSION'; + break; + case 'unhide': + return IPSMember::canModerateContent( $this->memberData, IPSMember::CONTENT_UNHIDE, $comment['comment_author_id'] ) ? TRUE : 'NO_PERMISSION'; + break; + } + } + + /** + * Returns remap keys (generic => local) + * + * @return array + */ + public function remapKeys( $type='comment' ) + { + return ( $type == 'comment' ) ? $this->_remap : $this->_parentRemap; + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/comments/index.html b/upload/admin/applications_addon/ips/calendar/extensions/comments/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/comments/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/content/feed_blocks/calendar.php b/upload/admin/applications_addon/ips/calendar/extensions/content/feed_blocks/calendar.php new file mode 100644 index 00000000..f234970c --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/content/feed_blocks/calendar.php @@ -0,0 +1,692 @@ +registry = $registry; + $this->DB = $registry->DB(); + $this->settings = $registry->fetchSettings(); + $this->member = $registry->member(); + $this->memberData =& $this->registry->member()->fetchMemberData(); + $this->cache = $registry->cache(); + $this->caches =& $registry->cache()->fetchCaches(); + $this->request = $registry->fetchRequest(); + $this->lang = $registry->class_localization; + } + + /** + * Return the tag help for this block type + * + * @access public + * @param string Additional info (database id;type) + * @return array + */ + public function getTags( $info='' ) + { + //----------------------------------------- + // Calendar columns + //----------------------------------------- + + $_finalColumns = array( + 'url' => array( "$r['url']", $this->lang->words['block_feed__calurl'] ), + 'date' => array( "$r['date']", $this->lang->words['block_feed__caldate'] ), + 'title' => array( "$r['title']", $this->lang->words['block_feed__caltitle'] ), + 'content' => array( "$r['content']", $this->lang->words['block_feed__calcontent'] ), + ); + $_noinfoColumns = array(); + + foreach( $this->DB->getFieldNames( 'cal_events' ) as $_column ) + { + if( $this->lang->words['col__cal_events_' . $_column ] ) + { + $_finalColumns[ $_column ] = array( "$r['" . $_column . "']", $this->lang->words['col__cal_events_' . $_column ] ); + } + else + { + $_noinfoColumns[ $_column ] = array( "$r['" . $_column . "']", $this->lang->words['notaghelpinfoavailable'], true ); + } + } + + foreach( $this->DB->getFieldNames( 'cal_calendars' ) as $_column ) + { + if( $this->lang->words['col__cal_calendars_' . $_column ] ) + { + unset($_finalColumns[ $_column ]); + $_finalColumns[ $_column ] = array( "$r['" . $_column . "']", $this->lang->words['col__cal_calendars_' . $_column ] ); + } + else + { + $_noinfoColumns[ $_column ] = array( "$r['" . $_column . "']", $this->lang->words['notaghelpinfoavailable'], true ); + } + } + + return array( + $this->lang->words['block_feed__generic'] => array( + array( '$title', $this->lang->words['block_feed__title'] ) , + ), + + $this->lang->words['block_feed_calendar'] => array( + array( '$records', $this->lang->words['block_feed__cal'], IPSLib::mergeArrays( $_finalColumns, $_noinfoColumns ) ), + ), + ); + } + + /** + * Provides the ability to modify the feed type or content type values + * before they are passed into the gallery template search query + * + * @access public + * @param string Current feed type + * @param string Current content type + * @return array Array with two keys: feed_type and content_type + */ + public function returnTemplateGalleryKeys( $feed_type, $content_type ) + { + return array( 'feed_type' => $feed_type, 'content_type' => $content_type ); + } + + /** + * Return the plugin meta data + * + * @access public + * @return array Plugin data (key (folder name), associated app, name, description, hasFilters, templateBit) + */ + public function returnFeedInfo() + { + return array( + 'key' => 'calendar', + 'app' => 'calendar', + 'name' => $this->lang->words['feed_name__calendar'], + 'description' => $this->lang->words['feed_description__calendar'], + 'hasFilters' => true, + 'templateBit' => 'feed__generic', + 'inactiveSteps' => array( ), + ); + } + + /** + * Get the feed's available content types. Returns form elements and data + * + * @param array Session data + * @param array true: Return an HTML radio list; false: return an array of types + * @return array Form data + */ + public function returnContentTypes( $session = array(), $asHTML = true ) + { + $_types = array( + array( 'events', $this->lang->words['ct_events'] ), + ); + $_html = array(); + + if( !$asHTML ) + { + return $_types; + } + + foreach( $_types as $_type ) + { + $_html[] = " "; + } + + return array( + array( + 'label' => $this->lang->words['generic__select_contenttype'], + 'description' => '', + 'field' => '
    • ' . implode( '
    • ', $_html ) . '
    ', + ) + ); + } + + /** + * Check the feed content type selection + * + * @access public + * @param array Submitted data to check (usually $this->request) + * @return array Array( (bool) Ok or not, (array) Content type data to use ) + */ + public function checkFeedContentTypes( $data ) + { + if( !in_array( $data['content_type'], array( 'events' ) ) ) + { + $data['content_type'] = 'events'; + } + + return array( true, $data['content_type'] ); + } + + /** + * Get the feed's available filter options. Returns form elements and data + * + * @access public + * @param array Session data + * @return array Form data + */ + public function returnFilters( $session ) + { + $filters = array(); + + $calendars = array(); + + foreach( $this->cache->getCache('calendars') as $calendar ) + { + $calendars[] = array( $calendar['cal_id'], $calendar['cal_title'] ); + } + + $filters[] = array( + 'label' => $this->lang->words['feed_calendar__calendars'], + 'description' => $this->lang->words['feed_calendar__calendars_desc'], + 'field' => $this->registry->output->formMultiDropdown( 'filter_calendars[]', $calendars, explode( ',', $session['config_data']['filters']['filter_calendars'] ), 8 ), + ); + + $session['config_data']['filters']['filter_start'] = $session['config_data']['filters']['filter_start'] ? $session['config_data']['filters']['filter_start'] : 0; + $session['config_data']['filters']['filter_end'] = $session['config_data']['filters']['filter_end'] ? $session['config_data']['filters']['filter_end'] : 0; + + $filters[] = array( + 'label' => $this->lang->words['feed_calendar__start'], + 'description' => $this->lang->words['feed_calendar__start_desc'], + 'field' => $this->registry->output->formInput( 'filter_start', $session['config_data']['filters']['filter_start'] ), + ); + + $filters[] = array( + 'label' => $this->lang->words['feed_calendar__end'], + 'description' => $this->lang->words['feed_calendar__end_desc'], + 'field' => $this->registry->output->formInput( 'filter_end', $session['config_data']['filters']['filter_end'] ), + ); + + return $filters; + } + + /** + * Check the feed filters selection + * + * @access public + * @param array Session data + * @param array Submitted data to check (usually $this->request) + * @return array Array( (bool) Ok or not, (array) Content type data to use ) + */ + public function checkFeedFilters( $session, $data ) + { + $filters = array(); + $return = true; + + $filters['filter_calendars'] = is_array($data['filter_calendars']) ? implode( ',', $data['filter_calendars'] ) : ''; + $filters['filter_start'] = $data['filter_start']; + $filters['filter_end'] = $data['filter_end']; + + //----------------------------------------- + // Verify we can create a timestamp out of the dates + //----------------------------------------- + + if( ( $filters['filter_start'] AND !@strtotime($filters['filter_start']) ) OR ($filters['filter_end'] AND !@strtotime($filters['filter_end']) ) ) + { + $return = false; + } + + return array( $return, $filters ); + } + + /** + * Get the feed's available ordering options. Returns form elements and data + * + * @access public + * @param array Session data + * @return array Form data + */ + public function returnOrdering( $session ) + { + $session['config_data']['sortorder'] = $session['config_data']['sortorder'] ? $session['config_data']['sortorder'] : 'desc'; + $session['config_data']['offset_start'] = $session['config_data']['offset_start'] ? $session['config_data']['offset_start'] : 0; + $session['config_data']['offset_end'] = $session['config_data']['offset_end'] ? $session['config_data']['offset_end'] : 10; + $session['config_data']['sortby'] = $session['config_data']['sortby'] ? $session['config_data']['sortby'] : 'start'; + + $filters = array(); + + $sortby = array( + array( 'title', $this->lang->words['sort_calendar__title'] ), + array( 'start', $this->lang->words['sort_calendar__start'] ), + array( 'end', $this->lang->words['sort_calendar__end'] ), + array( 'rand', $this->lang->words['sort_generic__rand'] ) + ); + + $filters[] = array( + 'label' => $this->lang->words['feed_sort_by'], + 'description' => $this->lang->words['feed_sort_by_desc'], + 'field' => $this->registry->output->formDropdown( 'sortby', $sortby, $session['config_data']['sortby'] ), + ); + + $filters[] = array( + 'label' => $this->lang->words['feed_order_direction'], + 'description' => $this->lang->words['feed_order_direction_desc'], + 'field' => $this->registry->output->formDropdown( 'sortorder', array( array( 'desc', 'DESC' ), array( 'asc', 'ASC' ) ), $session['config_data']['sortorder'] ), + ); + + $filters[] = array( + 'label' => $this->lang->words['feed_limit_offset_start'], + 'description' => $this->lang->words['feed_limit_offset_start_desc'], + 'field' => $this->registry->output->formInput( 'offset_start', $session['config_data']['offset_start'] ), + ); + + $filters[] = array( + 'label' => $this->lang->words['feed_limit_offset_end'], + 'description' => $this->lang->words['feed_limit_offset_end_desc'], + 'field' => $this->registry->output->formInput( 'offset_end', $session['config_data']['offset_end'] ), + ); + + return $filters; + } + + /** + * Check the feed ordering options + * + * @access public + * @param array Submitted data to check (usually $this->request) + * @return array Array( (bool) Ok or not, (array) Ordering data to use ) + */ + public function checkFeedOrdering( $data, $session ) + { + $limits = array(); + $sortby = array( 'title', 'start', 'end', 'rand' ); + + $limits['sortby'] = in_array( $data['sortby'], $sortby ) ? $data['sortby'] : 'title'; + $limits['sortorder'] = in_array( $data['sortorder'], array( 'desc', 'asc' ) ) ? $data['sortorder'] : 'desc'; + $limits['offset_start'] = intval($data['offset_start']); + $limits['offset_end'] = intval($data['offset_end']); + + return array( true, $limits ); + } + + /** + * Execute the feed and return the HTML to show on the page. + * Can be called from ACP or front end, so the plugin needs to setup any appropriate lang files, skin files, etc. + * + * @access public + * @param array Block data + * @param bool Preview mode + * @return string Block HTML to display or cache + * @link http://community.invisionpower.com/tracker/issue-37000-calendar-feed-block-start-date-today + */ + public function executeFeed( $block, $previewMode=false ) + { + $this->lang->loadLanguageFile( array( 'public_lang' ), 'ccs' ); + + $config = unserialize( $block['block_config'] ); + $where = array(); + + //----------------------------------------- + // Set up filtering clauses + //----------------------------------------- + + $where = array(); // array( 'e.event_approved=1', 'e.event_private=0', "e.event_perms='*'" ); + + if( !$this->memberData['g_is_supmod'] ) + { + $where[] = 'e.event_approved=1'; + } + else + { + $where[] = 'e.event_approved IN (0,1)'; + } + + $where[] = "((e.event_private=1 AND e.event_member_id=" . $this->memberData['member_id'] . ") OR (e.event_private=0 AND " . $this->DB->buildRegexp( "e.event_perms", $this->member->perm_id_array ) . "))"; + + if( $config['filters']['filter_calendars'] ) + { + $where[] = "e.event_calendar_id IN(" . $config['filters']['filter_calendars'] . ")"; + } + else + { + //----------------------------------------- + // Get calendars + //----------------------------------------- + + $this->DB->build( array( 'select' => 'perm_type_id as calendar_id', 'from' => 'permission_index', 'where' => "app='calendar' AND " . $this->DB->buildRegexp( "perm_view", $this->member->perm_id_array ) ) ); + $this->DB->execute(); + + while( $r = $this->DB->fetch() ) + { + $_calendars[] = $r['calendar_id']; + } + + $where[] = "e.event_calendar_id IN(" . ( count($_calendars) ? implode( ',', $_calendars ) : 0 ) . ")"; + } + + if( $config['filters']['filter_start'] OR $config['filters']['filter_end'] ) + { + $timenow = $config['filters']['filter_start'] ? @strtotime( $config['filters']['filter_start'], @time() + $this->registry->class_localization->getTimeOffset() ) : 0; + $timethen = $config['filters']['filter_end'] ? @strtotime( $config['filters']['filter_end'], @time() + $this->registry->class_localization->getTimeOffset() ) : 0; + + if( $timenow ) + { + if( $this->memberData['member_id'] AND $this->memberData['time_offset'] ) + { + $timenow = $timenow - ( $this->memberData['time_offset'] * 3600 ); + } + else if( !$this->memberData['member_id'] AND $this->settings['time_offset'] ) + { + $timenow = $timenow - ( $this->settings['time_offset'] * 3600 ); + } + } + + if( $timethen ) + { + if( $this->memberData['member_id'] AND $this->memberData['time_offset'] ) + { + $timethen = $timethen - ( $this->memberData['time_offset'] * 3600 ); + } + else if( !$this->memberData['member_id'] AND $this->settings['time_offset'] ) + { + $timethen = $timethen - ( $this->settings['time_offset'] * 3600 ); + } + } + + $start_date = $timenow ? gmstrftime( "%Y-%m-%d %H:00:00", $timenow ) : 0; + $end_date = $timethen ? gmstrftime( "%Y-%m-%d %H:00:00", $timethen ) : 0; + + if( $start_date AND $end_date ) + { + $where[] = "( ( e.event_start_date <= '{$end_date}' AND e.event_end_date >= '{$start_date}' ) OR + ( ( e.event_end_date " . $this->DB->buildIsNull(true) . " OR e.event_end_date='0000-00-00 00:00:00' ) AND e.event_start_date >= '{$start_date}' AND e.event_start_date <= '{$end_date}' ) OR + ( e.event_recurring=3 AND e.event_end_date <= '{$end_date}' AND e.event_end_date >= '{$start_date}' ) )"; + } + else if( $start_date ) + { + $where[] = "( e.event_end_date >= '{$start_date}' OR + ( ( e.event_end_date " . $this->DB->buildIsNull(true) . " OR e.event_end_date='0000-00-00 00:00:00' ) AND e.event_start_date >= '{$start_date}' ) OR + ( e.event_recurring=3 AND e.event_end_date >= '{$start_date}' ) )"; + } + else if( $end_date ) + { + $where[] = "( e.event_end_date <= '{$end_date}' OR + ( ( e.event_end_date " . $this->DB->buildIsNull(true) . " OR e.event_end_date='0000-00-00 00:00:00' ) AND e.event_start_date <= '{$end_date}' ) OR + ( e.event_recurring=3 AND e.event_end_date <= '{$end_date}' ) )"; + } + } + + $order = ''; + + switch( $config['sortby'] ) + { + case 'title': + $order .= "e.event_title "; + break; + + default: + case 'start': + $order .= "e.event_start_date "; + break; + + case 'end': + $order .= "e.event_end_date "; + break; + + case 'rand': + $order .= $this->DB->buildRandomOrder() . ' '; + break; + } + + $order .= $config['sortorder']; + + $_key = ''; + + switch( $config['sortby'] ) + { + case 'start': + $_key = "start"; + break; + + case 'end': + $_key = "end"; + break; + } + + //----------------------------------------- + // Attachment parser + //----------------------------------------- + + $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'core' ) . '/sources/classes/attach/class_attach.php', 'class_attach' ); + $attachments = new $classToLoad( $this->registry ); + $attachments->type = 'event'; + $attachments->init(); + + //----------------------------------------- + // Run the query and get the results + //----------------------------------------- + + $events = array(); + $_eventHit = 0; + + $this->DB->build( array( + 'select' => 'e.*', + 'from' => array( 'cal_events' => 'e' ), + 'where' => implode( ' AND ', $where ), + 'order' => $order, + 'limit' => array( $config['offset_a'], $config['offset_b'] ), + 'add_join' => array( + array( + 'select' => 'c.*', + 'from' => array( 'cal_calendars' => 'c' ), + 'where' => 'c.cal_id=e.event_calendar_id', + 'type' => 'left', + ), + array( + 'select' => 'm.member_group_id, m.mgroup_others', + 'from' => array( 'members' => 'm' ), + 'where' => 'e.event_member_id=m.member_id', + 'type' => 'left', + ) + ) + ) ); + $outer = $this->DB->execute(); + + while( $r = $this->DB->fetch($outer) ) + { + //----------------------------------------- + // Fix cal dates + //----------------------------------------- + + $_startTime = strtotime( $r['event_start_date'] ); + $_endTime = ( $r['event_end_date'] AND $r['event_end_date'] != '0000-00-00 00:00:00' ) ? strtotime( $r['event_end_date'] ) : 0; + + list( $_year, $_month, $_day ) = explode( '-', preg_replace( "/(.+?)\s.+$/", "$1", $r['event_start_date'] ) ); + + if( !$r['event_all_day'] ) + { + if( $this->memberData['member_id'] AND $this->memberData['time_offset'] ) + { + $_startTime = $_startTime + ( $this->memberData['time_offset'] * 3600 ); + } + else if( !$this->memberData['member_id'] AND $this->settings['time_offset'] ) + { + $_startTime = $_startTime + ( $this->settings['time_offset'] * 3600 ); + } + + if( $this->memberData['member_id'] AND $this->memberData['time_offset'] ) + { + $_endTime = $_endTime ? ( $_endTime + ( $this->memberData['time_offset'] * 3600 ) ) : 0; + } + else if( !$this->memberData['member_id'] AND $this->settings['time_offset'] ) + { + $_endTime = $_endTime ? ( $_endTime + ( $this->settings['time_offset'] * 3600 ) ) : 0; + } + } + + //----------------------------------------- + // Recurring events + //----------------------------------------- + + if( $r['event_recurring'] ) + { + $_incrementor = 0; + + switch( $r['event_recurring'] ) + { + case 1: + $_incrementor = 604800; + break; + + case 2: + $_incrementor = 2592000; + break; + + case 3: + $_incrementor = 31536000; + break; + } + + if( $_startTime < gmmktime( 0 ) ) + { + while( $_startTime < gmmktime( 0 ) ) + { + $_startTime += $_incrementor; + } + } + } + + //----------------------------------------- + // Ranged events + //----------------------------------------- + + else if( $_endTime ) + { + if( $_startTime < gmmktime( 0 ) AND $_endTime > gmmktime( 0 ) ) + { + while( $_startTime < gmmktime( 0 ) ) + { + $_startTime += 86400; + } + } + } + + //----------------------------------------- + // Normalization + //----------------------------------------- + + $r = IPSMember::buildDisplayData( $r ); + $r['url'] = $this->registry->output->buildSEOUrl( $this->settings['board_url'] . '/index.php?app=calendar&module=calendar&section=view&do=showevent&event_id=' . $r['event_id'], 'none', $r['event_title_seo'], 'cal_event' ); + $r['title'] = $r['event_title']; + $r['date'] = $_startTime; + $r['content'] = $r['event_content']; + + IPSText::getTextClass( 'bbcode' )->parse_html = 0; + IPSText::getTextClass( 'bbcode' )->parse_smilies = intval( $r['event_smilies'] ); + IPSText::getTextClass( 'bbcode' )->parse_bbcode = 1; + IPSText::getTextClass( 'bbcode' )->parsing_section = 'calendar'; + IPSText::getTextClass( 'bbcode' )->parsing_mgroup = $r['member_group_id']; + IPSText::getTextClass( 'bbcode' )->parsing_mgroup_others = $r['mgroup_others']; + + $r['content'] = IPSText::getTextClass( 'bbcode' )->preDisplayParse( $r['content'] ); + + if( $r['event_attachments'] ) + { + $attachHTML = $attachments->renderAttachments( array( $r['event_id'] => $r['content'] ), array( $r['event_id'] ), 'topic', false ); + + if( is_array($attachHTML) ) + { + $r['content'] = $attachHTML[ $r['event_id'] ]['html']; + $r['content'] .= $attachHTML[ $r['event_id'] ]['attachmentHtml']; + } + } + + if( $_key ) + { + $_thisKey = $_key == 'start' ? $_startTime : $_endTime; + $events[ $_thisKey . '.' . $_eventHit ] = $r; + $_eventHit++; + } + else + { + $events[] = $r; + } + } + + if( $_key ) + { + if( strtolower($config['sortorder']) == 'asc' ) + { + ksort($events); + } + else + { + krsort($events); + } + } + + //----------------------------------------- + // Return formatted content + //----------------------------------------- + + $feedConfig = $this->returnFeedInfo(); + + // Using a gallery template, or custom? + if( ( $block['block_template'] && $block['tpb_name'] ) || $previewMode == true ) + { + $templateBit = $block['tpb_name']; + } + else + { + $templateBit = $feedConfig['templateBit'] . '_' . $block['block_id']; + } + + if( $config['hide_empty'] AND !count($events) ) + { + return ''; + } + + $backup = $this->memberData['time_offset']; + $backup1 = $this->memberData['dst_in_use']; + $backup2 = $this->registry->class_localization->offset; + $this->memberData['time_offset'] = 0; + $this->memberData['dst_in_use'] = 0; + $this->registry->class_localization->offset = 0; + + ob_start(); + $return = $this->registry->output->getTemplate('ccs')->$templateBit( $block['block_name'], $events ); + ob_end_clean(); + + $this->memberData['time_offset'] = $backup; + $this->memberData['dst_in_use'] = $backup1; + $this->registry->class_localization->offset = $backup2; + + return $return; + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/content/feed_blocks/index.html b/upload/admin/applications_addon/ips/calendar/extensions/content/feed_blocks/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/content/feed_blocks/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/content/index.html b/upload/admin/applications_addon/ips/calendar/extensions/content/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/content/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/content/plugin_blocks/index.html b/upload/admin/applications_addon/ips/calendar/extensions/content/plugin_blocks/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/content/plugin_blocks/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/content/plugin_blocks/mini_calendar/index.html b/upload/admin/applications_addon/ips/calendar/extensions/content/plugin_blocks/mini_calendar/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/content/plugin_blocks/mini_calendar/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/content/plugin_blocks/mini_calendar/plugin.php b/upload/admin/applications_addon/ips/calendar/extensions/content/plugin_blocks/mini_calendar/plugin.php new file mode 100644 index 00000000..e58da9ad --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/content/plugin_blocks/mini_calendar/plugin.php @@ -0,0 +1,201 @@ +registry = $registry; + $this->DB = $registry->DB(); + $this->settings = $registry->fetchSettings(); + $this->member = $registry->member(); + $this->memberData =& $registry->member()->fetchMemberData(); + $this->cache = $registry->cache(); + $this->caches =& $registry->cache()->fetchCaches(); + $this->request = $registry->fetchRequest(); + $this->lang = $registry->class_localization; + } + + /** + * Return the tag help for this block type + * + * @access public + * @return array + */ + public function getTags() + { + return array( + $this->lang->words['block_plugin__generic'] => array( + array( '$content', $this->lang->words['block_plugin_mc_content'] ) , + ), + ); + } + + /** + * Return the plugin meta data + * + * @access public + * @return array Plugin data (name, description, hasConfig) + */ + public function returnPluginInfo() + { + return array( + 'key' => 'mini_calendar', + 'app' => 'calendar', + 'name' => $this->lang->words['plugin_name__mini_calendar'], + 'description' => $this->lang->words['plugin_description__mini_calendar'], + 'hasConfig' => true, + 'templateBit' => 'block__mini_calendar', + ); + } + + /** + * Get plugin configuration data. Returns form elements and data + * + * @access public + * @param array Session data + * @return array Form data + */ + public function returnPluginConfig( $session ) + { + $options = array(); + + foreach( $this->cache->getCache('calendars') as $cal_id => $cal ) + { + $options[] = array( $cal['cal_id'], $cal['cal_title'] ); + } + + return array( + array( + 'label' => $this->lang->words['plugin__cal_label1'], + 'description' => $this->lang->words['plugin__cal_desc1'], + 'field' => $this->registry->output->formDropdown( 'plugin__cal_calendar', $options, $session['config_data']['custom_config']['calendar'] ), + ) + ); + } + + /** + * Check the plugin config data + * + * @access public + * @param array Submitted plugin data to check (usually $this->request) + * @return array Array( (bool) Ok or not, (array) Plugin data to use ) + */ + public function validatePluginConfig( $data ) + { + $calId = 0; + $default = 0; + + foreach( $this->cache->getCache('calendars') as $cal_id => $cal ) + { + if( !$default ) + { + $default = $cal_id; + } + + if( $cal_id == $data['plugin__cal_calendar'] ) + { + $calId = $cal_id; + } + } + + return array( true, array( 'calendar' => $calId ? $calId : $default ) ); + } + + /** + * Execute the plugin and return the HTML to show on the page. + * Can be called from ACP or front end, so the plugin needs to setup any appropriate lang files, skin files, etc. + * + * @access public + * @param array Block data + * @return string Block HTML to display or cache + */ + public function executePlugin( $block ) + { + if ( !IPSLib::appIsInstalled('calendar') OR !is_file( IPSLib::getAppDir( 'calendar' ) . '/modules_public/calendar/view.php' ) ) + { + return ''; + } + + $config = unserialize($block['block_config']); + + ipsRegistry::$request['cal_id'] = $config['custom']['calendar']; + + //----------------------------------------- + // Grab calendar class + //----------------------------------------- + + $classToLoad = IPSLib::loadActionOverloader( IPSLib::getAppDir( 'calendar' ) . '/modules_public/calendar/view.php', "public_calendar_calendar_view" ); + $calendar = new $classToLoad( $this->registry ); + $calendar->makeRegistryShortcuts( $this->registry ); + + if( !$calendar->initCalendar( true, false ) ) + { + return ''; + } + + //----------------------------------------- + // What now? + //----------------------------------------- + + $a = explode( ',', gmdate( 'Y,n,j,G,i,s', time() + ipsRegistry::getClass( 'class_localization')->getTimeOffset() ) ); + + $now_date = array( + 'year' => $a[0], + 'mon' => $a[1], + 'mday' => $a[2], + 'hours' => $a[3], + 'minutes' => $a[4], + 'seconds' => $a[5] + ); + + $content = $calendar->getMiniCalendar( $now_date['mon'], $now_date['year'] ); + + $pluginConfig = $this->returnPluginInfo(); + $templateBit = $pluginConfig['templateBit'] . '_' . $block['block_id']; + + ob_start(); + $_return = $this->registry->getClass('output')->getTemplate('ccs')->$templateBit( $content ); + ob_end_clean(); + return $_return; + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/coreExtensions.php b/upload/admin/applications_addon/ips/calendar/extensions/coreExtensions.php new file mode 100644 index 00000000..9bb037d1 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/coreExtensions.php @@ -0,0 +1,384 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * Calendar core extensions + * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $ + *
    + * + * @author $Author: bfarber $ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Calendar + * @link http://www.invisionpower.com + * @since 27th January 2004 + * @version $Rev: 10721 $ + * + */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +$_PERM_CONFIG = array( 'Calendar' ); + +class calendarPermMappingCalendar +{ + /** + * Mapping of keys to columns + * + * @access protected + * @var array + */ + protected $mapping = array( + 'view' => 'perm_view', + 'start' => 'perm_2', + 'nomod' => 'perm_3', + 'rate' => 'perm_4', + 'comment' => 'perm_5', + 'askrsvp' => 'perm_6', + 'rsvp' => 'perm_7', + ); + + /** + * Mapping of keys to names + * + * @access protected + * @var array + */ + protected $perm_names = array( + 'view' => 'Show Calendar', + 'start' => 'Create Events', + 'nomod' => 'Bypass Moderation', + 'rate' => 'Rate Events', + 'comment' => 'Comment Events', + 'askrsvp' => 'Request RSVP', + 'rsvp' => 'RSVP Event', + ); + + /** + * Mapping of keys to background colors for the form + * + * @access protected + * @var array + */ + protected $perm_colors = array( + 'view' => '#fff0f2', + 'start' => '#effff6', + 'nomod' => '#edfaff', + 'rate' => '#f0f1ff', + 'comment' => '#fffaee', + 'askrsvp' => '#ffeef9', + 'rsvp' => '#fff5ec', + ); + + /** + * Method to pull the key/column mapping + * + * @access public + * @return array + */ + public function getMapping() + { + return $this->mapping; + } + + /** + * Method to pull the key/name mapping + * + * @access public + * @return array + */ + public function getPermNames() + { + return $this->perm_names; + } + + /** + * Method to pull the key/color mapping + * + * @access public + * @return array + */ + public function getPermColors() + { + return $this->perm_colors; + } + + /** + * Retrieve the items that support permission mapping + * + * @access public + * @return array + */ + public function getPermItems() + { + //----------------------------------------- + // Init + //----------------------------------------- + + $rows = array(); + + //----------------------------------------- + // Get calendars and loop + //----------------------------------------- + + ipsRegistry::DB()->build( array( + 'select' => 'c.*', + 'from' => array( 'cal_calendars' => 'c' ), + 'add_join' => array( + array( + 'select' => 'p.*', + 'from' => array( 'permission_index' => 'p' ), + 'where' => "p.perm_type='calendar' AND perm_type_id=c.cal_id", + 'type' => 'left' + ) + ) + ) ); + $outer = ipsRegistry::DB()->execute(); + + while( $row = ipsRegistry::DB()->fetch( $outer ) ) + { + $rows[ $row['cal_id'] ] = array( + 'title' => $row['cal_title'], + 'perm_view' => $row['perm_view'], + 'perm_2' => $row['perm_2'], + 'perm_3' => $row['perm_3'], + 'perm_4' => $row['perm_4'], + 'perm_5' => $row['perm_5'], + 'perm_6' => $row['perm_6'], + 'perm_7' => $row['perm_7'], + ); + } + + return $rows; + } +} + +/** + *
    + * Invision Power Services
    + * IP.Board v3.4.5
    + * Library: Handle public session data
    + * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
    + * 
    + * + * @author $Author: bfarber $ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Calendar + * @link http://www.invisionpower.com + * @since 12th March 2002 + * @version $Revision: 10721 $ + * + */ + +class publicSessions__calendar +{ + /** + * Return session variables for this application + * + * current_appcomponent, current_module and current_section are automatically + * stored. This function allows you to add specific variables in. + * + * @access public + * @author Matt Mecham + * @return array + */ + public function getSessionVariables() + { + $array = array( 'location_1_type' => '', + 'location_1_id' => 0, + 'location_2_type' => '', + 'location_2_id' => 0 ); + + //----------------------------------------- + // Viewing event? + //----------------------------------------- + + if ( ipsRegistry::$request['do'] == 'showevent' ) + { + $array = array( + 'location_1_type' => 'event', + 'location_1_id' => intval(ipsRegistry::$request['event_id']), + ); + } + else if( ipsRegistry::$request['cal_id'] ) + { + $array = array( + 'location_1_type' => 'calendar', + 'location_1_id' => intval(ipsRegistry::$request['cal_id']), + ); + } + + return $array; + } + + /** + * Parse/format the online list data for the records + * + * @access public + * @author Brandon Farber + * @param array Online list rows to check against + * @return array Online list rows parsed + */ + public function parseOnlineEntries( $rows ) + { + if( !is_array($rows) OR !count($rows) ) + { + return $rows; + } + + ipsRegistry::getClass('class_localization')->loadLanguageFile( array( 'public_calendar' ), 'calendar' ); + + //----------------------------------------- + // Init + //----------------------------------------- + + $cals_raw = array(); + $cals = array(); + $events_raw = array(); + $events = array(); + $final = array(); + + //----------------------------------------- + // Extract the data + //----------------------------------------- + + foreach( $rows as $row ) + { + if( $row['current_appcomponent'] != 'calendar' OR !$row['current_module'] ) + { + continue; + } + + if( $row['location_1_type'] == 'event' ) + { + $events_raw[ $row['location_1_id'] ] = $row['location_1_id']; + } + else if( $row['location_1_type'] == 'calendar' ) + { + $cals_raw[ $row['location_1_id'] ] = $row['location_1_id']; + } + } + + //----------------------------------------- + // Get calendars + //----------------------------------------- + + $calendars = ipsRegistry::cache()->getCache('calendars'); + + if( count($cals_raw) ) + { + foreach( $calendars as $cid => $calendar ) + { + if( isset($cals_raw[ $cid ]) ) + { + if( ipsRegistry::getClass('permissions')->check( 'view', $calendar ) ) + { + $cals[ $cid ] = $calendar; + } + } + } + } + + //----------------------------------------- + // And events + //----------------------------------------- + + if( count($events_raw) ) + { + ipsRegistry::DB()->build( array( 'select' => 'event_id, event_title, event_title_seo, event_calendar_id, event_approved, event_private, event_perms', 'from' => 'cal_events', 'where' => 'event_id IN(' . implode( ',', $events_raw ) . ')' ) ); + $tr = ipsRegistry::DB()->execute(); + + while( $r = ipsRegistry::DB()->fetch($tr) ) + { + if( ipsRegistry::getClass('permissions')->check( 'view', $calendars[ $r['event_calendar_id'] ] ) ) + { + if ( $r['event_private'] AND $this->memberData['member_id'] != $r['event_member_id'] ) + { + continue; + } + + if( !$this->memberData['g_is_supmod'] AND !$r['event_approved'] ) + { + continue; + } + + if( $r['event_perms'] != '*' ) + { + $permissionGroups = explode( ',', IPSText::cleanPermString( $r['event_perms'] ) ); + + if( !IPSMember::isInGroup( $this->memberData, $permissionGroups ) ) + { + continue; + } + } + + $events[ $r['event_id'] ] = $r; + } + } + } + + //----------------------------------------- + // Extract the topic/forum data + //----------------------------------------- + + foreach( $rows as $row ) + { + if( $row['current_appcomponent'] == 'calendar' ) + { + if( $row['location_1_type'] == 'event' AND isset($events[ $row['location_1_id'] ]) ) + { + $row['where_line'] = ipsRegistry::getClass( 'class_localization' )->words['cal_event_ol']; + $row['where_line_more'] = $events[ $row['location_1_id'] ]['event_title']; + $row['where_link'] = "app=calendar&module=calendar&section=view&do=showevent&event_id={$events[ $row['location_1_id'] ]['event_id']}"; + $row['_whereLinkSeo'] = ipsRegistry::getClass('output')->buildSEOUrl( $row['where_link'], 'public', $events[ $row['location_1_id'] ]['event_title_seo'], 'cal_event' ); + } + else if( $row['location_1_type'] == 'calendar' AND isset($cals[ $row['location_1_id'] ]) ) + { + $row['where_line'] = ipsRegistry::getClass( 'class_localization' )->words['cal_calendar_ol']; + $row['where_line_more'] = $cals[ $row['location_1_id'] ]['cal_title']; + $row['where_link'] = "app=calendar&module=calendar&section=view&cal_id={$cals[ $row['location_1_id'] ]['cal_id']}"; + $row['_whereLinkSeo'] = ipsRegistry::getClass('output')->buildSEOUrl( $row['where_link'], 'public', $cals[ $row['location_1_id'] ]['cal_title_seo'], 'cal_calendar' ); + } + else + { + $row['where_line'] = ipsRegistry::getClass( 'class_localization' )->words['WHERE_calendar']; + $row['where_link'] = 'app=calendar'; + $row['_whereLinkSeo'] = ipsRegistry::getClass('output')->buildSEOUrl( 'app=calendar', 'public', 'false', 'app=calendar' ); + } + } + + $final[ $row['id'] ] = $row; + } + + return $final; + } +} + +/** + * Find ip address extension + * + */ +class calendar_findIpAddress +{ + /** + * Return ip address lookup tables + * + * @access public + * @return array Table lookups + */ + public function getTables() + { + return array( + 'cal_event_comments' => array( 'comment_mid', 'ip_address', 'comment_date' ), + 'cal_event_ratings' => array( 'rating_member_id', 'rating_ip_address', '' ), + ); + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/coreVariables.php b/upload/admin/applications_addon/ips/calendar/extensions/coreVariables.php new file mode 100644 index 00000000..0112a19d --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/coreVariables.php @@ -0,0 +1,72 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * Core variables for calendar + * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $ + *
    + * + * @author $author$ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Calendar + * @link http://www.invisionpower.com + * @version $Rev: 10721 $ + */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +$_LOAD = array( + 'calendars' => 1, + 'reputation_levels' => 1, + 'ranks' => 1, + 'emoticons' => 1, + 'bbcode' => 1, + 'badwords' => 1, + 'moderators' => 1, + 'attachtypes' => 1, + 'sharelinks' => 1, + ); + +$CACHE['calendars'] = array( + 'array' => 1, + 'allow_unload' => 0, + 'default_load' => 1, + 'recache_file' => IPSLib::getAppDir( 'calendar' ) . '/modules_admin/calendar/calendars.php', + 'recache_class' => 'admin_calendar_calendar_calendars', + 'recache_function' => 'calendarsRebuildCache' + ); + +$CACHE['birthdays'] = array( + 'array' => 1, + 'allow_unload' => 0, + 'default_load' => 1, + 'recache_file' => IPSLib::getAppDir( 'calendar' ) . '/sources/cache.php', + 'recache_class' => 'calendar_cache', + 'recache_function' => 'rebuildCalendarEventsCache' + ); + +$CACHE['calendar_events'] = array( + 'array' => 1, + 'allow_unload' => 0, + 'default_load' => 1, + 'recache_file' => IPSLib::getAppDir( 'calendar' ) . '/sources/cache.php', + 'recache_class' => 'calendar_cache', + 'recache_function' => 'rebuildCalendarEventsCache' + ); + +$CACHE['rss_calendar'] = array( + 'array' => 1, + 'allow_unload' => 0, + 'default_load' => 1, + 'recache_file' => IPSLib::getAppDir( 'calendar' ) . '/sources/cache.php', + 'recache_class' => 'calendar_cache', + 'recache_function' => 'rebuildCalendarRSSCache', + 'skip_rebuild_when_upgrading' => 1, + ); diff --git a/upload/admin/applications_addon/ips/calendar/extensions/dataHookLocations.php b/upload/admin/applications_addon/ips/calendar/extensions/dataHookLocations.php new file mode 100644 index 00000000..e2f2cda2 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/dataHookLocations.php @@ -0,0 +1,30 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * Define data hook locations (Calendar) + * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $ + *
    + * + * @author $Author: bfarber $ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Core + * @link http://www.invisionpower.com + * @version $Rev: 10721 $ + */ + +$dataHookLocations = array( + + /* POSTING DATA LOCATIONS */ + array( 'calendarAddEvent', 'Add Calendar Event' ), + array( 'calendarEditEvent', 'Edit Calendar Event' ), + array( 'calendarAddComment', 'Add Event Comment' ), + array( 'calendarEditComment', 'Edit Event Comment' ), + array( 'calendarCommentAddPostSave', 'Add Event Comment (Post Save)' ), + array( 'calendarCommentEditPostSave', 'Edit Event Comment (Post Save)' ), + array( 'calendarCommentPostDelete', 'Comment Deletion' ), + array( 'calendarCommentToggleVisibility', 'Comment Visibility Toggled' ), +); \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/editorSections.php b/upload/admin/applications_addon/ips/calendar/extensions/editorSections.php new file mode 100644 index 00000000..7d1a3d77 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/editorSections.php @@ -0,0 +1,36 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * BBCode Management : Determines if bbcode can be used in this section + * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $ + *
    + * + * @author $Author: bfarber $ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Calendar + * @link http://www.invisionpower.com + * @since 27th January 2004 + * @version $Rev: 10721 $ + * + */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +/* + * An array of key => value pairs + * When going to parse, the key should be passed to the editor + * to determine which bbcodes should be parsed in the section + * + */ +$BBCODE = array( + 'calendar' => ipsRegistry::getClass('class_localization')->words['ctype__calendar'], + ); \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/furlRedirect.php b/upload/admin/applications_addon/ips/calendar/extensions/furlRedirect.php new file mode 100644 index 00000000..77c0aa82 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/furlRedirect.php @@ -0,0 +1,222 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $ + *
    + * + * @author $Author: bfarber $ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Downloads + * @link http://www.invisionpower.com + * @version $Rev: 10721 $ + */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +class furlRedirect_calendar +{ + /** + * Key type: Type of action + * + * @var string + */ + protected $_type = ''; + + /** + * Key ID + * + * @var int + */ + protected $_id = 0; + + /** + * Calendar ID + * + * @var int + */ + protected $_calId = 0; + + /** + * Constructor + * + * @param object registry + * @return @e void + */ + public function __construct( ipsRegistry $registry ) + { + $this->registry = $registry; + $this->DB = $registry->DB(); + $this->settings =& $registry->fetchSettings(); + } + + /** + * Set the key ID + * furlRedirect_forums::setKey( 'topic', 12 ); + * + * @param string Type + * @param mixed Value + */ + public function setKey( $name, $value ) + { + $this->_type = $name; + $this->_id = $value; + } + + /** + * Set up the key by URI + * + * @param string URI (example: index.php?showtopic=5&view=getlastpost) + * @return @e void + */ + public function setKeyByUri( $uri ) + { + if( IN_ACP ) + { + return FALSE; + } + + $uri = str_replace( '&', '&', $uri ); + + if ( strstr( $uri, '?' ) ) + { + list( $_chaff, $uri ) = explode( '?', $uri ); + } + + if( $uri == 'app=calendar' ) + { + $this->setKey( 'app', 'calendar' ); + return TRUE; + } + else + { + foreach( explode( '&', $uri ) as $bits ) + { + list( $k, $v ) = explode( '=', $bits ); + + if ( $k ) + { + if( $k == 'week' ) + { + $this->setKey( 'week', $v ); + $this->_calId = intval(ipsRegistry::$request['cal_id']); + return TRUE; + } + else if ( $k == 'event_id' ) + { + $this->setKey( 'event', intval( $v ) ); + return TRUE; + } + } + } + + if( $this->request['cal_id'] ) + { + $this->setKey( 'cal_id', intval( ipsRegistry::$request['cal_id'] ) ); + return true; + } + } + + return FALSE; + } + + /** + * Return the SEO title + * + * @access public + * @return string The SEO friendly name + */ + public function fetchSeoTitle() + { + switch ( $this->_type ) + { + default: + return FALSE; + break; + case 'app': + return $this->_fetchSeoTitle_app(); + break; + case 'cal_id': + case 'week': + return $this->_fetchSeoTitle_calendar(); + break; + case 'event': + return $this->_fetchSeoTitle_event(); + break; + } + } + + /** + * Return the base SEO title + * + * @access public + * @return string + */ + public function _fetchSeoTitle_app() + { + if ( ipsRegistry::$request['request_method'] != 'post' ) + { + /* Try to figure out what is used in furlTemplates.php */ + $_SEOTEMPLATES = array(); + @include( IPSLib::getAppDir( 'calendar' ) . '/extensions/furlTemplates.php' );/*noLibHook*/ + + if( $_SEOTEMPLATES['app=calendar']['out'][1] ) + { + return $_SEOTEMPLATES['app=calendar']['out'][1]; + } + else + { + return 'calendar/'; + } + } + } + + /** + * Return the seo title for the calendar + * + * @access public + * @return string + */ + public function _fetchSeoTitle_calendar() + { + if ( ipsRegistry::$request['request_method'] != 'post' ) + { + $calendars = ipsRegistry::cache()->getCache('calendars'); + $calendar = $calendars[ $this->_calId ? $this->_calId : $this->_id ]; + + /* Make sure we have a title */ + if( $calendar['cal_id'] ) + { + return $calendar['cal_title_seo'] ? $calendar['cal_title_seo'] : IPSText::makeSeoTitle( $calendar['cal_title'] ); + } + } + } + + /** + * Return the seo title for event + * + * @access public + * @return string + */ + public function _fetchSeoTitle_event() + { + if ( ipsRegistry::$request['request_method'] != 'post' ) + { + /* Query the event */ + $event = $this->DB->buildAndFetch( array( 'select' => 'event_id, event_title, event_title_seo', 'from' => 'cal_events', 'where' => "event_id={$this->_id}" ) ); + + /* Make sure we have an event */ + if( $event['event_id'] ) + { + return $event['event_title_seo'] ? $event['event_title_seo'] : IPSText::makeSeoTitle( $event['event_title'] ); + } + } + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/furlTemplates.php b/upload/admin/applications_addon/ips/calendar/extensions/furlTemplates.php new file mode 100644 index 00000000..9ab20b28 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/furlTemplates.php @@ -0,0 +1,117 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * Sets up SEO templates + * Last Updated: $Date: 2013-02-08 20:52:39 -0500 (Fri, 08 Feb 2013) $ + *
    + * + * @author $Author: AndyMillne $ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Forums + * @link http://www.invisionpower.com + * @version $Rev: 11970 $ + * + */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +$_SEOTEMPLATES = array( + 'cal_event' => array( + 'app' => 'calendar', + 'allowRedirect' => 1, + 'out' => array( '#app=calendar(?:&|&)module=calendar(?:&|&)section=view(?:&|&)do=showevent(?:&|&)event_id=(\d+?)(&|$)#i', 'calendar/event/$1-#{__title__}/$2' ), + 'in' => array( + 'regex' => "#/calendar/event/(\d+?)-([^/]+?)(/|$)#i", + 'matches' => array( array( 'app' , 'calendar' ), + array( 'module' , 'calendar' ), + array( 'section' , 'view' ), + array( 'do' , 'showevent' ), + array( 'event_id' , '$1' ) ) + ) ), + + 'cal_post' => array( + 'app' => 'calendar', + 'allowRedirect' => 1, + 'out' => array( '#app=calendar(?:&|&)module=calendar(?:&|&)section=post(?:&|&)cal_id=(.+?)(?:&|&)do=newevent#i', 'calendar/$1-#{__title__}/add' ), + 'in' => array( + 'regex' => "#/calendar/(\d+?)-([^/]+?)/add(/|$|\?)#i", + 'matches' => array( array( 'app' , 'calendar' ), + array( 'module' , 'calendar' ), + array( 'section' , 'post' ), + array( 'do' , 'newevent' ), + array( 'cal_id' , '$1' ) ) + ) ), + + 'cal_day' => array( + 'app' => 'calendar', + 'allowRedirect' => 1, + 'out' => array( '#app=calendar(?:&|&)module=calendar(?:&|&)section=view(?:&|&)cal_id=(.+?)(?:&|&)do=showday(?:&|&)y=(.+?)(?:&|&)m=(.+?)(?:&|&)d=(.+?)(&|$)#i', 'calendar/$1-#{__title__}/day-$2-$3-$4$5' ), + 'in' => array( + 'regex' => "#/calendar/(\d+?)-([^/]+?)/day-(\d+?)-(\d+?)-(\d+?)(/|$)#i", + 'matches' => array( array( 'app' , 'calendar' ), + array( 'module' , 'calendar' ), + array( 'section' , 'view' ), + array( 'do' , 'showday' ), + array( 'cal_id' , '$1' ), + array( 'y' , '$3' ), + array( 'm' , '$4' ), + array( 'd' , '$5' ) ) + ) ), + + 'cal_week' => array( + 'app' => 'calendar', + 'allowRedirect' => 1, + 'out' => array( '#app=calendar(?:&|&)module=calendar(?:&|&)section=view(?:&|&)cal_id=(\d+?)(?:&|&)do=showweek(?:&|&)week=(.+?)(?:&|$)#i', 'calendar/$1-#{__title__}/week-$2' ), + 'in' => array( + 'regex' => "#/calendar/(\d+?)-([^/]+?)/week-(.+?)(/|$)#i", + 'matches' => array( array( 'app' , 'calendar' ), + array( 'module' , 'calendar' ), + array( 'section' , 'view' ), + array( 'do' , 'showweek' ), + array( 'cal_id' , '$1' ), + array( 'week' , '$3' ) ) + ) ), + + 'cal_month' => array( + 'app' => 'calendar', + 'allowRedirect' => 1, + 'out' => array( '#app=calendar(?:&|&)module=calendar(?:&|&)section=view(?:&|&)cal_id=(.+?)(?:&|&)m=(.+?)(?:&|&)y=(.+?)(?:&|$)#i', 'calendar/$1-#{__title__}/$2-$3' ), + 'in' => array( + 'regex' => "#/calendar/(\d+?)-([^/]+?)/(\d+?)-(\d+?)(/|$)#i", + 'matches' => array( array( 'app' , 'calendar' ), + array( 'module' , 'calendar' ), + array( 'section' , 'view' ), + array( 'cal_id' , '$1' ), + array( 'm' , '$3' ), + array( 'y' , '$4' ) ) + ) ), + + 'cal_calendar' => array( + 'app' => 'calendar', + 'allowRedirect' => 1, + 'out' => array( '#app=calendar(?:&|&)module=calendar(?:&|&)section=view(?:&|&)cal_id=(.+?)(&|$)#i', 'calendar/$1-#{__title__}' ), + 'in' => array( + 'regex' => "#/calendar/(\d+?)-([^/]+?)(/|$)#i", + 'matches' => array( array( 'app' , 'calendar' ), + array( 'module' , 'calendar' ), + array( 'section' , 'view' ), + array( 'cal_id' , '$1' ) ) + ) ), + + 'app=calendar' => array( + 'app' => 'calendar', + 'allowRedirect' => 1, + 'out' => array( '#app=calendar$#i', 'calendar/' ), + 'in' => array( + 'regex' => "#/calendar(/|$|\?)#i", + 'matches' => array( array( 'app', 'calendar' ) ) + ) ), + ); diff --git a/upload/admin/applications_addon/ips/calendar/extensions/index.html b/upload/admin/applications_addon/ips/calendar/extensions/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/like/calendars.php b/upload/admin/applications_addon/ips/calendar/extensions/like/calendars.php new file mode 100644 index 00000000..3c43c5a8 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/like/calendars.php @@ -0,0 +1,189 @@ +Incorrect accessYou cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +/** + * + * @class like_calendar_calendars_composite + * @brief Calendars like class (calendar application) + */ +class like_calendar_calendars_composite extends classes_like_composite +{ + /** + * Registry Object Shortcuts + * + * @var $registry + * @var $DB + * @var $settings + * @var $request + * @var $lang + * @var $member + * @var $memberData + * @var $cache + * @var $caches + */ + protected $registry; + protected $DB; + protected $settings; + protected $request; + protected $lang; + protected $member; + protected $memberData; + protected $cache; + protected $caches; + + /** + * Constructor + * + * @return @e void + */ + public function __construct() + { + /* Make registry objects */ + $this->registry = ipsRegistry::instance(); + $this->DB = $this->registry->DB(); + $this->settings =& $this->registry->fetchSettings(); + $this->request =& $this->registry->fetchRequest(); + $this->lang = $this->registry->getClass('class_localization'); + $this->member = $this->registry->member(); + $this->memberData =& $this->registry->member()->fetchMemberData(); + $this->cache = $this->registry->cache(); + $this->caches =& $this->registry->cache()->fetchCaches(); + + $this->lang->loadLanguageFile( array( 'public_calendar' ), 'calendar' ); + } + + /** + * Fetch the template group + * + * @return @e string + */ + public function skin() + { + return 'calendar'; + } + + /** + * Fetch the template prefix. This allows you to have two follow implementations in + * one skin file (i.e. skin_calendars -> eventLikeMoreDialog() and skin_calendars -> calendarLikeMoreDialog()) + * + * @return @e string + */ + public function templatePrefix() + { + return 'calendar_'; + } + + /** + * Gets the vernacular (like or follow) + * + * @return @e string + */ + public function getVernacular() + { + return 'follow_c'; + } + + /** + * Return an array of acceptable frequencies + * Possible: immediate, offline, daily, weekly + * + * @return @e array + */ + public function allowedFrequencies() + { + return array( 'immediate', 'offline' ); + } + + /** + * Return types of notification available for this item + * + * @return @e array array( key, human readable ) + */ + public function getNotifyType() + { + return array( 'events', ipsRegistry::getClass('class_localization')->words['like__events'] ); + } + + /** + * Returns the type of item + * + * @param mixed $relId Relationship ID or array of IDs + * @param array $selectType Array of meta to select (title, url, type, parentTitle, parentUrl, parentType) null fetches all + * @return @e array Meta data + */ + public function getMeta( $relId, $selectType=null ) + { + $return = array(); + $isNumeric = false; + + if ( is_numeric( $relId ) ) + { + $relId = array( intval($relId) ); + $isNumeric = true; + } + + $this->DB->build( array( + 'select' => '*', + 'from' => 'cal_calendars', + 'where' => 'cal_id IN (' . implode( ',', $relId ) . ')', + ) ); + + $this->DB->execute(); + + while( $row = $this->DB->fetch() ) + { + /* Title */ + if ( $selectType === null OR ( is_array( $selectType ) AND in_array( 'title', $selectType ) ) ) + { + $return[ $row['cal_id'] ]['like.title'] = $row['cal_title']; + } + + /* URL */ + if ( $selectType === null OR ( is_array( $selectType ) AND in_array( 'url', $selectType ) ) ) + { + $return[ $row['cal_id'] ]['like.url'] = $this->registry->output->buildSEOUrl( "app=calendar&module=calendar&section=view&cal_id=" . $row['cal_id'], "public", $row['cal_title_seo'], "cal_calendar" ); + } + + /* Type */ + if ( $selectType === null OR ( is_array( $selectType ) AND in_array( 'type', $selectType ) ) ) + { + $return[ $row['file_id'] ]['like.type'] = $this->lang->words['like__calendar']; + } + + /* Parent title */ + if ( $selectType === null OR ( is_array( $selectType ) AND in_array( 'parentTitle', $selectType ) ) ) + { + $return[ $row['file_id'] ]['like.parentTitle'] = $this->lang->words['like__index']; + } + + /* Parent url */ + if ( $selectType === null OR ( is_array( $selectType ) AND in_array( 'parentTitle', $selectType ) ) ) + { + $return[ $row['file_id'] ]['like.parentUrl'] = $this->registry->output->buildSEOUrl( "app=calendar", "public", "false", "app=calendar" ); + } + + /* Parent Type */ + if ( $selectType === null OR ( is_array( $selectType ) AND in_array( 'parentType', $selectType ) ) ) + { + $return[ $row['file_id'] ]['like.parentType'] = $this->lang->words['like__index']; + } + } + + return ( $isNumeric === true ) ? array_pop( $return ) : $return; + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/like/events.php b/upload/admin/applications_addon/ips/calendar/extensions/like/events.php new file mode 100644 index 00000000..66e765a7 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/like/events.php @@ -0,0 +1,191 @@ +Incorrect accessYou cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +/** + * + * @class like_calendar_events_composite + * @brief Events like class (calendar application) + */ +class like_calendar_events_composite extends classes_like_composite +{ + /** + * Registry Object Shortcuts + * + * @var $registry + * @var $DB + * @var $settings + * @var $request + * @var $lang + * @var $member + * @var $memberData + * @var $cache + * @var $caches + */ + protected $registry; + protected $DB; + protected $settings; + protected $request; + protected $lang; + protected $member; + protected $memberData; + protected $cache; + protected $caches; + + /** + * Constructor + * + * @return @e void + */ + public function __construct() + { + /* Make registry objects */ + $this->registry = ipsRegistry::instance(); + $this->DB = $this->registry->DB(); + $this->settings =& $this->registry->fetchSettings(); + $this->request =& $this->registry->fetchRequest(); + $this->lang = $this->registry->getClass('class_localization'); + $this->member = $this->registry->member(); + $this->memberData =& $this->registry->member()->fetchMemberData(); + $this->cache = $this->registry->cache(); + $this->caches =& $this->registry->cache()->fetchCaches(); + + $this->lang->loadLanguageFile( array( 'public_calendar' ), 'calendar' ); + } + + /** + * Fetch the template group + * + * @return @e string + */ + public function skin() + { + return 'calendar'; + } + + /** + * Fetch the template prefix. This allows you to have two follow implementations in + * one skin file (i.e. skin_calendars -> eventLikeMoreDialog() and skin_calendars -> calendarLikeMoreDialog()) + * + * @return @e string + */ + public function templatePrefix() + { + return 'event_'; + } + + /** + * Gets the vernacular (like or follow) + * + * @return @e string + */ + public function getVernacular() + { + return 'follow_e'; + } + + /** + * Return an array of acceptable frequencies + * Possible: immediate, offline, daily, weekly + * + * @return @e array + */ + public function allowedFrequencies() + { + return array( 'immediate', 'offline' ); + } + + /** + * Return types of notification available for this item + * + * @return @e array array( key, human readable ) + */ + public function getNotifyType() + { + return array( 'comments', ipsRegistry::getClass('class_localization')->words['like__updatesandcomments'] ); + } + + /** + * Returns the type of item + * + * @param mixed $relId Relationship ID or array of IDs + * @param array $selectType Array of meta to select (title, url, type, parentTitle, parentUrl, parentType) null fetches all + * @return @e array Meta data + */ + public function getMeta( $relId, $selectType=null ) + { + $return = array(); + $isNumeric = false; + + if ( is_numeric( $relId ) ) + { + $relId = array( intval($relId) ); + $isNumeric = true; + } + + $this->DB->build( array( 'select' => 'e.*', + 'from' => array( 'cal_events' => 'e' ), + 'where' => 'e.event_id IN (' . implode( ',', $relId ) . ')', + 'add_join' => array( array( 'select' => 'c.*', + 'from' => array( 'cal_calendars' => 'c' ), + 'where' => 'e.event_calendar_id=c.cal_id', + 'type' => 'left' ) ) ) ); + + $this->DB->execute(); + + while( $row = $this->DB->fetch() ) + { + /* Title */ + if ( $selectType === null OR ( is_array( $selectType ) AND in_array( 'title', $selectType ) ) ) + { + $return[ $row['event_id'] ]['like.title'] = $row['event_title']; + } + + /* URL */ + if ( $selectType === null OR ( is_array( $selectType ) AND in_array( 'url', $selectType ) ) ) + { + $return[ $row['event_id'] ]['like.url'] = $this->registry->output->buildSEOUrl( "app=calendar&module=calendar&section=view&do=showevent&event_id=" . $row['event_id'], "public", $row['event_title_seo'], "cal_event" ); + } + + /* Type */ + if ( $selectType === null OR ( is_array( $selectType ) AND in_array( 'type', $selectType ) ) ) + { + $return[ $row['event_id'] ]['like.type'] = $this->lang->words['like__event']; + } + + /* Parent title */ + if ( $selectType === null OR ( is_array( $selectType ) AND in_array( 'parentTitle', $selectType ) ) ) + { + $return[ $row['event_id'] ]['like.parentTitle'] = $row['cal_title']; + } + + /* Parent url */ + if ( $selectType === null OR ( is_array( $selectType ) AND in_array( 'parentTitle', $selectType ) ) ) + { + $return[ $row['event_id'] ]['like.parentUrl'] = $this->registry->output->buildSEOUrl( "app=calendar&module=calendar&section=view&cal_id=" . $row['cal_id'], "public", $row['cal_title_seo'], "cal_calendar" ); + } + + /* Parent Type */ + if ( $selectType === null OR ( is_array( $selectType ) AND in_array( 'parentType', $selectType ) ) ) + { + $return[ $row['event_id'] ]['like.parentType'] = $this->lang->words['like__calendar']; + } + } + + return ( $isNumeric === true ) ? array_pop( $return ) : $return; + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/like/index.html b/upload/admin/applications_addon/ips/calendar/extensions/like/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/like/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/memberSync.php b/upload/admin/applications_addon/ips/calendar/extensions/memberSync.php new file mode 100644 index 00000000..d60a260d --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/memberSync.php @@ -0,0 +1,103 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * Calendar core extensions + * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $ + *
    + * + * @author $Author: bfarber $ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Calendar + * @link http://www.invisionpower.com + * @since 27th January 2004 + * @version $Rev: 10721 $ + * + */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +/** + * Member Synchronization extensions + * + * @author $author$ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Calendar + * @link http://www.invisionpower.com + * @version $Rev: 10721 $ + */ + +class calendarMemberSync +{ + /** + * This method is called after a member account has been removed + * + * @access public + * @param string $ids SQL IN() clause + * @return @e void + */ + public function onDelete( $mids ) + { + if( ipsRegistry::instance()->DB()->checkForTable( 'cal_events' ) ) + { + ipsRegistry::instance()->DB()->delete( 'cal_events', 'event_member_id' . $mids ); + ipsRegistry::instance()->DB()->delete( 'cal_event_comments', 'comment_mid' . $mids ); + ipsRegistry::instance()->DB()->delete( 'cal_event_ratings', 'rating_member_id' . $mids ); + ipsRegistry::instance()->DB()->delete( 'cal_event_rsvp', 'rsvp_member_id' . $mids ); + ipsRegistry::instance()->DB()->update( 'cal_import_feeds', array( 'feed_member_id' => 0 ), "feed_member_id" . $mids ); + } + } + + /** + * This method is called after a member's account has been merged into another member's account + * + * @access public + * @param array $member Member account being kept + * @param array $member2 Member account being removed + * @return @e void + */ + public function onMerge( $member, $member2 ) + { + if( ipsRegistry::instance()->DB()->checkForTable( 'cal_events' ) ) + { + ipsRegistry::instance()->DB()->update( 'cal_events', array( 'event_member_id' => intval($member['member_id']) ), "event_member_id=" . $member2['member_id'] ); + ipsRegistry::instance()->DB()->update( 'cal_event_comments', array( 'comment_mid' => intval($member['member_id']) ), "comment_mid=" . $member2['member_id'] ); + ipsRegistry::instance()->DB()->delete( 'cal_event_ratings', 'rating_member_id=' . $member2['member_id'] ); + ipsRegistry::instance()->DB()->update( 'cal_import_feeds', array( 'feed_member_id' => intval($member['member_id']) ), "feed_member_id=" . $member2['member_id'] ); + + //----------------------------------------- + // Only RSVP once per member per event + //----------------------------------------- + + $_existsMemberOne = array(); + + ipsRegistry::instance()->DB()->build( array( 'select' => 'rsvp_event_id', 'from' => 'cal_event_rsvp', 'where' => 'rsvp_member_id=' . $member['member_id'] ) ); + ipsRegistry::instance()->DB()->execute(); + + while( $r = ipsRegistry::instance()->DB()->fetch() ) + { + $_existsMemberOne[] = $r['rsvp_event_id']; + } + + if( count($_existsMemberOne) ) + { + ipsRegistry::instance()->DB()->update( 'cal_event_rsvp', array( 'rsvp_member_id' => intval($member['member_id']) ), "rsvp_member_id=" . $member2['member_id'] . " AND rsvp_event_id NOT IN(" . implode( ',', $_existsMemberOne ) . ")" ); + } + else + { + ipsRegistry::instance()->DB()->update( 'cal_event_rsvp', array( 'rsvp_member_id' => intval($member['member_id']) ), "rsvp_member_id=" . $member2['member_id'] ); + } + + ipsRegistry::instance()->DB()->delete( 'cal_event_rsvp', 'rsvp_member_id=' . $member2['member_id'] ); + } + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/modcp/index.html b/upload/admin/applications_addon/ips/calendar/extensions/modcp/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/modcp/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/modcp/plugin_unapprovedevents.php b/upload/admin/applications_addon/ips/calendar/extensions/modcp/plugin_unapprovedevents.php new file mode 100644 index 00000000..759f4912 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/modcp/plugin_unapprovedevents.php @@ -0,0 +1,228 @@ +Incorrect accessYou cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} + +/** + * + * @class plugin_calendar_unapprovedevents + * @brief Moderator control panel plugin: show events pending approval + */ +class plugin_calendar_unapprovedevents +{ + /** + * Registry Object Shortcuts + * + * @var $registry + * @var $DB + * @var $settings + * @var $request + * @var $lang + * @var $member + * @var $memberData + * @var $cache + * @var $caches + */ + protected $registry; + protected $DB; + protected $settings; + protected $request; + protected $lang; + protected $member; + protected $memberData; + protected $cache; + protected $caches; + + /** + * Calendar functions + * + * @var object + */ + protected $functions; + + /** + * Calendar view class + * + * @var object + */ + protected $view; + + /** + * Constructor + * + * @param object $registry Registry object + * @return @e void + */ + public function __construct( ipsRegistry $registry ) + { + //----------------------------------------- + // Make shortcuts + //----------------------------------------- + + $this->registry = $registry; + $this->DB = $this->registry->DB(); + $this->settings =& $this->registry->fetchSettings(); + $this->request =& $this->registry->fetchRequest(); + $this->member = $this->registry->member(); + $this->memberData =& $this->registry->member()->fetchMemberData(); + $this->cache = $this->registry->cache(); + $this->caches =& $this->registry->cache()->fetchCaches(); + $this->lang = $this->registry->class_localization; + + /* Load language strings.. */ + $this->lang->loadLanguageFile( array( 'public_calendar' ), 'calendar' ); + } + + /** + * Returns the primary tab key for the navigation bar + * + * @return @e string + */ + public function getPrimaryTab() + { + return 'unapproved_content'; + } + + /** + * Returns the secondary tab key for the navigation bar + * + * @return @e string + */ + public function getSecondaryTab() + { + return 'unapprovedevents'; + } + + /** + * Determine if we can view tab + * + * @param array $permissions Moderator permissions + * @return @e bool + */ + public function canView( $permissions ) + { + if( $this->memberData['g_is_supmod'] ) + { + return true; + } + + return false; + } + + /** + * Execute plugin + * + * @param array $permissions Moderator permissions + * @return @e string + */ + public function executePlugin( $permissions ) + { + //----------------------------------------- + // Check permissions + //----------------------------------------- + + if( !$this->canView( $permissions ) ) + { + return ''; + } + + //----------------------------------------- + // Functions class + //----------------------------------------- + + $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'calendar' ) . "/sources/functions.php", 'app_calendar_classes_functions', 'calendar' ); + $this->functions = new $classToLoad( $this->registry ); + + $classToLoad = IPSLib::loadActionOverloader( IPSLib::getAppDir( 'calendar' ) . "/modules_public/calendar/view.php", 'public_calendar_calendar_view' ); + $this->view = new $classToLoad( $this->registry ); + $this->view->makeRegistryShortcuts( $this->registry ); + $this->view->initCalendar(); + + /* Add some CSS.. */ + $this->registry->output->addToDocumentHead( 'importcss', "{$this->settings['css_base_url']}style_css/{$this->registry->output->skin['_csscacheid']}/ipb_calendar.css" ); + + //----------------------------------------- + // Get 10 events + //----------------------------------------- + + $calendars = $this->functions->getCalendars(); + $events = array(); + $total = array( 'events' => 0 ); + + if( count($calendars) ) + { + $_calIds = array_keys( $calendars ); + $st = intval($this->request['st']); + $total = $this->DB->buildAndFetch( array( 'select' => 'count(*) as events', 'from' => 'cal_events', 'where' => "event_calendar_id IN(" . implode( ',', $_calIds ) . ') AND event_approved=0' ) ); + + //----------------------------------------- + // Page links + //----------------------------------------- + + $pages = $this->registry->output->generatePagination( array( 'totalItems' => $total['events'], + 'itemsPerPage' => 10, + 'currentStartValue' => $st, + 'baseUrl' => "app=core&module=modcp&fromapp=calendar&tab=unapprovedevents", + ) ); + + /* Got events to load? */ + if ( $total['events'] ) + { + $_joins = array( + array( + 'select' => 'm.*', + 'from' => array( 'members' => 'm' ), + 'where' => 'm.member_id=e.event_member_id', + 'type' => 'left', + ), + array( + 'select' => 'pp.*', + 'from' => array( 'profile_portal' => 'pp' ), + 'where' => 'm.member_id=pp.pp_member_id', + 'type' => 'left', + ), + ); + + if ( $this->settings['reputation_enabled'] ) + { + $classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/class_reputation_cache.php', 'classReputationCache' ); + $this->registry->setClass( 'repCache', new $classToLoad() ); + + $_joins[] = $this->registry->getClass('repCache')->getTotalRatingJoin( 'event_id', 'e.event_id', 'calendar' ); + $_joins[] = $this->registry->getClass('repCache')->getUserHasRatedJoin( 'event_id', 'e.event_id', 'calendar' ); + } + + $this->DB->build( array( + 'select' => 'e.*', + 'from' => array( 'cal_events' => 'e' ), + 'order' => 'e.event_start_date ASC', + 'limit' => array( $st, 10 ), + 'where' => "e.event_calendar_id IN(" . implode( ',', $_calIds ) . ') AND e.event_approved=0', + 'add_join' => $_joins, + ) ); + $outer = $this->DB->execute(); + + while( $r = $this->DB->fetch($outer) ) + { + $events[] = $this->view->calendarMakeEventHTML( IPSMember::buildDisplayData( $r ), true ); + } + } + } + + return $this->registry->output->getTemplate('calendar')->modEventsWrapper( $events, $pages ); + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/notifications.php b/upload/admin/applications_addon/ips/calendar/extensions/notifications.php new file mode 100644 index 00000000..82819ec3 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/notifications.php @@ -0,0 +1,48 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * Define the core notification types + * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $ + *
    + * + * @author $Author: bfarber $ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Downloads + * @link http://www.invisionpower.com + * @since 20th February 2002 + * @version $Rev: 10721 $ + * + */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +/** + * Notification types + */ + +ipsRegistry::getClass('class_localization')->loadLanguageFile( array( 'public_calendar' ), 'calendar' ); + +class calendar_notifications +{ + public function getConfiguration() + { + /** + * Notification types - Needs to be a method so when require_once is used, $_NOTIFY isn't empty + */ + $_NOTIFY = array( + array( 'key' => 'updated_event', 'default' => array( 'inline' ), 'disabled' => array(), 'icon' => 'notify_calendar' ), + array( 'key' => 'new_event', 'default' => array( 'inline' ), 'disabled' => array(), 'icon' => 'notify_calendar' ), + );/*noLibHook*/ + + return $_NOTIFY; + } +} + diff --git a/upload/admin/applications_addon/ips/calendar/extensions/permissionsSync.php b/upload/admin/applications_addon/ips/calendar/extensions/permissionsSync.php new file mode 100644 index 00000000..71f3c1e8 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/permissionsSync.php @@ -0,0 +1,57 @@ +Incorrect accessYou cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} + +/** + * + * @class calendarPermissionsSync + * @brief Recaches calendars when permissions are updated + */ +class calendarPermissionsSync +{ + /** + * Cache Shortcut + * + * @var $cache + */ + protected $cache; + + /** + * Constructor + * + * @param object $registry Registry object + * @return @e void + */ + public function __construct( ipsRegistry $registry ) + { + //----------------------------------------- + // Make shortcuts + //----------------------------------------- + + $this->cache = $registry->cache(); + } + + /** + * Callback when permissions have been updated + * + * @return @e string + */ + public function updatePermissions() + { + $this->cache->rebuildCache( 'calendars', 'calendar' ); + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/reportPlugins/calendar.php b/upload/admin/applications_addon/ips/calendar/extensions/reportPlugins/calendar.php new file mode 100644 index 00000000..4f92274c --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/reportPlugins/calendar.php @@ -0,0 +1,442 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * Report Center :: Calendar plugin + * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $ + *
    + * + * @author $Author: bfarber $ + * @author Based on original "Report Center" by Luke Scott + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Calendar + * @link http://www.invisionpower.com + * @version $Rev: 10721 $ + */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} + +class calendar_plugin +{ + /**#@+ + * Registry objects + * + * @access protected + * @var object + */ + protected $registry; + protected $DB; + protected $settings; + protected $request; + protected $lang; + protected $member; + protected $memberData; + protected $cache; + protected $caches; + /**#@-*/ + + /** + * Holds extra data for the plugin + * + * @access private + * @var array Data specific to the plugin + */ + public $_extra; + + /** + * Constructor + * + * @access public + * @param object Registry object + * @return @e void + */ + public function __construct( ipsRegistry $registry ) + { + //----------------------------------------- + // Make object + //----------------------------------------- + + $this->registry = $registry; + $this->DB = $this->registry->DB(); + $this->settings =& $this->registry->fetchSettings(); + $this->request =& $this->registry->fetchRequest(); + $this->member = $this->registry->member(); + $this->memberData =& $this->registry->member()->fetchMemberData(); + $this->cache = $this->registry->cache(); + $this->caches =& $this->registry->cache()->fetchCaches(); + $this->lang = $this->registry->class_localization; + } + + /** + * Display the form for extra data in the ACP + * + * @access public + * @param array Plugin data + * @param object HTML object + * @return string HTML to add to the form + */ + public function displayAdminForm( $plugin_data, &$html ) + { + return ''; + } + + /** + * Process the plugin's form fields for saving + * + * @access public + * @param array Plugin data for save + * @return string Error message + */ + public function processAdminForm( &$save_data_array ) + { + return ''; + } + + /** + * Update timestamp for report + * + * @access public + * @param array New reports + * @param array New members cache + * @return boolean + */ + public function updateReportsTimestamp( $new_reports, &$new_members_cache ) + { + return true; + } + + /** + * Get report permissions (only supermods can moderate calendar) + * + * @access public + * @param string Type of perms to check + * @param array Permissions data + * @param array group ids + * @param string Special permissions + * @return boolean + */ + public function getReportPermissions( $check, $com_dat, $group_ids, &$to_return ) + { + if( $this->_extra['report_bypass'] == 0 || $this->memberData['g_is_supmod'] == 1 ) + { + return true; + } + else + { + return false; + } + } + + /** + * Show the report form for this module + * + * @access public + * @param array Application data + * @return string HTML form information + */ + public function reportForm( $com_dat ) + { + $this->registry->class_localization->loadLanguageFile( array( 'public_calendar' ), 'calendar' ); + + $eventid = intval($this->request['event_id']); + $comment = intval($this->request['comment_id']); + $st = intval($this->request['st']); + + if( ! $eventid ) + { + $this->registry->output->showError( 'reports_no_event', 10177 ); + } + + /** + * Load event + */ + $event = $this->DB->buildAndFetch( array( + 'select' => 'e.*', + 'from' => array( 'cal_events' => 'e' ), + 'where' => 'e.event_id=' . $eventid, + 'add_join' => array( + array( + 'select' => 'c.*', + 'from' => array( 'cal_calendars' => 'c' ), + 'where' => 'c.cal_id=e.event_calendar_id', + 'type' => 'left', + ) + ) + ) ); + + /* Loop through the cache and build calendar jump */ + if ( count( $this->caches['calendars'] ) AND is_array( $this->caches['calendars'] ) ) + { + foreach( $this->caches['calendars'] as $cal_id => $cal ) + { + if( $cal_id == $event['event_calendar_id'] ) + { + /* Got a perm */ + if( ! $this->registry->permissions->check( 'view', $cal ) ) + { + $this->registry->output->showError( 'reports_no_event', 10178 ); + } + } + } + } + + $ex_form_data = array( + 'event_id' => $eventid, + 'ctyp' => 'calendar', + 'title' => $comment ? sprintf( $this->lang->words['rc_comment_pre'], $event['event_title'] ) : $event['event_title'], + 'comment' => $comment, + 'st' => $st, + ); + + $this->registry->output->setTitle( $comment ? $this->lang->words['report_cal_pagec'] : $this->lang->words['report_cal_page'] ); + $this->registry->output->addNavigation( $comment ? sprintf( $this->lang->words['rc_comment_pre'], $event['event_title'] ) : $event['event_title'], "app=calendar&module=calendar&section=view&do=showevent&event_id={$event['event_id']}" . ( $comment ? "&st={$st}#comment_{$comment}" : '' ), $event['event_title_seo'], 'cal_event' ); + $this->registry->output->addNavigation( $comment ? $this->lang->words['report_cal_pagec'] : $this->lang->words['report_cal_page'], '' ); + + $this->lang->words['report_basic_title'] = $this->lang->words['report_cal_title']; + $this->lang->words['report_basic_url_title'] = $this->lang->words['report_cal_title']; + $this->lang->words['report_basic_enter'] = $this->lang->words['report_cal_msg']; + + $url = $this->registry->output->buildSEOUrl( "app=calendar&module=calendar&section=view&do=showevent&event_id={$event['event_id']}" . ( $comment ? "&st={$st}#comment_{$comment}" : '' ), 'public', $event['event_title_seo'], 'cal_event' ); + + return $this->registry->getClass('reportLibrary')->showReportForm( $comment ? sprintf( $this->lang->words['rc_comment_pre'], $event['event_title'] ) : $event['event_title'], $url, $ex_form_data ); + } + + /** + * Get section and link + * + * @access public + * @param array Report data + * @return array Section/link + */ + public function giveSectionLinkTitle( $report_row ) + { + $_event = $this->DB->buildAndFetch( array( 'select' => 'event_calendar_id', 'from' => 'cal_events', 'where' => 'event_id=' . intval($report_row['exdat1']) ) ); + + ipsRegistry::_loadAppCoreVariables( 'calendar' ); + $calendarCache = $this->cache->getCache('calendars'); + + return array( + 'title' => $calendarCache[ $_event['event_calendar_id'] ]['cal_title'], + 'url' => "/index.php?app=calendar&module=calendar&section=view&cal_id={$_event['event_calendar_id']}", + 'seo_title' => $calendarCache[ $_event['event_calendar_id'] ]['cal_title_seo'], + 'seo_template' => 'cal_calendar', + ); + } + + /** + * Process a report and save the data appropriate + * + * @access public + * @param array Report data + * @return array Data from saving the report + */ + public function processReport( $com_dat ) + { + $eventid = intval($this->request['event_id']); + $comment = intval($this->request['comment']); + $st = intval($this->request['st']); + + if( ! $eventid ) + { + $this->registry->output->showError( 'reports_no_event', 10179 ); + } + + /** + * Load event + */ + $event = $this->DB->buildAndFetch( array( + 'select' => 'e.*', + 'from' => array( 'cal_events' => 'e' ), + 'where' => 'e.event_id=' . $eventid, + 'add_join' => array( + array( + 'select' => 'c.*', + 'from' => array( 'cal_calendars' => 'c' ), + 'where' => 'c.cal_id=e.event_calendar_id', + 'type' => 'left', + ) + ) + ) ); + + /* Loop through the cache and build calendar jump */ + if ( count( $this->caches['calendars'] ) AND is_array( $this->caches['calendars'] ) ) + { + foreach( $this->caches['calendars'] as $cal_id => $cal ) + { + if( $cal_id == $event['event_calendar_id'] ) + { + /* Got a perm */ + if( ! $this->registry->permissions->check( 'view', $cal ) ) + { + $this->registry->output->showError( 'reports_no_event', 10180 ); + } + } + } + } + + $url = "app=calendar&module=calendar§ion=view&do=showevent&event_id={$event['event_id']}"; + + if( $comment ) + { + $url .= '&st=' . $st . '#comment_' . $comment; + } + + $return_data = array(); + $a_url = str_replace("&", "&", $url); + $uid = md5( 'cal_' . $eventid . $comment . '_' . $com_dat['com_id'] ); + $status = array(); + + $this->DB->build( array( 'select' => 'status, is_new, is_complete', + 'from' => 'rc_status', + 'where' => "is_new=1 OR is_complete=1", + ) ); + $this->DB->execute(); + + while( $row = $this->DB->fetch() ) + { + if( $row['is_new'] == 1 ) + { + $status['new'] = $row['status']; + } + elseif( $row['is_complete'] == 1 ) + { + $status['complete'] = $row['status']; + } + } + + $this->DB->build( array( 'select' => 'id', 'from' => 'rc_reports_index', 'where' => "uid='{$uid}'" ) ); + $this->DB->execute(); + + if( $this->DB->getTotalRows() == 0 ) + { + $built_report_main = array( + 'uid' => $uid, + 'title' => $this->request['title'], + 'status' => $status['new'], + 'url' => '/index.php?' . $a_url, + 'seoname' => $event['event_title_seo'], + 'seotemplate' => 'cal_event', + 'rc_class' => $com_dat['com_id'], + 'updated_by' => $this->memberData['member_id'], + 'date_updated' => time(), + 'date_created' => time(), + 'exdat1' => $event['event_id'], + 'exdat2' => $comment, + 'exdat3' => $st + ); + + $this->DB->insert( 'rc_reports_index', $built_report_main ); + $rid = $this->DB->getInsertId(); + } + else + { + $the_report = $this->DB->fetch(); + $rid = $the_report['id']; + $this->DB->update( 'rc_reports_index', array( 'date_updated' => time(), 'status' => $status['new'] ), "id='{$rid}'" ); + } + + IPSText::getTextClass('bbcode')->parse_bbcode = 1; + IPSText::getTextClass('bbcode')->parse_html = 0; + IPSText::getTextClass('bbcode')->parse_emoticons = 1; + IPSText::getTextClass('bbcode')->parse_nl2br = 1; + IPSText::getTextClass('bbcode')->parsing_section = 'reports'; + + $build_report = array( + 'rid' => $rid, + 'report' => IPSText::getTextClass('bbcode')->preDbParse( $this->request['message'] ), + 'report_by' => $this->memberData['member_id'], + 'date_reported' => time(), + ); + + $this->DB->insert( 'rc_reports', $build_report ); + + $reports = $this->DB->buildAndFetch( array( 'select' => 'COUNT(*) as total', 'from' => 'rc_reports', 'where' => "rid='{$rid}'" ) ); + + $this->DB->update( 'rc_reports_index', array( 'num_reports' => $reports['total'] ), "id='{$rid}'" ); + + $return_data = array( + 'REDIRECT_URL' => $a_url, + 'REPORT_INDEX' => $rid, + 'SAVED_URL' => '/index.php?' . $url, + 'REPORT' => $build_report['report'], + 'SEOTITLE' => $event['event_title_seo'], + 'TEMPLATE' => 'cal_event', + ); + + return $return_data; + } + + /** + * Accepts an array of data from rc_reports_index and returns an array formatted nearly identical to processReport() + * + * @param array Report data + * @return array Formatted report data + */ + public function formatReportData( $report_data ) + { + return array( + 'REDIRECT_URL' => $report_data['url'], + 'REPORT_INDEX' => $report_data['id'], + 'SAVED_URL' => str_replace( '&', '&', $report_data['url'] ), + 'REPORT' => '', + 'SEOTITLE' => $report_data['seoname'], + 'TEMPLATE' => 'cal_event', + ); + } + + /** + * Where to send user after report is submitted + * + * @access public + * @param array Report data + * @return @e void + */ + public function reportRedirect( $report_data ) + { + $this->registry->output->redirectScreen( $this->lang->words['report_sending'], $this->settings['base_url'] . $report_data['REDIRECT_URL'], $report_data['SEOTITLE'], $report_data['TEMPLATE'] ); + } + + /** + * Retrieve list of users to send notifications to + * + * @access public + * @param string Group ids + * @param array Report data + * @return array Array of users to PM/Email + */ + public function getNotificationList( $group_ids, $report_data ) + { + $notify = array(); + + $this->DB->build( array( + 'select' => 'mem.member_id, mem.members_display_name as name, mem.language, mem.members_disable_pm, mem.email, mem.member_group_id', + 'from' => array( 'members' => 'mem' ), + 'where' => 'mem.member_group_id IN(' . $group_ids . ')', + 'add_join' => array( + array( + 'select' => 'noti.*', + 'from' => array( 'rc_modpref' => 'noti' ), + 'where' => 'mem.member_id=noti.mem_id', + ) + ) + ) ); + $this->DB->execute(); + + if( $this->DB->getTotalRows() > 0 ) + { + while( $row = $this->DB->fetch() ) + { + $notify[] = $row; + } + } + + return $notify; + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/reportPlugins/index.html b/upload/admin/applications_addon/ips/calendar/extensions/reportPlugins/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/reportPlugins/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/reputation.php b/upload/admin/applications_addon/ips/calendar/extensions/reputation.php new file mode 100644 index 00000000..f00fc7f5 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/reputation.php @@ -0,0 +1,239 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * Reputation configuration for application + * Last Updated: $Date: 2012-09-27 11:58:26 -0400 (Thu, 27 Sep 2012) $ + * + * + * @author $author$ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Forums + * @link http://www.invisionpower.com + * @version $Rev: 11387 $ + */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +class reputation_calendar +{ + /** + * Constructor + */ + public function __construct() + { + /* Init attachments */ + $classname = IPSLib::loadLibrary( IPSLib::getAppDir( 'core' ) . '/sources/classes/attach/class_attach.php', 'class_attach' ); + $this->class_attach = new $classname( ipsRegistry::instance() ); + ipsRegistry::getClass('class_localization')->loadLanguageFile( array( 'public_topic' ), 'forums' ); + $this->class_attach->type = 'event'; + $this->class_attach->init(); + $this->class_attach->getUploadFormSettings(); + + $classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/class_reputation_cache.php', 'classReputationCache' ); + ipsRegistry::setClass( 'repCache', new $classToLoad() ); + } + + /** + * Database Query to get results + * + * @param string 'given' if we want to return items as user has liked + * 'received' if we want to fetch items a user has posted that others have liked + * NULL to get highest rated + * @param array Member this applies to + * NULL to get highest rated + * + * @return array Parameters to pass to ipsRegistry::DB()->build + * Must return at least the data from reputation_index + * limit and order will be applied automatically + */ + public function fetch( $type=NULL, $member=NULL ) + { + //----------------------------------------- + // Get our allowed calendars + //----------------------------------------- + + $allowedCalendarIds = array(); + ipsRegistry::DB()->build( array( 'select' => 'perm_type_id as calendar_id', 'from' => 'permission_index', 'where' => "app='calendar' AND " . ipsRegistry::DB()->buildRegexp( "perm_view", ipsRegistry::member()->perm_id_array ) ) ); + ipsRegistry::DB()->execute(); + while( $r = ipsRegistry::DB()->fetch() ) + { + $allowedCalendarIds[] = $r['calendar_id']; + } + + //----------------------------------------- + // Return query + //----------------------------------------- + + $userGiving = 'r'; + $extraWhere = ''; + $extraJoin = array(); + + if ( $type == 'most' ) + { + return array( 'type' => 'event_id', + + /* Used in first query to fetch type_ids */ + 'inner' => array( 'select' => 'e.event_id', + 'from' => array( 'cal_events' => 'e' ), + 'where' => ( empty( $allowedCalendarIds ) ? '1=0' : ipsRegistry::DB()->buildWherePermission( $allowedCalendarIds, 'e.event_calendar_id', FALSE ) ) ), + /* Used in second query to fetch actual data */ + 'joins' => array( array( 'select' => 'rc.*', + 'from' => array( 'reputation_cache' => 'rc' ), + 'where' => "rc.app='calendar' AND rc.type='event_id' AND rc.type_id=r.type_id" ), + array( 'select' => 'c.*', + 'from' => array( 'cal_event_comments' => 'c' ), + 'where' => 'r.type="comment_id" AND r.type_id=c.comment_id', + 'type' => 'left' ), + array( 'select' => 'e.*', + 'from' => array( 'cal_events' => 'e' ), + 'where' => 'e.event_id = IFNULL(c.comment_eid, r.type_id)' ) ) ); + } + else + { + if ( $type !== NULL ) + { + $extraWhere = ( ( $type == 'given' ) ? "r.member_id={$member['member_id']}" : "( ( r.type='event_id' AND e.event_member_id={$member['member_id']} ) OR ( r.type='comment_id' AND c.comment_mid={$member['member_id']} ) )" ) . ' AND '; + } + else + { + $userGiving = 'r2'; + $extraJoin = array( array( + 'from' => array( 'reputation_index' => 'r2' ), + 'where' => "r2.app=r.app AND r2.type=r.type AND r2.type_id=r.type_id AND r2.member_id=" . ipsRegistry::member()->getProperty('member_id') + ) ); + } + + return array( + 'select' => "r.*, rc.*, {$userGiving}.member_id as repUserGiving, e.*, c.*", // we have to do aliases on some of them due to duplicate column names + 'from' => array( 'reputation_index' => 'r'), + 'add_join' => array_merge( $extraJoin, array( + array( + 'from' => array( 'reputation_cache' => 'rc' ), + 'where' => "rc.app=r.app AND rc.type=r.type AND rc.type_id=r.type_id" + ), + array( + 'from' => array( 'cal_event_comments' => 'c' ), + 'where' => 'r.type="comment_id" AND r.type_id=c.comment_id', + 'type' => 'left' + ), + array( + 'from' => array( 'cal_events' => 'e' ), + 'where' => 'e.event_id = IFNULL(c.comment_eid, r.type_id)', + 'type' => 'left' + ), + ) ), + 'where' => "r.app='calendar' AND " . // belongs to this app + $extraWhere . // is for this member + " e.event_id<>0 AND " . // is valid + ( empty( $allowedCalendarIds ) ? '1=0' : ipsRegistry::DB()->buildWherePermission( $allowedCalendarIds, 'e.event_calendar_id', FALSE ) ), // we have permission to view + ); + } + } + + /** + * Process Results + * + * @param array Row from database using query specified in fetch() + * @return array Same data with any additional processing necessary + */ + public function process( $row ) + { + if ( empty($row['comment_id']) ) + { + $idField = 'event_id'; + $authorField = 'event_member_id'; + $contentField = 'event_content'; + $parseSmilies = intval( $row['event_smilies'] ); + } + else + { + $idField = 'comment_id'; + $authorField = 'comment_mid'; + $contentField = 'comment_text'; + $parseSmilies = 1; + } + + /* Build poster's display data */ + $member = $row[ $authorField ] ? IPSMember::load( $row[ $authorField ], 'profile_portal,pfields_content,sessions,groups', 'id' ) : IPSMember::setUpGuest(); + $row = array_merge( $row, IPSMember::buildDisplayData( $member, array( 'reputation' => 0, 'warn' => 0 ) ) ); + + /* Parse BBCode */ + IPSText::getTextClass('bbcode')->parse_smilies = $parseSmilies; + IPSText::getTextClass('bbcode')->parse_html = 0; + IPSText::getTextClass('bbcode')->parse_nl2br = 1; + IPSText::getTextClass('bbcode')->parse_bbcode = 1; + IPSText::getTextClass('bbcode')->parsing_section = 'calendar'; + IPSText::getTextClass('bbcode')->parsing_mgroup = $member['member_group_id']; + IPSText::getTextClass('bbcode')->parsing_mgroup_others = $member['mgroup_others']; + + $row[ $contentField ] = IPSText::getTextClass('bbcode')->preDisplayParse( $row[ $contentField ] ); + + /* Parse attachments */ + $messageHTML = array( $row[ $idField ] => $row[ $contentField ] ); + $attachHTML = $this->class_attach->renderAttachments( $messageHTML, array( $row[ $idField ] ) ); + if( is_array( $attachHTML ) AND count( $attachHTML ) ) + { + /* Get rid of any lingering attachment tags */ + if ( stristr( $attachHTML[ $row[ $idField ] ]['html'], "[attachment=" ) ) + { + $attachHTML[ $row[ $idField ] ]['html'] = IPSText::stripAttachTag( $attachHTML[ $row[ $idField ] ]['html'] ); + } + $row[ $contentField ] = $attachHTML[ $row[ $idField ] ]['html'] . $attachHTML[ $row[ $idField ] ]['attachmentHtml']; + } + + /* Get rep buttons */ + if ( $row['repUserGiving'] == ipsRegistry::member()->getProperty('member_id') ) + { + $row['has_given_rep'] = $row['rep_rating']; + } + $row['repButtons'] = ipsRegistry::getClass('repCache')->getLikeFormatted( array( 'app' => 'calendar', 'type' => $idField, 'id' => $row[ $idField ], 'rep_like_cache' => $row['rep_like_cache'] ) ); + + /* Return */ + return $row; + } + + /** + * Display Results + * + * @param array Results after being processed + * @param string HTML + */ + public function display( $results ) + { + ipsRegistry::getClass('class_localization')->loadLanguageFile( 'public_calendar', 'calendar' ); + + return ipsRegistry::getClass('output')->getTemplate('profile')->tabReputation_calendar( $results ); + } +} + +$rep_author_config = array( + 'comment_id' => array( 'column' => 'comment_mid', 'table' => 'cal_event_comments' ), + 'event_id' => array( 'column' => 'event_member_id', 'table' => 'cal_events' ), + ); + +$rep_log_joins = array( + array( + 'from' => array( 'cal_event_comments' => 'c' ), + 'where' => 'r.type="comment_id" AND r.type_id=c.comment_id AND r.app="calendar"', + 'type' => 'left' + ), + array( + 'select' => 'e.event_title as repContentTitle, e.event_id as repContentID', + 'from' => array( 'cal_events' => 'e' ), + 'where' => 'e.event_id = IFNULL(c.comment_eid, r.type_id)', + 'type' => 'left' + ), + ); + +$rep_log_where = "r.member_id=%d"; + +$rep_log_link = 'app=calendar&module=calendar&section=view&do=showevent&event_id=%d#comment_%d'; \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/rssOutput.php b/upload/admin/applications_addon/ips/calendar/extensions/rssOutput.php new file mode 100644 index 00000000..20b86983 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/rssOutput.php @@ -0,0 +1,123 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * RSS output plugin :: calendar + * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $ + * + * + * @author $Author: bfarber $ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Calendar + * @link http://www.invisionpower.com + * @since 6/24/2008 + * @version $Revision: 10721 $ + */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +class rss_output_calendar +{ + /** + * Expiration date + * + * @var integer Expiration timestamp + */ + protected $expires = 0; + + /** + * Grab the RSS links + * + * @return string RSS document + */ + public function getRssLinks() + { + $return = array(); + $_calendarCache = ipsRegistry::cache()->getCache('calendars'); + + if( is_array($_calendarCache) AND count($_calendarCache) ) + { + foreach( $_calendarCache as $r ) + { + if( ! ipsRegistry::getClass( 'permissions' )->check( 'view', $r ) || !$r['cal_rss_export'] ) + { + continue; + } + + $return[] = array( 'title' => $r['cal_title'], 'url' => ipsRegistry::getClass('output')->formatUrl( ipsRegistry::$settings['board_url'] . "/index.php?app=core&module=global&section=rss&type=calendar&id=" . $r['cal_id'], '%%' . $r['cal_title'] . '%%', 'section=rss2' ) ); + } + } + + return $return; + } + + /** + * Grab the RSS document content and return it + * + * @return string RSS document + */ + public function returnRSSDocument() + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $cal_id = intval( ipsRegistry::$request['id'] ); + $rss_data = array(); + $to_print = ''; + $this->expires = time(); + $_calendarCache = ipsRegistry::cache()->getCache('calendars'); + + //----------------------------------------- + // Get RSS export + //----------------------------------------- + + $rss_data = $_calendarCache[ $cal_id ]; + + //----------------------------------------- + // Got one? + //----------------------------------------- + + if ( $rss_data['cal_id'] AND $rss_data['cal_rss_export'] ) + { + //----------------------------------------- + // Correct expires time + //----------------------------------------- + + $this->expires = $rss_data['cal_rss_update_last'] + ( $rss_data['cal_rss_update'] * 60 ); + + //----------------------------------------- + // Need to recache? + //----------------------------------------- + + if ( !$rss_data['cal_rss_cache'] OR ( time() - ( $rss_data['cal_rss_update'] * 60 ) ) > $rss_data['cal_rss_update_last'] ) + { + $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir('calendar') . '/sources/cache.php', 'calendar_cache', 'calendar' ); + $rss_export = new $classToLoad( ipsRegistry::instance() ); + + return $rss_export->rebuildCalendarRSSCache( $rss_data['cal_id'] ); + } + else + { + return $rss_data['cal_rss_cache']; + } + } + } + + /** + * Grab the RSS document expiration timestamp + * + * @return integer Expiration timestamp + */ + public function grabExpiryDate() + { + return $this->expires ? $this->expires : time(); + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/search/config.php b/upload/admin/applications_addon/ips/calendar/extensions/search/config.php new file mode 100644 index 00000000..9ae0a4a4 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/search/config.php @@ -0,0 +1,37 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * Config file + * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $ + * + * + * @author $author$ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Calendar + * @link http://www.invisionpower.com + * @version $Rev: 10721 $ + */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +/* Can search with this app */ +$CONFIG['can_search'] = 1; + +/* Can view new content with this app */ +$CONFIG['can_viewNewContent'] = 1; +$CONFIG['can_vnc_unread_content'] = 0; +$CONFIG['can_vnc_filter_by_followed'] = 1; + +/* Can fetch user generated content */ +$CONFIG['can_userContent'] = 1; + +/* Content types for 'follow', default one first */ +$CONFIG['followContentTypes'] = array( 'events', 'calendars' ); \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/search/engines/index.html b/upload/admin/applications_addon/ips/calendar/extensions/search/engines/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/search/engines/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/search/engines/sql.php b/upload/admin/applications_addon/ips/calendar/extensions/search/engines/sql.php new file mode 100644 index 00000000..40b20aea --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/search/engines/sql.php @@ -0,0 +1,400 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * Basic Calendar Search + * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $ + * + * + * @author $Author: bfarber $ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Calendar + * @link http://www.invisionpower.com + * @version $Rev: 10721 $ + */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +class search_engine_calendar extends search_engine +{ + /** + * Calendars we have access to + * + * @var array + */ + protected $calendars = array(); + + /** + * Constructor + */ + public function __construct( ipsRegistry $registry ) + { + parent::__construct( $registry ); + } + + /** + * Perform a search. + * Returns an array of a total count (total number of matches) + * and an array of IDs ( 0 => 1203, 1 => 928, 2 => 2938 ).. matching the required number based on pagination. The ids returned would be based on the filters and type of search + * + * So if we had 1000 replies, and we are on page 2 of 25 per page, we'd return 25 items offset by 25 + * + * @return array + */ + public function search() + { + //----------------------------------------- + // Init + //----------------------------------------- + + $sort_by = IPSSearchRegistry::get('in.search_sort_by'); + $sort_order = IPSSearchRegistry::get('in.search_sort_order'); + $search_term = IPSSearchRegistry::get('in.clean_search_term'); + $sortKey = ''; + $rows = array(); + + switch( $sort_by ) + { + default: + case 'date': + $sortKey = 'c.event_start_date'; + break; + case 'title': + $sortKey = 'c.event_title'; + break; + } + + //----------------------------------------- + // Get calendars + //----------------------------------------- + + if( !count($this->calendars) ) + { + $this->DB->build( array( 'select' => 'perm_type_id as calendar_id', 'from' => 'permission_index', 'where' => "app='calendar' AND " . $this->DB->buildRegexp( "perm_view", $this->member->perm_id_array ) ) ); + $this->DB->execute(); + + while( $r = $this->DB->fetch() ) + { + $this->calendars[] = $r['calendar_id']; + } + } + + //----------------------------------------- + // Get count + //----------------------------------------- + + $where = $this->_buildWhereStatement( $search_term ); + + $count = $this->DB->buildAndFetch( + array( + 'select' => 'COUNT(*) as total_results', + 'from' => 'cal_events', + 'where' => str_replace( 'c.', '', $where ), + ) ); + + if( $count['total_results'] ) + { + //----------------------------------------- + // Perform search + //----------------------------------------- + + $this->DB->build( array( + 'select' => "c.*", + 'from' => array( 'cal_events' => 'c' ), + 'where' => $where, + 'order' => $sortKey . ' ' . $sort_order, + 'limit' => array( IPSSearchRegistry::get('in.start'), IPSSearchRegistry::get('opt.search_per_page') ), + 'add_join' => array( + array( + 'select' => 'mem.members_display_name, mem.member_group_id, mem.mgroup_others', + 'from' => array( 'members' => 'mem' ), + 'where' => "mem.member_id=c.event_member_id", + 'type' => 'left', + ), + ) + ) ); + $this->DB->execute(); + + while( $r = $this->DB->fetch() ) + { + $rows[] = $r; + } + } + + //----------------------------------------- + // Return results + //----------------------------------------- + + return array( 'count' => $count['total_results'], 'resultSet' => $rows ); + } + + /** + * Perform the viewNewContent search + * Populates $this->_count and $this->_results + * + * @access public + * @return array + */ + public function viewNewContent() + { + //----------------------------------------- + // Init + //----------------------------------------- + + IPSSearchRegistry::set('in.search_sort_by', 'date' ); + IPSSearchRegistry::set('in.search_sort_order', 'desc' ); + IPSSearchRegistry::set('opt.searchType', 'titles' ); + IPSSearchRegistry::set('opt.noPostPreview', true ); + + //----------------------------------------- + // Set time limit + //----------------------------------------- + + if ( IPSSearchRegistry::get('in.period_in_seconds') !== false ) + { + $this->search_begin_timestamp = ( IPS_UNIX_TIME_NOW - IPSSearchRegistry::get('in.period_in_seconds') ); + } + else + { + $this->search_begin_timestamp = intval( $this->memberData['last_visit'] ) ? intval( $this->memberData['last_visit'] ) : IPS_UNIX_TIME_NOW; + } + + //----------------------------------------- + // Only content we are following? + //----------------------------------------- + + if ( IPSSearchRegistry::get('in.vncFollowFilterOn' ) AND $this->memberData['member_id'] ) + { + require_once( IPS_ROOT_PATH . 'sources/classes/like/composite.php' );/*noLibHook*/ + $like = classes_like::bootstrap( 'calendar', 'events' ); + + $followedEvents = $like->getDataByMemberIdAndArea( $this->memberData['member_id'] ); + $followedEvents = ( $followedEvents === null ) ? array() : array_keys( $followedEvents ); + + if( !count($followedEvents) ) + { + return array( 'count' => 0, 'resultSet' => array() ); + } + else + { + $this->whereConditions['AND'][] = "c.event_id IN(" . implode( ',', $followedEvents ) . ")"; + } + } + + //----------------------------------------- + // Only content we have participated in? + //----------------------------------------- + + if( IPSSearchRegistry::get('in.userMode') ) + { + switch( IPSSearchRegistry::get('in.userMode') ) + { + default: + case 'all': + $_eventIds = $this->_getEventIdsFromComments(); + + if( count($_eventIds) ) + { + $this->whereConditions['AND'][] = "(c.event_member_id=" . $this->memberData['member_id'] . " OR c.event_id IN(" . implode( ',', $_eventIds ) . "))"; + } + else + { + $this->whereConditions['AND'][] = "c.event_member_id=" . $this->memberData['member_id']; + } + break; + case 'title': + $this->whereConditions['AND'][] = "c.event_member_id=" . $this->memberData['member_id']; + break; + } + } + + return $this->search(); + } + + /** + * Find events we have commented on + * + * @return array + */ + protected function _getEventIdsFromComments() + { + $ids = array(); + + $this->DB->build( array( + 'select' => $this->DB->buildDistinct('comment_eid'), + 'from' => 'cal_event_comments', + 'where' => 'comment_approved=1 AND comment_mid=' . $this->memberData['member_id'], + 'limit' => array( 0, 200 ) + ) ); + $this->DB->execute(); + + while( $r = $this->DB->fetch() ) + { + $ids[] = $r['comment_eid']; + } + + return $ids; + } + + /** + * Perform the viewUserContent search + * Populates $this->_count and $this->_results + * + * @access public + * @return nothin' + */ + public function viewUserContent( $member ) + { + //----------------------------------------- + // Set limits + //----------------------------------------- + + $this->search_begin_timestamp = time() - ( 86400 * intval( $this->settings['search_ucontent_days'] ) ); + $this->whereConditions['AND'][] = "c.event_member_id=" . intval( $member['member_id'] ); + + //----------------------------------------- + // Get count + //----------------------------------------- + + return $this->search(); + } + + /** + * Builds the where portion of a search string + * + * @param string $search_term The string to use in the search + * @return string + */ + protected function _buildWhereStatement( $search_term ) + { + //----------------------------------------- + // Init + //----------------------------------------- + + $where_clause = array(); + + //----------------------------------------- + // Search term + //----------------------------------------- + + if( $search_term ) + { + $search_term = str_replace( '"', '"', $search_term ); + + switch( IPSSearchRegistry::get('opt.searchType') ) + { + case 'both': + default: + $where_clause[] = '(' . $this->DB->buildSearchStatement( 'c.event_title', $search_term, true, false, ipsRegistry::$settings['use_fulltext'] ) . ' OR ' . $this->DB->buildSearchStatement( 'c.event_content', $search_term, true, false, ipsRegistry::$settings['use_fulltext'] ) . ')'; + break; + + case 'titles': + $where_clause[] = $this->DB->buildSearchStatement( 'c.event_title', $search_term, true, false, ipsRegistry::$settings['use_fulltext'] ); + break; + + case 'content': + $where_clause[] = $this->DB->buildSearchStatement( 'c.event_content', $search_term, true, false, ipsRegistry::$settings['use_fulltext'] ); + break; + } + } + + //----------------------------------------- + // Date restriction + //----------------------------------------- + + if( $this->search_begin_timestamp && $this->search_end_timestamp ) + { + $where_clause[] = $this->DB->buildBetween( $this->DB->buildUnixTimestamp( "c.event_start_date" ), $this->search_begin_timestamp, $this->search_end_timestamp ); + } + else + { + if( $this->search_begin_timestamp ) + { + $where_clause[] = $this->DB->buildUnixTimestamp( "c.event_start_date" ) . " > {$this->search_begin_timestamp}"; + } + + if( $this->search_end_timestamp ) + { + $where_clause[] = $this->DB->buildUnixTimestamp( "c.event_start_date" ) . " < {$this->search_end_timestamp}"; + } + } + + //----------------------------------------- + // Other conditions + //----------------------------------------- + + if( isset( $this->whereConditions['AND'] ) && count( $this->whereConditions['AND'] ) ) + { + $where_clause = array_merge( $where_clause, $this->whereConditions['AND'] ); + } + + if( isset( $this->whereConditions['OR'] ) && count( $this->whereConditions['OR'] ) ) + { + $where_clause[] = '( ' . implode( ' OR ', $this->whereConditions['OR'] ) . ' )'; + } + + //----------------------------------------- + // Permissions + //----------------------------------------- + + if( !$this->memberData['g_is_supmod'] ) + { + $where_clause[] = 'c.event_approved=1'; + } + else + { + $where_clause[] = 'c.event_approved IN (0,1)'; + } + + $where_clause[] = "c.event_calendar_id IN(" . ( count($this->calendars) ? implode( ',', $this->calendars ) : 0 ) . ")"; + $where_clause[] = "((c.event_private=1 AND c.event_member_id=" . $this->memberData['member_id'] . ") OR (c.event_private=0 AND " . $this->DB->buildRegexp( "c.event_perms", $this->member->perm_id_array ) . "))"; + + //----------------------------------------- + // Return + //----------------------------------------- + + return implode( " AND ", $where_clause ); + } + + /** + * Remap standard columns (Apps can override ) + * + * @param string $column sql table column for this condition + * @return string column + */ + public function remapColumn( $column ) + { + $column = $column == 'member_id' ? 'c.event_member_id' : $column; + + return $column; + } + + /** + * Returns an array used in the searchplugin's setCondition method + * + * @param array $data Array of forums to view + * @return array Array with column, operator, and value keys, for use in the setCondition call + */ + public function buildFilterSQL( $data ) + { + return array(); + } + + /** + * Can handle boolean searching + * + * @access public + * @return boolean + */ + public function isBoolean() + { + return true; + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/search/form.php b/upload/admin/applications_addon/ips/calendar/extensions/search/form.php new file mode 100644 index 00000000..b129ff97 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/search/form.php @@ -0,0 +1,48 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * Returns HTML for the form (optional class, not required) + * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $ + * + * + * @author $author$ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Calendar + * @link http://www.invisionpower.com + * @version $Rev: 10721 $ + */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +class search_form_calendar +{ + /** + * Constructor + * + * @return @e void + */ + public function __construct() + { + } + + /** + * Return sort drop down + * + * @return array + */ + public function fetchSortDropDown() + { + $array = array( 'date' => ipsRegistry::instance()->getClass('class_localization')->words['s_search_type_0'], + 'title' => ipsRegistry::instance()->getClass('class_localization')->words['forum_sort_title'] ); + + return $array; + } +} diff --git a/upload/admin/applications_addon/ips/calendar/extensions/search/format.php b/upload/admin/applications_addon/ips/calendar/extensions/search/format.php new file mode 100644 index 00000000..c3fdca23 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/search/format.php @@ -0,0 +1,257 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * Formats calendar search results + * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $ + * + * + * @author $author$ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Calendar + * @link http://www.invisionpower.com + * @version $Rev: 10721 $ + */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +class search_format_calendar extends search_format +{ + /** + * Constructor + * + * @param object ipsRegistry + * @return @e void + */ + public function __construct( ipsRegistry $registry ) + { + $registry->class_localization->loadLanguageFile( array( 'public_calendar' ), 'calendar' ); + + parent::__construct( $registry ); + } + + /** + * Parse search results + * + * @access private + * @param array $r Search result + * @return array $html Blocks of HTML + */ + public function parseAndFetchHtmlBlocks( $rows ) + { + return parent::parseAndFetchHtmlBlocks( $rows ); + } + + /** + * Formats the forum search result for display + * + * @access public + * @param array $event Array of data + * @return mixed Formatted content, ready for display, or array containing a $sub section flag, and content + */ + public function formatContent( $event ) + { + //----------------------------------------- + // Times and dates + //----------------------------------------- + + $event['_start_time'] = strtotime( $event['event_start_date'] ); + $event['_end_time'] = ( $event['event_end_date'] AND $event['event_end_date'] != '0000-00-00 00:00:00' ) ? strtotime( $event['event_end_date'] ) : 0; + + if( !$event['event_all_day'] ) + { + if( $this->memberData['member_id'] AND $this->memberData['time_offset'] ) + { + $event['_start_time'] = $event['_start_time'] + ( $this->memberData['time_offset'] * 3600 ); + } + else if( !$this->memberData['member_id'] AND $this->settings['time_offset'] ) + { + $event['_start_time'] = $event['_start_time'] + ( $this->settings['time_offset'] * 3600 ); + } + } + + if( !$event['event_all_day'] ) + { + if( $this->memberData['member_id'] AND $this->memberData['time_offset'] ) + { + $event['_end_time'] = $event['_end_time'] ? ( $event['_end_time'] + ( $this->memberData['time_offset'] * 3600 ) ) : 0; + } + else if( !$this->memberData['member_id'] AND $this->settings['time_offset'] ) + { + $event['_end_time'] = $event['_end_time'] ? ( $event['_end_time'] + ( $this->settings['time_offset'] * 3600 ) ) : 0; + } + } + + $event['_start_date'] = gmstrftime( $this->settings['clock_date'], $event['_start_time'] ); + $event['_event_time'] = ''; + $event['_event_etime'] = ''; + + if( !$event['event_all_day'] ) + { + $event['_event_time'] = ltrim( gmstrftime( '%I:%M %p', $event['_start_time'] ), '0' ); + $event['_event_etime'] = $event['_end_time'] ? ltrim( gmstrftime( '%I:%M %p', $event['_end_time'] ), '0' ) : ':00'; + + if( strpos( ':00', $event['_event_time'] ) === 0 OR gmstrftime( '%H:%M', $event['_start_time'] ) == '00:00' ) + { + $event['_event_time'] = ''; + } + + if( strpos( ':00', $event['_event_etime'] ) === 0 OR gmstrftime( '%H:%M', $event['_end_time'] ) == '00:00' ) + { + $event['_event_etime'] = ''; + } + } + + //----------------------------------------- + // Event type + //----------------------------------------- + + $type = $this->lang->words['se_normal']; + $ends = ''; + + if( !$event['event_recurring'] AND $event['_end_time'] AND gmstrftime( $this->settings['clock_date'], $event['_end_time'] ) != $event['_start_date'] ) + { + $type = $this->lang->words['se_range']; + $ends = sprintf( $this->lang->words['se_ends'], gmstrftime( $this->settings['clock_date'], $event['_end_time'] ) ); + } + else if ( $event['event_recurring'] ) + { + $type = $this->lang->words['se_recur']; + $ends = sprintf( $this->lang->words['se_ends'], gmstrftime( $this->settings['clock_date'], $event['_end_time'] ) ); + } + + //----------------------------------------- + // Output + //----------------------------------------- + + return array( ipsRegistry::getClass( 'output' )->getTemplate( 'calendar' )->calEventSearchResult( $event, IPSSearchRegistry::get('opt.searchType') == 'titles' ? true : false, $type, $ends ), 0 ); + } + + /** + * Return the output for the followed content results + * + * @param array $results Array of results to show + * @param array $followData Meta data from follow/like system + * @return @e string + */ + public function parseFollowedContentOutput( $results, $followData ) + { + /* Events? */ + if( IPSSearchRegistry::get('in.followContentType') == 'events' ) + { + if( count($results) ) + { + $_results = array(); + + $this->DB->build( array( + 'select' => "c.*", + 'from' => array( 'cal_events' => 'c' ), + 'where' => 'c.event_id IN(' . implode( ',', $results ) . ')', + 'order' => 'c.event_start_date DESC', + 'add_join' => array( + array( + 'select' => 'i.*', + 'from' => array( 'permission_index' => 'i' ), + 'where' => "i.perm_type='calendar' AND i.perm_type_id=c.event_calendar_id", + 'type' => 'left', + ), + array( + 'select' => 'mem.*', + 'from' => array( 'members' => 'mem' ), + 'where' => "mem.member_id=c.event_member_id", + 'type' => 'left', + ), + ) + ) ); + $this->DB->execute(); + + while( $r = $this->DB->fetch() ) + { + $_results[ $r['event_id'] ] = $this->genericizeResults( $r ); + } + + /* Merge in follow data */ + foreach( $followData as $_follow ) + { + $_results[ $_follow['like_rel_id'] ]['_followData'] = $_follow; + } + } + + return $this->registry->output->getTemplate('calendar')->calEventFollowedWrapper( $this->parseAndFetchHtmlBlocks( $_results ) ); + } + /* Or calendars? */ + else + { + $calendars = array(); + $member_ids = array(); + + if( count($results) ) + { + /* Load calendars cache */ + $_calCache = $this->cache->getCache( 'calendars' ); + + /* Get calendar data */ + foreach( $results as $result ) + { + $calendars[ $result ] = $_calCache[ $result ]; + } + + /* Merge in follow data */ + foreach( $followData as $_follow ) + { + $calendars[ $_follow['like_rel_id'] ]['_followData'] = $_follow; + } + } + + return $this->registry->output->getTemplate('calendar')->followedContentCalendars( $calendars ); + } + } + + /** + * Formats / grabs extra data for results + * Takes an array of IDS (can be IDs from anything) and returns an array of expanded data. + * + * @param array $ids Ids + * @param array $followData Retrieve the follow meta data + * @return array + */ + public function processResults( $ids ) + { + $rows = array(); + + foreach( $ids as $i => $d ) + { + $rows[ $i ] = $this->genericizeResults( $d ); + } + + return $rows; + } + + /** + * Reassigns fields in a generic way for results output + * + * @param array $r + * @return array + */ + public function genericizeResults( $r ) + { + $r['app'] = 'calendar'; + $r['content'] = $r['event_content']; + $r['content_title'] = $r['event_title']; + $r['updated'] = $r['event_lastupdated']; + $r['type_2'] = 'event'; + $r['type_id_2'] = $r['event_id']; + $r['misc'] = null; + $r['member_id'] = $r['event_member_id']; + + return $r; + } + +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/search/index.html b/upload/admin/applications_addon/ips/calendar/extensions/search/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/search/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/sharedmedia/index.html b/upload/admin/applications_addon/ips/calendar/extensions/sharedmedia/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/sharedmedia/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/sharedmedia/plugin_events.php b/upload/admin/applications_addon/ips/calendar/extensions/sharedmedia/plugin_events.php new file mode 100644 index 00000000..b292b30e --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/sharedmedia/plugin_events.php @@ -0,0 +1,297 @@ +Incorrect accessYou cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} + +/** + * + * @class plugin_calendar_events + * @brief Provide ability to share calendar events via editor + */ +class plugin_calendar_events +{ + /** + * Registry Object Shortcuts + * + * @var $registry + * @var $DB + * @var $settings + * @var $request + * @var $lang + * @var $member + * @var $memberData + * @var $cache + * @var $caches + */ + protected $registry; + protected $DB; + protected $settings; + protected $request; + protected $lang; + protected $member; + protected $memberData; + protected $cache; + protected $caches; + + /** + * Constructor + * + * @param object $registry Registry object + * @return @e void + */ + public function __construct( ipsRegistry $registry ) + { + //----------------------------------------- + // Make shortcuts + //----------------------------------------- + + $this->registry = $registry; + $this->DB = $this->registry->DB(); + $this->settings =& $this->registry->fetchSettings(); + $this->request =& $this->registry->fetchRequest(); + $this->member = $this->registry->member(); + $this->memberData =& $this->registry->member()->fetchMemberData(); + $this->cache = $this->registry->cache(); + $this->caches =& $this->registry->cache()->fetchCaches(); + $this->lang = $this->registry->class_localization; + + $this->lang->loadLanguageFile( array( 'public_calendar' ), 'calendar' ); + } + + /** + * Return the tab title + * + * @return @e string + */ + public function getTab() + { + if( $this->memberData['member_id'] ) + { + return $this->lang->words['sharedmedia_events']; + } + } + + /** + * Return the HTML to display the tab + * + * @return @e string + */ + public function showTab( $string ) + { + //----------------------------------------- + // Are we a member? + //----------------------------------------- + + if( !$this->memberData['member_id'] ) + { + return ''; + } + + //----------------------------------------- + // How many approved events do we have? + //----------------------------------------- + + $st = intval($this->request['st']); + $each = 30; + $where = ''; + + if( $string ) + { + $where = " AND ( event_title LIKE '%{$string}%' OR event_content LIKE '%{$string}%' )"; + } + + $count = $this->DB->buildAndFetch( array( 'select' => 'COUNT(*) as total', 'from' => 'cal_events', 'where' => "event_approved=1 AND event_private=0 AND event_member_id={$this->memberData['member_id']}" . $where ) ); + $rows = array(); + + $pages = $this->registry->output->generatePagination( array( 'totalItems' => $count['total'], + 'itemsPerPage' => $each, + 'currentStartValue' => $st, + 'seoTitle' => '', + 'method' => 'nextPrevious', + 'noDropdown' => true, + 'ajaxLoad' => 'mymedia_content', + 'baseUrl' => "app=core&module=ajax&section=media&do=loadtab&tabapp=calendar&tabplugin=events&search=" . urlencode($string) ) ); + + $this->DB->build( array( 'select' => '*', 'from' => 'cal_events', 'where' => "event_approved=1 AND event_private=0 AND event_member_id={$this->memberData['member_id']}" . $where, 'order' => 'event_lastupdated DESC', 'limit' => array( $st, $each ) ) ); + $outer = $this->DB->execute(); + + while( $r = $this->DB->fetch($outer) ) + { + $rows[] = array( + 'image' => $this->settings['img_url'] . '/sharedmedia/events.png', + 'width' => 0, + 'height' => 0, + 'title' => IPSText::truncate( $r['event_title'], 25 ), + 'desc' => IPSText::truncate( strip_tags( IPSText::stripAttachTag( IPSText::getTextClass('bbcode')->stripAllTags( $r['event_content'] ) ), '
    ' ), 100 ), + 'insert' => "calendar:events:" . $r['event_id'], + ); + } + + return $this->registry->output->getTemplate('editors')->mediaGenericWrapper( $rows, $pages, 'calendar', 'events' ); + } + + /** + * Return the HTML output to display + * + * @param int $eventId Event ID to show + * @return @e string + */ + public function getOutput( $eventId=0 ) + { + $eventId = intval($eventId); + + if( !$eventId ) + { + return ''; + } + + $event = $this->DB->buildAndFetch( array( + 'select' => 'e.*', + 'from' => array( 'cal_events' => 'e' ), + 'where' => 'e.event_approved=1 AND e.event_private=0 AND e.event_id=' . $eventId, + 'add_join' => array( + array( + 'select' => 'c.*', + 'from' => array( 'cal_calendars' => 'c' ), + 'where' => 'c.cal_id=e.event_calendar_id', + 'type' => 'left', + ) + ) + ) ); + + //----------------------------------------- + // Times and dates + //----------------------------------------- + + $event['_start_time'] = strtotime( $event['event_start_date'] ); + $event['_end_time'] = ( $event['event_end_date'] AND $event['event_end_date'] != '0000-00-00 00:00:00' ) ? strtotime( $event['event_end_date'] ) : 0; + $event['_event_time'] = ''; + $event['_event_etime'] = ''; + + if( !$event['event_all_day'] ) + { + if( $this->memberData['member_id'] AND $this->memberData['time_offset'] ) + { + $event['_start_time'] = $event['_start_time'] + ( $this->memberData['time_offset'] * 3600 ); + } + else if( !$this->memberData['member_id'] AND $this->settings['time_offset'] ) + { + $event['_start_time'] = $event['_start_time'] + ( $this->settings['time_offset'] * 3600 ); + } + } + + if( !$event['event_all_day'] ) + { + if( $this->memberData['member_id'] AND $this->memberData['time_offset'] ) + { + $event['_end_time'] = $event['_end_time'] ? ( $event['_end_time'] + ( $this->memberData['time_offset'] * 3600 ) ) : 0; + } + else if( !$this->memberData['member_id'] AND $this->settings['time_offset'] ) + { + $event['_end_time'] = $event['_end_time'] ? ( $event['_end_time'] + ( $this->settings['time_offset'] * 3600 ) ) : 0; + } + } + + $event['_start_date'] = gmstrftime( $this->settings['clock_date'], $event['_start_time'] ); + $event['_event_time'] = ''; + + if( !$event['event_all_day'] ) + { + if( $this->settings['cal_time_format'] == 'standard' ) + { + $event['_event_time'] = ltrim( gmstrftime( '%I:%M %p', $event['_start_time'] ), '0' ); + $event['_event_etime'] = $event['_end_time'] ? ltrim( gmstrftime( '%I:%M %p', $event['_end_time'] ), '0' ) : ':00'; + } + else + { + $event['_event_time'] = ltrim( gmstrftime( '%H:%M', $event['_start_time'] ), '0' ); + $event['_event_etime'] = $event['_end_time'] ? ltrim( gmstrftime( '%H:%M', $event['_end_time'] ), '0' ) : ':00'; + } + + if( strpos( ':00', $event['_event_time'] ) === 0 OR gmstrftime( '%H:%M', $event['_start_time'] ) == '00:00' ) + { + $event['_event_time'] = ''; + } + + if( strpos( ':00', $event['_event_etime'] ) === 0 OR gmstrftime( '%H:%M', $event['_end_time'] ) == '00:00' ) + { + $event['_event_etime'] = ''; + } + } + + //----------------------------------------- + // Event type + //----------------------------------------- + + $type = $this->lang->words['se_normal']; + $ends = ''; + + if( !$event['event_recurring'] AND $event['_end_time'] AND gmstrftime( $this->settings['clock_date'], $event['_end_time'] ) != $event['_start_date'] ) + { + $type = $this->lang->words['se_range']; + $ends = sprintf( $this->lang->words['se_ends'], gmstrftime( $this->settings['clock_date'], $event['_end_time'] ) ); + } + else if ( $event['event_recurring'] ) + { + $type = $this->lang->words['se_recur']; + $ends = sprintf( $this->lang->words['se_ends'], gmstrftime( $this->settings['clock_date'], $event['_end_time'] ) ); + } + + return $this->registry->output->getTemplate('calendar')->bbCodeEvent( $event, $type, $ends ); + } + + /** + * Verify current user has permission to post this + * + * @param int $eventId Event ID to show + * @return @e bool + */ + public function checkPostPermission( $eventId ) + { + $eventId = intval($eventId); + + if( !$eventId ) + { + return ''; + } + + if( $this->memberData['g_is_supmod'] OR $this->memberData['is_mod'] ) + { + return ''; + } + + $event = $this->DB->buildAndFetch( array( + 'select' => 'e.*', + 'from' => array( 'cal_events' => 'e' ), + 'where' => 'e.event_approved=1 AND e.event_private=0 AND e.event_id=' . $eventId, + 'add_join' => array( + array( + 'select' => 'c.*', + 'from' => array( 'cal_calendars' => 'c' ), + 'where' => 'c.cal_id=e.event_calendar_id', + 'type' => 'left', + ) + ) + ) ); + + if( $this->memberData['member_id'] AND $event['event_member_id'] == $this->memberData['member_id'] ) + { + return ''; + } + + return 'no_permission_shared'; + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/sphinxTemplate.php b/upload/admin/applications_addon/ips/calendar/extensions/sphinxTemplate.php new file mode 100644 index 00000000..e03d07f5 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/sphinxTemplate.php @@ -0,0 +1,22 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * Sphinx template file + * Last Updated: $Date: 2011-06-02 17:57:20 -0400 (Thu, 02 Jun 2011) $ + * + * + * @author $Author: bfarber $ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Calendar + * @link http://www.invisionpower.com + * @version $Rev: 8953 $ + * @since 3.0.0 + * + */ + +/* This is just an empty sphinx template to ensure we overwrite outdated ones on upgrade */ +$appSphinxTemplate = ""; \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/upgradePostRebuild.php b/upload/admin/applications_addon/ips/calendar/extensions/upgradePostRebuild.php new file mode 100644 index 00000000..9e1dd0e6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/upgradePostRebuild.php @@ -0,0 +1,183 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * Rebuild post content plugin + * Last Updated: $Date: 2011-05-05 07:03:47 -0400 (Thu, 05 May 2011) $ + * + * + * @author $Author: ips_terabyte $ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Downloads + * @link http://www.invisionpower.com + * @since 6/24/2008 + * @version $Revision: 8644 $ + * + */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +class postRebuild_calendar +{ + /** + * New content parser + * + * @access public + * @var object + */ + public $parser; + + /**#@+ + * Registry Object Shortcuts + * + * @access protected + * @var object + */ + protected $registry; + protected $DB; + protected $settings; + protected $request; + protected $lang; + protected $member; + protected $memberData; + protected $cache; + protected $caches; + /**#@-*/ + + /** + * I'm a constructor, twisted constructor + * + * @access public + * @param object ipsRegistry reference + * @return @e void + */ + public function __construct( ipsRegistry $registry ) + { + /* Make objects */ + $this->registry = $registry; + $this->DB = $this->registry->DB(); + $this->settings =& $this->registry->fetchSettings(); + $this->request =& $this->registry->fetchRequest(); + $this->lang = $this->registry->getClass('class_localization'); + $this->member = $this->registry->member(); + $this->memberData =& $this->registry->member()->fetchMemberData(); + $this->cache = $this->registry->cache(); + $this->caches =& $this->registry->cache()->fetchCaches(); + } + + /** + * Grab the dropdown options + * + * @access public + * @return array Multidimensional array of contents we can rebuild + */ + public function getDropdown() + { + return array( array( 'cal', $this->lang->words['remenu_events'] ) ); + } + + /** + * Find out if there are any more + * + * @access public + * @param string Content type we are rebuilding ( key 0 in arrays from getDropdown() ) + * @param integer Start point + * @return integer + */ + public function getMax( $type, $dis ) + { + switch( $type ) + { + case 'cal': + $tmp = $this->DB->buildAndFetch( array( 'select' => 'event_id', 'from' => 'cal_events', 'limit' => array($dis,1) ) ); + break; + } + + return intval( $tmp['event_id'] ); + } + + /** + * Execute the database query to return the results + * + * @access public + * @param string Content type we are rebuilding ( key 0 in arrays from getDropdown() ) + * @param integer Start point + * @param integer End point + * @return integer + */ + public function executeQuery( $type, $start, $end ) + { + switch( $type ) + { + case 'cal': + $this->DB->build( array( 'select' => 'e.*', + 'from' => array( 'cal_events' => 'e' ), + 'order' => 'e.event_id ASC', + 'where' => 'e.event_id > ' . $start, + 'limit' => array($end), + 'add_join' => array( 1 => array( 'type' => 'left', + 'select' => 'm.member_group_id, m.mgroup_others', + 'from' => array( 'members' => 'm' ), + 'where' => "m.member_id=e.event_member_id" + ) ) + ) ); + break; + } + } + + /** + * Get preEditParse of the content + * + * @access public + * @param string Content type we are rebuilding ( key 0 in arrays from getDropdown() ) + * @param array Database record from while loop + * @return string Content preEditParse + */ + public function getRawPost( $type, $r ) + { + $this->parser->parse_smilies = $r['event_smilies']; + $this->parser->parse_html = 0; + $this->parser->parse_bbcode = 1; + $this->parser->parsing_section = 'calendar'; + + switch( $type ) + { + case 'cal': + $rawpost = $this->parser->preEditParse( $r['event_content'] ); + break; + } + + return $rawpost; + } + + /** + * Store the newly converted content + * + * @access public + * @param string Content type we are rebuilding ( key 0 in arrays from getDropdown() ) + * @param array Database record from while loop + * @param string Newly parsed post + * @return string Content preEditParse + */ + public function storeNewPost( $type, $r, $newpost ) + { + $lastId = 0; + + switch( $type ) + { + case 'cal': + $this->DB->update( 'cal_events', array( 'event_content' => $newpost ), 'event_id=' . $r['event_id'] ); + $lastId = $r['event_id']; + break; + } + + return $lastId; + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/extensions/warnings.php b/upload/admin/applications_addon/ips/calendar/extensions/warnings.php new file mode 100644 index 00000000..51e5f808 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/extensions/warnings.php @@ -0,0 +1,52 @@ +Incorrect accessYou cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +/** + * @class warnings_calendar + * @brief Warnings Extension for calendar + */ +class warnings_calendar +{ + /** + * Get Content URL + * + * @param array $warning Row from members_warn_logs + * @return @e array array( url => URL to the content the warning came from, title => Title ) + */ + public function getContentUrl( $warning ) + { + $exploded = explode( '-', $warning['wl_content_id2'] ); + + require_once( IPS_ROOT_PATH . 'sources/classes/comments/bootstrap.php' );/*noLibHook*/ + $comments = classes_comments_bootstrap::controller( $warning['wl_content_id1'] ); + + $parent = $comments->fetchParent( $exploded[0] ); + + if ( is_null($parent) ) + { + return NULL; + } + else + { + $parent = $comments->remapFromLocal( $parent, 'parent' ); + + return array( 'url' => ipsRegistry::getClass('output')->buildUrl( "app=core&module=global§ion=comments&fromApp={$warning['wl_content_id1']}&do=findComment&parentId={$exploded[0]}&comment_id={$exploded[1]}" ), 'title' => $parent['parent_title'] ); + } + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/index.html b/upload/admin/applications_addon/ips/calendar/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/modules_admin/calendar/calendars.php b/upload/admin/applications_addon/ips/calendar/modules_admin/calendar/calendars.php new file mode 100644 index 00000000..8eb6d6b8 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/modules_admin/calendar/calendars.php @@ -0,0 +1,567 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * Calendar Management + * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $ + * + * + * @author $Author: bfarber $ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Calendar + * @link http://www.invisionpower.com + * @since 27th January 2004 + * @version $Rev: 10721 $ + */ + +if ( ! defined( 'IN_ACP' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} + +class admin_calendar_calendar_calendars extends ipsCommand +{ + /** + * Skin file + * + * @var object + */ + public $html; + + /** + * Main execution method + * + * @param object ipsRegistry reference + * @return @e void + */ + public function doExecute( ipsRegistry $registry ) + { + //----------------------------------------- + // Init + //----------------------------------------- + + $this->html = $this->registry->output->loadTemplate( 'cp_skin_calendar' ); + $this->html->form_code = 'module=calendar&section=calendars'; + $this->html->form_code_js = 'module=calendar§ion=calendars'; + + $this->lang->loadLanguageFile( array( 'admin_calendar' ) ); + + //----------------------------------------- + // What are we doing + //----------------------------------------- + + switch( $this->request['do'] ) + { + case 'calendar_delete': + $this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'calendar_delete' ); + $this->calendarDelete(); + break; + + case 'calendar_add': + $this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'calendar_manage' ); + $this->calendarForm( 'new' ); + break; + + case 'calendar_add_do': + $this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'calendar_manage' ); + $this->calendarSave( 'new' ); + break; + + case 'calendar_edit': + $this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'calendar_manage' ); + $this->calendarForm( 'edit' ); + break; + + case 'calendar_edit_do': + $this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'calendar_manage' ); + $this->calendarSave( 'edit' ); + break; + + case 'calendar_move': + $this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'calendar_manage' ); + $this->calendarMove(); + break; + + case 'calendar_rebuildcache': + $this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'calendar_manage' ); + $this->cache->rebuildCache( 'calendar_events', 'calendar' ); + + $this->registry->output->global_message = $this->lang->words['c_recached']; + $this->calendarsList(); + break; + + case 'calendar_rss_cache': + $this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'calendar_manage' ); + $this->calendarRSSCache( intval( $this->request['cal_id'] ) ); + + $this->registry->output->global_message = $this->lang->words['c_rssrecached']; + $this->calendarsList(); + break; + + case 'calendars_list': + default: + $this->calendarsList(); + break; + } + + //----------------------------------------- + // Output + //----------------------------------------- + + $this->registry->output->html_main .= $this->registry->output->global_template->global_frame_wrapper(); + $this->registry->output->sendOutput(); + } + + /** + * Update the calendar position + * + * @return @e void + */ + public function calendarMove() + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $classToLoad = IPSLib::loadLibrary( IPS_KERNEL_PATH . 'classAjax.php', 'classAjax' ); + $ajax = new $classToLoad(); + + //----------------------------------------- + // Checks... + //----------------------------------------- + + if( $this->registry->adminFunctions->checkSecurityKey( $this->request['md5check'], true ) === false ) + { + $ajax->returnString( $this->lang->words['postform_badmd5'] ); + exit(); + } + + //----------------------------------------- + // Save new position + //----------------------------------------- + + $position = 1; + + if( is_array($this->request['calendars']) AND count($this->request['calendars']) ) + { + foreach( $this->request['calendars'] as $this_id ) + { + $this->DB->update( 'cal_calendars', array( 'cal_position' => $position ), 'cal_id=' . $this_id ); + + $position++; + } + } + + $this->calendarsRebuildCache(); + + $ajax->returnString( 'OK' ); + exit(); + } + + /** + * Delete a calendar + * + * @return @e void + */ + public function calendarDelete() + { + //----------------------------------------- + // Init + //----------------------------------------- + + $cal_id = intval( $this->request['cal_id'] ); + + if ( ! $cal_id ) + { + $this->registry->output->global_message = $this->lang->words['c_noid']; + $this->calendarsList(); + return; + } + + //----------------------------------------- + // Delete + //----------------------------------------- + + $this->DB->delete( 'cal_calendars', 'cal_id=' . $cal_id ); + $this->DB->delete( 'permission_index', "app='calendar' AND perm_type='calendar' AND perm_type_id=" . $cal_id ); + + //----------------------------------------- + // Get feeds for removal + //----------------------------------------- + + $_feedIds = array(); + + $this->DB->build( array( 'select' => 'feed_id', 'from' => 'cal_import_feeds', 'where' => 'feed_calendar_id=' . $cal_id ) ); + $this->DB->execute(); + + while( $r = $this->DB->fetch() ) + { + $_feedIds[] = $r['feed_id']; + } + + $this->DB->delete( 'cal_import_feeds', 'feed_calendar_id=' . $cal_id ); + + if( count($_feedIds) ) + { + $this->DB->delete( 'cal_import_map', 'import_feed_id IN(' . implode( ',', $_feedIds ) . ')' ); + } + + //----------------------------------------- + // Get event ids for comments/ratings + //----------------------------------------- + + $_eventIds = array(); + + $this->DB->build( array( 'select' => 'event_id', 'from' => 'cal_events', 'where' => 'event_calendar_id=' . $cal_id ) ); + $this->DB->execute(); + + while( $r = $this->DB->fetch() ) + { + $_eventIds[] = $r['event_id']; + } + + if( count($_eventIds) ) + { + $this->DB->delete( 'cal_event_comments', 'comment_eid IN(' . implode( ',', $_eventIds ) . ')' ); + $this->DB->delete( 'cal_event_ratings', 'rating_eid IN(' . implode( ',', $_eventIds ) . ')' ); + $this->DB->delete( 'cal_event_rsvp', 'rsvp_event_id IN(' . implode( ',', $_eventIds ) . ')' ); + + //----------------------------------------- + // Delete attachments + //----------------------------------------- + + $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'core' ) . '/sources/classes/attach/class_attach.php', 'class_attach' ); + $class_attach = new $classToLoad( $this->registry ); + $class_attach->type = 'event'; + $class_attach->init(); + $class_attach->bulkRemoveAttachment( $_eventIds ); + } + + $this->DB->delete( 'cal_events', 'event_calendar_id=' . $cal_id ); + + //----------------------------------------- + // Remove likes + //----------------------------------------- + + require_once( IPS_ROOT_PATH . 'sources/classes/like/composite.php' );/*noLibHook*/ + $_like = classes_like::bootstrap( 'calendar', 'calendars' ); + $_like->remove( $cal_id ); + + //----------------------------------------- + // Rebuild caches + //----------------------------------------- + + $this->calendarsRebuildCache(); + $this->cache->rebuildCache( 'calendar_events', 'calendar' ); + $this->cache->rebuildCache( 'rss_calendar', 'calendar' ); + + //----------------------------------------- + // Redirect + //----------------------------------------- + + $this->registry->output->global_message = $this->lang->words['c_removed']; + $this->calendarsList(); + } + + /** + * Handles the calednar new/edit form + * + * @param string $type Either new or edit + * @return @e void + */ + public function calendarSave( $type='new' ) + { + //----------------------------------------- + // Init + //----------------------------------------- + + $cal_id = intval( $this->request['cal_id'] ); + $cal_title = trim( IPSText::stripslashes( IPSText::htmlspecialchars( $_POST['cal_title'] ) ) ); + $cal_moderate = intval( $this->request['cal_moderate'] ); + $cal_comment_moderate = intval( $this->request['cal_comment_moderate'] ); + $cal_event_limit = intval( $this->request['cal_event_limit'] ); + $cal_bday_limit = intval( $this->request['cal_bday_limit'] ); + $cal_rss_export = intval( $this->request['cal_rss_export'] ); + $cal_rss_export_days = intval( $this->request['cal_rss_export_days'] ); + $cal_rss_export_max = intval( $this->request['cal_rss_export_max'] ); + $cal_rss_update = intval( $this->request['cal_rss_update'] ); + $cal_rsvp = intval( $this->request['cal_rsvp_owner'] ); + + //----------------------------------------- + // Error checking + //----------------------------------------- + + if ( $type == 'edit' ) + { + if ( ! $cal_id ) + { + $this->registry->output->global_message = $this->lang->words['c_noid']; + $this->calendarsList(); + return; + } + } + + if ( ! $cal_title ) + { + $this->registry->output->global_message = $this->lang->words['c_completeform']; + $this->calendarForm( $type ); + return; + } + + //----------------------------------------- + // Format for DB update + //----------------------------------------- + + $array = array( 'cal_title' => $cal_title, + 'cal_title_seo' => IPSText::makeSeoTitle( $cal_title ), + 'cal_moderate' => $cal_moderate, + 'cal_comment_moderate' => $cal_comment_moderate, + 'cal_event_limit' => $cal_event_limit, + 'cal_bday_limit' => $cal_bday_limit, + 'cal_rss_export' => $cal_rss_export, + 'cal_rss_export_days' => $cal_rss_export_days, + 'cal_rss_export_max' => $cal_rss_export_max, + 'cal_rss_update' => $cal_rss_update, + 'cal_rsvp_owner' => $cal_rsvp, + ); + + //----------------------------------------- + // Insert or update + //----------------------------------------- + + if ( $type == 'new' ) + { + $this->DB->insert( 'cal_calendars', $array ); + $cal_id = $this->DB->getInsertId(); + + $this->registry->output->global_message = $this->lang->words['c_added']; + } + else + { + $this->DB->update( 'cal_calendars', $array, 'cal_id=' . $cal_id ); + + $this->registry->output->global_message = $this->lang->words['c_edited']; + } + + //----------------------------------------- + // Save permissions + //----------------------------------------- + + $classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/class_public_permissions.php', 'classPublicPermissions' ); + $permissions = new $classToLoad( $this->registry ); + $permissions->savePermMatrix( $this->request['perms'], $cal_id, 'calendar' ); + + //----------------------------------------- + // Rebuild caches and redirect + //----------------------------------------- + + $this->calendarsRebuildCache(); + $this->cache->rebuildCache( 'calendar_events', 'calendar' ); + $this->calendarRSSCache( $cal_id ); + $this->cache->rebuildCache( 'rss_output_cache' ); + + $this->calendarsList(); + } + + /** + * Add/Edit Calendar Form + * + * @param string $type Either new or edit + * @return @e void + */ + public function calendarForm( $type='new' ) + { + //----------------------------------------- + // Init + //----------------------------------------- + + $cal_id = $this->request['cal_id'] ? intval( $this->request['cal_id'] ) : 0; + $form = array(); + + //----------------------------------------- + // Defaults + //----------------------------------------- + + if ( $type == 'new' ) + { + $formcode = 'calendar_add_do'; + $title = $this->lang->words['c_addcal']; + $button = $this->lang->words['c_addcal']; + + $calendar = array( + 'cal_title' => '', + 'cal_moderate' => 0, + 'cal_comment_moderate' => 0, + 'cal_rsvp_owner' => 0, + 'cal_event_limit' => '', + 'cal_bday_limit' => '', + 'cal_rss_export' => '', + 'cal_rss_update' => '', + 'cal_rss_export_days' => '', + 'cal_rss_export_max' => '', + 'cal_id' => 0 + ); + } + else + { + $formcode = 'calendar_edit_do'; + $title = $this->lang->words['c_editbutton'].$calendar['cal_title']; + $button = $this->lang->words['c_savebutton']; + + $calendar = $this->DB->buildAndFetch( array( + 'select' => 'c.*', + 'from' => array( 'cal_calendars' => 'c' ), + 'where' => 'c.cal_id=' . $cal_id, + 'add_join' => array( + array( + 'select' => 'p.*', + 'from' => array( 'permission_index' => 'p' ), + 'where' => "p.perm_type='calendar' AND perm_type_id=c.cal_id", + 'type' => 'left', + ) + ) + ) ); + + if ( ! $calendar['cal_id'] ) + { + $this->registry->output->global_message = $this->lang->words['c_noid']; + $this->calendarsList(); + return; + } + } + + //----------------------------------------- + // Permissions + //----------------------------------------- + + $classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/class_public_permissions.php', 'classPublicPermissions' ); + $permissions = new $classToLoad( $this->registry ); + + //----------------------------------------- + // Form elements + //----------------------------------------- + + $form['perm_matrix'] = $permissions->adminPermMatrix( 'calendar', $calendar, 'calendar', '', false ); + $form['cal_title'] = $this->registry->output->formInput( 'cal_title' , !empty( $_POST['cal_title'] ) ? $_POST['cal_title'] : $calendar['cal_title'] ); + $form['cal_moderate'] = $this->registry->output->formYesNo( 'cal_moderate' , !empty( $this->request['cal_moderate'] ) ? $this->request['cal_moderate'] : $calendar['cal_moderate'] ); + $form['cal_moderatec'] = $this->registry->output->formYesNo( 'cal_comment_moderate' , !empty( $this->request['cal_comment_moderate'] ) ? $this->request['cal_comment_moderate'] : $calendar['cal_comment_moderate'] ); + $form['cal_event_limit'] = $this->registry->output->formSimpleInput( 'cal_event_limit' , !empty( $this->request['cal_event_limit'] ) ? $this->request['cal_event_limit'] : $calendar['cal_event_limit'], 5 ); + $form['cal_bday_limit'] = $this->registry->output->formSimpleInput( 'cal_bday_limit' , !empty( $this->request['cal_bday_limit'] ) ? $this->request['cal_bday_limit'] : $calendar['cal_bday_limit'], 5 ); + $form['cal_rss_export'] = $this->registry->output->formYesNo( 'cal_rss_export' , !empty( $this->request['cal_rss_export'] ) ? $this->request['cal_rss_export'] : $calendar['cal_rss_export'] ); + $form['cal_rss_update'] = $this->registry->output->formSimpleInput( 'cal_rss_update' , !empty( $this->request['cal_rss_update'] ) ? $this->request['cal_rss_update'] : $calendar['cal_rss_update'], 5 ); + $form['cal_rss_export_days'] = $this->registry->output->formSimpleInput( 'cal_rss_export_days' , !empty( $this->request['cal_rss_export_days'] ) ? $this->request['cal_rss_export_days'] : $calendar['cal_rss_export_days'], 5 ); + $form['cal_rss_export_max'] = $this->registry->output->formSimpleInput( 'cal_rss_export_max' , !empty( $this->request['cal_rss_export_max'] ) ? $this->request['cal_rss_export_max'] : $calendar['cal_rss_export_max'], 5 ); + $form['cal_rsvp'] = $this->registry->output->formYesNo( 'cal_rsvp_owner' , !empty( $this->request['cal_rsvp_owner'] ) ? $this->request['cal_rsvp_owner'] : $calendar['cal_rsvp_owner'] ); + + //----------------------------------------- + // Output + //----------------------------------------- + + $this->registry->output->html .= $this->html->calendarForm( $form, $title, $formcode, $button, $calendar ); + } + + /** + * List Calendars + * + * @return @e void + */ + public function calendarsList() + { + //----------------------------------------- + // Init + //----------------------------------------- + + $rows = array(); + + //----------------------------------------- + // Get calendars + //----------------------------------------- + + $this->DB->build( array( 'select' => '*', 'from' => 'cal_calendars', 'order' => 'cal_position ASC' ) ); + $this->DB->execute(); + + while( $r = $this->DB->fetch() ) + { + $rows[] = $r; + } + + //----------------------------------------- + // Output + //----------------------------------------- + + $this->registry->output->html .= $this->html->calendarOverviewScreen( $rows ); + } + + /** + * Rebuild the RSS Cache + * + * @param mixed $calendar_id Specify which calendar to rebuild, all is default + * @return @e void + */ + public function calendarRSSCache( $calendar_id='all' ) + { + $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir('calendar') . '/sources/cache.php', 'calendar_cache', 'calendar' ); + $library = new $classToLoad( $this->registry ); + + $library->rebuildCalendarRSSCache( $calendar_id ); + } + + /** + * Builds a cache of the current calendars + * + * @return bool Returns true + */ + public function calendarsRebuildCache() + { + //----------------------------------------- + // Verify calendar is installed + //----------------------------------------- + + if( !$this->DB->checkForTable('cal_calendars') ) + { + return; + } + + //----------------------------------------- + // Init + //----------------------------------------- + + $cache = array(); + + //----------------------------------------- + // Get calendars + //----------------------------------------- + + $this->DB->build( array( + 'select' => 'c.*', + 'from' => array( 'cal_calendars' => 'c' ), + 'order' => 'c.cal_position ASC', + 'add_join' => array( + array( + 'select' => 'p.*', + 'from' => array( 'permission_index' => 'p' ), + 'where' => "p.perm_type='calendar' AND p.perm_type_id=c.cal_id", + 'type' => 'left', + ) + ) + ) ); + $this->DB->execute(); + + while( $r = $this->DB->fetch() ) + { + $cache[ $r['cal_id'] ] = $r; + } + + //----------------------------------------- + // Save cache and return + //----------------------------------------- + + $this->cache->setCache( 'calendars', $cache, array( 'array' => 1 ) ); + + return TRUE; + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/modules_admin/calendar/defaultSection.php b/upload/admin/applications_addon/ips/calendar/modules_admin/calendar/defaultSection.php new file mode 100644 index 00000000..d6f86e53 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/modules_admin/calendar/defaultSection.php @@ -0,0 +1,13 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/modules_admin/calendar/xml/index.html b/upload/admin/applications_addon/ips/calendar/modules_admin/calendar/xml/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/modules_admin/calendar/xml/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/modules_admin/calendar/xml/menu.xml b/upload/admin/applications_addon/ips/calendar/modules_admin/calendar/xml/menu.xml new file mode 100644 index 00000000..8a7e505e --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/modules_admin/calendar/xml/menu.xml @@ -0,0 +1,18 @@ + + + + + Calendar Management + + + Calendar Management + calendars + calendars + do=overview + + 0 + + + + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/modules_admin/calendar/xml/permissions.xml b/upload/admin/applications_addon/ips/calendar/modules_admin/calendar/xml/permissions.xml new file mode 100644 index 00000000..04f266e3 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/modules_admin/calendar/xml/permissions.xml @@ -0,0 +1,17 @@ + + + + Calendar Management + calendar_mt + + + calendar_manage + Can add/edit calendars? + + + calendar_delete + Can delete calendars? + + + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/modules_admin/icalendar/defaultSection.php b/upload/admin/applications_addon/ips/calendar/modules_admin/icalendar/defaultSection.php new file mode 100644 index 00000000..96eeda89 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/modules_admin/icalendar/defaultSection.php @@ -0,0 +1,13 @@ +Incorrect accessYou cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} + +/** + * + * @class admin_calendar_icalendar_ical + * @brief Management of iCalendar feed imports + * + */ +class admin_calendar_icalendar_ical extends ipsCommand +{ + /** + * Skin file + * + * @var $html + */ + public $html; + + /** + * Calendar functions + * + * @var object + */ + protected $functions; + + /** + * Main execution method + * + * @param object $registry ipsRegistry reference + * @return @e void + */ + public function doExecute( ipsRegistry $registry ) + { + //----------------------------------------- + // Init + //----------------------------------------- + + $this->html = $this->registry->output->loadTemplate( 'cp_skin_calendar' ); + $this->html->form_code = 'module=icalendar&section=ical'; + $this->html->form_code_js = 'module=icalendar§ion=ical'; + + $this->lang->loadLanguageFile( array( 'admin_calendar' ) ); + + $this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'calendar_ical' ); + + $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'calendar' ) . "/sources/functions.php", 'app_calendar_classes_functions', 'calendar' ); + $this->functions = new $classToLoad( $this->registry, true ); + + //----------------------------------------- + // What are we doing + //----------------------------------------- + + switch( $this->request['do'] ) + { + case 'delete': + $this->deleteFeed(); + break; + + case 'add': + $this->feedForm( 'add' ); + break; + + case 'doadd': + $this->feedSave( 'add' ); + break; + + case 'edit': + $this->feedForm( 'edit' ); + break; + + case 'doedit': + $this->feedSave( 'edit' ); + break; + + case 'import': + $this->importIcsFile(); + break; + + case 'recache': + $this->recacheFeed( intval($this->request['id']) ); + break; + + case 'list': + default: + $this->listFeeds(); + break; + } + + //----------------------------------------- + // Output + //----------------------------------------- + + $this->registry->output->html_main .= $this->registry->output->global_template->global_frame_wrapper(); + $this->registry->output->sendOutput(); + } + + /** + * Delete a feed import + * + * @return @e void + */ + public function deleteFeed() + { + //----------------------------------------- + // Init + //----------------------------------------- + + $id = intval( $this->request['id'] ); + + if ( ! $id ) + { + $this->registry->output->global_message = $this->lang->words['feed_noiddel']; + $this->listFeeds(); + return; + } + + $feed = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'cal_import_feeds', 'where' => 'feed_id=' . $id ) ); + + if ( ! $feed['feed_id'] ) + { + $this->registry->output->global_message = $this->lang->words['feed_noiddel']; + $this->listFeeds(); + return; + } + + //----------------------------------------- + // Delete just the feed, or all events as well? + //----------------------------------------- + + if( !$this->request['confirm'] ) + { + $this->registry->output->html .= $this->html->deleteConfirm( $feed ); + return; + } + + //----------------------------------------- + // Deleting all events too? + //----------------------------------------- + + if( $this->request['delete_events'] ) + { + $_eventIds = array(); + + $this->DB->build( array( 'select' => 'import_event_id', 'from' => 'cal_import_map', 'where' => 'import_feed_id=' . $id ) ); + $this->DB->execute(); + + while( $r = $this->DB->fetch() ) + { + $_eventIds[] = $r['import_event_id']; + } + + if( count($_eventIds) ) + { + $this->DB->delete( 'cal_events', 'event_id IN(' . implode( ',', $_eventIds ) . ')' ); + $this->DB->delete( 'cal_event_comments', 'comment_eid IN(' . implode( ',', $_eventIds ) . ')' ); + $this->DB->delete( 'cal_event_ratings', 'rating_eid IN(' . implode( ',', $_eventIds ) . ')' ); + $this->DB->delete( 'cal_event_rsvp', 'rsvp_event_id IN(' . implode( ',', $_eventIds ) . ')' ); + } + } + + //----------------------------------------- + // Delete + //----------------------------------------- + + $this->DB->delete( 'cal_import_feeds', 'feed_id=' . $id ); + $this->DB->delete( 'cal_import_map', 'import_feed_id=' . $id ); + + //----------------------------------------- + // Redirect + //----------------------------------------- + + $this->registry->output->global_message = $this->lang->words['feed_importremoved']; + $this->listFeeds(); + } + + /** + * Save the added/edited feed + * + * @param string $type Either add or edit + * @return @e void + */ + public function feedSave( $type='add' ) + { + //----------------------------------------- + // Init + //----------------------------------------- + + $id = intval( $this->request['id'] ); + + //----------------------------------------- + // Error checking + //----------------------------------------- + + if ( $type == 'edit' ) + { + if ( ! $id ) + { + $this->registry->output->global_message = $this->lang->words['feed_notfoundedit']; + $this->listFeeds(); + return; + } + + $feed = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'cal_import_feeds', 'where' => 'feed_id=' . $id ) ); + + if ( ! $feed['feed_id'] ) + { + $this->registry->output->global_message = $this->lang->words['feed_notfoundedit']; + $this->listFeeds(); + return; + } + } + + //----------------------------------------- + // Check member + //----------------------------------------- + + $memberName = trim($this->request['feed_member_id']); + $member = $this->DB->buildAndFetch( array( 'select' => 'member_id, name', 'from' => 'members', 'where' => "members_l_display_name='" . $this->DB->addSlashes( strtolower( $memberName ) ) . "'" ) ); + + if( !$member['member_id'] ) + { + $this->registry->output->showError( $this->lang->words['feed_importicsmme'], 1149 ); + } + + //----------------------------------------- + // Format for DB update + //----------------------------------------- + + $array = array( 'feed_title' => trim($this->request['feed_title']), + 'feed_url' => trim($this->request['feed_url']), + 'feed_recache_freq' => intval($this->request['feed_recache_freq']), + 'feed_calendar_id' => intval($this->request['feed_calendar_id']), + 'feed_member_id' => $member['member_id'], + ); + + if( $array['feed_recache_freq'] < 60 ) + { + $array['feed_recache_freq'] = 60; + } + + if( !in_array( substr( $array['feed_url'], 0, strpos( $array['feed_url'], '://' ) ), array( 'http', 'https', 'webcal' ) ) ) + { + $this->registry->output->showError( $this->lang->words['invalid_feed_url'], 1141 ); + } + + if( !$array['feed_title'] ) + { + $this->registry->output->showError( $this->lang->words['no_feed_title'], 1142 ); + } + + //----------------------------------------- + // Insert or update + //----------------------------------------- + + if ( $type == 'add' ) + { + $array['feed_added'] = time(); + + $this->DB->insert( 'cal_import_feeds', $array ); + $id = $this->DB->getInsertId(); + + $this->registry->output->global_message = $this->lang->words['feed_added']; + } + else + { + $this->DB->update( 'cal_import_feeds', $array, 'feed_id=' . $id ); + + $this->registry->output->global_message = $this->lang->words['feed_updated']; + } + + //----------------------------------------- + // Rebuild caches + //----------------------------------------- + + $this->recacheFeed( $id, true ); + + $this->listFeeds(); + } + + /** + * Show form to add/edit a feed import + * + * @param string $type Either add or edit + * @return @e void + */ + public function feedForm( $type='add' ) + { + //----------------------------------------- + // Init + //----------------------------------------- + + $id = intval( $this->request['id'] ); + $form = array(); + + //----------------------------------------- + // Defaults + //----------------------------------------- + + if ( $type == 'add' ) + { + $formcode = 'doadd'; + $title = $this->lang->words['feed_addnewtext']; + $button = $this->lang->words['feed_addnewtext']; + + $feed = array( + 'feed_title' => '', + 'feed_url' => '', + 'feed_recache_freq' => 60, + 'feed_id' => 0, + 'feed_calendar_id' => 0, + 'feed_member_id' => $this->memberData['member_id'], + ); + } + else + { + if( !$id ) + { + $this->registry->output->global_message = $this->lang->words['feed_notfoundedit']; + $this->listFeeds(); + return; + } + + $feed = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'cal_import_feeds', 'where' => 'feed_id=' . $id ) ); + + if ( ! $feed['feed_id'] ) + { + $this->registry->output->global_message = $this->lang->words['feed_notfoundedit']; + $this->listFeeds(); + return; + } + + + $formcode = 'doedit'; + $title = $this->lang->words['feed_edit_title'] . ' ' . $feed['feed_title']; + $button = $this->lang->words['feed_editbutton']; + } + + //----------------------------------------- + // Form elements + //----------------------------------------- + + $_member = IPSMember::load( $feed['feed_member_id'] ); + $form['feed_title'] = $this->registry->output->formInput( 'feed_title' , !empty( $_POST['feed_title'] ) ? $_POST['feed_title'] : $feed['feed_title'] ); + $form['feed_url'] = $this->registry->output->formInput( 'feed_url' , !empty( $this->request['feed_url'] ) ? $this->request['feed_url'] : $feed['feed_url'] ); + $form['feed_member_id'] = $this->registry->output->formInput( 'feed_member_id' , !empty( $this->request['feed_member_id'] ) ? $this->request['feed_member_id'] : $_member['members_display_name'] ); + $form['feed_recache_freq'] = $this->registry->output->formSimpleInput( 'feed_recache_freq' , !empty( $this->request['feed_recache_freq'] ) ? $this->request['feed_recache_freq'] : $feed['feed_recache_freq'] ); + + $calendars = $this->functions->getCalendars(); + $_calendars = array(); + + foreach( $calendars as $_cal ) + { + $_calendars[] = array( $_cal['cal_id'], $_cal['cal_title'] ); + } + + $form['feed_calendar_id'] = $this->registry->output->formDropdown( 'feed_calendar_id' , $_calendars, !empty( $this->request['feed_calendar_id'] ) ? $this->request['feed_calendar_id'] : $feed['feed_calendar_id'] ); + + //----------------------------------------- + // Output + //----------------------------------------- + + $this->registry->output->html .= $this->html->feedForm( $form, $title, $formcode, $button, $feed ); + } + + /** + * List feeds + * + * @return @e void + */ + public function listFeeds() + { + //----------------------------------------- + // Init + //----------------------------------------- + + $feeds = array(); + + //----------------------------------------- + // Get feeds + //----------------------------------------- + + $this->DB->build( array( 'select' => '*', 'from' => 'cal_import_feeds' ) ); + $this->DB->execute(); + + while( $r = $this->DB->fetch() ) + { + $feeds[] = $r; + } + + //----------------------------------------- + // Output + //----------------------------------------- + + $this->registry->output->html .= $this->html->feedsList( $feeds, $this->functions->getCalendars() ); + } + + /** + * Reimport a feed + * + * @param int $id Specify which feed to reimport + * @param bool $return Whether to return (false will result in a redirect back to feeds list) + * @return @e mixed + */ + public function recacheFeed( $id, $return=false ) + { + //----------------------------------------- + // Init + //----------------------------------------- + + if( !$id ) + { + if( $return ) + { + return false; + } + else + { + $this->registry->output->global_message = $this->lang->words['feed_notfoundrecache']; + $this->listFeeds(); + return; + } + } + + $feed = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'cal_import_feeds', 'where' => 'feed_id=' . $id ) ); + + if ( ! $feed['feed_id'] ) + { + $this->registry->output->global_message = $this->lang->words['feed_notfoundrecache']; + $this->listFeeds(); + return; + } + + //----------------------------------------- + // Fetch the feed + //----------------------------------------- + + $classToLoad = IPSLib::loadLibrary( IPS_KERNEL_PATH . 'classFileManagement.php', 'classFileManagement' ); + $fetcher = new $classToLoad(); + + $content = $fetcher->getFileContents( str_replace( 'webcal://', 'http://', $feed['feed_url'] ) ); + + if( !$content ) + { + $this->registry->output->global_message = $this->lang->words['feed_importwcalnone']; + $this->listFeeds(); + return; + } + + //----------------------------------------- + // Send content to be processed + //----------------------------------------- + + $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir('calendar') . '/sources/icalendar.php', 'app_calendar_classes_icalendarOutput', 'calendar' ); + $ical = new $classToLoad( $this->registry, $feed['feed_calendar_id'] ); + + $result = $ical->import( $content, $feed['feed_member_id'], $feed['feed_id'] ); + + //----------------------------------------- + // Show error if any + //----------------------------------------- + + if( $error = $ical->getError() ) + { + if( $return ) + { + return false; + } + else + { + $this->registry->output->showError( $error, 1144 ); + } + } + + //----------------------------------------- + // Update last update date and next run date + //----------------------------------------- + + $this->DB->update( 'cal_import_feeds', array( 'feed_lastupdated' => time(), 'feed_next_run' => time() + ( $feed['feed_recache_freq'] * 60 ) ), 'feed_id=' . $id ); + + //----------------------------------------- + // Show success message/redirect + //----------------------------------------- + + if( $return ) + { + return true; + } + else + { + $this->registry->output->global_message = sprintf( $this->lang->words['feed_successwebcal'], $result['skipped'], $result['imported'] ); + $this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . $this->html->form_code ); + } + } + + /** + * Import an .ics file + * + * @return @e void + */ + public function importIcsFile() + { + //----------------------------------------- + // Get upload content + //----------------------------------------- + + $content = $this->registry->getClass('adminFunctions')->importXml(); + + if( !$content ) + { + $this->registry->output->global_message = $this->lang->words['feed_importicsnone']; + $this->listFeeds(); + return; + } + + //----------------------------------------- + // Get member + //----------------------------------------- + + $memberName = trim($this->request['member_name']); + $member = $this->DB->buildAndFetch( array( 'select' => 'member_id, name', 'from' => 'members', 'where' => "members_l_display_name='" . $this->DB->addSlashes( strtolower( $memberName ) ) . "'" ) ); + + if( !$member['member_id'] ) + { + $this->registry->output->global_message = $this->lang->words['feed_importicsmme']; + $this->listFeeds(); + return; + } + + //----------------------------------------- + // Send content to be processed + //----------------------------------------- + + $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir('calendar') . '/sources/icalendar.php', 'app_calendar_classes_icalendarOutput', 'calendar' ); + $ical = new $classToLoad( $this->registry, intval($this->request['calendar_id']) ); + + $result = $ical->import( $content, $member['member_id'] ); + + //----------------------------------------- + // Show error if any + //----------------------------------------- + + if( $error = $ical->getError() ) + { + $this->registry->output->showError( $error, 1143 ); + } + + //----------------------------------------- + // Show success message/redirect + //----------------------------------------- + + $this->registry->output->global_message = sprintf( $this->lang->words['feed_successimport'], $result['skipped'], $result['imported'] ); + $this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . $this->html->form_code ); + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/modules_admin/icalendar/index.html b/upload/admin/applications_addon/ips/calendar/modules_admin/icalendar/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/modules_admin/icalendar/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/modules_admin/icalendar/xml/index.html b/upload/admin/applications_addon/ips/calendar/modules_admin/icalendar/xml/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/modules_admin/icalendar/xml/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/modules_admin/icalendar/xml/menu.xml b/upload/admin/applications_addon/ips/calendar/modules_admin/icalendar/xml/menu.xml new file mode 100644 index 00000000..43a2d406 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/modules_admin/icalendar/xml/menu.xml @@ -0,0 +1,18 @@ + + + + + Import iCalendar Feeds + + + Import iCalendar Feeds + icalendar + ical + + + 0 + + + + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/modules_admin/icalendar/xml/permissions.xml b/upload/admin/applications_addon/ips/calendar/modules_admin/icalendar/xml/permissions.xml new file mode 100644 index 00000000..8a611942 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/modules_admin/icalendar/xml/permissions.xml @@ -0,0 +1,13 @@ + + + + Import iCalendar Feeds + calendar_import + + + calendar_ical + Can import ical and webcal feeds? + + + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/modules_admin/index.html b/upload/admin/applications_addon/ips/calendar/modules_admin/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/modules_admin/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/modules_admin/settings/defaultSection.php b/upload/admin/applications_addon/ips/calendar/modules_admin/settings/defaultSection.php new file mode 100644 index 00000000..6882441f --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/modules_admin/settings/defaultSection.php @@ -0,0 +1,13 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/modules_admin/settings/settings.php b/upload/admin/applications_addon/ips/calendar/modules_admin/settings/settings.php new file mode 100644 index 00000000..03a598f5 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/modules_admin/settings/settings.php @@ -0,0 +1,85 @@ +Incorrect accessYou cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} + +/** + * + * @class admin_calendar_settings_settings + * @brief Control calendar settings + * + */ +class admin_calendar_settings_settings extends ipsCommand +{ + /** + * Shortcut for url + * + * @access protected + * @var string URL shortcut + */ + protected $form_code; + + /** + * Shortcut for url (javascript) + * + * @access protected + * @var string JS URL shortcut + */ + protected $form_code_js; + + /** + * Main class entry point + * + * @access public + * @param object ipsRegistry reference + * @return @e void [Outputs to screen] + */ + public function doExecute( ipsRegistry $registry ) + { + //----------------------------------------- + // Set up stuff + //----------------------------------------- + + $this->form_code = 'module=settings&section=settings'; + $this->form_code_js = 'module=settings§ion=settings'; + + //------------------------------- + // Grab, init and load settings + //------------------------------- + + $classToLoad = IPSLib::loadActionOverloader( IPSLib::getAppDir('core') . '/modules_admin/settings/settings.php', 'admin_core_settings_settings' ); + $settings = new $classToLoad( $this->registry ); + $settings->makeRegistryShortcuts( $this->registry ); + + ipsRegistry::getClass('class_localization')->loadLanguageFile( array( 'admin_tools' ), 'core' ); + + $settings->html = $this->registry->output->loadTemplate( 'cp_skin_settings', 'core' ); + $settings->form_code = $settings->html->form_code = 'module=settings&section=settings'; + $settings->form_code_js = $settings->html->form_code_js = 'module=settings§ion=settings'; + + $this->request['conf_title_keyword'] = 'calendar'; + $settings->return_after_save = $this->settings['base_url'] . $this->form_code; + $settings->_viewSettings(); + + //----------------------------------------- + // Pass to CP output hander + //----------------------------------------- + + $this->registry->getClass('output')->html_main .= $this->registry->getClass('output')->global_template->global_frame_wrapper(); + $this->registry->getClass('output')->sendOutput(); + } +} diff --git a/upload/admin/applications_addon/ips/calendar/modules_admin/settings/xml/index.html b/upload/admin/applications_addon/ips/calendar/modules_admin/settings/xml/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/modules_admin/settings/xml/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/modules_admin/settings/xml/menu.xml b/upload/admin/applications_addon/ips/calendar/modules_admin/settings/xml/menu.xml new file mode 100644 index 00000000..f44aec92 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/modules_admin/settings/xml/menu.xml @@ -0,0 +1,18 @@ + + + + + Calendar Settings + + + Calendar Settings + cal_settings + settings + + + 0 + + + + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/modules_public/ajax/defaultSection.php b/upload/admin/applications_addon/ips/calendar/modules_public/ajax/defaultSection.php new file mode 100644 index 00000000..975ffb2a --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/modules_public/ajax/defaultSection.php @@ -0,0 +1,13 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/modules_public/ajax/rating.php b/upload/admin/applications_addon/ips/calendar/modules_public/ajax/rating.php new file mode 100644 index 00000000..d6b3635b --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/modules_public/ajax/rating.php @@ -0,0 +1,196 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * Add rating AJAX + * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $ + * + * + * @author $Author: bfarber $ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Calendar + * @link http://www.invisionpower.com + * @since 25th January 2011 + * @version $Revision: 10721 $ + * + */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +class public_calendar_ajax_rating extends ipsAjaxCommand +{ + /** + * Class entry point + * + * @access public + * @param object Registry reference + * @return @e void [Outputs to screen/redirects] + */ + public function doExecute( ipsRegistry $registry ) + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $event_id = intval($this->request['event_id']); + $rating_id = intval($this->request['rating']); + + $this->registry->class_localization->loadLanguageFile( array( 'public_calendar' ) ); + + //----------------------------------------- + // Functions class + //----------------------------------------- + + $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'calendar' ) . "/sources/functions.php", 'app_calendar_classes_functions', 'calendar' ); + $functions = new $classToLoad( $this->registry ); + + //----------------------------------------- + // Get data + //----------------------------------------- + + if ( ! $event_id ) + { + $this->returnJsonArray( array( 'error_key' => 'topics_no_tid', 'error_code' => '104101.1' ) ); + } + + $event = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'cal_events', 'where' => 'event_id=' . $event_id ) ); + + if( !$event['event_id'] ) + { + $this->returnJsonArray( array( 'error_key' => 'topics_no_tid', 'error_code' => '104102.1' ) ); + } + + //----------------------------------------- + // Check permissions + //----------------------------------------- + + if( !$event['event_approved'] ) + { + $this->returnJsonArray( array( 'error_key' => 'topics_no_tid', 'error_code' => '104103.1' ) ); + } + + if( $event['event_private'] ) + { + if( ! $this->memberData['member_id'] OR $this->memberData['member_id'] != $event['event_member_id'] ) + { + $this->returnJsonArray( array( 'error_key' => 'topics_no_tid', 'error_code' => '104104.1' ) ); + } + } + + if( $event['event_perms'] != '*' ) + { + $permissionGroups = explode( ',', IPSText::cleanPermString( $event['event_perms'] ) ); + + if( !IPSMember::isInGroup( $this->memberData, $permissionGroups ) ) + { + $this->returnJsonArray( array( 'error_key' => 'topics_no_tid', 'error_code' => '104105.1' ) ); + } + } + + //----------------------------------------- + // Get our calendar + //----------------------------------------- + + $calendar = $functions->getCalendar( $event['event_calendar_id'] ); + + if( !$calendar['cal_id'] OR $calendar['cal_id'] != $event['event_calendar_id'] ) + { + $this->returnJsonArray( array( 'error_key' => 'topics_no_tid', 'error_code' => '104106.1' ) ); + } + + //----------------------------------------- + // Can we rate? + //----------------------------------------- + + $_can_rate = ( $this->memberData['member_id'] AND $this->registry->permissions->check( 'rate', $calendar ) ) ? intval( $this->memberData['g_topic_rate_setting'] ) : 0; + + if ( ! $_can_rate ) + { + $this->returnJsonArray( array( 'error_key' => 'topic_rate_no_perm', 'error_code' => '104107.1' ) ); + } + + //----------------------------------------- + // Sneaky members rating more than 5? + //----------------------------------------- + + if( $rating_id > 5 ) + { + $rating_id = 5; + } + + if( $rating_id < 0 ) + { + $rating_id = 0; + } + + //----------------------------------------- + // Have we rated before? + //----------------------------------------- + + $rating = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'cal_event_ratings', 'where' => "rating_eid={$event['event_id']} and rating_member_id=" . $this->memberData['member_id'] ) ); + + if ( $rating['rating_id'] ) + { + //----------------------------------------- + // Do we allow re-ratings? + //----------------------------------------- + + if ( $this->memberData['g_topic_rate_setting'] == 2 ) + { + if ( $rating_id != $rating['rating_value'] ) + { + $new_rating = $rating_id - $rating['rating_value']; + + $this->DB->update( 'cal_event_ratings', array( 'rating_value' => $rating_id ), 'rating_id=' . $rating['rating_id'] ); + + $this->DB->update( 'topics', array( + 'event_rating_total' => intval($event['event_rating_total']) + $new_rating, + 'event_rating_avg' => round( ( intval($event['event_rating_total']) + $new_rating ) / $event['event_rating_hits'] ) + ), 'event_id=' . $event['event_id'] ); + } + + $this->returnJsonArray( array( + 'rated' => 'update', + 'message' => $this->lang->words['event_rating_changed'], + 'topic_rating_total' => intval($event['event_rating_total']) + $new_rating, + 'topic_rating_hits' => $event['event_rating_hits'] + ) ); + } + else + { + $this->returnJsonArray( array( 'error_key' => 'topic_rated_already', 'error_code' => 0 ) ); + } + } + else + { + $this->DB->insert( 'cal_event_ratings', array( + 'rating_eid' => $event['event_id'], + 'rating_member_id' => $this->memberData['member_id'], + 'rating_value' => $rating_id, + 'rating_ip_address' => $this->member->ip_address, + ) ); + + $this->DB->update( 'cal_events', array( + 'event_rating_total' => intval( $event['event_rating_total'] ) + $rating_id, + 'event_rating_hits' => intval( $event['event_rating_hits'] ) + 1, + 'event_rating_avg' => round( ( intval( $event['event_rating_total'] ) + $rating_id ) / ( intval( $event['event_rating_hits'] ) + 1 ) ), + ), 'event_id=' . $event_id ); + + $this->returnJsonArray( array( + 'rated' => 'new', + 'message' => $this->lang->words['event_rating_done'], + 'topic_rating_total' => intval( $event['event_rating_total'] ) + $rating_id, + 'topic_rating_hits' => intval( $event['event_rating_hits'] ) + 1, + '_rate_int' => round( ( intval( $event['event_rating_total'] ) + $rating_id ) / ( intval( $event['event_rating_hits'] ) + 1 ) ) + ) ); + } + } +} diff --git a/upload/admin/applications_addon/ips/calendar/modules_public/ajax/rsvp.php b/upload/admin/applications_addon/ips/calendar/modules_public/ajax/rsvp.php new file mode 100644 index 00000000..c07a1603 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/modules_public/ajax/rsvp.php @@ -0,0 +1,146 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * RSVP for event + * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $ + * + * + * @author $Author: bfarber $ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Calendar + * @link http://www.invisionpower.com + * @since 25th January 2011 + * @version $Revision: 10721 $ + * + */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +class public_calendar_ajax_rsvp extends ipsAjaxCommand +{ + /** + * Class entry point + * + * @access public + * @param object Registry reference + * @return @e void [Outputs to screen/redirects] + */ + public function doExecute( ipsRegistry $registry ) + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $event_id = intval($this->request['event_id']); + + $this->registry->class_localization->loadLanguageFile( array( 'public_calendar' ) ); + + //----------------------------------------- + // Functions class + //----------------------------------------- + + $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'calendar' ) . "/sources/functions.php", 'app_calendar_classes_functions', 'calendar' ); + $functions = new $classToLoad( $this->registry ); + + //----------------------------------------- + // Get data + //----------------------------------------- + + if ( ! $event_id ) + { + $this->returnJsonError( $this->lang->words['rsvp__no_event'] ); + } + + $event = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'cal_events', 'where' => 'event_id=' . $event_id ) ); + + if( !$event['event_id'] ) + { + $this->returnJsonError( $this->lang->words['rsvp__no_event'] ); + } + + //----------------------------------------- + // Check permissions + //----------------------------------------- + + if( !$event['event_approved'] ) + { + $this->returnJsonError( $this->lang->words['rsvp__no_event'] ); + } + + if( $event['event_private'] ) + { + if( ! $this->memberData['member_id'] OR $this->memberData['member_id'] != $event['event_member_id'] ) + { + $this->returnJsonError( $this->lang->words['rsvp__no_event'] ); + } + } + + if( $event['event_perms'] != '*' ) + { + $permissionGroups = explode( ',', IPSText::cleanPermString( $event['event_perms'] ) ); + + if( !IPSMember::isInGroup( $this->memberData, $permissionGroups ) ) + { + $this->returnJsonError( $this->lang->words['rsvp__no_event'] ); + } + } + + //----------------------------------------- + // Get our calendar + //----------------------------------------- + + $calendar = $functions->getCalendar( $event['event_calendar_id'] ); + + if( !$calendar['cal_id'] OR $calendar['cal_id'] != $event['event_calendar_id'] ) + { + $this->returnJsonError( $this->lang->words['rsvp__no_event'] ); + } + + //----------------------------------------- + // Can we RSVP? + //----------------------------------------- + + $_can_rsvp = ( $this->memberData['member_id'] AND $this->registry->permissions->check( 'rsvp', $calendar ) AND $event['event_rsvp'] ) ? 1 : 0; + + if ( ! $_can_rsvp ) + { + $this->returnJsonError( $this->lang->words['rsvp__no_perm'] ); + } + + //----------------------------------------- + // Have we already RSVP? + //----------------------------------------- + + $_check = $this->DB->buildAndFetch( array( 'select' => 'rsvp_id', 'from' => 'cal_event_rsvp', 'where' => 'rsvp_event_id=' . $event['event_id'] . ' AND rsvp_member_id=' . $this->memberData['member_id'] ) ); + + if( $_check['rsvp_id'] ) + { + $this->returnJsonError( $this->lang->words['rsvp__already_rsvp'] ); + } + + //----------------------------------------- + // Store RSVP + //----------------------------------------- + + $_insert = array( + 'rsvp_event_id' => $event['event_id'], + 'rsvp_member_id' => $this->memberData['member_id'], + 'rsvp_date' => time(), + ); + + $this->DB->insert( 'cal_event_rsvp', $_insert ); + + $rsvp_id = $this->DB->getInsertId(); + + $this->returnJsonArray( array( 'html' => $this->registry->output->getTemplate( 'calendar' )->eventAttendee( array_merge( array( 'rsvp_id' => $rsvp_id, 'rsvp_date' => time() ), $this->memberData ), $event ) ) ); + } +} diff --git a/upload/admin/applications_addon/ips/calendar/modules_public/calendar/defaultSection.php b/upload/admin/applications_addon/ips/calendar/modules_public/calendar/defaultSection.php new file mode 100644 index 00000000..d31aa72e --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/modules_public/calendar/defaultSection.php @@ -0,0 +1,13 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/modules_public/calendar/moderate.php b/upload/admin/applications_addon/ips/calendar/modules_public/calendar/moderate.php new file mode 100644 index 00000000..3f6fca7a --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/modules_public/calendar/moderate.php @@ -0,0 +1,322 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * Calendar View + * Last Updated: $Date: 2013-02-08 20:52:39 -0500 (Fri, 08 Feb 2013) $ + * + * + * @author $Author: AndyMillne $ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Calendar + * @link http://www.invisionpower.com + * @version $Rev: 11970 $ + */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +class public_calendar_calendar_moderate extends ipsCommand +{ + /** + * Calendar data + * + * @var array + */ + protected $calendar = array(); + + /** + * Calendar functions + * + * @var object + */ + protected $functions; + + /** + * Class entry point + * + * @param object Registry reference + * @return @e void [Outputs to screen/redirects] + */ + public function doExecute( ipsRegistry $registry ) + { + //----------------------------------------- + // Init + //----------------------------------------- + + $this->registry->class_localization->loadLanguageFile( array( 'public_calendar' ), 'calendar' ); + + $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'calendar' ) . "/sources/functions.php", 'app_calendar_classes_functions', 'calendar' ); + $this->functions = new $classToLoad( $this->registry ); + $this->calendar = $this->functions->getCalendar(); + + //----------------------------------------- + // Switch + //----------------------------------------- + + switch( $this->request['do'] ) + { + case 'calendarEventApprove': + $this->calendarEventApprove(); + break; + + case 'delete': + $this->calendarEventDelete(); + break; + + case 'calendarRSVPRemove': + $this->removeRSVPAttendee(); + break; + } + } + + /** + * Deletes an attendee from RSVP list + * + * @return @e void + */ + public function removeRSVPAttendee() + { + //----------------------------------------- + // Init + //----------------------------------------- + + $event_id = intval( $this->request['event_id'] ); + $rsvp_id = intval( $this->request['attendee_id'] ); + $md5check = trim( $this->request['md5check'] ); + + if ( !$event_id OR !$rsvp_id ) + { + $this->registry->output->showError( 'attendee_bad_delete', 1043.1, null, null, 404 ); + } + + if ( $md5check != $this->member->form_hash ) + { + $this->registry->output->showError( 'calendar_bad_key', 2040.1, null, null, 403 ); + } + + //----------------------------------------- + // Get event and check permissions + //----------------------------------------- + + $event = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'cal_events', 'where' => "event_id=" . $event_id . " AND event_calendar_id=" . $this->calendar['cal_id'] ) ); + $rsvp = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'cal_event_rsvp', 'where' => 'rsvp_id=' . $rsvp_id ) ); + + if ( ! $this->memberData['g_is_supmod'] ) + { + if( !$this->calendar['cal_rsvp_owner'] OR !$this->memberData['member_id'] OR ( $this->memberData['member_id'] != $event['event_member_id'] AND $this->memberData['member_id'] != $rsvp['rsvp_member_id'] ) ) + { + $this->registry->output->showError( 'calendar_delete_no_perm', 1042.1, null, null, 403 ); + } + } + + //----------------------------------------- + // Delete attendee + //----------------------------------------- + + $this->DB->delete( 'cal_event_rsvp', 'rsvp_id=' . $rsvp_id ); + + //----------------------------------------- + // Redirect + //----------------------------------------- + + $this->registry->output->redirectScreen( $this->lang->words['cal_event_rsvpdelete'] , $this->settings['base_url'] . "app=calendar&module=calendar&section=view&do=showevent&event_id=" . $event['event_id'], $event['event_title_seo'], 'cal_event' ); + } + + /** + * Deletes an event from the calendar + * + * @return @e void + */ + public function calendarEventDelete() + { + //----------------------------------------- + // Init + //----------------------------------------- + + $event_id = intval( $this->request['event_id'] ); + $md5check = trim( $this->request['md5check'] ); + + if ( !$event_id ) + { + $this->registry->output->showError( 'calendar_bad_delete', 1041, null, null, 404 ); + } + + if ( $md5check != $this->member->form_hash ) + { + $this->registry->output->showError( 'calendar_bad_key', 2040, null, null, 403 ); + } + + //----------------------------------------- + // Get event and check permissions + //----------------------------------------- + + $event = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'cal_events', 'where' => "event_id=" . $event_id . " AND event_calendar_id=" . $this->calendar['cal_id'] ) ); + + if ( ! $this->memberData['g_is_supmod'] ) + { + if( !$this->memberData['member_id'] OR $this->memberData['member_id'] != $event['event_member_id'] ) + { + $this->registry->output->showError( 'calendar_delete_no_perm', 1042, null, null, 403 ); + } + } + + //----------------------------------------- + // Delete event + //----------------------------------------- + + $this->DB->delete( 'cal_events', 'event_id=' . $event_id ); + $this->DB->delete( 'cal_event_ratings', 'rating_eid=' . $event_id ); + $this->DB->delete( 'cal_event_comments', 'comment_eid=' . $event_id ); + $this->DB->delete( 'cal_event_rsvp', 'rsvp_event_id=' . $event_id ); + $this->DB->delete( 'cal_import_map', 'import_event_id=' . $event_id ); + + //----------------------------------------- + // Delete attachments + //----------------------------------------- + + $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'core' ) . '/sources/classes/attach/class_attach.php', 'class_attach' ); + $class_attach = new $classToLoad( $this->registry ); + $class_attach->type = 'event'; + $class_attach->init(); + $class_attach->bulkRemoveAttachment( array( $event_id ) ); + + //----------------------------------------- + // Remove likes + //----------------------------------------- + + require_once( IPS_ROOT_PATH . 'sources/classes/like/composite.php' );/*noLibHook*/ + $_like = classes_like::bootstrap( 'calendar', 'events' ); + $_like->remove( $event_id ); + + //----------------------------------------- + // Recache + //----------------------------------------- + + $this->cache->rebuildCache( 'calendar_events', 'calendar' ); + + //----------------------------------------- + // Redirect + //----------------------------------------- + + if ( $this->request['modcp'] == 'unapprovedevents' ) + { + $this->registry->output->silentRedirect( $this->settings['base_url'] . 'app=core&module=modcp&fromapp=calendar&tab=unapprovedevents' ); + } + else + { + $this->registry->output->redirectScreen( $this->lang->words['cal_event_delete'] , $this->settings['base_url'] . "app=calendar&module=calendar&section=view&cal_id=" . $this->calendar['cal_id'], $this->calendar['cal_title_seo'], 'cal_calendar' ); + } + } + + /** + * Approves an event + * + * @return @e void + */ + public function calendarEventApprove() + { + //----------------------------------------- + // Init + //----------------------------------------- + + $event_id = intval( $this->request['event_id'] ); + $md5check = trim( $this->request['md5check'] ); + + if ( ! $this->memberData['g_is_supmod'] ) + { + $this->registry->output->showError( 'calendar_bad_approve', 1043, null, null, 403 ); + } + + if ( $md5check != $this->member->form_hash ) + { + $this->registry->output->showError( 'calendar_bad_key', 2041, null, null, 403 ); + } + + //----------------------------------------- + // Get event + //----------------------------------------- + + $event = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'cal_events', 'where' => "event_id=" . $event_id . " AND event_calendar_id=" . $this->calendar['cal_id'] ) ); + + if( ! $event['event_id'] ) + { + $this->registry->output->showError( 'calendar_event_not_found', 1045, null, null, 404 ); + } + + //----------------------------------------- + // Event approved? + //----------------------------------------- + + $eventApproved = ( $event['event_approved'] ) ? 0 : 1; + + //----------------------------------------- + // Update event + //----------------------------------------- + + $this->DB->update( 'cal_events', array( 'event_approved' => $event['event_approved'] ? 0 : 1 ), 'event_id=' . $event_id ); + + //----------------------------------------- + // Hide likes + //----------------------------------------- + + require_once( IPS_ROOT_PATH . 'sources/classes/like/composite.php' );/*noLibHook*/ + $_like = classes_like::bootstrap( 'calendar', 'events' ); + $_like->toggleVisibility( $event_id, $event['event_approved'] ? 0 : 1 ); + + //----------------------------------------- + // Send notifications if approved + //----------------------------------------- + + if ( $eventApproved ) + { + require_once( IPS_ROOT_PATH . 'sources/classes/like/composite.php' );/*noLibHook*/ + $_like = classes_like::bootstrap( 'calendar', $type == 'edit' ? 'events' : 'calendars' ); + + $_url = $this->registry->output->buildSEOUrl( 'app=calendar&module=calendar&section=view&do=showevent&event_id=' . $event_id, 'public', $event['event_title_seo'], 'cal_event' ); + $_author = IPSMember::load( $event['event_member_id'] ); + + $_like->sendNotifications( $event['event_calendar_id'], array( 'immediate', 'offline' ), + array( + 'notification_key' => 'new_event', + 'notification_url' => $_url, + 'email_template' => 'add_event_follow', + 'email_subject' => sprintf( $this->lang->words[ 'add_event_follow_subject'], $_url, $event['event_title'] ), + 'build_message_array' => array( + 'NAME' => '-member:members_display_name-', + 'AUTHOR' => $_author['members_display_name'], + 'TITLE' => $event['event_title'], + 'URL' => $_url, + ) + ) ); + } + + //----------------------------------------- + // Recache + //----------------------------------------- + + $this->cache->rebuildCache( 'calendar_events', 'calendar' ); + + //----------------------------------------- + // Redirect + //----------------------------------------- + + $_dateData = explode( ' ', $event['event_start_date'] ); + $_dateBits = explode( '-', $_dateData[0] ); + + if ( $this->request['modcp'] == 'unapprovedevents' ) + { + $this->registry->output->silentRedirect( $this->settings['base_url'] . 'app=core&module=modcp&fromapp=calendar&tab=unapprovedevents' ); + } + else + { + $this->registry->output->silentRedirect( $this->settings['base_url'] . "app=calendar&module=calendar&section=view&cal_id={$this->calendar['cal_id']}&do=showday&y={$_dateBits[0]}&m={$_dateBits[1]}&d={$_dateBits[2]}&modfilter={$this->request['modfilter']}", $this->calendar['cal_title_seo'], true, 'cal_day' ); + } + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/modules_public/calendar/post.php b/upload/admin/applications_addon/ips/calendar/modules_public/calendar/post.php new file mode 100644 index 00000000..5ee66c33 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/modules_public/calendar/post.php @@ -0,0 +1,921 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * Calendar View + * Last Updated: $Date: 2012-10-11 17:27:04 -0400 (Thu, 11 Oct 2012) $ + * + * + * @author $Author: bfarber $ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Calendar + * @link http://www.invisionpower.com + * @version $Rev: 11446 $ + */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +class public_calendar_calendar_post extends ipsCommand +{ + /** + * Calendar data + * + * @var array + */ + protected $calendar = array(); + + /** + * Calendar functions + * + * @var object + */ + protected $functions; + + /** + * Class entry point + * + * @param object Registry reference + * @return @e void [Outputs to screen/redirects] + */ + public function doExecute( ipsRegistry $registry ) + { + //----------------------------------------- + // Init + //----------------------------------------- + + $this->registry->class_localization->loadLanguageFile( array( 'public_calendar' ), 'calendar' ); + $this->registry->class_localization->loadLanguageFile( array( 'public_usercp' ), 'core' ); + $this->registry->class_localization->loadLanguageFile( array( 'public_post' ), 'forums' ); + + $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'calendar' ) . "/sources/functions.php", 'app_calendar_classes_functions', 'calendar' ); + $this->functions = new $classToLoad( $this->registry ); + $this->calendar = $this->functions->getCalendar(); + $this->timezone = ( $this->memberData['time_offset'] OR $this->memberData['time_offset'] === '0' OR $this->memberData['time_offset'] === 0 ) ? $this->memberData['time_offset'] : $this->settings['time_offset']; + + //----------------------------------------- + // Check permissions + //----------------------------------------- + + if ( !$this->memberData['member_id'] ) + { + $this->registry->output->showError( 'calendar_no_guests', 1046, null, null, 403 ); + } + + if ( !$this->registry->permissions->check( 'start', $this->calendar ) ) + { + $this->registry->output->showError( 'calendar_no_post_perm', 1047, null, null, 403 ); + } + + //----------------------------------------- + // Start output stuff + //----------------------------------------- + + $this->registry->output->addNavigation( $this->lang->words['cal_page_title'], 'app=calendar', 'false', 'app=calendar' ); + $this->registry->output->addNavigation( $this->calendar['cal_title'], "app=calendar&module=calendar&section=view&cal_id={$this->calendar['cal_id']}", $this->calendar['cal_title_seo'], 'cal_calendar' ); + + //----------------------------------------- + // What are we doing + //----------------------------------------- + + switch( $this->request['do'] ) + { + case 'newevent': + $this->calendarEventForm( 'add' ); + break; + + case 'addnewevent': + $this->calendarEventSave( 'add' ); + break; + + case 'edit': + $this->calendarEventForm( 'edit' ); + break; + + case 'doedit': + $this->calendarEventSave( 'edit' ); + break; + } + + //----------------------------------------- + // Output + //----------------------------------------- + + $this->registry->output->setTitle( $this->lang->words['cal_page_title'] . ' - ' . $this->settings['board_name'] ); + + $this->registry->output->addContent( $this->output ); + $this->registry->output->sendOutput(); + } + + /** + * Form for creating/modifying calendar events + * + * @param string $type Either add or edit + * @return @e void + */ + public function calendarEventForm( $type='add' ) + { + //----------------------------------------- + // Init + //----------------------------------------- + + $event_id = $this->request['event_id'] ? intval( $this->request['event_id'] ) : 0; + $calendar_jump = $this->functions->getCalendarJump( $this->calendar['cal_id'], array( 'start' ) ); + $group_select = ''; + $allDay = 1; + + //----------------------------------------- + // Output stuff + //----------------------------------------- + + $this->registry->output->addToDocumentHead( 'javascript', "{$this->settings['js_base_url']}js/3rd_party/calendar_date_select/calendar_date_select.js" ); + + if( $this->settings['calendar_date_select_locale'] AND $this->settings['calendar_date_select_locale'] != 'en' ) + { + $this->registry->output->addToDocumentHead( 'javascript', "{$this->settings['js_base_url']}js/3rd_party/calendar_date_select/locale/{$this->settings['calendar_date_select_locale']}.js" ); + } + + $this->registry->output->addToDocumentHead( 'javascript', "{$this->settings['js_base_url']}js/3rd_party/calendar_date_select/format_{$this->settings['cal_date_format']}.js" ); + $this->registry->output->addToDocumentHead( 'importcss', "{$this->settings['css_base_url']}style_css/{$this->registry->output->skin['_csscacheid']}/calendar_select.css" ); + + //----------------------------------------- + // Adding or editing? + //----------------------------------------- + + if( $type == 'add' ) + { + if( $this->timezone ) + { + $_offset = ( $this->timezone * 3600 ); + } + + $nd = $this->request['d'] ? str_pad( $this->request['d'], 2, '0', STR_PAD_LEFT ) : gmstrftime( '%d', time() + $_offset ); + $nm = $this->request['m'] ? str_pad( $this->request['m'], 2, '0', STR_PAD_LEFT ) : gmstrftime( '%m', time() + $_offset ); + $ny = $this->request['y'] ? $this->request['y'] : gmstrftime( '%Y', time() + $_offset ); + $nh = $this->settings['cal_time_format'] == 'standard' ? gmstrftime( '%I', time() + $_offset ) : gmstrftime( '%H', time() + $_offset ); + $nmi = '00'; + $nap = gmstrftime( '%p', time() + $_offset ); + + $_fauxEndTime = strtotime( "now + 2 hours" ); + $fd = gmstrftime( '%d', $_fauxEndTime + $_offset ); + $fm = gmstrftime( '%m', $_fauxEndTime + $_offset ); + $fy = gmstrftime( '%Y', $_fauxEndTime + $_offset ); + $fh = $this->settings['cal_time_format'] == 'standard' ? gmstrftime( '%I', $_fauxEndTime + $_offset ) : gmstrftime( '%H', $_fauxEndTime + $_offset ); + $fmi = '00'; + $fap = gmstrftime( '%p', $_fauxEndTime + $_offset ); + + $_setEndTime = false; + + $event = array( + 'event_smilies' => 1, + 'event_content' => '', + 'event_timeset' => '', + 'event_recurring' => 0, + 'event_id' => 0, + 'event_post_key' => $this->request['post_key'] ? $this->request['post_key'] : md5( uniqid( microtime(), true ) ), + ); + } + else + { + //----------------------------------------- + // Get event + //----------------------------------------- + + if ( !$event_id ) + { + $this->registry->output->showError( 'calendar_event_not_found', 1048, null, null, 404 ); + } + + $event = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'cal_events', 'where' => 'event_id=' . $event_id ) ); + + if ( !$event['event_id'] ) + { + $this->registry->output->showError( 'calendar_event_not_found', 1049, null, null, 404 ); + } + + //----------------------------------------- + // Check permissions + //----------------------------------------- + + if ( $event['event_perms'] != '*' ) + { + $permissionGroups = explode( ',', IPSText::cleanPermString( $event['event_perms'] ) ); + + if( !IPSMember::isInGroup( $this->memberData, $permissionGroups ) ) + { + $this->registry->output->showError( 'calendar_event_not_found', 10411, null, null, 404 ); + } + } + + if ( !$this->memberData['g_is_supmod'] AND $this->memberData['member_id'] != $event['event_member_id'] ) + { + $this->registry->output->showError( 'calendar_no_edit_perm', 10410, null, null, 403 ); + } + + //----------------------------------------- + // Date stuff + //----------------------------------------- + + $_eventStart = strtotime( $event['event_start_date'] ); + $_eventEnd = ( $event['event_end_date'] AND $event['event_end_date'] != '0000-00-00 00:00:00' ) ? strtotime( $event['event_end_date'] ) : 0; + + //----------------------------------------- + // Apply timezone offset for editing user + //----------------------------------------- + + if( $this->timezone AND !$event['event_all_day'] ) + { + $_eventStart += ( $this->timezone * 3600 ); + $_eventEnd = $_eventEnd ? ( $_eventEnd + ( $this->timezone * 3600 ) ) : 0; + } + + $_hour = $this->settings['cal_time_format'] == 'standard' ? '%I' : '%H'; + + list( $nd, $nm, $ny, $nh, $nmi, $nap, $_nh ) = explode( '-', gmstrftime( "%d-%m-%Y-{$_hour}-%M-%p-%H", $_eventStart ) ); + + if( $_eventEnd ) + { + list( $fd, $fm, $fy, $fh, $fmi, $fap ) = explode( '-', gmstrftime( "%d-%m-%Y-{$_hour}-%M-%p", $_eventEnd ) ); + $_setEndTime = true; + } + else + { + $fd = $fm = $fy = $fh = $fmi = $fap = 0; + $_setEndTime = false; + } + + $allDay = $event['event_all_day']; + } + + //----------------------------------------- + // If we are previewing, reset.. + //----------------------------------------- + + if( $this->request['preview'] ) + { + $event['event_title'] = $this->request['event_title']; + $event['event_recurring'] = $this->request['set_recurfields'] ? $this->request['recur_unit'] : 0; + $event['event_private'] = $this->request['e_type'] == 'public' ? 0 : 1; + $event['event_smilies'] = $this->request['event_smilies']; + $event['event_content'] = $_POST['Post']; + $event['event_perms'] = count($this->request['e_groups']) ? implode( ",", $this->request['e_groups'] ) : '*'; + + $_ndate = $this->request['start_date']; + $_stTime = explode( ':', $this->request['start_time'] ); + $nh = $_stTime[0]; + $nmi = $_stTime[1]; + $nap = $this->request['start_time_ampm']; + $_edate = $this->request['end_date']; + $_etTime = explode( ':', $this->request['end_time'] ); + $fh = $_etTime[0]; + $fmi = $_etTime[1]; + $fap = $this->request['end_time_ampm']; + $allDay = $this->request['all_day']; + $_setEndTime = $this->request['set_enddate']; + + $this->timezone = $this->request['event_timezone']; + } + + //----------------------------------------- + // Time zone dropdown + //----------------------------------------- + + $_timeZoneOptions = ''; + + foreach( $this->lang->words as $_key => $_word ) + { + if( preg_match( "/^time_(-?[\d\.]+)$/", $_key, $match ) ) + { + $_timeZoneOptions .= "\n"; + } + } + + //----------------------------------------- + // Get editor + //----------------------------------------- + + $classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/editor/composite.php', 'classes_editor_composite' ); + $editor = new $classToLoad(); + + //----------------------------------------- + // Build group select menu + //----------------------------------------- + + if( $this->memberData['g_access_cp'] ) + { + foreach( $this->caches['group_cache'] as $r ) + { + $selected = IPSMember::isInGroup( array( 'member_group_id' => $r['g_id'], 'mgroup_others' => '' ), explode( ',', IPSText::cleanPermString( $event['event_perms'] ) ), false ) ? " selected='selected'" : ''; + + $group_select .= "\n"; + } + } + + //----------------------------------------- + // Unparse event content for editing + //----------------------------------------- + + if ( $event['event_content'] ) + { + $editor->setContent( $event['event_content'], 'calendar' ); + } + + //----------------------------------------- + // Get attachments class + //----------------------------------------- + + $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'core' ) . '/sources/classes/attach/class_attach.php', 'class_attach' ); + $class_attach = new $classToLoad( $this->registry ); + $class_attach->type = 'event'; + $class_attach->attach_post_key = $event['event_post_key']; + $class_attach->init(); + $class_attach->getUploadFormSettings(); + + //----------------------------------------- + // Date (formatted based on setting) + //----------------------------------------- + + if( !$this->request['preview'] ) + { + switch( $this->settings['cal_date_format'] ) + { + case 'american': + default: + $_ndate = $nm . '/' . $nd . '/' . $ny; + $_edate = $fm ? $fm . '/' . $fd . '/' . $fy : ''; + break; + + case 'danish': + $_ndate = $ny . '/' . $nm . '/' . $nd; + $_edate = $fm ? $fy . '/' . $fm . '/' . $fd : ''; + break; + + case 'italian': + $_ndate = $nd . '/' . $nm . '/' . $ny; + $_edate = $fm ? $fd . '/' . $fm . '/' . $fy : ''; + break; + + case 'db': + $_ndate = $ny . '-' . $nm . '-' . $nd; + $_edate = $fm ? $fy . '-' . $fm . '-' . $fd : ''; + break; + } + } + + //----------------------------------------- + // Output + //----------------------------------------- + + $this->output .= $this->registry->output->getTemplate( 'calendar' )->calendarEventForm( + array( + 'event' => $event, + 'calendar' => $this->calendar, + 'code' => $type == 'edit' ? 'doedit' : 'addnewevent', + 'jump' => $calendar_jump, + 'timezone' => $this->timezone, + '_time_zones' => $_timeZoneOptions, + '_can_set_rsvp' => $this->registry->permissions->check( 'askrsvp', $this->calendar ), + 'dates' => array( + 'nd' => $nd, + 'nm' => $nm, + 'ny' => $ny, + 'nh' => $nh, + 'nmi' => $nmi, + 'nap' => $nap, + 'fd' => $fd, + 'fm' => $fm, + 'fy' => $fy, + 'fh' => $fh, + 'fmi' => $fmi, + 'fap' => $fap, + 'allday' => $allDay, + 'enddate' => $_setEndTime, + 'ndate' => $_ndate, + 'edate' => $_edate, + ), + '_groupSelect' => $group_select, + 'editor' => $editor->show( 'Post' ), + 'button' => $type == 'edit' ? $this->lang->words['calendar_edit_submit'] : $this->lang->words['calendar_submit'], + 'uploadForm' => $this->memberData['g_attach_max'] != -1 ? + $this->registry->getClass('output')->getTemplate('post')->uploadForm( $event['event_post_key'], 'event', $class_attach->attach_stats, $event['event_id'], 0 ) : + "", + ) + ); + + $this->registry->output->addNavigation( $this->lang->words['post_new_event'] ); + } + + /** + * Saves the add/edit calendar event form + * + * @param string $type Either add or edit + * @return @e void + */ + public function calendarEventSave( $type='add' ) + { + //----------------------------------------- + // Check permissions + //----------------------------------------- + + if ( $this->request['auth_key'] != $this->member->form_hash ) + { + $this->registry->output->showError( 'no_permission', 10410, null, null, 403 ); + } + + if( $this->request['preview'] ) + { + return $this->calendarEventForm( $type ); + } + + //----------------------------------------- + // Init + //----------------------------------------- + + $event_id = intval( $this->request['event_id'] ); + $calendar_id = intval( $this->request['event_calendar_id'] ); + $_calendar = $this->functions->getCalendar( $calendar_id ); + $event_title = IPSText::getTextClass( 'bbcode' )->stripBadWords( trim( $this->request['event_title'] ) ); + $start_date = ''; + $end_date = ''; + $recurring = 0; + + //----------------------------------------- + // Verify start date/time + //----------------------------------------- + + switch( $this->settings['cal_date_format'] ) + { + case 'american': + default: + $_startBits = explode( '/', $this->request['start_date'] ); + + if( $this->request['set_enddate'] ) + { + $_endBits = $this->request['end_date'] ? explode( '/', $this->request['end_date'] ) : array(); + } + break; + + case 'danish': + $_inputStart = explode( '/', $this->request['start_date'] ); + $_startBits = array( + 0 => $_inputStart[1], + 1 => $_inputStart[2], + 2 => $_inputStart[0], + ); + + if( $this->request['set_enddate'] ) + { + $_inputEnd = $this->request['end_date'] ? explode( '/', $this->request['end_date'] ) : array(); + $_endBits = array( + 0 => $_inputEnd[1], + 1 => $_inputEnd[2], + 2 => $_inputEnd[0], + ); + } + break; + + case 'italian': + $_inputStart = explode( '/', $this->request['start_date'] ); + $_startBits = array( + 0 => $_inputStart[1], + 1 => $_inputStart[0], + 2 => $_inputStart[2], + ); + + if( $this->request['set_enddate'] ) + { + $_inputEnd = $this->request['end_date'] ? explode( '/', $this->request['end_date'] ) : array(); + $_endBits = array( + 0 => $_inputEnd[1], + 1 => $_inputEnd[0], + 2 => $_inputEnd[2], + ); + } + break; + + case 'db': + $_inputStart = explode( '-', $this->request['start_date'] ); + $_startBits = array( + 0 => $_inputStart[1], + 1 => $_inputStart[2], + 2 => $_inputStart[0], + ); + + if( $this->request['set_enddate'] ) + { + $_inputEnd = $this->request['end_date'] ? explode( '-', $this->request['end_date'] ) : array(); + $_endBits = array( + 0 => $_inputEnd[1], + 1 => $_inputEnd[2], + 2 => $_inputEnd[0], + ); + } + break; + } + + if( !$this->request['start_date'] OR count($_startBits) != 3 ) + { + $this->registry->output->showError( 'calendar_invalid_date', 10427.0 ); + } + else if( !@checkdate( $_startBits[0], $_startBits[1], $_startBits[2] ) ) + { + $this->registry->output->showError( 'calendar_invalid_date', 10427.1 ); + } + + if( $this->request['all_day'] ) + { + $start_date = gmmktime( 0, 0, 0, $_startBits[0], $_startBits[1], $_startBits[2] ); + } + else + { + $_time = explode( ':', $this->request['start_time'] ); + + if( $this->settings['cal_time_format'] == 'standard' ) + { + if( count($_time) != 2 OR $_time[0] > 12 OR $_time[1] > 59 ) + { + $this->registry->output->showError( 'calendar_invalid_time', 10427.2 ); + } + + if( $this->request['start_time_ampm'] == 'PM' AND $_time[0] < 12 ) + { + $_time[0] += 12; + } + else if( $this->request['start_time_ampm'] == 'AM' AND $_time[0] == 12 ) + { + $_time[0] = 0; + } + } + else + { + if( count($_time) != 2 OR $_time[0] > 23 OR $_time[1] > 59 ) + { + $this->registry->output->showError( 'calendar_invalid_time', 10427.2 ); + } + } + + $start_date = gmmktime( $_time[0], $_time[1], 0, $_startBits[0], $_startBits[1], $_startBits[2] ); + } + + //----------------------------------------- + // Verify end date/time + //----------------------------------------- + + if( $this->request['set_enddate'] ) + { + if( count($_endBits) != 3 ) + { + $this->registry->output->showError( 'calendar_invalid_date', 10427.3 ); + } + else if( !@checkdate( $_endBits[0], $_endBits[1], $_endBits[2] ) ) + { + $this->registry->output->showError( 'calendar_invalid_date', 10427.4 ); + } + + if( $this->request['all_day'] ) + { + $end_date = gmmktime( 0, 0, 0, $_endBits[0], $_endBits[1], $_endBits[2] ); + } + else + { + $_time = explode( ':', $this->request['end_time'] ); + + if( $this->settings['cal_time_format'] == 'standard' ) + { + if( count($_time) != 2 OR $_time[0] > 12 OR $_time[1] > 59 ) + { + $this->registry->output->showError( 'calendar_invalid_date', 10427.5 ); + } + + if( $this->request['end_time_ampm'] == 'PM' ) + { + $_time[0] += 12; + } + } + else + { + if( count($_time) != 2 OR $_time[0] > 23 OR $_time[1] > 59 ) + { + $this->registry->output->showError( 'calendar_invalid_date', 10427.5 ); + } + } + + $end_date = gmmktime( $_time[0], $_time[1], 0, $_endBits[0], $_endBits[1], $_endBits[2] ); + } + } + + if( $end_date AND $end_date < $start_date ) + { + $this->registry->output->showError( 'calendar_range_wrong', 10421 ); + } + else if( $this->request['end_date'] AND $this->request['set_enddate'] AND !$end_date ) + { + $this->registry->output->showError( 'calendar_range_wrong', 10421.1 ); + } + + //----------------------------------------- + // Set recurring flag + //----------------------------------------- + + if( $this->request['set_recurfields'] ) + { + if( !$end_date ) + { + $this->registry->output->showError( 'recurring_requires_enddate', 10427.6 ); + } + + $recurring = intval($this->request['recur_unit']); + } + + //----------------------------------------- + // Adjust to GMT + //----------------------------------------- + + if( $this->request['event_timezone'] AND !$this->request['all_day'] ) + { + $start_date = $start_date - ( $this->request['event_timezone'] * 3600 ); + + if( $end_date ) + { + $end_date = $end_date - ( $this->request['event_timezone'] * 3600 ); + } + } + + $start_date = gmstrftime( "%Y-%m-%d %H:%M:00", $start_date ); + $end_date = $end_date ? gmstrftime( "%Y-%m-%d %H:%M:00", $end_date ) : 0; + + //----------------------------------------- + // Check posted content for errors + //----------------------------------------- + + if ( strlen( trim( IPSText::removeControlCharacters( IPSText::br2nl( $_POST['Post'] ) ) ) ) < 1 ) + { + $this->registry->output->showError( 'calendar_post_too_short', 10417, null, null, 403 ); + } + + $this->settings['max_post_length'] = $this->settings['max_post_length'] ? $this->settings['max_post_length'] : 2140000; + + if( IPSText::mbstrlen( $_POST['Post'] ) > ( $this->settings['max_post_length'] * 1024 ) ) + { + $this->registry->output->showError( 'calendar_post_too_long', 10418, null, null, 403 ); + } + + if( !$event_title OR IPSText::mbstrlen( $event_title ) < 2 ) + { + $this->registry->output->showError( 'calendar_no_title', 10419, null, null, 403 ); + } + + if( IPSText::mbstrlen( $event_title ) > 200 ) + { + $this->registry->output->showError( 'calendar_title_too_long', 10420, null, null, 403 ); + } + + //----------------------------------------- + // Adding or editing? + //----------------------------------------- + + if ( $type == 'edit' ) + { + //----------------------------------------- + // Get event + //----------------------------------------- + + if ( ! $event_id ) + { + $this->registry->output->showError( 'calendar_event_not_found', 10414, null, null, 404 ); + } + + $event = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'cal_events', 'where' => 'event_id=' . $event_id ) ); + + if ( !$event['event_id'] ) + { + $this->registry->output->showError( 'calendar_event_not_found', 10415, null, null, 404 ); + } + + //----------------------------------------- + // Do we have permission to edit? + //----------------------------------------- + + if ( !$this->memberData['g_is_supmod'] AND $this->memberData['member_id'] != $event['event_member_id'] ) + { + $this->registry->output->showError( 'calendar_no_edit_perm', 10416, null, null, 403 ); + } + } + + //----------------------------------------- + // Set event view permissions + //----------------------------------------- + + if( $this->memberData['g_access_cp'] ) + { + if( is_array( $this->request['e_groups'] ) ) + { + foreach( $this->cache->getCache('group_cache') as $group ) + { + if( $group['g_access_cp'] ) + { + $this->request['e_groups'][] = $group['g_id']; + } + } + + $read_perms = implode( ",", $this->request['e_groups'] ); + } + } + + $read_perms = $read_perms ? $read_perms : '*'; + + //----------------------------------------- + // Get editor and format post + //----------------------------------------- + + $classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/editor/composite.php', 'classes_editor_composite' ); + $editor = new $classToLoad(); + + $event_content = $editor->process( $_POST['Post'] ); + + IPSText::getTextClass( 'bbcode' )->parse_html = 0; + IPSText::getTextClass( 'bbcode' )->parse_smilies = intval($this->request['enableemo']); + IPSText::getTextClass( 'bbcode' )->parse_bbcode = 1; + IPSText::getTextClass( 'bbcode' )->parsing_section = 'calendar'; + + $event_content = IPSText::getTextClass( 'bbcode' )->preDbParse( $event_content ); + + //----------------------------------------- + // Event approved? + //----------------------------------------- + + if( $this->request['e_type'] == 'private' ) + { + $event_approved = 1; + } + else + { + $event_approved = $this->registry->permissions->check( 'nomod', $_calendar ) ? 1 : ( $_calendar['cal_moderate'] ? 0 : 1 ); + } + + //----------------------------------------- + // Store the event + //----------------------------------------- + + if ( $type == 'add' ) + { + //----------------------------------------- + // Format array for storage + //----------------------------------------- + + $_eventData = array( + 'event_calendar_id' => $calendar_id, + 'event_member_id' => $this->memberData['member_id'], + 'event_content' => $event_content, + 'event_title' => $event_title, + 'event_title_seo' => IPSText::makeSeoTitle( $event_title ), + 'event_smilies' => intval($this->request['enableemo']), + 'event_comments' => 0, + 'event_perms' => $read_perms, + 'event_private' => $this->request['e_type'] == 'private' ? 1 : 0, + 'event_approved' => $event_approved, + 'event_saved' => time(), + 'event_lastupdated' => time(), + 'event_recurring' => $recurring, + 'event_start_date' => $start_date, + 'event_end_date' => $end_date, + 'event_post_key' => $this->request['post_key'], + 'event_rsvp' => $this->registry->permissions->check( 'askrsvp', $_calendar ) ? intval($this->request['event_rsvp']) : 0, + 'event_sequence' => 0, + 'event_all_day' => intval($this->request['all_day']), + ); + + //----------------------------------------- + // Data hooks + //----------------------------------------- + + IPSLib::doDataHooks( $_eventData, 'calendarAddEvent' ); + + //----------------------------------------- + // Insert + //----------------------------------------- + + $this->DB->insert( 'cal_events', $_eventData ); + + $event_id = $this->DB->getInsertId(); + + //----------------------------------------- + // Set language strings + //----------------------------------------- + + $_langString = $event_approved ? $this->lang->words['new_event_redirect'] : $this->lang->words['new_event_mod']; + } + else + { + //----------------------------------------- + // Format array for storage + //----------------------------------------- + + $_eventData = array( + 'event_calendar_id' => $calendar_id, + 'event_content' => $event_content, + 'event_title' => $event_title, + 'event_title_seo' => IPSText::makeSeoTitle( $event_title ), + 'event_smilies' => intval($this->request['enableemo']), + 'event_perms' => $read_perms, + 'event_private' => $this->request['e_type'] == 'private' ? 1 : 0, + 'event_approved' => $event_approved, + 'event_lastupdated' => time(), + 'event_recurring' => $recurring, + 'event_start_date' => $start_date, + 'event_end_date' => $end_date, + 'event_post_key' => $this->request['post_key'], + 'event_rsvp' => $this->registry->permissions->check( 'askrsvp', $_calendar ) ? intval($this->request['event_rsvp']) : $event['event_rsvp'], + 'event_sequence' => intval($event['event_rsvp']) + 1, + 'event_all_day' => intval($this->request['all_day']), + ); + + //----------------------------------------- + // Data hooks + //----------------------------------------- + + IPSLib::doDataHooks( $_eventData, 'calendarEditEvent' ); + + //----------------------------------------- + // Update database + //----------------------------------------- + + $this->DB->update( 'cal_events', $_eventData, 'event_id=' . $event_id ); + + //----------------------------------------- + // Set language strings + //----------------------------------------- + + $_langString = $event_approved ? $this->lang->words['edit_event_redirect'] : $this->lang->words['new_event_mod']; + } + + //----------------------------------------- + // Upload attachments + //----------------------------------------- + + if( $this->memberData['g_attach_max'] != -1 ) + { + $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'core' ) . '/sources/classes/attach/class_attach.php', 'class_attach' ); + $class_attach = new $classToLoad( $this->registry ); + + $class_attach->type = 'event'; + $class_attach->attach_post_key = $_eventData['event_post_key']; + $class_attach->attach_rel_id = $event_id; + $class_attach->init(); + + $class_attach->processMultipleUploads(); + $class_attach->postProcessUpload( array() ); + } + + //----------------------------------------- + // Send notifications + //----------------------------------------- + + if ( $event_approved ) + { + require_once( IPS_ROOT_PATH . 'sources/classes/like/composite.php' );/*noLibHook*/ + $_like = classes_like::bootstrap( 'calendar', $type == 'edit' ? 'events' : 'calendars' ); + + $_url = $this->registry->output->buildSEOUrl( 'app=calendar&module=calendar&section=view&do=showevent&event_id=' . $event_id, 'public', $_eventData['event_title_seo'], 'cal_event' ); + + $_like->sendNotifications( $type == 'edit' ? $event_id : $_eventData['event_calendar_id'], array( 'immediate', 'offline' ), + array( + 'notification_key' => $type == 'edit' ? 'updated_event' : 'new_event', + 'notification_url' => $_url, + 'email_template' => $type. '_event_follow', + 'email_subject' => sprintf( $this->lang->words[ $type . '_event_follow_subject'], $_url, $_eventData['event_title'] ), + 'build_message_array' => array( + 'NAME' => '-member:members_display_name-', + 'AUTHOR' => $this->memberData['members_display_name'], + 'TITLE' => $_eventData['event_title'], + 'URL' => $_url, + ) + ) ); + } + + //----------------------------------------- + // Rebuild cache + //----------------------------------------- + + $this->cache->rebuildCache( 'calendar_events', 'calendar' ); + + //----------------------------------------- + // Redirect + //----------------------------------------- + + if ( $event_approved ) + { + $this->registry->output->redirectScreen( $_langString, $this->settings['base_url'] . "app=calendar&module=calendar&section=view&do=showevent&event_id=" . $event_id, $_eventData['event_title_seo'], 'cal_event' ); + } + else + { + $this->registry->output->redirectScreen( $_langString, $this->settings['base_url'] . "app=calendar&module=calendar&section=view&cal_id=" . $calendar_id, $this->caches['calendars'][ $calendar_id ]['cal_title_seo'], 'cal_calendar' ); + } + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/modules_public/calendar/rating.php b/upload/admin/applications_addon/ips/calendar/modules_public/calendar/rating.php new file mode 100644 index 00000000..c2534023 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/modules_public/calendar/rating.php @@ -0,0 +1,194 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * Add rating fallback + * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $ + * + * + * @author $Author: bfarber $ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Calendar + * @link http://www.invisionpower.com + * @since 25th January 2011 + * @version $Revision: 10721 $ + * + */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +class public_calendar_calendar_rating extends ipsCommand +{ + /** + * Class entry point + * + * @access public + * @param object Registry reference + * @return @e void [Outputs to screen/redirects] + */ + public function doExecute( ipsRegistry $registry ) + { + //----------------------------------------- + // Check key + //----------------------------------------- + + if ( $this->request['secure_key'] != $this->member->form_hash ) + { + $this->registry->output->showError( 'usercp_forums_bad_key', 104100, null, null, 403 ); + } + + //----------------------------------------- + // INIT + //----------------------------------------- + + $event_id = intval($this->request['event_id']); + $rating_id = intval($this->request['rating']); + + $this->registry->class_localization->loadLanguageFile( array( 'public_calendar' ) ); + + //----------------------------------------- + // Functions class + //----------------------------------------- + + $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'calendar' ) . "/sources/functions.php", 'app_calendar_classes_functions', 'calendar' ); + $functions = new $classToLoad( $this->registry ); + + //----------------------------------------- + // Get data + //----------------------------------------- + + if ( ! $event_id ) + { + $this->registry->output->showError( 'no_event_for_rate', 104101, null, null, 404 ); + } + + $event = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'cal_events', 'where' => 'event_id=' . $event_id ) ); + + if( !$event['event_id'] ) + { + $this->registry->output->showError( 'no_event_for_rate', 104102, null, null, 404 ); + } + + //----------------------------------------- + // Check permissions + //----------------------------------------- + + if( !$event['event_approved'] ) + { + $this->registry->output->showError( 'no_event_for_rate', 104103, null, null, 404 ); + } + + if( $event['event_private'] ) + { + if( ! $this->memberData['member_id'] OR $this->memberData['member_id'] != $event['event_member_id'] ) + { + $this->registry->output->showError( 'no_event_for_rate', 104104, null, null, 404 ); + } + } + + if( $event['event_perms'] != '*' ) + { + $permissionGroups = explode( ',', IPSText::cleanPermString( $event['event_perms'] ) ); + + if( !IPSMember::isInGroup( $this->memberData, $permissionGroups ) ) + { + $this->registry->output->showError( 'no_event_for_rate', 104105, null, null, 404 ); + } + } + + //----------------------------------------- + // Get our calendar + //----------------------------------------- + + $calendar = $functions->getCalendar( $event['event_calendar_id'] ); + + if( !$calendar['cal_id'] OR $calendar['cal_id'] != $event['event_calendar_id'] ) + { + $this->registry->output->showError( 'no_event_for_rate', 104106, null, null, 404 ); + } + + //----------------------------------------- + // Can we rate? + //----------------------------------------- + + $_can_rate = ( $this->memberData['member_id'] AND $this->registry->permissions->check( 'rate', $calendar ) ) ? intval( $this->memberData['g_topic_rate_setting'] ) : 0; + + if ( ! $_can_rate ) + { + $this->registry->output->showError( 'no_rate_permission', 104107, null, null, 403 ); + } + + //----------------------------------------- + // Sneaky members rating more than 5? + //----------------------------------------- + + if( $rating_id > 5 ) + { + $rating_id = 5; + } + + if( $rating_id < 0 ) + { + $rating_id = 0; + } + + //----------------------------------------- + // Have we rated before? + //----------------------------------------- + + $rating = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'cal_event_ratings', 'where' => "rating_eid={$event['event_id']} and rating_member_id=" . $this->memberData['member_id'] ) ); + + if ( $rating['rating_id'] ) + { + //----------------------------------------- + // Do we allow re-ratings? + //----------------------------------------- + + if ( $this->memberData['g_topic_rate_setting'] == 2 ) + { + if ( $rating_id != $rating['rating_value'] ) + { + $new_rating = $rating_id - $rating['rating_value']; + + $this->DB->update( 'cal_event_ratings', array( 'rating_value' => $rating_id ), 'rating_id=' . $rating['rating_id'] ); + + $this->DB->update( 'cal_events', array( + 'event_rating_total' => intval($event['event_rating_total']) + $new_rating, + 'event_rating_avg' => round( ( intval($event['event_rating_total']) + $new_rating ) / $event['event_rating_hits'] ) + ), 'event_id=' . $event['event_id'] ); + } + + $this->registry->output->redirectScreen( $this->lang->words['event_rating_changed'] , $this->settings['base_url'] . "app=calendar&module=calendar&section=view&do=showevent&event_id={$event['event_id']}", $event['event_title_seo'], 'cal_event' ); + } + else + { + $this->registry->output->redirectScreen( $this->lang->words['event_rated_already'] , $this->settings['base_url'] . "app=calendar&module=calendar&section=view&do=showevent&event_id={$event['event_id']}", $event['event_title_seo'], 'cal_event' ); + } + } + else + { + $this->DB->insert( 'cal_event_ratings', array( + 'rating_eid' => $event['event_id'], + 'rating_member_id' => $this->memberData['member_id'], + 'rating_value' => $rating_id, + 'rating_ip_address' => $this->member->ip_address, + ) ); + + $this->DB->update( 'cal_events', array( + 'event_rating_total' => intval( $event['event_rating_total'] ) + $rating_id, + 'event_rating_hits' => intval( $event['event_rating_hits'] ) + 1, + 'event_rating_avg' => round( ( intval( $event['event_rating_total'] ) + $rating_id ) / ( intval( $event['event_rating_hits'] ) + 1 ) ), + ), 'event_id=' . $event_id ); + } + + $this->registry->output->redirectScreen( $this->lang->words['event_rating_done'] , $this->settings['base_url'] . "app=calendar&module=calendar&section=view&do=showevent&event_id={$event['event_id']}", $event['event_title_seo'], 'cal_event' ); + } +} diff --git a/upload/admin/applications_addon/ips/calendar/modules_public/calendar/view.php b/upload/admin/applications_addon/ips/calendar/modules_public/calendar/view.php new file mode 100644 index 00000000..c07052ad --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/modules_public/calendar/view.php @@ -0,0 +1,2031 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * Calendar View + * Last Updated: $Date: 2013-02-08 20:52:39 -0500 (Fri, 08 Feb 2013) $ + * + * + * @author $Author: AndyMillne $ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Calendar + * @link http://www.invisionpower.com + * @version $Rev: 11970 $ + */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +class public_calendar_calendar_view extends ipsCommand +{ + /** + * Calendar data + * + * @var array + */ + protected $calendar = array(); + + /** + * Cache of events we've pulled from DB + * + * @var array + */ + protected $events = array(); + + /** + * Chosen date bits + * + * @var array + */ + protected $chosen_date = array(); + + /** + * Calendar functions + * + * @var object + */ + protected $functions; + + /** + * Like object + * + * @var object + */ + protected $_like; + + /** + * Flag to indicate if we can report events or not + * + * @var bool + */ + protected $canReport = 'notinit'; + + /** + * Class entry point + * + * @param object Registry reference + * @return @e void [Outputs to screen/redirects] + */ + public function doExecute( ipsRegistry $registry ) + { + //----------------------------------------- + // Init + //----------------------------------------- + + $this->initCalendar(); + + //----------------------------------------- + // Start navigation now - other functions append + //----------------------------------------- + + $this->registry->output->addNavigation( $this->lang->words['cal_page_title'], 'app=calendar', 'false', 'app=calendar' ); + + if( $this->request['do'] != 'showevent' ) + { + $this->registry->output->addNavigation( $this->calendar['cal_title'], "app=calendar&module=calendar&section=view&cal_id={$this->calendar['cal_id']}", $this->calendar['cal_title_seo'], 'cal_calendar' ); + } + + //----------------------------------------- + // What are we doing + //----------------------------------------- + + switch( $this->request['do'] ) + { + case 'showday': + $this->calendarShowDay(); + break; + + case 'showevent': + $this->calendarShowEvent(); + break; + + case 'showweek': + $this->calendarShowWeek(); + break; + + default: + $this->calendarShowMonth(); + break; + } + + //----------------------------------------- + // Output + //----------------------------------------- + + $this->registry->output->setTitle( $this->page_title ? $this->page_title . ' - ' . $this->settings['board_name'] : $this->lang->words['cal_page_title'] . ' - ' . $this->settings['board_name'] ); + $this->registry->output->addContent( $this->output ); + $this->registry->output->sendOutput(); + } + + /** + * Initialize calendar + * + * @param bool Return instead of throw error + * @param bool Ignore permissions + * @return @e void + */ + public function initCalendar( $return=false, $ignorePermissions=false ) + { + //----------------------------------------- + // Language files + //----------------------------------------- + + $this->registry->class_localization->loadLanguageFile( array( 'public_calendar' ), 'calendar' ); + + //----------------------------------------- + // Functions class + //----------------------------------------- + + $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'calendar' ) . "/sources/functions.php", 'app_calendar_classes_functions', 'calendar' ); + $this->functions = new $classToLoad( $this->registry, $ignorePermissions, $return ); + + if( $this->functions === false ) + { + if( $return ) + { + return false; + } + } + + //----------------------------------------- + // Get our calendar + //----------------------------------------- + + $this->calendar = $this->functions->getCalendar(); + + if( !$this->calendar['cal_id'] ) + { + if( $return ) + { + return false; + } + + $this->registry->output->showError( 'no_calendar_permission', 104211.1, null, null, 403 ); + } + + //----------------------------------------- + // Figure out requested date + //----------------------------------------- + + $this->chosen_date = array( + 'month' => empty($this->request['m']) ? gmstrftime( '%m' ) : str_pad( intval($this->request['m']), 2, '0', STR_PAD_LEFT ), + 'year' => empty($this->request['y']) ? gmstrftime( '%Y' ) : intval($this->request['y']), + ); + + if( ! checkdate( $this->chosen_date['month'], 1 , $this->chosen_date['year'] ) ) + { + $this->chosen_date = array( + 'month' => gmstrftime( '%m' ), + 'year' => gmstrftime( '%Y' ), + ); + } + + $this->chosen_date['month_name'] = gmstrftime( '%B', gmmktime( 0, 0, 0, $this->chosen_date['month'], 15, $this->chosen_date['year'] ) ); + + $this->registry->output->addToDocumentHead( 'raw', "" ); + + return true; + } + + /** + * Return the words for the days of the week + * + * @return array + */ + protected function _getDayWords() + { + if( !$this->settings['ipb_calendar_mon'] ) + { + return array( $this->lang->words['D_0'], $this->lang->words['D_1'], $this->lang->words['D_2'], + $this->lang->words['D_3'], $this->lang->words['D_4'], $this->lang->words['D_5'], + $this->lang->words['D_6'] ); + } + else + { + return array( $this->lang->words['D_1'], $this->lang->words['D_2'], $this->lang->words['D_3'], + $this->lang->words['D_4'], $this->lang->words['D_5'], $this->lang->words['D_6'], + $this->lang->words['D_0'] ); + } + } + + /** + * Returns birthdays based on requested month + * + * @param integer $month Month + * @return @e void + */ + protected function _getBirthdaysForMonth( $month ) + { + static $birthdayCache = array(); + + if( ! isset( $birthdayCache[ $month ] ) ) + { + $prev_month = $this->calendarGetPreviousMonth( $month, gmstrftime( '%Y' ) ); + $next_month = $this->calendarGetNextMonth( $month, gmstrftime( '%Y' ) ); + + $birthdayCache[ $month ] = array(); + $birthdayCache[ $next_month['month_id'] ] = array(); + $birthdayCache[ $prev_month['month_id'] ] = array(); + + $this->DB->build( array( 'select' => 'bday_year, bday_day, bday_month, member_id, member_group_id, members_display_name, members_seo_name', 'from' => 'members', 'where' => 'member_banned=0 AND bday_month IN(' . $prev_month['month_id'] . ',' . $month . ',' . $next_month['month_id'] . ')' ) ); + $this->DB->execute(); + + while ($r = $this->DB->fetch()) + { + $birthdayCache[ str_pad( $r['bday_month'], 2, '0', STR_PAD_LEFT ) ][ str_pad( $r['bday_day'], 2, '0', STR_PAD_LEFT ) ][] = $r; + } + } + + return $birthdayCache[ $month ]; + } + + /** + * Make Birthday HTML (return HTML for bdays) + * + * @param integer $month Month + * @param integer $day Day + * @param integer $year Year + * @return string HTML output + */ + public function calendarMakeBirthdayHTML( $month, $day, $year=NULL ) + { + //----------------------------------------- + // Grab leap year babbies on Feb 28 if needed + //----------------------------------------- + + if( ! date( "L" ) AND $month == "2" AND $day == "28" ) + { + $where_string = "bday_month=2 AND bday_day IN(28,29)"; + } + else + { + $where_string = 'bday_month=' . $month . ' AND bday_day=' . $day; + } + + //----------------------------------------- + // Get birthdays + //----------------------------------------- + + $birthdays = array(); + + $this->DB->build( array( 'select' => 'member_id', 'from' => 'members', 'where' => 'member_banned=0 AND ' . $where_string ) ); + $this->DB->execute(); + + if( $this->DB->getTotalRows() ) + { + $_memberIds = array(); + + while( $r = $this->DB->fetch() ) + { + $_memberIds[] = $r['member_id']; + } + + $_members = IPSMember::load( $_memberIds, 'all' ); + + if( count($_members) ) + { + foreach( $_members as $_member ) + { + $_member['age'] = $this->_getAge( $_member['bday_month'], $_member['bday_day'], $_member['bday_year'], ( $year ? gmmktime( 0, 0, 0, $month, $day, $year ) : NULL ) ); + + $birthdays[] = IPSMember::buildDisplayData( $_member ); + } + } + } + + return $this->registry->output->getTemplate( 'calendar' )->calendarBirthdayList( $birthdays ); + } + + /** + * Builds the html for a mini calendar + * + * @param int [$month] Numeric value of month to build + * @param int [$year] Year to build + * @return string Mini-cal HTML + */ + public function getMiniCalendar( $month=0, $year=0 ) + { + $month = $month ? $month : $this->chosen_date['month']; + $year = $year ? $year : $this->chosen_date['year']; + $day = strftime( '%d', time() + $this->lang->getTimeOffset() ); + + $_cal = $this->registry->output->getTemplate('calendar')->miniCalendarWrapper( array( + 'month_title' => gmstrftime( '%B', gmmktime( 0, 0, 0, $month, 15 ) ), + 'month' => $month, + 'year' => $year, + 'events' => $this->getMonthEvents( $month, $year, true ), + 'day_words' => $this->_getDayWords(), + 'calendar' => $this->calendar, + ) ); + + $_cal = array( 'html' => $_cal, 'built' => time() ); + + return $_cal['html']; + } + + /** + * Figure out age + * + * @param int $month Month + * @param int $day Day + * @param int $year Year + * @param int $date The date this applies to + * @return int Number of years old + */ + protected function _getAge( $month, $day, $year, $date=NULL ) + { + if( !$year OR !$month OR !$day ) + { + return 0; + } + + $_birthday = gmmktime( 0, 0, 0, $month, $day, $year ); + $_current = $date ? $date : gmmktime( 0 ); + + return floor( ( $_current - $_birthday ) / 31536000 ); + } + + /** + * Figures out what the next month on the calendar is + * + * @param integer $month Current Month + * @param integer $year Current Year + * @return array Month data + */ + protected function calendarGetNextMonth( $month, $year ) + { + return array( + 'year_id' => gmstrftime( '%Y', gmmktime( 0, 0, 0, $month + 1, 15, $year ) ), + 'month_name' => gmstrftime( '%B', gmmktime( 0, 0, 0, $month + 1, 15, $year ) ), + 'month_id' => gmstrftime( '%m', gmmktime( 0, 0, 0, $month + 1, 15, $year ) ), + ); + } + + /** + * Figures out what the previous month on the calendar is + * + * @param integer $month Current Month + * @param integer $year Current Year + * @return array Month data + */ + protected function calendarGetPreviousMonth( $month, $year ) + { + return array( + 'year_id' => gmstrftime( '%Y', gmmktime( 0, 0, 0, $month - 1, 15, $year ) ), + 'month_name' => gmstrftime( '%B', gmmktime( 0, 0, 0, $month - 1, 15, $year ) ), + 'month_id' => gmstrftime( '%m', gmmktime( 0, 0, 0, $month - 1, 15, $year ) ), + ); + } + + /** + * Build the ID for the current day + * + * @param int $year The year + * @param int $month The month + * @param int $day The day + * @return string + */ + protected function _buildDayID( $year, $month, $day ) + { + return 'day-' . $year . '-' . $month . '-' . $day; + } + + /** + * Displays the specified month + * + * @return @e void + */ + public function calendarShowMonth() + { + //----------------------------------------- + // Get data for the template + //----------------------------------------- + + $_previous = $this->calendarGetPreviousMonth( $this->chosen_date['month'], $this->chosen_date['year'] ); + $_next = $this->calendarGetNextMonth( $this->chosen_date['month'], $this->chosen_date['year'] ); + + //----------------------------------------- + // Like strip + //----------------------------------------- + + if( !$this->_like ) + { + require_once( IPS_ROOT_PATH . 'sources/classes/like/composite.php' );/*noLibHook*/ + $this->_like = classes_like::bootstrap( 'calendar', 'calendars' ); + } + + $_likeStrip = $this->_like->render( 'summary', $this->calendar['cal_id'] ); + + //----------------------------------------- + // Set output + //----------------------------------------- + + $this->output .= $this->registry->output->getTemplate('calendar')->calendarMainContent( + array( + 'calendars' => $this->functions->getCalendars(), + 'calendar' => $this->calendar, + 'events' => $this->getMonthEvents( $this->chosen_date['month'], $this->chosen_date['year'] ), + 'minical_next' => $this->getMiniCalendar( $_next['month_id'], $_next['year_id'] ), + 'minical_prev' => $this->getMiniCalendar( $_previous['month_id'], $_previous['year_id'] ), + 'calendar_jump' => $this->functions->getCalendarJump(), + 'prev_month' => $_previous, + 'next_month' => $_next, + 'month_title' => $this->chosen_date['month_name'], + 'day_words' => $this->_getDayWords(), + 'chosen_date' => $this->chosen_date, + 'month_box' => $this->functions->returnMonthDropdown( $this->chosen_date['month'] ), + 'year_box' => $this->functions->returnYearDropdown( $this->chosen_date['year'] ), + 'navigation' => array( 'this_week' => gmmktime( 0 ), 'this_month' => array( 'm' => gmstrftime( '%m' ), 'y' => gmstrftime( '%Y' ) ) ), + '_like_strip' => $_likeStrip, + '_can_add' => ( $this->memberData['member_id'] AND $this->registry->permissions->check( 'start', $this->calendar ) ), + ) + ); + + //----------------------------------------- + // Set page title and navigation + //----------------------------------------- + + $this->registry->output->addNavigation( $this->chosen_date['month_name'] . ' ' . $this->chosen_date['year'] ); + $this->registry->output->addMetaTag( 'keywords', $this->chosen_date['month_name'], TRUE ); + $this->registry->output->addMetaTag( 'description', str_replace( "\n", " ", str_replace( "\r", "", sprintf( $this->lang->words['month_meta_description'], $this->chosen_date['month_name'], $this->chosen_date['year'] ) ) ), FALSE, 155 ); + + if( $this->request['m'] ) + { + $this->registry->getClass('output')->addCanonicalTag( 'app=calendar&module=calendar&section=view&cal_id=' . $this->calendar['cal_id'] . '&m=' . $this->chosen_date['month'] . '&y=' . $this->chosen_date['year'], $this->calendar['cal_title_seo'], 'cal_month' ); + } + else if( $this->request['cal_id'] ) + { + $this->registry->getClass('output')->addCanonicalTag( 'app=calendar&module=calendar&section=view&cal_id=' . $this->calendar['cal_id'], $this->calendar['cal_title_seo'], 'cal_calendar' ); + } + else + { + $this->registry->getClass('output')->addCanonicalTag( 'app=calendar', 'false', 'app=calendar' ); + } + + $this->page_title = $this->chosen_date['month_name'] . ' ' . $this->chosen_date['year']; + } + + /** + * Generates the sql to query events + * + * @param integer $month Month to get events from + * @param integer $year Year to get events from + * @param array [$presets] Load based on specific timestamps + * @return @e void + */ + public function calendarGetEventsSQL( $month=0, $year=0, $presets=array() ) + { + //----------------------------------------- + // Init + //----------------------------------------- + + $minimal = ( isset($presets['minimal']) AND $presets['minimal'] ) ? true : false; + + if( isset($presets['timenow']) ) + { + $prev_month = $this->calendarGetPreviousMonth( gmstrftime( "%m", $presets['timenow'] ), gmstrftime( "%Y", $presets['timenow'] ) ); + } + else + { + $prev_month = $this->calendarGetPreviousMonth( $month, $year ); + } + + if( isset($presets['timethen']) ) + { + $next_month = $this->calendarGetNextMonth( gmstrftime( "%m", $presets['timethen'] ), gmstrftime( "%Y", $presets['timethen'] ) ); + } + else + { + $next_month = $this->calendarGetNextMonth( $month, $year ); + } + + $start_date = gmstrftime( "%Y-%m-%d", isset($presets['timenow']) ? $presets['timenow'] : gmmktime( 0, 0, 1, $prev_month['month_id'], 1, $prev_month['year_id'] ) ); + $end_date = gmstrftime( "%Y-%m-%d", isset($presets['timethen']) ? $presets['timethen'] : gmmktime( 0, 0, 1, $next_month['month_id'], date( 't', mktime( 0, 0, 0, $next_month['month_id'], 1, $next_month['year_id'] ) ), $next_month['year_id'] ) ); + $getcached = ( count($presets) AND ( !isset($presets['honor_permissions']) OR !$presets['honor_permissions'] ) ) ? 1 : 0; + + list( $_endYear, $_endMonth, $_endDay ) = explode( '-', $end_date ); + + //----------------------------------------- + // Get the events (if we haven't already) + //----------------------------------------- + + if( !array_key_exists( $month, $this->events ) ) + { + $this->events[ $month ] = array(); + + if ( $getcached ) + { + $where = ( !empty( $presets['cal_id'] ) ? "e.event_calendar_id=" . intval( $presets['cal_id'] ) . " AND " : '' ) . "e.event_approved=1"; + } + else + { + $where = "e.event_calendar_id={$this->calendar['cal_id']} AND " . ( $this->memberData['g_is_supmod'] ? "e.event_approved IN (0,1)" : "e.event_approved=1" ); + } + + //----------------------------------------- + // Query DB for events and loop + //----------------------------------------- + + if( !$minimal ) + { + $_joins = array( + array( + 'select' => 'm.*', + 'from' => array( 'members' => 'm' ), + 'where' => 'm.member_id=e.event_member_id', + 'type' => 'left', + ), + array( + 'select' => 'pp.*', + 'from' => array( 'profile_portal' => 'pp' ), + 'where' => 'm.member_id=pp.pp_member_id', + 'type' => 'left', + ), + ); + + if ( $this->settings['reputation_enabled'] ) + { + $classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/class_reputation_cache.php', 'classReputationCache' ); + $this->registry->setClass( 'repCache', new $classToLoad() ); + + $_joins[] = $this->registry->getClass('repCache')->getTotalRatingJoin( 'event_id', 'e.event_id', 'calendar' ); + $_joins[] = $this->registry->getClass('repCache')->getUserHasRatedJoin( 'event_id', 'e.event_id', 'calendar' ); + } + } + + $this->DB->build( array( + 'select' => 'e.*', + 'from' => $minimal ? 'cal_events e' : array( 'cal_events' => 'e' ), + 'add_join' => $_joins, + 'where' => $where . " AND ( + ( e.event_start_date <= '{$end_date}' AND e.event_end_date >= '{$start_date}' ) OR + ( ( e.event_end_date " . $this->DB->buildIsNull(true) . " OR e.event_end_date='0000-00-00 00:00:00' ) AND e.event_start_date >= '{$start_date}' AND e.event_start_date <= '{$end_date}' ) OR + ( e.event_recurring=3 AND " . $this->DB->buildDateFormat( 'event_start_date', '%c' ) . "={$month} AND e.event_end_date <= '{$end_date}' ) )" + ) ); + $outer = $this->DB->execute(); + + while( $r = $this->DB->fetch($outer) ) + { + //----------------------------------------- + // Exclude private events + //----------------------------------------- + + if( $r['event_private'] AND !$getcached ) + { + if( ! $this->memberData['member_id'] OR $this->memberData['member_id'] != $r['event_member_id'] ) + { + continue; + } + } + + //----------------------------------------- + // Check event permissions + //----------------------------------------- + + if( $r['event_perms'] != '*' AND !$getcached ) + { + $permissionGroups = explode( ',', IPSText::cleanPermString( $r['event_perms'] ) ); + + if( !IPSMember::isInGroup( $this->memberData, $permissionGroups ) ) + { + continue; + } + } + + //----------------------------------------- + // Dynamically fix missing SEO titles + //----------------------------------------- + + if( !$r['event_title_seo'] ) + { + $r['event_title_seo'] = IPSText::makeSeoTitle( $r['event_title'] ); + + $this->DB->update( 'cal_events', array( 'event_title_seo' => $r['event_title_seo'] ), 'event_id=' . $r['event_id'] ); + } + + //----------------------------------------- + // Create time info for PHP date functions + //----------------------------------------- + + $_startTime = strtotime( $r['event_start_date'] ); + $_endTime = ( $r['event_end_date'] AND $r['event_end_date'] != '0000-00-00 00:00:00' ) ? strtotime( $r['event_end_date'] ) : 0; + + if( !$r['event_all_day'] AND !$presets['no_date_convert'] ) + { + if( $this->memberData['member_id'] AND $this->memberData['time_offset'] ) + { + $_startTime = $_startTime + ( $this->memberData['time_offset'] * 3600 ); + } + else if( !$this->memberData['member_id'] AND $this->settings['time_offset'] ) + { + $_startTime = $_startTime + ( $this->settings['time_offset'] * 3600 ); + } + + if( $this->memberData['member_id'] AND $this->memberData['time_offset'] ) + { + $_endTime = $_endTime ? ( $_endTime + ( $this->memberData['time_offset'] * 3600 ) ) : 0; + } + else if( !$this->memberData['member_id'] AND $this->settings['time_offset'] ) + { + $_endTime = $_endTime ? ( $_endTime + ( $this->settings['time_offset'] * 3600 ) ) : 0; + } + } + + $r['event_start_date'] = gmstrftime( "%Y-%m-%d %H:%M:%S", $_startTime ); + $r['event_end_date'] = gmstrftime( "%Y-%m-%d %H:%M:%S", $_endTime ); + + list( $_year, $_month, $_day ) = explode( '-', gmdate( 'Y-m-d', $_startTime ) ); + + //----------------------------------------- + // Recurring events + //----------------------------------------- + + if( $r['event_recurring'] > 0 ) + { + $r['recurring'] = 1; + + if( ( $_month == $month OR $_month == $_endMonth ) AND ( $_year == $year OR $r['event_recurring'] == 3 ) ) + { + $this->events[ $_month ]['recurring'][ $r['event_id'] ] = $r; + } + + //----------------------------------------- + // Loop to add to other months as needed + // Don't need to add yearly as we only check month + //----------------------------------------- + + if( $r['event_recurring'] < 3 ) + { + while( $_startTime < $_endTime ) + { + //----------------------------------------- + // Only add if not already present + //----------------------------------------- + + if( !isset( $this->events[ $_month ]['recurring'][ $r['event_id'] ] ) ) + { + if( ( ( $_month == $month OR $_month == $next_month['month_id'] OR $_month == $prev_month['month_id'] ) AND $_year == $year ) OR $getcached ) + { + $this->events[ $_month ]['recurring'][ $r['event_id'] ] = $r; + } + } + + //----------------------------------------- + // Increment timestamps and reset month/year + //----------------------------------------- + + if( $r['event_recurring'] == 1 ) + { + $_startTime = strtotime( gmstrftime( "%Y-%m-%d", $_startTime ) . " +1 week" ); + } + elseif( $r['event_recurring'] == 2 ) + { + $_startTime = strtotime( gmstrftime( "%Y-%m-%d", $_startTime ) . " +1 month" ); + } + + $_month = gmstrftime( '%m', $_startTime ); + $_year = gmstrftime( '%Y', $_startTime ); + } + } + } + + //----------------------------------------- + // Ranged event? + //----------------------------------------- + + else if( !$r['event_recurring'] AND $_endTime ) + { + $r['ranged'] = 1; + + //----------------------------------------- + // Daily loop + //----------------------------------------- + + while( $_startTime <= $_endTime ) + { + if( $_startTime < gmmktime( 0, 0, 1, $prev_month['month_id'], 1, $prev_month['year_id'] ) OR $_startTime > gmmktime( 0, 0, 1, $next_month['month_id'], 31, $next_month['year_id'] ) ) + { + $_startTime += 3600; + continue; + } + + $_dayOfMonth = gmstrftime( "%d", $_startTime ); + $_month = gmstrftime( "%m", $_startTime ); + + $this->events[ $_month ]['ranged'][ $_dayOfMonth ][ $r['event_id'] ] = $r; + + $_startTime += 3600; + } + } + + //----------------------------------------- + // Single event + //----------------------------------------- + + else + { + $r['single'] = 1; + + $this->events[ $_month ]['single'][ $_day ][ $r['event_id'] ] = $r; + } + } + } + } + + /** + * Builds the html for the monthly events + * + * @param int $month Numeric value of the month to get events from + * @param int $year Year to get events from + * @param bool $minical Set to 1 if this is for the minicalendar + * @return string Calendar HTML output + */ + public function getMonthEvents( $month, $year, $minical=false ) + { + //----------------------------------------- + // Init + //----------------------------------------- + + $birthdays = array(); + + //----------------------------------------- + // Work out timestamps + //----------------------------------------- + + $our_datestamp = gmmktime( 12,0,0, $month, 1, $year); + $_firstDay = gmdate( 'w', $our_datestamp ); + + if( $this->settings['ipb_calendar_mon'] ) + { + $_firstDay = $_firstDay == 0 ? 7 : $_firstDay; + } + + //----------------------------------------- + // Get the birthdays from the database + //----------------------------------------- + + if ( $this->settings['show_bday_calendar'] AND !$minical ) + { + $birthdays = $this->_getBirthdaysForMonth( $month ); + } + + //----------------------------------------- + // Get the events + //----------------------------------------- + + if( !$minical ) + { + $this->calendarGetEventsSQL( $month, $year ); + } + + //----------------------------------------- + // Get events + //----------------------------------------- + + $seen_days = array(); + $seen_events = array(); + $output = ""; + + //----------------------------------------- + // Loop (42 is 7 days x 6 "weeks" potential) + //----------------------------------------- + + for( $c = 0 ; $c < 42; $c++ ) + { + //----------------------------------------- + // Get data for each day + //----------------------------------------- + + list( $_year, $_month, $_day ) = explode( '-', gmstrftime( '%Y-%m-%d', $our_datestamp ) ); + $day_array = IPSTime::date_getgmdate( $our_datestamp ); + + //----------------------------------------- + // If this is a new week, reset row + //----------------------------------------- + + if( ( ( $c ) % 7 ) == 0 ) + { + //----------------------------------------- + // Kill the loop if we are no longer on our month + //----------------------------------------- + + if( $day_array['mon'] != $month ) + { + break; + } + + $output .= $minical ? $this->registry->output->getTemplate('calendar')->mini_cal_new_row( $our_datestamp, $this->calendar ) : $this->registry->output->getTemplate('calendar')->cal_new_row( $our_datestamp, $this->calendar ); + } + + $_c = $this->settings['ipb_calendar_mon'] ? $c + 1 : $c; + + //----------------------------------------- + // Run out of legal days for this month? + // Or have we yet to get to the first day? + //----------------------------------------- + + if ( ( $_c < $_firstDay ) or ( $day_array['mon'] != $month ) ) + { + $output .= $minical ? $this->registry->output->getTemplate('calendar')->mini_cal_blank_cell() + : $this->registry->output->getTemplate('calendar')->cal_blank_cell(); + } + else + { + if ( isset($seen_days[ $day_array['yday'] ]) ) + { + $our_datestamp += 86400; + + continue; + } + + $seen_days[ $day_array['yday'] ] = true; + $tmp_cevents = array(); + $this_day_events = ""; + $_hasQueued = false; + + //----------------------------------------- + // Get events + //----------------------------------------- + + if( !$minical ) + { + $events = $this->calendarGetDayEvents( $_month, $_day, $_year ); + + if ( is_array( $events ) AND count( $events ) ) + { + foreach( $events as $event ) + { + if ( empty( $seen_events[ $_month . '-' . $_day . '-' . $_year ][ $event['event_id'] ] ) ) + { + //$event = $this->calendarMakeEventHTML( $event, true ); + + if ( isset($event['recurring']) ) + { + $tmp_cevents[ $event['event_id'] ] = $this->registry->output->getTemplate('calendar')->cal_events_wrap_recurring( $event, 'month' ); + } + else if ( isset($event['ranged']) ) + { + $tmp_cevents[ $event['event_id'] ] = $this->registry->output->getTemplate('calendar')->cal_events_wrap_range( $event, 'month' ); + } + else + { + $tmp_cevents[ $event['event_id'] ] = $this->registry->output->getTemplate('calendar')->cal_events_wrap( $event, 'month' ); + } + + $seen_events[ $_month . '-' . $_day . '-' . $_year ][ $event['event_id'] ] = 1; + + //----------------------------------------- + // Queued events? + //----------------------------------------- + + if ( ! $event['event_approved'] AND $this->memberData['g_is_supmod'] ) + { + $_hasQueued = true; + } + } + } + + //----------------------------------------- + // How many events? + //----------------------------------------- + + if ( count($tmp_cevents) > $this->calendar['cal_event_limit'] ) + { + $this_day_events = $this->registry->output->getTemplate('calendar')->cal_events_wrap_manual( + array( 'url' => "cal_id={$this->calendar['cal_id']}&do=showday&y=" . $_year . "&m=" . $_month . "&d=" . $_day, 'template' => 'cal_day', 'title' => $this->calendar['cal_title_seo'] ), + sprintf( $this->lang->words['show_n_events'], intval(count($tmp_cevents)) ) + ); + } + else if ( count( $tmp_cevents ) ) + { + $this_day_events = implode( "\n", $tmp_cevents ); + } + } + + //----------------------------------------- + // Birthdays + //----------------------------------------- + + if ( $this->calendar['cal_bday_limit'] ) + { + if ( isset($birthdays[ $_day ]) and count( $birthdays[ $_day ] ) > 0 ) + { + $no_bdays = count($birthdays[ $_day ]); + + if ( $no_bdays <= $this->calendar['cal_bday_limit'] ) + { + foreach( $birthdays[ $_day ] as $user ) + { + $this_day_events .= $this->registry->output->getTemplate('calendar')->cal_events_wrap_manual( + array( 'url' => "cal_id={$this->calendar['cal_id']}&do=showday&y=" . $_year . "&m=" . $_month . "&d=" . $_day, 'template' => 'cal_day', 'title' => $this->calendar['cal_title_seo'] ), + $user['members_display_name'] . $this->lang->words['bd_birthday'] + ); + } + + } + else + { + $this_day_events .= $this->registry->output->getTemplate('calendar')->cal_events_wrap_manual( + array( 'url' => "cal_id={$this->calendar['cal_id']}&do=showday&y=" . $_year . "&m=" . $_month . "&d=" . $_day, 'template' => 'cal_day', 'title' => $this->calendar['cal_title_seo'] ), + sprintf( $this->lang->words['entry_birthdays'], $no_bdays ) + ); + } + } + } + } + + //----------------------------------------- + // If we have events, show them + //----------------------------------------- + + $_dateLink = ''; + $_queueLink = ''; + + $_dateLink = array( + 'url' => "app=calendar&module=calendar&section=view&cal_id={$this->calendar['cal_id']}&do=showday&y=" . $year . "&m=" . $month . "&d=" . $day_array['mday'], + 'seotitle' => $this->calendar['cal_title_seo'], + 'template' => 'cal_day', + 'day' => $day_array['mday'], + ); + + if( $this_day_events AND !$minical ) + { + $_queueLink = $this->registry->getClass('output')->buildSEOUrl( "app=calendar&module=calendar&section=view&cal_id={$this->calendar['cal_id']}&do=showday&y=" . $year . "&m=" . $month . "&d=" . $day_array['mday'] . "&modfilter=queued", 'public', $this->calendar['cal_title_seo'], 'cal_day' ); + $this_day_events = $this->registry->output->getTemplate('calendar')->eventsWrapper( $this_day_events ); + } + + /* Apply TZ offset so that we show the correct 'today' */ + if ( $day_array['mday'] == strftime( '%d', time() + $this->lang->getTimeOffset() ) AND $day_array['mon'] == strftime( '%m', time() + $this->lang->getTimeOffset() ) AND $day_array['year'] == strftime( '%Y', time() + $this->lang->getTimeOffset() ) ) + { + $output .= $minical ? $this->registry->output->getTemplate('calendar')->mini_cal_date_cell_today($_dateLink) : $this->registry->output->getTemplate('calendar')->cal_date_cell_today($_dateLink, $this_day_events, $_queueLink, $_hasQueued, $this->_buildDayID( $this->chosen_date['year'], $this->chosen_date['month'], $_day ) ); + } + else + { + $output .= $minical ? $this->registry->output->getTemplate('calendar')->mini_cal_date_cell($_dateLink) : $this->registry->output->getTemplate('calendar')->cal_date_cell($_dateLink, $this_day_events, $_queueLink, $_hasQueued, $this->_buildDayID( $this->chosen_date['year'], $this->chosen_date['month'], $_day ) ); + } + + $our_datestamp += 86400; + } + } + + return $output; + } + + /** + * Display the events for a calendar date + * + * @return @e void + */ + public function calendarShowDay() + { + //----------------------------------------- + // Init + //----------------------------------------- + + $day = str_pad( intval( $this->request['d'] ), 2, '0', STR_PAD_LEFT ); + $month = $this->chosen_date['month']; + $year = $this->chosen_date['year']; + $seen_ids = array(); + $output = ''; + + $this->chosen_date['day'] = $day; + + if ( ! checkdate( $month, $day , $year ) ) + { + $this->registry->output->showError( 'calendar_invalid_date_view', 10428, null, null, 404 ); + } + + $_previous = $this->calendarGetPreviousMonth( $this->chosen_date['month'], $this->chosen_date['year'] ); + $_next = $this->calendarGetNextMonth( $this->chosen_date['month'], $this->chosen_date['year'] ); + + //----------------------------------------- + // Load the events + //----------------------------------------- + + $this->calendarGetEventsSQL( $month, $year ); + + //----------------------------------------- + // Get today's events from loaded events + //----------------------------------------- + + $events = $this->calendarGetDayEvents( $month, $day, $year ); + + //----------------------------------------- + // Loop over today's events + //----------------------------------------- + + if ( is_array( $events ) AND count( $events ) ) + { + foreach( $events as $event ) + { + if ( empty( $seen_ids[ $event['eventid'] ] ) ) + { + $seen_ids[ $event['event_id'] ] = true; + + //----------------------------------------- + // Exclude private events + //----------------------------------------- + + if( $event['event_private'] AND ( !$this->memberData['member_id'] OR $this->memberData['member_id'] != $event['event_member_id'] ) ) + { + continue; + } + + //----------------------------------------- + // Check event permissions + //----------------------------------------- + + if( $event['event_perms'] != '*' ) + { + $permissionGroups = explode( ',', IPSText::cleanPermString( $event['event_perms'] ) ); + + if( !IPSMember::isInGroup( $this->memberData, $permissionGroups ) ) + { + continue; + } + } + + //----------------------------------------- + // Output + //----------------------------------------- + + $_data = $this->calendarMakeEventHTML( $event, true ); + $output .= $this->registry->output->getTemplate( 'calendar' )->showEventSimple( array_merge( $_data['member'], $_data['event'] ) ); + } + } + } + + //----------------------------------------- + // Show birthdays + //----------------------------------------- + + $birthdays = $this->calendar['cal_bday_limit'] ? $this->calendarMakeBirthdayHTML( $month, $day, $year ) : ''; + + //----------------------------------------- + // Output + //----------------------------------------- + + $this->registry->output->addNavigation( $this->chosen_date['month_name'] . " " . $this->chosen_date['year'], "app=calendar&module=calendar&section=view&cal_id={$this->calendar['cal_id']}&m={$this->chosen_date['month']}&y={$this->chosen_date['year']}", $this->calendar['cal_title_seo'], 'cal_month' ); + $this->registry->output->addNavigation( $this->chosen_date['month_name'] . ' ' . $day . ', ' . $this->chosen_date['year'] ); + $this->registry->output->addToDocumentHead( 'raw', "calendar['cal_id'], 'publicNoSession', $this->calendar['cal_title_seo'], 'cal_calendar' ) . "' />" ); + $this->registry->output->addMetaTag( 'keywords', $this->chosen_date['month_name'] . ' ' . $day . ' events event calendar', TRUE ); + $this->registry->output->addMetaTag( 'description', str_replace( "\n", " ", str_replace( "\r", "", sprintf( $this->lang->words['day_meta_description'], $this->chosen_date['month_name'], $day, $this->chosen_date['year'] ) ) ), FALSE, 155 ); + $this->registry->getClass('output')->addCanonicalTag( 'app=calendar&module=calendar&section=view&cal_id=' . $this->calendar['cal_id'] . '&do=showday&y=' . $this->chosen_date['year'] . '&m=' . $this->chosen_date['month'] . '&d=' . $day, $this->calendar['cal_title_seo'], 'cal_day' ); + + $this->page_title = $this->chosen_date['month_name'] . ' ' . $day . ', ' . $this->chosen_date['year']; + $this->output .= $this->registry->output->getTemplate( 'calendar' )->calendarEventsList( array( + 'calendars' => $this->functions->getCalendars(), + 'calendar' => $this->calendar, + 'prev_minical' => $this->getMiniCalendar( $_previous['month_id'], $_previous['year_id'] ), + 'cur_minical' => $this->getMiniCalendar( $this->chosen_date['month'], $this->chosen_date['year'] ), + 'next_minical' => $this->getMiniCalendar( $_next['month_id'], $_next['year_id'] ), + 'month_box' => $this->functions->returnMonthDropdown( $this->chosen_date['month'] ), + 'year_box' => $this->functions->returnYearDropdown( $this->chosen_date['year'] ), + 'events' => $output, + 'birthdays' => $birthdays, + 'chosen_date' => $this->chosen_date, + 'prev_month' => $_previous, + 'next_month' => $_next, + 'start_date' => $this->chosen_date['month_name'] . ' ' . $day . ', ' . $this->chosen_date['year'], + 'prev_day' => explode( '-', gmstrftime( '%Y-%m-%d', gmmktime( 0, 0, 0, $this->chosen_date['month'], $day - 1, $this->chosen_date['year'] ) ) ), + 'next_day' => explode( '-', gmstrftime( '%Y-%m-%d', gmmktime( 0, 0, 0, $this->chosen_date['month'], $day + 1, $this->chosen_date['year'] ) ) ), + 'this_week' => gmmktime( 0, 0, 0, $this->chosen_date['month'], $day, $this->chosen_date['year'] ), + '_can_add' => ( $this->memberData['member_id'] AND $this->registry->permissions->check( 'start', $this->calendar ) ), + ) ); + } + + /** + * Gets the days events + * + * @param string $month Month + * @param string $day Day + * @param string $year Year + * @return array Events for specified day + */ + public function calendarGetDayEvents( $month, $day, $year ) + { + //----------------------------------------- + // Init + //----------------------------------------- + + $return = array(); + + //----------------------------------------- + // Check ranged + //----------------------------------------- + + if( isset( $this->events[ $month ]['ranged'][ $day ] ) AND is_array( $this->events[ $month ]['ranged'][ $day ] ) and count( $this->events[ $month ]['ranged'][ $day ] ) ) + { + foreach( $this->events[ $month ]['ranged'][ $day ] as $idx => $data ) + { + $return[] = $data; + } + } + + //----------------------------------------- + // Recurring + //----------------------------------------- + + if( isset( $this->events[ $month ]['recurring'] ) AND is_array( $this->events[ $month ]['recurring'] ) and count( $this->events[ $month ]['recurring'] ) ) + { + foreach( $this->events[ $month ]['recurring'] as $idx => $data ) + { + if ( $this->checkRecurring( $data, $month, $day, $year ) ) + { + $return[] = $data; + } + } + } + + //----------------------------------------- + // Single day + //----------------------------------------- + + if( isset( $this->events[ $month ]['single'][ $day ] ) AND is_array( $this->events[ $month ]['single'][ $day ] ) and count( $this->events[ $month ]['single'][ $day ] ) ) + { + foreach( $this->events[ $month ]['single'][ $day ] as $idx => $data ) + { + $return[] = $data; + } + } + + return $return; + } + + /** + * Return all cached events + * + * @return array + */ + public function calendarGetAllEvents() + { + $events = array(); + + foreach( $this->events as $month => $type ) + { + foreach( $type as $_type => $info ) + { + if( $_type == 'recurring' ) + { + foreach( $info as $event ) + { + $events[ $event['event_id'] ] = $event; + } + } + else + { + foreach( $info as $day => $_dayEvents ) + { + foreach( $_dayEvents as $event ) + { + $events[ $event['event_id'] ] = $event; + } + } + } + } + } + + return $events; + } + + /** + * Verify if a recurring event should be shown on a given day + * + * @param array $event Event data + * @param int $month Month + * @param int $day Day + * @param int $year Year + * @return bool + */ + public function checkRecurring( $event, $month, $day, $year ) + { + //----------------------------------------- + // INIT + //----------------------------------------- + + if( !$event['event_id'] ) + { + return false; + } + + if ( !$event['event_recurring'] ) + { + return false; + } + + static $_shownEvents = array(); + + /** + * We set start time to end of day and end time to beginning of day, because our "in range" check below + * checks if the event start time is greater than the day time and end time is less than the day time. Thus + * an event on August 10 2011 4pm (recurring) will not show if we check if it's greater than the beginning of the day + * but will if we check if it's greater than the end of day (i.e. it occurs on that day). I know this sounds confusing, + * but I'm just pointing out that start is intended to be END of day and end is BEGINNING of day on purpose. + * @link http://community.invisionpower.com/tracker/issue-32575-calendar-recurring-events + */ + $_start = gmmktime( 23, 59, 59, $month, $day, $year ); + $_lunch = gmmktime( 12, 0 , 0 , $month, $day, $year ); + $_end = gmmktime( 0 , 0 , 0 , $month, $day, $year ); + $_eventStart = strtotime( $event['event_start_date'] ); + $_eventEnd = strtotime( $event['event_end_date'] ); + + //----------------------------------------- + // Already seen it? + //----------------------------------------- + + if ( !empty( $_shownEvents[ $month . '-' . $day . '-' . $year ][ $event['event_id'] ] ) ) + { + return false; + } + + //----------------------------------------- + // Check we're in range + //----------------------------------------- + + if ( $_eventStart > $_start OR $_eventEnd < $_end ) + { + return false; + } + + //----------------------------------------- + // Check recurring + //----------------------------------------- + + if ( $event['event_recurring'] ) + { + //----------------------------------------- + // Weekly + //----------------------------------------- + + if ( $event['event_recurring'] == 1 ) + { + return ( gmstrftime( '%w', $_eventStart ) == gmstrftime( '%w', $_lunch ) ) ? true : false; + } + + //----------------------------------------- + // Monthly + //----------------------------------------- + + else if ( $event['event_recurring'] == 2 ) + { + return ( gmstrftime( '%d', $_eventStart ) == gmstrftime( '%d', $_lunch ) ) ? true : false; + } + + //----------------------------------------- + // Yearly + //----------------------------------------- + + else if ( $event['event_recurring'] == 3 ) + { + return ( gmstrftime( '%d', $_eventStart ) == gmstrftime( '%d', $_lunch ) AND gmstrftime( '%m', $_eventStart ) == gmstrftime( '%m', $_lunch ) ) ? true : false; + } + } + + return false; + } + + /** + * Builds the html for an event + * + * @param array Array of event data + * @param bool Parse the data and return the parsed array, instead of the formatted HTML + * @return string Parsed event HTML + */ + public function calendarMakeEventHTML( $event, $returnAsArray=false ) + { + //----------------------------------------- + // Caching + //----------------------------------------- + + static $cachedEvents = array(); + + if( isset($cachedEvents[ $event['event_id'] ]) ) + { + if( $returnAsArray ) + { + return $cachedEvents[ $event['event_id'] ]; + } + else + { + return $this->registry->output->getTemplate('calendar')->showEvent( $cachedEvents[ $event['event_id'] ]['event'], $cachedEvents[ $event['event_id'] ]['member'], array( 'type' => $cachedEvents[ $event['event_id'] ]['info']['type'], 'ends' => $cachedEvents[ $event['event_id'] ]['info']['ends'], 'calendars' => $this->functions->getCalendars(), 'calendar' => $this->calendar, 'chosen_date' => $this->chosen_date ) ); + } + } + + if( $this->canReport === 'notinit' ) + { + $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir('core') . '/sources/classes/reportLibrary.php', 'reportLibrary' ); + $reports = new $classToLoad( $this->registry ); + + $this->canReport = $reports->canReport( 'calendar' ); + } + + $event['_canReport'] = $this->canReport; + + //----------------------------------------- + // Get member details + //----------------------------------------- + + $member = IPSMember::buildDisplayData( $event ); + + //----------------------------------------- + // Like strip + //----------------------------------------- + + if( !$this->_like ) + { + require_once( IPS_ROOT_PATH . 'sources/classes/like/composite.php' );/*noLibHook*/ + $this->_like = classes_like::bootstrap( 'calendar', 'events' ); + } + + $event['_like_strip'] = $this->_like->render( 'summary', $event['event_id'] ); + $event['_like_count'] = $this->_like->getCount( $event['event_id'] ); + + //----------------------------------------- + // Reputation + //----------------------------------------- + + if( is_null($event['has_given_rep']) ) + { + $event['has_given_rep'] = 0; + } + + if( is_null($event['rep_points']) ) + { + $event['rep_points'] = 0; + } + + if ( $this->settings['reputation_enabled'] ) + { + $event['like'] = $this->registry->repCache->getLikeFormatted( array( 'app' => 'calendar', 'type' => 'event_id', 'id' => $event['event_id'], 'rep_like_cache' => $event['rep_like_cache'] ) ); + } + + //----------------------------------------- + // Times and dates + //----------------------------------------- + + $event['_start_time'] = strtotime( $event['event_start_date'] ); + $event['_end_time'] = ( $event['event_end_date'] AND $event['event_end_date'] != '0000-00-00 00:00:00' ) ? strtotime( $event['event_end_date'] ) : 0; + + if( !$event['event_all_day'] ) + { + if( $this->memberData['member_id'] AND $this->memberData['time_offset'] ) + { + $event['_start_time'] = $event['_start_time'] + ( $this->memberData['time_offset'] * 3600 ); + } + else if( !$this->memberData['member_id'] AND $this->settings['time_offset'] ) + { + $event['_start_time'] = $event['_start_time'] + ( $this->settings['time_offset'] * 3600 ); + } + + if( $this->memberData['member_id'] AND $this->memberData['time_offset'] ) + { + $event['_end_time'] = $event['_end_time'] ? ( $event['_end_time'] + ( $this->memberData['time_offset'] * 3600 ) ) : 0; + } + else if( !$this->memberData['member_id'] AND $this->settings['time_offset'] ) + { + $event['_end_time'] = $event['_end_time'] ? ( $event['_end_time'] + ( $this->settings['time_offset'] * 3600 ) ) : 0; + } + } + + $event['_start_date'] = gmstrftime( $this->settings['clock_date'], $event['_start_time'] ); + $event['_event_time'] = ''; + $event['_event_etime'] = ''; + + if( !$event['event_all_day'] ) + { + if( $this->settings['cal_time_format'] == 'standard' ) + { + $event['_event_time'] = gmstrftime( '%I:%M %p', $event['_start_time'] ); + $event['_event_etime'] = $event['_end_time'] ? gmstrftime( '%I:%M %p', $event['_end_time'] ) : ''; + } + else + { + $event['_event_time'] = gmstrftime( '%H:%M', $event['_start_time'] ); + $event['_event_etime'] = $event['_end_time'] ? gmstrftime( '%H:%M', $event['_end_time'] ) : ''; + } + } + + //----------------------------------------- + // Event type + //----------------------------------------- + + $type = $this->lang->words['se_normal']; + $ends = ''; + + if( !$event['event_recurring'] AND $event['_end_time'] AND gmstrftime( $this->settings['clock_date'], $event['_end_time'] ) != $event['_start_date'] ) + { + $type = $this->lang->words['se_range']; + $ends = sprintf( $this->lang->words['se_ends'], gmstrftime( $this->settings['clock_date'], $event['_end_time'] ) ); + } + else if ( $event['event_recurring'] ) + { + $type = $this->lang->words['se_recur']; + $ends = sprintf( $this->lang->words['se_ends'], gmstrftime( $this->settings['clock_date'], $event['_end_time'] ) ); + } + + //----------------------------------------- + // Event content + //----------------------------------------- + + IPSText::getTextClass( 'bbcode' )->parse_html = 0; + IPSText::getTextClass( 'bbcode' )->parse_smilies = intval( $event['event_smilies'] ); + IPSText::getTextClass( 'bbcode' )->parse_bbcode = 1; + IPSText::getTextClass( 'bbcode' )->parsing_section = 'calendar'; + IPSText::getTextClass( 'bbcode' )->parsing_mgroup = $member['member_group_id']; + IPSText::getTextClass( 'bbcode' )->parsing_mgroup_others = $member['mgroup_others']; + + $event['event_content'] = IPSText::getTextClass( 'bbcode' )->preDisplayParse( $event['event_content'] ); + $event['event_attach_content'] = ''; + + //----------------------------------------- + // Parse attachments + //----------------------------------------- + + static $attachments = null; + + if( $event['event_attachments'] ) + { + //----------------------------------------- + // Get attachments class + //----------------------------------------- + + if( !$attachments ) + { + $this->lang->loadLanguageFile( array( 'public_topic' ), 'forums' ); + $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'core' ) . '/sources/classes/attach/class_attach.php', 'class_attach' ); + $attachments = new $classToLoad( $this->registry ); + $attachments->type = 'event'; + $attachments->init(); + } + + $attachHTML = $attachments->renderAttachments( array( $event['event_id'] => $event['event_content'] ), array( $event['event_id'] ) ); + + if( is_array($attachHTML) ) + { + $event['event_content'] = $attachHTML[ $event['event_id'] ]['html']; + $event['event_attach_content'] = $attachHTML[ $event['event_id'] ]['attachmentHtml']; + } + } + + //----------------------------------------- + // Rating + //----------------------------------------- + + $event['_can_rate'] = ( $this->memberData['member_id'] AND $this->registry->permissions->check( 'rate', $this->calendar ) ) ? 1 : 0; + $event['_rating_value'] = -1; + + if( $event['_can_rate'] ) + { + $rating = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'cal_event_ratings', 'where' => "rating_eid={$event['event_id']} and rating_member_id=" . $this->memberData['member_id'] ) ); + + $event['_rating_value'] = $rating['rating_value'] ? $rating['rating_value'] : -1; + } + + //----------------------------------------- + // RSVP attendees + //----------------------------------------- + + $event['_rsvp_attendees'] = array(); + $event['_rsvp_attendees_short'] = array(); + $event['_rsvp_count'] = 0; + $event['_can_rsvp'] = false; + $event['_can_delete_rsvp'] = false; + + if( $event['event_rsvp'] ) + { + $this->DB->build( array( + 'select' => 'a.*', + 'from' => array( 'cal_event_rsvp' => 'a' ), + 'where' => 'a.rsvp_event_id=' . $event['event_id'], + 'order' => 'm.members_display_name ASC', + 'add_join' => array( + array( + 'select' => 'm.*', + 'from' => array( 'members' => 'm' ), + 'where' => 'm.member_id=a.rsvp_member_id', + 'type' => 'left', + ), + array( + 'select' => 'pp.*', + 'from' => array( 'profile_portal' => 'pp' ), + 'where' => 'm.member_id=pp.pp_member_id', + 'type' => 'left', + ), + ) + ) ); + $this->DB->execute(); + + while( $r = $this->DB->fetch() ) + { + $event['_rsvp_attendees'][ $r['member_id'] ] = IPSMember::buildDisplayData( array_merge( $r, $this->caches['group_cache'][ $r['member_group_id'] ] ) ); + + $event['_rsvp_attendees'][ $r['member_id'] ]['_can_delete_rsvp'] = false; + + if( $this->calendar['cal_rsvp_owner'] AND $this->memberData['member_id'] AND $this->memberData['member_id'] == $r['member_id'] ) + { + $event['_rsvp_attendees'][ $r['member_id'] ]['_can_delete_rsvp'] = true; + } + + if( $event['_rsvp_count'] < 5 ) + { + $event['_rsvp_attendees_short'][ $r['member_id'] ] = $event['_rsvp_attendees'][ $r['member_id'] ]; + } + + $event['_rsvp_count']++; + } + + if( $this->memberData['member_id'] AND $this->registry->permissions->check( 'rsvp', $this->calendar ) ) + { + if( !isset( $event['_rsvp_attendees'][ $this->memberData['member_id'] ] ) ) + { + $event['_can_rsvp'] = true; + } + else + { + $event['_have_rsvp'] = true; + } + } + + if( $this->calendar['cal_rsvp_owner'] AND $this->memberData['member_id'] AND $this->memberData['member_id'] == $event['event_member_id'] ) + { + $event['_can_delete_rsvp'] = true; + } + } + + //----------------------------------------- + // Return formatted HTML + //----------------------------------------- + + $cachedEvents[ $event['event_id'] ] = array( 'member' => $member, 'event' => $event, 'info' => array( 'type' => $type, 'ends' => $ends ) ); + + if( $returnAsArray ) + { + return $cachedEvents[ $event['event_id'] ]; + } + else + { + return $this->registry->output->getTemplate('calendar')->showEvent( $event, $member, array( 'type' => $type, 'ends' => $ends, 'calendars' => $this->functions->getCalendars(), 'calendar' => $this->calendar, 'chosen_date' => $this->chosen_date ) ); + } + } + + /** + * Show a single event based on eventid + * + * @return @e void + */ + public function calendarShowEvent() + { + //----------------------------------------- + // Init + //----------------------------------------- + + $event_id = intval($this->request['event_id']); + + if( !$event_id ) + { + $this->registry->output->showError( 'calendar_event_not_found', 10429, null, null, 404 ); + } + + //----------------------------------------- + // Get the event data + //----------------------------------------- + + $_joins = array( + array( + 'select' => 'm.*', + 'from' => array( 'members' => 'm' ), + 'where' => 'm.member_id=e.event_member_id', + 'type' => 'left', + ), + array( + 'select' => 'pp.*', + 'from' => array( 'profile_portal' => 'pp' ), + 'where' => 'm.member_id=pp.pp_member_id', + 'type' => 'left', + ), + ); + + if ( $this->settings['reputation_enabled'] ) + { + $classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/class_reputation_cache.php', 'classReputationCache' ); + $this->registry->setClass( 'repCache', new $classToLoad() ); + + $_joins[] = $this->registry->getClass('repCache')->getTotalRatingJoin( 'event_id', $event_id, 'calendar' ); + $_joins[] = $this->registry->getClass('repCache')->getUserHasRatedJoin( 'event_id', $event_id, 'calendar' ); + } + + $event = $this->DB->buildAndFetch( array( 'select' => 'e.*', 'from' => array( 'cal_events' => 'e' ), 'where' => 'e.event_id=' . $event_id, 'add_join' => $_joins ) ); + + if ( !$event['event_id'] ) + { + $this->registry->output->showError( 'calendar_event_not_found', 10430, null, null, 404 ); + } + + //----------------------------------------- + // Reset calendar + //----------------------------------------- + + $this->calendar = $this->functions->getCalendar( $event['event_calendar_id'] ); + + if( $this->calendar['cal_id'] != $event['event_calendar_id'] ) + { + $this->registry->output->showError( 'cal_no_perm', 1040.22, null, null, 403 ); + } + + //----------------------------------------- + // Check permissions + //----------------------------------------- + + if ( $event['event_private'] AND $this->memberData['member_id'] != $event['event_member_id'] ) + { + $this->registry->output->showError( 'calendar_event_not_found', 10431, null, null, 403 ); + } + + if( !$this->memberData['g_is_supmod'] AND !$event['event_approved'] ) + { + $this->registry->output->showError( 'calendar_event_not_found', 10432.1, null, null, 404 ); + } + + if( $event['event_perms'] != '*' ) + { + $permissionGroups = explode( ',', IPSText::cleanPermString( $event['event_perms'] ) ); + + if( !IPSMember::isInGroup( $this->memberData, $permissionGroups ) ) + { + $this->registry->output->showError( 'calendar_event_not_found', 10432, null, null, 404 ); + } + } + + //----------------------------------------- + // Are we RSVPing? + //----------------------------------------- + + if( $this->request['_rsvp'] AND $event['event_rsvp'] ) + { + if( $this->registry->permissions->check( 'rsvp', $this->calendar ) AND $this->memberData['member_id'] ) + { + //----------------------------------------- + // Make sure we aren't already RSVPed + //----------------------------------------- + + $_check = $this->DB->buildAndFetch( array( 'select' => 'rsvp_id', 'from' => 'cal_event_rsvp', 'where' => 'rsvp_event_id=' . $event['event_id'] . ' AND rsvp_member_id=' . $this->memberData['member_id'] ) ); + + if( !$_check['rsvp_id'] ) + { + $_insert = array( + 'rsvp_event_id' => $event['event_id'], + 'rsvp_member_id' => $this->memberData['member_id'], + 'rsvp_date' => time(), + ); + + $this->DB->insert( 'cal_event_rsvp', $_insert ); + + $this->registry->output->redirectScreen( $this->lang->words['rsvp_saved_im'], $this->settings['base_url'] . "app=calendar&module=calendar&section=view&do=showevent&event_id=" . $event['event_id'], $event['event_title_seo'], 'cal_event' ); + } + } + } + + //----------------------------------------- + // Comments class + //----------------------------------------- + + require_once( IPS_ROOT_PATH . 'sources/classes/comments/bootstrap.php' );/*noLibHook*/ + $this->_comments = classes_comments_bootstrap::controller( 'calendar-events' ); + + $comments = array( 'html' => $this->_comments->fetchFormatted( $event, array( 'offset' => intval( $this->request['st'] ) ) ), + 'count' => $this->_comments->count( $event ), + ); + + //----------------------------------------- + // Highlight... + //----------------------------------------- + + if ( $this->request['hl'] ) + { + $event['event_content'] = IPSText::searchHighlight( $event['event_content'], $this->request['hl'] ); + $event['event_title'] = IPSText::searchHighlight( $event['event_title'], $this->request['hl'] ); + } + + //----------------------------------------- + // Can we report? + //----------------------------------------- + + $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir('core') . '/sources/classes/reportLibrary.php', 'reportLibrary', 'core' ); + $reports = new $classToLoad( $this->registry ); + + $event['_canReport'] = $reports->canReport( 'calendar' ); + + //----------------------------------------- + // Output + //----------------------------------------- + + $member = IPSMember::load( $event['event_member_id'], 'all' ); + + $this->registry->output->addNavigation( $this->calendar['cal_title'] , "app=calendar&module=calendar&section=view&cal_id={$this->calendar['cal_id']}", $this->calendar['cal_title_seo'], 'cal_calendar' ); + + //----------------------------------------- + // Try to match out and improve navigation + //----------------------------------------- + + $_referrer = $_SERVER['HTTP_REFERER']; + + if( $_referrer ) + { + //----------------------------------------- + // Came from add form? + //----------------------------------------- + + if( preg_match( "#/add$#", $_referrer ) ) + { + $_data = $this->calendarMakeEventHTML( $event, true ); + $_dateBits = explode( '-', gmstrftime( '%Y-%m-%d-%B', $_data['event']['_start_time'] ) ); + $this->registry->output->addNavigation( $_dateBits[3] . ' ' . $_dateBits[0], "app=calendar&module=calendar&section=view&cal_id={$this->calendar['cal_id']}&m={$_dateBits[1]}&y={$_dateBits[0]}", $this->calendar['cal_title_seo'], 'cal_month' ); + $this->registry->output->addNavigation( $_dateBits[3] . ' ' . $_dateBits[2] . ', ' . $_dateBits[0], "app=calendar&module=calendar&section=view&cal_id={$this->calendar['cal_id']}&do=showday&y={$_dateBits[0]}&m={$_dateBits[1]}&d={$_dateBits[2]}", $this->calendar['cal_title_seo'], 'cal_day' ); + } + + //----------------------------------------- + // Came from a day view? + //----------------------------------------- + + else if( preg_match( "#/day\-(\d{4})\-(\d{1,2})\-(\d{1,2})$#i", $_referrer, $matches ) ) + { + $_dateBits = explode( '-', gmstrftime( '%Y-%m-%d-%B', gmmktime( 0, 0, 0, $matches[2], $matches[3], $matches[1] ) ) ); + $this->registry->output->addNavigation( $_dateBits[3] . ' ' . $_dateBits[0], "app=calendar&module=calendar&section=view&cal_id={$this->calendar['cal_id']}&m={$_dateBits[1]}&y={$_dateBits[0]}", $this->calendar['cal_title_seo'], 'cal_month' ); + $this->registry->output->addNavigation( $_dateBits[3] . ' ' . $_dateBits[2] . ', ' . $_dateBits[0], "app=calendar&module=calendar&section=view&cal_id={$this->calendar['cal_id']}&do=showday&y={$_dateBits[0]}&m={$_dateBits[1]}&d={$_dateBits[2]}", $this->calendar['cal_title_seo'], 'cal_day' ); + } + + //----------------------------------------- + // How about a week view? + //----------------------------------------- + + else if( preg_match( "#/week\-(\d+?)$#i", $_referrer, $matches ) ) + { + $_dateBits = explode( '-', gmstrftime( '%Y-%m-%d-%B', $matches[1] ) ); + $this->registry->output->addNavigation( $_dateBits[3] . ' ' . $_dateBits[0], "app=calendar&module=calendar&section=view&cal_id={$this->calendar['cal_id']}&m={$_dateBits[1]}&y={$_dateBits[0]}", $this->calendar['cal_title_seo'], 'cal_month' ); + $this->registry->output->addNavigation( "{$this->lang->words['week_beginning']} " . gmstrftime( '%B %d, %Y', $matches[1] ), "app=calendar&module=calendar&section=view&cal_id={$this->calendar['cal_id']}&do=showweek&week={$matches[1]}", $this->calendar['cal_title_seo'], 'cal_week' ); + } + + //----------------------------------------- + // Or a month view? + //----------------------------------------- + + else if( preg_match( "#/(\d{1,2})\-(\d{4})$#i", $_referrer, $matches ) ) + { + $_dateBits = explode( '-', gmstrftime( '%Y-%m-%d-%B', gmmktime( 0, 0, 0, $matches[1], 15, $matches[2] ) ) ); + $this->registry->output->addNavigation( $_dateBits[3] . " " . $_dateBits[0], "app=calendar&module=calendar&section=view&cal_id={$this->calendar['cal_id']}&m={$_dateBits[1]}&y={$_dateBits[0]}", $this->calendar['cal_title_seo'], 'cal_month' ); + } + else if( preg_match( "#/(\d+?)\-(.+?)$#i", $_referrer, $matches ) ) + { + $_data = $this->calendarMakeEventHTML( $event, true ); + $_dateBits = explode( '-', gmstrftime( '%Y-%m-%d-%B', $_data['event']['_start_time'] ) ); + $this->registry->output->addNavigation( $_dateBits[3] . " " . $_dateBits[0], "app=calendar&module=calendar&section=view&cal_id={$this->calendar['cal_id']}&m={$_dateBits[1]}&y={$_dateBits[0]}", $this->calendar['cal_title_seo'], 'cal_month' ); + } + else + { + $_data = $this->calendarMakeEventHTML( $event, true ); + $_dateBits = explode( '-', gmstrftime( '%Y-%m-%d-%B', $_data['event']['_start_time'] ) ); + $this->registry->output->addNavigation( $_dateBits[3] . ' ' . $_dateBits[0], "app=calendar&module=calendar&section=view&cal_id={$this->calendar['cal_id']}&m={$_dateBits[1]}&y={$_dateBits[0]}", $this->calendar['cal_title_seo'], 'cal_month' ); + $this->registry->output->addNavigation( $_dateBits[3] . ' ' . $_dateBits[2] . ', ' . $_dateBits[0], "app=calendar&module=calendar&section=view&cal_id={$this->calendar['cal_id']}&do=showday&y={$_dateBits[0]}&m={$_dateBits[1]}&d={$_dateBits[2]}", $this->calendar['cal_title_seo'], 'cal_day' ); + } + } + + //----------------------------------------- + // Finish output + //----------------------------------------- + + $this->registry->output->addNavigation( $event['event_title'] ); + $this->registry->output->addMetaTag( 'keywords', $this->chosen_date['month_name'] . ' ' . $_dateBits[2] . ' events event calendar ' . $event['event_title'] . ' ' . IPSText::getTextClass( 'bbcode' )->stripAllTags( $event['event_content'] ), TRUE ); + $this->registry->output->addMetaTag( 'description', str_replace( "\n", " ", str_replace( "\r", "", IPSText::getTextClass( 'bbcode' )->stripAllTags( $event['event_content'] ) ) ), FALSE, 155 ); + $this->registry->output->addToDocumentHead( 'raw', "calendar['cal_title_seo'], 'cal_calendar' ) . "' />" ); + $this->registry->output->addToDocumentHead( 'raw', "" ); + $this->registry->getClass('output')->addCanonicalTag( 'app=calendar&module=calendar&section=view&do=showevent&event_id=' . $event['event_id'], $event['event_title_seo'], 'cal_event' ); + + $this->page_title = $event['event_title']; + $this->output .= $this->registry->output->getTemplate( 'calendar' )->calendarShowEvent( $this->calendarMakeEventHTML( $event ), $comments ); + } + + /** + * Shows the events for a week + * + * @return @e void + */ + public function calendarShowWeek() + { + //----------------------------------------- + // Init + //----------------------------------------- + + $in_week = intval( $this->request['week'] ); + $_dayOfWeek = gmdate( 'w', $in_week ); + $last_month_id = -1; + $output = ''; + $seenIds = array(); + + //----------------------------------------- + // Figure out date stuff + //----------------------------------------- + + if( !$this->settings['ipb_calendar_mon'] ) + { + if( $_dayOfWeek > 0 ) + { + while( $_dayOfWeek > 0 ) + { + $_dayOfWeek--; + $in_week -= 86400; + } + } + } + else + { + if( $_dayOfWeek != 1 ) + { + $_dayOfWeek = !$_dayOfWeek ? 6 : $_dayOfWeek; + + while( $_dayOfWeek != 1 ) + { + $_dayOfWeek--; + $in_week -= 86400; + } + } + } + + $our_datestamp = gmmktime( 12, 0, 0, gmstrftime( '%m', $in_week ), gmstrftime( '%d', $in_week ), gmstrftime( '%Y', $in_week ) ); + + $this->chosen_date = array( + 'month' => gmstrftime( '%m', $in_week ), + 'year' => gmstrftime( '%Y', $in_week ), + 'month_name' => gmstrftime( '%B', $in_week ) + ); + + //----------------------------------------- + // Get last/next month info + //----------------------------------------- + + $_previous = $this->calendarGetPreviousMonth( $this->chosen_date['month'], $this->chosen_date['year'] ); + $_next = $this->calendarGetNextMonth( $this->chosen_date['month'], $this->chosen_date['year'] ); + + //----------------------------------------- + // Get events + //----------------------------------------- + + $this->calendarGetEventsSQL( $this->chosen_date['month'], $this->chosen_date['year'] ); + + //----------------------------------------- + // Start looping and outputting + //----------------------------------------- + + for( $i = 0 ; $i <= 6 ; $i++ ) + { + //----------------------------------------- + // Init + //----------------------------------------- + + $year = gmstrftime( '%Y', $our_datestamp ); + $month = gmstrftime( '%m', $our_datestamp ); + $day = gmstrftime( '%d', $our_datestamp ); + $events = $this->calendarGetDayEvents( $month, $day, $year ); + $_hasQueued = 0; + $this_day_events = ""; + + if( $i == 0 ) + { + $this->chosen_date['first_day'] = $day; + } + + //----------------------------------------- + // Show month bar? + //----------------------------------------- + + if ( $last_month_id != $month ) + { + $last_month_id = $month; + $output .= $this->registry->output->getTemplate('calendar')->cal_week_monthbar( gmstrftime( '%B', $our_datestamp ), $year ); + + //----------------------------------------- + // Get birthdays + //----------------------------------------- + + if ( $this->settings['show_bday_calendar'] ) + { + $birthdays = $this->_getBirthdaysForMonth( $month ); + } + } + + //----------------------------------------- + // Have events? + //----------------------------------------- + + if ( is_array( $events ) AND count( $events ) ) + { + foreach( $events as $event ) + { + if ( empty($seenIds[ $month . '-' . $day . '-' . $year ][ $event['event_id'] ]) ) + { + $event = $this->calendarMakeEventHTML( $event, true ); + $event = $event['event']; + + if ( $event['recurring'] ) + { + $this_day_events .= $this->registry->output->getTemplate('calendar')->cal_events_wrap_recurring( $event, 'week' ); + } + else if ( $event['single'] ) + { + $this_day_events .= $this->registry->output->getTemplate('calendar')->cal_events_wrap( $event, 'week' ); + } + else + { + $this_day_events .= $this->registry->output->getTemplate('calendar')->cal_events_wrap_range( $event, 'week' ); + } + + $seenIds[ $month . '-' . $day . '-' . $year ][ $event['event_id'] ] = true; + } + + //----------------------------------------- + // Set queued flag + //----------------------------------------- + + if ( !$event['event_approved'] AND $this->memberData['g_is_supmod'] ) + { + $_hasQueued = 1; + } + } + } + + //----------------------------------------- + // Have birthdays? + //----------------------------------------- + + if( $this->calendar['cal_bday_limit'] ) + { + if( isset( $birthdays[ $day ] ) and count( $birthdays[ $day ] ) > 0 ) + { + $no_bdays = count( $birthdays[ $day ] ); + + if ( $no_bdays <= $this->calendar['cal_bday_limit'] ) + { + foreach( $birthdays[ $day ] as $user ) + { + $this_day_events .= $this->registry->output->getTemplate('calendar')->cal_week_events_wrap( + array( 'cal_id' => $this->calendar['cal_id'], 'y' => $year, 'm' => $month, 'd' => $day, 'seotitle' => $this->calendar['cal_title_seo'] ), + $user['members_display_name'] . $this->lang->words['bd_birthday'] + ); + } + + } + else + { + $this_day_events .= $this->registry->output->getTemplate('calendar')->cal_week_events_wrap( + array( 'cal_id' => $this->calendar['cal_id'], 'y' => $year, 'm' => $month, 'd' => $day, 'seotitle' => $this->calendar['cal_title_seo'] ), + sprintf( $this->lang->words['entry_birthdays'], $no_bdays ) + ); + } + } + } + + $this_day_events = $this_day_events ? $this_day_events : ' '; + + $output .= $this->registry->output->getTemplate('calendar')->cal_week_dayentry( gmstrftime( '%a', $our_datestamp ), $day, gmstrftime( '%B', gmmktime( 0, 0, 0, $month, 15, $year ) ), $month, $year, $this_day_events, $_hasQueued ); + + $our_datestamp += 86400; + } + + //----------------------------------------- + // Output + //----------------------------------------- + + $this->registry->output->addNavigation( $this->chosen_date['month_name'] . " " . $this->chosen_date['year'], "app=calendar&module=calendar&section=view&cal_id={$this->calendar['cal_id']}&m={$this->chosen_date['month']}&y={$this->chosen_date['year']}", $this->calendar['cal_title_seo'], 'cal_month' ); + $this->registry->output->addNavigation( "{$this->lang->words['week_beginning']} " . gmstrftime( '%B %d, %Y', $in_week ) ); + $this->registry->output->addMetaTag( 'keywords', $this->chosen_date['month_name'] . ' events event calendar week', TRUE ); + $this->registry->output->addMetaTag( 'description', str_replace( "\n", " ", str_replace( "\r", "", sprintf( $this->lang->words['week_meta_description'], gmstrftime( '%U', $in_week ), $this->chosen_date['year'] ) ) ), FALSE, 155 ); + $this->registry->output->addToDocumentHead( 'raw', "calendar['cal_id'], 'publicNoSession', $this->calendar['cal_title_seo'], 'cal_calendar' ) . "' />" ); + $this->registry->getClass('output')->addCanonicalTag( 'app=calendar&module=calendar&section=view&cal_id=' . $this->calendar['cal_id'] . '&do=showweek&week=' . $in_week, $this->calendar['cal_title_seo'], 'cal_week' ); + + $this->page_title = "{$this->lang->words['week_beginning']} " . gmstrftime( '%B %d, %Y', $in_week ); + + $this->output .= $this->registry->output->getTemplate('calendar')->calendarWeekView( array( + 'calendars' => $this->functions->getCalendars(), + 'calendar' => $this->calendar, + 'prev_minical' => $this->getMiniCalendar( $_previous['month_id'], $_previous['year_id'] ), + 'cur_minical' => $this->getMiniCalendar( $this->chosen_date['month'], $this->chosen_date['year'] ), + 'next_minical' => $this->getMiniCalendar( $_next['month_id'], $_next['year_id'] ), + 'month_box' => $this->functions->returnMonthDropdown( $this->chosen_date['month'] ), + 'year_box' => $this->functions->returnYearDropdown( $this->chosen_date['year'] ), + 'events' => $output, + 'chosen_date' => $this->chosen_date, + 'prev_month' => $_previous, + 'next_month' => $_next, + 'start_date' => gmstrftime( '%B %d, %Y', $in_week ), + 'prev_week' => $in_week - 604800, + 'next_week' => $in_week + 604800, + 'this_week' => $in_week, + '_can_add' => ( $this->memberData['member_id'] AND $this->registry->permissions->check( 'start', $this->calendar ) ), + ) ); + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/modules_public/feed/defaultSection.php b/upload/admin/applications_addon/ips/calendar/modules_public/feed/defaultSection.php new file mode 100644 index 00000000..3c63a8fd --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/modules_public/feed/defaultSection.php @@ -0,0 +1,13 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/modules_public/feed/output.php b/upload/admin/applications_addon/ips/calendar/modules_public/feed/output.php new file mode 100644 index 00000000..035f8d7d --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/modules_public/feed/output.php @@ -0,0 +1,126 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * Calendar iCalendar/webcal output + * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $ + * + * + * @author $Author: bfarber $ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Calendar + * @link http://www.invisionpower.com + * @version $Rev: 10721 $ + */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +class public_calendar_feed_output extends ipsCommand +{ + /** + * Calendar data + * + * @var array + */ + protected $calendar = array(); + + /** + * Calendar functions + * + * @var object + */ + protected $functions; + + /** + * Class entry point + * + * @param object Registry reference + * @return @e void [Outputs to screen/redirects] + */ + public function doExecute( ipsRegistry $registry ) + { + //----------------------------------------- + // Init + //----------------------------------------- + + $this->registry->class_localization->loadLanguageFile( array( 'public_calendar' ), 'calendar' ); + + $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'calendar' ) . "/sources/functions.php", 'app_calendar_classes_functions', 'calendar' ); + $this->functions = new $classToLoad( $this->registry ); + $this->calendar = $this->functions->getCalendar(); + + //----------------------------------------- + // Switch + //----------------------------------------- + + switch( $this->request['do'] ) + { + default: + case 'download': + $this->downloadIcalFeed(); + break; + } + } + + /** + * Serve the iCalendar feed (valid for both download as .ics and webcal:// protocol) + * + * @return @e void + */ + public function downloadIcalFeed() + { + //----------------------------------------- + // Get main view class + //----------------------------------------- + + $classToLoad = IPSLib::loadActionOverloader( IPSLib::getAppDir( 'calendar' ) . '/modules_public/calendar/view.php', 'public_calendar_calendar_view' ); + $calendar = new $classToLoad( $this->registry ); + $calendar->makeRegistryShortcuts( $this->registry ); + $calendar->initCalendar(); + + //----------------------------------------- + // Load (all) events + //----------------------------------------- + + $calendar->calendarGetEventsSQL( gmstrftime( '%m' ), gmstrftime( '%Y' ), array( 'timenow' => '1', 'timethen' => '2000000000', 'cal_id' => $this->calendar['cal_id'], 'honor_permissions' => true, 'no_date_convert' => true ) ); + + $events = $calendar->calendarGetAllEvents(); + + //----------------------------------------- + // Load iCalendar class + //----------------------------------------- + + $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'calendar' ) . "/sources/icalendar.php", 'app_calendar_classes_icalendarOutput', 'calendar' ); + $iCalendar = new $classToLoad( $this->registry, $this->calendar['cal_id'] ); + + //----------------------------------------- + // Send data to iCalendar class and get output + //----------------------------------------- + + foreach( $events as $event ) + { + $event = $calendar->calendarMakeEventHTML( $event, true ); + + $iCalendar->addEvent( $event ); + } + + $feed = $iCalendar->buildICalendarFeed(); + + //----------------------------------------- + // Output + //----------------------------------------- + + @header( "Content-type: text/calendar; charset=" . IPS_DOC_CHAR_SET ); + @header( "Content-Disposition: inline; filename=calendarEvents.ics" ); + + print $feed; + exit; + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/modules_public/index.html b/upload/admin/applications_addon/ips/calendar/modules_public/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/modules_public/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/setup/index.html b/upload/admin/applications_addon/ips/calendar/setup/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/setup/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/setup/upgradeCheck.php b/upload/admin/applications_addon/ips/calendar/setup/upgradeCheck.php new file mode 100644 index 00000000..6617c5c0 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/setup/upgradeCheck.php @@ -0,0 +1,59 @@ + + * Invision Power Services + * IP.Calendar - requirements checker + * Last Updated: $Date: 2012-05-21 09:09:36 -0400 (Mon, 21 May 2012) $ + * + * + * @author $Author: ips_terabyte $ (Orginal: Mark) + * @copyright (c) 2010 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Calendar + * @link http://www.invisionpower.com + * @since 8th September 2010 + * @version $Revision: 10771 $ + */ + +class calendar_upgradeCheck +{ + /** + * Check we can upgrade + * + * @return mixed Boolean true or error message + */ + public function checkForProblems() + { + //----------------------------------------- + // Compatibility check + //----------------------------------------- + + $requiredIpbVersion = 32003; // 3.2.0 + + $args = func_get_args(); + if ( !empty( $args ) ) + { + $numbers = IPSSetUp::fetchAppVersionNumbers( 'core' ); + + /* Are we upgrading core now? */ + if ( isset( $args[0]['core'] ) ) + { + $ourVersion = $numbers['latest'][0]; + } + /* No - check installed version */ + else + { + $ourVersion = $numbers['current'][0]; + } + + if ( $requiredIpbVersion > $ourVersion ) + { + $allVersions = IPSSetUp::fetchXmlAppVersions( 'core' ); + + return "This version of IP.Calendar requires IP.Board {$allVersions[ $requiredIpbVersion ]} or higher."; + } + } + + return TRUE; + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/setup/versions/index.html b/upload/admin/applications_addon/ips/calendar/setup/versions/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/setup/versions/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/setup/versions/install/index.html b/upload/admin/applications_addon/ips/calendar/setup/versions/install/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/setup/versions/install/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/setup/versions/install/sql/calendar_mysql_fulltext.php b/upload/admin/applications_addon/ips/calendar/setup/versions/install/sql/calendar_mysql_fulltext.php new file mode 100644 index 00000000..dd547124 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/setup/versions/install/sql/calendar_mysql_fulltext.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/setup/versions/install/sql/calendar_mysql_inserts.php b/upload/admin/applications_addon/ips/calendar/setup/versions/install/sql/calendar_mysql_inserts.php new file mode 100644 index 00000000..44c174dc --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/setup/versions/install/sql/calendar_mysql_inserts.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/setup/versions/install/sql/index.html b/upload/admin/applications_addon/ips/calendar/setup/versions/install/sql/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/setup/versions/install/sql/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/setup/versions/upg_32000/index.html b/upload/admin/applications_addon/ips/calendar/setup/versions/upg_32000/index.html new file mode 100644 index 00000000..bae2d5ed --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/setup/versions/upg_32000/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/setup/versions/upg_32000/mysql_updates.php b/upload/admin/applications_addon/ips/calendar/setup/versions/upg_32000/mysql_updates.php new file mode 100644 index 00000000..db134136 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/setup/versions/upg_32000/mysql_updates.php @@ -0,0 +1,142 @@ +getPrefix()); +$DB = ipsRegistry::DB(); + +/* Fix app association for RC plugin */ + +$SQL[] = "UPDATE rc_classes SET app='calendar' WHERE my_class='calendar';"; + +/* Update cal_calendars table */ + +$SQL[] = "ALTER TABLE cal_calendars DROP cal_permissions, + ADD cal_title_seo VARCHAR( 255 ) NULL DEFAULT NULL, + ADD cal_comment_moderate TINYINT( 1 ) NOT NULL DEFAULT '0', + ADD cal_rsvp_owner TINYINT( 1 ) NOT NULL DEFAULT '0';"; + +/* New tables */ + +$SQL[] = "CREATE TABLE cal_event_ratings ( + rating_id int(10) NOT NULL auto_increment, + rating_eid int(10) NOT NULL default '0', + rating_member_id mediumint(8) NOT NULL default '0', + rating_value smallint(6) NOT NULL default '0', + rating_ip_address varchar(46) NOT NULL, + PRIMARY KEY (rating_id), + KEY rating_eid (rating_eid,rating_member_id), + KEY rating_ip_address (rating_ip_address) +);"; + +$SQL[] = "CREATE TABLE cal_event_comments ( + comment_id int(10) NOT NULL auto_increment, + comment_eid int(10) NOT NULL default '0', + comment_mid mediumint(8) NOT NULL default '0', + comment_date int(11) NOT NULL default '0', + comment_approved tinyint(1) NOT NULL default '0', + comment_text mediumtext, + comment_append_edit tinyint(1) NOT NULL default '0', + comment_edit_time int(11) NOT NULL default '0', + comment_edit_name varchar(255) default NULL, + ip_address varchar(46) default NULL, + comment_author varchar(255) default NULL, + PRIMARY KEY (comment_id), + KEY comment_eid (comment_eid), + KEY ip_address (ip_address) +);"; + +$SQL[] = "CREATE TABLE cal_event_rsvp ( + rsvp_id int(11) NOT NULL auto_increment, + rsvp_event_id int(11) NOT NULL default '0', + rsvp_member_id int(11) NOT NULL default '0', + rsvp_date int(11) NOT NULL default '0', + PRIMARY KEY (rsvp_id), + KEY rsvp_event_id (rsvp_event_id), + KEY rsvp_member_id (rsvp_member_id) +);"; + +$SQL[] = "CREATE TABLE cal_import_feeds ( + feed_id int(11) NOT NULL auto_increment, + feed_title varchar(255) default NULL, + feed_url text, + feed_added int(11) NOT NULL default '0', + feed_lastupdated int(11) NOT NULL default '0', + feed_recache_freq int(11) NOT NULL default '0', + feed_calendar_id int(11) NOT NULL default '0', + feed_member_id INT NOT NULL DEFAULT '0', + feed_next_run INT NOT NULL DEFAULT '0', + PRIMARY KEY (feed_id), + KEY feed_calendar_id (feed_calendar_id), + KEY feed_next_run (feed_next_run) +);"; + +$SQL[] = "CREATE TABLE cal_import_map ( + import_id int(11) NOT NULL auto_increment, + import_feed_id int(11) NOT NULL default '0', + import_event_id int(11) NOT NULL default '0', + import_guid varchar(255) NOT NULL default '0', + PRIMARY KEY (import_id), + KEY import_feed_id (import_feed_id), + KEY import_event_id (import_event_id), + KEY import_guid (import_guid) +);"; + + +/* Upgrade calendar events... */ + +$SQL[] = "RENAME TABLE cal_events TO cal_events_bak;"; + +$SQL[] = "CREATE TABLE cal_events ( + event_id int(10) unsigned NOT NULL auto_increment, + event_calendar_id int(10) unsigned NOT NULL default '0', + event_member_id mediumint(8) unsigned NOT NULL default '0', + event_content mediumtext, + event_title varchar(255) NOT NULL default '', + event_smilies tinyint(1) NOT NULL default '0', + event_comments int NOT NULL default '0', + event_rsvp tinyint(1) NOT NULL default '0', + event_perms text, + event_private tinyint(1) NOT NULL default '0', + event_approved tinyint(1) NOT NULL default '0', + event_saved int(10) unsigned NOT NULL default '0', + event_lastupdated int(10) unsigned NOT NULL default '0', + event_recurring int(2) unsigned NOT NULL default '0', + event_start_date datetime NOT NULL, + event_end_date datetime default NULL, + event_title_seo VARCHAR( 255 ) NULL DEFAULT NULL, + event_rating_total INT NOT NULL DEFAULT '0', + event_rating_hits INT NOT NULL DEFAULT '0', + event_rating_avg INT NOT NULL DEFAULT '0', + event_attachments INT NOT NULL DEFAULT '0', + event_post_key VARCHAR( 32 ) NULL DEFAULT NULL, + event_comments_pending INT NOT NULL DEFAULT '0', + event_sequence INT NOT NULL DEFAULT '0', + PRIMARY KEY (event_id), + KEY approved (event_calendar_id , event_approved , event_start_date , event_end_date), + KEY event_member_id (event_member_id, event_approved, event_private, event_lastupdated) +);"; + +$SQL[] = "INSERT INTO cal_events SELECT event_id, event_calendar_id, event_member_id, event_content, event_title, event_smilies, 0, 0, event_perms, event_private, event_approved, event_unixstamp, event_unixstamp, +event_recurring, FROM_UNIXTIME(event_unix_from), CASE WHEN event_unix_to > 0 THEN FROM_UNIXTIME(event_unix_to) ELSE NULL END, '', 0, 0, 0, 0, MD5( CONCAT( event_id, event_title ) ), 0, 1 FROM {$PRE}cal_events_bak;"; + +$SQL[] = "DROP TABLE cal_events_bak;"; + +/* Add fulltext indexes, if appropriate */ + +if( $DB->checkFulltextSupport() ) +{ + $SQL[] = "ALTER TABLE cal_events ADD FULLTEXT (event_content);"; + $SQL[] = "ALTER TABLE cal_events ADD FULLTEXT (event_title);"; +} diff --git a/upload/admin/applications_addon/ips/calendar/setup/versions/upg_32000/version_upgrade.php b/upload/admin/applications_addon/ips/calendar/setup/versions/upg_32000/version_upgrade.php new file mode 100644 index 00000000..175b76f8 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/setup/versions/upg_32000/version_upgrade.php @@ -0,0 +1,137 @@ +Incorrect accessYou cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +class version_upgrade +{ + /** + * Custom HTML to show + * + * @var string + */ + protected $_output = ''; + + /** + * fetchs output + * + * @return string + */ + public function fetchOutput() + { + return $this->_output; + } + + /** + * Execute selected method + * + * @param object Registry object + * @return @e void + */ + public function doExecute( ipsRegistry $registry ) + { + /* Make object */ + $this->registry = $registry; + $this->DB = $this->registry->DB(); + $this->settings =& $this->registry->fetchSettings(); + $this->request =& $this->registry->fetchRequest(); + $this->cache = $this->registry->cache(); + $this->caches =& $this->registry->cache()->fetchCaches(); + + //-------------------------------- + // What are we doing? + //-------------------------------- + + switch( $this->request['workact'] ) + { + default: + case 'fixtitles': + $this->fixSeoTitles(); + break; + } + + /* Workact is set in the function, so if it has not been set, then we're done. The last function should unset it. */ + if ( $this->request['workact'] ) + { + return false; + } + else + { + return true; + } + } + + /** + * Set the SEO titles + * + * @param int + * @return @e void + */ + public function fixSeoTitles() + { + /* Init */ + $st = intval($this->request['st']); + $did = 0; + $each = 200; + + /* If this is the first pass, do the cal_calendars table too */ + if( !$st ) + { + $this->DB->build( array( 'select' => 'cal_id, cal_title', 'from' => 'cal_calendars' ) ); + $outer = $this->DB->execute(); + + while( $r = $this->DB->fetch($outer) ) + { + $this->DB->update( 'cal_calendars', array( 'cal_title_seo' => IPSText::makeSeoTitle( $r['cal_title'] ) ), 'cal_id=' . $r['cal_id'] ); + } + + $this->registry->output->addMessage( 'Calendar FURL titles rebuilt' ); + } + + /* Build event FURL titles */ + $this->DB->build( array( 'select' => 'event_id, event_title', 'from' => 'cal_events', 'order' => 'event_id ASC', 'limit' => array( $st, $each ) ) ); + $outer = $this->DB->execute(); + + while( $r = $this->DB->fetch($outer) ) + { + $did++; + + $this->DB->update( 'cal_events', array( 'event_title_seo' => IPSText::makeSeoTitle( $r['event_title'] ) ), 'event_id=' . $r['event_id'] ); + } + + /* Show message and redirect */ + if( $did > 0 ) + { + $this->request['st'] = $st + $did; + $this->request['workact'] = 'fixtitles'; + + $this->registry->output->addMessage( "Up to {$this->request['st']} event FURL titles rebuilt so far..." ); + } + else + { + $this->request['st'] = 0; + $this->request['workact'] = ''; + + $this->registry->output->addMessage( "All event FURL titles rebuilt..." ); + } + + /* Next Page */ + return; + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/setup/versions/upg_32005/index.html b/upload/admin/applications_addon/ips/calendar/setup/versions/upg_32005/index.html new file mode 100644 index 00000000..bae2d5ed --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/setup/versions/upg_32005/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/setup/versions/upg_32005/mysql_updates.php b/upload/admin/applications_addon/ips/calendar/setup/versions/upg_32005/mysql_updates.php new file mode 100644 index 00000000..452566a7 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/setup/versions/upg_32005/mysql_updates.php @@ -0,0 +1,17 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/setup/versions/upg_33002/version_upgrade.php b/upload/admin/applications_addon/ips/calendar/setup/versions/upg_33002/version_upgrade.php new file mode 100644 index 00000000..bb832800 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/setup/versions/upg_33002/version_upgrade.php @@ -0,0 +1,127 @@ +Incorrect accessYou cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +class version_upgrade +{ + /** + * Custom HTML to show + * + * @var string + */ + protected $_output = ''; + + /** + * fetchs output + * + * @return string + */ + public function fetchOutput() + { + return $this->_output; + } + + /** + * Execute selected method + * + * @param object Registry object + * @return @e void + */ + public function doExecute( ipsRegistry $registry ) + { + /* Make object */ + $this->registry = $registry; + $this->DB = $this->registry->DB(); + $this->settings =& $this->registry->fetchSettings(); + $this->request =& $this->registry->fetchRequest(); + $this->cache = $this->registry->cache(); + $this->caches =& $this->registry->cache()->fetchCaches(); + + //-------------------------------- + // What are we doing? + //-------------------------------- + + switch( $this->request['workact'] ) + { + default: + case 'minicaldel': + $this->removeMinicalCaches(); + break; + } + + /* Workact is set in the function, so if it has not been set, then we're done. The last function should unset it. */ + if ( $this->request['workact'] ) + { + return false; + } + else + { + return true; + } + } + + /** + * Remove excessive minical caches from earlier versions + * + * @return @e void + */ + public function removeMinicalCaches() + { + /* Init */ + $st = intval($this->request['st']); + $did = 0; + $each = 500; + + /* Grab the minicals */ + $this->DB->build( array( 'select' => '*', 'from' => 'cache_store', 'where' => "cs_key LIKE 'minical_%'", 'limit' => array( $st, $each ) ) ); + $outer = $this->DB->execute(); + + while( $r = $this->DB->fetch($outer) ) + { + $did++; + + $caches[] = $r['cs_key']; + } + + if( count($caches) ) + { + $this->cache->deleteCache( $caches ); + } + + /* Show message and redirect */ + if( $did > 0 ) + { + $this->request['st'] = $st + $did; + $this->request['workact'] = 'minicaldel'; + + $this->registry->output->addMessage( "Up to {$this->request['st']} minical caches removed so far..." ); + } + else + { + $this->request['st'] = 0; + $this->request['workact'] = ''; + + $this->registry->output->addMessage( "All minical caches removed..." ); + } + + /* Next Page */ + return; + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/skin_cp/appIcon.png b/upload/admin/applications_addon/ips/calendar/skin_cp/appIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..783c83357fdf90a1c7c024358e1d768b5c09c135 GIT binary patch literal 626 zcmV-&0*(ENP)5OC%H;f`~O(q$Q#t2<^v$A>fbmv%e#dKTwK=Ku{5lS|}<-`a#7b zzTCOnnT>at)D}AMFuOZ5&%EqFN(lyumd$2ASF6=;nM~%2?gqc@U=#|4PqkX@EBo-9 z7pD#bO_RUa>*faM`8;MYfVi$JnB-zcBFc6gjl$d!bF98Q!!!(Z1_R~P?e!pt#6CHJ9S&n_n&@=9 z%GP;!@Co4c*at+6vNz7o(6en^Q1%qHrc;1)9IRaz-$@S$Z-qdC^ds3X0NvQH;KS)D z-dh&rW&@X;1cS(45z)J&BVt+tv&GMVJ%!EiW) zLBGZW)#Z+gl-Lih&?>X3SS-S#ujQ;9JRXmIB7X)8`d6ETj)D#Q2+$s|<_b7-B9Xvq zwNfqlEp%y3$uY`h{Y$(Gn5@}sqEsq95lpAkFO5dyBmP6^H-51G4J|rN2Ujt<`2YX_ M07*qoM6N<$f + * Invision Power Services + * IP.Board v3.4.5 + * Calendar skin file + * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $ + * + * + * @author $Author: bfarber $ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Calendar + * @link http://www.invisionpower.com + * @since Friday 19th May 2006 17:33 + * @version $Revision: 10721 $ + */ + +class cp_skin_calendar +{ + /** + * Registry Object Shortcuts + * + * @var $registry + * @var $DB + * @var $settings + * @var $request + * @var $lang + * @var $member + * @var $memberData + * @var $cache + * @var $caches + */ + protected $registry; + protected $DB; + protected $settings; + protected $request; + protected $lang; + protected $member; + protected $memberData; + protected $cache; + protected $caches; + + /** + * Constructor + * + * @param object $registry Registry object + * @return @e void + */ + public function __construct( ipsRegistry $registry ) + { + $this->registry = $registry; + $this->DB = $this->registry->DB(); + $this->settings =& $this->registry->fetchSettings(); + $this->request =& $this->registry->fetchRequest(); + $this->member = $this->registry->member(); + $this->memberData =& $this->registry->member()->fetchMemberData(); + $this->cache = $this->registry->cache(); + $this->caches =& $this->registry->cache()->fetchCaches(); + $this->lang = $this->registry->class_localization; + } + +/** + * Form to add/edit a calendar + * + * @access public + * @param array Form elements + * @param string Form title + * @param string Action code + * @param string Button text + * @param array Calendar data + * @return string HTML + */ +public function calendarForm($form, $title, $formcode, $button, $calendar) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << +

    {$this->lang->words['c_title']}

    + + +
    form_code}&do={$formcode}&cal_id={$calendar['cal_id']}' method='post'> + _admin_auth_key}' /> + +
    +

    {$title}

    +
    +
      +
    • {$this->lang->words['a_options']}
    • +
    • {$this->lang->words['tab_permissions']}
    • +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + {$this->lang->words['c_block_title']} + {$form['cal_title']}
    + {$this->lang->words['c_block_mod']} + {$form['cal_moderate']}
    {$this->lang->words['c_block_mod_info']}
    + {$this->lang->words['c_block_modc']} + {$form['cal_moderatec']}
    {$this->lang->words['c_block_modc_info']}
    + {$this->lang->words['c_block_rsvp']} + {$form['cal_rsvp']}
    {$this->lang->words['c_block_rsvp_info']}
    + {$this->lang->words['c_block_limit']} + {$form['cal_event_limit']}
    {$this->lang->words['c_block_limit_info']}
    + {$this->lang->words['c_block_bday']} + {$form['cal_bday_limit']}
    {$this->lang->words['c_block_bday_info']}
    {$this->lang->words['c_block_rss']}
    + {$this->lang->words['c_block_enable']} + {$form['cal_rss_export']}
    {$this->lang->words['c_block_enabled_info']}
    + {$this->lang->words['c_block_forthcoming']} + {$form['cal_rss_export_days']}
    + {$this->lang->words['c_block_max']} + {$form['cal_rss_export_max']}
    {$this->lang->words['c_block_max_info']}
    + {$this->lang->words['c_block_freq']} + {$form['cal_rss_update']}
    {$this->lang->words['c_block_freq_info']}
    +
    +
    + {$form['perm_matrix']} +
    +
    +
    + +
    +
    +
    + + +HTML; + +//--endhtml--// +return $IPBHTML; +} + +/** + * Calendar overview screen + * + * @access public + * @param array Calendars + * @return string HTML + */ +public function calendarOverviewScreen( $rows ) { + +$IPBHTML = ""; + +//--starthtml--// +$IPBHTML .= << +

    {$this->lang->words['c_title']}

    + + + + + +HTML; + +//--endhtml--// +return $IPBHTML; +} + +/** + * Confirm feed deletion and how to handle events + * + * @access public + * @param array Feed data + * @return string HTML + */ +public function deleteConfirm( $feed ) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << +

    {$this->lang->words['feed_del_confirm_t']}

    + + +
    form_code}&do=delete&id={$feed['feed_id']}' method='post'> + _admin_auth_key}' /> + + +
    + + + + + +
    + {$this->lang->words['delete_events_too']} + {$this->registry->output->formYesNo( 'delete_events' , 0 )}
    +
    + +
    +
    +
    +HTML; + +//--endhtml--// +return $IPBHTML; +} + +/** + * Form to add/edit an ical feed + * + * @access public + * @param array Form elements + * @param string Form title + * @param string Action code + * @param string Button text + * @param array Feed data + * @return string HTML + */ +public function feedForm($form, $title, $formcode, $button, $feed) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << +

    {$this->lang->words['ical_manager']}

    + + + +
    form_code}&do={$formcode}&id={$feed['feed_id']}' method='post'> + _admin_auth_key}' /> + +
    +

    {$title}

    + + + + + + + + + + + + + + + + + + + + + + +
    + {$this->lang->words['feed_formtitle']} + {$form['feed_title']}
    + {$this->lang->words['feed_formurl']} + {$form['feed_url']}
    {$this->lang->words['feed_urlinfo']}
    + {$this->lang->words['feed_calid']} + {$form['feed_calendar_id']}
    {$this->lang->words['feed_calinfo']}
    + {$this->lang->words['feed_formmem']} + {$form['feed_member_id']}
    {$this->lang->words['feed_formmemi']}
    + {$this->lang->words['feed_formfreq']} + {$form['feed_recache_freq']}
    {$this->lang->words['feed_freqinfo']}
    +
    + +
    +
    +
    + +HTML; + +//--endhtml--// +return $IPBHTML; +} + +/** + * List of feeds + * + * @access public + * @param array Feeds + * @param array Calendars + * @return string HTML + */ +public function feedsList( $feeds, $calendars ) { + +$IPBHTML = ""; + +//--starthtml--// +$IPBHTML .= << +

    {$this->lang->words['c_title']}

    + + + +
    +

    {$this->lang->words['feeds_for_import']}

    + +HTML; + +if( count($feeds) ) +{ + foreach( $feeds as $r ) + { + $IPBHTML .= << + + + +HTML; + } +} +else +{ + $IPBHTML .= << + + +HTML; +} + +$IPBHTML .= << + +
    + +form_code}&do=import' method='post' enctype='multipart/form-data'> +
    +

    {$this->lang->words['feed_ics_import']}

    +
    + form_code}&do=edit&id={$r['feed_id']}'>{$r['feed_title']} + + +
    + {$this->lang->words['no_feeds_yet']} form_code}&do=add' class='mini_button'>{$this->lang->words['addfirstfeed']} +
    + + + + + + + + + + + + +
    + {$this->lang->words['upload_ics_feed']} +
    {$this->lang->words['upload_ics_info']}
    + {$this->lang->words['upload_ics_cal']} + +
    + {$this->lang->words['upload_ics_user']} +
    {$this->lang->words['upload_ics_useri']}
    +
    + +
    +
    + + +HTML; + +//--endhtml--// +return $IPBHTML; +} + + +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/skin_cp/index.html b/upload/admin/applications_addon/ips/calendar/skin_cp/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/skin_cp/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/sources/cache.php b/upload/admin/applications_addon/ips/calendar/sources/cache.php new file mode 100644 index 00000000..532cd055 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/sources/cache.php @@ -0,0 +1,484 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * Calendar cache functions + * Last Updated: $Date: 2013-01-03 17:27:27 -0500 (Thu, 03 Jan 2013) $ + * + * + * @author $Author: bfarber $ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Calendar + * @link http://www.invisionpower.com + * @since 5th January 2005 + * @version $Revision: 11781 $ + */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly."; + exit(); +} + +class calendar_cache +{ + /**#@+ + * Registry objects + * + * @access protected + * @var object + */ + protected $registry; + protected $DB; + protected $settings; + protected $request; + protected $lang; + protected $member; + protected $memberData; + protected $cache; + protected $caches; + /**#@-*/ + + /** + * Constructor + * + * @param object $registry Registry object + * @return @e void + */ + public function __construct( ipsRegistry $registry ) + { + /* Make object */ + $this->registry = $registry; + $this->DB = $this->registry->DB(); + $this->settings =& $this->registry->fetchSettings(); + $this->request =& $this->registry->fetchRequest(); + $this->lang = $this->registry->getClass('class_localization'); + $this->member = $this->registry->member(); + $this->memberData =& $this->registry->member()->fetchMemberData(); + $this->cache = $this->registry->cache(); + $this->caches =& $this->registry->cache()->fetchCaches(); + } + + /** + * Rebuild calendar RSS cache + * + * @param mixed [$calendar_id] "all", or a specific calendar ID + * @return string RSS document + */ + public function rebuildCalendarRSSCache( $calendar_id='all' ) + { + //----------------------------------------- + // Ensure calendar is installed + //----------------------------------------- + + if( !$this->DB->checkForTable('cal_calendars') ) + { + return ''; + } + + if( ! IPSLib::appIsInstalled( 'calendar' ) ) + { + $this->cache->setCache( 'rss_calendar', array(), array( 'donow' => 1, 'array' => 1 ) ); + + return ''; + } + + //----------------------------------------- + // Init + //----------------------------------------- + + $seenids = array(); + $cache = array(); + + //-------------------------------------------- + // Get classes + //-------------------------------------------- + + $classToLoad = IPSLib::loadActionOverloader( IPSLib::getAppDir( 'calendar' ) . '/modules_public/calendar/view.php', 'public_calendar_calendar_view' ); + $calendar = new $classToLoad( $this->registry ); + $calendar->makeRegistryShortcuts( $this->registry ); + + if( !$calendar->initCalendar( true, true ) ) + { + return ''; + } + + + $classToLoad = IPSLib::loadLibrary( IPS_KERNEL_PATH . 'classRss.php', 'classRss' ); + $class_rss = new $classToLoad(); + $class_rss->doc_type = IPS_DOC_CHAR_SET; + + //----------------------------------------- + // Get calendars that support RSS and loop + //----------------------------------------- + + $this->DB->build( array( + 'select' => 'c.*', + 'from' => array( 'cal_calendars' => 'c' ), + 'where' => 'c.cal_rss_export_days > 0 AND c.cal_rss_export_max > 0 AND c.cal_rss_export=1', + 'add_join' => array( + array( + 'select' => 'p.*', + 'from' => array( 'permission_index' => 'p' ), + 'where' => "p.perm_type='calendar' AND perm_type_id=c.cal_id", + 'type' => 'left' + ) + ) + ) ); + $outer = $this->DB->execute(); + + while( $row = $this->DB->fetch( $outer ) ) + { + $row['cal_rss_export_max'] = $row['cal_rss_export_max'] ? $row['cal_rss_export_max'] : 10; + + if ( $row['cal_rss_export'] ) + { + $cache[] = array( 'url' => $this->settings['board_url'] . '/index.php?app=core&module=global&section=rss&type=calendar&id=' . $row['cal_id'], 'title' => $row['cal_title'] ); + } + + //----------------------------------------- + // Are we including events from this calendar? + //----------------------------------------- + + if( $calendar_id == $row['cal_id'] OR $calendar_id == 'all' ) + { + //----------------------------------------- + // Start channel + //----------------------------------------- + + $channel_id = $class_rss->createNewChannel( array( + 'title' => $row['cal_title'], + 'link' => $this->registry->output->buildSEOUrl( 'app=calendar&module=calendar&section=view&cal_id=' . $row['cal_id'], 'publicNoSession', $row['cal_title_seo'], 'cal_calendar' ), + 'pubDate' => $class_rss->formatDate( time() ), + 'ttl' => $row['cal_rss_update'] * 60, + 'description' => $row['cal_title'] + ) ); + + //----------------------------------------- + // Verify if guests can view + //----------------------------------------- + + if( !$this->registry->permissions->check( 'view', $row, explode( ',', IPSText::cleanPermString( $this->caches['group_cache'][ $this->settings['guest_group'] ]['g_perm_id'] ) ) ) ) + { + continue; + } + + //----------------------------------------- + // Sort out date stuff + //----------------------------------------- + + $row['cal_rss_export_days'] = intval($row['cal_rss_export_days']) + 1; + $startTime = gmmktime( 0,0,0, gmstrftime( '%m' ), 1 ); + $endTime = gmmktime( 0,0,0, gmstrftime( '%m' ), gmstrftime( '%d' ) + $row['cal_rss_export_days'] ); + $nowTime = gmmktime( 0,0,0, gmstrftime( '%m' ), gmstrftime( '%d' ) - 1 ); + $items = 0; + + list( $month, $day, $year ) = explode( '-', gmstrftime( '%m-%d-%Y' ) ); + + //----------------------------------------- + // Get the events + //----------------------------------------- + + $calendar->calendarGetEventsSQL( $month, $year, array( 'timenow' => $startTime, 'timethen' => $endTime, 'cal_id' => $row['cal_id'] ) ); + + //-------------------------------------------- + // Loop through events and cache + //-------------------------------------------- + + for( $i = 0 ; $i <= $row['cal_rss_export_days'] ; $i++ ) + { + list( $_month, $_day, $_year ) = explode( '-', gmstrftime( '%m-%d-%Y', $nowTime ) ); + + $eventcache = $calendar->calendarGetDayEvents( $_month, $_day, $_year ); + + foreach( $eventcache as $event ) + { + //----------------------------------------- + // Hit our max? + //----------------------------------------- + + if ( $row['cal_rss_export_max'] <= $items ) + { + break; + } + + //----------------------------------------- + // Can guests access? + //----------------------------------------- + + $permissionGroups = explode( ',', IPSText::cleanPermString( $event['event_perms'] ) ); + + if ( !$event['event_approved'] OR $event['event_private'] OR ( $event['event_perms'] != '*' AND !IPSMember::isInGroup( array( 'member_group_id' => $this->settings['guest_group'] ), $permissionGroups ) ) ) + { + continue; + } + + //----------------------------------------- + // Check the event and add it + //----------------------------------------- + + if ( !in_array( $event['event_id'], $seenids ) ) + { + if ( !$event['event_recurring'] OR $calendar->checkRecurring( $event, $_month, $_day, $_year ) ) + { + $event = $calendar->calendarMakeEventHTML( $event, true ); + + if ( $event['event']['recurring'] ) + { + $event['event']['event_content'] = $this->registry->output->getTemplate('calendar')->calendar_rss_recurring( $event['event'] ); + } + else if ( $event['event']['single'] ) + { + $event['event']['event_content'] = $this->registry->output->getTemplate('calendar')->calendar_rss_single( $event['event'] ); + } + else + { + $event['event']['event_content'] = $this->registry->output->getTemplate('calendar')->calendar_rss_range( $event['event'] ); + } + + //----------------------------------------- + // Re-adjust the event time for the RSS feed + // to represent the next occurrence of recurring + // and ranged events + //----------------------------------------- + + if( $event['event']['event_recurring'] ) + { + $_incrementor = 0; + + switch( $event['event']['event_recurring'] ) + { + case 1: + $_incrementor = 604800; + break; + + case 2: + $_incrementor = 2592000; + break; + + case 3: + $_incrementor = 31536000; + break; + } + + if( $event['event']['_start_time'] < gmmktime( 0 ) ) + { + while( $event['event']['_start_time'] < gmmktime( 0 ) ) + { + $event['event']['_start_time'] += $_incrementor; + } + } + } + + //----------------------------------------- + // Ranged events + //----------------------------------------- + + else if( $event['event']['_end_time'] ) + { + if( $event['event']['_start_time'] < gmmktime( 0 ) AND $event['event']['_end_time'] > gmmktime( 0 ) ) + { + while( $event['event']['_start_time'] < gmmktime( 0 ) ) + { + $event['event']['_start_time'] += 86400; + } + } + } + + //----------------------------------------- + // Add to the channel + //----------------------------------------- + + $class_rss->addItemToChannel( $channel_id, array( + 'title' => $event['event']['event_title'], + 'link' => $this->registry->output->buildSEOUrl( 'app=calendar&module=calendar&section=view&do=showevent&event_id=' . $event['event']['event_id'], 'publicNoSession', $event['event']['event_title_seo'], 'cal_event' ), + 'description' => $event['event']['event_content'], + 'pubDate' => $class_rss->formatDate( $event['event']['_start_time'] ), + 'guid' => $event['event']['event_id'] + ) ); + + } + + //----------------------------------------- + // Increment counters and cache event + //----------------------------------------- + + $seenids[ $event['event']['event_id'] ] = $event['event']['event_id']; + $items++; + } + } + + $nowTime += 86400; + } + + //----------------------------------------- + // Create RSS document + //----------------------------------------- + + $class_rss->createRssDocument(); + + //----------------------------------------- + // Update calendar RSS cache + //----------------------------------------- + + $this->DB->update( 'cal_calendars', array( 'cal_rss_update_last' => time(), 'cal_rss_cache' => $class_rss->rss_document ), 'cal_id=' . $row['cal_id'] ); + } + } + + //----------------------------------------- + // Update cache and return RSS document + //----------------------------------------- + + $this->cache->setCache( 'rss_calendar', $cache, array( 'donow' => 1, 'array' => 1 ) ); + + return $class_rss->rss_document; + } + + /** + * Rebuild upcoming events cache + * + * @return @e void + */ + public function rebuildCalendarEventsCache() + { + //----------------------------------------- + // Ensure calendar is installed + //----------------------------------------- + + if( !$this->DB->checkForTable('cal_calendars') ) + { + return; + } + + if( ! IPSLib::appIsInstalled( 'calendar' ) ) + { + $this->cache->setCache( 'calendar_events', array(), array( 'array' => 1 ) ); + $this->cache->setCache( 'birthdays', array(), array( 'array' => 1 ) ); + + return; + } + + //----------------------------------------- + // Init + //----------------------------------------- + + $this->settings['calendar_limit'] = ( intval( $this->settings['calendar_limit'] ) < 2 ? 1 : intval( $this->settings['calendar_limit'] ) ) + 1; + + $birthdays = array(); + $events = array(); + $calendars = $this->cache->getCache('calendars'); + $seenids = array(); + + //-------------------------------------------- + // Set time stuff + //-------------------------------------------- + + $startTime = gmmktime( 0,0,0, gmstrftime( '%m' ), 1 ); + $endTime = gmmktime( 0,0,0, gmstrftime( '%m' ), gmstrftime( '%d' ) + $this->settings['calendar_limit'] ); + $nowTime = gmmktime( 0,0,0, gmstrftime( '%m' ), gmstrftime( '%d' ) - 1 ); + + list( $month, $day, $year ) = explode( '-', gmstrftime( '%m-%d-%Y' ) ); + list( $last_month, $last_day, $last_year ) = explode( '-', gmstrftime( '%m-%d-%Y', $nowTime ) ); + list( $next_month, $next_day, $next_year ) = explode( '-', gmstrftime( '%m-%d-%Y', gmmktime( 0,0,0, gmstrftime( '%m' ), gmstrftime( '%d' ) + 1 ) ) ); + + //-------------------------------------------- + // Get classes + //-------------------------------------------- + + $classToLoad = IPSLib::loadActionOverloader( IPSLib::getAppDir( 'calendar' ) . '/modules_public/calendar/view.php', 'public_calendar_calendar_view' ); + $calendar = new $classToLoad( $this->registry ); + $calendar->makeRegistryShortcuts( $this->registry ); + + if( !$calendar->initCalendar( true, true ) ) + { + $this->cache->setCache( 'calendar_events' , array(), array( 'array' => 1 ) ); + $this->cache->setCache( 'birthdays', array(), array( 'array' => 1 ) ); + return; + } + + //-------------------------------------------- + // Load the events + //-------------------------------------------- + + $calendar->calendarGetEventsSQL( $month, $year, array( 'timenow' => $startTime, 'timethen' => $endTime, 'minimal' => true, 'no_date_convert' => true ) ); + + //-------------------------------------------- + // Loop through events and cache + //-------------------------------------------- + + for( $i = 0 ; $i <= $this->settings['calendar_limit'] ; $i++ ) + { + list( $_month, $_day, $_year ) = explode( '-', gmstrftime( '%m-%d-%Y', $nowTime ) ); + + $eventcache = $calendar->calendarGetDayEvents( $_month, $_day, $_year ); + + foreach( $eventcache as $event ) + { + if ( $event['event_approved'] AND !in_array( $event['event_id'], $seenids ) ) + { + if ( !$event['event_recurring'] OR $calendar->checkRecurring( $event, $_month, $_day, $_year ) ) + { + unset( $event['event_content'], $event['event_smilies'] ); + + $event['perm_view'] = $calendars[ $event['event_calendar_id'] ]['perm_view']; + $events[ $event['event_id'] ] = $event; + } + + $seenids[ $event['event_id'] ] = $event['event_id']; + } + } + + $nowTime += 86400; + } + + //----------------------------------------- + // Grab birthdays + //----------------------------------------- + + $append_string = ""; + + if( !gmdate("L") ) + { + if( $month == 2 AND $day > 26 ) + { + $append_string = " OR ( bday_month=2 AND bday_day=29 )"; + } + } + + $_days = array(); + + $this->DB->build( array( + 'select' => 'member_id, members_seo_name, members_display_name, member_group_id, bday_day, bday_month, bday_year', + 'from' => 'members', + 'where' => "member_banned=0 AND ( !" . IPSBWOptions::sql( 'bw_is_spammer', 'members_bitoptions', 'members', 'global', 'has' ) . ") + AND ( ( bday_day={$last_day} AND bday_month={$last_month} ) + OR ( bday_day={$day} AND bday_month={$month} ) + OR ( bday_day={$next_day} AND bday_month={$next_month} ) {$append_string} )" + ) ); + $this->DB->execute(); + + while( $r = $this->DB->fetch() ) + { + /* Only allow 6 per day, then the "upcoming birthdays" can display 5 and know there are more to display */ + $_days[ $r['bday_month'] . '.' . $r['bday_day'] ]++; + + if( $_days[ $r['bday_month'] . '.' . $r['bday_day'] ] > 6 ) + { + continue; + } + + $birthdays[ $r['member_id'] ] = $r; + } + + //-------------------------------------------- + // Update calendar array + //-------------------------------------------- + + $this->cache->setCache( 'calendar_events' , $events, array( 'array' => 1 ) ); + $this->cache->setCache( 'birthdays', $birthdays, array( 'array' => 1 ) ); + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/sources/functions.php b/upload/admin/applications_addon/ips/calendar/sources/functions.php new file mode 100644 index 00000000..c38d9100 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/sources/functions.php @@ -0,0 +1,293 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * Calendar functions + * Last Updated: $Date: 2013-03-20 17:00:11 -0400 (Wed, 20 Mar 2013) $ + * + * + * @author $Author: AndyMillne $ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Calendar + * @link http://www.invisionpower.com + * @since 5th January 2005 + * @version $Revision: 12096 $ + */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly."; + exit(); +} + +class app_calendar_classes_functions +{ + /**#@+ + * Registry objects + * + * @access protected + * @var object + */ + protected $registry; + protected $DB; + protected $settings; + protected $request; + protected $lang; + protected $member; + protected $memberData; + protected $cache; + protected $caches; + /**#@-*/ + + /** + * Current calendar ID + * + * @var int + */ + protected $calendarId; + + /** + * Calendar arrays (permissions checked) + * + * @var array + */ + protected $calendars = array(); + + /** + * Constructor + * + * @param object Registry object + * @param bool Ignore permission check + * @param bool Return instead of throwing an error + * @return @e bool Initiated successfully + */ + public function __construct( ipsRegistry $registry, $ignorePermissions=false, $return=false ) + { + /* Make object */ + $this->registry = $registry; + $this->DB = $this->registry->DB(); + $this->settings =& $this->registry->fetchSettings(); + $this->request =& $this->registry->fetchRequest(); + $this->lang = $this->registry->getClass('class_localization'); + $this->member = $this->registry->member(); + $this->memberData =& $this->registry->member()->fetchMemberData(); + $this->cache = $this->registry->cache(); + $this->caches =& $this->registry->cache()->fetchCaches(); + + //----------------------------------------- + // Make sure calendar app is installed + // (this is primarily here for API methods) + //----------------------------------------- + + if( ! IPSLib::appIsInstalled( 'calendar' ) AND ( !defined('IPS_IS_INSTALLER') OR !IPS_IS_INSTALLER ) AND ( !defined('IPS_IS_UPGRADER') OR !IPS_IS_UPGRADER ) ) + { + if( $return ) + { + return false; + } + + $this->registry->output->showError( 'no_permission', 1076, null, null, 404 ); + } + + //----------------------------------------- + // Check cache + //----------------------------------------- + + if( ! count( $this->caches['calendars'] ) ) + { + $this->cache->rebuildCache( 'calendars', 'calendar' ); + } + + //----------------------------------------- + // Loop through, check perms, etc. + //----------------------------------------- + + $_noPermission = array(); + + if ( count( $this->caches['calendars'] ) AND is_array( $this->caches['calendars'] ) ) + { + foreach( $this->caches['calendars'] as $cal_id => $cal ) + { + //----------------------------------------- + // Automatic FURL fix + //----------------------------------------- + + if( !$cal['cal_title_seo'] ) + { + $cal['cal_title_seo'] = IPSText::makeSeoTitle( $cal['cal_title'] ); + + $this->DB->update( 'cal_calendars', array( 'cal_title_seo' => $cal['cal_title_seo'] ), 'cal_id=' . $cal_id ); + } + + //----------------------------------------- + // Check permissions + //----------------------------------------- + + if( !$this->registry->permissions->check( 'view', $cal ) AND !$ignorePermissions ) + { + $_noPermission[] = $cal['cal_id']; + + continue; + } + + $this->calendars[ $cal['cal_id'] ] = $cal; + } + } + + //----------------------------------------- + // What calendar are we requesting? + //----------------------------------------- + + if( is_string( $this->request['cal_id'] ) AND !empty($this->request['cal_id']) AND isset( $this->calendars[ $this->request['cal_id'] ] ) ) + { + $this->calendarId = intval($this->request['cal_id']); + } + else if( !empty($this->request['cal_id']) AND !IN_ACP ) + { + //----------------------------------------- + // Calendar requested but it's not in $this->calendars + // Either the cal_id doesn't exist, or user does not have view permissions + //----------------------------------------- + + if( $return ) + { + return false; + } + + $_header = ( !empty($this->request['cal_id']) AND in_array( $this->request['cal_id'], $_noPermission ) ) ? 403 : 404; + + $this->registry->output->showError( 'cal_no_perm', 1040, null, null, $_header ); + } + else + { + $this->calendarId = ( is_array( $this->calendars ) ) ? key( $this->calendars ) : 0; + } + + return true; + } + + /** + * Get calendar array + * + * @param integer [$calendar_id] Optional calendar ID to retrieve, otherwise defaults to calendar id in request, or default calendar set by admin + * @return array + */ + public function getCalendar( $calendar_id=0 ) + { + return $this->calendars[ !empty($calendar_id) ? ( isset( $this->calendars[ $calendar_id ] ) ? $calendar_id : $this->calendarId ) : $this->calendarId ]; + } + + /** + * Get all calendars + * + * @return array + */ + public function getCalendars() + { + return $this->calendars; + } + + /** + * Get calendar jump menu + * + * @param int [$cal_id] Default calendar ID to select + * @param array [$extra] Additional permission bits to check + * @return string + */ + public function getCalendarJump( $selected=0, $extra=array() ) + { + $return = ""; + + foreach( $this->calendars as $calendar ) + { + //----------------------------------------- + // Check any extra permissions + //----------------------------------------- + + if( is_array($extra) AND count($extra) ) + { + foreach( $extra as $_bit ) + { + if( !$this->registry->permissions->check( $_bit, $calendar ) ) + { + continue 2; + } + } + } + + $return .= "\n"; + } + + return $return; + } + + /** + * Return an HTML options list of days + * + * @param integer $day Default selected day + * @return string HTML options + */ + public function returnDayDropdown( $day=0 ) + { + $return = ""; + $day = intval($day); + + for( $x = 1 ; $x <= 31 ; $x++ ) + { + $return .= "\t\n"; + } + + return $return; + } + + /** + * Returns an HTML options list of months + * + * @param integer $month Month to select by default + * @return string HTML options + */ + public function returnMonthDropdown( $month=0 ) + { + $return = ""; + $month = intval($month); + + for( $x = 1 ; $x <= 12 ; $x++ ) + { + $return .= "\t\n"; + } + + return $return; + } + + + /** + * Builds a year dropdown + * + * @param integer $year Year to select by default + * @return string HTML dropdown + */ + public function returnYearDropdown( $year=0 ) + { + $return = ""; + $year = intval($year); + + $this->settings['start_year'] = $this->settings['start_year'] ? ( $this->settings['start_year'] <= gmstrftime('%Y') ? $this->settings['start_year'] : gmstrftime('%Y') - 2 ) : gmstrftime('%Y') - 2; + $this->settings['year_limit'] = $this->settings['year_limit'] ? $this->settings['year_limit'] : 5; + + if( $this->settings['start_year'] + $this->settings['year_limit'] < gmstrftime('%Y') ) + { + $this->settings['year_limit'] = gmstrftime('%Y') - $this->settings['start_year']; + } + + for( $x = $this->settings['start_year'], $xy = $this->settings['start_year'] + $this->settings['year_limit'] ; $x <= $xy ; $x++ ) + { + $return .= "\t\n"; + } + + return $return; + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/sources/hooks.php b/upload/admin/applications_addon/ips/calendar/sources/hooks.php new file mode 100644 index 00000000..a21ac985 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/sources/hooks.php @@ -0,0 +1,384 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * Calendar hook function gateway + * Last Updated: $Date: 2013-03-25 20:42:22 -0400 (Mon, 25 Mar 2013) $ + * + * + * @author $Author: bfarber $ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Calendar + * @link http://www.invisionpower.com + * @since 5th January 2005 + * @version $Revision: 12119 $ + */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly."; + exit(); +} + +class app_calendar_classes_hooks +{ + /**#@+ + * Registry objects + * + * @access protected + * @var object + */ + protected $registry; + protected $DB; + protected $settings; + protected $request; + protected $lang; + protected $member; + protected $memberData; + protected $cache; + protected $caches; + /**#@-*/ + + /** + * Constructor + * + * @param object Registry object + * @param bool Ignore permission check + * @return @e void + */ + public function __construct( ipsRegistry $registry, $ignorePermissions=false ) + { + /* Make object */ + $this->registry = $registry; + $this->DB = $this->registry->DB(); + $this->settings =& $this->registry->fetchSettings(); + $this->request =& $this->registry->fetchRequest(); + $this->lang = $this->registry->getClass('class_localization'); + $this->member = $this->registry->member(); + $this->memberData =& $this->registry->member()->fetchMemberData(); + $this->cache = $this->registry->cache(); + $this->caches =& $this->registry->cache()->fetchCaches(); + + $this->lang->loadLanguageFile( array( 'public_calendar' ), 'calendar' ); + } + + /** + * Retrieve upcoming birthdays + * + * @return @e string + * @note The recache function will recache up to 6 each day. That fulfills the 5 that are displayed + 1 more to know if we should show a link to view all. + */ + public function getUpcomingBirthdays() + { + if ( !$this->settings['show_birthdays'] OR !IPSLib::appIsInstalled( 'calendar' ) ) + { + return ''; + } + + $a = explode( ',', gmdate( 'Y,n,j,G,i,s', time() + $this->registry->getClass('class_localization')->getTimeOffset() ) ); + $day = $a[2]; + $month = $a[1]; + $year = $a[0]; + + $birthstring = ""; + $count = 0; + $lang = ''; + $users = array(); + $fetch = 5; + + if ( is_array($this->caches['birthdays']) AND count( $this->caches['birthdays'] ) ) + { + $_users = IPSMember::load( array_keys( $this->caches['birthdays'] ) ); + + foreach( $this->caches['birthdays'] as $u ) + { + /* Age */ + $pyear = 0; + + $u = array_merge( $_users[ $u['member_id'] ], $u ); + $u = IPSMember::buildDisplayData( $u ); + + if( $u['bday_year'] && $u['bday_year'] > 0 ) + { + $pyear = $year - $u['bday_year']; + } + + $u['_pyear'] = $pyear; + + if ( $u['bday_day'] == $day and $u['bday_month'] == $month ) + { + if( $count < $fetch ) + { + $users[] = $u; + } + + $count++; + } + else if( $day == 28 && $month == 2 && !date("L") ) + { + if ( $u['bday_day'] == "29" and $u['bday_month'] == $month ) + { + if( $count < $fetch ) + { + $users[] = $u; + } + + $count++; + } + } + } + } + + //----------------------------------------- + // Get calendar info, but only if we need it + //----------------------------------------- + + $data = array(); + + if( $count >= count($users) ) + { + $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'calendar' ) . "/sources/functions.php", 'app_calendar_classes_functions', 'calendar' ); + $functions = new $classToLoad( $this->registry ); + + $calendars = $functions->getCalendars(); + + foreach( $calendars as $calendar ) + { + /* We need to grab first calendar that allows birthdays */ + if( !$calendar['cal_bday_limit'] ) + { + continue; + } + + $data = array( + 'id' => $calendar['cal_id'], + 'title' => $calendar['cal_title_seo'], + 'year' => $year, + 'month' => $month, + 'day' => $day, + 'count' => $count, + ); + + break; + } + } + + if( $count >= count($users) AND !count($data) ) + { + return ''; + } + + //----------------------------------------- + // Spin and print... + //----------------------------------------- + + return $this->registry->output->getTemplate('calendar')->boardIndexBirthdays( $users, $data ); + } + + /** + * Retrieve upcoming events + * + * @return string + */ + public function getUpcomingEvents() + { + //----------------------------------------- + // Make sure calendar app is installed + //----------------------------------------- + + if( !$this->settings['show_calendar'] OR !IPSLib::appIsInstalled( 'calendar' ) ) + { + return ''; + } + + //----------------------------------------- + // Get current date data + //----------------------------------------- + + $a = explode( ',', gmdate( 'Y,n,j,G,i,s', time() + $this->registry->class_localization->getTimeOffset() ) ); + $day = $a[2]; + $month = $a[1]; + $year = $a[0]; + + //----------------------------------------- + // Check calendar limit + //----------------------------------------- + + $this->settings['calendar_limit'] = intval( $this->settings['calendar_limit'] ) < 2 ? 1 : intval( $this->settings['calendar_limit'] ); + + $our_unix = gmmktime( 0, 0, 0, $month, $day, $year); + $max_date = $our_unix + ($this->settings['calendar_limit'] * 86400); + $events = array(); + $show_events = array(); + + //----------------------------------------- + // Loop over the cache + //----------------------------------------- + + if( is_array( $this->caches['calendar_events'] ) AND count( $this->caches['calendar_events'] ) ) + { + foreach( $this->caches['calendar_events'] as $u ) + { + //----------------------------------------- + // Private? + //----------------------------------------- + + if ( $u['event_private'] == 1 and $this->memberData['member_id'] != $u['event_member_id'] ) + { + continue; + } + + //----------------------------------------- + // Got perms? + //----------------------------------------- + + if( $u['event_perms'] != '*' ) + { + $permissionGroups = explode( ',', IPSText::cleanPermString( $u['event_perms'] ) ); + + if( !IPSMember::isInGroup( $this->memberData, $permissionGroups ) ) + { + continue; + } + } + + //----------------------------------------- + // Got calendar perms? + //----------------------------------------- + + if( !$this->registry->permissions->check( 'view', $u ) ) + { + continue; + } + + //----------------------------------------- + // Times and dates + //----------------------------------------- + + $u['isoDate'] = gmdate( 'c', strtotime( $u['event_start_date'] ) ); + $u['_start_time'] = strtotime( $u['event_start_date'] ); + $u['_end_time'] = ( $u['event_end_date'] AND $u['event_end_date'] != '0000-00-00 00:00:00' ) ? strtotime( $u['event_end_date'] ) : 0; + + if( !$u['event_all_day'] ) + { + if( $this->memberData['member_id'] AND $this->memberData['time_offset'] ) + { + $u['_start_time'] = $u['_start_time'] + ( $this->memberData['time_offset'] * 3600 ); + } + else if( !$this->memberData['member_id'] AND $this->settings['time_offset'] ) + { + $u['_start_time'] = $u['_start_time'] + ( $this->settings['time_offset'] * 3600 ); + } + + if( $this->memberData['member_id'] AND $this->memberData['time_offset'] ) + { + $u['_end_time'] = $u['_end_time'] ? ( $u['_end_time'] + ( $this->memberData['time_offset'] * 3600 ) ) : 0; + } + else if( !$this->memberData['member_id'] AND $this->settings['time_offset'] ) + { + $u['_end_time'] = $u['_end_time'] ? ( $u['_end_time'] + ( $this->settings['time_offset'] * 3600 ) ) : 0; + } + } + + //----------------------------------------- + // In range? + //----------------------------------------- + + if ( !$u['event_recurring'] AND ( ( $u['_end_time'] >= $our_unix AND $u['_start_time'] <= $max_date ) + OR ( !$u['_end_time'] AND $u['_start_time'] >= $our_unix AND $u['_start_time'] <= $max_date ) ) ) + { + if( $u['_end_time'] ) + { + if( $u['_start_time'] < gmmktime( 0 ) ) + { + $u['_start_time'] = gmmktime( 0 ); + } + } + + $events[ str_pad( $u['_start_time'].$u['event_id'], 15, "0" ) ] = $u; + } + elseif( $u['event_recurring'] > 0 ) + { + $cust_range_s = $u['_start_time']; + + while( $cust_range_s <= $u['_end_time'] ) + { + if( $cust_range_s >= $our_unix AND $cust_range_s <= $max_date ) + { + //----------------------------------------- + // Special case for "monthly" to ensure it lands on the same day + //----------------------------------------- + + if ( $u['event_recurring'] != 1 ) + { + $u['_start_time'] = gmmktime( 1, 1, 1, gmdate( 'n', $cust_range_s ), gmdate( 'j', $u['_start_time'] ), gmdate( 'Y', $cust_range_s ) ); + } + else + { + $u['_start_time'] = $cust_range_s; + } + + $events[ str_pad( $u['_start_time'] . $u['event_id'], 15, "0" ) ] = $u; + } + + if( $u['event_recurring'] == 1 ) + { + $cust_range_s += 604800; + } + elseif ( $u['event_recurring'] == 2 ) + { + $cust_range_s += 2628000; + } + else + { + $cust_range_s += 31536000; + } + } + } + } + } + + //----------------------------------------- + // Sort and format + //----------------------------------------- + + ksort($events); + + foreach( $events as $event ) + { + //----------------------------------------- + // Recurring? + //----------------------------------------- + + $c_time = gmstrftime( '%x', $event['_start_time'] ); + $url = $this->registry->output->buildSEOUrl( "app=calendar&module=calendar&section=view&do=showevent&event_id={$event['event_id']}", 'public', $event['event_title_seo'], 'cal_event' ); + + $show_events[] = array( 'url' => $url, 'isoDate' => $event['isoDate'], 'date' => $c_time, 'title' => $event['event_title'], 'calendar' => $this->caches['calendars'][ $event['event_calendar_id'] ] ); + } + + //----------------------------------------- + // Send output to template and return HTML + //----------------------------------------- + + $this->lang->words['calender_f_title'] = sprintf( $this->lang->words['calender_f_title'], $this->settings['calendar_limit'] ); + + if ( count($show_events) > 0 ) + { + $event_string = $show_events; + } + else + { + if ( ! $this->settings['autohide_calendar'] ) + { + $event_string = $this->lang->words['no_calendar_events']; + } + } + + return $this->registry->output->getTemplate('calendar')->boardIndexCalEvents( $event_string ); + } + +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/sources/icalendar.php b/upload/admin/applications_addon/ips/calendar/sources/icalendar.php new file mode 100644 index 00000000..8f54fdbe --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/sources/icalendar.php @@ -0,0 +1,1620 @@ + + * Invision Power Services + * IP.Board v3.4.5 + * Library to facilitate iCalendar input and output + * Last Updated: $Date: 2013-02-14 18:02:12 -0500 (Thu, 14 Feb 2013) $ + * + * + * @author $Author: bfarber $ + * @copyright (c) 2001 - 2009 Invision Power Services, Inc. + * @license http://www.invisionpower.com/company/standards.php#license + * @package IP.Board + * @subpackage Calendar + * @link http://www.invisionpower.com + * @since 5th January 2005 + * @version $Revision: 11991 $ + */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly."; + exit(); +} + +class app_calendar_classes_icalendarOutput +{ + /**#@+ + * Registry objects + * + * @access protected + * @var object + */ + protected $registry; + protected $DB; + protected $settings; + protected $request; + protected $lang; + protected $member; + protected $memberData; + protected $cache; + protected $caches; + /**#@-*/ + + /** + * Calendar data + * + * @var array + */ + protected $calendar = array(); + + /** + * Calendar events to insert in feed + * + * @var array + */ + protected $_events = array(); + + /** + * Calendar functions + * + * @var object + */ + protected $functions; + + /** + * Error message from import + * + * @var string + */ + protected $_error = ''; + + /** + * Type of begin block we are currently parsing + * + * @var string + */ + protected $_begin = ''; + + /** + * Raw iCalendar feed data after parsing + * + * @var array + */ + protected $_parsedIcsData = array(); + + /** + * Raw iCalendar data before parsing + * + * @var array + */ + protected $_rawIcsData = array(); + + /** + * Temp: Current timezone ID we are parsing + * + * @var string + */ + protected $_tzId = ''; + + /** + * Temp: Current timezone ID we are beginning to parse + * + * @var string + */ + protected $_tzBegin = ''; + + /** + * Earliest timestamp from feed + * + * @var int + */ + protected $_feedEarliest = 0; + + /** + * Latest timestamp from feed + * + * @var int + */ + protected $_feedLatest = 0; + + /** + * Constructor + * + * @param object Registry object + * @param int Calendar we want to output + * @return @e void + */ + public function __construct( ipsRegistry $registry, $calendarId ) + { + /* Make object */ + $this->registry = $registry; + $this->DB = $this->registry->DB(); + $this->settings =& $this->registry->fetchSettings(); + $this->request =& $this->registry->fetchRequest(); + $this->lang = $this->registry->getClass('class_localization'); + $this->member = $this->registry->member(); + $this->memberData =& $this->registry->member()->fetchMemberData(); + $this->cache = $this->registry->cache(); + $this->caches =& $this->registry->cache()->fetchCaches(); + + //----------------------------------------- + // Language files + //----------------------------------------- + + $this->registry->class_localization->loadLanguageFile( array( 'public_calendar' ), 'calendar' ); + + //----------------------------------------- + // Functions class + //----------------------------------------- + + $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'calendar' ) . "/sources/functions.php", 'app_calendar_classes_functions', 'calendar' ); + $this->functions = new $classToLoad( $this->registry, true ); + + //----------------------------------------- + // Get our calendar + //----------------------------------------- + + $this->calendar = $this->functions->getCalendar( $calendarId ); + } + + /** + * Add an event + * + * @param array Event data + * @return @e void + */ + public function addEvent( $event ) + { + if( $event['event']['event_id'] ) + { + $this->_events[ $event['event']['event_id'] ] = $event; + } + } + + /** + * Remove an event + * + * @param int Event id + * @return @e void + */ + public function removeEvent( $eventId ) + { + if( $eventId ) + { + unset($this->_events[ $eventId ]); + } + } + + /** + * Return events to be output + * + * @return @e void + */ + public function getEvents() + { + return $this->_events; + } + + /** + * Build iCalendar feed and return + * + * @return string iCalendar feed (can be downloaded or sent as webcal subscription) + */ + public function buildICalendarFeed() + { + //----------------------------------------- + // Start of output + //----------------------------------------- + + $output = "BEGIN:VCALENDAR\r\n"; + $output .= "VERSION:2.0\r\n"; + $output .= "PRODID:-//IP.Board Calendar " . ipsRegistry::$version . "//EN\r\n"; + $output .= "METHOD:PUBLISH\r\n"; + $output .= "CALSCALE:GREGORIAN\r\n"; + $output .= "X-WR-CALNAME:" . $this->_encodeSpecialCharacters( $this->calendar['cal_title'] ) . "\r\n"; + + //----------------------------------------- + // Format the time zones (GMT only) + //----------------------------------------- + + $output .= $this->_addTimezones(); + + //----------------------------------------- + // Format the events + //----------------------------------------- + + $output .= $this->_addEvents(); + + //----------------------------------------- + // End of output + //----------------------------------------- + + $output .= "END:VCALENDAR\r\n"; + + //----------------------------------------- + // Return the output + //----------------------------------------- + + return $output; + } + + /** + * Build the VEVENT parts of the iCalendar feed + * + * @return string + */ + protected function _addEvents() + { + //----------------------------------------- + // Init + //----------------------------------------- + + $output = ''; + + //----------------------------------------- + // Loop over events + //----------------------------------------- + + $events = $this->getEvents(); + + if( count($events) ) + { + foreach( $events as $event ) + { + //----------------------------------------- + // Basic output stuff + //----------------------------------------- + + $output .= "BEGIN:VEVENT\r\n"; + $output .= "SUMMARY:" . $this->_encodeSpecialCharacters( $event['event']['event_title'] ) . "\r\n"; + $output .= "DTSTAMP:" . $this->_buildIcalDate( $event['event']['event_saved'] ) . "\r\n"; + $output .= "SEQUENCE:" . $event['event']['event_sequence'] . "\r\n"; + $output .= "UID:" . $this->_buildUid( array( $event['event']['event_saved'], $event['event']['event_id'] ) ) . "\r\n"; + $output .= $this->_foldLines( "ORGANIZER;CN=\"" . $this->_encodeSpecialCharacters( $event['member']['members_display_name'], false ) . '":' . $this->settings['email_out'] ) . "\r\n"; + + //----------------------------------------- + // Attachments... + //----------------------------------------- + + $attachments = array(); + + if( $event['event']['event_attach_content'] ) + { + preg_match_all( "/(http.+?attach_id=(\d+))/i", $event['event']['event_attach_content'], $matches ); + + if( is_array($matches) AND count($matches) ) + { + foreach( $matches[2] as $k => $v ) + { + $attachments[ $v ] = $v; + } + } + } + + preg_match_all( "/(http.+?attach_id=(\d+))/i", $event['event']['event_content'], $matches ); + + if( is_array($matches) AND count($matches) ) + { + foreach( $matches[2] as $k => $v ) + { + $attachments[ $v ] = $v; + } + } + + if( count($attachments) ) + { + $this->DB->build( array( 'select' => '*', 'from' => 'attachments', 'where' => 'attach_id IN(' . implode( ',', $attachments ) . ')' ) ); + $this->DB->execute(); + + while( $r = $this->DB->fetch() ) + { + $output .= "ATTACH;FMTTYPE=" . $this->caches['attachtypes'][ $r['attach_ext'] ]['atype_mimetype'] . ":" . $this->registry->output->buildSEOUrl( "app=core&module=attach§ion=attach&attach_id=" . $r['attach_id'], 'public' ) . "\r\n"; + } + } + + //----------------------------------------- + // Output description/content + //----------------------------------------- + + $output .= "DESCRIPTION:" . $this->_encodeSpecialCharacters( $event['event']['event_content'] ) . "\r\n"; + + //----------------------------------------- + // Figure out times (the hard part...) + //----------------------------------------- + + $_startTime = @strtotime( $event['event']['event_start_date'] ); + $_endTime = @strtotime( $event['event']['event_end_date'] ); + $_allDay = $event['event']['event_all_day']; + + if( $event['event']['event_recurring'] ) + { + if( $event['event_all_day'] ) + { + $output .= "DTSTART;VALUE=DATE:" . $this->_buildIcalDate( $_startTime, true ) . "\r\n"; + $output .= "DTEND;VALUE=DATE:" . $this->_buildIcalDate( $_startTime + 86400, true ) . "\r\n"; + } + else + { + $output .= "DTSTART;TZID=Europe/London:" . $this->_buildIcalDate( $_startTime ) . "\r\n"; + $output .= "DTEND;TZID=Europe/London:" . $this->_buildIcalDate( $_startTime ) . "\r\n"; + } + } + else if( $_endTime ) + { + if( $_allDay ) + { + $output .= "DTSTART;VALUE=DATE:" . $this->_buildIcalDate( $_startTime, true ) . "\r\n"; + $output .= "DTEND;VALUE=DATE:" . $this->_buildIcalDate( $_endTime + 86400, true ) . "\r\n"; + } + else + { + $output .= "DTSTART;TZID=Europe/London:" . $this->_buildIcalDate( $_startTime ) . "\r\n"; + $output .= "DTEND;TZID=Europe/London:" . $this->_buildIcalDate( $_endTime ) . "\r\n"; + } + } + else + { + if( $_allDay ) + { + $output .= "DTSTART;VALUE=DATE:" . $this->_buildIcalDate( $_startTime, true ) . "\r\n"; + } + else + { + $output .= "DTSTART;TZID=Europe/London:" . $this->_buildIcalDate( $_startTime ) . "\r\n"; + } + } + + //----------------------------------------- + // Recurring + //----------------------------------------- + + if ( $event['event']['event_recurring'] ) + { + $_freq = $event['event']['event_recurring'] == 3 ? 'YEARLY' : ( $event['event']['event_recurring'] == 2 ? 'MONTHLY' : 'WEEKLY' ); + + $output .= "RRULE:FREQ=" . $_freq . ";INTERVAL=1;UNTIL=" . $this->_buildIcalDate( $_endTime ) . "\r\n"; + } + + //----------------------------------------- + // Attendees? + //----------------------------------------- + + if( is_array($event['event']['_rsvp_attendees']) AND count($event['event']['_rsvp_attendees']) ) + { + foreach( $event['event']['_rsvp_attendees'] as $mid => $member ) + { + $output .= $this->_foldLines( "ATTENDEE;CN=\"" . $this->_encodeSpecialCharacters( $member['members_display_name'], false ) . '";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:' . $this->settings['email_out'] ) . "\r\n"; + } + } + + $output .= "END:VEVENT\r\n"; + } + } + + //----------------------------------------- + // Return the output + //----------------------------------------- + + return $output; + } + + /** + * Build the VTIMEZONE parts of the iCalendar feed + * + * @return string + */ + protected function _addTimezones() + { + //----------------------------------------- + // Init + //----------------------------------------- + + $output = ''; + + //----------------------------------------- + // Get the needed data + //----------------------------------------- + + $events = $this->getEvents(); + $years = array(); + + if( count($events) ) + { + foreach( $events as $event ) + { + $_startTime = @strtotime( $event['event']['event_start_date'] ); + $_endTime = @strtotime( $event['event']['event_end_date'] ); + + $_year = gmdate( 'Y', $_startTime ); + $years[ $_year ] = $_year; + + if( $_endTime ) + { + while( $_startTime < $_endTime ) + { + $_year = gmdate( 'Y', $_startTime ); + $years[ $_year ] = $_year; + + $_year = gmdate( 'Y', $_endTime ); + $years[ $_year ] = $_year; + + $_startTime += 2592000; // add one month + } + } + } + } + + //----------------------------------------- + // Add the timezones to the object + //----------------------------------------- + + foreach( $years as $year ) + { + $_daylight_start = strtotime( 'last Sunday of March ' . $year ); + $_standard_start = strtotime( 'last Sunday of October ' . $year ); + $_daylight = gmmktime( 2, 0, 0, 3 , gmdate( 'j', $_daylight_start ), $year ); + $_standard = gmmktime( 2, 0, 0, 10, gmdate( 'j', $_standard_start ), $year ); + + $output .= "BEGIN:VTIMEZONE\r\n"; + $output .= "TZID:Europe/London\r\n"; + $output .= "TZURL:http://tzurl.org/zoneinfo/Europe/London\r\n"; + $output .= "X-LIC-LOCATION:Europe/London\r\n"; + + $output .= "BEGIN:DAYLIGHT\r\n"; + $output .= "TZOFFSETFROM:+0000\r\n"; + $output .= "TZOFFSETTO:+0100\r\n"; + $output .= "TZNAME:BST\r\n"; + $output .= "DTSTART:" . $this->_buildIcalDate( $_daylight ) . "\r\n"; + $output .= "RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\n"; + $output .= "END:DAYLIGHT\r\n"; + + $output .= "BEGIN:STANDARD\r\n"; + $output .= "TZOFFSETFROM:+0100\r\n"; + $output .= "TZOFFSETTO:+0000\r\n"; + $output .= "TZNAME:GMT\r\n"; + $output .= "DTSTART:" . $this->_buildIcalDate( $_standard ) . "\r\n"; + $output .= "RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\n"; + $output .= "END:STANDARD\r\n"; + + $output .= "END:VTIMEZONE\r\n"; + } + + //----------------------------------------- + // Return the output + //----------------------------------------- + + return $output; + } + + /** + * Return a UID for iCalendar + * + * @param array Parameters to use to generate UID + * @param string UID + */ + protected function _buildUid( $params ) + { + return md5( implode( '.', $params ) ) . '@' . $_SERVER['SERVER_ADDR']; + } + + /** + * Return a date in iCalendar format + * + * @param int Timestamp + * @param bool Build date only format + * @param string Date in format of YYYYMMDDTHHMMSSZ OR YYYYMMDD + */ + protected function _buildIcalDate( $time, $dateOnly=false ) + { + if( $dateOnly ) + { + return gmdate( 'Ymd', $time ); + } + else + { + return gmdate( 'Ymd\THis\Z', $time ); + } + } + + /** + * Encode special characters in a string for iCalendar + * + * @param string String to encode + * @param bool Line-fold + * @param string Encoded string + */ + protected function _encodeSpecialCharacters( $text, $lineFold=true ) + { + $text = strip_tags( IPSText::br2nl( $text ) ); + $text = str_replace( "\\", "\\\\", $text ); + $text = str_replace( "\n" , '\\n', $text ); + $text = str_replace( "\r" , '\\n', $text ); + $text = str_replace( ',' , '\,', $text ); + $text = str_replace( ';' , '\;', $text ); + //$text = str_replace( ':' , '\:', $text ); + $text = str_replace( '"', '\"', $text ); + + if( $lineFold ) + { + $text = $this->_foldLines( $text ); + } + + return $text; + } + + /** + * Un-encode special characters in a string coming from iCalendar feed + * + * @param string String to unencode + * @param string Encoded string + * @link http://community.invisionpower.com/tracker/issue-33787-formatting-problem-with-imported-ics-file-calendar-app/ + */ + protected function _unencodeSpecialCharacters( $text ) + { + /* Reverse encoding */ + if( stripos( $text, 'encoding=' ) === 0 ) + { + preg_match( "#encoding=(.+?):(.+?)$#i", $text, $matches ); + + if( $matches[1] ) + { + switch( strtolower($matches[1]) ) + { + case 'base64': + $text = base64_decode( $matches[2] ); + break; + + case 'quoted-printable': + $text = quoted_printable_decode( $matches[2] ); + break; + } + } + else + { + $text = substr( $text, strpos( $text, ':' ) ); + } + } + + $text = str_replace( '\\n', "\n", $text ); + $text = str_replace( '\,', "," , $text ); + $text = str_replace( '\;', ";" , $text ); + $text = str_replace( '\:', ":" , $text ); + $text = str_replace( 'DQUOTE', '"' , $text ); + + return $text; + } + + /** + * Fold lines per RFC2445 + * + * @param string $text String to fold + * @return string + * @link https://gist.github.com/81747 + */ + protected function _foldLines( $text ) + { + /* Do we have mb functions? */ + if ( function_exists('mb_list_encodings') AND function_exists('mb_substr') AND function_exists('mb_strlen') ) + { + $valid_encodings = mb_list_encodings(); + + if ( count($valid_encodings) ) + { + /* Does mb functions cover our charset? */ + if ( in_array( strtoupper(IPS_DOC_CHAR_SET), $valid_encodings ) ) + { + mb_internal_encoding( strtoupper(IPS_DOC_CHAR_SET) ); + + $return = array(); + $_extra = 15; /* Takes into account line beginning, i.e. "DESCRIPTION:" */ + + while( strlen($text) > 60 ) + { + $space = 75 - $_extra; /* Remove line beginning - subsequent loops this will be tab character */ + $mbcc = $space; + + while( $mbcc ) + { + $line = mb_substr( $text, 0, $mbcc ); /* Get first chunk of chars */ + $octet = strlen( $line ); /* Determine how long this really is (3-byte letters could triple the size) */ + + /* Too long ? */ + if( $octet > $space ) + { + $mbcc -= $octet - $space; + } + else + { + $return[] = $line; + $_extra = 1; + $text = mb_substr( $text, $mbcc ); + break; + } + } + } + + /* Anything left? */ + if( !empty($text) ) + { + $return[] = $text; + } + + /* Return now */ + return implode( "\r\n\t", $return ); + } + } + } + + /* Use regular string functions - can break mb characters however, but if mb charset is used, mb functions should be enabled anyways */ + return implode( "\r\n\t", str_split( $text, 60 ) ); + } + + /** + * Unfold lines per RFC2445 4.1 + * + * @param string $string Starting string + * @param int $line Starting line number + * @param string + */ + protected function _unfoldLines( $string, $line ) + { + //----------------------------------------- + // Recursively unfold as needed + //----------------------------------------- + + if( isset( $this->_rawIcsData[ $line + 1 ] ) AND ( substr( $this->_rawIcsData[ $line + 1 ], 0, 1 ) == ' ' OR substr( $this->_rawIcsData[ $line + 1 ], 0, 1 ) == "\t" ) ) + { + $string .= ltrim( $this->_rawIcsData[ $line + 1 ] ); + $string = $this->_unfoldLines( $string, $line + 1 ); + } + + return $string; + } + + /** + * Unparse time information from iCalendar datetime info + * + * @param string $string iCalendar line + * @return array Time information + */ + protected function _unparseTimeInfo( $string ) + { + if( strpos( $string, '=' ) !== false ) + { + $_tmp = explode( '=', $string ); + $_key = explode( ';', $_tmp[0] ); + $tmp = explode( ':', $_tmp[1] ); + } + else + { + $_tmp = array(); + $_key = array(); + $tmp = explode( ':', $string ); + $tmp[0] = 'DATETIME'; + } + + $tzid = ''; + + //----------------------------------------- + // Got a TZID? + //----------------------------------------- + + if ( $_key[1] == 'TZID' ) + { + $tzid = $tmp[0]; + } + + //----------------------------------------- + // Is it a date? + //----------------------------------------- + + if ( $tmp[0] == 'DATE' ) + { + $timestamp = strtotime( $tmp[1] ); + } + else + { + $timestamp = '?'; + } + + $return = array( + 'type' => $tmp[0], + 'raw' => $tmp[1], + 'raw_ts' => strtotime( $tmp[1] ), + 'ts' => $timestamp, + 'tzid' => str_replace( '"', '', $tzid ), + ); + + //----------------------------------------- + // Earliest? Latest? + //----------------------------------------- + + if ( ( $this->_feedEarliest == 0 ) OR ( $return['raw_ts'] < $this->_feedEarliest ) ) + { + $this->_feedEarliest = $return['raw_ts']; + } + + if ( ( $this->_feedLatest == 0 ) OR ( $return['raw_ts'] > $this->_feedLatest ) ) + { + $this->_feedLatest = $return['raw_ts']; + } + + //----------------------------------------- + // Return + //----------------------------------------- + + return $return; + } + + /** + * Unformat content from incoming ical feed + * + * @param string $string String content to unparse + * @param int $line Line number + * @return mixed Array of data, or false + */ + protected function _unparseContent( $string, $line ) + { + //----------------------------------------- + // If line starts with a space, it was folded (skip) + //----------------------------------------- + + if( substr( $this->_rawIcsData[ $line ], 0, 1 ) == ' ' ) + { + return false; + } + + //----------------------------------------- + // Process + //----------------------------------------- + + $_temp = preg_split( "/(:|;)/", $string ); + $_type = array_shift( $_temp ); + $_data = implode( ':', $_temp ); + + //----------------------------------------- + // Unfold folded lines if necessary + //----------------------------------------- + + $_data = $this->_unfoldLines( $_data, $line ); + + //----------------------------------------- + // Return data + //----------------------------------------- + + return array( 'type' => $_type, 'data' => $_data ); + } + + /** + * Get event recurrence data + * + * @param string Data + * @return array + */ + protected function _getRecurrenceData( $data ) + { + $tmp = explode( ':', $data ); + + foreach( $tmp as $t ) + { + $recurr = explode( '=', $t ); + $rrule_array[ $recurr[0] ] = $recurr[1]; + + //----------------------------------------- + // Format a timestamp for the 'UNTIL' date + //----------------------------------------- + + if ( $recurr[0] == 'UNTIL' ) + { + $rrule_array['until_ts'] = strtotime( $recurr[1] ); + } + } + + return $rrule_array; + } + + /** + * Retrieve stored error message + * + * @return string + */ + public function getError() + { + return $this->_error; + } + + /** + * Import and parse an iCalendar feed + * + * @param string $content Feed content + * @param int $member_id Member to save events under + * @param int $feed_id Feed id + * @return mixed False on failure, otherwise an array with keys 'skipped' and 'imported' + */ + public function import( $content, $member_id=0, $feed_id=0 ) + { + //----------------------------------------- + // Init + //----------------------------------------- + + $this->lang->loadLanguageFile( array( 'admin_calendar' ), 'calendar' ); + + //----------------------------------------- + // Error checking + //----------------------------------------- + + if( !$content ) + { + $this->_error = $this->lang->words['icali_nocontent']; + return; + } + + $_raw = preg_replace( "#(\n\r|\r|\n){1,}#", "\n", $content ); + $_raw = explode( "\n", $_raw ); + + if( !count($_raw) ) + { + $this->_error = $this->lang->words['icali_nocontent']; + return; + } + + if( $_raw[0] != 'BEGIN:VCALENDAR' ) + { + $this->_error = $this->lang->words['icali_badcontent']; + return; + } + + $this->_rawIcsData = $_raw; + + //----------------------------------------- + // Loop and start parsing + //----------------------------------------- + + foreach( $this->_rawIcsData as $k => $v ) + { + $line = explode( ':', $v ); + + switch( $line[0] ) + { + case 'BEGIN': + $this->_parseBeginBlock( $line[1], $k ); + break; + + /* Unsupported at this time */ + case 'CALSCALE': + case 'METHOD': + case 'X-WR-TIMEZONE': + case 'X-WR-RELCALID': + default: + break; + } + } + + //----------------------------------------- + // Process raw ICS data now + //----------------------------------------- + + if( count($this->_parsedIcsData) ) + { + $this->_parsedIcsData = $this->_convertToGmt( $this->_parsedIcsData ); + } + + //----------------------------------------- + // And loop over results to insert + //----------------------------------------- + + $_imported = 0; + $_skipped = 0; +// Leave this here - useful for debugging +//print_r($this->_parsedIcsData);exit; + if ( count( $this->_parsedIcsData ) ) + { + //----------------------------------------- + // Get member data + //----------------------------------------- + + $_member = IPSMember::load( $member_id ); + + if( !$_member ) + { + $this->_error = $this->lang->words['icali_nomember']; + return false; + } + + //----------------------------------------- + // Get like class for notifications + //----------------------------------------- + + require_once( IPS_ROOT_PATH . 'sources/classes/like/composite.php' );/*noLibHook*/ + $_like = classes_like::bootstrap( 'calendar', 'calendars' ); + + //----------------------------------------- + // Loop over the events + //----------------------------------------- + + foreach( $this->_parsedIcsData['events'] as $event ) + { + $event['uid'] = $event['uid'] ? $event['uid'] : md5( implode( ',', $event ) ); + + $event_unix_from = $event['start']['gmt_ts']; + $event_unix_to = $event['end']['gmt_ts']; + $event_all_day = ( $event['start']['type'] == 'DATE' ) ? 1 : 0; + + //----------------------------------------- + // End dates are "exclusive" in iCalendar format, meaning + // they are actually the day ahead. + // @link http://microformats.org/wiki/dtend-issue + //----------------------------------------- + + if( $event_unix_to AND $event['end']['type'] == 'DATE' ) + { + $event_unix_to -= 86400; + } + + //----------------------------------------- + // If end date is same as start date, it's a single day event + //----------------------------------------- + + if( $event_unix_from == $event_unix_to ) + { + $event_unix_to = 0; + } + + //----------------------------------------- + // If no end date, but we have a duration, calculate end date + //----------------------------------------- + + if ( ! $event_unix_to AND $event['duration'] ) + { + preg_match( "#(\d+?)H#is", $event['duration'], $match ); + $hour = $match[1] ? $match[1] : 0; + + preg_match( "#(\d+?)M#is", $event['duration'], $match ); + $minute = $match[1] ? $match[1] : 0; + + preg_match( "#(\d+?)S#is", $event['duration'], $match ); + $second = $match[1] ? $match[1] : 0; + + $event_unix_to = $event_unix_from + ( $hour * 3600 ) + ( $minute * 60 ) + $second; + } + + //----------------------------------------- + // Recurring... + //----------------------------------------- + + $recurring = 0; + + if ( isset( $event['recurr']['FREQ'] ) ) + { + if ( $event['recurr']['FREQ'] == 'MONTHLY' AND $event['recurr']['INTERVAL'] == 12 ) + { + $event['recurr']['FREQ'] = 'YEARLY'; + } + + switch( $event['recurr']['FREQ'] ) + { + case 'WEEKLY': + $recurring = 1; + break; + case 'MONTHLY': + $recurring = 2; + break; + case 'YEARLY': + $recurring = 3; + break; + } + + $event_unix_to = ( $event['recurr']['until_ts'] ) ? $event['recurr']['until_ts'] : time() + 86400 * 365 * 10; + } + + //----------------------------------------- + // Adjust timestamps if all day event + //----------------------------------------- + + if( $event_all_day ) + { + $event_unix_from = gmmktime( 0, 0, 0, gmstrftime( '%m', $event_unix_from ), gmstrftime( '%d', $event_unix_from ), gmstrftime( '%Y', $event_unix_from ) ); + $event_unix_to = $event_unix_to ? gmmktime( 0, 0, 0, gmstrftime( '%m', $event_unix_to ), gmstrftime( '%d', $event_unix_to ), gmstrftime( '%Y', $event_unix_to ) ) : 0; + } + + //----------------------------------------- + // If we are missing crucial data, skip + //----------------------------------------- + + if( !($event['description'] OR $event['summary']) OR !$event_unix_from ) + { + $_skipped++; + continue; + } + + //----------------------------------------- + // Skip previously imported events + //----------------------------------------- + + if( $event['uid'] ) + { + $_check = $this->DB->buildAndFetch( array( 'select' => 'import_id', 'from' => 'cal_import_map', 'where' => "import_guid='" . $this->DB->addSlashes( $event['uid'] ) . "'" ) ); + + if( $_check['import_id'] ) + { + $_skipped++; + continue; + } + } + + //----------------------------------------- + // Format array for storage + //----------------------------------------- + + $_eventData = array( + 'event_calendar_id' => $this->calendar['cal_id'], + 'event_member_id' => $_member['member_id'], + 'event_content' => $event['description'] ? nl2br($event['description']) : $event['summary'], + 'event_title' => $event['summary'] ? $event['summary'] : IPSText::truncate( $event['description'], 100 ), + 'event_title_seo' => IPSText::makeSeoTitle( $event['summary'] ), + 'event_smilies' => 1, + 'event_comments' => 0, + 'event_rsvp' => count($event['attendee']) ? 1 : 0, + 'event_perms' => '*', + 'event_private' => 0, + 'event_approved' => 1, + 'event_saved' => $event['created'] ? $event['created'] : time(), + 'event_lastupdated' => $event['last_modified'] ? $event['last_modified'] : ( $event['created'] ? $event['created'] : time() ), + 'event_recurring' => $recurring, + 'event_start_date' => strftime( "%Y-%m-%d %H:%M:00", $event_unix_from ), + 'event_end_date' => $event_unix_to ? strftime( "%Y-%m-%d %H:%M:00", $event_unix_to ) : 0, + 'event_post_key' => md5( uniqid( microtime(), true ) ), + 'event_sequence' => intval($event['sequence']), + 'event_all_day' => $event_all_day, + ); + + //----------------------------------------- + // Data hooks + //----------------------------------------- + + IPSLib::doDataHooks( $_eventData, 'calendarAddEvent' ); + + //----------------------------------------- + // Insert + //----------------------------------------- + + $this->DB->insert( 'cal_events', $_eventData ); + + $event_id = $this->DB->getInsertId(); + + $_imported++; + + //----------------------------------------- + // Insert mapping + //----------------------------------------- + + $this->DB->insert( 'cal_import_map', array( + 'import_feed_id' => $feed_id, + 'import_event_id' => $event_id, + 'import_guid' => $event['uid'], + ) ); + + //----------------------------------------- + // If we have attendees that are members, insert them + //----------------------------------------- + + if( isset($event['attendee']) AND count($event['attendee']) ) + { + foreach( $event['attendee'] as $attendee ) + { + if( $attendee['email'] ) + { + $_loadedMember = IPSMember::load( $attendee['email'] ); + + if( $_loadedMember['member_id'] ) + { + $this->DB->insert( 'cal_event_rsvp', array( + 'rsvp_member_id' => $_loadedMember['member_id'], + 'rsvp_event_id' => $event_id, + 'rsvp_date' => time(), + ) ); + } + } + } + } + + //----------------------------------------- + // Send notifications + //----------------------------------------- + + $_url = $this->registry->output->buildSEOUrl( 'app=calendar&module=calendar&section=view&do=showevent&event_id=' . $event_id, 'public', $_eventData['event_title_seo'], 'cal_event' ); + + $_like->sendNotifications( $_eventData['event_calendar_id'], array( 'immediate', 'offline' ), + array( + 'notification_key' => 'new_event', + 'notification_url' => $_url, + 'email_template' => 'add_event_follow', + 'email_subject' => sprintf( $this->lang->words[ 'add_event_follow_subject'], $_url, $_eventData['event_title'] ), + 'build_message_array' => array( + 'NAME' => '-member:members_display_name-', + 'AUTHOR' => $_member['members_display_name'], + 'TITLE' => $_eventData['event_title'], + 'URL' => $_url, + ) + ) ); + } + } + + //----------------------------------------- + // Rebuild cache + //----------------------------------------- + + $this->cache->rebuildCache( 'calendar_events', 'calendar' ); + + //----------------------------------------- + // Return + //----------------------------------------- + + return array( 'skipped' => $_skipped, 'imported' => $_imported ); + } + + /** + * Convert times to GMT based on timezones + * + * @param array $data Parsed data + * @return array + */ + protected function _convertToGmt( $data ) + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $timezones = array(); + + //----------------------------------------- + // Got any timezones? + //----------------------------------------- + + if ( is_array( $data['timezones'] ) AND count( $data['timezones'] ) ) + { + foreach( $data['timezones'] as $type => $_data ) + { + $timezones[ $type ] = $_data; + } + } + + //----------------------------------------- + // Fix up events + //----------------------------------------- + + if ( is_array( $data['events'] ) AND count( $data['events'] ) ) + { + foreach( $data['events'] as $id => $event ) + { + foreach( array( 'start', 'end' ) as $method ) + { + //----------------------------------------- + // Set up constraints + //----------------------------------------- + + if ( isset( $event[ $method ]['tzid'] ) AND isset( $timezones[ $event[ $method ]['tzid'] ] ) AND is_array( $timezones[ $event[ $method ]['tzid'] ] ) ) + { + $_standard = ( isset($timezones[ $event[ $method ]['tzid'] ]['standard']['start'] ) ) ? intval( $timezones[ $event[ $method ]['tzid'] ]['standard']['start'] ) : 0; + $_daylight = ( isset($timezones[ $event[ $method ]['tzid'] ]['daylight']['start'] ) ) ? intval( $timezones[ $event[ $method ]['tzid'] ]['daylight']['start'] ) : 0; + $_offset = 0; + + if ( isset( $event[ $method ]['tzid'] ) AND $event[ $method ]['raw_ts'] ) + { + //if ( $event[ $method ]['raw_ts'] < $_daylight ) + //{ + // $_offset = $timezones[ $event[ $method ]['tzid'] ]['standard']['tz_offset_to']; + //} + //else if ( $event[ $method ]['raw_ts'] > $_standard ) + //{ + // $_offset = $timezones[ $event[ $method ]['tzid'] ]['standard']['tz_offset_to']; + //} + //else + //{ + // $_offset = $timezones[ $event[ $method ]['tzid'] ]['daylight']['tz_offset_to']; + //} + + $_offset = $timezones[ $event[ $method ]['tzid'] ]['standard']['tz_offset_to']; + + $event[ $method ]['gmt_ts'] = $event[ $method ]['raw_ts'] - ( $_offset / 100 * 3600 ); + $event[ $method ]['offset'] = $_offset; + $event[ $method ]['gmt_rfc'] = gmdate( 'r', $event[ $method ]['gmt_ts'] ); + } + } + else + { + if ( isset( $event[ $method ]['raw_ts'] ) ) + { + $event[ $method ]['gmt_ts'] = $event[ $method ]['raw_ts']; + $event[ $method ]['offset'] = 0; + $event[ $method ]['gmt_rfc'] = gmdate( 'r', $event[ $method ]['gmt_ts'] ); + } + } + } + + $data['events'][ $id ] = $event; + } + } + + return $data; + } + + /** + * Parse a 'BEGIN:' block in an iCalendar feed + * + * @param string $type Type of 'BEGIN' object + * @param int $start Line number + * @return @e void + */ + protected function _parseBeginBlock( $type, $start ) + { + switch( $type ) + { + case 'VCALENDAR': + $this->_begin = 'VCALENDAR'; + $this->_processVcalendarObject( $start + 1 ); + break; + + case 'VTIMEZONE': + $this->_begin = 'VTIMEZONE'; + $this->_processTimezoneObject( $start + 1 ); + break; + + case 'STANDARD': + if ( $this->_begin == 'VTIMEZONE' ) + { + $this->_processTimezoneTypeObject( $start + 1, 'STANDARD' ); + } + break; + + case 'DAYLIGHT': + if ( $this->_begin == 'VTIMEZONE' ) + { + $this->_processTimezoneTypeObject( $start + 1, 'DAYLIGHT' ); + } + break; + + case 'VEVENT': + $this->_begin = 'VEVENT'; + $this->_processEventObject( $start + 1 ); + break; + + /* Anything else is unsupported at this time */ + default: + break; + } + } + + /** + * Parse event object in an ical feed + * + * @param int $start Line number + * @return @e void + * @link http://community.invisionpower.com/resources/bugs.html/_/ip-calendar/recurring-events-can-sometimes-be-skipped-in-ics-r41033 + */ + protected function _processEventObject( $start ) + { + //----------------------------------------- + // Init + //----------------------------------------- + + $_break = false; + $_event = array(); + + //----------------------------------------- + // Loop over lines + //----------------------------------------- + + $_recid = null; + + for( $i = $start, $j = count( $this->_rawIcsData ); $i < $j; $i++ ) + { + //----------------------------------------- + // Unparse and get the data + //----------------------------------------- + + $tmp = $this->_unparseContent( $this->_rawIcsData[$i], $i ); + + if ( !$tmp ) + { + continue; + } + + $_type = $tmp['type']; + $_data = $tmp['data']; + + switch( $_type ) + { + case 'CLASS': + $_event['access_class'] = $_data; + break; + + case 'CREATED': + if( !$_event['created'] ) + { + $_event['created'] = strtotime( $_data ); + } + break; + + case 'SUMMARY': + /* @link http://community.invisionpower.com/tracker/issue-32941-ical-summary/ */ + if( strpos( $_data, 'LANGUAGE=' ) === 0 ) + { + $_data = preg_replace( "/^LANGUAGE=(.+?):(.+?)$/i", "\\2", $_data ); + } + + $_event['summary'] = $this->_unencodeSpecialCharacters( $_data ); + break; + + case 'DESCRIPTION': + $_event['description'] = $this->_unencodeSpecialCharacters( $_data ); + break; + + case 'DURATION': + $_event['duration'] = $_data; + break; + + case 'DTSTART': + $_event['start'] = $this->_unparseTimeInfo( $this->_rawIcsData[$i] ); + break; + + case 'DTEND': + $_event['end'] = $this->_unparseTimeInfo( $this->_rawIcsData[$i] ); + break; + + case 'DTSTAMP': + $_event['created'] = strtotime( $_data ); + break; + + case 'LAST-MODIFIED': + $_event['last_modified'] = strtotime( $_data ); + break; + + case 'TRANSP': + $_event['time_transparent'] = $_data; + break; + + case 'GEO': + $_event['geo'] = $_data; + break; + + case 'ORGANIZER': + $line = explode( ':', $_data ); + $_event['organizer'] = array( 'name' => str_replace( 'CN=', '', $line[0] ), 'email' => $line[2] ); + break; + + case 'ATTENDEE': + $line = explode( ':', $_data ); + $_email = ''; + + foreach( $line as $_line ) + { + $_line = str_replace( 'cn=', '', strtolower($_line) ); + + if( IPSText::checkEmailAddress( $_line ) ) + { + $_email = $_line; + } + } + + $_event['attendee'][] = array( 'name' => str_replace( 'CN=', '', $line[0] ), 'email' => $_email ); + break; + + case 'UID': + $_event['uid'] = $_data; + break; + + case 'STATUS': + $_event['status'] = $_data; + break; + + case 'LOCATION': + $_event['location'] = $_data; + break; + + case 'SEQUENCE': + $_event['sequence'] = intval($_data); + break; + + case 'RRULE': + $_event['recurr'] = $_event['recurr'] ? $_event['recurr'] : array(); + $_event['recurr'] = array_merge( $_event['recurr'], $this->_getRecurrenceData( $_data ) ); + break; + + case 'BEGIN': + $this->_parseBeginBlock( $_data, $i ); + break; + + case 'RECURRENCE-ID': + $_recid = $_data; + break; + + case 'END': + $_break = true; + break; + } + + if( $_break ) + { + if( $_recid ) + { + $event['uid'] = md5( $event['uid'] . $_recid ); + } + + $this->_parsedIcsData['events'][] = $_event; + break; + } + } + } + + /** + * Parse core vcalendar object in an ical feed + * + * @param int $start Line number + * @return @e void + */ + protected function _processVcalendarObject( $start ) + { + //----------------------------------------- + // Loop over lines + //----------------------------------------- + + for( $i = $start, $j = count( $this->_rawIcsData ); $i < $j; $i++ ) + { + //----------------------------------------- + // Unparse and get the data + //----------------------------------------- + + $tmp = $this->_unparseContent( $this->_rawIcsData[$i], $i ); + + if ( !$tmp ) + { + continue; + } + + $_type = $tmp['type']; + $_data = $tmp['data']; + + switch( $_type ) + { + case 'PRODID': + $this->_parsedIcsData['core']['product'] = $_data; + break; + + case 'VERSION': + $this->_parsedIcsData['core']['version'] = $_data; + break; + + case 'BEGIN': + $this->_parseBeginBlock( $_data, $i ); + break; + + case 'X-WR-CALNAME': + $this->_parsedIcsData['core']['calendar_name'] = $_data; + break; + + case 'END': + return; + break; + } + } + } + + /** + * Parse a timezone object in an ical feed + * + * @param int $start Line number + * @param string $type Type of time zone object to parse + * @return @e void + */ + protected function _processTimezoneTypeObject( $start, $type ) + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $type = strtolower( $type ); + $break = FALSE; + + //----------------------------------------- + // Loop over line numbers + //----------------------------------------- + + for( $i = $start, $j = count( $this->_rawIcsData ); $i < $j; $i++ ) + { + //----------------------------------------- + // Unparse and get the data + //----------------------------------------- + + $tmp = $this->_unparseContent( $this->_rawIcsData[$i], $i ); + + if ( !$tmp ) + { + continue; + } + + $_type = $tmp['type']; + $_data = $tmp['data']; + + switch( $_type ) + { + case 'DTSTART': + $this->_parsedIcsData['timezones'][ $this->_tzId ][ $type ]['start'] = strtotime( $_data ); + break; + + case 'TZOFFSETTO': + $this->_parsedIcsData['timezones'][ $this->_tzId ][ $type ]['tz_offset_to'] = $_data; + break; + + case 'TZOFFSETFROM': + $this->_parsedIcsData['timezones'][ $this->_tzId ][ $type ]['tz_offset_from'] = $_data; + break; + + case 'TZNAME': + $this->_parsedIcsData['timezones'][ $this->_tzId ][ $type ]['tz_name'] = $_data; + break; + + case 'END': + return; + break; + } + } + } + + /** + * Parse a timezone object in an ical feed + * + * @param int $start Line number + * @return @e void + */ + protected function _processTimezoneObject( $start ) + { + //----------------------------------------- + // Loop over lines + //----------------------------------------- + + for( $i = $start, $j = count( $this->_rawIcsData ); $i < $j; $i++ ) + { + //----------------------------------------- + // Unparse and get the data + //----------------------------------------- + + $tmp = $this->_unparseContent( $this->_rawIcsData[$i], $i ); + + if( !$tmp ) + { + continue; + } + + $_type = $tmp['type']; + $_data = $tmp['data']; + + switch( $_type ) + { + case 'TZID': + $this->_tzId = $_data; + $this->_parsedIcsData['timezones'][ $_data ] = array(); + break; + + case 'LAST-MODIFIED': + $this->_parsedIcsData['timezones'][ $this->_tzId ]['last_modified'] = $_data; + break; + + case 'BEGIN': + $this->_tzBegin = $_data; + $this->_parseBeginBlock( $_data, $i ); + break; + + case 'END': + if ( $this->_tzBegin == $_data ) + { + return; + } + break; + } + } + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/sources/index.html b/upload/admin/applications_addon/ips/calendar/sources/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/sources/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/tasks/calendarevents.php b/upload/admin/applications_addon/ips/calendar/tasks/calendarevents.php new file mode 100644 index 00000000..f6340808 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/tasks/calendarevents.php @@ -0,0 +1,100 @@ +Incorrect accessYou cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +/** + * + * @class task_item + * @brief Task to gather birthday and calendar events for a few days and cache them + * + */ +class task_item +{ + /** + * Object that stores the parent task manager class + * + * @var $class + */ + protected $class; + + /** + * Array that stores the task data + * + * @var $task + */ + protected $task = array(); + + /** + * Registry Object Shortcuts + * + * @var $registry + * @var $lang + */ + protected $registry; + protected $lang; + + /** + * Constructor + * + * @param object $registry Registry object + * @param object $class Task manager class object + * @param array $task Array with the task data + * @return @e void + */ + public function __construct( ipsRegistry $registry, $class, $task ) + { + /* Make registry objects */ + $this->registry = $registry; + $this->lang = $this->registry->getClass('class_localization'); + + $this->class = $class; + $this->task = $task; + } + + /** + * Run this task + * + * @return @e void + */ + public function runTask() + { + $this->registry->getClass('class_localization')->loadLanguageFile( array( 'public_global' ), 'core' ); + + //----------------------------------------- + // Load and recache info + //----------------------------------------- + + define( 'IN_ACP', 1 ); + + $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir('calendar') . '/sources/cache.php' , 'calendar_cache', 'calendar' ); + $calendars = new $classToLoad( $this->registry ); + $calendars->rebuildCalendarEventsCache(); + + //----------------------------------------- + // Log to log table - modify but dont delete + //----------------------------------------- + + $this->class->appendTaskLog( $this->task, $this->lang->words['task_calendars'] ); + + //----------------------------------------- + // Unlock Task: DO NOT MODIFY! + //----------------------------------------- + + $this->class->unlockTask( $this->task ); + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/tasks/importfeeds.php b/upload/admin/applications_addon/ips/calendar/tasks/importfeeds.php new file mode 100644 index 00000000..86eb5461 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/tasks/importfeeds.php @@ -0,0 +1,146 @@ +Incorrect accessYou cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; + exit(); +} + +/** + * + * @class task_item + * @brief Task to reimport ical/webcal feeds + * + */ +class task_item +{ + /** + * Object that stores the parent task manager class + * + * @var $class + */ + protected $class; + + /** + * Array that stores the task data + * + * @var $task + */ + protected $task = array(); + + /** + * Registry Object Shortcuts + * + * @var $registry + * @var $DB + * @var $lang + */ + protected $registry; + protected $DB; + protected $lang; + + /** + * Constructor + * + * @param object $registry Registry object + * @param object $class Task manager class object + * @param array $task Array with the task data + * @return @e void + */ + public function __construct( ipsRegistry $registry, $class, $task ) + { + /* Make registry objects */ + $this->registry = $registry; + $this->DB = $registry->DB(); + $this->lang = $this->registry->getClass('class_localization'); + + $this->class = $class; + $this->task = $task; + } + + /** + * Run this task + * + * @return @e void + */ + public function runTask() + { + $this->registry->getClass('class_localization')->loadLanguageFile( array( 'admin_calendar' ), 'calendar' ); + + //----------------------------------------- + // Load and recache info + //----------------------------------------- + + $feed = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'cal_import_feeds', 'where' => "feed_next_run < " . time(), 'order' => 'feed_next_run ASC', 'limit' => array( 0, 1 ) ) ); + + if( !$feed['feed_id'] ) + { + $this->class->unlockTask( $this->task ); + return; + } + + //----------------------------------------- + // Fetch the feed + //----------------------------------------- + + $classToLoad = IPSLib::loadLibrary( IPS_KERNEL_PATH . 'classFileManagement.php', 'classFileManagement' ); + $fetcher = new $classToLoad(); + + $content = $fetcher->getFileContents( str_replace( 'webcal://', 'http://', $feed['feed_url'] ) ); + + if( !$content ) + { + $this->class->unlockTask( $this->task ); + return; + } + + //----------------------------------------- + // Send content to be processed + //----------------------------------------- + + $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir('calendar') . '/sources/icalendar.php', 'app_calendar_classes_icalendarOutput', 'calendar' ); + $ical = new $classToLoad( $this->registry, $feed['feed_calendar_id'] ); + + $result = $ical->import( $content, $feed['feed_member_id'], $feed['feed_id'] ); + + //----------------------------------------- + // Show error if any + //----------------------------------------- + + if( $error = $ical->getError() ) + { + $this->class->appendTaskLog( $this->task, $error ); + $this->class->unlockTask( $this->task ); + return; + } + + //----------------------------------------- + // Update last update date and next run date + //----------------------------------------- + + $this->DB->update( 'cal_import_feeds', array( 'feed_lastupdated' => time(), 'feed_next_run' => time() + ( $feed['feed_recache_freq'] * 60 ) ), 'feed_id=' . $feed['feed_id'] ); + + //----------------------------------------- + // Log to log table - modify but dont delete + //----------------------------------------- + + $this->class->appendTaskLog( $this->task, sprintf( $this->lang->words['feed_successwebcal'], $result['skipped'], $result['imported'] ) ); + + //----------------------------------------- + // Unlock Task: DO NOT MODIFY! + //----------------------------------------- + + $this->class->unlockTask( $this->task ); + } +} \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/tasks/index.html b/upload/admin/applications_addon/ips/calendar/tasks/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/tasks/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/xml/admin_calendar_language_pack.xml b/upload/admin/applications_addon/ips/calendar/xml/admin_calendar_language_pack.xml new file mode 100644 index 00000000..d98ebc4d --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/xml/admin_calendar_language_pack.xml @@ -0,0 +1,605 @@ + + + + + calendar + admin_calendar + icali_badcontent + The content being imported does not appear to be a valid iCalendar feed. + + + calendar + admin_calendar + icali_nomember + The member to import the event data under could not be loaded. + + + calendar + admin_calendar + icali_nocontent + There was no content to import. + + + calendar + admin_calendar + c_block_enable + RSS: Enable + + + calendar + admin_calendar + perm_calendar_rsvp + RSVP Event + + + calendar + admin_calendar + perm_calendar_comment + Comment Events + + + calendar + admin_calendar + perm_calendar_rate + Rate Events + + + calendar + admin_calendar + perm_calendar_nomod + Bypass Moderation + + + calendar + admin_calendar + perm_calendar_start + Create Events + + + calendar + admin_calendar + perm_calendar_view + Show Calendar + + + calendar + admin_calendar + c_recachecal + Recache Calendar Events + + + calendar + admin_calendar + c_addcal + Add New Calendar + + + calendar + admin_calendar + c_deletecal + Delete Calendar... + + + calendar + admin_calendar + c_rebuildcal + Rebuild Calendar RSS Export... + + + calendar + admin_calendar + c_options + Options + + + calendar + admin_calendar + c_calendars + Calendars + + + calendar + admin_calendar + c_editcal + Edit Calendar... + + + calendar + admin_calendar + c_block_rsvp + Allow un-RSVP? + + + calendar + admin_calendar + c_block_rsvp_info + Enabling this setting allows users to remove their own RSVP status, and allows the event poster to remove attendees from an event. + + + calendar + admin_calendar + c_block_limit + Event Limit + + + calendar + admin_calendar + c_block_limit_info + + + + calendar + admin_calendar + c_block_bday + Birthday Limit + + + calendar + admin_calendar + perm_calendar_askrsvp + Request RSVP + + + calendar + admin_calendar + c_block_freq + RSS: Update Frequency + + + calendar + admin_calendar + c_block_freq_info + The number of minutes between RSS cache rebuilding + + + calendar + admin_calendar + c_block_max + RSS: Export Maximum Events + + + calendar + admin_calendar + c_block_max_info + The maximum number of events exported + + + calendar + admin_calendar + c_block_forthcoming + RSS: Forthcoming Days + + + calendar + admin_calendar + c_block_enable_info + n forthcoming events (based on GMT time) that have guest read permission will be exported]]> + + + calendar + admin_calendar + c_block_rss + RSS Options + + + calendar + admin_calendar + c_block_bday_info + Enter 0 to not show birthdays at all]]> + + + calendar + admin_calendar + c_savebutton + Save Changes + + + calendar + admin_calendar + c_title + Calendar Manager + + + calendar + admin_calendar + c_rssrecached + Calendar Events RSS Recached + + + calendar + admin_calendar + c_recached + Calendar Events Recached + + + calendar + admin_calendar + c_block_title + Calendar Title + + + calendar + admin_calendar + c_block_mod + Enable Moderation + + + calendar + admin_calendar + c_block_mod_info + + + + calendar + admin_calendar + c_block_modc + Enable Comment Moderation + + + calendar + admin_calendar + c_block_modc_info + If enabled, all comments will require moderator approval before being visible. + + + calendar + admin_calendar + c_editbutton + Edit Calendar + + + calendar + admin_calendar + c_edited + Calendar Edited + + + calendar + admin_calendar + c_removed + Calendar Removed + + + calendar + admin_calendar + c_added + New Calendar Added + + + calendar + admin_calendar + c_completeform + You must complete the entire form. + + + calendar + admin_calendar + c_noid + No ID was passed. Please try again. + + + calendar + admin_calendar + feed_notfoundedit + We could not determine which feed you were attempting to edit. + + + calendar + admin_calendar + feed_added + The new feed has been saved successfully + + + calendar + admin_calendar + feed_updated + The feed has been successfully updated + + + calendar + admin_calendar + feed_importremoved + The iCalendar feed import has been removed + + + calendar + admin_calendar + feed_noiddel + We could not determine which feed you were attempting to delete. + + + calendar + admin_calendar + feed_ics_upload + Import + + + calendar + admin_calendar + feed_successwebcal + The feed has been successfully imported (%s events skipped and %s events imported). + + + calendar + admin_calendar + feed_successimport + The iCalendar file has been successfully imported (%s events skipped and %s events imported). + + + calendar + admin_calendar + feed_importwcalnone + There was a problem processing the calendar event data. + + + calendar + admin_calendar + feed_importicsnone + There was a problem processing the uploaded event data. + + + calendar + admin_calendar + no_feed_title + No title was supplied for this feed. + + + calendar + admin_calendar + invalid_feed_url + + + + calendar + admin_calendar + upload_ics_info + Use this form to upload calendar event data (in iCalendar format). iCalendar exports will usually have a .ics extension. + + + calendar + admin_calendar + upload_ics_calinfo + Select the calendar to import the events to. + + + calendar + admin_calendar + upload_ics_feed + Upload File + + + calendar + admin_calendar + upload_ics_cal + Save To Calendar + + + calendar + admin_calendar + feed_ics_import + Import Event Data + + + calendar + admin_calendar + upload_ics_useri + Supply the member name you wish to save the events under + + + calendar + admin_calendar + upload_ics_user + Member Name + + + calendar + admin_calendar + feed_formmem + Member Name + + + calendar + admin_calendar + feed_formmemi + Supply the member name you wish to save the events under + + + calendar + admin_calendar + addfirstfeed + Add a feed + + + calendar + admin_calendar + no_feeds_yet + There are no feeds yet + + + calendar + admin_calendar + feed_addlink + Add Feed + + + calendar + admin_calendar + feeds_for_import + Imported Feeds + + + calendar + admin_calendar + feed_deletelink + Delete Feed... + + + calendar + admin_calendar + feed_recachelink + Check For Updates... + + + calendar + admin_calendar + feed_editlink + Edit Feed... + + + calendar + admin_calendar + feed_freqinfo + The number of minutes that should pass before the feed is checked for new events. Minimum of 60. + + + calendar + admin_calendar + feed_formfreq + Update Frequency + + + calendar + admin_calendar + feed_urlinfo + + + + calendar + admin_calendar + feed_calid + Save To Calendar + + + calendar + admin_calendar + feed_calinfo + Select the calendar to save events imported from this feed to. + + + calendar + admin_calendar + feed_notfoundrecache + We could not determine which feed you were attempting to recache. + + + calendar + admin_calendar + feed_formurl + Feed URL + + + calendar + admin_calendar + feed_formtitle + Feed Title + + + calendar + admin_calendar + do_del_button + Delete Feed + + + calendar + admin_calendar + ical_manager + Feed Management + + + calendar + admin_calendar + feed_importicsmme + We could not determine which member you were attempting to import the event data under. + + + calendar + admin_calendar + feed_editbutton + Save Feed + + + calendar + admin_calendar + delete_events_too + Delete imported events? + + + calendar + admin_calendar + feed_del_confirm_t + Confirm Feed Deletion + + + calendar + admin_calendar + feed_edit_title + Edit Feed: + + + calendar + admin_calendar + feed_addnewtext + Add New Feed + + + calendar + admin_calendar + tab_permissions + Permissions + + + calendar + admin_calendar + cal_clearedminicals + Cleared out %s minical caches + + + calendar + admin_menulang + r__calendar_ical + Can import ical and webcal feeds? + + + calendar + admin_menulang + r__calendar_import + Import iCalendar Feeds + + + calendar + admin_menulang + r__calendar_delete + Can delete calendars? + + + calendar + admin_menulang + r__calendar_manage + Can add/edit calendars? + + + calendar + admin_menulang + r__calendar_mt + Calendar Management + + + calendar + admin_menulang + menu__cal_settings + Calendar Settings + + + calendar + admin_menulang + menu__icalendar + Import iCalendar Feeds + + + calendar + admin_menulang + menu__calendars + Calendar Management + + + diff --git a/upload/admin/applications_addon/ips/calendar/xml/calendar_help.xml b/upload/admin/applications_addon/ips/calendar/xml/calendar_help.xml new file mode 100644 index 00000000..89af3153 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/xml/calendar_help.xml @@ -0,0 +1,41 @@ + + + + + Calendar + +
    +<strong>Navigating the Calendar</strong>
    +
    +<em>Quick Jump</em>
    +At the top of the side-bar you will see a box that will allow you to select a calendar to view, or quickly change to any month. To change the month you are viewing, select the month you want to view using the drop-down boxes and press <span class='input_submit'>Go</span>.
    +
    +There are also links to quickly jump the current month or week below the main calendar.
    +
    +The Calender offers three different display modes, there is a "Month" view, like a standard wall calender, a "Week" view, which shows a vertical list of the days events ni a week, such as a weekly planner, and a "Day" view, which shows all events for a particular day.
    + +
    +<em>Mini-Calendars</em>
    +Below the quick jump box, you will see a mini-calendar view of the previous month and the next month based on the current month that you are viewing. If you are viewing a specific week, you will also see a mini-calendar of the current month, and today's date will be highlighted.
    +
    +If a day has an event scheduled for it, clicking on the date will bring up the details for all events on that day.
    +
    +You can also click on <img src='{style_image_url}/next.png' /> beside any week to change the calendar view to that week.
    +
    +<em>Main Calendar</em>
    +The calendar you are currently viewing displays in the middle of the page. Today's date will be highlighted if it is in the month that you are viewing.
    +
    +Events or birthdays will be noted in the boxes. Click on any of these for details of the events. If there are too many events to display on the monthly view, you will be advised of this with a link to view all events for the day.
    +
    +
    +
    +<strong>Adding New Events</strong>
    +When adding a new event, you will be asked for a start and stop date of the event. You will also be asked if the event reoccurs and when this is, weekly, monthly or yearly. +
    +Finally, type a description for your event and press <span class='input_submit'>Add Calendar Event</span>.]]>
    + More information on the boards calendar feature. + 11 + calendar +
    +
    +
    diff --git a/upload/admin/applications_addon/ips/calendar/xml/calendar_mobile_templates.xml b/upload/admin/applications_addon/ips/calendar/xml/calendar_mobile_templates.xml new file mode 100644 index 00000000..aec56cf2 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/xml/calendar_mobile_templates.xml @@ -0,0 +1,1224 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/upload/admin/applications_addon/ips/calendar/xml/calendar_modules.xml b/upload/admin/applications_addon/ips/calendar/xml/calendar_modules.xml new file mode 100644 index 00000000..0a4a4b75 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/xml/calendar_modules.xml @@ -0,0 +1,49 @@ + + + + + Public Calendar + calendar + calendar + + 1.0.0 + 1 + 1 + 0 + 0 + + + Calendar Management + calendar + calendar + + 1.0.0 + 1 + 1 + 0 + 1 + + + Calendar Settings + calendar + settings + + 1.0.0 + 1 + 1 + 1 + 1 + + + Import iCalendar Feeds + calendar + icalendar + Management of iCalendar feed imports + 1.0 + 1 + 1 + 18 + 1 + + + diff --git a/upload/admin/applications_addon/ips/calendar/xml/calendar_root_css.xml b/upload/admin/applications_addon/ips/calendar/xml/calendar_root_css.xml new file mode 100644 index 00000000..0b50c5dd --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/xml/calendar_root_css.xml @@ -0,0 +1,190 @@ + + + + 0 + 1369791761 + ipb_calendar + div { width: 32%; } +#mini_calendars.three_wide > div.left:first-child { margin-right: 2%; } +#mini_calendars.three_wide > div.right { margin-left: 2%; } + +.mini_cal_wrap { background: #fff; } + .mini_cal_wrap h3 { margin: 10px 0 0 15px; } + .mini_cal_wrap .ipsBox_container { min-height: 212px; } + +.mini_cal { margin-top: 10px; } + .mini_cal td, .mini_cal th { + text-align: center; + width: 14%; + font-size: 11px; + height: 24px; + } + .mini_cal th { font-weight: bold; } + +.post_wrap.vevent h3 { + height: auto !important; + line-height: 1 !important; + padding: 10px !important; +} + .post_wrap.vevent h3 .ipsUserPhoto { margin-right: 10px; } + +#cal_date_wrap { line-height: 1.5; } +.cal_date_day { font: 300 84px/58px 'Helvetica Neue', helvetica, arial, sans-serif; } +.cal_date_monthyear { + text-transform: uppercase; + font-size: 16px; +} + +/* RSVPing */ +.rsvp { + margin-top: 15px; + padding: 10px 0 0 0; + border-top: 1px solid #c0c0c0; +} +.rsvp > div { margin-top: 5px; } +#attendee_list { margin-top: 10px; } + +.calendar_jump { + font-size: 14px !important; + margin: 6px 0 0 10px; + display: inline-block; +} + +.calendar_dropdown { display: inline-block; } + + #calendar_chooser_menucontent { width: 200px; } + #calendar_chooser_menucontent .calendar_icon { padding: 4px; } + +.calendar_wrap table td.blank { + background-color: #e7e7e7; +} + +#ipboard_body .calendar_wrap table td.today { + border: 2px solid #6f8f52; + color: #6f8f52; + background-color: #f1f6ec; +} + +.calendar_wrap table td strong { + font-size: 0.9em; + font-weight: bold; +} + +#ipboard_body table th.head_week { + width: 2% !important; +} + +#ipboard_body table th.view_week { + background-color: #b6c7db; + text-align: center; + border: 1px solid #b6c7db; +} + +/* Week view */ + div#current_calendar ol#week_view li.day { + margin-bottom: 2px; + } + + div#current_calendar ol#week_view li.day div { + padding: 4px 10px 4px 75px; + min-height: 60px; + position: relative; + } + + div#current_calendar ol#week_view li.day .date { + color: #1d3652; + font-size: 1.2em; + text-align: center; + padding-top: 10px; + top: 0px; + bottom: 0px; + left: 0px; + width: 65px; + display: block; + position: absolute; + } + +.cal_color { + margin-right: 8px; + padding: 0 7px; + border-radius: 2px; + -moz-border-radius: 2px; + -webkit-border-radius: 2px; +} + +.cal_1 { + background-color: #971a48; +} +.cal_2 { + background-color: #3fa711; +} +.cal_3 { + background-color: #cd8b24; +} + + +.input_check.event_options { + margin-left: 12px !important; +}]]> + 1 + calendar + 1 + + 0 + + root + + diff --git a/upload/admin/applications_addon/ips/calendar/xml/calendar_root_templates.xml b/upload/admin/applications_addon/ips/calendar/xml/calendar_root_templates.xml new file mode 100644 index 00000000..7948c7be --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/xml/calendar_root_templates.xml @@ -0,0 +1,1326 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/upload/admin/applications_addon/ips/calendar/xml/calendar_settings.xml b/upload/admin/applications_addon/ips/calendar/xml/calendar_settings.xml new file mode 100644 index 00000000..f3a29ee3 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/xml/calendar_settings.xml @@ -0,0 +1,197 @@ + + + + + 1 + calendar + + This section will allow you to set up the board calendar and its related options. + IPS Apps + calendar + 0 + + + Show birthdays on the main calendar view + + yes_no + show_bday_calendar + 1 + + + 1 + 1 + + 1 + + calendar + 0 + + + + + yes_no + show_birthdays + 1 + + + 1 + 2 + + 1 + + calendar + 0 + + + Auto hide when no birthdays to show + + yes_no + autohide_bday + 0 + + + 1 + 3 + + 1 + + calendar + 0 + + + Show forthcoming calendar events + + yes_no + show_calendar + 1 + + + 1 + 4 + Forthcoming Calendar Events + 1 + + calendar + 0 + + + Auto hide when no events to show + + yes_no + autohide_calendar + 0 + + + 1 + 5 + + 1 + + calendar + 0 + + + + Controls how far into the future events are shown on the forcoming events block on the forum index. + input + calendar_limit + 5 + + cache->rebuildCache( 'calendar_events', 'calendar' ); +}]]> + 1 + 6 + + 1 + + calendar + 0 + + + + This applies to view calendar / post event. + input + start_year + 2008 + + + 1 + 7 + + 1 + + calendar + 0 + + + + Example: current year is 2002, you enter 5 - last choosable year = 2007]]> + input + year_limit + 8 + + + 1 + 8 + + 1 + + calendar + 0 + + + Start calendar on Monday + The default behavior for the calendar is to start the week on Sunday. By setting this to yes, you will start the week on Monday instead. + yes_no + ipb_calendar_mon + 0 + + + 1 + 9 + + 1 + + calendar + 0 + + + Time format + Choose between US standard and 24 hour time format + dropdown + cal_time_format + standard + standard=Standard (AM/PM) +24hour=24 hour + + 1 + 10 + Time / Date Formatting + 1 + + calendar + 0 + + + Date format + Choose the date format to use for event submission. Note this format is specifically used for event submission only. + dropdown + cal_date_format + american + american=MM/DD/YYYY +danish=YYYY/MM/DD +italian=DD/MM/YYYY +db=YYYY-MM-DD + + 1 + 11 + + 1 + + calendar + 0 + + + diff --git a/upload/admin/applications_addon/ips/calendar/xml/calendar_tasks.xml b/upload/admin/applications_addon/ips/calendar/xml/calendar_tasks.xml new file mode 100644 index 00000000..30e6b1d7 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/xml/calendar_tasks.xml @@ -0,0 +1,41 @@ + + + + + 34 + Birthday and Events Cache + calendarevents.php + 1357260600 + -1 + -1 + 12 + -1 + 8dfab5d00627423f1adffe31a81db369 + 1 + + 1 + calendarevents + 1 + 0 + calendar + + + 35 + Recache calendar feeds + importfeeds.php + 1357245240 + -1 + -1 + 1 + -1 + 6f25b808dba5580cc0582bdd49253f9d + 1 + Recaches stored iCalendar feeds + 1 + importcalendarfeeds + 0 + 0 + calendar + + + diff --git a/upload/admin/applications_addon/ips/calendar/xml/calendar_xmlskin_css.xml b/upload/admin/applications_addon/ips/calendar/xml/calendar_xmlskin_css.xml new file mode 100644 index 00000000..6857573e --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/xml/calendar_xmlskin_css.xml @@ -0,0 +1,16 @@ + + + + 0 + 1369791762 + ipb_calendar + + 1 + calendar + 1 + + 0 + + xmlskin + + diff --git a/upload/admin/applications_addon/ips/calendar/xml/calendar_xmlskin_templates.xml b/upload/admin/applications_addon/ips/calendar/xml/calendar_xmlskin_templates.xml new file mode 100644 index 00000000..034c58ce --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/xml/calendar_xmlskin_templates.xml @@ -0,0 +1,425 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/upload/admin/applications_addon/ips/calendar/xml/hooks.xml b/upload/admin/applications_addon/ips/calendar/xml/hooks.xml new file mode 100644 index 00000000..2325ab18 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/xml/hooks.xml @@ -0,0 +1,15 @@ + + + + board_index_calendar.xml + 0 + + + index_upcoming_events.xml + 1 + + + index_upcoming_birthdays.xml + 1 + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/xml/hooks/board_index_calendar.xml b/upload/admin/applications_addon/ips/calendar/xml/hooks/board_index_calendar.xml new file mode 100644 index 00000000..f77cd574 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/xml/hooks/board_index_calendar.xml @@ -0,0 +1,78 @@ + + + + + Calendar + Displays the mini calendar for the current month + Invision Power Services, Inc. + + http://www.invisionpower.com + + + 1.0.0 + + + calendar + + + + + + boardIndexCalendar.php + templateHooks + boardIndexCalendar + + registry = ipsRegistry::instance(); + $this->DB = $this->registry->DB(); + $this->settings =& $this->registry->fetchSettings(); + $this->lang = $this->registry->getClass('class_localization'); + } + + public function getOutput() + { + /* Make sure the calednar is installed and enabled */ + if( ! IPSLib::appIsInstalled( 'calendar' ) ) + { + return ''; + } + + /* Load language */ + $this->registry->class_localization->loadLanguageFile( array( 'public_calendar' ), 'calendar' ); + + /* Load calendar library */ + $classToLoad = IPSLib::loadActionOverloader( IPSLib::getAppDir( 'calendar' ) .'/modules_public/calendar/view.php', 'public_calendar_calendar_view' ); + $cal = new $classToLoad(); + $cal->makeRegistryShortcuts( $this->registry ); + + if( !$cal->initCalendar( true ) ) + { + return ''; + } + + /* Return calendar */ + return "
    ". $cal->getMiniCalendar( date('n'), date('Y') ) . '

    '; + } +}]]>
    +
    +
    + + + + + + + + + + + +
    diff --git a/upload/admin/applications_addon/ips/calendar/xml/hooks/index.html b/upload/admin/applications_addon/ips/calendar/xml/hooks/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/xml/hooks/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/xml/hooks/index_upcoming_birthdays.xml b/upload/admin/applications_addon/ips/calendar/xml/hooks/index_upcoming_birthdays.xml new file mode 100644 index 00000000..2f2d320f --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/xml/hooks/index_upcoming_birthdays.xml @@ -0,0 +1,78 @@ + + + + + Upcoming Birthdays + Shows upcoming birthdays on the board index + Invision Power Services, Inc. + support@invisionpower.com + http://invisionpower.com + + + 1.0.0 + 10000 + + upcomingbirthdays + + + + + + calendarUpcomingBirthdays.php + templateHooks + calendarUpcomingBirthdays + + getUpcomingBirthdays(); + } +}]]> + + + + + + + + + + + + + + diff --git a/upload/admin/applications_addon/ips/calendar/xml/hooks/index_upcoming_events.xml b/upload/admin/applications_addon/ips/calendar/xml/hooks/index_upcoming_events.xml new file mode 100644 index 00000000..4143a338 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/xml/hooks/index_upcoming_events.xml @@ -0,0 +1,79 @@ + + + + + Upcoming Calendar Events + Shows upcoming calendar events on the board index + Invision Power Services, Inc. + support@invisionpower.com + http://invisionpower.com + + + 1.0 + 10000 + + upcomingcalendarevents + + + + + + calendarUpcomingEvents.php + templateHooks + calendarUpcomingEvents + + getUpcomingEvents(); + } +}]]> + + + + + + + + + + + + + + diff --git a/upload/admin/applications_addon/ips/calendar/xml/index.html b/upload/admin/applications_addon/ips/calendar/xml/index.html new file mode 100644 index 00000000..e075b8d6 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/xml/index.html @@ -0,0 +1,10 @@ + +IP.Board - Bulletin Board System + +

    403: IP.Board -> Forbidden

    +
    +You have reached this page in error, please use your back button to return to the forum. +
    +IP.Board + + \ No newline at end of file diff --git a/upload/admin/applications_addon/ips/calendar/xml/information.xml b/upload/admin/applications_addon/ips/calendar/xml/information.xml new file mode 100644 index 00000000..a4e787b2 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/xml/information.xml @@ -0,0 +1,18 @@ + + + + Calendar + Calendar + 0 + Invision Power Services, Inc. + + 0 + fa038db69fa627d8e8e034d65f554d1f + + + + + + + + diff --git a/upload/admin/applications_addon/ips/calendar/xml/public_calendar_language_pack.xml b/upload/admin/applications_addon/ips/calendar/xml/public_calendar_language_pack.xml new file mode 100644 index 00000000..d1ca82f4 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/xml/public_calendar_language_pack.xml @@ -0,0 +1,1095 @@ + + + + + calendar + public_calendar + edit_event_follow + , + +<#AUTHOR#> has just updated an event "<#TITLE#>" that you are following. + +You can view the updated event here: <#URL#> +]]> + + + calendar + public_calendar + add_event_follow + , + +<#AUTHOR#> has just submitted a new event "<#TITLE#>" to a calendar you are following. + +You can view the event here: <#URL#> +]]> + + + calendar + public_calendar + add_event_follow_subject + %s has been added to the calendar]]> + + + calendar + public_calendar + edit_event_follow_subject + %s has been updated in the calendar]]> + + + calendar + public_calendar + event_date + Event Date: + + + calendar + public_calendar + moderated + moderated + + + calendar + public_calendar + restricted_event + Restricted Event + + + calendar + public_calendar + edit_event_redirect + The calendar event has been edited + + + calendar + public_calendar + public_event + Public Event + + + calendar + public_calendar + private_event + Private Event + + + calendar + public_calendar + cal_title_events + Calendar Events + + + calendar + public_calendar + cal_birthdays + Birthdays + + + calendar + public_calendar + se_ends + through %s + + + calendar + public_calendar + cal_page_title + Calendar + + + calendar + public_calendar + new_event_redirect + Your calendar event has been posted + + + calendar + public_calendar + se_range + Ranged Event + + + calendar + public_calendar + se_recur + Recurring Event + + + calendar + public_calendar + se_normal + Single Day Event + + + calendar + public_calendar + js_del_2 + Action canceled + + + calendar + public_calendar + fv_until + Until + + + calendar + public_calendar + tbt_recur + Recurring Event + + + calendar + public_calendar + js_del_1 + Are you sure you want to delete this event? + + + calendar + public_calendar + fv_years + Year + + + calendar + public_calendar + fv_months + Month + + + calendar + public_calendar + fv_days + Week + + + calendar + public_calendar + fv_recur_every + Every + + + calendar + public_calendar + fv_recur + Repeat Event + + + calendar + public_calendar + fv_range_ends + Event End Date/Time + + + calendar + public_calendar + fv_single + Event Start Date/Time + + + calendar + public_calendar + aa_view_week + View Current Week + + + calendar + public_calendar + aa_cur_month + View Current Month + + + calendar + public_calendar + bd_birthday + + + + calendar + public_calendar + post_new_event + Manage Calendar Event + + + calendar + public_calendar + entry_birthdays + (%s) Birthdays + + + calendar + public_calendar + calendar_edit_submit + Edit Event + + + calendar + public_calendar + calendar_event_type + Type of Event + + + calendar + public_calendar + calendar_type_private + Personal Event (Viewable by you only) + + + calendar + public_calendar + calendar_type_public + Public Event (Viewable by all) + + + calendar + public_calendar + calendar_submit + Add Calendar Event + + + calendar + public_calendar + calendar_title + Event Title + + + calendar + public_calendar + form_tz + Event Time Zone + + + calendar + public_calendar + calendar_group_filter + (Admin option)]]> + + + calendar + public_calendar + form_whichcal + Add to Calendar + + + calendar + public_calendar + new_event_mod + + + + calendar + public_calendar + show_n_events + (%s) Events + + + calendar + public_calendar + cal_event_delete + Calendar event removed + + + calendar + public_calendar + form_timestart + Start Time (HH:MM) + + + calendar + public_calendar + event + Event + + + calendar + public_calendar + form_set_times + All day event? + + + calendar + public_calendar + all_groups + All Groups + + + calendar + public_calendar + event_options + Event Options + + + calendar + public_calendar + event_details + Event Details + + + calendar + public_calendar + week_beginning + Week beginning + + + calendar + public_calendar + unapprove_event + Unapprove Event + + + calendar + public_calendar + report_event + Report event + + + calendar + public_calendar + view_this_month + View this month + + + calendar + public_calendar + view_this_day + View this day + + + calendar + public_calendar + view_this_week + View this week + + + calendar + public_calendar + calendar_for + Calendar for + + + calendar + public_calendar + event_add_single + Add Event + + + calendar + public_calendar + week_next + Next Week + + + calendar + public_calendar + week_previous + Previous Week + + + calendar + public_calendar + month_next + Next Month + + + calendar + public_calendar + month_previous + Previous Month + + + calendar + public_calendar + jump_to + Jump to... + + + calendar + public_calendar + view_this_calendar + View this calendar + + + calendar + public_calendar + select_calendar + Select a calendar to view + + + calendar + public_calendar + calendars + Calendars + + + calendar + public_calendar + view_event + View event + + + calendar + public_calendar + calendar_edit_button + Edit + + + calendar + public_calendar + calendar_edit_title + Edit Event + + + calendar + public_calendar + calendar_delete_button + Delete + + + calendar + public_calendar + calendar_delete_title + Delete Event + + + calendar + public_calendar + today_title + TODAY + + + calendar + public_calendar + approve_event + Approve Event + + + calendar + public_calendar + form_event_repeats + Event repeats? + + + calendar + public_calendar + event_prefix + Event: + + + calendar + public_calendar + time_pm + PM + + + calendar + public_calendar + form_set_enddate + Specify end date? + + + calendar + public_calendar + c_ranged + Ranged Event + + + calendar + public_calendar + c_singleday + Single Day Event On: + + + calendar + public_calendar + recurring_requires_enddate + Repeating events must have an end date specified + + + calendar + public_calendar + time_am + AM + + + calendar + public_calendar + c_tocolon + To: + + + calendar + public_calendar + week_meta_description + View all events for week %s of %s + + + calendar + public_calendar + c_fromcolon + From: + + + calendar + public_calendar + c_recurring + Recurrent Event + + + calendar + public_calendar + day_meta_description + View all events for %s %s, %s + + + calendar + public_calendar + permalink_link + Permalink + + + calendar + public_calendar + month_meta_description + View the monthly calendar for %s %s + + + calendar + public_calendar + link_to_event + Link to event + + + calendar + public_calendar + age_not_avail + Not available + + + calendar + public_calendar + age_suffix + Age + + + calendar + public_calendar + eve_js_5star + Rate event 5 stars + + + calendar + public_calendar + eve_js_4star + Rate event 4 stars + + + calendar + public_calendar + eve_js_3star + Rate event 3 stars + + + calendar + public_calendar + eve_js_2star + Rate event 2 stars + + + calendar + public_calendar + eve_js_1star + Rate event 1 star + + + calendar + public_calendar + event_your_rate + You voted + + + calendar + public_calendar + event_rates + votes + + + calendar + public_calendar + event_rated_already + You have already rated this event + + + calendar + public_calendar + event_rating_changed + Your rating has been successfully changed + + + calendar + public_calendar + cal_calendar_ol + Viewing Calendar: + + + calendar + public_calendar + cal_event_ol + Viewing Event: + + + calendar + public_calendar + no_event_for_rate + We could not determine which event you were rating. + + + calendar + public_calendar + no_rate_permission + You do not have permission to rate this event. + + + calendar + public_calendar + event_rating_done + Your rating has been successfully stored + + + calendar + public_calendar + comment_block + Comments + + + calendar + public_calendar + like__event + Event + + + calendar + public_calendar + like__index + Index + + + calendar + public_calendar + like__calendar + Calendar + + + calendar + public_calendar + event_rate_me + Rate Event: + + + calendar + public_calendar + notify__updated_event + Notify me when an event I follow is updated + + + calendar + public_calendar + like__updatesandcomments + comments and updates + + + calendar + public_calendar + like__events + events + + + calendar + public_calendar + notify__new_event + Notify me when new events are posted to a calendar I follow + + + calendar + public_calendar + rsvp__already_rsvp + + + + calendar + public_calendar + rsvp__no_perm + You do not have permission to RSVP for this event. + + + calendar + public_calendar + rsvp__no_event + We could not find the event you were attempting to RSVP for. + + + calendar + public_calendar + cal_event_rsvpdelete + The attendee for this event has been removed + + + calendar + public_calendar + rsvp_button + + + + calendar + public_calendar + rsvp_delete_link + Remove this attendee from RSVP list? + + + calendar + public_calendar + attendee_bad_delete + We could not find the attendee you were attempting to remove. + + + calendar + public_calendar + noperm_rsvp + You do not have permission to RSVP + + + calendar + public_calendar + rsvp_saved_im + Your RSVP has been successfully saved. + + + calendar + public_calendar + event_poster_want_rsvp + The event poster has requested that attendees RSVP for this event + + + calendar + public_calendar + request_rsvp + Request RSVP? + + + calendar + public_calendar + click_to_rsvp + Click here to RSVP + + + calendar + public_calendar + rsvp_date_pre + + + + calendar + public_calendar + no_rsvp_yet + + + + calendar + public_calendar + rsvp_title_header + RSVP for event + + + calendar + public_calendar + view_event_title + View event: + + + calendar + public_calendar + rc_comment_pre + Comment for: %s + + + calendar + public_calendar + no_events_for_today + No events have been scheduled for today. + + + calendar + public_calendar + events_for_day + Events for + + + calendar + public_calendar + day_next + Next Day + + + calendar + public_calendar + day_previous + Previous Day + + + calendar + public_calendar + report_cal_msg + Enter your report]]> + + + calendar + public_calendar + report_cal_title + Reporting an event or comment + + + calendar + public_calendar + report_cal_pagec + Report this comment to a moderator + + + calendar + public_calendar + report_cal_page + Report this event to a moderator + + + calendar + public_calendar + subscribe_this_calendar + Subscribe to this calendar + + + calendar + public_calendar + report_section_title_cal + Calendar Event + + + calendar + public_calendar + view_week_view + Week View + + + calendar + public_calendar + view_day_view + Day View + + + calendar + public_calendar + taking_place + Taking place + + + calendar + public_calendar + no_birthdays + There are no birthdays today + + + calendar + public_calendar + modcp_tab_unapprovedevents + Events + + + calendar + public_calendar + no_events_pend_app + There are no events awaiting approval. + + + calendar + public_calendar + modcp_events_ttl + Events Pending Approval + + + calendar + public_calendar + nopermaddbutton + You do not have permission to add events + + + calendar + public_calendar + download_this_calendar + Download as iCal + + + calendar + public_calendar + view_month_view + Month View + + + calendar + public_calendar + event_img_alt + Event + + + calendar + public_calendar + like_unfollow_c + unfollow this calendar + + + calendar + public_calendar + event_calendar + Calendar: + + + calendar + public_calendar + like_totalcount_follow_c + %s member(s) follow this calendar + + + calendar + public_calendar + like_ucfirst_unfollow_c + Unfollow this calendar + + + calendar + public_calendar + like_follow_c + follow this calendar + + + calendar + public_calendar + like_ucfirst_follow_c + Follow this calendar + + + calendar + public_calendar + like_totalcount_follow_e + %s member(s) follow this event + + + calendar + public_calendar + like_unfollow_e + unfollow this event + + + calendar + public_calendar + like_ucfirst_unfollow_e + Unfollow this event + + + calendar + public_calendar + like_follow_e + follow this event + + + calendar + public_calendar + like_ucfirst_follow_e + Follow this event + + + calendar + public_calendar + switch_calendar + Switch calendar + + + calendar + public_calendar + cal_in + in + + + calendar + public_calendar + by + By + + + calendar + public_calendar + followed_type__calendars + Calendars + + + calendar + public_calendar + added_by + Added by + + + calendar + public_calendar + followed_type__events + Events + + + calendar + public_calendar + celebrating_bday + Celebrating Today + + + calendar + public_calendar + js_rate_event + Rate Event + + + calendar + public_calendar + no_calendar_permission + You do not have permission to access the calendar. + + + calendar + public_calendar + rsvp_whois_attending + %s Attending + + + calendar + public_calendar + calendar_no_post + No permission to add events + + + calendar + public_calendar + birthdaysviewmorelink + + + + calendar + public_calendar + rsvp_seeall + See All + + + calendar + public_calendar + calendar_invalid_time + The time you entered for the event is not valid. + + + calendar + public_calendar + members_are_attending + members are attending + + + diff --git a/upload/admin/applications_addon/ips/calendar/xml/versions.xml b/upload/admin/applications_addon/ips/calendar/xml/versions.xml new file mode 100644 index 00000000..1ffece82 --- /dev/null +++ b/upload/admin/applications_addon/ips/calendar/xml/versions.xml @@ -0,0 +1,51 @@ + + + + 3.1.4 + 31007 + + + 3.2.0 Beta 1 + 32000 + + + 3.2.0 Beta 2 + 32001 + + + 3.2.0 Beta 3 + 32002 + + + 3.2.0 + 32003 + + + 3.2.1 + 32004 + + + 3.2.2 + 32005 + + + 3.3.0 + 33000 + + + 3.3.1 + 33001 + + + 3.3.2 + 33002 + + + 3.3.3 + 33003 + + + 3.3.4 + 33004 + + \ No newline at end of file diff --git a/upload/admin/extensions/coreVariables.php b/upload/admin/extensions/coreVariables.php index a24ac435..ade2c31f 100644 --- a/upload/admin/extensions/coreVariables.php +++ b/upload/admin/extensions/coreVariables.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Core variables file: defines caches, resets, etc.
      * Last Updated: $Date: 2013-03-19 18:24:44 -0400 (Tue, 19 Mar 2013) $
      * 
    diff --git a/upload/admin/extensions/sphinxTemplate.php b/upload/admin/extensions/sphinxTemplate.php index b730ceaf..a3ca5756 100644 --- a/upload/admin/extensions/sphinxTemplate.php +++ b/upload/admin/extensions/sphinxTemplate.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Sphinx template file
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/extensions/userAgents.php b/upload/admin/extensions/userAgents.php index ae4550bb..d83a9ab4 100644 --- a/upload/admin/extensions/userAgents.php +++ b/upload/admin/extensions/userAgents.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * User agent (browser and spider) mappings
      * Last Updated: $Date: 2013-10-14 17:55:18 -0400 (Mon, 14 Oct 2013) $
      * 
    diff --git a/upload/admin/index.php b/upload/admin/index.php index 9b30cdb4..a3c96d23 100644 --- a/upload/admin/index.php +++ b/upload/admin/index.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Admin control panel gateway index.php file
      * Last Updated: $Date: 2012-05-21 11:56:33 -0400 (Mon, 21 May 2012) $
      * 
    @@ -32,7 +32,7 @@ if ( !isset( $_REQUEST['adsess'] ) && isset( $_SERVER['REQUEST_URI'] ) ) exit; } } -require_once( IPS_ROOT_PATH . 'sources/base/darkLAE.php' );/*noLibHook*/ + require_once( IPS_ROOT_PATH . 'sources/base/ipsRegistry.php' );/*noLibHook*/ require_once( IPS_ROOT_PATH . 'sources/base/ipsController.php' );/*noLibHook*/ diff --git a/upload/admin/install/index.php b/upload/admin/install/index.php index 8188024c..a296ab26 100644 --- a/upload/admin/install/index.php +++ b/upload/admin/install/index.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Installation Gateway
      * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    @@ -33,7 +33,7 @@ if ( is_file( DOC_IPS_ROOT_PATH . 'sources/ipsclass.php' ) ) @header( "Location: http://" . $_SERVER["SERVER_NAME"] . str_replace( "/install/", "/upgrade/", $_SERVER["PHP_SELF"] ) ); exit(); } -require_once( IPS_ROOT_PATH . 'sources/base/darkLAE.php' );/*noLibHook*/ + require_once( IPS_ROOT_PATH . 'setup/sources/base/ipsRegistry_setup.php' );/*noLibHook*/ require_once( IPS_ROOT_PATH . 'setup/sources/base/ipsController_setup.php' );/*noLibHook*/ diff --git a/upload/admin/setup/applications/install/sections/address.php b/upload/admin/setup/applications/install/sections/address.php index 27dd6cc8..d86252bc 100644 --- a/upload/admin/setup/applications/install/sections/address.php +++ b/upload/admin/setup/applications/install/sections/address.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Installer: EULA file
      * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/setup/applications/install/sections/admin.php b/upload/admin/setup/applications/install/sections/admin.php index fb8a8587..dbcf7299 100644 --- a/upload/admin/setup/applications/install/sections/admin.php +++ b/upload/admin/setup/applications/install/sections/admin.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Installer: ADMIN file
      * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/setup/applications/install/sections/apps.php b/upload/admin/setup/applications/install/sections/apps.php index 8e19ef12..239a9874 100644 --- a/upload/admin/setup/applications/install/sections/apps.php +++ b/upload/admin/setup/applications/install/sections/apps.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Installer: EULA file
      * Last Updated: $LastChangedDate: 2013-01-31 18:11:00 -0500 (Thu, 31 Jan 2013) $
      * 
    diff --git a/upload/admin/setup/applications/install/sections/db.php b/upload/admin/setup/applications/install/sections/db.php index 085a3cbb..4177c635 100644 --- a/upload/admin/setup/applications/install/sections/db.php +++ b/upload/admin/setup/applications/install/sections/db.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Installer: EULA file
      * Last Updated: $LastChangedDate: 2012-11-02 08:18:10 -0400 (Fri, 02 Nov 2012) $
      * 
    diff --git a/upload/admin/setup/applications/install/sections/done.php b/upload/admin/setup/applications/install/sections/done.php index a9383ff4..fe8e05a0 100644 --- a/upload/admin/setup/applications/install/sections/done.php +++ b/upload/admin/setup/applications/install/sections/done.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Installer: EULA file
      * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/setup/applications/install/sections/eula.php b/upload/admin/setup/applications/install/sections/eula.php index d2e3d7d9..8c3e19bd 100644 --- a/upload/admin/setup/applications/install/sections/eula.php +++ b/upload/admin/setup/applications/install/sections/eula.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Installer: EULA file
      * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/setup/applications/install/sections/index.php b/upload/admin/setup/applications/install/sections/index.php index c2c361d6..0da071b1 100644 --- a/upload/admin/setup/applications/install/sections/index.php +++ b/upload/admin/setup/applications/install/sections/index.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Installer: Index file
      * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/setup/applications/install/sections/install.php b/upload/admin/setup/applications/install/sections/install.php index 897372af..60afdfd2 100644 --- a/upload/admin/setup/applications/install/sections/install.php +++ b/upload/admin/setup/applications/install/sections/install.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Installer: EULA file
      * Last Updated: $LastChangedDate: 2012-09-27 06:09:08 -0400 (Thu, 27 Sep 2012) $
      * 
    diff --git a/upload/admin/setup/applications/install/sections/license.php b/upload/admin/setup/applications/install/sections/license.php index c4819830..6a003efe 100644 --- a/upload/admin/setup/applications/install/sections/license.php +++ b/upload/admin/setup/applications/install/sections/license.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Installer: License Key
      * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    @@ -28,9 +28,55 @@ class install_license extends ipsCommand */ public function doExecute( ipsRegistry $registry ) { - IPSSetup::setSavedData( 'lkey', darkLAE::getLicenseKey() ); - - $this->registry->autoLoadNextAction( 'db' ); + $lcheck = ''; + if ( $this->request['do'] == 'check' ) + { + $lcheck = $this->check(); + if ( $lcheck === TRUE ) + { + $this->registry->autoLoadNextAction( 'db' ); + return; + } + } + + $this->registry->output->setTitle( "License Key" ); + $this->registry->output->setNextAction( "license&do=check" ); + $this->registry->output->addContent( $this->registry->output->template()->page_license( $lcheck ) ); + $this->registry->output->sendOutput(); + } + + /** + * Check License Key + * + * @access public + * @return bool + */ + private function check() + { + $this->request['lkey'] = trim( $this->request['lkey'] ); + + // License key is optional + if( ! $this->request['lkey'] ) + { + return true; + } + + $url = IPSSetup::getSavedData( 'install_url' ); + + require_once( IPS_KERNEL_PATH . 'classFileManagement.php' );/*noLibHook*/ + $query = new classFileManagement(); + $response = $query->getFileContents( "http://license.invisionpower.com/?a=check&key={$this->request['lkey']}&url={$url}" ); + $response = json_decode( $response, true ); + + if( $response['result'] != 'ok' ) + { + return "Your license key could not be activated. Please check your key and try again. If the problem persists, please contact technical support."; + } + else + { + IPSSetup::setSavedData( 'lkey', $this->request['lkey'] ); + return TRUE; + } } } \ No newline at end of file diff --git a/upload/admin/setup/applications/upgrade/sections/apps.php b/upload/admin/setup/applications/upgrade/sections/apps.php index b6678d05..73528b5c 100644 --- a/upload/admin/setup/applications/upgrade/sections/apps.php +++ b/upload/admin/setup/applications/upgrade/sections/apps.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Installer: EULA file
      * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/setup/applications/upgrade/sections/done.php b/upload/admin/setup/applications/upgrade/sections/done.php index f03fac60..896d8537 100644 --- a/upload/admin/setup/applications/upgrade/sections/done.php +++ b/upload/admin/setup/applications/upgrade/sections/done.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Installer: DONE file
      * Last Updated: $LastChangedDate: 2013-05-08 13:47:21 -0400 (Wed, 08 May 2013) $
      * 
    diff --git a/upload/admin/setup/applications/upgrade/sections/index.php b/upload/admin/setup/applications/upgrade/sections/index.php index 5decbc1a..bcf2c0fe 100644 --- a/upload/admin/setup/applications/upgrade/sections/index.php +++ b/upload/admin/setup/applications/upgrade/sections/index.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Upgrader: Index file - Shows log in page
      * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/setup/applications/upgrade/sections/license.php b/upload/admin/setup/applications/upgrade/sections/license.php index 4756d924..ff4ba739 100644 --- a/upload/admin/setup/applications/upgrade/sections/license.php +++ b/upload/admin/setup/applications/upgrade/sections/license.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Installer: License Key
      * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    @@ -28,9 +28,76 @@ class upgrade_license extends ipsCommand */ public function doExecute( ipsRegistry $registry ) { - IPSLib::updateSettings( array( 'ipb_reg_number' => darkLAE::getLicenseKey() ) ); + /* If less than 3, just bounce out as settings tables won't be here, etc */ + if ( IPSSetUp::is300plus() !== TRUE ) + { + $this->registry->autoLoadNextAction( 'upgrade' ); + return; + } + + if ( $this->request['do'] == 'check' ) + { + $lcheck = $this->check(); + if ( $lcheck === TRUE ) + { + $this->registry->autoLoadNextAction( 'upgrade' ); + return; + } + } + else + { + $lcheck = $this->check( TRUE ); + if ( $lcheck === TRUE ) + { + $this->registry->autoLoadNextAction( 'upgrade' ); + return; + } + } + + $this->registry->output->setTitle( "License Key" ); + $this->registry->output->setNextAction( "license&do=check" ); + $this->registry->output->addContent( $this->registry->output->template()->page_license( $lcheck ) ); + $this->registry->output->sendOutput(); + } + + /** + * Check License Key + * + * @access public + * @return bool + */ + private function check( $init=FALSE ) + { + $this->request['lkey'] = ( $init ) ? ipsRegistry::$settings['ipb_reg_number'] : trim( $this->request['lkey'] ); + + if ( !$this->request['lkey'] and !$init ) + { + return true; + } + + $url = ipsRegistry::$settings['board_url'] ? ipsRegistry::$settings['board_url'] : ipsRegistry::$settings['base_url']; - $this->registry->autoLoadNextAction( 'upgrade' ); + require_once( IPS_KERNEL_PATH . 'classFileManagement.php' );/*noLibHook*/ + $query = new classFileManagement(); + $response = $query->getFileContents( "http://license.invisionpower.com/?a=check&key={$this->request['lkey']}&url={$url}" ); + $response = json_decode( $response, true ); + + if( $response['result'] != 'ok' ) + { + if ( $this->request['ignoreError'] ) + { + return TRUE; + } + else + { + return "License key check failed. Click next to continue anyway."; + } + } + else + { + IPSLib::updateSettings( array( 'ipb_reg_number' => $this->request['lkey'] ) ); + return TRUE; + } } } \ No newline at end of file diff --git a/upload/admin/setup/applications/upgrade/sections/overview.php b/upload/admin/setup/applications/upgrade/sections/overview.php index 95a86c6b..b5879e73 100644 --- a/upload/admin/setup/applications/upgrade/sections/overview.php +++ b/upload/admin/setup/applications/upgrade/sections/overview.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Upgrader: Index file - Shows log in page
      * Last Updated: $LastChangedDate: 2013-04-18 21:11:00 -0400 (Thu, 18 Apr 2013) $
      * 
    diff --git a/upload/admin/setup/applications/upgrade/sections/upgrade.php b/upload/admin/setup/applications/upgrade/sections/upgrade.php index 3cc86f1a..6c49f10c 100644 --- a/upload/admin/setup/applications/upgrade/sections/upgrade.php +++ b/upload/admin/setup/applications/upgrade/sections/upgrade.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Installer: Upgrader core file
      * Last Updated: $LastChangedDate: 2013-01-31 18:28:51 -0500 (Thu, 31 Jan 2013) $
      * 
    diff --git a/upload/admin/setup/cli/install.php b/upload/admin/setup/cli/install.php index bca972fb..d35f3717 100644 --- a/upload/admin/setup/cli/install.php +++ b/upload/admin/setup/cli/install.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Installer CLI Script
      * Last Updated: $LastChangedDate: 2014-04-15 13:33:36 -0400 (Tue, 15 Apr 2014) $
      * 
    diff --git a/upload/admin/setup/cli/output.php b/upload/admin/setup/cli/output.php index 7dd80174..dd35d06c 100644 --- a/upload/admin/setup/cli/output.php +++ b/upload/admin/setup/cli/output.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Setup CLI Script Overrider
      * Last Updated: $LastChangedDate: 2012-05-16 05:59:33 -0400 (Wed, 16 May 2012) $
      * 
    diff --git a/upload/admin/setup/sources/base/install.php b/upload/admin/setup/sources/base/install.php index 01a080c2..67b1520d 100644 --- a/upload/admin/setup/sources/base/install.php +++ b/upload/admin/setup/sources/base/install.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Static SETUP Classes for IP.Board 3
      *
      * These classes are not required as objects. 
    diff --git a/upload/admin/setup/sources/base/ipsController_setup.php b/upload/admin/setup/sources/base/ipsController_setup.php
    index 51755e25..e30ab100 100644
    --- a/upload/admin/setup/sources/base/ipsController_setup.php
    +++ b/upload/admin/setup/sources/base/ipsController_setup.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * ipsController for setup
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/setup/sources/base/ipsRegistry_setup.php b/upload/admin/setup/sources/base/ipsRegistry_setup.php index d3d58473..f9749d06 100644 --- a/upload/admin/setup/sources/base/ipsRegistry_setup.php +++ b/upload/admin/setup/sources/base/ipsRegistry_setup.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Registry class for setup
      * Last Updated: $Date: 2013-05-02 23:43:16 -0400 (Thu, 02 May 2013) $
      * 
    diff --git a/upload/admin/setup/sources/base/setup.php b/upload/admin/setup/sources/base/setup.php index f673ff92..893adb24 100644 --- a/upload/admin/setup/sources/base/setup.php +++ b/upload/admin/setup/sources/base/setup.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Static SETUP Classes for IP.Board 3
      *
      * These classes are not required as objects.
    diff --git a/upload/admin/setup/sources/classes/output/output.php b/upload/admin/setup/sources/classes/output/output.php
    index 7814aa44..92674cdd 100644
    --- a/upload/admin/setup/sources/classes/output/output.php
    +++ b/upload/admin/setup/sources/classes/output/output.php
    @@ -2,7 +2,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Installer output methods
      * Last Updated: $Date: 2013-05-07 22:02:49 -0400 (Tue, 07 May 2013) $
      * 
    diff --git a/upload/admin/setup/sources/classes/session/sessions.php b/upload/admin/setup/sources/classes/session/sessions.php index 8e6a8f84..1779c9d4 100644 --- a/upload/admin/setup/sources/classes/session/sessions.php +++ b/upload/admin/setup/sources/classes/session/sessions.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Setup sessions class
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/setup/sources/legacy/1xx.php b/upload/admin/setup/sources/legacy/1xx.php index 1da65fb3..b67f9791 100644 --- a/upload/admin/setup/sources/legacy/1xx.php +++ b/upload/admin/setup/sources/legacy/1xx.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Version Specific Upgrade Functions
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/setup/sources/legacy/2xx.php b/upload/admin/setup/sources/legacy/2xx.php index d56609b4..bd2ef81c 100644 --- a/upload/admin/setup/sources/legacy/2xx.php +++ b/upload/admin/setup/sources/legacy/2xx.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Version Specific Upgrade Functions
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/setup/sources/legacy/3xx.php b/upload/admin/setup/sources/legacy/3xx.php index 920a5c0b..8a8e5a0d 100644 --- a/upload/admin/setup/sources/legacy/3xx.php +++ b/upload/admin/setup/sources/legacy/3xx.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Version Specific Upgrade Functions
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/setup/sql/ipb3_mysql.php b/upload/admin/setup/sql/ipb3_mysql.php index 9a3b08cf..576536ee 100644 --- a/upload/admin/setup/sql/ipb3_mysql.php +++ b/upload/admin/setup/sql/ipb3_mysql.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * SQL for upgrader
      * Last Updated: $Date: 2012-08-28 17:56:22 -0400 (Tue, 28 Aug 2012) $
      * 
    diff --git a/upload/admin/setup/sql/mysql_install.php b/upload/admin/setup/sql/mysql_install.php index 21aee7f4..a839dbf4 100644 --- a/upload/admin/setup/sql/mysql_install.php +++ b/upload/admin/setup/sql/mysql_install.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * SQL installation methods
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/setup/templates/skin_setup.php b/upload/admin/setup/templates/skin_setup.php index 720ac6c4..aa060dc5 100644 --- a/upload/admin/setup/templates/skin_setup.php +++ b/upload/admin/setup/templates/skin_setup.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Setup skin file
      * Last Updated: $Date: 2013-01-03 20:08:10 -0500 (Thu, 03 Jan 2013) $
      * 
    @@ -162,7 +162,7 @@ $IPBHTML .= << Admin Control Panel
  • Client Area
  • Documentation
  • -
  • Русскоязычный форум поддержки IPBmafia.Ru
  • +
  • IPS Company Forum
  • EOF; @@ -838,7 +838,7 @@ $IPBHTML .= << Admin Control Panel
  • Client Area
  • Documentation
  • -
  • Русскоязычный форум поддержки IPBmafia.Ru
  • +
  • IPS Company Forum
  • EOF; @@ -1698,8 +1698,7 @@ $IPBHTML .= << -Nulled for IPBMafia.ru + Invision Power Services, Inc. diff --git a/upload/admin/setup/xml/requiredextensions.php b/upload/admin/setup/xml/requiredextensions.php index 7cea1307..4ffa8628 100644 --- a/upload/admin/setup/xml/requiredextensions.php +++ b/upload/admin/setup/xml/requiredextensions.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Some required extensions to check for
      * Last Updated: $Date: 2013-03-11 10:53:28 -0400 (Mon, 11 Mar 2013) $
      * 
    diff --git a/upload/admin/setup/xml/skins/setsData.xml b/upload/admin/setup/xml/skins/setsData.xml index f14f1406..a31e4c87 100644 --- a/upload/admin/setup/xml/skins/setsData.xml +++ b/upload/admin/setup/xml/skins/setsData.xml @@ -14,9 +14,9 @@ master default 1 - - 1413434577 - 1413434577 + + 1451405334 + 1451405334 html 0 @@ -36,9 +36,9 @@ master default 1 - - 1413434577 - 1413434577 + + 1451405334 + 1451405334 xml 0 @@ -58,9 +58,9 @@ mobile default 1 - - 1413434577 - 1413434577 + + 1451405334 + 1451405334 html 0 diff --git a/upload/admin/skin_cp/cp_skin_global.php b/upload/admin/skin_cp/cp_skin_global.php index a1913a8d..cce8b594 100644 --- a/upload/admin/skin_cp/cp_skin_global.php +++ b/upload/admin/skin_cp/cp_skin_global.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Admin CP global skin templates
      * Last Updated: $Date: 2014-10-01 13:50:54 -0400 (Wed, 01 Oct 2014) $
      * 
    diff --git a/upload/admin/sources/base/core.php b/upload/admin/sources/base/core.php index 24193174..b8c075ee 100644 --- a/upload/admin/sources/base/core.php +++ b/upload/admin/sources/base/core.php @@ -2,21 +2,21 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Static Classes for IP.Board 3
      *
      * These classes are not required as objects. We have grouped
      * together several singletons to prevent multiple file loads
    - * Last Updated: $Date: 2014-12-31 17:46:06 -0500 (Wed, 31 Dec 2014) $
    + * Last Updated: $Date: 2015-12-28 11:27:19 -0500 (Mon, 28 Dec 2015) $
      * 
    * - * @author $Author: rashbrook $ + * @author $Author: mark $ * @copyright (c) 2001 - 2009 Invision Power Services, Inc. * @license http://www.invisionpower.com/company/standards.php#license * @package IP.Board * @link http://www.invisionpower.com * @since 12th March 2002 - * @version $Revision: 12581 $ + * @version $Revision: 12688 $ * * @author Matt */ @@ -749,14 +749,14 @@ class IPSTime * * @var array */ - protected static $months_31 = array( 01, 03, 05, 07, 08, 10, 12 ); + protected static $months_31 = array( 1, 3, 5, 7, 8, 10, 12 ); /** * Months with 30 days * * @var array */ - protected static $months_30 = array( 04, 06, 09, 11 ); + protected static $months_30 = array( 4, 6, 9, 11 ); /** * time_class::dmy_format() diff --git a/upload/admin/sources/base/darkLAE.php b/upload/admin/sources/base/darkLAE.php deleted file mode 100644 index ac3588dd..00000000 --- a/upload/admin/sources/base/darkLAE.php +++ /dev/null @@ -1,172 +0,0 @@ - - * Invision Power Services / IPBmafia.Ru - * IP.Board v3.4.2 / darkLicenseActivationEmulator 1.1 - * License emulator - *
    - * - * @author $Author: _Dark_ $ - * @copyright (c) 2012 IPBmafia.Ru - * @package IP.Board - * @link http://www.ipbmafia.ru - * @version 1.1 - * - */ -class darkLAE { - - public static $settings = array( - /* - * if TRUE IP.Board copyright will be displayed in page footer - * if FALSE IP.Board copyright will be hidden - * если TRUE копирайт IP.Board будет отображен в футере страницы - * если FALSE копирайт IP.Board будет скрыт - */ - 'ipboard_copyright_showing' => TRUE, - ); - - private static $licenseKey = 'darkLAE 1.1 (_Dark_, IPBmafia.Ru)'; - - public static function activateLicense() { - $response = array( - 'result' => 'ok' - ); - return json_encode($response); - } - - public static function getLicenseKey() { - return self::$licenseKey; - } - - public static function getLicenseData() { - return array( - 'key' => array( - '_expires' => '9999999998', - 'status_icon' => 'medal.png', - 'status' => 'Ok', - 'name' => 'Master License Key', - 'msg' => 'Activated by darkLAE', - 'expires' => '9999999999' - ), - 'addons' => array( - array( - 'expires' => '', - '_expires' => 0, - 'status_icon' => 'accept.png', - 'status' => 'Ok', - 'name' => 'IP.Board', - 'msg' => '' - ), - array( - 'expires' => '', - '_expires' => 0, - 'status_icon' => 'accept.png', - 'status' => 'Ok', - 'name' => 'IP.Nexus', - 'msg' => '' - ), - array( - 'expires' => '', - '_expires' => 0, - 'status_icon' => 'accept.png', - 'status' => 'Ok', - 'name' => 'IP.Content', - 'msg' => '' - ), - array( - 'expires' => '', - '_expires' => 0, - 'status_icon' => 'accept.png', - 'status' => 'Ok', - 'name' => 'IP.Gallery', - 'msg' => '' - ), - array( - 'expires' => '', - '_expires' => 0, - 'status_icon' => 'accept.png', - 'status' => 'Ok', - 'name' => 'IP.Blog', - 'msg' => '' - ), - array( - 'expires' => '', - '_expires' => 0, - 'status_icon' => 'accept.png', - 'status' => 'Ok', - 'name' => 'IP.Downloads', - 'msg' => '' - ), - array( - 'expires' => '', - '_expires' => 0, - 'status_icon' => 'cross.png', - 'status' => 'Inactive', - 'name' => 'IP.Chat', - 'msg' => "Unfortunately, you can't use IP.Chat with nulled version." - ), - array( - 'expires' => '', - '_expires' => 0, - 'status_icon' => 'accept.png', - 'status' => 'Ok', - 'name' => 'Copyright Removal', - 'msg' => 'If you want disable copyright edit file /admin/sources/base/darkLAE.php at line 20.' - ) - ), - 'ipbMain' => array( - array( - 'expires' => '', - '_expires' => 0, - 'status_icon' => 'information.png', - 'status' => 'Inactive', - 'name' => 'Standard Support', - 'msg' => "You can't get support from the IPS Client Area, but you can ask for help at IPBmafia.Ru" - ), - array( - 'expires' => '', - '_expires' => 0, - 'status_icon' => 'information.png', - 'status' => 'Inactive', - 'name' => 'Download Access', - 'msg' => "You can't download new versions from the IPS Client Area, but you can download nulled versions at IPBmafia.Ru" - ), - array( - 'expires' => '', - '_expires' => 0, - 'status_icon' => 'cross.png', - 'status' => 'Inactive', - 'name' => 'Spam Monitoring Service', - 'msg' => "Unfortunately, you can't use Spam Monitoring Service with nulled version." - ), - array( - 'expires' => '', - '_expires' => 0, - 'status_icon' => 'cross.png', - 'status' => 'Inactive', - 'name' => 'Mobile Push Notifications', - 'msg' => "Unfortunately, you can't use Mobile Push Notifications with nulled version." - ), - array( - 'expires' => '', - '_expires' => 0, - 'status_icon' => 'accept.png', - 'status' => 'Ok', - 'name' => 'Visual Skin Editor', - 'msg' => '' - ) - ), - 'skinGen' => 1, - 'iphoneNotifications' => 0, - 'cr' => (int) !self::$settings['ipboard_copyright_showing'] - ); - } - - public static function getVisualSkinEditorJsonData() { - $json = <<<_Dark_ - var IPS_SKIN_GEN_DATA = {"skinGroups":{"app_calendar":["App: Calendar",["app_calendar_td_selected","app_calendar_td_hover","app_calendar_td_blank","app_calendar_td_today"]],"app_gallery":["App: Gallery",["albumDetailTable_td"]],"global":["Global Styles",["body","a","content","desc","desclighter"]],"tables":["Table Content",["row1","row2","unread","unreadalt","tableheader","tableheader_a","ipb_table"]],"other":["Other Styles",["ipsbox","Bar Header","postblock","NoMessages","fieldsetSubmit","general_box","general_box_h3","ipsboxcontainer","maintitle","sideMenuActive","ipsVerticalTabbed_tabs_li","ipsVerticalTabbed_tabs_li_a","ipsVerticalTabbed_tabs_li_a_hover","ipsVerticalTabbed_tabs_li_active","ipsfilterbar_item","ipsfilterbar_active"]],"buttons":["Button Styles",["but_submit","but_submit_alt","but_topic","but_secondary"]],"header":["Header Elements",["registerLink","header","primarynav","primarynav_inactive","primarynav_active","searchbutton"]],"pagination":["Pagination",["paginationBackForward","paginationBackForwardHover","paginationBackActive"]],"sidebar":["Sidebar",["ipsSideBlock","ipsSideBlock_h3"]],"profiles":["Profile Page",["statusupdate"]],"app_blog":["App: Blog",["entry_header"]]},"colorizeGroups":{"base":["app_calendar_td_selected","app_calendar_td_hover","app_calendar_td_blank","app_calendar_td_today","albumDetailTable_td","body","content","row1","row2","unread","unreadalt","ipsbox","Bar Header","tableheader","tableheader_a","postblock","NoMessages","but_submit_alt","fieldsetSubmit","registerLink","header","primarynav","primarynav_inactive","primarynav_active","general_box","general_box_h3","ipsboxcontainer","maintitle","desc","desclighter","ipb_table","ipsVerticalTabbed_tabs_li","ipsVerticalTabbed_tabs_li_a","ipsVerticalTabbed_tabs_li_a_hover","ipsVerticalTabbed_tabs_li_active","ipsfilterbar_item","ipsfilterbar_active","but_secondary","paginationBackForward","ipsSideBlock","ipsSideBlock_h3","statusupdate","entry_header"],"text":["a"],"secondary":["but_submit","searchbutton","but_topic"],"tertiary":["sideMenuActive","paginationBackForwardHover","paginationBackActive"]},"classes":{"app_calendar_td_selected":["#calendar_table td.selected","Calendar Selected Cell","Used for selected cells in the monthly calendar",{"background":["#E2E9F0",""],"shadow":["#E2E9F0",""]}],"app_calendar_td_hover":["#calendar_table td.normal:hover","Calendar Cell Hover","Used for hovering over cells in the monthly calendar",{"background":["#EDF1F5",""]}],"app_calendar_td_blank":["#calendar_table td.blank","Calendar Blank Cell","Used for blank cells in the monthly calendar",{"background":["#dbe2e8",""],"border":["#dbe2e8",""]}],"app_calendar_td_today":["#calendar_table td.today","Calendar Today Cell","Used for todays cell in the monthly calendar",{"background":["#f1f6ec",""],"border":["#6f8f52",""],"color":["#6f8f52",""]}],"albumDetailTable_td":["#albumDetailTable td","Album Detail Table","Thick border for detail table",{"border":["#ebf0f3",""]}],"body":["html, body","Body","The page background",{"background":["#d8dde8",""],"color":["#5a5a5a",""]}],"a":["a","Links","Basic links",{"color":["#225985",""]}],"content":["#content","Main Content Area","The area that contains all page content",{"background":["#fff",""]}],"row1":[".row1, .post_block.row1","Table Row 1","Generic table row color 1",{"background":["#fff",""]}],"row2":[".row2, .post_block.row2","Table Row 2","Generic table row color 2",{"background":["#f1f6f9",""]}],"unread":[".unread","Unread Row","Unread row colour",{"background":["#f7fbfc",""]}],"unreadalt":[".unread .altrow, .unread.altrow","Unread Row (Alt)","Darker version of unread row, used to highlight certain table columns",{"background":["#E2E9F0",""]}],"ipsbox":[".ipsBox","Content Box","Used to wrap most content sections",{"background":["#ebf0f3",""]}],"Bar Header":[".bar","Bar Header","Used in post forms, etc",{"background":["#eff4f7",""]}],"tableheader":[".header","Table Header","Used for table headings",{"background":["#b6c7db",""],"color":["#1d3652",""]}],"tableheader_a":["body .ipb_table .header a,\tbody .topic_options a","Table Header Link","Used for links in table headings",{"color":["#1d3652",""]}],"postblock":[".post_block","Post Block","An individual post wrapper",{"background":["#fff",""],"border":["#D6E2EB",""]}],"NoMessages":[".no_messages","No Messages Box","Box for 'no data' type messages",{"background":["#f6f8fa",""],"border":false}],"but_submit":[".input_submit","Submit Button","The primary button that submits forms",{"background":["#212121",""],"border":["#5c5c5c",""],"color":["#fff",""],"boxshadow":["#5c5c5c"," inset 0 1px 0 0 "]}],"but_submit_alt":[".input_submit.alt","Alternate Submit Button","Secondary buttons for forms",{"background":["#e2e9f0",""],"border":["#dae2ea",""],"color":["#464646",""],"boxshadow":["#eff3f8"," inset 0 1px 0 0 "]}],"fieldsetSubmit":["body#ipboard_body fieldset.submit,body#ipboard_body p.submit","Submit\/Button Strip","Used in forms where the submit buttons are located",{"background":["#d1ddea",""]}],"registerLink":["#user_navigation #register_link","Create Account Link","The create accoun tbutton",{"background":["#7ba60d",""],"border":["#7ba60d",""],"color":["#fff",""],"boxshadow":false}],"header":["#branding","Header Bar","Bar containing logo, global search etc.",{"background":["#0f3854",""],"border":["#1b3759",""]}],"primarynav":["#primary_nav","Primary Nav Bar","Primary navigation bar (with app tabs)",{"background":["#204066",""]}],"primarynav_inactive":["#primary_nav a","Inactive App Tab","An inactive tab in the Primary Nav bar",{"background":["#1c3b5f",""],"color":["#c5d5e2",""]}],"primarynav_active":["#primary_nav .active a","Active App Tab","An active tab in the Primary Nav bar",{"background":["#fff",""],"color":["#0b5794",""]}],"searchbutton":["#search .submit_input","Search Button","The submit button for the global search bar",{"background":["#7ba60d",""],"border":["#7ba60d",""]}],"general_box":[".general_box","General Box Container","Used to contain contents of general boxes such as used on profile page",{"background":["#fcfcfc",""]}],"general_box_h3":[".general_box h3","General Box Container H3","Used to contain contents of general boxes title",{"background":["#DBE2EC",""],"color":["#204066",""]}],"ipsboxcontainer":[".ipsBox_container","Content Box Container","Used to contain contents of Content Box",{"background":["#fff",""],"border":["#dbe4ef",""]}],"maintitle":[".maintitle","Main Title","Bar used for block titles, filter bars etc.",{"background":["#2c5687",""],"color":["#fff",""],"border":["#528cbc",""],"boxshadow":["#528cbc"," inset 0px 1px 0 "]}],"desc":[".desc, .desc.blend_links a, p.posted_info","Description text","Used for small text throughout",{"color":["#777777",""]}],"desclighter":[".desc.lighter, .desc.lighter.blend_links a","Description text (lighter)","Used for small lighter text throughout",{"color":["#a4a4a4",""]}],"ipb_table":["table.ipb_table td","Tabular Data Rows","Used where there is tabular data",{"border":["#f3f3f3",""]}],"sideMenuActive":[".ipsSideMenu ul li.active a","Side Menu Active","A selected entry in a side menu",{"background":["#af286d",""],"color":["#fff",""]}],"ipsVerticalTabbed_tabs_li":[".ipsVerticalTabbed_tabs li","Vertical Tab","Used on profile page and other UserCP when veritcal tabs are needed",{"background":["#f6f8fb",""],"color":["#808080",""],"border":["#DBE4EF",""]}],"ipsVerticalTabbed_tabs_li_a":[".ipsVerticalTabbed_tabs li a","Vertical Tab Link","Link on a vertical tab",{"color":["#8d8d8d",""]}],"ipsVerticalTabbed_tabs_li_a_hover":[".ipsVerticalTabbed_tabs li a:hover","Vertical Tab Link Hover","Hover over a vertical tab",{"background":["#eaeff5",""],"color":["#808080",""]}],"ipsVerticalTabbed_tabs_li_active":[".ipsVerticalTabbed_tabs li.active a","Vertical Tab Active","An active tab",{"background":["#fff",""],"color":["#353535",""],"border":["#fff",""]}],"ipsfilterbar_item":[".ipsFilterbar li a","Filter Bar Item","Used for tabs in a filter bar",{"color":["#fff",""]}],"ipsfilterbar_active":[".ipsFilterbar li.active a","Filter Bar Active Item","Used for active tabs in a filter bar",{"background":["#244156",""],"color":["#fff",""]}],"but_topic":[".topic_buttons li.important a, .topic_buttons li.important span, .ipsButton .important,.topic_buttons li a, .topic_buttons li span, .ipsButton","Primary Button","Button used for main actions, such as New Topic",{"background":["#212121",""],"border":["#212121",""],"color":["#fff",""],"boxshadow":["#5c5c5c"," inset 0 1px 0 0 "]}],"but_secondary":[".ipsButton_secondary","Secondary Button","Secondary button, used normally for Follow actions",{"background":["#f6f6f6",""],"border":["#dbdbdb",""],"color":["#616161",""]}],"paginationBackForward":[".pagination .back a,.pagination .forward a","Pagination Next\/Foward","Next, back, forward buttons",{"background":["#eaeaea",""],"color":["#5a5a5a",""]}],"paginationBackForwardHover":[".pagination .back a:hover,\t.pagination .forward a:hover","Pagination Next\/Foward Hover","Next, back, forward buttons when hovered",{"background":["#af286d",""],"color":["#fff",""]}],"paginationBackActive":[".pagination .pages li.active","Pagination Page Active","Selected page",{"background":["#7BA60D",""],"color":["#fff",""]}],"ipsSideBlock":[".ipsSideBlock","Sidebar Block","Sidebar block background color",{"background":["#F7FBFC",""]}],"ipsSideBlock_h3":[".ipsSideBlock h3","Sidebar Block Header","Sidebar block Header",{"background":["#DBE2EC",""],"color":["#204066",""]}],"statusupdate":[".status_update","Status Update Block","Status update background",{"background":["#71a5c9",""],"color":["#fff",""]}],"entry_header":[".entry.featured .entry_header, .entry.featured .entry_footer","Blog Entry Header\/Footer\/Featured","Header for blog entry",{"background":["#f5faf7",""]}]}} -_Dark_; - return $json; - } -} -?> \ No newline at end of file diff --git a/upload/admin/sources/base/ipsController.php b/upload/admin/sources/base/ipsController.php index ad46f50b..4aec1d52 100644 --- a/upload/admin/sources/base/ipsController.php +++ b/upload/admin/sources/base/ipsController.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Primary controller
      * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/base/ipsMember.php b/upload/admin/sources/base/ipsMember.php index 8fcc5099..04eff3d2 100644 --- a/upload/admin/sources/base/ipsMember.php +++ b/upload/admin/sources/base/ipsMember.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Static Member Class for IP.Board 3
      *
      * Last Updated: $Date: 2015-01-06 14:58:47 -0500 (Tue, 06 Jan 2015) $
    diff --git a/upload/admin/sources/base/ipsMobileApp.php b/upload/admin/sources/base/ipsMobileApp.php
    index 45551cd0..aef34005 100644
    --- a/upload/admin/sources/base/ipsMobileApp.php
    +++ b/upload/admin/sources/base/ipsMobileApp.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Mobile app methods
      * Last Updated: $LastChangedDate: 2012-05-21 07:52:30 -0400 (Mon, 21 May 2012) $
      * 
    diff --git a/upload/admin/sources/base/ipsRegistry.php b/upload/admin/sources/base/ipsRegistry.php index 5efc1ec3..b2c08e80 100644 --- a/upload/admin/sources/base/ipsRegistry.php +++ b/upload/admin/sources/base/ipsRegistry.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * ipsRegistry:: Registry file controlls handling of objects needed throughout IPB
      * Last Updated: $Date: 2015-03-09 15:48:19 -0400 (Mon, 09 Mar 2015) $
      * 
    @@ -1546,7 +1546,7 @@ class ipsRegistry if ( self::$_seoTemplates['__data__']['varBlock'] != '/page__' && $uri && strstr( $uri, '/page__' ) ) { preg_match( '#(.*)(page__.*)$#', $uri, $matches ); - + $url = $matches[1]; $query = $matches[2]; $newQuery = '?'; @@ -1557,7 +1557,7 @@ class ipsRegistry { $newQuery .= ( $i % 2 == 0 ? '&' : '=' ) . $data[$i]; } - + /* Class output not created here */ header( "HTTP/1.1 301 Moved Permanently" ); header( "Location: " . $_t['scheme'] . '://' . $_t['host'] . $url . $newQuery ); @@ -1566,7 +1566,6 @@ class ipsRegistry } } - if ( is_array( $data['in']['matches'] ) ) { foreach( $data['in']['matches'] as $_replace ) diff --git a/upload/admin/sources/classes/admin/bookmarks.php b/upload/admin/sources/classes/admin/bookmarks.php index 0bd6df49..55773af2 100644 --- a/upload/admin/sources/classes/admin/bookmarks.php +++ b/upload/admin/sources/classes/admin/bookmarks.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Admin Bookmarks Model
      * Last Updated: $Date: 2012-05-10 21:10:13 +0100 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/classes/ads.php b/upload/admin/sources/classes/ads.php index 9f980eea..5abf25e2 100644 --- a/upload/admin/sources/classes/ads.php +++ b/upload/admin/sources/classes/ads.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Advertisements
      * 
    * diff --git a/upload/admin/sources/classes/archive/reader.php b/upload/admin/sources/classes/archive/reader.php index 53d8413b..9b4338f2 100644 --- a/upload/admin/sources/classes/archive/reader.php +++ b/upload/admin/sources/classes/archive/reader.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Archive: Reader
      * By Matt Mecham
      * 
    diff --git a/upload/admin/sources/classes/archive/reader/sql.php b/upload/admin/sources/classes/archive/reader/sql.php index 14d1e5c5..5128d04d 100644 --- a/upload/admin/sources/classes/archive/reader/sql.php +++ b/upload/admin/sources/classes/archive/reader/sql.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Archive: Writer
      * By Matt Mecham
      * 
    diff --git a/upload/admin/sources/classes/archive/restore.php b/upload/admin/sources/classes/archive/restore.php index d3cb72b2..8225ef71 100644 --- a/upload/admin/sources/classes/archive/restore.php +++ b/upload/admin/sources/classes/archive/restore.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Archive: Reader
      * By Matt Mecham
      * 
    diff --git a/upload/admin/sources/classes/archive/restore/sql.php b/upload/admin/sources/classes/archive/restore/sql.php index 1f48225d..416d5ddc 100644 --- a/upload/admin/sources/classes/archive/restore/sql.php +++ b/upload/admin/sources/classes/archive/restore/sql.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Archive: Restore
      * By Matt Mecham
      * 
    diff --git a/upload/admin/sources/classes/archive/writer.php b/upload/admin/sources/classes/archive/writer.php index f4006f80..acc01369 100644 --- a/upload/admin/sources/classes/archive/writer.php +++ b/upload/admin/sources/classes/archive/writer.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Archive: Writer
      * By Matt Mecham
      * 
    diff --git a/upload/admin/sources/classes/archive/writer/sql.php b/upload/admin/sources/classes/archive/writer/sql.php index 3396ad83..5b74f90e 100644 --- a/upload/admin/sources/classes/archive/writer/sql.php +++ b/upload/admin/sources/classes/archive/writer/sql.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Archive: Writer
      * By Matt Mecham
      * 
    diff --git a/upload/admin/sources/classes/backup.php b/upload/admin/sources/classes/backup.php index 84d51580..b09c74db 100644 --- a/upload/admin/sources/classes/backup.php +++ b/upload/admin/sources/classes/backup.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Back Up Model
      * Last Updated: $Date: 2012-05-10 21:10:13 +0100 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/classes/backup/db.php b/upload/admin/sources/classes/backup/db.php index dc7ca79a..e02bf87a 100644 --- a/upload/admin/sources/classes/backup/db.php +++ b/upload/admin/sources/classes/backup/db.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Back Up Model
      * Last Updated: $Date: 2012-05-10 21:10:13 +0100 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/classes/bbcode/core.php b/upload/admin/sources/classes/bbcode/core.php index 099fa099..c411f8c4 100644 --- a/upload/admin/sources/classes/bbcode/core.php +++ b/upload/admin/sources/classes/bbcode/core.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * BBCode parsing core - common methods
      * Last Updated: $Date: 2014-12-31 17:46:06 -0500 (Wed, 31 Dec 2014) $
      * 
    diff --git a/upload/admin/sources/classes/bbcode/custom/ccs.php b/upload/admin/sources/classes/bbcode/custom/ccs.php index 36d9d84d..33ecddf8 100644 --- a/upload/admin/sources/classes/bbcode/custom/ccs.php +++ b/upload/admin/sources/classes/bbcode/custom/ccs.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * IP.Content custom bbcode
      * Last Updated: $Date: 2012-06-01 13:11:08 -0400 (Fri, 01 Jun 2012) $
      * 
    diff --git a/upload/admin/sources/classes/bbcode/custom/defaults.php b/upload/admin/sources/classes/bbcode/custom/defaults.php index a05df581..1aa7c86c 100644 --- a/upload/admin/sources/classes/bbcode/custom/defaults.php +++ b/upload/admin/sources/classes/bbcode/custom/defaults.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Custom bbcode plugin interfaces
      * Last Updated: $Date: 2013-10-21 09:41:15 -0400 (Mon, 21 Oct 2013) $
      * 
    @@ -53,7 +53,7 @@ interface bbcodePlugin /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * BBCode parser: default custom bbcodes: img, quote, list, size, member, media, url, snapback
      * Last Updated: $Date: 2013-10-21 09:41:15 -0400 (Mon, 21 Oct 2013) $
      * 
    diff --git a/upload/admin/sources/classes/bbcode/legacy.php b/upload/admin/sources/classes/bbcode/legacy.php index d19b3a32..f16d39c6 100644 --- a/upload/admin/sources/classes/bbcode/legacy.php +++ b/upload/admin/sources/classes/bbcode/legacy.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * BBCode parsing core - legacy routine
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/classes/cache/simple.php b/upload/admin/sources/classes/cache/simple.php index 6e004f18..d2631e51 100644 --- a/upload/admin/sources/classes/cache/simple.php +++ b/upload/admin/sources/classes/cache/simple.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Simple caching class
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/classes/class_admin_functions.php b/upload/admin/sources/classes/class_admin_functions.php index 99c442c0..b30e7b3b 100644 --- a/upload/admin/sources/classes/class_admin_functions.php +++ b/upload/admin/sources/classes/class_admin_functions.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Control Panel Functions
      * Last Updated: $Date: 2012-11-21 14:26:15 -0500 (Wed, 21 Nov 2012) $
      * 
    diff --git a/upload/admin/sources/classes/class_localization.php b/upload/admin/sources/classes/class_localization.php index 42e55f08..536cb6b8 100644 --- a/upload/admin/sources/classes/class_localization.php +++ b/upload/admin/sources/classes/class_localization.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Localization Class.
      *
      * Used for handling language text, money formatting, etc.
    diff --git a/upload/admin/sources/classes/class_permissions.php b/upload/admin/sources/classes/class_permissions.php
    index 8d4e1b70..a5721a3d 100644
    --- a/upload/admin/sources/classes/class_permissions.php
    +++ b/upload/admin/sources/classes/class_permissions.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * ACP Restrictions
      * Last Updated: $Date: 2013-01-22 16:10:36 -0500 (Tue, 22 Jan 2013) $
      * 
    diff --git a/upload/admin/sources/classes/class_public_permissions.php b/upload/admin/sources/classes/class_public_permissions.php index 215628ee..d5803ea9 100644 --- a/upload/admin/sources/classes/class_public_permissions.php +++ b/upload/admin/sources/classes/class_public_permissions.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Manages public permissions
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/classes/class_reputation_cache.php b/upload/admin/sources/classes/class_reputation_cache.php index da0b92e3..7ef4c1f8 100644 --- a/upload/admin/sources/classes/class_reputation_cache.php +++ b/upload/admin/sources/classes/class_reputation_cache.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Facilitates reputation plugins
      * Last Updated: $Date: 2014-11-11 15:53:26 -0500 (Tue, 11 Nov 2014) $
      * 
    diff --git a/upload/admin/sources/classes/class_taskmanager.php b/upload/admin/sources/classes/class_taskmanager.php index 11280f7c..2cd4551b 100644 --- a/upload/admin/sources/classes/class_taskmanager.php +++ b/upload/admin/sources/classes/class_taskmanager.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Task Manager Library
      * Last Updated: $Date: 2012-09-18 10:15:15 -0400 (Tue, 18 Sep 2012) $
      * 
    diff --git a/upload/admin/sources/classes/editor/class_editor.php b/upload/admin/sources/classes/editor/class_editor.php index d6e6995d..bb227a8e 100644 --- a/upload/admin/sources/classes/editor/class_editor.php +++ b/upload/admin/sources/classes/editor/class_editor.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Editor Library: Core Class
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/classes/editor/class_editor_rte.php b/upload/admin/sources/classes/editor/class_editor_rte.php index 8845929a..cb2a16a5 100644 --- a/upload/admin/sources/classes/editor/class_editor_rte.php +++ b/upload/admin/sources/classes/editor/class_editor_rte.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Editor Library: RTE (WYSIWYG) Class
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/classes/editor/class_editor_std.php b/upload/admin/sources/classes/editor/class_editor_std.php index a16dd273..22be52d1 100644 --- a/upload/admin/sources/classes/editor/class_editor_std.php +++ b/upload/admin/sources/classes/editor/class_editor_std.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Editor Library: Standard Class
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/classes/editor/composite.php b/upload/admin/sources/classes/editor/composite.php index b6df1a56..86fd22ed 100644 --- a/upload/admin/sources/classes/editor/composite.php +++ b/upload/admin/sources/classes/editor/composite.php @@ -3,18 +3,18 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Editor Library: RTE (WYSIWYG) Class
    - * Last Updated: $Date: 2014-10-13 15:22:47 -0400 (Mon, 13 Oct 2014) $
    + * Last Updated: $Date: 2015-08-03 11:51:51 -0400 (Mon, 03 Aug 2015) $
      * 
    * - * @author $Author: rashbrook $ + * @author $Author: stuarts $ * @copyright (c) 2001 - 2009 Invision Power Services, Inc. * @license http://www.invisionpower.com/company/standards.php#license * @package IP.Board * @link http://www.invisionpower.com * @since 9th March 2005 11:03 - * @version $Revision: 12540 $ + * @version $Revision: 12664 $ */ if ( ! defined( 'IN_IPB' ) ) @@ -798,7 +798,7 @@ class classes_editor_composite } /* Mobile skin / app? */ - if ( $this->_canWeRte() !== true || $this->registry->output->getAsMobileSkin() || $_REQUEST['noCKEditor'] ) + if ( $this->_canWeRte() !== true || $this->registry->output->getAsMobileSkin() || $_REQUEST['noCKEditor'] || $this->getRteEnabled() !== TRUE ) { /* Some areas of IPB add quotes as HTML so turn it into BBCode so fromPlainTextArea can convert it back instead of htmlizing the < > chars */ if ( stristr( $content, ' * Invision Power Services - * IP.Board v3.4.8 + * IP.Board v3.4.9 * Twitter Connect Library * Created by Matt Mecham * Last Updated: $Date: 2014-11-11 16:19:43 -0500 (Tue, 11 Nov 2014) $ diff --git a/upload/admin/sources/classes/incomingEmail/incomingEmail.php b/upload/admin/sources/classes/incomingEmail/incomingEmail.php index bccff93e..cf999708 100644 --- a/upload/admin/sources/classes/incomingEmail/incomingEmail.php +++ b/upload/admin/sources/classes/incomingEmail/incomingEmail.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Parse Incoming Emails
      * Last Updated: $Date: 2015-04-02 13:29:54 -0400 (Thu, 02 Apr 2015) $
      * 
    diff --git a/upload/admin/sources/classes/itemmarking/classItemMarking.php b/upload/admin/sources/classes/itemmarking/classItemMarking.php index e69d1994..182bd63e 100644 --- a/upload/admin/sources/classes/itemmarking/classItemMarking.php +++ b/upload/admin/sources/classes/itemmarking/classItemMarking.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Item Marking
      * Owner: Matt "Oh Lord, why did I get assigned this?" Mecham
      * Last Updated: $Date: 2012-11-06 15:14:35 -0500 (Tue, 06 Nov 2012) $
    diff --git a/upload/admin/sources/classes/like/composite.php b/upload/admin/sources/classes/like/composite.php
    index b5149aa1..b7aadd2e 100644
    --- a/upload/admin/sources/classes/like/composite.php
    +++ b/upload/admin/sources/classes/like/composite.php
    @@ -7,7 +7,7 @@
      * $Author: stuarts $
      * @since		11th October 2010
      * $LastChangedDate: 2014-10-12 16:26:57 -0400 (Sun, 12 Oct 2014) $
    - * @version		v3.4.8
    + * @version		v3.4.9
      * $Revision: 12538 $
      * 
      * Example Usage:
    diff --git a/upload/admin/sources/classes/mapping/bootstrap.php b/upload/admin/sources/classes/mapping/bootstrap.php
    index 754431d3..3794eb8e 100644
    --- a/upload/admin/sources/classes/mapping/bootstrap.php
    +++ b/upload/admin/sources/classes/mapping/bootstrap.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Generic Mapping Class
      * Owner: Matt Mecham
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
    diff --git a/upload/admin/sources/classes/mapping/engines/bing.php b/upload/admin/sources/classes/mapping/engines/bing.php
    index 5a6acee3..1a4b6b4d 100644
    --- a/upload/admin/sources/classes/mapping/engines/bing.php
    +++ b/upload/admin/sources/classes/mapping/engines/bing.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Bing mapping class
      * Owner: Matt Mecham
      * Last Updated: $Date: 2013-04-30 21:56:42 -0400 (Tue, 30 Apr 2013) $
    diff --git a/upload/admin/sources/classes/mapping/engines/google.php b/upload/admin/sources/classes/mapping/engines/google.php
    index e37c3dbd..6e52cd04 100644
    --- a/upload/admin/sources/classes/mapping/engines/google.php
    +++ b/upload/admin/sources/classes/mapping/engines/google.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Bing mapping class
      * Owner: Matt Mecham
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
    diff --git a/upload/admin/sources/classes/member/memberFunctions.php b/upload/admin/sources/classes/member/memberFunctions.php
    index 78842dce..e68c679b 100644
    --- a/upload/admin/sources/classes/member/memberFunctions.php
    +++ b/upload/admin/sources/classes/member/memberFunctions.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Extended Member Functions. Disparate functions that are not required
      * on every page view.
      * Last Updated: $Date: 2013-04-19 07:51:40 -0400 (Fri, 19 Apr 2013) $
    diff --git a/upload/admin/sources/classes/member/notifications.php b/upload/admin/sources/classes/member/notifications.php
    index 1f7972b8..71e196aa 100644
    --- a/upload/admin/sources/classes/member/notifications.php
    +++ b/upload/admin/sources/classes/member/notifications.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Notification library
      * Last Updated: $Date: 2014-12-31 17:46:06 -0500 (Wed, 31 Dec 2014) $
      * 
    diff --git a/upload/admin/sources/classes/member/photo.php b/upload/admin/sources/classes/member/photo.php index 3b31bc0b..ccbd6411 100644 --- a/upload/admin/sources/classes/member/photo.php +++ b/upload/admin/sources/classes/member/photo.php @@ -2,7 +2,7 @@ /** *
      * Photo routines
    - * Last Updated: $Date: 2015-05-01 09:00:27 -0400 (Fri, 01 May 2015) $
    + * Last Updated: $Date: 2015-05-29 18:05:48 -0400 (Fri, 29 May 2015) $
      * 
    * * @author $author$ @@ -11,7 +11,7 @@ * @package IP.Board * @author MattMecham * @link http://www.invisionpower.com - * @version $Rev: 12632 $ + * @version $Rev: 12644 $ */ class classes_member_photo @@ -1052,7 +1052,8 @@ class classes_member_photo $data['custom']['tag'] = ( $member['pp_photo_type'] != 'custom' ) ? IPSMember::buildNoPhoto( $member, 'thumb', false, true ) : ""; /* Set up Gravatar */ - $data['gravatar']['tag'] = ""; + $gravatarUrl = $this->registry->output->isHTTPS ? 'https://secure.gravatar.com' : 'http://www.gravatar.com'; + $data['gravatar']['tag'] = ""; /* Twitter linked? */ if ( IPSLib::twitter_enabled() && $member['twitter_token'] && $member['twitter_secret'] ) diff --git a/upload/admin/sources/classes/mobile/iosImages.php b/upload/admin/sources/classes/mobile/iosImages.php index 014676aa..a851b14a 100644 --- a/upload/admin/sources/classes/mobile/iosImages.php +++ b/upload/admin/sources/classes/mobile/iosImages.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Mobile iOS App image class
      * Owner: Matt Mecham
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
    diff --git a/upload/admin/sources/classes/navigation/build.php b/upload/admin/sources/classes/navigation/build.php
    index dd3cebbd..455ffaa9 100644
    --- a/upload/admin/sources/classes/navigation/build.php
    +++ b/upload/admin/sources/classes/navigation/build.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Navigation Builder
      * Owner: Matt Mecham
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
    diff --git a/upload/admin/sources/classes/output/adminOutput.php b/upload/admin/sources/classes/output/adminOutput.php
    index e6401f37..7b1439aa 100644
    --- a/upload/admin/sources/classes/output/adminOutput.php
    +++ b/upload/admin/sources/classes/output/adminOutput.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Admin Output Library
      * Last Updated: $LastChangedDate: 2015-05-11 04:44:42 -0400 (Mon, 11 May 2015) $
      * 
    diff --git a/upload/admin/sources/classes/output/formats/coreOutput.php b/upload/admin/sources/classes/output/formats/coreOutput.php index 00e6dfc8..c78188c8 100644 --- a/upload/admin/sources/classes/output/formats/coreOutput.php +++ b/upload/admin/sources/classes/output/formats/coreOutput.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Ouput format: HTML
      * (Matt Mecham)
      * Last Updated: $Date: 2013-03-12 16:14:42 -0400 (Tue, 12 Mar 2013) $
    diff --git a/upload/admin/sources/classes/output/formats/html/conf.php b/upload/admin/sources/classes/output/formats/html/conf.php
    index a99992ad..5a633cbe 100644
    --- a/upload/admin/sources/classes/output/formats/html/conf.php
    +++ b/upload/admin/sources/classes/output/formats/html/conf.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Ouput format: HTML
      * (Matt Mecham)
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
    diff --git a/upload/admin/sources/classes/output/formats/html/htmlOutput.php b/upload/admin/sources/classes/output/formats/html/htmlOutput.php
    index 25bde5e3..0d2cac7a 100644
    --- a/upload/admin/sources/classes/output/formats/html/htmlOutput.php
    +++ b/upload/admin/sources/classes/output/formats/html/htmlOutput.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Ouput format: HTML
      * (Matt Mecham)
      * Last Updated: $Date: 2014-10-01 13:50:54 -0400 (Wed, 01 Oct 2014) $
    @@ -18,7 +18,7 @@
      * @version		$Revision: 12522 $
      *
      */
    -require_once( IPS_ROOT_PATH . 'sources/base/darkLAE.php' );/*noLibHook*/
    +
     class htmlOutput extends coreOutput implements interface_output 
     {
     	/**
    @@ -622,7 +622,7 @@ class htmlOutput extends coreOutput implements interface_output
             
     		$version = ( $this->settings['ipb_display_version'] AND $this->settings['ipb_display_version'] != 0 ) ? ' ' . IPB_VERSION : '';
     		
    -        if (!darkLAE::$settings['ipboard_copyright_showing'])
    +        if ($this->settings['ipb_copy_number'] && $this->settings['ips_cp_purchase'])
             {
             	/**
             	 * @link	http://community.invisionpower.com/tracker/issue-23750-licensed-to-wont-work-if-copyright-removal-purchased/
    diff --git a/upload/admin/sources/classes/output/formats/xml/conf.php b/upload/admin/sources/classes/output/formats/xml/conf.php
    index 2d4295f0..dd77bd52 100644
    --- a/upload/admin/sources/classes/output/formats/xml/conf.php
    +++ b/upload/admin/sources/classes/output/formats/xml/conf.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Ouput format: XML
      * (Matt Mecham)
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
    diff --git a/upload/admin/sources/classes/output/formats/xml/xmlOutput.php b/upload/admin/sources/classes/output/formats/xml/xmlOutput.php
    index 3f70b825..c3bd147b 100644
    --- a/upload/admin/sources/classes/output/formats/xml/xmlOutput.php
    +++ b/upload/admin/sources/classes/output/formats/xml/xmlOutput.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Ouput format: HTML
      * (Matt Mecham)
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
    diff --git a/upload/admin/sources/classes/output/publicOutput.php b/upload/admin/sources/classes/output/publicOutput.php
    index 1b92a486..c47e6233 100644
    --- a/upload/admin/sources/classes/output/publicOutput.php
    +++ b/upload/admin/sources/classes/output/publicOutput.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Public output methods
      * Last Updated: $Date: 2015-05-11 05:07:45 -0400 (Mon, 11 May 2015) $
      * 
    diff --git a/upload/admin/sources/classes/output/systemTemplates.php b/upload/admin/sources/classes/output/systemTemplates.php index 864ebfc3..4a370cf6 100644 --- a/upload/admin/sources/classes/output/systemTemplates.php +++ b/upload/admin/sources/classes/output/systemTemplates.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * System Templates
      * Last Updated: $Date: 2012-05-10 21:10:13 +0100 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/classes/rss/import.php b/upload/admin/sources/classes/rss/import.php index 9a1bde6d..40590db0 100644 --- a/upload/admin/sources/classes/rss/import.php +++ b/upload/admin/sources/classes/rss/import.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * RSS Import
      * Owner: Matt Mecham
      * Last Updated: $Date: 2013-09-26 22:37:28 -0400 (Thu, 26 Sep 2013) $
    diff --git a/upload/admin/sources/classes/sabre/directory/groups.php b/upload/admin/sources/classes/sabre/directory/groups.php
    index 107b1f3e..390e85e6 100644
    --- a/upload/admin/sources/classes/sabre/directory/groups.php
    +++ b/upload/admin/sources/classes/sabre/directory/groups.php
    @@ -2,7 +2,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Sabre classes by Matt Mecham
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/classes/sabre/directory/templates.php b/upload/admin/sources/classes/sabre/directory/templates.php index 209756b5..29f4be58 100644 --- a/upload/admin/sources/classes/sabre/directory/templates.php +++ b/upload/admin/sources/classes/sabre/directory/templates.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Sabre classes by Matt Mecham
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/classes/sabre/files/templates.php b/upload/admin/sources/classes/sabre/files/templates.php index df8cb21b..bdaf8247 100644 --- a/upload/admin/sources/classes/sabre/files/templates.php +++ b/upload/admin/sources/classes/sabre/files/templates.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Sabre classes by Matt Mecham
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/classes/sabre/lock/nolocks.php b/upload/admin/sources/classes/sabre/lock/nolocks.php index 4aa3ed85..01f030a2 100644 --- a/upload/admin/sources/classes/sabre/lock/nolocks.php +++ b/upload/admin/sources/classes/sabre/lock/nolocks.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Sabre classes by Matt Mecham
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/classes/sabre/root/skins.php b/upload/admin/sources/classes/sabre/root/skins.php index 007bd70a..57714119 100644 --- a/upload/admin/sources/classes/sabre/root/skins.php +++ b/upload/admin/sources/classes/sabre/root/skins.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Sabre classes by Matt Mecham
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/classes/search/controller.php b/upload/admin/sources/classes/search/controller.php index 23e3f348..9ac36567 100644 --- a/upload/admin/sources/classes/search/controller.php +++ b/upload/admin/sources/classes/search/controller.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Global Search
      * Last Updated: $Date: 2012-10-09 12:16:32 -0400 (Tue, 09 Oct 2012) $
      * 
    diff --git a/upload/admin/sources/classes/search/engines/sphinx.php b/upload/admin/sources/classes/search/engines/sphinx.php index 78e73cba..f501ed2f 100644 --- a/upload/admin/sources/classes/search/engines/sphinx.php +++ b/upload/admin/sources/classes/search/engines/sphinx.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Global Search
      * Last Updated: $Date: 2012-12-03 14:03:02 -0500 (Mon, 03 Dec 2012) $
      * 
    diff --git a/upload/admin/sources/classes/search/engines/sql.php b/upload/admin/sources/classes/search/engines/sql.php index c122fe1a..224f00bf 100644 --- a/upload/admin/sources/classes/search/engines/sql.php +++ b/upload/admin/sources/classes/search/engines/sql.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Global Search
      * Last Updated: $Date: 2014-10-30 14:22:29 -0400 (Thu, 30 Oct 2014) $
      * 
    diff --git a/upload/admin/sources/classes/search/format.php b/upload/admin/sources/classes/search/format.php index 9c56fd30..4ecc800c 100644 --- a/upload/admin/sources/classes/search/format.php +++ b/upload/admin/sources/classes/search/format.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Global Search
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/classes/session/adminSessions.php b/upload/admin/sources/classes/session/adminSessions.php index 6e8cafcf..f55b66b3 100644 --- a/upload/admin/sources/classes/session/adminSessions.php +++ b/upload/admin/sources/classes/session/adminSessions.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Admin session handler
      * Last Updated: $Date: 2012-08-21 11:56:40 -0400 (Tue, 21 Aug 2012) $
      * 
    diff --git a/upload/admin/sources/classes/session/api.php b/upload/admin/sources/classes/session/api.php index 870a8b4c..7e257942 100644 --- a/upload/admin/sources/classes/session/api.php +++ b/upload/admin/sources/classes/session/api.php @@ -7,7 +7,7 @@ * $Author: mmecham $ * @since Friday 12th November 2010 16:58 * $LastChangedDate: 2012-08-22 05:05:53 -0400 (Wed, 22 Aug 2012) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 11245 $ */ diff --git a/upload/admin/sources/classes/session/publicSessions.php b/upload/admin/sources/classes/session/publicSessions.php index 5aa8f381..ac70bc99 100644 --- a/upload/admin/sources/classes/session/publicSessions.php +++ b/upload/admin/sources/classes/session/publicSessions.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Public session handler
      * Last Updated: $Date: 2014-10-13 14:32:37 -0400 (Mon, 13 Oct 2014) $
      * 
    diff --git a/upload/admin/sources/classes/session/sso.rename.php b/upload/admin/sources/classes/session/sso.rename.php index cce3beee..e0703516 100644 --- a/upload/admin/sources/classes/session/sso.rename.php +++ b/upload/admin/sources/classes/session/sso.rename.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Sample SSO Class
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/classes/session/ssoMobileAppLogIn.rename.php b/upload/admin/sources/classes/session/ssoMobileAppLogIn.rename.php index 9c22fb93..28498a98 100644 --- a/upload/admin/sources/classes/session/ssoMobileAppLogIn.rename.php +++ b/upload/admin/sources/classes/session/ssoMobileAppLogIn.rename.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Sample Mobile App SSO Class
      * Last Updated: $Date: 2012-05-10 21:10:13 +0100 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/classes/share/links.php b/upload/admin/sources/classes/share/links.php index 76b9692e..8acbee01 100644 --- a/upload/admin/sources/classes/share/links.php +++ b/upload/admin/sources/classes/share/links.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Share links library.
      * Created by Matt Mecham
      * Last Updated: $Date: 2013-05-08 13:48:52 -0400 (Wed, 08 May 2013) $
    diff --git a/upload/admin/sources/classes/share/plugins/blogthis.php b/upload/admin/sources/classes/share/plugins/blogthis.php
    index 1030ca39..b3b5e4f0 100644
    --- a/upload/admin/sources/classes/share/plugins/blogthis.php
    +++ b/upload/admin/sources/classes/share/plugins/blogthis.php
    @@ -2,7 +2,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Blog This plug in for share links library.
      *
      * Created by Mark Wade
    diff --git a/upload/admin/sources/classes/share/plugins/buzz.php b/upload/admin/sources/classes/share/plugins/buzz.php
    index 62005599..dd4504dd 100644
    --- a/upload/admin/sources/classes/share/plugins/buzz.php
    +++ b/upload/admin/sources/classes/share/plugins/buzz.php
    @@ -2,7 +2,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Twitter plug in for share links library.
      * This is just the basic fallback twitter share, the front end has JS to do something more fancy
      *
    diff --git a/upload/admin/sources/classes/share/plugins/delicious.php b/upload/admin/sources/classes/share/plugins/delicious.php
    index 543d45df..fc6ad2bb 100644
    --- a/upload/admin/sources/classes/share/plugins/delicious.php
    +++ b/upload/admin/sources/classes/share/plugins/delicious.php
    @@ -2,7 +2,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Twitter plug in for share links library.
      * This is just the basic fallback twitter share, the front end has JS to do something more fancy
      *
    diff --git a/upload/admin/sources/classes/share/plugins/digg.php b/upload/admin/sources/classes/share/plugins/digg.php
    index 0a889fba..63c7d712 100644
    --- a/upload/admin/sources/classes/share/plugins/digg.php
    +++ b/upload/admin/sources/classes/share/plugins/digg.php
    @@ -2,7 +2,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Twitter plug in for share links library.
      * This is just the basic fallback twitter share, the front end has JS to do something more fancy
      *
    diff --git a/upload/admin/sources/classes/share/plugins/download.php b/upload/admin/sources/classes/share/plugins/download.php
    index 6b188ea4..8c4b621f 100644
    --- a/upload/admin/sources/classes/share/plugins/download.php
    +++ b/upload/admin/sources/classes/share/plugins/download.php
    @@ -2,7 +2,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Twitter plug in for share links library.
      * This is just the basic fallback twitter share, the front end has JS to do something more fancy
      *
    diff --git a/upload/admin/sources/classes/share/plugins/email.php b/upload/admin/sources/classes/share/plugins/email.php
    index 48f12f59..5e45585a 100644
    --- a/upload/admin/sources/classes/share/plugins/email.php
    +++ b/upload/admin/sources/classes/share/plugins/email.php
    @@ -2,7 +2,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Twitter plug in for share links library.
      * This is just the basic fallback twitter share, the front end has JS to do something more fancy
      *
    diff --git a/upload/admin/sources/classes/share/plugins/facebook.php b/upload/admin/sources/classes/share/plugins/facebook.php
    index bd60fe76..3b2b19c8 100644
    --- a/upload/admin/sources/classes/share/plugins/facebook.php
    +++ b/upload/admin/sources/classes/share/plugins/facebook.php
    @@ -2,7 +2,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Twitter plug in for share links library.
      * This is just the basic fallback twitter share, the front end has JS to do something more fancy
      *
    diff --git a/upload/admin/sources/classes/share/plugins/googleplusone.php b/upload/admin/sources/classes/share/plugins/googleplusone.php
    index 7e418375..1cfb307d 100644
    --- a/upload/admin/sources/classes/share/plugins/googleplusone.php
    +++ b/upload/admin/sources/classes/share/plugins/googleplusone.php
    @@ -7,7 +7,7 @@
      * $Author: ips_terabyte $
      * @since		-
      * $LastChangedDate: 2010-10-14 13:11:17 -0400 (Thu, 14 Oct 2010) $
    - * @version		v3.4.8
    + * @version		v3.4.9
      * $Revision: 477 $
      */
     
    diff --git a/upload/admin/sources/classes/share/plugins/print.php b/upload/admin/sources/classes/share/plugins/print.php
    index 04311660..52ec4fb8 100644
    --- a/upload/admin/sources/classes/share/plugins/print.php
    +++ b/upload/admin/sources/classes/share/plugins/print.php
    @@ -2,7 +2,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Twitter plug in for share links library.
      * This is just the basic fallback twitter share, the front end has JS to do something more fancy
      *
    diff --git a/upload/admin/sources/classes/share/plugins/reddit.php b/upload/admin/sources/classes/share/plugins/reddit.php
    index b7008624..f16b4bde 100644
    --- a/upload/admin/sources/classes/share/plugins/reddit.php
    +++ b/upload/admin/sources/classes/share/plugins/reddit.php
    @@ -2,7 +2,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Twitter plug in for share links library.
      * This is just the basic fallback twitter share, the front end has JS to do something more fancy
      *
    diff --git a/upload/admin/sources/classes/share/plugins/stumble.php b/upload/admin/sources/classes/share/plugins/stumble.php
    index b5117d73..aab8ae2b 100644
    --- a/upload/admin/sources/classes/share/plugins/stumble.php
    +++ b/upload/admin/sources/classes/share/plugins/stumble.php
    @@ -2,7 +2,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Twitter plug in for share links library.
      * This is just the basic fallback twitter share, the front end has JS to do something more fancy
      *
    diff --git a/upload/admin/sources/classes/share/plugins/twitter.php b/upload/admin/sources/classes/share/plugins/twitter.php
    index aaac26f6..4574f225 100644
    --- a/upload/admin/sources/classes/share/plugins/twitter.php
    +++ b/upload/admin/sources/classes/share/plugins/twitter.php
    @@ -2,7 +2,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Twitter plug in for share links library.
      * This is just the basic fallback twitter share, the front end has JS to do something more fancy
      *
    diff --git a/upload/admin/sources/classes/skins/skinCaching.php b/upload/admin/sources/classes/skins/skinCaching.php
    index 619aac98..7f676a27 100644
    --- a/upload/admin/sources/classes/skins/skinCaching.php
    +++ b/upload/admin/sources/classes/skins/skinCaching.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Skin Caching Functions
      * Last Updated: $Date: 2013-05-20 16:38:23 -0400 (Mon, 20 May 2013) $
      * 
    diff --git a/upload/admin/sources/classes/skins/skinDifferences.php b/upload/admin/sources/classes/skins/skinDifferences.php index 554d152a..fc66379a 100644 --- a/upload/admin/sources/classes/skins/skinDifferences.php +++ b/upload/admin/sources/classes/skins/skinDifferences.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Skin Functions
      * Last Updated: $Date: 2012-11-30 10:02:12 -0500 (Fri, 30 Nov 2012) $
      * 
    diff --git a/upload/admin/sources/classes/skins/skinFunctions.php b/upload/admin/sources/classes/skins/skinFunctions.php index c593e3ab..64b8a338 100644 --- a/upload/admin/sources/classes/skins/skinFunctions.php +++ b/upload/admin/sources/classes/skins/skinFunctions.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Skin Functions
      * Last Updated: $Date: 2013-05-07 22:02:49 -0400 (Tue, 07 May 2013) $
      * 
    diff --git a/upload/admin/sources/classes/skins/skinGenerator.php b/upload/admin/sources/classes/skins/skinGenerator.php index 42024371..0c3399ee 100644 --- a/upload/admin/sources/classes/skins/skinGenerator.php +++ b/upload/admin/sources/classes/skins/skinGenerator.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Skin Functions
      * Last Updated: $Date: 2011-05-05 12:03:47 +0100 (Thu, 05 May 2011) $
      * 
    @@ -109,7 +109,11 @@ class skinGenerator extends skinCaching */ public function buildLocalJsonCache() { - $json = darkLAE::getVisualSkinEditorJsonData(); + /* Now fetch JSON data from the server and write it */ + require_once( IPS_KERNEL_PATH . 'classFileManagement.php' );/*noLibHook*/ + $files = new classFileManagement(); + + $json = $files->getFileContents( $this->getJsonUrl() ); if ( $json ) { diff --git a/upload/admin/sources/classes/skins/skinImportExport.php b/upload/admin/sources/classes/skins/skinImportExport.php index 56c3b424..f739ce57 100644 --- a/upload/admin/sources/classes/skins/skinImportExport.php +++ b/upload/admin/sources/classes/skins/skinImportExport.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Skin Functions
      * Last Updated: $Date: 2012-11-27 20:31:18 -0500 (Tue, 27 Nov 2012) $
      * 
    diff --git a/upload/admin/sources/classes/tags/abstract.php b/upload/admin/sources/classes/tags/abstract.php index 417f7d06..738f2bf8 100644 --- a/upload/admin/sources/classes/tags/abstract.php +++ b/upload/admin/sources/classes/tags/abstract.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Tagging: Abstract class
      * Matt Mecham
      * Last Updated: $Date: 2013-05-16 21:35:15 -0400 (Thu, 16 May 2013) $
    diff --git a/upload/admin/sources/classes/tags/bootstrap.php b/upload/admin/sources/classes/tags/bootstrap.php
    index 608a8d72..d44fe5d3 100644
    --- a/upload/admin/sources/classes/tags/bootstrap.php
    +++ b/upload/admin/sources/classes/tags/bootstrap.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Tagging: Bootstrap
      * Matt Mecham
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
    diff --git a/upload/admin/sources/classes/tags/cloud.php b/upload/admin/sources/classes/tags/cloud.php
    index 454e0d76..f16b6a46 100644
    --- a/upload/admin/sources/classes/tags/cloud.php
    +++ b/upload/admin/sources/classes/tags/cloud.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Tagging: Cloud class - is it bird? is it a cloud? No it's a.. nope, it's a cloud. Sorry for that.
      * Matt Mecham
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
    diff --git a/upload/admin/sources/classes/tags/extensions/default.php b/upload/admin/sources/classes/tags/extensions/default.php
    index c1d24f4b..536d2e81 100644
    --- a/upload/admin/sources/classes/tags/extensions/default.php
    +++ b/upload/admin/sources/classes/tags/extensions/default.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Tagging: Default extensions file
      * Matt Mecham
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
    diff --git a/upload/admin/sources/classes/tags/search/bootstrap.php b/upload/admin/sources/classes/tags/search/bootstrap.php
    index 1aefe0f3..86328cc3 100644
    --- a/upload/admin/sources/classes/tags/search/bootstrap.php
    +++ b/upload/admin/sources/classes/tags/search/bootstrap.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Tagging: Bootstrap
      * Matt Mecham
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
    diff --git a/upload/admin/sources/classes/tags/search/sphinx.php b/upload/admin/sources/classes/tags/search/sphinx.php
    index 8dbecbb1..06e3b7e7 100644
    --- a/upload/admin/sources/classes/tags/search/sphinx.php
    +++ b/upload/admin/sources/classes/tags/search/sphinx.php
    @@ -2,7 +2,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Global Search
      * Last Updated: $Date: 2013-03-01 10:07:43 -0500 (Fri, 01 Mar 2013) $
      * 
    diff --git a/upload/admin/sources/classes/tags/search/sql.php b/upload/admin/sources/classes/tags/search/sql.php index c0875462..729ee999 100644 --- a/upload/admin/sources/classes/tags/search/sql.php +++ b/upload/admin/sources/classes/tags/search/sql.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Global Search
      * Last Updated: $Date: 2012-09-06 10:21:14 -0400 (Thu, 06 Sep 2012) $
      * 
    diff --git a/upload/admin/sources/classes/text/parser.php b/upload/admin/sources/classes/text/parser.php index 157c2d71..7fbbbe01 100644 --- a/upload/admin/sources/classes/text/parser.php +++ b/upload/admin/sources/classes/text/parser.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * HTML parsing core
      * Last Updated: $Date: 2012-06-08 09:28:02 +0100 (Fri, 08 Jun 2012) $
      * 
    @@ -1135,6 +1135,9 @@ class classes_text_parser { $text = str_replace( "&#" . $i . ";", chr($i), $text ); } + + /* IPSText::isUTF8() is horribly inefficient on large content with a lot of badwords - do that here so we don't have too every time. We can safely assume any adjustments during replacement are UTF8. */ + $isUTF8 = IPSText::isUTF8( $text ); //----------------------------------------- // Go all loopy @@ -1156,7 +1159,7 @@ class classes_text_parser $r['type'] = preg_quote( $r['type'], "/" ); /* Link */ -// if ( IPS_DOC_CHAR_SET == 'UTF-8' && IPSText::isUTF8( $text ) ) +// if ( IPS_DOC_CHAR_SET == 'UTF-8' && $isUTF8 ) // { // $text = preg_replace( '/(^|\p{L}|\s)' . $r['type'] . '(\p{L}|!|\?|\.|,|$)/i', "\\1{$replace}\\2", $text ); // } @@ -1166,7 +1169,7 @@ class classes_text_parser // @see http://stackoverflow.com/questions/6531724/how-exactly-do-regular-expression-word-boundaries-work-in-php // What we really want to look for is a non-word character on either side, so this works // Bad word filter for $!^& becomes $!^&. Submitted in a post that is

    $!^&

    and * Invision Power Services - * IP.Board v3.4.8 + * IP.Board v3.4.9 * BBCode parsing core - common methods * Last Updated: $Date: 2012-06-08 09:28:02 +0100 (Fri, 08 Jun 2012) $ *
    diff --git a/upload/admin/sources/classes/text/parser/bbcode/ccs.php b/upload/admin/sources/classes/text/parser/bbcode/ccs.php index 78149b13..b2085900 100644 --- a/upload/admin/sources/classes/text/parser/bbcode/ccs.php +++ b/upload/admin/sources/classes/text/parser/bbcode/ccs.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * IP.Content custom bbcode
      * Last Updated: $Date: 2012-06-01 13:11:08 -0400 (Fri, 01 Jun 2012) $
      * 
    diff --git a/upload/admin/sources/classes/text/parser/bbcode/defaults.php b/upload/admin/sources/classes/text/parser/bbcode/defaults.php index b8c0653a..6f5d3955 100644 --- a/upload/admin/sources/classes/text/parser/bbcode/defaults.php +++ b/upload/admin/sources/classes/text/parser/bbcode/defaults.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Custom bbcode plugin interfaces
      * Last Updated: $Date: 2012-05-24 16:33:36 +0100 (Thu, 24 May 2012) $
      * 
    @@ -18,7 +18,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * BBCode parser: default custom bbcodes: img, quote, list, size, member, media, url, snapback
      * Last Updated: $Date: 2012-05-24 16:33:36 +0100 (Thu, 24 May 2012) $
      * 
    diff --git a/upload/admin/sources/classes/text/parser/html.php b/upload/admin/sources/classes/text/parser/html.php index e97f5925..6851db0e 100644 --- a/upload/admin/sources/classes/text/parser/html.php +++ b/upload/admin/sources/classes/text/parser/html.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Text Parsing: HTML
      * Last Updated: $Date: 2012-06-08 09:28:02 +0100 (Fri, 08 Jun 2012) $
      * 
    diff --git a/upload/admin/sources/classes/text/parser/legacy.php b/upload/admin/sources/classes/text/parser/legacy.php index c00472ee..d2d797ee 100644 --- a/upload/admin/sources/classes/text/parser/legacy.php +++ b/upload/admin/sources/classes/text/parser/legacy.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Text Parsing: LEGACY CR..STUFF
      * Last Updated: $Date: 2012-06-08 09:28:02 +0100 (Fri, 08 Jun 2012) $
      * 
    diff --git a/upload/admin/sources/classes/tiers/recursiveTiers.php b/upload/admin/sources/classes/tiers/recursiveTiers.php index e7938252..751ae4c3 100644 --- a/upload/admin/sources/classes/tiers/recursiveTiers.php +++ b/upload/admin/sources/classes/tiers/recursiveTiers.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Recurse Tier Management
      * Owner: Matt Mecham
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
    diff --git a/upload/admin/sources/classes/twitter/connect.php b/upload/admin/sources/classes/twitter/connect.php
    index a23c3bc1..621561bb 100644
    --- a/upload/admin/sources/classes/twitter/connect.php
    +++ b/upload/admin/sources/classes/twitter/connect.php
    @@ -2,7 +2,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Twitter Connect Library
      * Created by Matt Mecham
      * Last Updated: $Date: 2013-02-06 10:51:28 -0500 (Wed, 06 Feb 2013) $
    diff --git a/upload/admin/sources/classes/url/apis/bitly/api.php b/upload/admin/sources/classes/url/apis/bitly/api.php
    index 0ee1a78f..2d55a646 100644
    --- a/upload/admin/sources/classes/url/apis/bitly/api.php
    +++ b/upload/admin/sources/classes/url/apis/bitly/api.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * URL shortener
      * Owner: Matt Mecham
      * Last Updated: $Date: 2013-04-12 18:05:43 -0400 (Fri, 12 Apr 2013) $
    diff --git a/upload/admin/sources/classes/url/apis/bitly/conf.php b/upload/admin/sources/classes/url/apis/bitly/conf.php
    index 7108f84e..bdf60d54 100644
    --- a/upload/admin/sources/classes/url/apis/bitly/conf.php
    +++ b/upload/admin/sources/classes/url/apis/bitly/conf.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * URL shortener
      * Owner: Matt Mecham
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
    diff --git a/upload/admin/sources/classes/url/shorten.php b/upload/admin/sources/classes/url/shorten.php
    index 59ab560a..65687217 100644
    --- a/upload/admin/sources/classes/url/shorten.php
    +++ b/upload/admin/sources/classes/url/shorten.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * URL Shortener
      * Owner: Matt Mecham
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
    diff --git a/upload/admin/sources/classes/useragents/userAgentFunctions.php b/upload/admin/sources/classes/useragents/userAgentFunctions.php
    index 0e832b94..d620ac89 100644
    --- a/upload/admin/sources/classes/useragents/userAgentFunctions.php
    +++ b/upload/admin/sources/classes/useragents/userAgentFunctions.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Skin Functions
      * Last Updated: $Date: 2012-12-13 08:29:08 -0500 (Thu, 13 Dec 2012) $
      * 
    diff --git a/upload/admin/sources/classes/virusChecker/lib_known_names.php b/upload/admin/sources/classes/virusChecker/lib_known_names.php index 5c8fb439..31596669 100644 --- a/upload/admin/sources/classes/virusChecker/lib_known_names.php +++ b/upload/admin/sources/classes/virusChecker/lib_known_names.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Virus scanner: known blacklisted filenames
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/classes/virusChecker/lib_writeable_dirs.php b/upload/admin/sources/classes/virusChecker/lib_writeable_dirs.php index b2e43829..2540273f 100644 --- a/upload/admin/sources/classes/virusChecker/lib_writeable_dirs.php +++ b/upload/admin/sources/classes/virusChecker/lib_writeable_dirs.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Virus scanner: writable directories
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/classes/virusChecker/plugins/example.php b/upload/admin/sources/classes/virusChecker/plugins/example.php index 7ee24cf6..bba335d2 100644 --- a/upload/admin/sources/classes/virusChecker/plugins/example.php +++ b/upload/admin/sources/classes/virusChecker/plugins/example.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Virus scanner: Plugin example.
      * The plugin system can be used to extend the virus scanner functionality by checking for arbitrary 
      * things to score the virus rating against.  See the two links below for more ideas/suggestions.
    diff --git a/upload/admin/sources/classes/virusChecker/virusChecker.php b/upload/admin/sources/classes/virusChecker/virusChecker.php
    index 24cd8681..91fc9b1a 100644
    --- a/upload/admin/sources/classes/virusChecker/virusChecker.php
    +++ b/upload/admin/sources/classes/virusChecker/virusChecker.php
    @@ -2,7 +2,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Virus scanner
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/handlers/han_email.php b/upload/admin/sources/handlers/han_email.php index e433dc73..3bf37f96 100644 --- a/upload/admin/sources/handlers/han_email.php +++ b/upload/admin/sources/handlers/han_email.php @@ -2,17 +2,17 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board vVERSION_NUMBER
      * API: Core
    - * Last Updated: $Date: 2013-10-14 15:30:19 -0400 (Mon, 14 Oct 2013) $
    + * Last Updated: $Date: 2016-01-15 16:27:39 -0500 (Fri, 15 Jan 2016) $
      * 
    * - * @author $Author: AndyMillne $ + * @author $Author: stuarts $ * @copyright (c) 2001 - 2009 Invision Power Services, Inc. * @license http://www.invisionpower.com/company/standards.php#license * @package IP.Board * @link http://www.invisionpower.com - * @version $Rev: 12376 $ + * @version $Rev: 12697 $ */ if ( ! defined( 'IN_IPB' ) ) diff --git a/upload/admin/sources/handlers/han_login.php b/upload/admin/sources/handlers/han_login.php index 88a72ddd..4a72f825 100644 --- a/upload/admin/sources/handlers/han_login.php +++ b/upload/admin/sources/handlers/han_login.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Login handler abstraction
      * Last Updated: $Date: 2013-09-05 21:09:43 -0400 (Thu, 05 Sep 2013) $
      * 
    diff --git a/upload/admin/sources/handlers/han_parse_bbcode.php b/upload/admin/sources/handlers/han_parse_bbcode.php index 9f096096..1397ad15 100644 --- a/upload/admin/sources/handlers/han_parse_bbcode.php +++ b/upload/admin/sources/handlers/han_parse_bbcode.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * BBCode parsing gateway.
      * Last Updated: $Date: 2012-07-12 05:25:08 -0400 (Thu, 12 Jul 2012) $
      * 
    diff --git a/upload/admin/sources/interfaces/admin/download_category_form.php b/upload/admin/sources/interfaces/admin/download_category_form.php index ec603965..43bf35e8 100644 --- a/upload/admin/sources/interfaces/admin/download_category_form.php +++ b/upload/admin/sources/interfaces/admin/download_category_form.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 02nd March 2011 * $LastChangedDate: 2011-03-02 13:57:10 -0500 (Wed, 02 Mar 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 7941 $ */ diff --git a/upload/admin/sources/interfaces/admin/forum_form.php b/upload/admin/sources/interfaces/admin/forum_form.php index 7543c696..16bf5fa6 100644 --- a/upload/admin/sources/interfaces/admin/forum_form.php +++ b/upload/admin/sources/interfaces/admin/forum_form.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 16 Dec 2011 * $LastChangedDate: 2011-12-16 18:58:20 -0500 (Fri, 16 Dec 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 10016 $ */ diff --git a/upload/admin/sources/interfaces/admin/group_form.php b/upload/admin/sources/interfaces/admin/group_form.php index 25cf919b..cf197f02 100644 --- a/upload/admin/sources/interfaces/admin/group_form.php +++ b/upload/admin/sources/interfaces/admin/group_form.php @@ -7,7 +7,7 @@ * $Author: mmecham $ * @since - * $LastChangedDate: 2011-03-11 09:29:56 -0500 (Fri, 11 Mar 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 8036 $ */ diff --git a/upload/admin/sources/interfaces/admin/member_form.php b/upload/admin/sources/interfaces/admin/member_form.php index 80ddc23e..6e5c2326 100644 --- a/upload/admin/sources/interfaces/admin/member_form.php +++ b/upload/admin/sources/interfaces/admin/member_form.php @@ -7,7 +7,7 @@ * $Author: ips_terabyte $ * @since 02nd March 2011 * $LastChangedDate: 2011-03-02 13:57:10 -0500 (Wed, 02 Mar 2011) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 7941 $ */ diff --git a/upload/admin/sources/interfaces/interface_bbcode.php b/upload/admin/sources/interfaces/interface_bbcode.php index 1e8cd73a..68b855e6 100644 --- a/upload/admin/sources/interfaces/interface_bbcode.php +++ b/upload/admin/sources/interfaces/interface_bbcode.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Custom bbcode plugin interfaces
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/interfaces/interface_output.php b/upload/admin/sources/interfaces/interface_output.php index efc8957d..5619ba33 100644 --- a/upload/admin/sources/interfaces/interface_output.php +++ b/upload/admin/sources/interfaces/interface_output.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Output formats interface
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/interfaces/interface_usercp.php b/upload/admin/sources/interfaces/interface_usercp.php index 4b0a2247..56a02f23 100644 --- a/upload/admin/sources/interfaces/interface_usercp.php +++ b/upload/admin/sources/interfaces/interface_usercp.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * User CP: Handles form display / saving as well as custom events
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/loginauth/convert/auth.php b/upload/admin/sources/loginauth/convert/auth.php index 7e0a38bf..4fa6560b 100644 --- a/upload/admin/sources/loginauth/convert/auth.php +++ b/upload/admin/sources/loginauth/convert/auth.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Login handler abstraction : Conversion method
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/loginauth/convert/auth_sha256.php b/upload/admin/sources/loginauth/convert/auth_sha256.php index 465a5d82..d958530e 100644 --- a/upload/admin/sources/loginauth/convert/auth_sha256.php +++ b/upload/admin/sources/loginauth/convert/auth_sha256.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Login handler abstraction : Conversion method
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/loginauth/convert/newauth.php b/upload/admin/sources/loginauth/convert/newauth.php index 46fb8fc6..730710d5 100644 --- a/upload/admin/sources/loginauth/convert/newauth.php +++ b/upload/admin/sources/loginauth/convert/newauth.php @@ -3,13 +3,13 @@ * IPS Converters * Application Files * Login functions - * Last Updated: $Date: 2014-12-31 17:46:06 -0500 (Wed, 31 Dec 2014) $ + * Last Updated: $Date: 2015-10-21 05:17:27 -0400 (Wed, 21 Oct 2015) $ * - * @author $Author: rashbrook $ + * @author $Author: stuarts $ * @copyright (c) 2006 - 2009 Invision Power Services, Inc. * @package IPS Converters * @link http://www.invisionpower.com - * @version $Revision: 12581 $ + * @version $Revision: 12676 $ */ class converters @@ -293,6 +293,14 @@ class converters */ private function joomla ( $username, $email, $password ) { + /* Joomla 3 */ + if( preg_match( '/^\$2[ay]\$(0[4-9]|[1-2][0-9]|3[0-1])\$[a-zA-Z0-9.\/]{53}/', $this->parent->_memberData['conv_password'] ) ) + { + $ph = new PasswordHash( 8, TRUE ); + return $ph->CheckPassword( $password, $this->parent->_memberData['conv_password'] ) ? TRUE : FALSE; + } + + /* Joomla 2 */ if ( $this->parent->_memberData['conv_password'] == md5 ( $password . $this->parent->_memberData['misc'] ) ) { return true; @@ -322,28 +330,38 @@ class converters //$password = $_POST['password'] ? $_POST['password'] : $password; $password = html_entity_decode( $password ); - $success = false; - $single_md5_pass = md5( $password ); $hash = $this->parent->_memberData['conv_password']; - $itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; - - if (strlen($hash) == 34) + // Is it a PhpBB 3.1 Password? + if( preg_match( '/^\$2[ay]\$(0[4-9]|[1-2][0-9]|3[0-1])\$[a-zA-Z0-9.\/]{53}/', $hash ) ) { - $success = ($this->parent->hashCryptPrivate($password, $hash, $itoa64) === $hash) ? true : false; - } - else - { - $success = ($single_md5_pass === $hash) ? true : false; + $ph = new PasswordHash( 8, TRUE ); + $success = $ph->CheckPassword( $password, $this->parent->_memberData['conv_password'] ) ? TRUE : FALSE; } - // Are we successful? If not - make sure the board hasn't been upgraded from phpBB2 and the user - // just hasn't logged in yet to get their pass converted to phpBB3 format. - - if ( ! $success ) + // It wasn't a PhpBB 3.1 Password + if( ! $success ) { - $success = ( $this->parent->hashCryptPrivate( $single_md5_pass, $hash, $itoa64 ) === $hash ? true : false ); + $single_md5_pass = md5( $password ); + $itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; + + if (strlen($hash) == 34) + { + $success = ($this->parent->hashCryptPrivate($password, $hash, $itoa64) === $hash) ? true : false; + } + else + { + $success = ($single_md5_pass === $hash) ? true : false; + } + + // Are we successful? If not - make sure the board hasn't been upgraded from phpBB2 and the user + // just hasn't logged in yet to get their pass converted to phpBB3 format. + + if ( ! $success ) + { + $success = ( $this->parent->hashCryptPrivate( $single_md5_pass, $hash, $itoa64 ) === $hash ? true : false ); + } } return $success; @@ -498,7 +516,11 @@ class converters } else { - return false; + // Init the pass class + $ph = new PasswordHash(8, TRUE); + + // Check it + return $ph->CheckPassword( strtolower( $username ) . $password, $this->parent->_memberData['conv_password'] ) ? TRUE : FALSE; } } @@ -532,9 +554,28 @@ class converters } /** - * WOLTLAB + * WOLTLAB 4.0 **/ private function woltlab($username, $email, $password) + { + $success = FALSE; + + /* If it's not blowfish, then we don't have a salt for it. fail. */ + if( preg_match( '/^\$2[ay]\$(0[4-9]|[1-2][0-9]|3[0-1])\$[a-zA-Z0-9.\/]{53}/', $this->parent->_memberData['conv_password'] ) ) + { + $salt = mb_substr( $this->parent->_memberData['conv_password'], 0, 29 ); + $test = crypt( crypt( $password, $salt ), $salt ); + + $success = $test == $this->parent->_memberData['conv_password'] ? TRUE : FALSE; + } + + return $success; + } + + /** + * WOLTLAB + **/ + private function woltlab_legacy($username, $email, $password) { if ( $this->parent->_memberData['conv_password'] == sha1( $this->parent->_memberData['misc'] . sha1( $this->parent->_memberData['misc'] . sha1($password) ) ) ) { diff --git a/upload/admin/sources/loginauth/external/acp.php b/upload/admin/sources/loginauth/external/acp.php index 684028ef..bba20b55 100644 --- a/upload/admin/sources/loginauth/external/acp.php +++ b/upload/admin/sources/loginauth/external/acp.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Login handler abstraction : External method
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/loginauth/external/auth.php b/upload/admin/sources/loginauth/external/auth.php index 7868f283..f8452abf 100644 --- a/upload/admin/sources/loginauth/external/auth.php +++ b/upload/admin/sources/loginauth/external/auth.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Login handler abstraction : Internal Method
      * Last Updated: $Date: 2013-03-19 18:24:44 -0400 (Tue, 19 Mar 2013) $
      * 
    diff --git a/upload/admin/sources/loginauth/internal/auth.php b/upload/admin/sources/loginauth/internal/auth.php index 051a3adf..df675ccf 100644 --- a/upload/admin/sources/loginauth/internal/auth.php +++ b/upload/admin/sources/loginauth/internal/auth.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Login handler abstraction : Internal Method
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/loginauth/ldap/acp.php b/upload/admin/sources/loginauth/ldap/acp.php index f0c21878..fcb896de 100644 --- a/upload/admin/sources/loginauth/ldap/acp.php +++ b/upload/admin/sources/loginauth/ldap/acp.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Login handler abstraction : LDAP method
      * Last Updated: $Date: 2013-03-05 09:00:34 -0500 (Tue, 05 Mar 2013) $
      * 
    diff --git a/upload/admin/sources/loginauth/ldap/auth.php b/upload/admin/sources/loginauth/ldap/auth.php index ae237346..f38f04e6 100644 --- a/upload/admin/sources/loginauth/ldap/auth.php +++ b/upload/admin/sources/loginauth/ldap/auth.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Login handler abstraction : LDAP method
      * Last Updated: $Date: 2013-03-05 08:57:05 -0500 (Tue, 05 Mar 2013) $
      * 
    diff --git a/upload/admin/sources/loginauth/live/acp.php b/upload/admin/sources/loginauth/live/acp.php index 5c5c8486..c0983e93 100644 --- a/upload/admin/sources/loginauth/live/acp.php +++ b/upload/admin/sources/loginauth/live/acp.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Login handler abstraction : Windows Live method
      * Last Updated: $Date: 2012-10-22 07:39:12 -0400 (Mon, 22 Oct 2012) $
      * 
    diff --git a/upload/admin/sources/loginauth/live/auth.php b/upload/admin/sources/loginauth/live/auth.php index 3906cb4e..709bcdb3 100644 --- a/upload/admin/sources/loginauth/live/auth.php +++ b/upload/admin/sources/loginauth/live/auth.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Login handler abstraction : MSN Live Method
      * Last Updated: $Date: 2012-10-22 07:39:12 -0400 (Mon, 22 Oct 2012) $
      * 
    diff --git a/upload/admin/sources/loginauth/login_core.php b/upload/admin/sources/loginauth/login_core.php index fb465517..898c545e 100644 --- a/upload/admin/sources/loginauth/login_core.php +++ b/upload/admin/sources/loginauth/login_core.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Login handler abstraction
      * Last Updated: $Date: 2013-02-15 12:08:49 -0500 (Fri, 15 Feb 2013) $
      * 
    diff --git a/upload/admin/sources/loginauth/login_interface.php b/upload/admin/sources/loginauth/login_interface.php index 4ef2524f..eb756cfb 100644 --- a/upload/admin/sources/loginauth/login_interface.php +++ b/upload/admin/sources/loginauth/login_interface.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Login handler abstraction
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/template_plugins/tp_addtohead.php b/upload/admin/sources/template_plugins/tp_addtohead.php index b520a72a..435debb9 100644 --- a/upload/admin/sources/template_plugins/tp_addtohead.php +++ b/upload/admin/sources/template_plugins/tp_addtohead.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Template Plugin: Add to head
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/template_plugins/tp_currency.php b/upload/admin/sources/template_plugins/tp_currency.php index 53e89ede..825c79fc 100644 --- a/upload/admin/sources/template_plugins/tp_currency.php +++ b/upload/admin/sources/template_plugins/tp_currency.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Template Pluging: Currency
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/template_plugins/tp_date.php b/upload/admin/sources/template_plugins/tp_date.php index 33b13256..4bd13a87 100644 --- a/upload/admin/sources/template_plugins/tp_date.php +++ b/upload/admin/sources/template_plugins/tp_date.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Template Pluging: Date
      * Last Updated: $Date: 2013-04-23 09:51:07 -0400 (Tue, 23 Apr 2013) $
      * 
    diff --git a/upload/admin/sources/template_plugins/tp_editor.php b/upload/admin/sources/template_plugins/tp_editor.php index f249bdcd..615e973e 100644 --- a/upload/admin/sources/template_plugins/tp_editor.php +++ b/upload/admin/sources/template_plugins/tp_editor.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Template Pluging: CCS block parsing
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/template_plugins/tp_expression.php b/upload/admin/sources/template_plugins/tp_expression.php index 12ea95cd..c67da39a 100644 --- a/upload/admin/sources/template_plugins/tp_expression.php +++ b/upload/admin/sources/template_plugins/tp_expression.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Template plugin: execute PHP expression
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/template_plugins/tp_format_number.php b/upload/admin/sources/template_plugins/tp_format_number.php index c028114f..c152ca05 100644 --- a/upload/admin/sources/template_plugins/tp_format_number.php +++ b/upload/admin/sources/template_plugins/tp_format_number.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Template Pluging: Format Number
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/template_plugins/tp_include.php b/upload/admin/sources/template_plugins/tp_include.php index 3055fb35..dc5a88ce 100644 --- a/upload/admin/sources/template_plugins/tp_include.php +++ b/upload/admin/sources/template_plugins/tp_include.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Template Pluging: Include
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/template_plugins/tp_ipcmedia.php b/upload/admin/sources/template_plugins/tp_ipcmedia.php index a5e155a5..54675cee 100644 --- a/upload/admin/sources/template_plugins/tp_ipcmedia.php +++ b/upload/admin/sources/template_plugins/tp_ipcmedia.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Template Plugin: Insert IP.C media file
      * Last Updated: $Date$$
      * 
    diff --git a/upload/admin/sources/template_plugins/tp_js_module.php b/upload/admin/sources/template_plugins/tp_js_module.php index 6d3cd425..2afc816f 100644 --- a/upload/admin/sources/template_plugins/tp_js_module.php +++ b/upload/admin/sources/template_plugins/tp_js_module.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Template Pluging: JS Module
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/template_plugins/tp_lang.php b/upload/admin/sources/template_plugins/tp_lang.php index 1ab5aa64..dcfc37de 100644 --- a/upload/admin/sources/template_plugins/tp_lang.php +++ b/upload/admin/sources/template_plugins/tp_lang.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Template plugin: execute PHP expression
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/template_plugins/tp_replacement.php b/upload/admin/sources/template_plugins/tp_replacement.php index f0fa87be..6048b91d 100644 --- a/upload/admin/sources/template_plugins/tp_replacement.php +++ b/upload/admin/sources/template_plugins/tp_replacement.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Template plugin: perform macro replacement
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/template_plugins/tp_resize_image.php b/upload/admin/sources/template_plugins/tp_resize_image.php index e1162989..12876764 100644 --- a/upload/admin/sources/template_plugins/tp_resize_image.php +++ b/upload/admin/sources/template_plugins/tp_resize_image.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Template Pluging: Resize images in templates proportionately
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/template_plugins/tp_striping.php b/upload/admin/sources/template_plugins/tp_striping.php index 806f5b5a..25100c17 100644 --- a/upload/admin/sources/template_plugins/tp_striping.php +++ b/upload/admin/sources/template_plugins/tp_striping.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Template plugin: Perform row striping
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/sources/template_plugins/tp_template.php b/upload/admin/sources/template_plugins/tp_template.php index c016eb49..c3293e3b 100644 --- a/upload/admin/sources/template_plugins/tp_template.php +++ b/upload/admin/sources/template_plugins/tp_template.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Template Pluging: Template Include
      * Last Updated: $Date: 2012-09-27 06:09:08 -0400 (Thu, 27 Sep 2012) $
      * 
    diff --git a/upload/admin/sources/template_plugins/tp_url.php b/upload/admin/sources/template_plugins/tp_url.php index dc2d9045..fad541f1 100644 --- a/upload/admin/sources/template_plugins/tp_url.php +++ b/upload/admin/sources/template_plugins/tp_url.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Template Pluging: URL
      * Last Updated: $Date: 2012-07-26 03:50:39 -0400 (Thu, 26 Jul 2012) $
      * 
    diff --git a/upload/admin/sources/template_plugins/tp_variable.php b/upload/admin/sources/template_plugins/tp_variable.php index 2dbbe190..00276ff8 100644 --- a/upload/admin/sources/template_plugins/tp_variable.php +++ b/upload/admin/sources/template_plugins/tp_variable.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Template plugin: Set and retrieve template variables
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/admin/upgrade/index.php b/upload/admin/upgrade/index.php index f1a62f30..42cd9af2 100644 --- a/upload/admin/upgrade/index.php +++ b/upload/admin/upgrade/index.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Upgrade gateway
      * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    @@ -23,7 +23,6 @@ define( 'IPS_IS_INSTALLER', FALSE ); require_once( '../../initdata.php' );/*noLibHook*/ -require_once( IPS_ROOT_PATH . 'sources/base/darkLAE.php' );/*noLibHook*/ require_once( IPS_ROOT_PATH . 'setup/sources/base/ipsRegistry_setup.php' );/*noLibHook*/ require_once( IPS_ROOT_PATH . 'setup/sources/base/ipsController_setup.php' );/*noLibHook*/ diff --git a/upload/cache/skin_cache/masterMap.php b/upload/cache/skin_cache/masterMap.php index c712b82a..5acabe13 100644 --- a/upload/cache/skin_cache/masterMap.php +++ b/upload/cache/skin_cache/masterMap.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * IN_DEV Remapping.
      * Last Updated: $Date: 2013-02-01 20:56:50 -0500 (Fri, 01 Feb 2013) $
      * 
    diff --git a/upload/dav.php b/upload/dav.php index d0095856..d82a6c94 100644 --- a/upload/dav.php +++ b/upload/dav.php @@ -2,7 +2,7 @@ /* +--------------------------------------------------------------------------- -| IP.Board v3.4.8 +| IP.Board v3.4.9 | ======================================== | by Matthew Mecham | (c) 2008 Invision Power Services diff --git a/upload/index.php b/upload/index.php index c92c2a3b..9a202ba9 100644 --- a/upload/index.php +++ b/upload/index.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Main public executable wrapper.
      * Set-up and load module to run
      * Last Updated: $Date: 2013-02-26 08:08:06 -0500 (Tue, 26 Feb 2013) $
    diff --git a/upload/initdata.php b/upload/initdata.php
    index a9f269ec..ba044daf 100644
    --- a/upload/initdata.php
    +++ b/upload/initdata.php
    @@ -3,24 +3,23 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * INIT File - Sets up globals
    - * Last Updated: $Date: 2013-05-20 16:38:23 -0400 (Mon, 20 May 2013) $
    + * Last Updated: $Date: 2015-12-28 11:27:19 -0500 (Mon, 28 Dec 2015) $
      * 
    * - * @author $Author: bfarber $ + * @author $Author: mark $ * @copyright (c) 2001 - 2008 Invision Power Services, Inc. * @license http://www.invisionpower.com/company/standards.php#license * @package IP.Board * @link http://www.invisionpower.com - * @version $Rev: 12261 $ + * @version $Rev: 12688 $ * */ // Get constants.php if it exists - this can be used to // override any of the constants defined in this file without // being overwritten when IP.Board is updated - if ( is_file( dirname( __FILE__ ) . '/constants.php' ) ) { require_once( dirname( __FILE__ ) . '/constants.php' );/*noLibHook*/ @@ -380,11 +379,22 @@ if ( ! defined( 'MIN_PHP_VERS' ) ) // ADVANCED CONFIGURATION: MAGIC QUOTES //-------------------------------------------------------------------------- -@set_magic_quotes_runtime(0); - -if ( ! defined( 'IPS_MAGIC_QUOTES' ) ) +/* Magic quotes was removed in PHP 5.4 */ +if ( version_compare( phpversion(), '5.4.0' ) === 1 ) { - define( 'IPS_MAGIC_QUOTES', @get_magic_quotes_gpc() ); + if ( ! defined( 'IPS_MAGIC_QUOTES' ) ) + { + define( 'IPS_MAGIC_QUOTES', 0 ); + } +} +else +{ + @set_magic_quotes_runtime(0); + + if ( ! defined( 'IPS_MAGIC_QUOTES' ) ) + { + define( 'IPS_MAGIC_QUOTES', @get_magic_quotes_gpc() ); + } } //-------------------------------------------------------------------------- diff --git a/upload/interface/board/index.php b/upload/interface/board/index.php index 059d3a2a..3b074e27 100644 --- a/upload/interface/board/index.php +++ b/upload/interface/board/index.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Remote API integration gateway file
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/interface/board/live.php b/upload/interface/board/live.php index 0637e658..a74942bf 100644 --- a/upload/interface/board/live.php +++ b/upload/interface/board/live.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Remote API integration gateway file
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/interface/board/modules/ipb/api.php b/upload/interface/board/modules/ipb/api.php index 2eb0adcb..d1616a08 100644 --- a/upload/interface/board/modules/ipb/api.php +++ b/upload/interface/board/modules/ipb/api.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Remote API Server
      * Last Updated: $Date: 2014-12-31 17:46:06 -0500 (Wed, 31 Dec 2014) $
      * 
    diff --git a/upload/interface/board/modules/ipb/config.php b/upload/interface/board/modules/ipb/config.php index 4e6967bf..5a1e42dd 100644 --- a/upload/interface/board/modules/ipb/config.php +++ b/upload/interface/board/modules/ipb/config.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Remote API Server configuration
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/interface/board/modules/ipb/methods.php b/upload/interface/board/modules/ipb/methods.php index 2eac2a2c..9070c66a 100644 --- a/upload/interface/board/modules/ipb/methods.php +++ b/upload/interface/board/modules/ipb/methods.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Defines the allowed methods a remote server may request and the in/out parameters
      * Last Updated: $Date: 2014-12-31 17:46:06 -0500 (Wed, 31 Dec 2014) $
      * 
    diff --git a/upload/interface/facebook/channel.php b/upload/interface/facebook/channel.php index 9a8f81e7..1c71a3b7 100644 --- a/upload/interface/facebook/channel.php +++ b/upload/interface/facebook/channel.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Facebook channel file
      * Last Updated: $Date: 2012-01-31 11:24:24 +0000 (Tue, 31 Jan 2012) $
      * 
    diff --git a/upload/interface/facebook/index.php b/upload/interface/facebook/index.php index 7e8ca43d..4729a9d6 100644 --- a/upload/interface/facebook/index.php +++ b/upload/interface/facebook/index.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Main public executable wrapper.
      * Set-up and load module to run
      * Last Updated: $Date: 2014-10-07 21:14:20 -0400 (Tue, 07 Oct 2014) $
    diff --git a/upload/interface/facebook/xd_receiver.php b/upload/interface/facebook/xd_receiver.php
    index d2eb50e6..5af7ea69 100644
    --- a/upload/interface/facebook/xd_receiver.php
    +++ b/upload/interface/facebook/xd_receiver.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    * diff --git a/upload/interface/facebook/xd_receiver_ssl.php b/upload/interface/facebook/xd_receiver_ssl.php index f98e5946..3b599845 100644 --- a/upload/interface/facebook/xd_receiver_ssl.php +++ b/upload/interface/facebook/xd_receiver_ssl.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    * diff --git a/upload/interface/mobile/index.php b/upload/interface/mobile/index.php index 3bd0f403..d091ad58 100644 --- a/upload/interface/mobile/index.php +++ b/upload/interface/mobile/index.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Mobile API
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/interface/task.php b/upload/interface/task.php index 45bc3c63..83ff0e0e 100644 --- a/upload/interface/task.php +++ b/upload/interface/task.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Task Handler
      * Last Updated: $Date: 2014-04-15 13:33:36 -0400 (Tue, 15 Apr 2014) $
      * 
    diff --git a/upload/interface/twitter/index.php b/upload/interface/twitter/index.php index 8ad22fd1..74801017 100644 --- a/upload/interface/twitter/index.php +++ b/upload/interface/twitter/index.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Main public executable wrapper.
      * Set-up and load module to run
      * Last Updated: $Date: 2013-02-06 10:51:28 -0500 (Wed, 06 Feb 2013) $
    diff --git a/upload/ips_kernel/HTMLPurifier/HTMLPurifier/Injector/Linkify.php b/upload/ips_kernel/HTMLPurifier/HTMLPurifier/Injector/Linkify.php
    index bbac20a6..34580ca5 100644
    --- a/upload/ips_kernel/HTMLPurifier/HTMLPurifier/Injector/Linkify.php
    +++ b/upload/ips_kernel/HTMLPurifier/HTMLPurifier/Injector/Linkify.php
    @@ -104,7 +104,7 @@ http://en.wikipedia.org/wiki/Assassin's_Creed
                         	if ( stripos( $matches[4][$k], ' ' ) !== FALSE )
                         	{
     	                    	$bits = explode( ' ', $matches[4][$k], 2 );
    -	                    	if ( ! in_array( $bits[0], array( '!', '.', ',' ) ) )
    +	                    	if ( ! empty( $bits[0] ) AND ! in_array( $bits[0], array( '!', '.', ',' ) ) )
     	                    	{
     		                    	$matches[3][$k] .= $bits[0];
     								$matches[4][$k] = $bits[1];
    diff --git a/upload/ips_kernel/classAjax.php b/upload/ips_kernel/classAjax.php
    index 73e5b8b4..1a390529 100644
    --- a/upload/ips_kernel/classAjax.php
    +++ b/upload/ips_kernel/classAjax.php
    @@ -2,19 +2,19 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * AJAX input parsing and handling
    - * Last Updated: $Date: 2012-08-28 17:56:22 -0400 (Tue, 28 Aug 2012) $
    + * Last Updated: $Date$
      * 
    * - * @author $Author: bfarber $ + * @author $Author$ * @copyright (c) 2001 - 2009 Invision Power Services, Inc. * @license http://www.invisionpower.com/company/standards.php#license * @package IP.Board * @subpackage Kernel * @link http://www.invisionpower.com * @since Friday 19th May 2006 17:33 - * @version $Revision: 11296 $ + * @version $Revision$ */ diff --git a/upload/ips_kernel/classApiServer.php b/upload/ips_kernel/classApiServer.php index d484102d..77af9a53 100644 --- a/upload/ips_kernel/classApiServer.php +++ b/upload/ips_kernel/classApiServer.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * This class can act as an API server, handling API requests
      * Last Updated: $Date: 2012-12-27 11:37:49 -0500 (Thu, 27 Dec 2012) $
      * 
    diff --git a/upload/ips_kernel/classCacheApc.php b/upload/ips_kernel/classCacheApc.php index c5392c65..a97c1cc0 100644 --- a/upload/ips_kernel/classCacheApc.php +++ b/upload/ips_kernel/classCacheApc.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * This class acts as a cache layer, allowing you to store and retrieve data in
      *	external cache sources such as memcache or APC
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
    diff --git a/upload/ips_kernel/classCacheDiskcache.php b/upload/ips_kernel/classCacheDiskcache.php
    index dbe7707d..2c5a1daa 100644
    --- a/upload/ips_kernel/classCacheDiskcache.php
    +++ b/upload/ips_kernel/classCacheDiskcache.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * This class acts as a cache layer, allowing you to store and retrieve data in
      *	external cache sources such as memcache or APC
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
    diff --git a/upload/ips_kernel/classCacheEaccelerator.php b/upload/ips_kernel/classCacheEaccelerator.php
    index 35039caf..10b2a7f0 100644
    --- a/upload/ips_kernel/classCacheEaccelerator.php
    +++ b/upload/ips_kernel/classCacheEaccelerator.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * This class acts as a cache layer, allowing you to store and retrieve data in
      *	external cache sources such as memcache or APC
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
    diff --git a/upload/ips_kernel/classCacheMemcache.php b/upload/ips_kernel/classCacheMemcache.php
    index 004a2bfd..bccc3e3e 100644
    --- a/upload/ips_kernel/classCacheMemcache.php
    +++ b/upload/ips_kernel/classCacheMemcache.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * This class acts as a cache layer, allowing you to store and retrieve data in
      *	external cache sources such as memcache or APC
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
    diff --git a/upload/ips_kernel/classCacheWincache.php b/upload/ips_kernel/classCacheWincache.php
    index 7649d5f0..7ae32325 100644
    --- a/upload/ips_kernel/classCacheWincache.php
    +++ b/upload/ips_kernel/classCacheWincache.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * This class acts as a cache layer, allowing you to store and retrieve data in
      *	external cache sources such as memcache or APC
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
    diff --git a/upload/ips_kernel/classCacheXcache.php b/upload/ips_kernel/classCacheXcache.php
    index 8f247a07..7ca0f085 100644
    --- a/upload/ips_kernel/classCacheXcache.php
    +++ b/upload/ips_kernel/classCacheXcache.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * This class acts as a cache layer, allowing you to store and retrieve data in
      *	external cache sources such as memcache or APC
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
    diff --git a/upload/ips_kernel/classCaptcha.php b/upload/ips_kernel/classCaptcha.php
    index 5936436b..e5de2acf 100644
    --- a/upload/ips_kernel/classCaptcha.php
    +++ b/upload/ips_kernel/classCaptcha.php
    @@ -8,7 +8,7 @@
      * $Author: bfarber $
      * @since		Friday 19th May 2006 17:33
      * $LastChangedDate: 2012-02-10 20:05:52 -0500 (Fri, 10 Feb 2012) $
    - * @version		v3.4.8
    + * @version		v3.4.9
      * $Revision: 10288 $
      */
     
    diff --git a/upload/ips_kernel/classCaptchaPlugin/default.php b/upload/ips_kernel/classCaptchaPlugin/default.php
    index 270d409e..4782a7a1 100644
    --- a/upload/ips_kernel/classCaptchaPlugin/default.php
    +++ b/upload/ips_kernel/classCaptchaPlugin/default.php
    @@ -7,7 +7,7 @@
      * $Author: bfarber $
      * @since		Friday 19th May 2006 17:33
      * $LastChangedDate: 2012-02-10 20:05:52 -0500 (Fri, 10 Feb 2012) $
    - * @version		v3.4.8
    + * @version		v3.4.9
      * $Revision: 10288 $
      */
     
    diff --git a/upload/ips_kernel/classCaptchaPlugin/recaptcha.php b/upload/ips_kernel/classCaptchaPlugin/recaptcha.php
    index 397d6db9..196055ae 100644
    --- a/upload/ips_kernel/classCaptchaPlugin/recaptcha.php
    +++ b/upload/ips_kernel/classCaptchaPlugin/recaptcha.php
    @@ -50,7 +50,7 @@ define("RECAPTCHA_VERIFY_SERVER", "http://www.google.com");
      * $Author: rashbrook $
      * @since		Friday 19th May 2006 17:33
      * $LastChangedDate: 2013-10-16 19:11:24 -0400 (Wed, 16 Oct 2013) $
    - * @version		v3.4.8
    + * @version		v3.4.9
      * $Revision: 12381 $
      */
     
    diff --git a/upload/ips_kernel/classConvertCharset.php b/upload/ips_kernel/classConvertCharset.php
    index 55fd9335..b5bf41db 100644
    --- a/upload/ips_kernel/classConvertCharset.php
    +++ b/upload/ips_kernel/classConvertCharset.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Character set conversion library
      * Last Updated: $Date: 2012-12-07 14:02:27 -0500 (Fri, 07 Dec 2012) $
      * 
    diff --git a/upload/ips_kernel/classCustomFields.php b/upload/ips_kernel/classCustomFields.php index f7dd6f63..dc0aa244 100644 --- a/upload/ips_kernel/classCustomFields.php +++ b/upload/ips_kernel/classCustomFields.php @@ -3,19 +3,19 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Custom fields library
    - * Last Updated: $Date: 2013-10-14 17:55:18 -0400 (Mon, 14 Oct 2013) $
    + * Last Updated: $Date: 2015-12-28 11:27:19 -0500 (Mon, 28 Dec 2015) $
      * 
    * - * @author $Author: rashbrook $ + * @author $Author: mark $ * @copyright (c) 2001 - 2009 Invision Power Services, Inc. * @license http://www.invisionpower.com/company/standards.php#license * @package IP.Board * @subpackage Kernel * @link http://www.invisionpower.com * @since Thursday 8th May 2008 10:31 - * @version $Revision: 12377 $ + * @version $Revision: 12688 $ * */ @@ -881,7 +881,7 @@ class classCustomFields $v = str_replace( "
    ", "\n", $v ); $v = str_replace( "'" , "'" , $v ); - if ( @get_magic_quotes_gpc() ) + if ( IPS_MAGIC_QUOTES ) { $v = stripslashes($v); } @@ -895,7 +895,7 @@ class classCustomFields $t = str_replace( "
    ", "\n", $t ); $t = str_replace( "'" , "'" , $t ); - if ( @get_magic_quotes_gpc() ) + if ( IPS_MAGIC_QUOTES ) { $t = stripslashes($t); } diff --git a/upload/ips_kernel/classDb.php b/upload/ips_kernel/classDb.php index 89269565..8f06e25d 100644 --- a/upload/ips_kernel/classDb.php +++ b/upload/ips_kernel/classDb.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Database Abstraction Layer
      * Last Updated: $Date: 2013-05-20 16:38:23 -0400 (Mon, 20 May 2013) $
      * 
    diff --git a/upload/ips_kernel/classDbMysql.php b/upload/ips_kernel/classDbMysql.php index c43e30cd..3b58d665 100644 --- a/upload/ips_kernel/classDbMysql.php +++ b/upload/ips_kernel/classDbMysql.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * MySQL Database Driver :: Further loads mysql or mysqli client appropriately
      * Last Updated: $Date: 2014-11-11 15:53:26 -0500 (Tue, 11 Nov 2014) $
      * 
    diff --git a/upload/ips_kernel/classDbMysqlClient.php b/upload/ips_kernel/classDbMysqlClient.php index 89636d3a..ff2df08b 100644 --- a/upload/ips_kernel/classDbMysqlClient.php +++ b/upload/ips_kernel/classDbMysqlClient.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * MySQL Database Driver :: MySQL client
      * Last Updated: $Date: 2012-05-25 13:17:47 -0400 (Fri, 25 May 2012) $
      * 
    diff --git a/upload/ips_kernel/classDbMysqliClient.php b/upload/ips_kernel/classDbMysqliClient.php index e94aef70..464d7198 100644 --- a/upload/ips_kernel/classDbMysqliClient.php +++ b/upload/ips_kernel/classDbMysqliClient.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * MySQL Database Driver :: MySQLi client
      * Last Updated: $Date: 2012-05-25 13:17:47 -0400 (Fri, 25 May 2012) $
      * 
    diff --git a/upload/ips_kernel/classDifference.php b/upload/ips_kernel/classDifference.php index 86faf89a..05ff851f 100644 --- a/upload/ips_kernel/classDifference.php +++ b/upload/ips_kernel/classDifference.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Compare and highlight differences between two strings or files
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/ips_kernel/classEmail.php b/upload/ips_kernel/classEmail.php index 87a56e12..c339e6eb 100644 --- a/upload/ips_kernel/classEmail.php +++ b/upload/ips_kernel/classEmail.php @@ -3,19 +3,19 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Send email using php mail() or SMTP
    - * Last Updated: $Date: 2015-02-13 15:16:16 -0500 (Fri, 13 Feb 2015) $
    + * Last Updated: $Date: 2015-07-03 10:50:06 -0400 (Fri, 03 Jul 2015) $
      * 
    * - * @author $Author: rashbrook $ + * @author $Author: stuarts $ * @copyright (c) 2001 - 2009 Invision Power Services, Inc. * @license http://www.invisionpower.com/company/standards.php#license * @package IP.Board * @subpackage Kernel * @link http://www.invisionpower.com * @since Tuesday 1st March 2005 (11:52) - * @version $Revision: 12597 $ + * @version $Revision: 12655 $ * * * Example usage: @@ -37,7 +37,7 @@ * $email->sendMail(); * */ - + /** * Email class interface * @@ -60,14 +60,14 @@ interface interfaceEmail * @return @e void */ public function clearEmail(); - + /** * Clear stored errors to prepare a new email. * * @return @e void */ public function clearError(); - + /** * Set the from email address * @@ -76,7 +76,7 @@ interface interfaceEmail * @return @e boolean */ public function setFrom( $email, $display='' ); - + /** * Set the 'to' email address * @@ -84,7 +84,7 @@ interface interfaceEmail * @return @e boolean */ public function setTo( $email ); - + /** * Add cc's * @@ -92,7 +92,7 @@ interface interfaceEmail * @return @e boolean */ public function addCC( $email ); - + /** * Add bcc's * @@ -100,7 +100,7 @@ interface interfaceEmail * @return @e boolean */ public function addBCC( $email ); - + /** * Set the email subject * @@ -108,7 +108,7 @@ interface interfaceEmail * @return @e boolean */ public function setSubject( $subject ); - + /** * Set the email body * @@ -116,7 +116,7 @@ interface interfaceEmail * @return @e boolean */ public function setBody( $body ); - + /** * Set a header manually * @@ -125,14 +125,14 @@ interface interfaceEmail * @return @e boolean */ public function setHeader( $key, $value ); - + /** * Send the mail (All appropriate params must be set by this point) * * @return @e boolean */ public function sendMail(); - + /** * Add an attachment to the current email * @@ -151,82 +151,82 @@ interface interfaceEmail class classEmail implements interfaceEmail { /** - * From email address + * From email address * * @var string */ protected $from = ""; - + /** * From email address (displayed) * * @var string */ protected $from_display = ""; - + /** * To email address * * @var string */ protected $to = ""; - + /** * Email subject * * @var string */ protected $subject = ""; - + /** * Email message contents * * @var string */ protected $message = ""; - + /** * PHP mail() extra params * * @var string */ protected $extra_opts = ''; - + /** * Plain text message contents * * @var string */ protected $pt_message = ""; - + /** * Attachments: Parts * * @var array */ protected $parts = array(); - + /** - * CC Email addresses + * CC Email addresses * * @var array */ protected $cc = array(); /** - * BCC Email addresses + * BCC Email addresses * * @var array */ protected $bcc = array(); - + /** * Email headers * * @var array */ protected $mail_headers = array(); - + /** * Header EOL * RFC specs state \r\n @@ -235,140 +235,140 @@ class classEmail implements interfaceEmail * @var string */ const header_eol = "\n"; - + /** * Attachments: Multi-part * * @var string */ protected $multipart = ""; - + /** * Attachments: Boundry * * @var string */ protected $boundry = NULL; - + /** * HTML email flag * * @var integer */ protected $html_email = 0; - + /** * Email character set * * @var string */ protected $char_set = 'utf-8'; - + /** * SMTP: Resource * * @var resource */ protected $smtp_fp = null; - + /** * SMTP: Message * * @var string */ public $smtp_msg = ""; - + /** * SMTP: Port * * @var integer */ protected $smtp_port = 25; - + /** * SMTP: Host * * @var string */ protected $smtp_host = "localhost"; - + /** - * SMTP: Username + * SMTP: Username * * @var string */ protected $smtp_user = ""; - + /** * SMTP: Password * * @var string */ protected $smtp_pass = ""; - + /** * SMTP: HELO or EHLO * * @var string */ public $smtp_helo = "HELO"; - + /** * SMTP: Return code * * @var string */ public $smtp_code = ""; - + /** * SMTP: Wrap email addresses in brackets flag * * @var boolean */ protected $wrap_brackets = false; - + /** * Default email method (mail or smtp) * * @var string */ protected $mail_method = 'mail'; - + /** * Dump email to flat file for testing * * @var integer */ protected $temp_dump = 0; - + /** * Path for email dumps * * @var string */ protected $temp_dump_path = ''; - + /** * Error message * * @var string */ public $error_msg = ''; - + /** * Error description * * @var string */ public $error_help = ''; - + /** * Error flag * * @var boolean */ public $error = false; - + /** * Constructor * @@ -390,20 +390,20 @@ class classEmail implements interfaceEmail $this->smtp_helo = !empty($opts['smtp_helo']) ? $opts['smtp_helo'] : 'HELO'; $this->wrap_brackets = !empty($opts['wrap_brackets']) ? true : false; $this->extra_opts = !empty($opts['extra_opts']) ? $opts['extra_opts'] : ''; - + $this->boundry = "----" . md5( uniqid() . mt_rand( 11111, 99999 ) ); - + if ( ! defined( 'EMAIL_MULTI_HEADERS_IN_BODY' ) ) { define( 'EMAIL_MULTI_HEADERS_IN_BODY', false ); } - + if ( $this->mail_method == 'smtp' && ! $this->temp_dump ) { $this->_smtpConnect(); } } - + /** * Destructor * @@ -416,7 +416,7 @@ class classEmail implements interfaceEmail $this->_smtpDisconnect(); } } - + /** * Sets the HTML version of the email * @@ -427,7 +427,7 @@ class classEmail implements interfaceEmail { $this->message = $content; } - + /** * Sets plain text version of the email * @@ -438,7 +438,7 @@ class classEmail implements interfaceEmail { $this->pt_message = $content; } - + /** * Sets whether or not this is a HTML email * @@ -449,7 +449,7 @@ class classEmail implements interfaceEmail { $this->html_email = ( $boolean ) ? true : false; } - + /** * Clear stored data to prepare a new email. Useful * to prevent having to close/reopen SMTP connection @@ -471,7 +471,7 @@ class classEmail implements interfaceEmail $this->mail_headers = array(); $this->multipart = ''; } - + /** * Clear stored errors to prepare a new email. * @@ -494,18 +494,18 @@ class classEmail implements interfaceEmail public function setFrom( $email, $display='' ) { $this->from = $this->_cleanEmail( $email ); - + if ( $display ) { $sfrom = $this->_encodeHeaders( array( 'FDisplay' => $display ) ); $display = $sfrom['FDisplay']; } - + $this->from_display = $display; - + return true; } - + /** * Set a header manually * @@ -516,10 +516,10 @@ class classEmail implements interfaceEmail public function setHeader( $key, $value ) { $this->mail_headers[ $key ] = $value; - + return true; } - + /** * Set the 'to' email address * @@ -529,10 +529,10 @@ class classEmail implements interfaceEmail public function setTo( $email ) { $this->to = $this->_cleanEmail( $email ); - + return true; } - + /** * Add cc's * @@ -542,10 +542,10 @@ class classEmail implements interfaceEmail public function addCC( $email ) { $this->cc[] = $this->_cleanEmail( $email ); - + return true; } - + /** * Add bcc's * @@ -555,10 +555,10 @@ class classEmail implements interfaceEmail public function addBCC( $email ) { $this->bcc[] = $this->_cleanEmail( $email ); - + return true; } - + /** * Set the email subject * @@ -573,18 +573,18 @@ class classEmail implements interfaceEmail $subject = str_replace( ''' , "'", $subject ); $subject = str_replace( '!' , "!", $subject ); $subject = str_replace( '$' , "$", $subject ); - + if( $this->mail_method != 'smtp' ) { $sheader = $this->_encodeHeaders( array( 'Subject' => $subject ) ); $subject = $sheader['Subject']; } - + $this->subject = $subject; - + return true; } - + /** * Set the email body. This does not need to be called if you have called setHtmlContent() or setPlainTextContent(). * @@ -594,10 +594,10 @@ class classEmail implements interfaceEmail public function setBody( $body ) { $this->message = $body; - + return true; } - + /** * Clean an email address * @@ -612,7 +612,7 @@ class classEmail implements interfaceEmail $email = str_replace( "\n" , '', $email ); $email = str_replace( ',,' , ',', $email ); $email = preg_replace( '#\#\[\]\'"\(\):;/\$!£%\^&\*\{\}#' , "", $email ); - + return $email; } @@ -628,40 +628,40 @@ class classEmail implements interfaceEmail //----------------------------------------- $this->_buildHeaders(); - + //----------------------------------------- // Verify params are all set //----------------------------------------- - + if( $this->temp_dump != 1 && ( !$this->to OR !$this->from OR !$this->subject ) ) { $this->_fatalError( "From, to, or subject empty" ); return false; } - + if( EMAIL_MULTI_HEADERS_IN_BODY && $this->mail_method != 'smtp' && strstr( $this->rfc_headers, $this->boundry ) ) { /* We need to move some stuff around here. PHP Mail likes the message to contain the multiparts but we still need certain headers including boundry*/ $b = preg_quote( $this->boundry, '#' ); - + preg_match( "#\n--" . $b . "(.*)$#s", $this->rfc_headers, $matches ); - + $message = $matches[0]; $headers = str_replace( $matches[0], '', $this->rfc_headers ); - + /* strip off 'this is a mime message' */ preg_match( "#^(.*" . $b . '")#s', $headers, $hMatches ); - + $headers = $hMatches[0]; - + $this->message = $message; $this->rfc_headers = $headers; } - + //----------------------------------------- // Debugging //----------------------------------------- - + if( $this->temp_dump == 1 ) { $debug = $this->subject . "\n------------\n" . $this->rfc_headers . "\n\n" . $this->message; @@ -671,15 +671,15 @@ class classEmail implements interfaceEmail @mkdir( $this->temp_dump_path, IPS_FOLDER_PERMISSION ); @chmod( $this->temp_dump_path, IPS_FOLDER_PERMISSION ); } - + if( !is_dir( $this->temp_dump_path ) ) { $this->_fatalError( "Debugging enabled, but debug path does not exist and cannot be created" ); return false; } - + $pathy = $this->temp_dump_path . '/' . date("M-j-Y") . '-' . time() . str_replace( '@', '+', $this->to ) . uniqid( '_' ) . '.php'; - + $fh = @fopen( $pathy, 'w' ); @fputs( $fh, $debug, strlen($debug) ); @fclose( $fh ); @@ -689,10 +689,10 @@ class classEmail implements interfaceEmail //----------------------------------------- // PHP mail() //----------------------------------------- - + if( $this->mail_method != 'smtp' ) { - /* Fifth parameter not supported in safe mode + /* Fifth parameter not supported in safe mode @link http://community.invisionpower.com/tracker/issue-30145-php-mail-and-safe-mode */ if( ( defined('SAFE_MODE_ON') AND SAFE_MODE_ON ) OR $this->settings['safe_mode_skins'] ) { @@ -709,19 +709,19 @@ class classEmail implements interfaceEmail } } } - + //----------------------------------------- // SMTP //----------------------------------------- - + else { $this->_smtpSendMail(); } } - + $this->clearEmail(); - + return $this->error ? false : true; } @@ -737,7 +737,7 @@ class classEmail implements interfaceEmail $this->error = true; $this->error_msg = $msg; $this->error_help = $help; - + return false; } @@ -745,21 +745,21 @@ class classEmail implements interfaceEmail /*-------------------------------------------------------------------------*/ // HEADERS /*-------------------------------------------------------------------------*/ - + /** * Build the multipart headers for the email * * @return @e string */ - protected function _buildMultipart() + protected function _buildMultipart() { $multipart = ''; - + for( $i = sizeof( $this->parts ) - 1 ; $i >= 0 ; $i-- ) { $multipart .= self::header_eol . $this->_encodeAttachment( $this->parts[$i] ) . "--" . $this->boundry; } - + return $multipart . "--\n"; } @@ -774,69 +774,69 @@ class classEmail implements interfaceEmail * @see http://us2.php.net/manual/en/function.mail.php#27997 */ protected function _encodeHeaders( $headers = array() ) - { + { $enc_headers = count($headers) ? $headers : $this->mail_headers; - - foreach( $enc_headers as $header => $value) + + foreach( $enc_headers as $header => $value) { $orig_value = $value; - + //----------------------------------------- // MTAs seem to dislike 'From' encoded // so we just strip board name and continue //----------------------------------------- - + if( $header == 'From' OR $header == 'Content-Type' OR $header == 'Content-Disposition' OR $header == 'Content-Transfer-Encoding' OR $header == 'v' ) { if ( ! count($headers) ) { $this->mail_headers[ $header ] = $orig_value; } - + $enc_headers[ $header ] = $orig_value; - + continue; } - + //----------------------------------------- // We don't want to keep subject in the // headers for php mail //----------------------------------------- - + if( $this->mail_method != 'smtp' AND ( $header == 'Subject' OR $header == 'FDisplay' ) ) { unset($this->mail_headers[ $header ]); } - + //----------------------------------------- // Don't bother encoding unless we have chars // that need to be encoded //----------------------------------------- - + if( !preg_match( '/(\w*[\x80-\xFF]+\w*)/', $value ) ) { if( $header != 'Subject' AND $header != 'FDisplay' ) { $this->mail_headers[ $header ] = $orig_value; } - + $enc_headers[ $header ] = $orig_value; - + continue; } //----------------------------------------- // Base64 encoding from example at php.net //----------------------------------------- - + $start = '=?' . $this->char_set . '?B?'; $end = '?='; $spacer = $end . self::header_eol . ' ' . $start; $length = 75 - strlen($start) - strlen($end); $length = $length - ($length % 4); - + $value = base64_encode($value); - + /* Chunking confuses some email clients with subject */ if ( $header != 'Subject' AND $header != 'FDisplay' ) { @@ -856,10 +856,10 @@ class classEmail implements interfaceEmail $enc_headers[ $header ] = $value; } } - + return $enc_headers; } - + /** * Build the email headers (MIME, Charset, From, BCC, To, Subject, etc) * @@ -869,51 +869,51 @@ class classEmail implements interfaceEmail { $extra_headers = array(); $extra_headers_rfc = ""; - + //----------------------------------------- // HTML (hitmuhl) // If we're sending HTML messages, then // we'll add the plain text message along with // it for non HTML browsers //----------------------------------------- - + if ( ! $this->pt_message ) { $this->pt_message = $this->message; $this->pt_message = str_replace( "
    ", "\n", $this->pt_message ); $this->pt_message = str_replace( "
    " , "\n", $this->pt_message ); //$this->pt_message = strip_tags( $this->pt_message ); - + $this->pt_message = html_entity_decode( $this->pt_message, ENT_QUOTES ); $this->pt_message = str_replace( '\', '\\', $this->pt_message ); $this->pt_message = str_replace( '$', '$', $this->pt_message ); } - + //----------------------------------------- // Start mail headers //----------------------------------------- - + $this->mail_headers['MIME-Version'] = "1.0"; $this->mail_headers['Date'] = date( "r" ); $this->mail_headers['Return-Path'] = $this->from; $this->mail_headers['X-Priority'] = "3"; //$this->mail_headers['X-MSMail-Priority'] = "Normal"; $this->mail_headers['X-Mailer'] = "IPS PHP Mailer"; - + //----------------------------------------- // Message-ID //----------------------------------------- - + if( $this->mail_method != 'smtp' ) { $this->mail_headers['Message-ID'] = "<" . md5(microtime(true)) . "@" . $_SERVER['HTTP_HOST'] . ">"; } - + //----------------------------------------- // From and to... // @link http://community.invisionpower.com/tracker/issue-22474-mail-delivery-method-character/ //----------------------------------------- - + if( $this->from_display AND !preg_match( '/(\w*[\x80-\xFF]+\w*)/', $this->from_display ) ) { $this->mail_headers['From'] = '"' . $this->from_display . '" <' . $this->from . '>'; @@ -922,7 +922,7 @@ class classEmail implements interfaceEmail { $this->mail_headers['From'] = '<' . $this->from . '>'; } - + if ( $this->mail_method != 'smtp' ) { if( count( $this->cc ) > 0 ) @@ -942,38 +942,42 @@ class classEmail implements interfaceEmail } $this->mail_headers['Subject'] = $this->subject; - + if( count( $this->cc ) > 0 ) { $this->mail_headers['Cc'] = implode( "," , $this->cc ); } } - + //----------------------------------------- // Attachments? //----------------------------------------- - + if ( count($this->parts) > 0 ) { if ( ! $this->html_email ) { - $extra_headers[0]['Content-Type'] = "multipart/mixed;\n\tboundary=\"".$this->boundry."\""; - $extra_headers[0]['notencode'] = "\n\nThis is a MIME encoded message.\n\n--".$this->boundry."\n"; + /* This needs to be an actual header, other needs to be body - #919118 */ + $this->mail_headers['Content-Type'] = "multipart/mixed;\n\tboundary=\"".$this->boundry."\""; +// $extra_headers[0]['Content-Type'] = "multipart/mixed;\n\tboundary=\"".$this->boundry."\""; +// $extra_headers[0]['notencode'] = "\n\nThis is a MIME encoded message.\n\n--".$this->boundry."\n"; $extra_headers[1]['Content-Type'] = "text/plain;\n\tcharset=\"".$this->char_set."\""; $extra_headers[1]['notencode'] = "\n\n".$this->message."\n\n--".$this->boundry; } else { - $extra_headers[0]['Content-Type'] = "multipart/mixed;\n\tboundary=\"".$this->boundry."\""; - $extra_headers[0]['notencode'] = "\n\nThis is a MIME encoded message.\n\n--".$this->boundry."\n"; + /* This needs to be an actual header, other needs to be body - #919118 */ + $this->mail_headers['Content-Type'] = "multipart/mixed;\n\tboundary=\"".$this->boundry."\""; +// $extra_headers[0]['Content-Type'] = "multipart/mixed;\n\tboundary=\"".$this->boundry."\""; +// $extra_headers[0]['notencode'] = "\n\nThis is a MIME encoded message.\n\n--".$this->boundry."\n"; $extra_headers[1]['Content-Type'] = "text/html;\n\tcharset=\"".$this->char_set."\""; $extra_headers[1]['notencode'] = "\n\n".$this->message."\n\n--".$this->boundry; } - + $extra_headers[2]['notencode'] = $this->_buildMultipart(); - + reset($extra_headers); - + foreach( $extra_headers as $subset => $the_header ) { foreach( $the_header as $k => $v ) @@ -990,7 +994,7 @@ class classEmail implements interfaceEmail } } } - + $this->message = ""; } else @@ -998,18 +1002,20 @@ class classEmail implements interfaceEmail //----------------------------------------- // HTML (hitmuhl) ? //----------------------------------------- - + if ( $this->html_email ) { - $extra_headers[0]['Content-Type'] = "multipart/alternative;\n\tboundary=\"".$this->boundry."\""; - $extra_headers[0]['notencode'] = "\n\nThis is a MIME encoded message.\n\n--".$this->boundry."\n"; + /* This needs to be an actual header, other needs to be body - #919118 */ + $this->mail_headers['Content-Type'] = "multipart/alternative;\n\tboundary=\"".$this->boundry."\""; + //$extra_headers[0]['Content-Type'] = "multipart/alternative;\n\tboundary=\"".$this->boundry."\""; + //$extra_headers[0]['notencode'] = "\n\nThis is a MIME encoded message.\n\n--".$this->boundry."\n"; $extra_headers[1]['Content-Type'] = "text/plain;\n\tcharset=\"".$this->char_set."\""; $extra_headers[1]['notencode'] = "\n\n".$this->pt_message."\n\n--".$this->boundry."\n"; $extra_headers[2]['Content-Type'] = "text/html;\n\tcharset=\"".$this->char_set."\""; $extra_headers[2]['notencode'] = "\n\n".$this->message."\n\n--".$this->boundry."--"; - + reset($extra_headers); - + foreach( $extra_headers as $subset => $the_header ) { foreach( $the_header as $k => $v ) @@ -1026,9 +1032,10 @@ class classEmail implements interfaceEmail } } } - - unset( $this->mail_headers['Content-Type'] ); - + + /* Don't unset this - #919118 */ + // unset( $this->mail_headers['Content-Type'] ); + $this->message = ""; } else @@ -1036,29 +1043,31 @@ class classEmail implements interfaceEmail $this->mail_headers['Content-type'] = 'text/plain; charset="'.$this->char_set.'"'; } } - + $this->_encodeHeaders(); - + foreach( $this->mail_headers as $k => $v ) { $this->rfc_headers .= $k . ": " . $v . self::header_eol; } - + //----------------------------------------- // Attachments extra? //----------------------------------------- - + if( $extra_headers_rfc ) { - $this->rfc_headers .= $extra_headers_rfc; + /* These must be set as the body - #919118 */ + $this->message .= $extra_headers_rfc; + //$this->rfc_headers .= $extra_headers_rfc; } } - - + + /*-------------------------------------------------------------------------*/ // SMTP Methods /*-------------------------------------------------------------------------*/ - + /** * SMTP connect * @@ -1067,76 +1076,76 @@ class classEmail implements interfaceEmail protected function _smtpConnect() { $tls = FALSE; - + if ( substr( $this->smtp_host, 0, 6 ) == 'tls://' ) { $tls = TRUE; $this->smtp_host = str_replace( 'tls://', '', $this->smtp_host ); } - + $this->smtp_fp = @fsockopen( $this->smtp_host, intval($this->smtp_port), $errno, $errstr, 30 ); - + if ( ! $this->smtp_fp ) { $this->_smtpError( "Could not open a socket to the SMTP server ({$errno}:{$errstr})" ); return false; } - + $this->_smtpGetLine(); - + $this->smtp_code = substr( $this->smtp_msg, 0, 3 ); - + if ( $this->smtp_code == 220 ) { //----------------------------------------- // HELO!, er... HELLO! //----------------------------------------- - + $this->_smtpSendCmd( "{$this->smtp_helo} " . $this->smtp_host ); - + if ( $this->smtp_code != 250 ) { $this->_smtpError( "HELO (using: {$this->smtp_helo})" ); return false; } - + if ( $tls == TRUE ) { $this->_smtpSendCmd( "STARTTLS" ); - + if ( $this->smtp_code != 220 ) { $this->_smtpError( "STARTTLS Failed" ); return false; } - + if ( ! @stream_socket_enable_crypto( $this->smtp_fp, TRUE, STREAM_CRYPTO_METHOD_TLS_CLIENT ) ) { $this->_smtpError( "Failed to enable crypto (TLS)" ); return false; } } - + //----------------------------------------- // Do you like my user! //----------------------------------------- - + if ( $this->smtp_user AND $this->smtp_pass ) { $this->_smtpSendCmd( "AUTH LOGIN" ); - + if ( $this->smtp_code == 334 ) { $this->_smtpSendCmd( base64_encode($this->smtp_user) ); - + if ( $this->smtp_code != 334 ) { $this->_smtpError( "Username not accepted from the server" ); return false; } - + $this->_smtpSendCmd( base64_encode($this->smtp_pass) ); - + if ( $this->smtp_code != 235 ) { $this->_smtpError( "Password not accepted from the server" ); @@ -1155,10 +1164,10 @@ class classEmail implements interfaceEmail $this->_smtpError( "Could not connect to the SMTP server" ); return false; } - + return true; } - + /** * SMTP disconnect * @@ -1173,10 +1182,10 @@ class classEmail implements interfaceEmail $this->_smtpError( "Unable to exit SMTP server with 'quit' command" ); return false; } - + return @fclose( $this->smtp_fp ); } - + /** * SMTP: Get next line * @@ -1185,18 +1194,18 @@ class classEmail implements interfaceEmail protected function _smtpGetLine() { $this->smtp_msg = ""; - + while ( $line = @fgets( $this->smtp_fp, 515 ) ) { $this->smtp_msg .= $line; - + if ( substr($line, 3, 1) == " " ) { break; } } } - + /** * SMTP: Send command * @@ -1207,16 +1216,16 @@ class classEmail implements interfaceEmail { $this->smtp_msg = ""; $this->smtp_code = ""; - + @fputs( $this->smtp_fp, $cmd . "\r\n" ); - + $this->_smtpGetLine(); - + $this->smtp_code = substr( $this->smtp_msg, 0, 3 ); - + return $this->smtp_code == "" ? false : true; } - + /** * Encode data and make it safe for SMTP transport * @@ -1228,10 +1237,10 @@ class classEmail implements interfaceEmail $data .= "\n"; $data = str_replace( "\n", "\r\n", str_replace( "\r", "", $data ) ); $data = str_replace( "\n.\r\n" , "\n. \r\n", $data ); - + return $data; } - + /** * SMTP: Error handler * @@ -1244,7 +1253,7 @@ class classEmail implements interfaceEmail $this->_fatalError( $err ); return false; } - + /** * SMTP: Sends the SMTP email * @@ -1257,7 +1266,7 @@ class classEmail implements interfaceEmail //----------------------------------------- // Wrap in brackets //----------------------------------------- - + if ( $this->wrap_brackets ) { if ( ! preg_match( "/^from ) ) @@ -1265,21 +1274,21 @@ class classEmail implements interfaceEmail $this->from = "<" . $this->from . ">"; } } - + //----------------------------------------- // From: //----------------------------------------- - + $this->_smtpSendCmd( "MAIL FROM:" . $this->from ); - + if ( $this->smtp_code != 250 ) { $this->_smtpError( "Mail from command failed" ); return false; } - + $to_arry = array( $this->to ); - + if( count( $this->cc ) > 0 ) { foreach( $this->cc as $cc ) @@ -1287,7 +1296,7 @@ class classEmail implements interfaceEmail $to_arry[] = $cc; } } - + if( count( $this->bcc ) > 0 ) { foreach( $this->bcc as $bcc ) @@ -1295,11 +1304,11 @@ class classEmail implements interfaceEmail $to_arry[] = $bcc; } } - + //----------------------------------------- // To: //----------------------------------------- - + foreach( $to_arry as $to_email ) { if ( $this->wrap_brackets ) @@ -1310,19 +1319,19 @@ class classEmail implements interfaceEmail { $this->_smtpSendCmd( "RCPT TO:" . $to_email ); } - + if ( $this->smtp_code != 250 ) { $this->_smtpError( "Incorrect email address: $to_email" ); } } - + //----------------------------------------- // SEND MAIL! //----------------------------------------- - + $this->_smtpSendCmd( "DATA" ); - + if ( $this->smtp_code == 354 ) { fputs( $this->smtp_fp, $data . "\r\n" ); @@ -1332,25 +1341,25 @@ class classEmail implements interfaceEmail $this->_smtpError( "Error writing email body to SMTP server"); return false; } - + //----------------------------------------- // GO ON, NAFF OFF! //----------------------------------------- - + $this->_smtpSendCmd( "." ); - + if ( $this->smtp_code != 250 ) { $this->_smtpError( "Email was not sent successfully" ); return false; } } - - + + /*-------------------------------------------------------------------------*/ // ATTACHMENTS /*-------------------------------------------------------------------------*/ - + /** * Add an attachment to the current email * @@ -1367,7 +1376,7 @@ class classEmail implements interfaceEmail 'name' => $name ); } - + /** * Encode an attachment * @@ -1377,23 +1386,23 @@ class classEmail implements interfaceEmail protected function _encodeAttachment( $part=array() ) { $msg = chunk_split( base64_encode( $part['data'] ) ); - + $headers = array(); $header_str = ""; $headers['Content-Type'] = $part['ctype'] . ( $part['name'] ? "; name =\"".$part['name']."\"" : "" ); $headers['Content-Transfer-Encoding'] = $part['encode']; $headers['Content-Disposition'] = "attachment; filename=\"".$part['name']."\""; - + $headers = $this->_encodeHeaders( $headers ); - + foreach( $headers as $k => $v ) { $header_str .= $k . ': ' . $v . self::header_eol; } - + $header_str .= "\n\n" . $msg . "\n"; - + return $header_str; } } \ No newline at end of file diff --git a/upload/ips_kernel/classFileManagement.php b/upload/ips_kernel/classFileManagement.php index 11e79f74..4cc26c74 100644 --- a/upload/ips_kernel/classFileManagement.php +++ b/upload/ips_kernel/classFileManagement.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Wrapper for retrieving file contents.  Methods available for removing files and directories as well.
      * Last Updated: $Date: 2015-04-22 12:58:04 -0400 (Wed, 22 Apr 2015) $
      * 
    diff --git a/upload/ips_kernel/classFtp.php b/upload/ips_kernel/classFtp.php index 847e0200..aec2878f 100644 --- a/upload/ips_kernel/classFtp.php +++ b/upload/ips_kernel/classFtp.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * FTP Class
      * Last Updated: $Date: 2013-02-06 10:51:28 -0500 (Wed, 06 Feb 2013) $ BY $Author: mark $
      * 
    diff --git a/upload/ips_kernel/classImage.php b/upload/ips_kernel/classImage.php index 885bf145..148c8a33 100644 --- a/upload/ips_kernel/classImage.php +++ b/upload/ips_kernel/classImage.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Image Handler: create thumbnails, apply watermarks and copyright tests, save or display final image
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/ips_kernel/classImageGd.php b/upload/ips_kernel/classImageGd.php index 1bf6f52c..94648b7e 100644 --- a/upload/ips_kernel/classImageGd.php +++ b/upload/ips_kernel/classImageGd.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Image Handler: GD2 Library
      * Last Updated: $Date: 2013-02-06 19:48:42 -0500 (Wed, 06 Feb 2013) $
      * 
    diff --git a/upload/ips_kernel/classImageImagemagick.php b/upload/ips_kernel/classImageImagemagick.php index 632cb9f1..ebd947cc 100644 --- a/upload/ips_kernel/classImageImagemagick.php +++ b/upload/ips_kernel/classImageImagemagick.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Image Handler: ImageMagick Library
      * Last Updated: $Date: 2013-08-05 19:04:11 -0400 (Mon, 05 Aug 2013) $
      * 
    diff --git a/upload/ips_kernel/classMerge.php b/upload/ips_kernel/classMerge.php index 90b9b6e5..22256395 100644 --- a/upload/ips_kernel/classMerge.php +++ b/upload/ips_kernel/classMerge.php @@ -2,7 +2,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Three Way Merge Class
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $ BY $author$
      * 
    diff --git a/upload/ips_kernel/classRss.php b/upload/ips_kernel/classRss.php index 0e9a1b0e..eb063b1d 100644 --- a/upload/ips_kernel/classRss.php +++ b/upload/ips_kernel/classRss.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * RSS handler: handles importing of RSS documents and exporting of RSS v2 documents
      * Last Updated: $Date: 2012-07-10 06:47:19 -0400 (Tue, 10 Jul 2012) $
      * 
    diff --git a/upload/ips_kernel/classTemplateEngine.php b/upload/ips_kernel/classTemplateEngine.php index d378c03b..75d18668 100644 --- a/upload/ips_kernel/classTemplateEngine.php +++ b/upload/ips_kernel/classTemplateEngine.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Template Parser : Converts HTML "logic" into PHP code
      * Last Updated: $Date: 2012-10-18 10:27:08 -0400 (Thu, 18 Oct 2012) $
      * 
    diff --git a/upload/ips_kernel/classUpload.php b/upload/ips_kernel/classUpload.php index 921f6ebe..dc759b8a 100644 --- a/upload/ips_kernel/classUpload.php +++ b/upload/ips_kernel/classUpload.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * Upload handler : Handles $_FILES and checks for security
      * Last Updated: $Date: 2014-09-09 04:24:53 -0400 (Tue, 09 Sep 2014) $
      * 
    diff --git a/upload/ips_kernel/classXML.php b/upload/ips_kernel/classXML.php index 8de5f440..49b8a61e 100644 --- a/upload/ips_kernel/classXML.php +++ b/upload/ips_kernel/classXML.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * XML Handler: Rewritten for PHP5
      * By Matt Mecham
      * Last Updated: $Date: 2012-07-27 11:43:25 -0400 (Fri, 27 Jul 2012) $
    diff --git a/upload/ips_kernel/classXMLArchive.php b/upload/ips_kernel/classXMLArchive.php
    index ece048a3..45400176 100644
    --- a/upload/ips_kernel/classXMLArchive.php
    +++ b/upload/ips_kernel/classXMLArchive.php
    @@ -3,7 +3,7 @@
     /**
      * 
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * XML Archive Hanlder: Can create XML Archives (gzips) of multiple files, binary and ascii
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/ips_kernel/classXmlRpc.php b/upload/ips_kernel/classXmlRpc.php index e0ab20ff..5c7c0155 100644 --- a/upload/ips_kernel/classXmlRpc.php +++ b/upload/ips_kernel/classXmlRpc.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * XML-RPC Server: Send, receive and process XML-RPC requests
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/ips_kernel/class_xml.php b/upload/ips_kernel/class_xml.php index eceaa6f0..5182f146 100644 --- a/upload/ips_kernel/class_xml.php +++ b/upload/ips_kernel/class_xml.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * XML Handler: Can use PHP's internal XML handler, or a lite hand-rolled parser, to create and read XML files
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
      * 
    diff --git a/upload/ips_kernel/db_lib/mysql_tools.php b/upload/ips_kernel/db_lib/mysql_tools.php index 8507956a..e900f143 100644 --- a/upload/ips_kernel/db_lib/mysql_tools.php +++ b/upload/ips_kernel/db_lib/mysql_tools.php @@ -8,7 +8,7 @@ * $Author: AndyMillne $ * @since Tuesday 1st March 2005 15:40 * $LastChangedDate: 2013-05-07 11:14:15 -0400 (Tue, 07 May 2013) $ - * @version v3.4.8 + * @version v3.4.9 * $Revision: 12235 $ */ diff --git a/upload/ips_kernel/interfaces/interfaceCache.php b/upload/ips_kernel/interfaces/interfaceCache.php index b0268093..870e2a51 100644 --- a/upload/ips_kernel/interfaces/interfaceCache.php +++ b/upload/ips_kernel/interfaces/interfaceCache.php @@ -3,7 +3,7 @@ /** *
      * Invision Power Services
    - * IP.Board v3.4.8
    + * IP.Board v3.4.9
      * This class acts as a cache layer, allowing you to store and retrieve data in
      *	external cache sources such as memcache or APC
      * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
    diff --git a/upload/lofiversion/index.php b/upload/lofiversion/index.php
    index 8fdc21c5..99effec9 100644
    --- a/upload/lofiversion/index.php
    +++ b/upload/lofiversion/index.php
    @@ -8,7 +8,7 @@
      * $Author: ips_terabyte $
      * @since		IP.Board 3.0.0
      * $LastChangedDate: 2011-03-11 12:41:48 -0500 (Fri, 11 Mar 2011) $
    - * @version		v3.4.8
    + * @version		v3.4.9
      * $Revision: 8042 $
      */
     
    diff --git a/upload/public/js/ipb.js b/upload/public/js/ipb.js
    index b6bdd93d..27ff99ad 100644
    --- a/upload/public/js/ipb.js
    +++ b/upload/public/js/ipb.js
    @@ -1673,16 +1673,19 @@ _global.prototype.global = {
     				
     				if ( collapsed )
     				{
    -					var wrapper = new Element( 'div', {'class': '_quote-wrapper' } ).update( el.innerHTML );
    -					el.update( wrapper );
    -					el.down('div._quote-wrapper').hide();
    -					el.insert( new Element( 'p', { 'class': '___x clickable' } ).update( ipb.lang['quote_expand'] ) );
    -					
    -					el.down('p.___x').on( 'click', function( e, elem )
    +					// Hide this element
    +					el.hide();
    +
    +					// Create a new blockquote that will be our 'clickable' area
    +					var bq = new Element( 'blockquote', { 'class': 'ipsBlockquote built clickable' } ).update( ipb.lang['quote_expand'] );
    +
    +					bq.on( 'click', function( e, elem )
     					{
    -						elem.up('blockquote').down('div._quote-wrapper').show();
    -						elem.hide();
    +						el.show();
    +						bq.remove();
     					} );
    +
    +					el.insert( { before: bq } );
     				}
     			}
     		} );
    @@ -4241,15 +4244,23 @@ _popup.prototype.Popup = Class.create({
     	
     	update: function( content, evalScript )
     	{
    +		var scripts = [];
    +		
     		if( Object.isElement( content ) ){
     			this.inner.insert( { bottom: content } );
     		} else {
    +			// Get the scripts we'll need to execute
    +			scripts = content.extractScripts();
    +			content = content.stripScripts();
    +
     			this.inner.update( content );
     		}
    -		
    +
     		// Should this popup eval scripts? Default is YES
    -		if( Object.isUndefined( evalScript ) || evalScript != false ){
    -			this.inner.innerHTML.evalScripts();
    +		if( ( Object.isUndefined( evalScript ) || evalScript != false ) && this.options.evalScript ){
    +			scripts.map( function (script) {
    +				eval( script );
    +			});
     		}
     	},
     	
    diff --git a/upload/public/js/ips.attach.js b/upload/public/js/ips.attach.js
    index be236a55..1019bd08 100644
    --- a/upload/public/js/ips.attach.js
    +++ b/upload/public/js/ips.attach.js
    @@ -701,7 +701,7 @@ _attach.prototype.attachSWF = Class.create({
     	*/
     	_buildBox: function( file )
     	{
    -		temp = this.template.gsub(/\[id\]/, this.id + '_' + file.index).gsub(/\[name\]/, file.name);
    +		temp = this.template.gsub(/\[id\]/, this.id + '_' + file.index).gsub(/\[name\]/, file.name.replace( //g, '-' ) );
     		this.boxes[ file.index ] = 'ali_' + this.id + '_' + file.index;
     		
     		$( this.wrapper ).insert( temp );
    diff --git a/upload/public/js/ips.calendar.js b/upload/public/js/ips.calendar.js
    new file mode 100644
    index 00000000..4220b5fb
    --- /dev/null
    +++ b/upload/public/js/ips.calendar.js
    @@ -0,0 +1,396 @@
    +/************************************************/
    +/* IPB3 Javascript								*/
    +/* -------------------------------------------- */
    +/* ips.calendar.js - Calendar code				*/
    +/* (c) IPS, Inc 2008							*/
    +/* -------------------------------------------- */
    +/* Author: Rikki Tissier						*/
    +/************************************************/
    +
    +var _cal = window.IPBoard;
    +
    +_cal.prototype.calendar = {
    +	inSection: 	'',
    +	popup: null,
    +	yearLimit: 6,
    +	startYear: 0,
    +	
    +	/* ------------------------------ */
    +	/**
    +	 * Constructor
    +	*/
    +	init: function()
    +	{
    +		Debug.write("Initializing ips.calendar.js");
    +		
    +		document.observe("dom:loaded", function(){
    +			ipb.calendar.initEvents();
    +			
    +			if( $('calendar_table') )
    +			{
    +				if( ipb.vars['is_touch'] === false )
    +				{
    +					$('calendar_table').on( "click", 'td:not(.blank):not(.col_cal_date)', ipb.calendar.selectCell );
    +					$('calendar_table').on( "dblclick", 'td:not(.blank):not(.col_cal_date)', ipb.calendar.viewDay );
    +				}
    +				else
    +				{
    +					// http://community.invisionpower.com/resources/bugs.html/_/ip-calendar/viewing-calendar-events-from-ios-device-r41517
    +					//$('calendar_table').on( "click", 'td:not(.blank):not(.col_cal_date)', ipb.calendar.viewDay );
    +				}
    +			}
    +			
    +			if( $('view_month') ){
    +				$('view_month').observe("click", ipb.calendar.viewMonth);
    +			}
    +			if( $('view_week') ){
    +				$('view_week').observe("click", ipb.calendar.viewWeek);
    +			}
    +			if( $('view_day') ){
    +				$('view_day').observe("click", ipb.calendar.viewDay);
    +			}
    +			ipb.delegate.register("#month_jump", ipb.calendar.showJump);
    +		});
    +	},
    +	
    +	showJump: function(e, elem)
    +	{
    +		Event.stop(e);
    +		
    +		if( ipb.calendar.popup ){
    +			ipb.calendar.popup.show();
    +		} else {
    +			ipb.calendar.popup = new ipb.Popup( 'month_jump', { 	type: 'balloon',
    +											initial: $('mini_calendar_jump').show(),
    +											hideAtStart: false,
    +											stem: true,
    +											hideClose: true,
    +											attach: { target: elem, position: 'auto' },
    +											w: '240px'
    +										} );
    +		}
    +	},
    +	
    +	selectCell: function(e, elem)
    +	{
    +		$$("#calendar_table td.selected").invoke("removeClassName", "selected").invoke("writeAttribute", "unselectable", "off");
    +		$( elem ).writeAttribute("unselectable", "on");
    +		$( elem ).addClassName('selected');
    +		
    +		if ( $('ips_addEventButton') )
    +		{
    +			url = $('ips_addEventButton').readAttribute('href');
    +			url = url.replace( /\/add(.*)$/, '/add' );
    +			
    +			bits = elem.id.split('-');
    +			
    +			y = bits[1];
    +			m = bits[2];
    +			d = bits[3];
    +			
    +			if ( y && m && d )
    +			{
    +				url = url + ipb.vars['seo_params']['varBlock']
    +						  + 'd' + ipb.vars['seo_params']['varSep'] + d + ipb.vars['seo_params']['varSep']
    +						  + 'm' + ipb.vars['seo_params']['varSep'] + m + ipb.vars['seo_params']['varSep']
    +						  + 'y' + ipb.vars['seo_params']['varSep'] + y;
    +						  
    +				$('ips_addEventButton').writeAttribute('href', url);
    +			}
    +		}
    +	},
    +	
    +	addCalEvent: function(e, elem)
    +	{
    +		window.location = ipb.vars['add_event_url'];
    +	},
    +	
    +	viewDay: function(e)
    +	{
    +		if( ipb.calendar.currentView == 'day' )
    +		{
    +			return;
    +		}
    +		
    +		var active = ipb.calendar.findActive();
    +		if( !active ){ return; }
    +		
    +		Event.stop(e);
    +		if( active.hasAttribute("data-furl") )
    +		{
    +			window.location = active.readAttribute("data-furl");
    +		}
    +		else
    +		{
    +			var date = $(active).id.match(/(\d+)/gi);		
    +			window.location = ipb.vars['day_url'] + "&y=" + date[0] + "&m=" + date[1] + "&d=" + date[2];
    +		}
    +	},
    +	
    +	viewWeek: function(e)
    +	{
    +		if( ipb.calendar.currentView == 'day' ){
    +			Event.stop(e);
    +			window.location = ipb.vars['week_url'] + "&week=" + ipb.calendar.weekToJump;
    +			return;
    +		}
    +		
    +		var active = ipb.calendar.findActive();
    +		if( !active ){ return; }
    +		
    +		// Find the active row
    +		var timestamp = $( active ).up("tr").readAttribute("data-week");
    +		
    +		if( !timestamp )
    +		{
    +			return;
    +		}
    +
    +		Event.stop(e);
    +		window.location = ipb.vars['week_url'] + "&week=" + timestamp;		
    +	},
    +	
    +	viewMonth: function(e)
    +	{
    +		Event.stop(e);
    +		
    +		if( ipb.calendar.currentView == 'day' )
    +		{
    +			window.location = ipb.vars['month_url'] + "&y=" + ipb.calendar.currentYear + "&m=" + ipb.calendar.currentMonth;
    +			return;
    +		}
    +		
    +		var active = ipb.calendar.findActive();
    +		if( !active ){ return; }
    +		
    +		var date = $(active).id.match(/(\d+)/gi);		
    +		window.location = ipb.vars['month_url'] + "&y=" + date[0] + "&m=" + date[1];
    +	},
    +	
    +	findActive: function()
    +	{
    +		// Find active cell (Selected > Today > First of the month)
    +		var active = ["td.selected","td.today","td:not(.blank):not(.col_cal_date)"].find( function(n){
    +			return $("calendar_table").select( n ).size();
    +		});
    +		if( !active ){ return; }
    +		active = $("calendar_table").select( active )[0];
    +		
    +		return active;
    +	},
    +	
    +	/* ------------------------------ */
    +	/**
    +	 * Set up page events
    +	*/
    +	initEvents: function()
    +	{
    +		ipb.delegate.register('.post_id a[rel~="bookmark"]', ipb.calendar.showLinkToEvent );
    +		
    +		if( $('rsvp-button') )
    +		{
    +			$('rsvp-button').observe( 'click', ipb.calendar.rsvpEvent );
    +		}
    +		
    +		if( ipb.calendar.inSection == 'form' )
    +		{
    +			if( $('all_day') )
    +			{
    +				if( $F('all_day') == 1 )
    +				{
    +					$$('.time_setting').invoke('hide');
    +				}
    +
    +				$('all_day').observe( 'click', function(e)
    +				{
    +					$$('.time_setting').invoke('toggle');
    +				});
    +			}
    +			
    +			if( $('set_enddate') )
    +			{
    +				if( $F('set_enddate') != 1 )
    +				{
    +					$('end_date_fields').hide();
    +				}
    +
    +				$('set_enddate').observe( 'click', function(e)
    +				{
    +					$('end_date_fields').toggle();
    +					
    +					if( $F('set_recurfields') == 1 )
    +					{
    +						$('set_recurfields').checked	= false;
    +						$('recur_fields').toggle();
    +					}
    +				});
    +			}
    +
    +			if( $('set_recurfields') )
    +			{
    +				if( $F('set_recurfields') != 1 )
    +				{
    +					$('recur_fields').hide();
    +				}
    +
    +				$('set_recurfields').observe( 'click', function(e)
    +				{
    +					$('recur_fields').toggle();
    +					
    +					if( $F('set_enddate') != 1 && $F('set_recurfields') == 1 )
    +					{
    +						$('set_enddate').checked	= true;
    +						$('end_date_fields').toggle();
    +					}
    +				});
    +			}
    +			
    +			var yearRange	= new Array();
    +			
    +			if( !ipb.calendar.startYear )
    +			{
    +				var _d	= new Date();
    +				ipb.calendar.startYear	= _d.getFullYear();
    +			}
    +			
    +			yearRange.push( ipb.calendar.startYear );
    +			
    +			if( ipb.calendar.yearLimit )
    +			{
    +				yearRange.push( ipb.calendar.startYear + ipb.calendar.yearLimit );
    +			}
    +			else
    +			{
    +				yearRange.push( ipb.calendar.startYear + 6 );
    +			}
    +			
    +			if( $('start_date') && $('start_date_icon') )
    +			{
    +				$('start_date_icon').observe('click', function(e){
    +					ipb.calendar.calendar_start = new CalendarDateSelect( $('start_date'), { year_range: yearRange, time: false, close_on_click: true, format: 'american' } );
    +				});
    +			}
    +			
    +			if( $('end_date') && $('end_date_icon') )
    +			{
    +				$('end_date_icon').observe('click', function(e){
    +					ipb.calendar.calendar_start = new CalendarDateSelect( $('end_date'), { year_range: yearRange, time: false, close_on_click: true, format: 'american' } );
    +				});
    +			}
    +		
    +			if( $('e_groups') )
    +			{
    +				$('e_type').observe( 'change', ipb.calendar.hideAdminOptions );
    +			}
    +		
    +			if( $('all_groups') )
    +			{
    +				$('all_groups').observe( 'click', ipb.calendar.checkAllGroups );
    +			}
    +			
    +			ipb.calendar.hideAdminOptions();
    +		}
    +	},
    +	
    +	/* ------------------------------ */
    +	/**
    +	 * RSVP for event
    +	 * 
    +	 * @var		{event}		e	The event
    +	*/
    +	rsvpEvent: function(e)
    +	{
    +		Event.stop(e);
    +		
    +		var eventid	= Event.findElement(e, 'a').rel.replace( /event_id_/, '' );
    +		var url		= ipb.vars['base_url'] + 'app=calendar&module=ajax§ion=rsvp&do=add&event_id=' + eventid;
    +
    +		new Ajax.Request(	url,
    +							{
    +								method: 'post',
    +								evalJSON: 'force',
    +								parameters: {
    +									md5check: 	ipb.vars['secure_hash']
    +								},
    +								onSuccess: function(t)
    +								{
    +									if( t.responseJSON['error'] )
    +									{
    +										alert(t.responseJSON['error']);
    +									}
    +									else
    +									{
    +										if( $('no_attendees') ){
    +											$('no_attendees').remove();
    +										}
    +										
    +										$('rsvp_button').hide();
    +										//$('rsvp-button').each( function(elem) { $(elem).hide(); } );
    +
    +										$('attendee_list').insert( t.responseJSON['html'] );
    +									}
    +								}
    +							}
    +						);
    +		
    +		return false;
    +	},
    +		
    +	/* ------------------------------ */
    +	/**
    +	 * Checks all groups on the add event form
    +	 * 
    +	 * @var		{event}		e	The event
    +	*/
    +	checkAllGroups: function(e)
    +	{
    +		if( $F('all_groups') == '1' )
    +		{
    +			for( var i=0; i< $('e_groups').options.length; i++){
    +				$('e_groups').options[i].selected = true;
    +			}
    +			
    +			$('e_groups').disable();
    +		}
    +		else
    +		{
    +			$('e_groups').enable();
    +			
    +			for( var i=0; i< $('e_groups').options.length; i++){
    +				$('e_groups').options[i].selected = false;
    +			}
    +		}
    +	},
    +
    +	/* ------------------------------ */
    +	/**
    +	 * Hides unused options on the add event form
    +	 * 
    +	 * @var		{event}		e	The event
    +	*/	
    +	hideAdminOptions: function(e)
    +	{
    +		if( $('e_type') && $F('e_type') == 'public' )
    +		{
    +			$$('.type_setting').invoke('show');
    +		}
    +		else
    +		{
    +			$$('.type_setting').invoke('hide');
    +		}
    +	},
    +	
    +	/* ------------------------------ */
    +	/**
    +	 * Shows a prompt allowing user to copy the URL
    +	 * 
    +	 * @var		{event}		e		The event
    +	*/
    +	showLinkToEvent: function(e, elem)
    +	{
    +		_t = prompt( ipb.lang['copy_topic_link'], $( elem ).readAttribute('href') );
    +		Event.stop(e);
    +	}
    +};
    +
    +ipb.calendar.init();
    \ No newline at end of file
    diff --git a/upload/public/js/ips.comments.js b/upload/public/js/ips.comments.js
    index 7856d076..57ed9201 100644
    --- a/upload/public/js/ips.comments.js
    +++ b/upload/public/js/ips.comments.js
    @@ -418,9 +418,11 @@ _comments.prototype.comments = {
     		
     		edit['pid'] = edit['button'].id.replace('edit_comment_', '');
     		edit['post'] = $( 'comment_id_' + edit['pid'] ).down('.comment_content');
    +		edit['edit_post'] = new Element( 'div', { id: 'comment_id_edit_' + edit['pid'] } );
     		
    -		// Find post content
    -		ipb.comments.commentCache[ edit['pid'] ] = edit['post'].innerHTML;
    +		edit['post'].insert({
    +			after: edit['edit_post']
    +		});
     
     		url = ipb.comments.data['ajaxShowEditUrl'] ? ipb.comments.data['ajaxShowEditUrl'] : ipb.vars['base_url'] + 'app=core&module=ajax§ion=comments&do=showEdit&parentId=' +ipb.comments.parentId + '&fromApp=' + ipb.comments.data['fromApp'];
     		
    @@ -457,7 +459,8 @@ _comments.prototype.comments = {
     									// Put it in
     									edit['button'].writeAttribute('_editing', '1');
     									
    -									edit['post'].update( t.responseText );
    +									edit['post'].hide();
    +									edit['edit_post'].show().update( t.responseText );
     									
     									edit['pid'] = 'e' + edit['pid'];
     
    @@ -532,7 +535,8 @@ _comments.prototype.comments = {
     										
     										$('edit_comment_' + postid).writeAttribute('_editing', '0');
     										
    -										$( 'comment_id_' + postid ).down('.comment_content').update( t.responseJSON['successString'] );
    +										$('comment_id_' + postid).down('.comment_content').show().update( t.responseJSON['successString'] );
    +										$('comment_id_edit_' + postid).remove();
     										
     										if ( Prototype.Browser.IE7 )
     										{
    @@ -564,12 +568,11 @@ _comments.prototype.comments = {
     		var postid = elem.id.replace('edit_cancel_e', '');
     		if( !postid ){ return; }
     		
    -		if( ipb.comments.commentCache[ postid ] ){
    -			$( 'comment_id_' + postid ).down('.comment_content').update( ipb.comments.commentCache[ postid ] );
    -			$('edit_comment_' + postid).writeAttribute('_editing', '0');
    -			
    -			ipb.textEditor.getEditor( 'edit-' + postid ).remove();
    -		}
    +		ipb.textEditor.getEditor( 'edit-' + postid ).remove();
    +
    +		$('comment_id_edit_' + postid).remove();
    +		$('comment_id_' + postid).down('.comment_content').show();
    +		$('edit_comment_' + postid).writeAttribute('_editing', '0');		
     		
     		return;
     	},
    diff --git a/upload/public/js/ips.topic.js b/upload/public/js/ips.topic.js
    index 0fdf9708..f8c3b0ce 100644
    --- a/upload/public/js/ips.topic.js
    +++ b/upload/public/js/ips.topic.js
    @@ -14,7 +14,6 @@ _topic.prototype.topic = {
     	inSection: '',
     	topic_id: 0,
     	page_id: 0,
    -	postcache: [],
     	poll: [],
     	pollPopups: [],
     	deletePerms: {},
    @@ -45,7 +44,7 @@ _topic.prototype.topic = {
     				{
     					var pid = window.location.hash.substring(1).replace(/entry/, '');
     					
    -					if ( ipb.topic.redirectPost && pid && $$('a[data-entry-pid]').length && ! $$('a[data-entry-pid="' + pid + '"]').length )
    +					if ( ipb.topic.redirectPost && pid && $$('a[data-entry-pid]').length && ( ! $$('a[data-entry-pid="' + pid + '"]').length && ! $( 'postsDelete_' + pid ) ) )
     					{ 
     						window.location = ipb.vars['board_url'] + '/index.php?app=forums&module=forums§ion=findpost&pid=' + pid + '&t=' + ipb.topic.topic_id;
     					}
    @@ -568,9 +567,11 @@ _topic.prototype.topic = {
     		edit['tid'] = ipb.topic.topic_id;
     		edit['fid'] = ipb.topic.forum_id;
     		edit['post'] = $( 'post_id_' + edit['pid'] ).down('.post');
    -		
    -		// Find post content
    -		ipb.topic.postcache[ edit['pid'] ] = edit['post'].innerHTML;
    +		edit['edit_post'] = new Element( 'div', { id: 'post_id_edit_' + edit['pid'] } );
    +
    +		edit['post'].insert({
    +			after: edit['edit_post']
    +		});
     
     		url = ipb.vars['base_url'] + 'app=forums&module=ajax§ion=topics&do=editBoxShow&p=' + edit['pid'] +'&t=' + edit['tid'] +'&f=' + edit['fid'];
     		
    @@ -605,7 +606,9 @@ _topic.prototype.topic = {
     									
     									// Put it in
     									edit['button'].writeAttribute('_editing', '1');
    -									edit['post'].update( t.responseText );
    +
    +									edit['post'].hide();
    +									edit['edit_post'].show().update( t.responseText );
     									
     									edit['pid'] = 'e' + edit['pid'];									
     									
    @@ -893,7 +896,11 @@ _topic.prototype.topic = {
     		
     		var url = ipb.vars['base_url'] + 'app=forums&module=ajax§ion=topics&do=quote&t=' + ipb.topic.topic_id + '&p=' + pid + '&md5check=' + ipb.vars['secure_hash'] + '&isRte=' + ipb.textEditor.getEditor( ipb.topic.fastReplyId ).isRte();
     		Debug.write( url );
    -		
    +
    +		/* Make sure the editor is loaded for EDGE - #926867 */
    +		editor	= ipb.textEditor.getEditor( ipb.topic.fastReplyId );
    +		editor.insert( '', 'always' );
    +
     		new Ajax.Request(	url,
     							{
     								method: 'get',
    @@ -1004,7 +1011,8 @@ _topic.prototype.topic = {
     										
     											ipb.textEditor.getEditor( 'edit-' + postid ).remove();
     										
    -											$('post_id_' + postid).down('.post').update( t.responseJSON['successString'] );
    +											$('post_id_' + postid).down('.post').show().update( t.responseJSON['successString'] );
    +											$('post_id_edit_' + postid).remove();
     
     											prettyPrint();
     										}
    @@ -1030,14 +1038,12 @@ _topic.prototype.topic = {
     		var postid = elem.id.replace('edit_cancel_e', '');
     		if( !postid ){ return; }
     		
    -		if( ipb.topic.postcache[ postid ] )
    -		{
     			ipb.textEditor.getEditor( 'edit-' + postid ).remove();
     			
    -			$('post_id_' + postid).down('.post').update( ipb.topic.postcache[ postid ] );
    -			ipb.editors[ postid ] = null;
    -			$('edit_post_' + postid).writeAttribute('_editing', '0');			
    -		}
    +		$('post_id_edit_' + postid).remove();
    +		$('post_id_' + postid).down('.post').show();
    +		ipb.editors[ postid ] = null;
    +		$('edit_post_' + postid).writeAttribute('_editing', '0');
     		
     		return;
     	},
    @@ -1405,7 +1411,11 @@ _topic.prototype.topic = {
     		
     		var url = ipb.vars['base_url'] + 'app=forums&module=ajax§ion=topics&do=mqquote&t=' + ipb.topic.topic_id;
     		Debug.write( url );
    -		
    +
    +		/* Make sure the editor is loaded for EDGE - #926867 */
    +		editor	= ipb.textEditor.getEditor( ipb.topic.fastReplyId );
    +		editor.insert( '', 'always' );
    +
     		new Ajax.Request(	url,
     							{
     								method: 'post',